diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2017-07-24@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 The provided lenses should be compatible with any of the major lens libraries
 [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
-See [Network.AWS.SageMaker](http://hackage.haskell.org/package/amazonka-sagemaker/docs/Network-AWS-SageMaker.html)
+See [Amazonka.SageMaker](http://hackage.haskell.org/package/amazonka-sagemaker/docs/Amazonka-SageMaker.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-sagemaker.cabal b/amazonka-sagemaker.cabal
--- a/amazonka-sagemaker.cabal
+++ b/amazonka-sagemaker.cabal
@@ -1,119 +1,1076 @@
-name:                  amazonka-sagemaker
-version:               1.6.1
-synopsis:              Amazon SageMaker Service SDK.
-homepage:              https://github.com/brendanhay/amazonka
-bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               MPL-2.0
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
-description:
-    The types from this library are intended to be used with
-    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information, sending requests,
-    and receiving responses.
-    .
-    Lenses are used for constructing and manipulating types,
-    due to the depth of nesting of AWS types and transparency regarding
-    de/serialisation into more palatable Haskell values.
-    The provided lenses should be compatible with any of the major lens libraries
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.SageMaker" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
-
-source-repository head
-    type:              git
-    location:          git://github.com/brendanhay/amazonka.git
-    subdir:            amazonka-sagemaker
-
-library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
-
-    ghc-options:
-        -Wall
-        -fwarn-incomplete-uni-patterns
-        -fwarn-incomplete-record-updates
-        -funbox-strict-fields
-
-    exposed-modules:
-          Network.AWS.SageMaker
-        , Network.AWS.SageMaker.AddTags
-        , Network.AWS.SageMaker.CreateEndpoint
-        , Network.AWS.SageMaker.CreateEndpointConfig
-        , Network.AWS.SageMaker.CreateModel
-        , Network.AWS.SageMaker.CreateNotebookInstance
-        , Network.AWS.SageMaker.CreateNotebookInstanceLifecycleConfig
-        , Network.AWS.SageMaker.CreatePresignedNotebookInstanceURL
-        , Network.AWS.SageMaker.CreateTrainingJob
-        , Network.AWS.SageMaker.DeleteEndpoint
-        , Network.AWS.SageMaker.DeleteEndpointConfig
-        , Network.AWS.SageMaker.DeleteModel
-        , Network.AWS.SageMaker.DeleteNotebookInstance
-        , Network.AWS.SageMaker.DeleteNotebookInstanceLifecycleConfig
-        , Network.AWS.SageMaker.DeleteTags
-        , Network.AWS.SageMaker.DescribeEndpoint
-        , Network.AWS.SageMaker.DescribeEndpointConfig
-        , Network.AWS.SageMaker.DescribeModel
-        , Network.AWS.SageMaker.DescribeNotebookInstance
-        , Network.AWS.SageMaker.DescribeNotebookInstanceLifecycleConfig
-        , Network.AWS.SageMaker.DescribeTrainingJob
-        , Network.AWS.SageMaker.ListEndpointConfigs
-        , Network.AWS.SageMaker.ListEndpoints
-        , Network.AWS.SageMaker.ListModels
-        , Network.AWS.SageMaker.ListNotebookInstanceLifecycleConfigs
-        , Network.AWS.SageMaker.ListNotebookInstances
-        , Network.AWS.SageMaker.ListTags
-        , Network.AWS.SageMaker.ListTrainingJobs
-        , Network.AWS.SageMaker.StartNotebookInstance
-        , Network.AWS.SageMaker.StopNotebookInstance
-        , Network.AWS.SageMaker.StopTrainingJob
-        , Network.AWS.SageMaker.Types
-        , Network.AWS.SageMaker.UpdateEndpoint
-        , Network.AWS.SageMaker.UpdateEndpointWeightsAndCapacities
-        , Network.AWS.SageMaker.UpdateNotebookInstance
-        , Network.AWS.SageMaker.UpdateNotebookInstanceLifecycleConfig
-        , Network.AWS.SageMaker.Waiters
-
-    other-modules:
-          Network.AWS.SageMaker.Types.Product
-        , Network.AWS.SageMaker.Types.Sum
-
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
-
-test-suite amazonka-sagemaker-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
-
-    -- This section is encoded by the template and any modules added by
-    -- hand outside these namespaces will not correctly be added to the
-    -- distribution package.
-    other-modules:
-          Test.AWS.SageMaker
-        , Test.AWS.Gen.SageMaker
-        , Test.AWS.SageMaker.Internal
-
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-sagemaker
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+cabal-version:      2.2
+name:               amazonka-sagemaker
+version:            2.0
+synopsis:           Amazon SageMaker Service SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2017-07-24@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.SageMaker.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.SageMaker" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
+
+source-repository head
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-sagemaker
+
+library
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+
+  exposed-modules:
+    Amazonka.SageMaker
+    Amazonka.SageMaker.AddAssociation
+    Amazonka.SageMaker.AddTags
+    Amazonka.SageMaker.AssociateTrialComponent
+    Amazonka.SageMaker.BatchDescribeModelPackage
+    Amazonka.SageMaker.CreateAction
+    Amazonka.SageMaker.CreateAlgorithm
+    Amazonka.SageMaker.CreateApp
+    Amazonka.SageMaker.CreateAppImageConfig
+    Amazonka.SageMaker.CreateArtifact
+    Amazonka.SageMaker.CreateAutoMLJob
+    Amazonka.SageMaker.CreateCodeRepository
+    Amazonka.SageMaker.CreateCompilationJob
+    Amazonka.SageMaker.CreateContext
+    Amazonka.SageMaker.CreateDataQualityJobDefinition
+    Amazonka.SageMaker.CreateDeviceFleet
+    Amazonka.SageMaker.CreateDomain
+    Amazonka.SageMaker.CreateEdgeDeploymentPlan
+    Amazonka.SageMaker.CreateEdgeDeploymentStage
+    Amazonka.SageMaker.CreateEdgePackagingJob
+    Amazonka.SageMaker.CreateEndpoint
+    Amazonka.SageMaker.CreateEndpointConfig
+    Amazonka.SageMaker.CreateExperiment
+    Amazonka.SageMaker.CreateFeatureGroup
+    Amazonka.SageMaker.CreateFlowDefinition
+    Amazonka.SageMaker.CreateHub
+    Amazonka.SageMaker.CreateHumanTaskUi
+    Amazonka.SageMaker.CreateHyperParameterTuningJob
+    Amazonka.SageMaker.CreateImage
+    Amazonka.SageMaker.CreateImageVersion
+    Amazonka.SageMaker.CreateInferenceExperiment
+    Amazonka.SageMaker.CreateInferenceRecommendationsJob
+    Amazonka.SageMaker.CreateLabelingJob
+    Amazonka.SageMaker.CreateModel
+    Amazonka.SageMaker.CreateModelBiasJobDefinition
+    Amazonka.SageMaker.CreateModelCard
+    Amazonka.SageMaker.CreateModelCardExportJob
+    Amazonka.SageMaker.CreateModelExplainabilityJobDefinition
+    Amazonka.SageMaker.CreateModelPackage
+    Amazonka.SageMaker.CreateModelPackageGroup
+    Amazonka.SageMaker.CreateModelQualityJobDefinition
+    Amazonka.SageMaker.CreateMonitoringSchedule
+    Amazonka.SageMaker.CreateNotebookInstance
+    Amazonka.SageMaker.CreateNotebookInstanceLifecycleConfig
+    Amazonka.SageMaker.CreatePipeline
+    Amazonka.SageMaker.CreatePresignedDomainUrl
+    Amazonka.SageMaker.CreatePresignedNotebookInstanceUrl
+    Amazonka.SageMaker.CreateProcessingJob
+    Amazonka.SageMaker.CreateProject
+    Amazonka.SageMaker.CreateSpace
+    Amazonka.SageMaker.CreateStudioLifecycleConfig
+    Amazonka.SageMaker.CreateTrainingJob
+    Amazonka.SageMaker.CreateTransformJob
+    Amazonka.SageMaker.CreateTrial
+    Amazonka.SageMaker.CreateTrialComponent
+    Amazonka.SageMaker.CreateUserProfile
+    Amazonka.SageMaker.CreateWorkforce
+    Amazonka.SageMaker.CreateWorkteam
+    Amazonka.SageMaker.DeleteAction
+    Amazonka.SageMaker.DeleteAlgorithm
+    Amazonka.SageMaker.DeleteApp
+    Amazonka.SageMaker.DeleteAppImageConfig
+    Amazonka.SageMaker.DeleteArtifact
+    Amazonka.SageMaker.DeleteAssociation
+    Amazonka.SageMaker.DeleteCodeRepository
+    Amazonka.SageMaker.DeleteContext
+    Amazonka.SageMaker.DeleteDataQualityJobDefinition
+    Amazonka.SageMaker.DeleteDeviceFleet
+    Amazonka.SageMaker.DeleteDomain
+    Amazonka.SageMaker.DeleteEdgeDeploymentPlan
+    Amazonka.SageMaker.DeleteEdgeDeploymentStage
+    Amazonka.SageMaker.DeleteEndpoint
+    Amazonka.SageMaker.DeleteEndpointConfig
+    Amazonka.SageMaker.DeleteExperiment
+    Amazonka.SageMaker.DeleteFeatureGroup
+    Amazonka.SageMaker.DeleteFlowDefinition
+    Amazonka.SageMaker.DeleteHub
+    Amazonka.SageMaker.DeleteHubContent
+    Amazonka.SageMaker.DeleteHumanTaskUi
+    Amazonka.SageMaker.DeleteImage
+    Amazonka.SageMaker.DeleteImageVersion
+    Amazonka.SageMaker.DeleteInferenceExperiment
+    Amazonka.SageMaker.DeleteModel
+    Amazonka.SageMaker.DeleteModelBiasJobDefinition
+    Amazonka.SageMaker.DeleteModelCard
+    Amazonka.SageMaker.DeleteModelExplainabilityJobDefinition
+    Amazonka.SageMaker.DeleteModelPackage
+    Amazonka.SageMaker.DeleteModelPackageGroup
+    Amazonka.SageMaker.DeleteModelPackageGroupPolicy
+    Amazonka.SageMaker.DeleteModelQualityJobDefinition
+    Amazonka.SageMaker.DeleteMonitoringSchedule
+    Amazonka.SageMaker.DeleteNotebookInstance
+    Amazonka.SageMaker.DeleteNotebookInstanceLifecycleConfig
+    Amazonka.SageMaker.DeletePipeline
+    Amazonka.SageMaker.DeleteProject
+    Amazonka.SageMaker.DeleteSpace
+    Amazonka.SageMaker.DeleteStudioLifecycleConfig
+    Amazonka.SageMaker.DeleteTags
+    Amazonka.SageMaker.DeleteTrial
+    Amazonka.SageMaker.DeleteTrialComponent
+    Amazonka.SageMaker.DeleteUserProfile
+    Amazonka.SageMaker.DeleteWorkforce
+    Amazonka.SageMaker.DeleteWorkteam
+    Amazonka.SageMaker.DeregisterDevices
+    Amazonka.SageMaker.DescribeAction
+    Amazonka.SageMaker.DescribeAlgorithm
+    Amazonka.SageMaker.DescribeApp
+    Amazonka.SageMaker.DescribeAppImageConfig
+    Amazonka.SageMaker.DescribeArtifact
+    Amazonka.SageMaker.DescribeAutoMLJob
+    Amazonka.SageMaker.DescribeCodeRepository
+    Amazonka.SageMaker.DescribeCompilationJob
+    Amazonka.SageMaker.DescribeContext
+    Amazonka.SageMaker.DescribeDataQualityJobDefinition
+    Amazonka.SageMaker.DescribeDevice
+    Amazonka.SageMaker.DescribeDeviceFleet
+    Amazonka.SageMaker.DescribeDomain
+    Amazonka.SageMaker.DescribeEdgeDeploymentPlan
+    Amazonka.SageMaker.DescribeEdgePackagingJob
+    Amazonka.SageMaker.DescribeEndpoint
+    Amazonka.SageMaker.DescribeEndpointConfig
+    Amazonka.SageMaker.DescribeExperiment
+    Amazonka.SageMaker.DescribeFeatureGroup
+    Amazonka.SageMaker.DescribeFeatureMetadata
+    Amazonka.SageMaker.DescribeFlowDefinition
+    Amazonka.SageMaker.DescribeHub
+    Amazonka.SageMaker.DescribeHubContent
+    Amazonka.SageMaker.DescribeHumanTaskUi
+    Amazonka.SageMaker.DescribeHyperParameterTuningJob
+    Amazonka.SageMaker.DescribeImage
+    Amazonka.SageMaker.DescribeImageVersion
+    Amazonka.SageMaker.DescribeInferenceExperiment
+    Amazonka.SageMaker.DescribeInferenceRecommendationsJob
+    Amazonka.SageMaker.DescribeLabelingJob
+    Amazonka.SageMaker.DescribeLineageGroup
+    Amazonka.SageMaker.DescribeModel
+    Amazonka.SageMaker.DescribeModelBiasJobDefinition
+    Amazonka.SageMaker.DescribeModelCard
+    Amazonka.SageMaker.DescribeModelCardExportJob
+    Amazonka.SageMaker.DescribeModelExplainabilityJobDefinition
+    Amazonka.SageMaker.DescribeModelPackage
+    Amazonka.SageMaker.DescribeModelPackageGroup
+    Amazonka.SageMaker.DescribeModelQualityJobDefinition
+    Amazonka.SageMaker.DescribeMonitoringSchedule
+    Amazonka.SageMaker.DescribeNotebookInstance
+    Amazonka.SageMaker.DescribeNotebookInstanceLifecycleConfig
+    Amazonka.SageMaker.DescribePipeline
+    Amazonka.SageMaker.DescribePipelineDefinitionForExecution
+    Amazonka.SageMaker.DescribePipelineExecution
+    Amazonka.SageMaker.DescribeProcessingJob
+    Amazonka.SageMaker.DescribeProject
+    Amazonka.SageMaker.DescribeSpace
+    Amazonka.SageMaker.DescribeStudioLifecycleConfig
+    Amazonka.SageMaker.DescribeSubscribedWorkteam
+    Amazonka.SageMaker.DescribeTrainingJob
+    Amazonka.SageMaker.DescribeTransformJob
+    Amazonka.SageMaker.DescribeTrial
+    Amazonka.SageMaker.DescribeTrialComponent
+    Amazonka.SageMaker.DescribeUserProfile
+    Amazonka.SageMaker.DescribeWorkforce
+    Amazonka.SageMaker.DescribeWorkteam
+    Amazonka.SageMaker.DisableSagemakerServicecatalogPortfolio
+    Amazonka.SageMaker.DisassociateTrialComponent
+    Amazonka.SageMaker.EnableSagemakerServicecatalogPortfolio
+    Amazonka.SageMaker.GetDeviceFleetReport
+    Amazonka.SageMaker.GetLineageGroupPolicy
+    Amazonka.SageMaker.GetModelPackageGroupPolicy
+    Amazonka.SageMaker.GetSagemakerServicecatalogPortfolioStatus
+    Amazonka.SageMaker.GetSearchSuggestions
+    Amazonka.SageMaker.ImportHubContent
+    Amazonka.SageMaker.Lens
+    Amazonka.SageMaker.ListActions
+    Amazonka.SageMaker.ListAlgorithms
+    Amazonka.SageMaker.ListAliases
+    Amazonka.SageMaker.ListAppImageConfigs
+    Amazonka.SageMaker.ListApps
+    Amazonka.SageMaker.ListArtifacts
+    Amazonka.SageMaker.ListAssociations
+    Amazonka.SageMaker.ListAutoMLJobs
+    Amazonka.SageMaker.ListCandidatesForAutoMLJob
+    Amazonka.SageMaker.ListCodeRepositories
+    Amazonka.SageMaker.ListCompilationJobs
+    Amazonka.SageMaker.ListContexts
+    Amazonka.SageMaker.ListDataQualityJobDefinitions
+    Amazonka.SageMaker.ListDeviceFleets
+    Amazonka.SageMaker.ListDevices
+    Amazonka.SageMaker.ListDomains
+    Amazonka.SageMaker.ListEdgeDeploymentPlans
+    Amazonka.SageMaker.ListEdgePackagingJobs
+    Amazonka.SageMaker.ListEndpointConfigs
+    Amazonka.SageMaker.ListEndpoints
+    Amazonka.SageMaker.ListExperiments
+    Amazonka.SageMaker.ListFeatureGroups
+    Amazonka.SageMaker.ListFlowDefinitions
+    Amazonka.SageMaker.ListHubContents
+    Amazonka.SageMaker.ListHubContentVersions
+    Amazonka.SageMaker.ListHubs
+    Amazonka.SageMaker.ListHumanTaskUis
+    Amazonka.SageMaker.ListHyperParameterTuningJobs
+    Amazonka.SageMaker.ListImages
+    Amazonka.SageMaker.ListImageVersions
+    Amazonka.SageMaker.ListInferenceExperiments
+    Amazonka.SageMaker.ListInferenceRecommendationsJobs
+    Amazonka.SageMaker.ListInferenceRecommendationsJobSteps
+    Amazonka.SageMaker.ListLabelingJobs
+    Amazonka.SageMaker.ListLabelingJobsForWorkteam
+    Amazonka.SageMaker.ListLineageGroups
+    Amazonka.SageMaker.ListModelBiasJobDefinitions
+    Amazonka.SageMaker.ListModelCardExportJobs
+    Amazonka.SageMaker.ListModelCards
+    Amazonka.SageMaker.ListModelCardVersions
+    Amazonka.SageMaker.ListModelExplainabilityJobDefinitions
+    Amazonka.SageMaker.ListModelMetadata
+    Amazonka.SageMaker.ListModelPackageGroups
+    Amazonka.SageMaker.ListModelPackages
+    Amazonka.SageMaker.ListModelQualityJobDefinitions
+    Amazonka.SageMaker.ListModels
+    Amazonka.SageMaker.ListMonitoringAlertHistory
+    Amazonka.SageMaker.ListMonitoringAlerts
+    Amazonka.SageMaker.ListMonitoringExecutions
+    Amazonka.SageMaker.ListMonitoringSchedules
+    Amazonka.SageMaker.ListNotebookInstanceLifecycleConfigs
+    Amazonka.SageMaker.ListNotebookInstances
+    Amazonka.SageMaker.ListPipelineExecutions
+    Amazonka.SageMaker.ListPipelineExecutionSteps
+    Amazonka.SageMaker.ListPipelineParametersForExecution
+    Amazonka.SageMaker.ListPipelines
+    Amazonka.SageMaker.ListProcessingJobs
+    Amazonka.SageMaker.ListProjects
+    Amazonka.SageMaker.ListSpaces
+    Amazonka.SageMaker.ListStageDevices
+    Amazonka.SageMaker.ListStudioLifecycleConfigs
+    Amazonka.SageMaker.ListSubscribedWorkteams
+    Amazonka.SageMaker.ListTags
+    Amazonka.SageMaker.ListTrainingJobs
+    Amazonka.SageMaker.ListTrainingJobsForHyperParameterTuningJob
+    Amazonka.SageMaker.ListTransformJobs
+    Amazonka.SageMaker.ListTrialComponents
+    Amazonka.SageMaker.ListTrials
+    Amazonka.SageMaker.ListUserProfiles
+    Amazonka.SageMaker.ListWorkforces
+    Amazonka.SageMaker.ListWorkteams
+    Amazonka.SageMaker.PutModelPackageGroupPolicy
+    Amazonka.SageMaker.QueryLineage
+    Amazonka.SageMaker.RegisterDevices
+    Amazonka.SageMaker.RenderUiTemplate
+    Amazonka.SageMaker.RetryPipelineExecution
+    Amazonka.SageMaker.Search
+    Amazonka.SageMaker.SendPipelineExecutionStepFailure
+    Amazonka.SageMaker.SendPipelineExecutionStepSuccess
+    Amazonka.SageMaker.StartEdgeDeploymentStage
+    Amazonka.SageMaker.StartInferenceExperiment
+    Amazonka.SageMaker.StartMonitoringSchedule
+    Amazonka.SageMaker.StartNotebookInstance
+    Amazonka.SageMaker.StartPipelineExecution
+    Amazonka.SageMaker.StopAutoMLJob
+    Amazonka.SageMaker.StopCompilationJob
+    Amazonka.SageMaker.StopEdgeDeploymentStage
+    Amazonka.SageMaker.StopEdgePackagingJob
+    Amazonka.SageMaker.StopHyperParameterTuningJob
+    Amazonka.SageMaker.StopInferenceExperiment
+    Amazonka.SageMaker.StopInferenceRecommendationsJob
+    Amazonka.SageMaker.StopLabelingJob
+    Amazonka.SageMaker.StopMonitoringSchedule
+    Amazonka.SageMaker.StopNotebookInstance
+    Amazonka.SageMaker.StopPipelineExecution
+    Amazonka.SageMaker.StopProcessingJob
+    Amazonka.SageMaker.StopTrainingJob
+    Amazonka.SageMaker.StopTransformJob
+    Amazonka.SageMaker.Types
+    Amazonka.SageMaker.Types.ActionSource
+    Amazonka.SageMaker.Types.ActionStatus
+    Amazonka.SageMaker.Types.ActionSummary
+    Amazonka.SageMaker.Types.AdditionalInferenceSpecificationDefinition
+    Amazonka.SageMaker.Types.AgentVersion
+    Amazonka.SageMaker.Types.Alarm
+    Amazonka.SageMaker.Types.AlgorithmSortBy
+    Amazonka.SageMaker.Types.AlgorithmSpecification
+    Amazonka.SageMaker.Types.AlgorithmStatus
+    Amazonka.SageMaker.Types.AlgorithmStatusDetails
+    Amazonka.SageMaker.Types.AlgorithmStatusItem
+    Amazonka.SageMaker.Types.AlgorithmSummary
+    Amazonka.SageMaker.Types.AlgorithmValidationProfile
+    Amazonka.SageMaker.Types.AlgorithmValidationSpecification
+    Amazonka.SageMaker.Types.AnnotationConsolidationConfig
+    Amazonka.SageMaker.Types.AppDetails
+    Amazonka.SageMaker.Types.AppImageConfigDetails
+    Amazonka.SageMaker.Types.AppImageConfigSortKey
+    Amazonka.SageMaker.Types.AppInstanceType
+    Amazonka.SageMaker.Types.AppNetworkAccessType
+    Amazonka.SageMaker.Types.AppSecurityGroupManagement
+    Amazonka.SageMaker.Types.AppSortKey
+    Amazonka.SageMaker.Types.AppSpecification
+    Amazonka.SageMaker.Types.AppStatus
+    Amazonka.SageMaker.Types.AppType
+    Amazonka.SageMaker.Types.ArtifactSource
+    Amazonka.SageMaker.Types.ArtifactSourceIdType
+    Amazonka.SageMaker.Types.ArtifactSourceType
+    Amazonka.SageMaker.Types.ArtifactSummary
+    Amazonka.SageMaker.Types.AssemblyType
+    Amazonka.SageMaker.Types.AssociationEdgeType
+    Amazonka.SageMaker.Types.AssociationSummary
+    Amazonka.SageMaker.Types.AsyncInferenceClientConfig
+    Amazonka.SageMaker.Types.AsyncInferenceConfig
+    Amazonka.SageMaker.Types.AsyncInferenceNotificationConfig
+    Amazonka.SageMaker.Types.AsyncInferenceOutputConfig
+    Amazonka.SageMaker.Types.AthenaDatasetDefinition
+    Amazonka.SageMaker.Types.AthenaResultCompressionType
+    Amazonka.SageMaker.Types.AthenaResultFormat
+    Amazonka.SageMaker.Types.AuthMode
+    Amazonka.SageMaker.Types.AutoMLCandidate
+    Amazonka.SageMaker.Types.AutoMLCandidateGenerationConfig
+    Amazonka.SageMaker.Types.AutoMLCandidateStep
+    Amazonka.SageMaker.Types.AutoMLChannel
+    Amazonka.SageMaker.Types.AutoMLChannelType
+    Amazonka.SageMaker.Types.AutoMLContainerDefinition
+    Amazonka.SageMaker.Types.AutoMLDataSource
+    Amazonka.SageMaker.Types.AutoMLDataSplitConfig
+    Amazonka.SageMaker.Types.AutoMLJobArtifacts
+    Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria
+    Amazonka.SageMaker.Types.AutoMLJobConfig
+    Amazonka.SageMaker.Types.AutoMLJobObjective
+    Amazonka.SageMaker.Types.AutoMLJobObjectiveType
+    Amazonka.SageMaker.Types.AutoMLJobSecondaryStatus
+    Amazonka.SageMaker.Types.AutoMLJobStatus
+    Amazonka.SageMaker.Types.AutoMLJobStepMetadata
+    Amazonka.SageMaker.Types.AutoMLJobSummary
+    Amazonka.SageMaker.Types.AutoMLMetricEnum
+    Amazonka.SageMaker.Types.AutoMLMetricExtendedEnum
+    Amazonka.SageMaker.Types.AutoMLMode
+    Amazonka.SageMaker.Types.AutoMLOutputDataConfig
+    Amazonka.SageMaker.Types.AutoMLPartialFailureReason
+    Amazonka.SageMaker.Types.AutoMLS3DataSource
+    Amazonka.SageMaker.Types.AutoMLS3DataType
+    Amazonka.SageMaker.Types.AutoMLSecurityConfig
+    Amazonka.SageMaker.Types.AutoMLSortBy
+    Amazonka.SageMaker.Types.AutoMLSortOrder
+    Amazonka.SageMaker.Types.AutoRollbackConfig
+    Amazonka.SageMaker.Types.AwsManagedHumanLoopRequestSource
+    Amazonka.SageMaker.Types.BatchDataCaptureConfig
+    Amazonka.SageMaker.Types.BatchDescribeModelPackageError
+    Amazonka.SageMaker.Types.BatchDescribeModelPackageSummary
+    Amazonka.SageMaker.Types.BatchStrategy
+    Amazonka.SageMaker.Types.BatchTransformInput
+    Amazonka.SageMaker.Types.Bias
+    Amazonka.SageMaker.Types.BlueGreenUpdatePolicy
+    Amazonka.SageMaker.Types.BooleanOperator
+    Amazonka.SageMaker.Types.CacheHitResult
+    Amazonka.SageMaker.Types.CallbackStepMetadata
+    Amazonka.SageMaker.Types.CandidateArtifactLocations
+    Amazonka.SageMaker.Types.CandidateProperties
+    Amazonka.SageMaker.Types.CandidateSortBy
+    Amazonka.SageMaker.Types.CandidateStatus
+    Amazonka.SageMaker.Types.CandidateStepType
+    Amazonka.SageMaker.Types.CanvasAppSettings
+    Amazonka.SageMaker.Types.CapacitySize
+    Amazonka.SageMaker.Types.CapacitySizeType
+    Amazonka.SageMaker.Types.CaptureContentTypeHeader
+    Amazonka.SageMaker.Types.CaptureMode
+    Amazonka.SageMaker.Types.CaptureOption
+    Amazonka.SageMaker.Types.CaptureStatus
+    Amazonka.SageMaker.Types.CategoricalParameter
+    Amazonka.SageMaker.Types.CategoricalParameterRange
+    Amazonka.SageMaker.Types.CategoricalParameterRangeSpecification
+    Amazonka.SageMaker.Types.Channel
+    Amazonka.SageMaker.Types.ChannelSpecification
+    Amazonka.SageMaker.Types.CheckpointConfig
+    Amazonka.SageMaker.Types.ClarifyCheckStepMetadata
+    Amazonka.SageMaker.Types.ClarifyExplainerConfig
+    Amazonka.SageMaker.Types.ClarifyFeatureType
+    Amazonka.SageMaker.Types.ClarifyInferenceConfig
+    Amazonka.SageMaker.Types.ClarifyShapBaselineConfig
+    Amazonka.SageMaker.Types.ClarifyShapConfig
+    Amazonka.SageMaker.Types.ClarifyTextConfig
+    Amazonka.SageMaker.Types.ClarifyTextGranularity
+    Amazonka.SageMaker.Types.ClarifyTextLanguage
+    Amazonka.SageMaker.Types.CodeRepository
+    Amazonka.SageMaker.Types.CodeRepositorySortBy
+    Amazonka.SageMaker.Types.CodeRepositorySortOrder
+    Amazonka.SageMaker.Types.CodeRepositorySummary
+    Amazonka.SageMaker.Types.CognitoConfig
+    Amazonka.SageMaker.Types.CognitoMemberDefinition
+    Amazonka.SageMaker.Types.CollectionConfiguration
+    Amazonka.SageMaker.Types.CompilationJobStatus
+    Amazonka.SageMaker.Types.CompilationJobSummary
+    Amazonka.SageMaker.Types.CompressionType
+    Amazonka.SageMaker.Types.ConditionOutcome
+    Amazonka.SageMaker.Types.ConditionStepMetadata
+    Amazonka.SageMaker.Types.ContainerDefinition
+    Amazonka.SageMaker.Types.ContainerMode
+    Amazonka.SageMaker.Types.ContentClassifier
+    Amazonka.SageMaker.Types.ContextSource
+    Amazonka.SageMaker.Types.ContextSummary
+    Amazonka.SageMaker.Types.ContinuousParameterRange
+    Amazonka.SageMaker.Types.ContinuousParameterRangeSpecification
+    Amazonka.SageMaker.Types.CustomImage
+    Amazonka.SageMaker.Types.DataCaptureConfig
+    Amazonka.SageMaker.Types.DataCaptureConfigSummary
+    Amazonka.SageMaker.Types.DataCatalogConfig
+    Amazonka.SageMaker.Types.DataDistributionType
+    Amazonka.SageMaker.Types.DataProcessing
+    Amazonka.SageMaker.Types.DataQualityAppSpecification
+    Amazonka.SageMaker.Types.DataQualityBaselineConfig
+    Amazonka.SageMaker.Types.DataQualityJobInput
+    Amazonka.SageMaker.Types.DatasetDefinition
+    Amazonka.SageMaker.Types.DataSource
+    Amazonka.SageMaker.Types.DebugHookConfig
+    Amazonka.SageMaker.Types.DebugRuleConfiguration
+    Amazonka.SageMaker.Types.DebugRuleEvaluationStatus
+    Amazonka.SageMaker.Types.DefaultSpaceSettings
+    Amazonka.SageMaker.Types.DeployedImage
+    Amazonka.SageMaker.Types.DeploymentConfig
+    Amazonka.SageMaker.Types.DeploymentStage
+    Amazonka.SageMaker.Types.DeploymentStageStatusSummary
+    Amazonka.SageMaker.Types.DesiredWeightAndCapacity
+    Amazonka.SageMaker.Types.DetailedAlgorithmStatus
+    Amazonka.SageMaker.Types.DetailedModelPackageStatus
+    Amazonka.SageMaker.Types.Device
+    Amazonka.SageMaker.Types.DeviceDeploymentStatus
+    Amazonka.SageMaker.Types.DeviceDeploymentSummary
+    Amazonka.SageMaker.Types.DeviceFleetSummary
+    Amazonka.SageMaker.Types.DeviceSelectionConfig
+    Amazonka.SageMaker.Types.DeviceStats
+    Amazonka.SageMaker.Types.DeviceSubsetType
+    Amazonka.SageMaker.Types.DeviceSummary
+    Amazonka.SageMaker.Types.DirectInternetAccess
+    Amazonka.SageMaker.Types.Direction
+    Amazonka.SageMaker.Types.DomainDetails
+    Amazonka.SageMaker.Types.DomainSettings
+    Amazonka.SageMaker.Types.DomainSettingsForUpdate
+    Amazonka.SageMaker.Types.DomainStatus
+    Amazonka.SageMaker.Types.DriftCheckBaselines
+    Amazonka.SageMaker.Types.DriftCheckBias
+    Amazonka.SageMaker.Types.DriftCheckExplainability
+    Amazonka.SageMaker.Types.DriftCheckModelDataQuality
+    Amazonka.SageMaker.Types.DriftCheckModelQuality
+    Amazonka.SageMaker.Types.Edge
+    Amazonka.SageMaker.Types.EdgeDeploymentConfig
+    Amazonka.SageMaker.Types.EdgeDeploymentModelConfig
+    Amazonka.SageMaker.Types.EdgeDeploymentPlanSummary
+    Amazonka.SageMaker.Types.EdgeDeploymentStatus
+    Amazonka.SageMaker.Types.EdgeModel
+    Amazonka.SageMaker.Types.EdgeModelStat
+    Amazonka.SageMaker.Types.EdgeModelSummary
+    Amazonka.SageMaker.Types.EdgeOutputConfig
+    Amazonka.SageMaker.Types.EdgePackagingJobStatus
+    Amazonka.SageMaker.Types.EdgePackagingJobSummary
+    Amazonka.SageMaker.Types.EdgePresetDeploymentOutput
+    Amazonka.SageMaker.Types.EdgePresetDeploymentStatus
+    Amazonka.SageMaker.Types.EdgePresetDeploymentType
+    Amazonka.SageMaker.Types.EMRStepMetadata
+    Amazonka.SageMaker.Types.Endpoint
+    Amazonka.SageMaker.Types.EndpointConfigSortKey
+    Amazonka.SageMaker.Types.EndpointConfigSummary
+    Amazonka.SageMaker.Types.EndpointInfo
+    Amazonka.SageMaker.Types.EndpointInput
+    Amazonka.SageMaker.Types.EndpointInputConfiguration
+    Amazonka.SageMaker.Types.EndpointMetadata
+    Amazonka.SageMaker.Types.EndpointOutputConfiguration
+    Amazonka.SageMaker.Types.EndpointPerformance
+    Amazonka.SageMaker.Types.EndpointSortKey
+    Amazonka.SageMaker.Types.EndpointStatus
+    Amazonka.SageMaker.Types.EndpointSummary
+    Amazonka.SageMaker.Types.EnvironmentParameter
+    Amazonka.SageMaker.Types.EnvironmentParameterRanges
+    Amazonka.SageMaker.Types.ExecutionRoleIdentityConfig
+    Amazonka.SageMaker.Types.ExecutionStatus
+    Amazonka.SageMaker.Types.Experiment
+    Amazonka.SageMaker.Types.ExperimentConfig
+    Amazonka.SageMaker.Types.ExperimentSource
+    Amazonka.SageMaker.Types.ExperimentSummary
+    Amazonka.SageMaker.Types.Explainability
+    Amazonka.SageMaker.Types.ExplainerConfig
+    Amazonka.SageMaker.Types.FailStepMetadata
+    Amazonka.SageMaker.Types.FailureHandlingPolicy
+    Amazonka.SageMaker.Types.FeatureDefinition
+    Amazonka.SageMaker.Types.FeatureGroup
+    Amazonka.SageMaker.Types.FeatureGroupSortBy
+    Amazonka.SageMaker.Types.FeatureGroupSortOrder
+    Amazonka.SageMaker.Types.FeatureGroupStatus
+    Amazonka.SageMaker.Types.FeatureGroupSummary
+    Amazonka.SageMaker.Types.FeatureMetadata
+    Amazonka.SageMaker.Types.FeatureParameter
+    Amazonka.SageMaker.Types.FeatureStatus
+    Amazonka.SageMaker.Types.FeatureType
+    Amazonka.SageMaker.Types.FileSource
+    Amazonka.SageMaker.Types.FileSystemAccessMode
+    Amazonka.SageMaker.Types.FileSystemConfig
+    Amazonka.SageMaker.Types.FileSystemDataSource
+    Amazonka.SageMaker.Types.FileSystemType
+    Amazonka.SageMaker.Types.Filter
+    Amazonka.SageMaker.Types.FinalAutoMLJobObjectiveMetric
+    Amazonka.SageMaker.Types.FinalHyperParameterTuningJobObjectiveMetric
+    Amazonka.SageMaker.Types.FlowDefinitionOutputConfig
+    Amazonka.SageMaker.Types.FlowDefinitionStatus
+    Amazonka.SageMaker.Types.FlowDefinitionSummary
+    Amazonka.SageMaker.Types.Framework
+    Amazonka.SageMaker.Types.GitConfig
+    Amazonka.SageMaker.Types.GitConfigForUpdate
+    Amazonka.SageMaker.Types.HubContentDependency
+    Amazonka.SageMaker.Types.HubContentInfo
+    Amazonka.SageMaker.Types.HubContentSortBy
+    Amazonka.SageMaker.Types.HubContentStatus
+    Amazonka.SageMaker.Types.HubContentType
+    Amazonka.SageMaker.Types.HubInfo
+    Amazonka.SageMaker.Types.HubS3StorageConfig
+    Amazonka.SageMaker.Types.HubSortBy
+    Amazonka.SageMaker.Types.HubStatus
+    Amazonka.SageMaker.Types.HumanLoopActivationConditionsConfig
+    Amazonka.SageMaker.Types.HumanLoopActivationConfig
+    Amazonka.SageMaker.Types.HumanLoopConfig
+    Amazonka.SageMaker.Types.HumanLoopRequestSource
+    Amazonka.SageMaker.Types.HumanTaskConfig
+    Amazonka.SageMaker.Types.HumanTaskUiStatus
+    Amazonka.SageMaker.Types.HumanTaskUiSummary
+    Amazonka.SageMaker.Types.HyperbandStrategyConfig
+    Amazonka.SageMaker.Types.HyperParameterAlgorithmSpecification
+    Amazonka.SageMaker.Types.HyperParameterScalingType
+    Amazonka.SageMaker.Types.HyperParameterSpecification
+    Amazonka.SageMaker.Types.HyperParameterTrainingJobDefinition
+    Amazonka.SageMaker.Types.HyperParameterTrainingJobSummary
+    Amazonka.SageMaker.Types.HyperParameterTuningAllocationStrategy
+    Amazonka.SageMaker.Types.HyperParameterTuningInstanceConfig
+    Amazonka.SageMaker.Types.HyperParameterTuningJobConfig
+    Amazonka.SageMaker.Types.HyperParameterTuningJobObjective
+    Amazonka.SageMaker.Types.HyperParameterTuningJobObjectiveType
+    Amazonka.SageMaker.Types.HyperParameterTuningJobSearchEntity
+    Amazonka.SageMaker.Types.HyperParameterTuningJobSortByOptions
+    Amazonka.SageMaker.Types.HyperParameterTuningJobStatus
+    Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyConfig
+    Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
+    Amazonka.SageMaker.Types.HyperParameterTuningJobSummary
+    Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig
+    Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartType
+    Amazonka.SageMaker.Types.HyperParameterTuningResourceConfig
+    Amazonka.SageMaker.Types.Image
+    Amazonka.SageMaker.Types.ImageConfig
+    Amazonka.SageMaker.Types.ImageSortBy
+    Amazonka.SageMaker.Types.ImageSortOrder
+    Amazonka.SageMaker.Types.ImageStatus
+    Amazonka.SageMaker.Types.ImageVersion
+    Amazonka.SageMaker.Types.ImageVersionSortBy
+    Amazonka.SageMaker.Types.ImageVersionSortOrder
+    Amazonka.SageMaker.Types.ImageVersionStatus
+    Amazonka.SageMaker.Types.InferenceExecutionConfig
+    Amazonka.SageMaker.Types.InferenceExecutionMode
+    Amazonka.SageMaker.Types.InferenceExperimentDataStorageConfig
+    Amazonka.SageMaker.Types.InferenceExperimentSchedule
+    Amazonka.SageMaker.Types.InferenceExperimentStatus
+    Amazonka.SageMaker.Types.InferenceExperimentStopDesiredState
+    Amazonka.SageMaker.Types.InferenceExperimentSummary
+    Amazonka.SageMaker.Types.InferenceExperimentType
+    Amazonka.SageMaker.Types.InferenceMetrics
+    Amazonka.SageMaker.Types.InferenceRecommendation
+    Amazonka.SageMaker.Types.InferenceRecommendationsJob
+    Amazonka.SageMaker.Types.InferenceRecommendationsJobStep
+    Amazonka.SageMaker.Types.InferenceSpecification
+    Amazonka.SageMaker.Types.InputConfig
+    Amazonka.SageMaker.Types.InputMode
+    Amazonka.SageMaker.Types.InstanceGroup
+    Amazonka.SageMaker.Types.InstanceMetadataServiceConfiguration
+    Amazonka.SageMaker.Types.InstanceType
+    Amazonka.SageMaker.Types.IntegerParameterRange
+    Amazonka.SageMaker.Types.IntegerParameterRangeSpecification
+    Amazonka.SageMaker.Types.JobType
+    Amazonka.SageMaker.Types.JoinSource
+    Amazonka.SageMaker.Types.JupyterServerAppSettings
+    Amazonka.SageMaker.Types.KernelGatewayAppSettings
+    Amazonka.SageMaker.Types.KernelGatewayImageConfig
+    Amazonka.SageMaker.Types.KernelSpec
+    Amazonka.SageMaker.Types.LabelCounters
+    Amazonka.SageMaker.Types.LabelCountersForWorkteam
+    Amazonka.SageMaker.Types.LabelingJobAlgorithmsConfig
+    Amazonka.SageMaker.Types.LabelingJobDataAttributes
+    Amazonka.SageMaker.Types.LabelingJobDataSource
+    Amazonka.SageMaker.Types.LabelingJobForWorkteamSummary
+    Amazonka.SageMaker.Types.LabelingJobInputConfig
+    Amazonka.SageMaker.Types.LabelingJobOutput
+    Amazonka.SageMaker.Types.LabelingJobOutputConfig
+    Amazonka.SageMaker.Types.LabelingJobResourceConfig
+    Amazonka.SageMaker.Types.LabelingJobS3DataSource
+    Amazonka.SageMaker.Types.LabelingJobSnsDataSource
+    Amazonka.SageMaker.Types.LabelingJobStatus
+    Amazonka.SageMaker.Types.LabelingJobStoppingConditions
+    Amazonka.SageMaker.Types.LabelingJobSummary
+    Amazonka.SageMaker.Types.LambdaStepMetadata
+    Amazonka.SageMaker.Types.LastUpdateStatus
+    Amazonka.SageMaker.Types.LastUpdateStatusValue
+    Amazonka.SageMaker.Types.LineageGroupSummary
+    Amazonka.SageMaker.Types.LineageType
+    Amazonka.SageMaker.Types.ListCompilationJobsSortBy
+    Amazonka.SageMaker.Types.ListDeviceFleetsSortBy
+    Amazonka.SageMaker.Types.ListEdgeDeploymentPlansSortBy
+    Amazonka.SageMaker.Types.ListEdgePackagingJobsSortBy
+    Amazonka.SageMaker.Types.ListInferenceRecommendationsJobsSortBy
+    Amazonka.SageMaker.Types.ListLabelingJobsForWorkteamSortByOptions
+    Amazonka.SageMaker.Types.ListWorkforcesSortByOptions
+    Amazonka.SageMaker.Types.ListWorkteamsSortByOptions
+    Amazonka.SageMaker.Types.MemberDefinition
+    Amazonka.SageMaker.Types.MetadataProperties
+    Amazonka.SageMaker.Types.MetricData
+    Amazonka.SageMaker.Types.MetricDatum
+    Amazonka.SageMaker.Types.MetricDefinition
+    Amazonka.SageMaker.Types.MetricSetSource
+    Amazonka.SageMaker.Types.MetricsSource
+    Amazonka.SageMaker.Types.Model
+    Amazonka.SageMaker.Types.ModelApprovalStatus
+    Amazonka.SageMaker.Types.ModelArtifacts
+    Amazonka.SageMaker.Types.ModelBiasAppSpecification
+    Amazonka.SageMaker.Types.ModelBiasBaselineConfig
+    Amazonka.SageMaker.Types.ModelBiasJobInput
+    Amazonka.SageMaker.Types.ModelCacheSetting
+    Amazonka.SageMaker.Types.ModelCard
+    Amazonka.SageMaker.Types.ModelCardExportArtifacts
+    Amazonka.SageMaker.Types.ModelCardExportJobSortBy
+    Amazonka.SageMaker.Types.ModelCardExportJobSortOrder
+    Amazonka.SageMaker.Types.ModelCardExportJobStatus
+    Amazonka.SageMaker.Types.ModelCardExportJobSummary
+    Amazonka.SageMaker.Types.ModelCardExportOutputConfig
+    Amazonka.SageMaker.Types.ModelCardProcessingStatus
+    Amazonka.SageMaker.Types.ModelCardSecurityConfig
+    Amazonka.SageMaker.Types.ModelCardSortBy
+    Amazonka.SageMaker.Types.ModelCardSortOrder
+    Amazonka.SageMaker.Types.ModelCardStatus
+    Amazonka.SageMaker.Types.ModelCardSummary
+    Amazonka.SageMaker.Types.ModelCardVersionSortBy
+    Amazonka.SageMaker.Types.ModelCardVersionSummary
+    Amazonka.SageMaker.Types.ModelClientConfig
+    Amazonka.SageMaker.Types.ModelConfiguration
+    Amazonka.SageMaker.Types.ModelDashboardEndpoint
+    Amazonka.SageMaker.Types.ModelDashboardIndicatorAction
+    Amazonka.SageMaker.Types.ModelDashboardModel
+    Amazonka.SageMaker.Types.ModelDashboardModelCard
+    Amazonka.SageMaker.Types.ModelDashboardMonitoringSchedule
+    Amazonka.SageMaker.Types.ModelDataQuality
+    Amazonka.SageMaker.Types.ModelDeployConfig
+    Amazonka.SageMaker.Types.ModelDeployResult
+    Amazonka.SageMaker.Types.ModelDigests
+    Amazonka.SageMaker.Types.ModelExplainabilityAppSpecification
+    Amazonka.SageMaker.Types.ModelExplainabilityBaselineConfig
+    Amazonka.SageMaker.Types.ModelExplainabilityJobInput
+    Amazonka.SageMaker.Types.ModelInfrastructureConfig
+    Amazonka.SageMaker.Types.ModelInfrastructureType
+    Amazonka.SageMaker.Types.ModelInput
+    Amazonka.SageMaker.Types.ModelLatencyThreshold
+    Amazonka.SageMaker.Types.ModelMetadataFilter
+    Amazonka.SageMaker.Types.ModelMetadataFilterType
+    Amazonka.SageMaker.Types.ModelMetadataSearchExpression
+    Amazonka.SageMaker.Types.ModelMetadataSummary
+    Amazonka.SageMaker.Types.ModelMetrics
+    Amazonka.SageMaker.Types.ModelPackage
+    Amazonka.SageMaker.Types.ModelPackageContainerDefinition
+    Amazonka.SageMaker.Types.ModelPackageGroup
+    Amazonka.SageMaker.Types.ModelPackageGroupSortBy
+    Amazonka.SageMaker.Types.ModelPackageGroupStatus
+    Amazonka.SageMaker.Types.ModelPackageGroupSummary
+    Amazonka.SageMaker.Types.ModelPackageSortBy
+    Amazonka.SageMaker.Types.ModelPackageStatus
+    Amazonka.SageMaker.Types.ModelPackageStatusDetails
+    Amazonka.SageMaker.Types.ModelPackageStatusItem
+    Amazonka.SageMaker.Types.ModelPackageSummary
+    Amazonka.SageMaker.Types.ModelPackageType
+    Amazonka.SageMaker.Types.ModelPackageValidationProfile
+    Amazonka.SageMaker.Types.ModelPackageValidationSpecification
+    Amazonka.SageMaker.Types.ModelQuality
+    Amazonka.SageMaker.Types.ModelQualityAppSpecification
+    Amazonka.SageMaker.Types.ModelQualityBaselineConfig
+    Amazonka.SageMaker.Types.ModelQualityJobInput
+    Amazonka.SageMaker.Types.ModelSortKey
+    Amazonka.SageMaker.Types.ModelStepMetadata
+    Amazonka.SageMaker.Types.ModelSummary
+    Amazonka.SageMaker.Types.ModelVariantAction
+    Amazonka.SageMaker.Types.ModelVariantConfig
+    Amazonka.SageMaker.Types.ModelVariantConfigSummary
+    Amazonka.SageMaker.Types.ModelVariantStatus
+    Amazonka.SageMaker.Types.MonitoringAlertActions
+    Amazonka.SageMaker.Types.MonitoringAlertHistorySortKey
+    Amazonka.SageMaker.Types.MonitoringAlertHistorySummary
+    Amazonka.SageMaker.Types.MonitoringAlertStatus
+    Amazonka.SageMaker.Types.MonitoringAlertSummary
+    Amazonka.SageMaker.Types.MonitoringAppSpecification
+    Amazonka.SageMaker.Types.MonitoringBaselineConfig
+    Amazonka.SageMaker.Types.MonitoringClusterConfig
+    Amazonka.SageMaker.Types.MonitoringConstraintsResource
+    Amazonka.SageMaker.Types.MonitoringCsvDatasetFormat
+    Amazonka.SageMaker.Types.MonitoringDatasetFormat
+    Amazonka.SageMaker.Types.MonitoringExecutionSortKey
+    Amazonka.SageMaker.Types.MonitoringExecutionSummary
+    Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input
+    Amazonka.SageMaker.Types.MonitoringInput
+    Amazonka.SageMaker.Types.MonitoringJobDefinition
+    Amazonka.SageMaker.Types.MonitoringJobDefinitionSortKey
+    Amazonka.SageMaker.Types.MonitoringJobDefinitionSummary
+    Amazonka.SageMaker.Types.MonitoringJsonDatasetFormat
+    Amazonka.SageMaker.Types.MonitoringNetworkConfig
+    Amazonka.SageMaker.Types.MonitoringOutput
+    Amazonka.SageMaker.Types.MonitoringOutputConfig
+    Amazonka.SageMaker.Types.MonitoringParquetDatasetFormat
+    Amazonka.SageMaker.Types.MonitoringProblemType
+    Amazonka.SageMaker.Types.MonitoringResources
+    Amazonka.SageMaker.Types.MonitoringS3Output
+    Amazonka.SageMaker.Types.MonitoringSchedule
+    Amazonka.SageMaker.Types.MonitoringScheduleConfig
+    Amazonka.SageMaker.Types.MonitoringScheduleSortKey
+    Amazonka.SageMaker.Types.MonitoringScheduleSummary
+    Amazonka.SageMaker.Types.MonitoringStatisticsResource
+    Amazonka.SageMaker.Types.MonitoringStoppingCondition
+    Amazonka.SageMaker.Types.MonitoringType
+    Amazonka.SageMaker.Types.MultiModelConfig
+    Amazonka.SageMaker.Types.NeoVpcConfig
+    Amazonka.SageMaker.Types.NestedFilters
+    Amazonka.SageMaker.Types.NetworkConfig
+    Amazonka.SageMaker.Types.NotebookInstanceAcceleratorType
+    Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortKey
+    Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortOrder
+    Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSummary
+    Amazonka.SageMaker.Types.NotebookInstanceLifecycleHook
+    Amazonka.SageMaker.Types.NotebookInstanceSortKey
+    Amazonka.SageMaker.Types.NotebookInstanceSortOrder
+    Amazonka.SageMaker.Types.NotebookInstanceStatus
+    Amazonka.SageMaker.Types.NotebookInstanceSummary
+    Amazonka.SageMaker.Types.NotebookOutputOption
+    Amazonka.SageMaker.Types.NotificationConfiguration
+    Amazonka.SageMaker.Types.ObjectiveStatus
+    Amazonka.SageMaker.Types.ObjectiveStatusCounters
+    Amazonka.SageMaker.Types.OfflineStoreConfig
+    Amazonka.SageMaker.Types.OfflineStoreStatus
+    Amazonka.SageMaker.Types.OfflineStoreStatusValue
+    Amazonka.SageMaker.Types.OidcConfig
+    Amazonka.SageMaker.Types.OidcConfigForResponse
+    Amazonka.SageMaker.Types.OidcMemberDefinition
+    Amazonka.SageMaker.Types.OnlineStoreConfig
+    Amazonka.SageMaker.Types.OnlineStoreSecurityConfig
+    Amazonka.SageMaker.Types.Operator
+    Amazonka.SageMaker.Types.OrderKey
+    Amazonka.SageMaker.Types.OutputConfig
+    Amazonka.SageMaker.Types.OutputDataConfig
+    Amazonka.SageMaker.Types.OutputParameter
+    Amazonka.SageMaker.Types.ParallelismConfiguration
+    Amazonka.SageMaker.Types.Parameter
+    Amazonka.SageMaker.Types.ParameterRange
+    Amazonka.SageMaker.Types.ParameterRanges
+    Amazonka.SageMaker.Types.ParameterType
+    Amazonka.SageMaker.Types.Parent
+    Amazonka.SageMaker.Types.ParentHyperParameterTuningJob
+    Amazonka.SageMaker.Types.PendingDeploymentSummary
+    Amazonka.SageMaker.Types.PendingProductionVariantSummary
+    Amazonka.SageMaker.Types.Phase
+    Amazonka.SageMaker.Types.Pipeline
+    Amazonka.SageMaker.Types.PipelineDefinitionS3Location
+    Amazonka.SageMaker.Types.PipelineExecution
+    Amazonka.SageMaker.Types.PipelineExecutionStatus
+    Amazonka.SageMaker.Types.PipelineExecutionStep
+    Amazonka.SageMaker.Types.PipelineExecutionStepMetadata
+    Amazonka.SageMaker.Types.PipelineExecutionSummary
+    Amazonka.SageMaker.Types.PipelineExperimentConfig
+    Amazonka.SageMaker.Types.PipelineStatus
+    Amazonka.SageMaker.Types.PipelineSummary
+    Amazonka.SageMaker.Types.ProblemType
+    Amazonka.SageMaker.Types.ProcessingClusterConfig
+    Amazonka.SageMaker.Types.ProcessingFeatureStoreOutput
+    Amazonka.SageMaker.Types.ProcessingInput
+    Amazonka.SageMaker.Types.ProcessingInstanceType
+    Amazonka.SageMaker.Types.ProcessingJob
+    Amazonka.SageMaker.Types.ProcessingJobStatus
+    Amazonka.SageMaker.Types.ProcessingJobStepMetadata
+    Amazonka.SageMaker.Types.ProcessingJobSummary
+    Amazonka.SageMaker.Types.ProcessingOutput
+    Amazonka.SageMaker.Types.ProcessingOutputConfig
+    Amazonka.SageMaker.Types.ProcessingResources
+    Amazonka.SageMaker.Types.ProcessingS3CompressionType
+    Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+    Amazonka.SageMaker.Types.ProcessingS3DataType
+    Amazonka.SageMaker.Types.ProcessingS3Input
+    Amazonka.SageMaker.Types.ProcessingS3InputMode
+    Amazonka.SageMaker.Types.ProcessingS3Output
+    Amazonka.SageMaker.Types.ProcessingS3UploadMode
+    Amazonka.SageMaker.Types.ProcessingStoppingCondition
+    Amazonka.SageMaker.Types.Processor
+    Amazonka.SageMaker.Types.ProductionVariant
+    Amazonka.SageMaker.Types.ProductionVariantAcceleratorType
+    Amazonka.SageMaker.Types.ProductionVariantCoreDumpConfig
+    Amazonka.SageMaker.Types.ProductionVariantInstanceType
+    Amazonka.SageMaker.Types.ProductionVariantServerlessConfig
+    Amazonka.SageMaker.Types.ProductionVariantStatus
+    Amazonka.SageMaker.Types.ProductionVariantSummary
+    Amazonka.SageMaker.Types.ProfilerConfig
+    Amazonka.SageMaker.Types.ProfilerConfigForUpdate
+    Amazonka.SageMaker.Types.ProfilerRuleConfiguration
+    Amazonka.SageMaker.Types.ProfilerRuleEvaluationStatus
+    Amazonka.SageMaker.Types.ProfilingStatus
+    Amazonka.SageMaker.Types.Project
+    Amazonka.SageMaker.Types.ProjectSortBy
+    Amazonka.SageMaker.Types.ProjectSortOrder
+    Amazonka.SageMaker.Types.ProjectStatus
+    Amazonka.SageMaker.Types.ProjectSummary
+    Amazonka.SageMaker.Types.PropertyNameQuery
+    Amazonka.SageMaker.Types.PropertyNameSuggestion
+    Amazonka.SageMaker.Types.ProvisioningParameter
+    Amazonka.SageMaker.Types.PublicWorkforceTaskPrice
+    Amazonka.SageMaker.Types.QualityCheckStepMetadata
+    Amazonka.SageMaker.Types.QueryFilters
+    Amazonka.SageMaker.Types.RealTimeInferenceConfig
+    Amazonka.SageMaker.Types.RecommendationJobCompiledOutputConfig
+    Amazonka.SageMaker.Types.RecommendationJobContainerConfig
+    Amazonka.SageMaker.Types.RecommendationJobInferenceBenchmark
+    Amazonka.SageMaker.Types.RecommendationJobInputConfig
+    Amazonka.SageMaker.Types.RecommendationJobOutputConfig
+    Amazonka.SageMaker.Types.RecommendationJobPayloadConfig
+    Amazonka.SageMaker.Types.RecommendationJobResourceLimit
+    Amazonka.SageMaker.Types.RecommendationJobStatus
+    Amazonka.SageMaker.Types.RecommendationJobStoppingConditions
+    Amazonka.SageMaker.Types.RecommendationJobType
+    Amazonka.SageMaker.Types.RecommendationJobVpcConfig
+    Amazonka.SageMaker.Types.RecommendationMetrics
+    Amazonka.SageMaker.Types.RecommendationStepType
+    Amazonka.SageMaker.Types.RecordWrapper
+    Amazonka.SageMaker.Types.RedshiftDatasetDefinition
+    Amazonka.SageMaker.Types.RedshiftResultCompressionType
+    Amazonka.SageMaker.Types.RedshiftResultFormat
+    Amazonka.SageMaker.Types.RegisterModelStepMetadata
+    Amazonka.SageMaker.Types.RenderableTask
+    Amazonka.SageMaker.Types.RenderingError
+    Amazonka.SageMaker.Types.RepositoryAccessMode
+    Amazonka.SageMaker.Types.RepositoryAuthConfig
+    Amazonka.SageMaker.Types.ResolvedAttributes
+    Amazonka.SageMaker.Types.ResourceConfig
+    Amazonka.SageMaker.Types.ResourceConfigForUpdate
+    Amazonka.SageMaker.Types.ResourceLimits
+    Amazonka.SageMaker.Types.ResourceSpec
+    Amazonka.SageMaker.Types.ResourceType
+    Amazonka.SageMaker.Types.RetentionPolicy
+    Amazonka.SageMaker.Types.RetentionType
+    Amazonka.SageMaker.Types.RetryStrategy
+    Amazonka.SageMaker.Types.RootAccess
+    Amazonka.SageMaker.Types.RSessionAppSettings
+    Amazonka.SageMaker.Types.RStudioServerProAccessStatus
+    Amazonka.SageMaker.Types.RStudioServerProAppSettings
+    Amazonka.SageMaker.Types.RStudioServerProDomainSettings
+    Amazonka.SageMaker.Types.RStudioServerProDomainSettingsForUpdate
+    Amazonka.SageMaker.Types.RStudioServerProUserGroup
+    Amazonka.SageMaker.Types.RuleEvaluationStatus
+    Amazonka.SageMaker.Types.S3DataDistribution
+    Amazonka.SageMaker.Types.S3DataSource
+    Amazonka.SageMaker.Types.S3DataType
+    Amazonka.SageMaker.Types.S3StorageConfig
+    Amazonka.SageMaker.Types.SagemakerServicecatalogStatus
+    Amazonka.SageMaker.Types.ScheduleConfig
+    Amazonka.SageMaker.Types.ScheduleStatus
+    Amazonka.SageMaker.Types.SearchExpression
+    Amazonka.SageMaker.Types.SearchRecord
+    Amazonka.SageMaker.Types.SearchSortOrder
+    Amazonka.SageMaker.Types.SecondaryStatus
+    Amazonka.SageMaker.Types.SecondaryStatusTransition
+    Amazonka.SageMaker.Types.ServiceCatalogProvisionedProductDetails
+    Amazonka.SageMaker.Types.ServiceCatalogProvisioningDetails
+    Amazonka.SageMaker.Types.ServiceCatalogProvisioningUpdateDetails
+    Amazonka.SageMaker.Types.ShadowModeConfig
+    Amazonka.SageMaker.Types.ShadowModelVariantConfig
+    Amazonka.SageMaker.Types.SharingSettings
+    Amazonka.SageMaker.Types.ShuffleConfig
+    Amazonka.SageMaker.Types.SortActionsBy
+    Amazonka.SageMaker.Types.SortArtifactsBy
+    Amazonka.SageMaker.Types.SortAssociationsBy
+    Amazonka.SageMaker.Types.SortBy
+    Amazonka.SageMaker.Types.SortContextsBy
+    Amazonka.SageMaker.Types.SortExperimentsBy
+    Amazonka.SageMaker.Types.SortInferenceExperimentsBy
+    Amazonka.SageMaker.Types.SortLineageGroupsBy
+    Amazonka.SageMaker.Types.SortOrder
+    Amazonka.SageMaker.Types.SortPipelineExecutionsBy
+    Amazonka.SageMaker.Types.SortPipelinesBy
+    Amazonka.SageMaker.Types.SortTrialComponentsBy
+    Amazonka.SageMaker.Types.SortTrialsBy
+    Amazonka.SageMaker.Types.SourceAlgorithm
+    Amazonka.SageMaker.Types.SourceAlgorithmSpecification
+    Amazonka.SageMaker.Types.SourceIpConfig
+    Amazonka.SageMaker.Types.SpaceDetails
+    Amazonka.SageMaker.Types.SpaceSettings
+    Amazonka.SageMaker.Types.SpaceSortKey
+    Amazonka.SageMaker.Types.SpaceStatus
+    Amazonka.SageMaker.Types.SplitType
+    Amazonka.SageMaker.Types.StageStatus
+    Amazonka.SageMaker.Types.StepStatus
+    Amazonka.SageMaker.Types.StoppingCondition
+    Amazonka.SageMaker.Types.StudioLifecycleConfigAppType
+    Amazonka.SageMaker.Types.StudioLifecycleConfigDetails
+    Amazonka.SageMaker.Types.StudioLifecycleConfigSortKey
+    Amazonka.SageMaker.Types.SubscribedWorkteam
+    Amazonka.SageMaker.Types.SuggestionQuery
+    Amazonka.SageMaker.Types.TableFormat
+    Amazonka.SageMaker.Types.Tag
+    Amazonka.SageMaker.Types.TargetDevice
+    Amazonka.SageMaker.Types.TargetPlatform
+    Amazonka.SageMaker.Types.TargetPlatformAccelerator
+    Amazonka.SageMaker.Types.TargetPlatformArch
+    Amazonka.SageMaker.Types.TargetPlatformOs
+    Amazonka.SageMaker.Types.TensorBoardAppSettings
+    Amazonka.SageMaker.Types.TensorBoardOutputConfig
+    Amazonka.SageMaker.Types.TimeSeriesForecastingSettings
+    Amazonka.SageMaker.Types.TrafficPattern
+    Amazonka.SageMaker.Types.TrafficRoutingConfig
+    Amazonka.SageMaker.Types.TrafficRoutingConfigType
+    Amazonka.SageMaker.Types.TrafficType
+    Amazonka.SageMaker.Types.TrainingInputMode
+    Amazonka.SageMaker.Types.TrainingInstanceType
+    Amazonka.SageMaker.Types.TrainingJob
+    Amazonka.SageMaker.Types.TrainingJobDefinition
+    Amazonka.SageMaker.Types.TrainingJobEarlyStoppingType
+    Amazonka.SageMaker.Types.TrainingJobSortByOptions
+    Amazonka.SageMaker.Types.TrainingJobStatus
+    Amazonka.SageMaker.Types.TrainingJobStatusCounters
+    Amazonka.SageMaker.Types.TrainingJobStepMetadata
+    Amazonka.SageMaker.Types.TrainingJobSummary
+    Amazonka.SageMaker.Types.TrainingSpecification
+    Amazonka.SageMaker.Types.TransformDataSource
+    Amazonka.SageMaker.Types.TransformInput
+    Amazonka.SageMaker.Types.TransformInstanceType
+    Amazonka.SageMaker.Types.TransformJob
+    Amazonka.SageMaker.Types.TransformJobDefinition
+    Amazonka.SageMaker.Types.TransformJobStatus
+    Amazonka.SageMaker.Types.TransformJobStepMetadata
+    Amazonka.SageMaker.Types.TransformJobSummary
+    Amazonka.SageMaker.Types.TransformOutput
+    Amazonka.SageMaker.Types.TransformResources
+    Amazonka.SageMaker.Types.TransformS3DataSource
+    Amazonka.SageMaker.Types.Trial
+    Amazonka.SageMaker.Types.TrialComponent
+    Amazonka.SageMaker.Types.TrialComponentArtifact
+    Amazonka.SageMaker.Types.TrialComponentMetricSummary
+    Amazonka.SageMaker.Types.TrialComponentParameterValue
+    Amazonka.SageMaker.Types.TrialComponentPrimaryStatus
+    Amazonka.SageMaker.Types.TrialComponentSimpleSummary
+    Amazonka.SageMaker.Types.TrialComponentSource
+    Amazonka.SageMaker.Types.TrialComponentSourceDetail
+    Amazonka.SageMaker.Types.TrialComponentStatus
+    Amazonka.SageMaker.Types.TrialComponentSummary
+    Amazonka.SageMaker.Types.TrialSource
+    Amazonka.SageMaker.Types.TrialSummary
+    Amazonka.SageMaker.Types.TuningJobCompletionCriteria
+    Amazonka.SageMaker.Types.TuningJobStepMetaData
+    Amazonka.SageMaker.Types.UiConfig
+    Amazonka.SageMaker.Types.UiTemplate
+    Amazonka.SageMaker.Types.UiTemplateInfo
+    Amazonka.SageMaker.Types.USD
+    Amazonka.SageMaker.Types.UserContext
+    Amazonka.SageMaker.Types.UserProfileDetails
+    Amazonka.SageMaker.Types.UserProfileSortKey
+    Amazonka.SageMaker.Types.UserProfileStatus
+    Amazonka.SageMaker.Types.UserSettings
+    Amazonka.SageMaker.Types.VariantProperty
+    Amazonka.SageMaker.Types.VariantPropertyType
+    Amazonka.SageMaker.Types.VariantStatus
+    Amazonka.SageMaker.Types.VendorGuidance
+    Amazonka.SageMaker.Types.Vertex
+    Amazonka.SageMaker.Types.VpcConfig
+    Amazonka.SageMaker.Types.WarmPoolResourceStatus
+    Amazonka.SageMaker.Types.WarmPoolStatus
+    Amazonka.SageMaker.Types.Workforce
+    Amazonka.SageMaker.Types.WorkforceStatus
+    Amazonka.SageMaker.Types.WorkforceVpcConfigRequest
+    Amazonka.SageMaker.Types.WorkforceVpcConfigResponse
+    Amazonka.SageMaker.Types.Workteam
+    Amazonka.SageMaker.UpdateAction
+    Amazonka.SageMaker.UpdateAppImageConfig
+    Amazonka.SageMaker.UpdateArtifact
+    Amazonka.SageMaker.UpdateCodeRepository
+    Amazonka.SageMaker.UpdateContext
+    Amazonka.SageMaker.UpdateDeviceFleet
+    Amazonka.SageMaker.UpdateDevices
+    Amazonka.SageMaker.UpdateDomain
+    Amazonka.SageMaker.UpdateEndpoint
+    Amazonka.SageMaker.UpdateEndpointWeightsAndCapacities
+    Amazonka.SageMaker.UpdateExperiment
+    Amazonka.SageMaker.UpdateFeatureGroup
+    Amazonka.SageMaker.UpdateFeatureMetadata
+    Amazonka.SageMaker.UpdateHub
+    Amazonka.SageMaker.UpdateImage
+    Amazonka.SageMaker.UpdateImageVersion
+    Amazonka.SageMaker.UpdateInferenceExperiment
+    Amazonka.SageMaker.UpdateModelCard
+    Amazonka.SageMaker.UpdateModelPackage
+    Amazonka.SageMaker.UpdateMonitoringAlert
+    Amazonka.SageMaker.UpdateMonitoringSchedule
+    Amazonka.SageMaker.UpdateNotebookInstance
+    Amazonka.SageMaker.UpdateNotebookInstanceLifecycleConfig
+    Amazonka.SageMaker.UpdatePipeline
+    Amazonka.SageMaker.UpdatePipelineExecution
+    Amazonka.SageMaker.UpdateProject
+    Amazonka.SageMaker.UpdateSpace
+    Amazonka.SageMaker.UpdateTrainingJob
+    Amazonka.SageMaker.UpdateTrial
+    Amazonka.SageMaker.UpdateTrialComponent
+    Amazonka.SageMaker.UpdateUserProfile
+    Amazonka.SageMaker.UpdateWorkforce
+    Amazonka.SageMaker.UpdateWorkteam
+    Amazonka.SageMaker.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-sagemaker-test
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
+
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.SageMaker
+    Test.Amazonka.SageMaker
+    Test.Amazonka.SageMaker.Internal
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-sagemaker
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AddAssociation.yaml b/fixture/AddAssociation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AddAssociation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AddAssociationResponse.proto b/fixture/AddAssociationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AddAssociationResponse.proto
diff --git a/fixture/AddTags.yaml b/fixture/AddTags.yaml
--- a/fixture/AddTags.yaml
+++ b/fixture/AddTags.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/AssociateTrialComponent.yaml b/fixture/AssociateTrialComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateTrialComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/AssociateTrialComponentResponse.proto b/fixture/AssociateTrialComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateTrialComponentResponse.proto
diff --git a/fixture/BatchDescribeModelPackage.yaml b/fixture/BatchDescribeModelPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDescribeModelPackage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchDescribeModelPackageResponse.proto b/fixture/BatchDescribeModelPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDescribeModelPackageResponse.proto
diff --git a/fixture/CreateAction.yaml b/fixture/CreateAction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAction.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateActionResponse.proto b/fixture/CreateActionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateActionResponse.proto
diff --git a/fixture/CreateAlgorithm.yaml b/fixture/CreateAlgorithm.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAlgorithm.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAlgorithmResponse.proto b/fixture/CreateAlgorithmResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAlgorithmResponse.proto
diff --git a/fixture/CreateApp.yaml b/fixture/CreateApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApp.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAppImageConfig.yaml b/fixture/CreateAppImageConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppImageConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAppImageConfigResponse.proto b/fixture/CreateAppImageConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppImageConfigResponse.proto
diff --git a/fixture/CreateAppResponse.proto b/fixture/CreateAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAppResponse.proto
diff --git a/fixture/CreateArtifact.yaml b/fixture/CreateArtifact.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateArtifact.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateArtifactResponse.proto b/fixture/CreateArtifactResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateArtifactResponse.proto
diff --git a/fixture/CreateAutoMLJob.yaml b/fixture/CreateAutoMLJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAutoMLJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateAutoMLJobResponse.proto b/fixture/CreateAutoMLJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAutoMLJobResponse.proto
diff --git a/fixture/CreateCodeRepository.yaml b/fixture/CreateCodeRepository.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCodeRepository.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateCodeRepositoryResponse.proto b/fixture/CreateCodeRepositoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCodeRepositoryResponse.proto
diff --git a/fixture/CreateCompilationJob.yaml b/fixture/CreateCompilationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCompilationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateCompilationJobResponse.proto b/fixture/CreateCompilationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCompilationJobResponse.proto
diff --git a/fixture/CreateContext.yaml b/fixture/CreateContext.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateContext.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateContextResponse.proto b/fixture/CreateContextResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateContextResponse.proto
diff --git a/fixture/CreateDataQualityJobDefinition.yaml b/fixture/CreateDataQualityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataQualityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateDataQualityJobDefinitionResponse.proto b/fixture/CreateDataQualityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataQualityJobDefinitionResponse.proto
diff --git a/fixture/CreateDeviceFleet.yaml b/fixture/CreateDeviceFleet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDeviceFleet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateDeviceFleetResponse.proto b/fixture/CreateDeviceFleetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDeviceFleetResponse.proto
diff --git a/fixture/CreateDomain.yaml b/fixture/CreateDomain.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDomain.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateDomainResponse.proto b/fixture/CreateDomainResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDomainResponse.proto
diff --git a/fixture/CreateEdgeDeploymentPlan.yaml b/fixture/CreateEdgeDeploymentPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEdgeDeploymentPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateEdgeDeploymentPlanResponse.proto b/fixture/CreateEdgeDeploymentPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEdgeDeploymentPlanResponse.proto
diff --git a/fixture/CreateEdgeDeploymentStage.yaml b/fixture/CreateEdgeDeploymentStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEdgeDeploymentStage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateEdgeDeploymentStageResponse.proto b/fixture/CreateEdgeDeploymentStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEdgeDeploymentStageResponse.proto
diff --git a/fixture/CreateEdgePackagingJob.yaml b/fixture/CreateEdgePackagingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEdgePackagingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateEdgePackagingJobResponse.proto b/fixture/CreateEdgePackagingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEdgePackagingJobResponse.proto
diff --git a/fixture/CreateEndpoint.yaml b/fixture/CreateEndpoint.yaml
--- a/fixture/CreateEndpoint.yaml
+++ b/fixture/CreateEndpoint.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/CreateEndpointConfig.yaml b/fixture/CreateEndpointConfig.yaml
--- a/fixture/CreateEndpointConfig.yaml
+++ b/fixture/CreateEndpointConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/CreateExperiment.yaml b/fixture/CreateExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateExperimentResponse.proto b/fixture/CreateExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateExperimentResponse.proto
diff --git a/fixture/CreateFeatureGroup.yaml b/fixture/CreateFeatureGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFeatureGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateFeatureGroupResponse.proto b/fixture/CreateFeatureGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFeatureGroupResponse.proto
diff --git a/fixture/CreateFlowDefinition.yaml b/fixture/CreateFlowDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFlowDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateFlowDefinitionResponse.proto b/fixture/CreateFlowDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFlowDefinitionResponse.proto
diff --git a/fixture/CreateHub.yaml b/fixture/CreateHub.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHub.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateHubResponse.proto b/fixture/CreateHubResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHubResponse.proto
diff --git a/fixture/CreateHumanTaskUi.yaml b/fixture/CreateHumanTaskUi.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHumanTaskUi.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateHumanTaskUiResponse.proto b/fixture/CreateHumanTaskUiResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHumanTaskUiResponse.proto
diff --git a/fixture/CreateHyperParameterTuningJob.yaml b/fixture/CreateHyperParameterTuningJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHyperParameterTuningJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateHyperParameterTuningJobResponse.proto b/fixture/CreateHyperParameterTuningJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHyperParameterTuningJobResponse.proto
diff --git a/fixture/CreateImage.yaml b/fixture/CreateImage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateImageResponse.proto b/fixture/CreateImageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageResponse.proto
diff --git a/fixture/CreateImageVersion.yaml b/fixture/CreateImageVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateImageVersionResponse.proto b/fixture/CreateImageVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateImageVersionResponse.proto
diff --git a/fixture/CreateInferenceExperiment.yaml b/fixture/CreateInferenceExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateInferenceExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateInferenceExperimentResponse.proto b/fixture/CreateInferenceExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateInferenceExperimentResponse.proto
diff --git a/fixture/CreateInferenceRecommendationsJob.yaml b/fixture/CreateInferenceRecommendationsJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateInferenceRecommendationsJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateInferenceRecommendationsJobResponse.proto b/fixture/CreateInferenceRecommendationsJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateInferenceRecommendationsJobResponse.proto
diff --git a/fixture/CreateLabelingJob.yaml b/fixture/CreateLabelingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLabelingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateLabelingJobResponse.proto b/fixture/CreateLabelingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLabelingJobResponse.proto
diff --git a/fixture/CreateModel.yaml b/fixture/CreateModel.yaml
--- a/fixture/CreateModel.yaml
+++ b/fixture/CreateModel.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/CreateModelBiasJobDefinition.yaml b/fixture/CreateModelBiasJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelBiasJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelBiasJobDefinitionResponse.proto b/fixture/CreateModelBiasJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelBiasJobDefinitionResponse.proto
diff --git a/fixture/CreateModelCard.yaml b/fixture/CreateModelCard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelCard.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelCardExportJob.yaml b/fixture/CreateModelCardExportJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelCardExportJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelCardExportJobResponse.proto b/fixture/CreateModelCardExportJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelCardExportJobResponse.proto
diff --git a/fixture/CreateModelCardResponse.proto b/fixture/CreateModelCardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelCardResponse.proto
diff --git a/fixture/CreateModelExplainabilityJobDefinition.yaml b/fixture/CreateModelExplainabilityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelExplainabilityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelExplainabilityJobDefinitionResponse.proto b/fixture/CreateModelExplainabilityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelExplainabilityJobDefinitionResponse.proto
diff --git a/fixture/CreateModelPackage.yaml b/fixture/CreateModelPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelPackage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelPackageGroup.yaml b/fixture/CreateModelPackageGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelPackageGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelPackageGroupResponse.proto b/fixture/CreateModelPackageGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelPackageGroupResponse.proto
diff --git a/fixture/CreateModelPackageResponse.proto b/fixture/CreateModelPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelPackageResponse.proto
diff --git a/fixture/CreateModelQualityJobDefinition.yaml b/fixture/CreateModelQualityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelQualityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelQualityJobDefinitionResponse.proto b/fixture/CreateModelQualityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelQualityJobDefinitionResponse.proto
diff --git a/fixture/CreateMonitoringSchedule.yaml b/fixture/CreateMonitoringSchedule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMonitoringSchedule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateMonitoringScheduleResponse.proto b/fixture/CreateMonitoringScheduleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMonitoringScheduleResponse.proto
diff --git a/fixture/CreateNotebookInstance.yaml b/fixture/CreateNotebookInstance.yaml
--- a/fixture/CreateNotebookInstance.yaml
+++ b/fixture/CreateNotebookInstance.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/CreateNotebookInstanceLifecycleConfig.yaml b/fixture/CreateNotebookInstanceLifecycleConfig.yaml
--- a/fixture/CreateNotebookInstanceLifecycleConfig.yaml
+++ b/fixture/CreateNotebookInstanceLifecycleConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/CreatePipeline.yaml b/fixture/CreatePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreatePipelineResponse.proto b/fixture/CreatePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePipelineResponse.proto
diff --git a/fixture/CreatePresignedDomainUrl.yaml b/fixture/CreatePresignedDomainUrl.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePresignedDomainUrl.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreatePresignedDomainUrlResponse.proto b/fixture/CreatePresignedDomainUrlResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePresignedDomainUrlResponse.proto
diff --git a/fixture/CreatePresignedNotebookInstanceURL.yaml b/fixture/CreatePresignedNotebookInstanceURL.yaml
deleted file mode 100644
--- a/fixture/CreatePresignedNotebookInstanceURL.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-method: POST
-headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
-  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
-  X-Amz-Content-SHA256:  abcdef
-  X-Amz-Date:            20091028T223200Z
-body:
-  ''
diff --git a/fixture/CreatePresignedNotebookInstanceURLResponse.proto b/fixture/CreatePresignedNotebookInstanceURLResponse.proto
deleted file mode 100644
--- a/fixture/CreatePresignedNotebookInstanceURLResponse.proto
+++ /dev/null
diff --git a/fixture/CreatePresignedNotebookInstanceUrl.yaml b/fixture/CreatePresignedNotebookInstanceUrl.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePresignedNotebookInstanceUrl.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreatePresignedNotebookInstanceUrlResponse.proto b/fixture/CreatePresignedNotebookInstanceUrlResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePresignedNotebookInstanceUrlResponse.proto
diff --git a/fixture/CreateProcessingJob.yaml b/fixture/CreateProcessingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateProcessingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateProcessingJobResponse.proto b/fixture/CreateProcessingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateProcessingJobResponse.proto
diff --git a/fixture/CreateProject.yaml b/fixture/CreateProject.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateProject.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateProjectResponse.proto b/fixture/CreateProjectResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateProjectResponse.proto
diff --git a/fixture/CreateSpace.yaml b/fixture/CreateSpace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSpace.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateSpaceResponse.proto b/fixture/CreateSpaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSpaceResponse.proto
diff --git a/fixture/CreateStudioLifecycleConfig.yaml b/fixture/CreateStudioLifecycleConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStudioLifecycleConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateStudioLifecycleConfigResponse.proto b/fixture/CreateStudioLifecycleConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStudioLifecycleConfigResponse.proto
diff --git a/fixture/CreateTrainingJob.yaml b/fixture/CreateTrainingJob.yaml
--- a/fixture/CreateTrainingJob.yaml
+++ b/fixture/CreateTrainingJob.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/CreateTransformJob.yaml b/fixture/CreateTransformJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTransformJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateTransformJobResponse.proto b/fixture/CreateTransformJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTransformJobResponse.proto
diff --git a/fixture/CreateTrial.yaml b/fixture/CreateTrial.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTrial.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateTrialComponent.yaml b/fixture/CreateTrialComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTrialComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateTrialComponentResponse.proto b/fixture/CreateTrialComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTrialComponentResponse.proto
diff --git a/fixture/CreateTrialResponse.proto b/fixture/CreateTrialResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTrialResponse.proto
diff --git a/fixture/CreateUserProfile.yaml b/fixture/CreateUserProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateUserProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateUserProfileResponse.proto b/fixture/CreateUserProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateUserProfileResponse.proto
diff --git a/fixture/CreateWorkforce.yaml b/fixture/CreateWorkforce.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkforce.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateWorkforceResponse.proto b/fixture/CreateWorkforceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkforceResponse.proto
diff --git a/fixture/CreateWorkteam.yaml b/fixture/CreateWorkteam.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkteam.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateWorkteamResponse.proto b/fixture/CreateWorkteamResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateWorkteamResponse.proto
diff --git a/fixture/DeleteAction.yaml b/fixture/DeleteAction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAction.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteActionResponse.proto b/fixture/DeleteActionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteActionResponse.proto
diff --git a/fixture/DeleteAlgorithm.yaml b/fixture/DeleteAlgorithm.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAlgorithm.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAlgorithmResponse.proto b/fixture/DeleteAlgorithmResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAlgorithmResponse.proto
diff --git a/fixture/DeleteApp.yaml b/fixture/DeleteApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApp.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAppImageConfig.yaml b/fixture/DeleteAppImageConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppImageConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAppImageConfigResponse.proto b/fixture/DeleteAppImageConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppImageConfigResponse.proto
diff --git a/fixture/DeleteAppResponse.proto b/fixture/DeleteAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppResponse.proto
diff --git a/fixture/DeleteArtifact.yaml b/fixture/DeleteArtifact.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteArtifact.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteArtifactResponse.proto b/fixture/DeleteArtifactResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteArtifactResponse.proto
diff --git a/fixture/DeleteAssociation.yaml b/fixture/DeleteAssociation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAssociation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteAssociationResponse.proto b/fixture/DeleteAssociationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAssociationResponse.proto
diff --git a/fixture/DeleteCodeRepository.yaml b/fixture/DeleteCodeRepository.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCodeRepository.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteCodeRepositoryResponse.proto b/fixture/DeleteCodeRepositoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCodeRepositoryResponse.proto
diff --git a/fixture/DeleteContext.yaml b/fixture/DeleteContext.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteContext.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteContextResponse.proto b/fixture/DeleteContextResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteContextResponse.proto
diff --git a/fixture/DeleteDataQualityJobDefinition.yaml b/fixture/DeleteDataQualityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataQualityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteDataQualityJobDefinitionResponse.proto b/fixture/DeleteDataQualityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataQualityJobDefinitionResponse.proto
diff --git a/fixture/DeleteDeviceFleet.yaml b/fixture/DeleteDeviceFleet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDeviceFleet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteDeviceFleetResponse.proto b/fixture/DeleteDeviceFleetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDeviceFleetResponse.proto
diff --git a/fixture/DeleteDomain.yaml b/fixture/DeleteDomain.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDomain.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteDomainResponse.proto b/fixture/DeleteDomainResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDomainResponse.proto
diff --git a/fixture/DeleteEdgeDeploymentPlan.yaml b/fixture/DeleteEdgeDeploymentPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEdgeDeploymentPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteEdgeDeploymentPlanResponse.proto b/fixture/DeleteEdgeDeploymentPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEdgeDeploymentPlanResponse.proto
diff --git a/fixture/DeleteEdgeDeploymentStage.yaml b/fixture/DeleteEdgeDeploymentStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEdgeDeploymentStage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteEdgeDeploymentStageResponse.proto b/fixture/DeleteEdgeDeploymentStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEdgeDeploymentStageResponse.proto
diff --git a/fixture/DeleteEndpoint.yaml b/fixture/DeleteEndpoint.yaml
--- a/fixture/DeleteEndpoint.yaml
+++ b/fixture/DeleteEndpoint.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DeleteEndpointConfig.yaml b/fixture/DeleteEndpointConfig.yaml
--- a/fixture/DeleteEndpointConfig.yaml
+++ b/fixture/DeleteEndpointConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DeleteExperiment.yaml b/fixture/DeleteExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteExperimentResponse.proto b/fixture/DeleteExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteExperimentResponse.proto
diff --git a/fixture/DeleteFeatureGroup.yaml b/fixture/DeleteFeatureGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFeatureGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteFeatureGroupResponse.proto b/fixture/DeleteFeatureGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFeatureGroupResponse.proto
diff --git a/fixture/DeleteFlowDefinition.yaml b/fixture/DeleteFlowDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFlowDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteFlowDefinitionResponse.proto b/fixture/DeleteFlowDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFlowDefinitionResponse.proto
diff --git a/fixture/DeleteHub.yaml b/fixture/DeleteHub.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteHub.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteHubContent.yaml b/fixture/DeleteHubContent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteHubContent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteHubContentResponse.proto b/fixture/DeleteHubContentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteHubContentResponse.proto
diff --git a/fixture/DeleteHubResponse.proto b/fixture/DeleteHubResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteHubResponse.proto
diff --git a/fixture/DeleteHumanTaskUi.yaml b/fixture/DeleteHumanTaskUi.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteHumanTaskUi.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteHumanTaskUiResponse.proto b/fixture/DeleteHumanTaskUiResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteHumanTaskUiResponse.proto
diff --git a/fixture/DeleteImage.yaml b/fixture/DeleteImage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteImageResponse.proto b/fixture/DeleteImageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImageResponse.proto
diff --git a/fixture/DeleteImageVersion.yaml b/fixture/DeleteImageVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImageVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteImageVersionResponse.proto b/fixture/DeleteImageVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteImageVersionResponse.proto
diff --git a/fixture/DeleteInferenceExperiment.yaml b/fixture/DeleteInferenceExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteInferenceExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteInferenceExperimentResponse.proto b/fixture/DeleteInferenceExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteInferenceExperimentResponse.proto
diff --git a/fixture/DeleteModel.yaml b/fixture/DeleteModel.yaml
--- a/fixture/DeleteModel.yaml
+++ b/fixture/DeleteModel.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DeleteModelBiasJobDefinition.yaml b/fixture/DeleteModelBiasJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelBiasJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelBiasJobDefinitionResponse.proto b/fixture/DeleteModelBiasJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelBiasJobDefinitionResponse.proto
diff --git a/fixture/DeleteModelCard.yaml b/fixture/DeleteModelCard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelCard.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelCardResponse.proto b/fixture/DeleteModelCardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelCardResponse.proto
diff --git a/fixture/DeleteModelExplainabilityJobDefinition.yaml b/fixture/DeleteModelExplainabilityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelExplainabilityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelExplainabilityJobDefinitionResponse.proto b/fixture/DeleteModelExplainabilityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelExplainabilityJobDefinitionResponse.proto
diff --git a/fixture/DeleteModelPackage.yaml b/fixture/DeleteModelPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelPackage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelPackageGroup.yaml b/fixture/DeleteModelPackageGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelPackageGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelPackageGroupPolicy.yaml b/fixture/DeleteModelPackageGroupPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelPackageGroupPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelPackageGroupPolicyResponse.proto b/fixture/DeleteModelPackageGroupPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelPackageGroupPolicyResponse.proto
diff --git a/fixture/DeleteModelPackageGroupResponse.proto b/fixture/DeleteModelPackageGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelPackageGroupResponse.proto
diff --git a/fixture/DeleteModelPackageResponse.proto b/fixture/DeleteModelPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelPackageResponse.proto
diff --git a/fixture/DeleteModelQualityJobDefinition.yaml b/fixture/DeleteModelQualityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelQualityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelQualityJobDefinitionResponse.proto b/fixture/DeleteModelQualityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelQualityJobDefinitionResponse.proto
diff --git a/fixture/DeleteMonitoringSchedule.yaml b/fixture/DeleteMonitoringSchedule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMonitoringSchedule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteMonitoringScheduleResponse.proto b/fixture/DeleteMonitoringScheduleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMonitoringScheduleResponse.proto
diff --git a/fixture/DeleteNotebookInstance.yaml b/fixture/DeleteNotebookInstance.yaml
--- a/fixture/DeleteNotebookInstance.yaml
+++ b/fixture/DeleteNotebookInstance.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DeleteNotebookInstanceLifecycleConfig.yaml b/fixture/DeleteNotebookInstanceLifecycleConfig.yaml
--- a/fixture/DeleteNotebookInstanceLifecycleConfig.yaml
+++ b/fixture/DeleteNotebookInstanceLifecycleConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DeletePipeline.yaml b/fixture/DeletePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeletePipelineResponse.proto b/fixture/DeletePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePipelineResponse.proto
diff --git a/fixture/DeleteProject.yaml b/fixture/DeleteProject.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteProject.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteProjectResponse.proto b/fixture/DeleteProjectResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteProjectResponse.proto
diff --git a/fixture/DeleteSpace.yaml b/fixture/DeleteSpace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSpace.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteSpaceResponse.proto b/fixture/DeleteSpaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSpaceResponse.proto
diff --git a/fixture/DeleteStudioLifecycleConfig.yaml b/fixture/DeleteStudioLifecycleConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteStudioLifecycleConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteStudioLifecycleConfigResponse.proto b/fixture/DeleteStudioLifecycleConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteStudioLifecycleConfigResponse.proto
diff --git a/fixture/DeleteTags.yaml b/fixture/DeleteTags.yaml
--- a/fixture/DeleteTags.yaml
+++ b/fixture/DeleteTags.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DeleteTrial.yaml b/fixture/DeleteTrial.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTrial.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteTrialComponent.yaml b/fixture/DeleteTrialComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTrialComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteTrialComponentResponse.proto b/fixture/DeleteTrialComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTrialComponentResponse.proto
diff --git a/fixture/DeleteTrialResponse.proto b/fixture/DeleteTrialResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTrialResponse.proto
diff --git a/fixture/DeleteUserProfile.yaml b/fixture/DeleteUserProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUserProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteUserProfileResponse.proto b/fixture/DeleteUserProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUserProfileResponse.proto
diff --git a/fixture/DeleteWorkforce.yaml b/fixture/DeleteWorkforce.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkforce.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteWorkforceResponse.proto b/fixture/DeleteWorkforceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkforceResponse.proto
diff --git a/fixture/DeleteWorkteam.yaml b/fixture/DeleteWorkteam.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkteam.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteWorkteamResponse.proto b/fixture/DeleteWorkteamResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWorkteamResponse.proto
diff --git a/fixture/DeregisterDevices.yaml b/fixture/DeregisterDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeregisterDevicesResponse.proto b/fixture/DeregisterDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterDevicesResponse.proto
diff --git a/fixture/DescribeAction.yaml b/fixture/DescribeAction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAction.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeActionResponse.proto b/fixture/DescribeActionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeActionResponse.proto
diff --git a/fixture/DescribeAlgorithm.yaml b/fixture/DescribeAlgorithm.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAlgorithm.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAlgorithmResponse.proto b/fixture/DescribeAlgorithmResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAlgorithmResponse.proto
diff --git a/fixture/DescribeApp.yaml b/fixture/DescribeApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeApp.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAppImageConfig.yaml b/fixture/DescribeAppImageConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppImageConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAppImageConfigResponse.proto b/fixture/DescribeAppImageConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppImageConfigResponse.proto
diff --git a/fixture/DescribeAppResponse.proto b/fixture/DescribeAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppResponse.proto
diff --git a/fixture/DescribeArtifact.yaml b/fixture/DescribeArtifact.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeArtifact.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeArtifactResponse.proto b/fixture/DescribeArtifactResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeArtifactResponse.proto
diff --git a/fixture/DescribeAutoMLJob.yaml b/fixture/DescribeAutoMLJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAutoMLJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAutoMLJobResponse.proto b/fixture/DescribeAutoMLJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAutoMLJobResponse.proto
diff --git a/fixture/DescribeCodeRepository.yaml b/fixture/DescribeCodeRepository.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCodeRepository.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeCodeRepositoryResponse.proto b/fixture/DescribeCodeRepositoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCodeRepositoryResponse.proto
diff --git a/fixture/DescribeCompilationJob.yaml b/fixture/DescribeCompilationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCompilationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeCompilationJobResponse.proto b/fixture/DescribeCompilationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCompilationJobResponse.proto
diff --git a/fixture/DescribeContext.yaml b/fixture/DescribeContext.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeContext.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeContextResponse.proto b/fixture/DescribeContextResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeContextResponse.proto
diff --git a/fixture/DescribeDataQualityJobDefinition.yaml b/fixture/DescribeDataQualityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataQualityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDataQualityJobDefinitionResponse.proto b/fixture/DescribeDataQualityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataQualityJobDefinitionResponse.proto
diff --git a/fixture/DescribeDevice.yaml b/fixture/DescribeDevice.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDevice.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDeviceFleet.yaml b/fixture/DescribeDeviceFleet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDeviceFleet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDeviceFleetResponse.proto b/fixture/DescribeDeviceFleetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDeviceFleetResponse.proto
diff --git a/fixture/DescribeDeviceResponse.proto b/fixture/DescribeDeviceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDeviceResponse.proto
diff --git a/fixture/DescribeDomain.yaml b/fixture/DescribeDomain.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDomain.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDomainResponse.proto b/fixture/DescribeDomainResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDomainResponse.proto
diff --git a/fixture/DescribeEdgeDeploymentPlan.yaml b/fixture/DescribeEdgeDeploymentPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEdgeDeploymentPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeEdgeDeploymentPlanResponse.proto b/fixture/DescribeEdgeDeploymentPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEdgeDeploymentPlanResponse.proto
diff --git a/fixture/DescribeEdgePackagingJob.yaml b/fixture/DescribeEdgePackagingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEdgePackagingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeEdgePackagingJobResponse.proto b/fixture/DescribeEdgePackagingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEdgePackagingJobResponse.proto
diff --git a/fixture/DescribeEndpoint.yaml b/fixture/DescribeEndpoint.yaml
--- a/fixture/DescribeEndpoint.yaml
+++ b/fixture/DescribeEndpoint.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DescribeEndpointConfig.yaml b/fixture/DescribeEndpointConfig.yaml
--- a/fixture/DescribeEndpointConfig.yaml
+++ b/fixture/DescribeEndpointConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DescribeExperiment.yaml b/fixture/DescribeExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeExperimentResponse.proto b/fixture/DescribeExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeExperimentResponse.proto
diff --git a/fixture/DescribeFeatureGroup.yaml b/fixture/DescribeFeatureGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFeatureGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeFeatureGroupResponse.proto b/fixture/DescribeFeatureGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFeatureGroupResponse.proto
diff --git a/fixture/DescribeFeatureMetadata.yaml b/fixture/DescribeFeatureMetadata.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFeatureMetadata.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeFeatureMetadataResponse.proto b/fixture/DescribeFeatureMetadataResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFeatureMetadataResponse.proto
diff --git a/fixture/DescribeFlowDefinition.yaml b/fixture/DescribeFlowDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFlowDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeFlowDefinitionResponse.proto b/fixture/DescribeFlowDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFlowDefinitionResponse.proto
diff --git a/fixture/DescribeHub.yaml b/fixture/DescribeHub.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHub.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeHubContent.yaml b/fixture/DescribeHubContent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHubContent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeHubContentResponse.proto b/fixture/DescribeHubContentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHubContentResponse.proto
diff --git a/fixture/DescribeHubResponse.proto b/fixture/DescribeHubResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHubResponse.proto
diff --git a/fixture/DescribeHumanTaskUi.yaml b/fixture/DescribeHumanTaskUi.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHumanTaskUi.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeHumanTaskUiResponse.proto b/fixture/DescribeHumanTaskUiResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHumanTaskUiResponse.proto
diff --git a/fixture/DescribeHyperParameterTuningJob.yaml b/fixture/DescribeHyperParameterTuningJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHyperParameterTuningJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeHyperParameterTuningJobResponse.proto b/fixture/DescribeHyperParameterTuningJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHyperParameterTuningJobResponse.proto
diff --git a/fixture/DescribeImage.yaml b/fixture/DescribeImage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeImageResponse.proto b/fixture/DescribeImageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImageResponse.proto
diff --git a/fixture/DescribeImageVersion.yaml b/fixture/DescribeImageVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImageVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeImageVersionResponse.proto b/fixture/DescribeImageVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImageVersionResponse.proto
diff --git a/fixture/DescribeInferenceExperiment.yaml b/fixture/DescribeInferenceExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInferenceExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeInferenceExperimentResponse.proto b/fixture/DescribeInferenceExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInferenceExperimentResponse.proto
diff --git a/fixture/DescribeInferenceRecommendationsJob.yaml b/fixture/DescribeInferenceRecommendationsJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInferenceRecommendationsJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeInferenceRecommendationsJobResponse.proto b/fixture/DescribeInferenceRecommendationsJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInferenceRecommendationsJobResponse.proto
diff --git a/fixture/DescribeLabelingJob.yaml b/fixture/DescribeLabelingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLabelingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeLabelingJobResponse.proto b/fixture/DescribeLabelingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLabelingJobResponse.proto
diff --git a/fixture/DescribeLineageGroup.yaml b/fixture/DescribeLineageGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLineageGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeLineageGroupResponse.proto b/fixture/DescribeLineageGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLineageGroupResponse.proto
diff --git a/fixture/DescribeModel.yaml b/fixture/DescribeModel.yaml
--- a/fixture/DescribeModel.yaml
+++ b/fixture/DescribeModel.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DescribeModelBiasJobDefinition.yaml b/fixture/DescribeModelBiasJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelBiasJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelBiasJobDefinitionResponse.proto b/fixture/DescribeModelBiasJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelBiasJobDefinitionResponse.proto
diff --git a/fixture/DescribeModelCard.yaml b/fixture/DescribeModelCard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelCard.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelCardExportJob.yaml b/fixture/DescribeModelCardExportJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelCardExportJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelCardExportJobResponse.proto b/fixture/DescribeModelCardExportJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelCardExportJobResponse.proto
diff --git a/fixture/DescribeModelCardResponse.proto b/fixture/DescribeModelCardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelCardResponse.proto
diff --git a/fixture/DescribeModelExplainabilityJobDefinition.yaml b/fixture/DescribeModelExplainabilityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelExplainabilityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelExplainabilityJobDefinitionResponse.proto b/fixture/DescribeModelExplainabilityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelExplainabilityJobDefinitionResponse.proto
diff --git a/fixture/DescribeModelPackage.yaml b/fixture/DescribeModelPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelPackage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelPackageGroup.yaml b/fixture/DescribeModelPackageGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelPackageGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelPackageGroupResponse.proto b/fixture/DescribeModelPackageGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelPackageGroupResponse.proto
diff --git a/fixture/DescribeModelPackageResponse.proto b/fixture/DescribeModelPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelPackageResponse.proto
diff --git a/fixture/DescribeModelQualityJobDefinition.yaml b/fixture/DescribeModelQualityJobDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelQualityJobDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelQualityJobDefinitionResponse.proto b/fixture/DescribeModelQualityJobDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelQualityJobDefinitionResponse.proto
diff --git a/fixture/DescribeMonitoringSchedule.yaml b/fixture/DescribeMonitoringSchedule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeMonitoringSchedule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeMonitoringScheduleResponse.proto b/fixture/DescribeMonitoringScheduleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeMonitoringScheduleResponse.proto
diff --git a/fixture/DescribeNotebookInstance.yaml b/fixture/DescribeNotebookInstance.yaml
--- a/fixture/DescribeNotebookInstance.yaml
+++ b/fixture/DescribeNotebookInstance.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DescribeNotebookInstanceLifecycleConfig.yaml b/fixture/DescribeNotebookInstanceLifecycleConfig.yaml
--- a/fixture/DescribeNotebookInstanceLifecycleConfig.yaml
+++ b/fixture/DescribeNotebookInstanceLifecycleConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DescribePipeline.yaml b/fixture/DescribePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribePipelineDefinitionForExecution.yaml b/fixture/DescribePipelineDefinitionForExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipelineDefinitionForExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribePipelineDefinitionForExecutionResponse.proto b/fixture/DescribePipelineDefinitionForExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipelineDefinitionForExecutionResponse.proto
diff --git a/fixture/DescribePipelineExecution.yaml b/fixture/DescribePipelineExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipelineExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribePipelineExecutionResponse.proto b/fixture/DescribePipelineExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipelineExecutionResponse.proto
diff --git a/fixture/DescribePipelineResponse.proto b/fixture/DescribePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipelineResponse.proto
diff --git a/fixture/DescribeProcessingJob.yaml b/fixture/DescribeProcessingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProcessingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeProcessingJobResponse.proto b/fixture/DescribeProcessingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProcessingJobResponse.proto
diff --git a/fixture/DescribeProject.yaml b/fixture/DescribeProject.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProject.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeProjectResponse.proto b/fixture/DescribeProjectResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProjectResponse.proto
diff --git a/fixture/DescribeSpace.yaml b/fixture/DescribeSpace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSpace.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeSpaceResponse.proto b/fixture/DescribeSpaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSpaceResponse.proto
diff --git a/fixture/DescribeStudioLifecycleConfig.yaml b/fixture/DescribeStudioLifecycleConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeStudioLifecycleConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeStudioLifecycleConfigResponse.proto b/fixture/DescribeStudioLifecycleConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeStudioLifecycleConfigResponse.proto
diff --git a/fixture/DescribeSubscribedWorkteam.yaml b/fixture/DescribeSubscribedWorkteam.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSubscribedWorkteam.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeSubscribedWorkteamResponse.proto b/fixture/DescribeSubscribedWorkteamResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSubscribedWorkteamResponse.proto
diff --git a/fixture/DescribeTrainingJob.yaml b/fixture/DescribeTrainingJob.yaml
--- a/fixture/DescribeTrainingJob.yaml
+++ b/fixture/DescribeTrainingJob.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/DescribeTransformJob.yaml b/fixture/DescribeTransformJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTransformJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeTransformJobResponse.proto b/fixture/DescribeTransformJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTransformJobResponse.proto
diff --git a/fixture/DescribeTrial.yaml b/fixture/DescribeTrial.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTrial.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeTrialComponent.yaml b/fixture/DescribeTrialComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTrialComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeTrialComponentResponse.proto b/fixture/DescribeTrialComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTrialComponentResponse.proto
diff --git a/fixture/DescribeTrialResponse.proto b/fixture/DescribeTrialResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeTrialResponse.proto
diff --git a/fixture/DescribeUserProfile.yaml b/fixture/DescribeUserProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeUserProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeUserProfileResponse.proto b/fixture/DescribeUserProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeUserProfileResponse.proto
diff --git a/fixture/DescribeWorkforce.yaml b/fixture/DescribeWorkforce.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeWorkforce.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeWorkforceResponse.proto b/fixture/DescribeWorkforceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeWorkforceResponse.proto
diff --git a/fixture/DescribeWorkteam.yaml b/fixture/DescribeWorkteam.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeWorkteam.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeWorkteamResponse.proto b/fixture/DescribeWorkteamResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeWorkteamResponse.proto
diff --git a/fixture/DisableSagemakerServicecatalogPortfolio.yaml b/fixture/DisableSagemakerServicecatalogPortfolio.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisableSagemakerServicecatalogPortfolio.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisableSagemakerServicecatalogPortfolioResponse.proto b/fixture/DisableSagemakerServicecatalogPortfolioResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisableSagemakerServicecatalogPortfolioResponse.proto
diff --git a/fixture/DisassociateTrialComponent.yaml b/fixture/DisassociateTrialComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateTrialComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DisassociateTrialComponentResponse.proto b/fixture/DisassociateTrialComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateTrialComponentResponse.proto
diff --git a/fixture/EnableSagemakerServicecatalogPortfolio.yaml b/fixture/EnableSagemakerServicecatalogPortfolio.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/EnableSagemakerServicecatalogPortfolio.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/EnableSagemakerServicecatalogPortfolioResponse.proto b/fixture/EnableSagemakerServicecatalogPortfolioResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/EnableSagemakerServicecatalogPortfolioResponse.proto
diff --git a/fixture/GetDeviceFleetReport.yaml b/fixture/GetDeviceFleetReport.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeviceFleetReport.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetDeviceFleetReportResponse.proto b/fixture/GetDeviceFleetReportResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeviceFleetReportResponse.proto
diff --git a/fixture/GetLineageGroupPolicy.yaml b/fixture/GetLineageGroupPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLineageGroupPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetLineageGroupPolicyResponse.proto b/fixture/GetLineageGroupPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLineageGroupPolicyResponse.proto
diff --git a/fixture/GetModelPackageGroupPolicy.yaml b/fixture/GetModelPackageGroupPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetModelPackageGroupPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetModelPackageGroupPolicyResponse.proto b/fixture/GetModelPackageGroupPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetModelPackageGroupPolicyResponse.proto
diff --git a/fixture/GetSagemakerServicecatalogPortfolioStatus.yaml b/fixture/GetSagemakerServicecatalogPortfolioStatus.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSagemakerServicecatalogPortfolioStatus.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSagemakerServicecatalogPortfolioStatusResponse.proto b/fixture/GetSagemakerServicecatalogPortfolioStatusResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSagemakerServicecatalogPortfolioStatusResponse.proto
diff --git a/fixture/GetSearchSuggestions.yaml b/fixture/GetSearchSuggestions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSearchSuggestions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSearchSuggestionsResponse.proto b/fixture/GetSearchSuggestionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSearchSuggestionsResponse.proto
diff --git a/fixture/ImportHubContent.yaml b/fixture/ImportHubContent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ImportHubContent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ImportHubContentResponse.proto b/fixture/ImportHubContentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ImportHubContentResponse.proto
diff --git a/fixture/ListActions.yaml b/fixture/ListActions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListActions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListActionsResponse.proto b/fixture/ListActionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListActionsResponse.proto
diff --git a/fixture/ListAlgorithms.yaml b/fixture/ListAlgorithms.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAlgorithms.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAlgorithmsResponse.proto b/fixture/ListAlgorithmsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAlgorithmsResponse.proto
diff --git a/fixture/ListAliases.yaml b/fixture/ListAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAliases.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAliasesResponse.proto b/fixture/ListAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAliasesResponse.proto
diff --git a/fixture/ListAppImageConfigs.yaml b/fixture/ListAppImageConfigs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppImageConfigs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAppImageConfigsResponse.proto b/fixture/ListAppImageConfigsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppImageConfigsResponse.proto
diff --git a/fixture/ListApps.yaml b/fixture/ListApps.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListApps.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAppsResponse.proto b/fixture/ListAppsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppsResponse.proto
diff --git a/fixture/ListArtifacts.yaml b/fixture/ListArtifacts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListArtifacts.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListArtifactsResponse.proto b/fixture/ListArtifactsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListArtifactsResponse.proto
diff --git a/fixture/ListAssociations.yaml b/fixture/ListAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAssociationsResponse.proto b/fixture/ListAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssociationsResponse.proto
diff --git a/fixture/ListAutoMLJobs.yaml b/fixture/ListAutoMLJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAutoMLJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAutoMLJobsResponse.proto b/fixture/ListAutoMLJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAutoMLJobsResponse.proto
diff --git a/fixture/ListCandidatesForAutoMLJob.yaml b/fixture/ListCandidatesForAutoMLJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCandidatesForAutoMLJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListCandidatesForAutoMLJobResponse.proto b/fixture/ListCandidatesForAutoMLJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCandidatesForAutoMLJobResponse.proto
diff --git a/fixture/ListCodeRepositories.yaml b/fixture/ListCodeRepositories.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCodeRepositories.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListCodeRepositoriesResponse.proto b/fixture/ListCodeRepositoriesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCodeRepositoriesResponse.proto
diff --git a/fixture/ListCompilationJobs.yaml b/fixture/ListCompilationJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCompilationJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListCompilationJobsResponse.proto b/fixture/ListCompilationJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCompilationJobsResponse.proto
diff --git a/fixture/ListContexts.yaml b/fixture/ListContexts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListContexts.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListContextsResponse.proto b/fixture/ListContextsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListContextsResponse.proto
diff --git a/fixture/ListDataQualityJobDefinitions.yaml b/fixture/ListDataQualityJobDefinitions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataQualityJobDefinitions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDataQualityJobDefinitionsResponse.proto b/fixture/ListDataQualityJobDefinitionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataQualityJobDefinitionsResponse.proto
diff --git a/fixture/ListDeviceFleets.yaml b/fixture/ListDeviceFleets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDeviceFleets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDeviceFleetsResponse.proto b/fixture/ListDeviceFleetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDeviceFleetsResponse.proto
diff --git a/fixture/ListDevices.yaml b/fixture/ListDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDevicesResponse.proto b/fixture/ListDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDevicesResponse.proto
diff --git a/fixture/ListDomains.yaml b/fixture/ListDomains.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDomains.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDomainsResponse.proto b/fixture/ListDomainsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDomainsResponse.proto
diff --git a/fixture/ListEdgeDeploymentPlans.yaml b/fixture/ListEdgeDeploymentPlans.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListEdgeDeploymentPlans.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListEdgeDeploymentPlansResponse.proto b/fixture/ListEdgeDeploymentPlansResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListEdgeDeploymentPlansResponse.proto
diff --git a/fixture/ListEdgePackagingJobs.yaml b/fixture/ListEdgePackagingJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListEdgePackagingJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListEdgePackagingJobsResponse.proto b/fixture/ListEdgePackagingJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListEdgePackagingJobsResponse.proto
diff --git a/fixture/ListEndpointConfigs.yaml b/fixture/ListEndpointConfigs.yaml
--- a/fixture/ListEndpointConfigs.yaml
+++ b/fixture/ListEndpointConfigs.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListEndpoints.yaml b/fixture/ListEndpoints.yaml
--- a/fixture/ListEndpoints.yaml
+++ b/fixture/ListEndpoints.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListExperiments.yaml b/fixture/ListExperiments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListExperiments.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListExperimentsResponse.proto b/fixture/ListExperimentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListExperimentsResponse.proto
diff --git a/fixture/ListFeatureGroups.yaml b/fixture/ListFeatureGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFeatureGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListFeatureGroupsResponse.proto b/fixture/ListFeatureGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFeatureGroupsResponse.proto
diff --git a/fixture/ListFlowDefinitions.yaml b/fixture/ListFlowDefinitions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFlowDefinitions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListFlowDefinitionsResponse.proto b/fixture/ListFlowDefinitionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFlowDefinitionsResponse.proto
diff --git a/fixture/ListHubContentVersions.yaml b/fixture/ListHubContentVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListHubContentVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListHubContentVersionsResponse.proto b/fixture/ListHubContentVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListHubContentVersionsResponse.proto
diff --git a/fixture/ListHubContents.yaml b/fixture/ListHubContents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListHubContents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListHubContentsResponse.proto b/fixture/ListHubContentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListHubContentsResponse.proto
diff --git a/fixture/ListHubs.yaml b/fixture/ListHubs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListHubs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListHubsResponse.proto b/fixture/ListHubsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListHubsResponse.proto
diff --git a/fixture/ListHumanTaskUis.yaml b/fixture/ListHumanTaskUis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListHumanTaskUis.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListHumanTaskUisResponse.proto b/fixture/ListHumanTaskUisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListHumanTaskUisResponse.proto
diff --git a/fixture/ListHyperParameterTuningJobs.yaml b/fixture/ListHyperParameterTuningJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListHyperParameterTuningJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListHyperParameterTuningJobsResponse.proto b/fixture/ListHyperParameterTuningJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListHyperParameterTuningJobsResponse.proto
diff --git a/fixture/ListImageVersions.yaml b/fixture/ListImageVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListImageVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListImageVersionsResponse.proto b/fixture/ListImageVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListImageVersionsResponse.proto
diff --git a/fixture/ListImages.yaml b/fixture/ListImages.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListImages.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListImagesResponse.proto b/fixture/ListImagesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListImagesResponse.proto
diff --git a/fixture/ListInferenceExperiments.yaml b/fixture/ListInferenceExperiments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceExperiments.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListInferenceExperimentsResponse.proto b/fixture/ListInferenceExperimentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceExperimentsResponse.proto
diff --git a/fixture/ListInferenceRecommendationsJobSteps.yaml b/fixture/ListInferenceRecommendationsJobSteps.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceRecommendationsJobSteps.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListInferenceRecommendationsJobStepsResponse.proto b/fixture/ListInferenceRecommendationsJobStepsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceRecommendationsJobStepsResponse.proto
diff --git a/fixture/ListInferenceRecommendationsJobs.yaml b/fixture/ListInferenceRecommendationsJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceRecommendationsJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListInferenceRecommendationsJobsResponse.proto b/fixture/ListInferenceRecommendationsJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceRecommendationsJobsResponse.proto
diff --git a/fixture/ListLabelingJobs.yaml b/fixture/ListLabelingJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelingJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListLabelingJobsForWorkteam.yaml b/fixture/ListLabelingJobsForWorkteam.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelingJobsForWorkteam.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListLabelingJobsForWorkteamResponse.proto b/fixture/ListLabelingJobsForWorkteamResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelingJobsForWorkteamResponse.proto
diff --git a/fixture/ListLabelingJobsResponse.proto b/fixture/ListLabelingJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelingJobsResponse.proto
diff --git a/fixture/ListLineageGroups.yaml b/fixture/ListLineageGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLineageGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListLineageGroupsResponse.proto b/fixture/ListLineageGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLineageGroupsResponse.proto
diff --git a/fixture/ListModelBiasJobDefinitions.yaml b/fixture/ListModelBiasJobDefinitions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelBiasJobDefinitions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelBiasJobDefinitionsResponse.proto b/fixture/ListModelBiasJobDefinitionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelBiasJobDefinitionsResponse.proto
diff --git a/fixture/ListModelCardExportJobs.yaml b/fixture/ListModelCardExportJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelCardExportJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelCardExportJobsResponse.proto b/fixture/ListModelCardExportJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelCardExportJobsResponse.proto
diff --git a/fixture/ListModelCardVersions.yaml b/fixture/ListModelCardVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelCardVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelCardVersionsResponse.proto b/fixture/ListModelCardVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelCardVersionsResponse.proto
diff --git a/fixture/ListModelCards.yaml b/fixture/ListModelCards.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelCards.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelCardsResponse.proto b/fixture/ListModelCardsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelCardsResponse.proto
diff --git a/fixture/ListModelExplainabilityJobDefinitions.yaml b/fixture/ListModelExplainabilityJobDefinitions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelExplainabilityJobDefinitions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelExplainabilityJobDefinitionsResponse.proto b/fixture/ListModelExplainabilityJobDefinitionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelExplainabilityJobDefinitionsResponse.proto
diff --git a/fixture/ListModelMetadata.yaml b/fixture/ListModelMetadata.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelMetadata.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelMetadataResponse.proto b/fixture/ListModelMetadataResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelMetadataResponse.proto
diff --git a/fixture/ListModelPackageGroups.yaml b/fixture/ListModelPackageGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelPackageGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelPackageGroupsResponse.proto b/fixture/ListModelPackageGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelPackageGroupsResponse.proto
diff --git a/fixture/ListModelPackages.yaml b/fixture/ListModelPackages.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelPackages.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelPackagesResponse.proto b/fixture/ListModelPackagesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelPackagesResponse.proto
diff --git a/fixture/ListModelQualityJobDefinitions.yaml b/fixture/ListModelQualityJobDefinitions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelQualityJobDefinitions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelQualityJobDefinitionsResponse.proto b/fixture/ListModelQualityJobDefinitionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelQualityJobDefinitionsResponse.proto
diff --git a/fixture/ListModels.yaml b/fixture/ListModels.yaml
--- a/fixture/ListModels.yaml
+++ b/fixture/ListModels.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListMonitoringAlertHistory.yaml b/fixture/ListMonitoringAlertHistory.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringAlertHistory.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMonitoringAlertHistoryResponse.proto b/fixture/ListMonitoringAlertHistoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringAlertHistoryResponse.proto
diff --git a/fixture/ListMonitoringAlerts.yaml b/fixture/ListMonitoringAlerts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringAlerts.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMonitoringAlertsResponse.proto b/fixture/ListMonitoringAlertsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringAlertsResponse.proto
diff --git a/fixture/ListMonitoringExecutions.yaml b/fixture/ListMonitoringExecutions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringExecutions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMonitoringExecutionsResponse.proto b/fixture/ListMonitoringExecutionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringExecutionsResponse.proto
diff --git a/fixture/ListMonitoringSchedules.yaml b/fixture/ListMonitoringSchedules.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringSchedules.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListMonitoringSchedulesResponse.proto b/fixture/ListMonitoringSchedulesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMonitoringSchedulesResponse.proto
diff --git a/fixture/ListNotebookInstanceLifecycleConfigs.yaml b/fixture/ListNotebookInstanceLifecycleConfigs.yaml
--- a/fixture/ListNotebookInstanceLifecycleConfigs.yaml
+++ b/fixture/ListNotebookInstanceLifecycleConfigs.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListNotebookInstances.yaml b/fixture/ListNotebookInstances.yaml
--- a/fixture/ListNotebookInstances.yaml
+++ b/fixture/ListNotebookInstances.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListPipelineExecutionSteps.yaml b/fixture/ListPipelineExecutionSteps.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineExecutionSteps.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPipelineExecutionStepsResponse.proto b/fixture/ListPipelineExecutionStepsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineExecutionStepsResponse.proto
diff --git a/fixture/ListPipelineExecutions.yaml b/fixture/ListPipelineExecutions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineExecutions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPipelineExecutionsResponse.proto b/fixture/ListPipelineExecutionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineExecutionsResponse.proto
diff --git a/fixture/ListPipelineParametersForExecution.yaml b/fixture/ListPipelineParametersForExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineParametersForExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPipelineParametersForExecutionResponse.proto b/fixture/ListPipelineParametersForExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineParametersForExecutionResponse.proto
diff --git a/fixture/ListPipelines.yaml b/fixture/ListPipelines.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelines.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPipelinesResponse.proto b/fixture/ListPipelinesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelinesResponse.proto
diff --git a/fixture/ListProcessingJobs.yaml b/fixture/ListProcessingJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListProcessingJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListProcessingJobsResponse.proto b/fixture/ListProcessingJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListProcessingJobsResponse.proto
diff --git a/fixture/ListProjects.yaml b/fixture/ListProjects.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListProjects.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListProjectsResponse.proto b/fixture/ListProjectsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListProjectsResponse.proto
diff --git a/fixture/ListSpaces.yaml b/fixture/ListSpaces.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSpaces.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListSpacesResponse.proto b/fixture/ListSpacesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSpacesResponse.proto
diff --git a/fixture/ListStageDevices.yaml b/fixture/ListStageDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListStageDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListStageDevicesResponse.proto b/fixture/ListStageDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListStageDevicesResponse.proto
diff --git a/fixture/ListStudioLifecycleConfigs.yaml b/fixture/ListStudioLifecycleConfigs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListStudioLifecycleConfigs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListStudioLifecycleConfigsResponse.proto b/fixture/ListStudioLifecycleConfigsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListStudioLifecycleConfigsResponse.proto
diff --git a/fixture/ListSubscribedWorkteams.yaml b/fixture/ListSubscribedWorkteams.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSubscribedWorkteams.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListSubscribedWorkteamsResponse.proto b/fixture/ListSubscribedWorkteamsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSubscribedWorkteamsResponse.proto
diff --git a/fixture/ListTags.yaml b/fixture/ListTags.yaml
--- a/fixture/ListTags.yaml
+++ b/fixture/ListTags.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListTrainingJobs.yaml b/fixture/ListTrainingJobs.yaml
--- a/fixture/ListTrainingJobs.yaml
+++ b/fixture/ListTrainingJobs.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/ListTrainingJobsForHyperParameterTuningJob.yaml b/fixture/ListTrainingJobsForHyperParameterTuningJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTrainingJobsForHyperParameterTuningJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTrainingJobsForHyperParameterTuningJobResponse.proto b/fixture/ListTrainingJobsForHyperParameterTuningJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTrainingJobsForHyperParameterTuningJobResponse.proto
diff --git a/fixture/ListTransformJobs.yaml b/fixture/ListTransformJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTransformJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTransformJobsResponse.proto b/fixture/ListTransformJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTransformJobsResponse.proto
diff --git a/fixture/ListTrialComponents.yaml b/fixture/ListTrialComponents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTrialComponents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTrialComponentsResponse.proto b/fixture/ListTrialComponentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTrialComponentsResponse.proto
diff --git a/fixture/ListTrials.yaml b/fixture/ListTrials.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTrials.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTrialsResponse.proto b/fixture/ListTrialsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTrialsResponse.proto
diff --git a/fixture/ListUserProfiles.yaml b/fixture/ListUserProfiles.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListUserProfiles.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListUserProfilesResponse.proto b/fixture/ListUserProfilesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListUserProfilesResponse.proto
diff --git a/fixture/ListWorkforces.yaml b/fixture/ListWorkforces.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkforces.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListWorkforcesResponse.proto b/fixture/ListWorkforcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkforcesResponse.proto
diff --git a/fixture/ListWorkteams.yaml b/fixture/ListWorkteams.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkteams.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListWorkteamsResponse.proto b/fixture/ListWorkteamsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListWorkteamsResponse.proto
diff --git a/fixture/PutModelPackageGroupPolicy.yaml b/fixture/PutModelPackageGroupPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutModelPackageGroupPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutModelPackageGroupPolicyResponse.proto b/fixture/PutModelPackageGroupPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutModelPackageGroupPolicyResponse.proto
diff --git a/fixture/QueryLineage.yaml b/fixture/QueryLineage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/QueryLineage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/QueryLineageResponse.proto b/fixture/QueryLineageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/QueryLineageResponse.proto
diff --git a/fixture/RegisterDevices.yaml b/fixture/RegisterDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RegisterDevicesResponse.proto b/fixture/RegisterDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterDevicesResponse.proto
diff --git a/fixture/RenderUiTemplate.yaml b/fixture/RenderUiTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RenderUiTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RenderUiTemplateResponse.proto b/fixture/RenderUiTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RenderUiTemplateResponse.proto
diff --git a/fixture/RetryPipelineExecution.yaml b/fixture/RetryPipelineExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RetryPipelineExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RetryPipelineExecutionResponse.proto b/fixture/RetryPipelineExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RetryPipelineExecutionResponse.proto
diff --git a/fixture/Search.yaml b/fixture/Search.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/Search.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SearchResponse.proto b/fixture/SearchResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchResponse.proto
diff --git a/fixture/SendPipelineExecutionStepFailure.yaml b/fixture/SendPipelineExecutionStepFailure.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SendPipelineExecutionStepFailure.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendPipelineExecutionStepFailureResponse.proto b/fixture/SendPipelineExecutionStepFailureResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SendPipelineExecutionStepFailureResponse.proto
diff --git a/fixture/SendPipelineExecutionStepSuccess.yaml b/fixture/SendPipelineExecutionStepSuccess.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SendPipelineExecutionStepSuccess.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendPipelineExecutionStepSuccessResponse.proto b/fixture/SendPipelineExecutionStepSuccessResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SendPipelineExecutionStepSuccessResponse.proto
diff --git a/fixture/StartEdgeDeploymentStage.yaml b/fixture/StartEdgeDeploymentStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartEdgeDeploymentStage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartEdgeDeploymentStageResponse.proto b/fixture/StartEdgeDeploymentStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartEdgeDeploymentStageResponse.proto
diff --git a/fixture/StartInferenceExperiment.yaml b/fixture/StartInferenceExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartInferenceExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartInferenceExperimentResponse.proto b/fixture/StartInferenceExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartInferenceExperimentResponse.proto
diff --git a/fixture/StartMonitoringSchedule.yaml b/fixture/StartMonitoringSchedule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartMonitoringSchedule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartMonitoringScheduleResponse.proto b/fixture/StartMonitoringScheduleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartMonitoringScheduleResponse.proto
diff --git a/fixture/StartNotebookInstance.yaml b/fixture/StartNotebookInstance.yaml
--- a/fixture/StartNotebookInstance.yaml
+++ b/fixture/StartNotebookInstance.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/StartPipelineExecution.yaml b/fixture/StartPipelineExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartPipelineExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartPipelineExecutionResponse.proto b/fixture/StartPipelineExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartPipelineExecutionResponse.proto
diff --git a/fixture/StopAutoMLJob.yaml b/fixture/StopAutoMLJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopAutoMLJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopAutoMLJobResponse.proto b/fixture/StopAutoMLJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopAutoMLJobResponse.proto
diff --git a/fixture/StopCompilationJob.yaml b/fixture/StopCompilationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopCompilationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopCompilationJobResponse.proto b/fixture/StopCompilationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopCompilationJobResponse.proto
diff --git a/fixture/StopEdgeDeploymentStage.yaml b/fixture/StopEdgeDeploymentStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopEdgeDeploymentStage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopEdgeDeploymentStageResponse.proto b/fixture/StopEdgeDeploymentStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopEdgeDeploymentStageResponse.proto
diff --git a/fixture/StopEdgePackagingJob.yaml b/fixture/StopEdgePackagingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopEdgePackagingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopEdgePackagingJobResponse.proto b/fixture/StopEdgePackagingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopEdgePackagingJobResponse.proto
diff --git a/fixture/StopHyperParameterTuningJob.yaml b/fixture/StopHyperParameterTuningJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopHyperParameterTuningJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopHyperParameterTuningJobResponse.proto b/fixture/StopHyperParameterTuningJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopHyperParameterTuningJobResponse.proto
diff --git a/fixture/StopInferenceExperiment.yaml b/fixture/StopInferenceExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopInferenceExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopInferenceExperimentResponse.proto b/fixture/StopInferenceExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopInferenceExperimentResponse.proto
diff --git a/fixture/StopInferenceRecommendationsJob.yaml b/fixture/StopInferenceRecommendationsJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopInferenceRecommendationsJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopInferenceRecommendationsJobResponse.proto b/fixture/StopInferenceRecommendationsJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopInferenceRecommendationsJobResponse.proto
diff --git a/fixture/StopLabelingJob.yaml b/fixture/StopLabelingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopLabelingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopLabelingJobResponse.proto b/fixture/StopLabelingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopLabelingJobResponse.proto
diff --git a/fixture/StopMonitoringSchedule.yaml b/fixture/StopMonitoringSchedule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopMonitoringSchedule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopMonitoringScheduleResponse.proto b/fixture/StopMonitoringScheduleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopMonitoringScheduleResponse.proto
diff --git a/fixture/StopNotebookInstance.yaml b/fixture/StopNotebookInstance.yaml
--- a/fixture/StopNotebookInstance.yaml
+++ b/fixture/StopNotebookInstance.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/StopPipelineExecution.yaml b/fixture/StopPipelineExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopPipelineExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopPipelineExecutionResponse.proto b/fixture/StopPipelineExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopPipelineExecutionResponse.proto
diff --git a/fixture/StopProcessingJob.yaml b/fixture/StopProcessingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopProcessingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopProcessingJobResponse.proto b/fixture/StopProcessingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopProcessingJobResponse.proto
diff --git a/fixture/StopTrainingJob.yaml b/fixture/StopTrainingJob.yaml
--- a/fixture/StopTrainingJob.yaml
+++ b/fixture/StopTrainingJob.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/StopTransformJob.yaml b/fixture/StopTransformJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopTransformJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopTransformJobResponse.proto b/fixture/StopTransformJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopTransformJobResponse.proto
diff --git a/fixture/UpdateAction.yaml b/fixture/UpdateAction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAction.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateActionResponse.proto b/fixture/UpdateActionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateActionResponse.proto
diff --git a/fixture/UpdateAppImageConfig.yaml b/fixture/UpdateAppImageConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAppImageConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateAppImageConfigResponse.proto b/fixture/UpdateAppImageConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAppImageConfigResponse.proto
diff --git a/fixture/UpdateArtifact.yaml b/fixture/UpdateArtifact.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateArtifact.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateArtifactResponse.proto b/fixture/UpdateArtifactResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateArtifactResponse.proto
diff --git a/fixture/UpdateCodeRepository.yaml b/fixture/UpdateCodeRepository.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateCodeRepository.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateCodeRepositoryResponse.proto b/fixture/UpdateCodeRepositoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateCodeRepositoryResponse.proto
diff --git a/fixture/UpdateContext.yaml b/fixture/UpdateContext.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateContext.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateContextResponse.proto b/fixture/UpdateContextResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateContextResponse.proto
diff --git a/fixture/UpdateDeviceFleet.yaml b/fixture/UpdateDeviceFleet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeviceFleet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateDeviceFleetResponse.proto b/fixture/UpdateDeviceFleetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeviceFleetResponse.proto
diff --git a/fixture/UpdateDevices.yaml b/fixture/UpdateDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateDevicesResponse.proto b/fixture/UpdateDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDevicesResponse.proto
diff --git a/fixture/UpdateDomain.yaml b/fixture/UpdateDomain.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDomain.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateDomainResponse.proto b/fixture/UpdateDomainResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDomainResponse.proto
diff --git a/fixture/UpdateEndpoint.yaml b/fixture/UpdateEndpoint.yaml
--- a/fixture/UpdateEndpoint.yaml
+++ b/fixture/UpdateEndpoint.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/UpdateEndpointWeightsAndCapacities.yaml b/fixture/UpdateEndpointWeightsAndCapacities.yaml
--- a/fixture/UpdateEndpointWeightsAndCapacities.yaml
+++ b/fixture/UpdateEndpointWeightsAndCapacities.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/UpdateExperiment.yaml b/fixture/UpdateExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateExperimentResponse.proto b/fixture/UpdateExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateExperimentResponse.proto
diff --git a/fixture/UpdateFeatureGroup.yaml b/fixture/UpdateFeatureGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFeatureGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateFeatureGroupResponse.proto b/fixture/UpdateFeatureGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFeatureGroupResponse.proto
diff --git a/fixture/UpdateFeatureMetadata.yaml b/fixture/UpdateFeatureMetadata.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFeatureMetadata.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateFeatureMetadataResponse.proto b/fixture/UpdateFeatureMetadataResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateFeatureMetadataResponse.proto
diff --git a/fixture/UpdateHub.yaml b/fixture/UpdateHub.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateHub.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateHubResponse.proto b/fixture/UpdateHubResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateHubResponse.proto
diff --git a/fixture/UpdateImage.yaml b/fixture/UpdateImage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateImage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateImageResponse.proto b/fixture/UpdateImageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateImageResponse.proto
diff --git a/fixture/UpdateImageVersion.yaml b/fixture/UpdateImageVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateImageVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateImageVersionResponse.proto b/fixture/UpdateImageVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateImageVersionResponse.proto
diff --git a/fixture/UpdateInferenceExperiment.yaml b/fixture/UpdateInferenceExperiment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateInferenceExperiment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateInferenceExperimentResponse.proto b/fixture/UpdateInferenceExperimentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateInferenceExperimentResponse.proto
diff --git a/fixture/UpdateModelCard.yaml b/fixture/UpdateModelCard.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateModelCard.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateModelCardResponse.proto b/fixture/UpdateModelCardResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateModelCardResponse.proto
diff --git a/fixture/UpdateModelPackage.yaml b/fixture/UpdateModelPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateModelPackage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateModelPackageResponse.proto b/fixture/UpdateModelPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateModelPackageResponse.proto
diff --git a/fixture/UpdateMonitoringAlert.yaml b/fixture/UpdateMonitoringAlert.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMonitoringAlert.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateMonitoringAlertResponse.proto b/fixture/UpdateMonitoringAlertResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMonitoringAlertResponse.proto
diff --git a/fixture/UpdateMonitoringSchedule.yaml b/fixture/UpdateMonitoringSchedule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMonitoringSchedule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateMonitoringScheduleResponse.proto b/fixture/UpdateMonitoringScheduleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMonitoringScheduleResponse.proto
diff --git a/fixture/UpdateNotebookInstance.yaml b/fixture/UpdateNotebookInstance.yaml
--- a/fixture/UpdateNotebookInstance.yaml
+++ b/fixture/UpdateNotebookInstance.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/UpdateNotebookInstanceLifecycleConfig.yaml b/fixture/UpdateNotebookInstanceLifecycleConfig.yaml
--- a/fixture/UpdateNotebookInstanceLifecycleConfig.yaml
+++ b/fixture/UpdateNotebookInstanceLifecycleConfig.yaml
@@ -1,8 +1,8 @@
 ---
 method: POST
 headers:
-  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
-  Host:                  sagemaker.us-east-1.amazonaws.com
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
   Content-Type:          application/x-www-form-urlencoded; charset=utf-8
   X-Amz-Content-SHA256:  abcdef
   X-Amz-Date:            20091028T223200Z
diff --git a/fixture/UpdatePipeline.yaml b/fixture/UpdatePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdatePipelineExecution.yaml b/fixture/UpdatePipelineExecution.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePipelineExecution.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdatePipelineExecutionResponse.proto b/fixture/UpdatePipelineExecutionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePipelineExecutionResponse.proto
diff --git a/fixture/UpdatePipelineResponse.proto b/fixture/UpdatePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePipelineResponse.proto
diff --git a/fixture/UpdateProject.yaml b/fixture/UpdateProject.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateProject.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateProjectResponse.proto b/fixture/UpdateProjectResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateProjectResponse.proto
diff --git a/fixture/UpdateSpace.yaml b/fixture/UpdateSpace.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSpace.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateSpaceResponse.proto b/fixture/UpdateSpaceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSpaceResponse.proto
diff --git a/fixture/UpdateTrainingJob.yaml b/fixture/UpdateTrainingJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTrainingJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateTrainingJobResponse.proto b/fixture/UpdateTrainingJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTrainingJobResponse.proto
diff --git a/fixture/UpdateTrial.yaml b/fixture/UpdateTrial.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTrial.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateTrialComponent.yaml b/fixture/UpdateTrialComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTrialComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateTrialComponentResponse.proto b/fixture/UpdateTrialComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTrialComponentResponse.proto
diff --git a/fixture/UpdateTrialResponse.proto b/fixture/UpdateTrialResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateTrialResponse.proto
diff --git a/fixture/UpdateUserProfile.yaml b/fixture/UpdateUserProfile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUserProfile.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateUserProfileResponse.proto b/fixture/UpdateUserProfileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateUserProfileResponse.proto
diff --git a/fixture/UpdateWorkforce.yaml b/fixture/UpdateWorkforce.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkforce.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateWorkforceResponse.proto b/fixture/UpdateWorkforceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkforceResponse.proto
diff --git a/fixture/UpdateWorkteam.yaml b/fixture/UpdateWorkteam.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkteam.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.sagemaker/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  api.sagemaker.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateWorkteamResponse.proto b/fixture/UpdateWorkteamResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateWorkteamResponse.proto
diff --git a/gen/Amazonka/SageMaker.hs b/gen/Amazonka/SageMaker.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker.hs
@@ -0,0 +1,4763 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.SageMaker
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2017-07-24@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Provides APIs for creating and managing SageMaker resources.
+--
+-- Other Resources:
+--
+-- -   <https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html#first-time-user SageMaker Developer Guide>
+--
+-- -   <https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/Welcome.html Amazon Augmented AI Runtime API Reference>
+module Amazonka.SageMaker
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** ResourceInUse
+    _ResourceInUse,
+
+    -- ** ResourceLimitExceeded
+    _ResourceLimitExceeded,
+
+    -- ** ResourceNotFound
+    _ResourceNotFound,
+
+    -- * Waiters
+    -- $waiters
+
+    -- ** EndpointDeleted
+    newEndpointDeleted,
+
+    -- ** EndpointInService
+    newEndpointInService,
+
+    -- ** ImageCreated
+    newImageCreated,
+
+    -- ** ImageDeleted
+    newImageDeleted,
+
+    -- ** ImageUpdated
+    newImageUpdated,
+
+    -- ** ImageVersionCreated
+    newImageVersionCreated,
+
+    -- ** ImageVersionDeleted
+    newImageVersionDeleted,
+
+    -- ** NotebookInstanceDeleted
+    newNotebookInstanceDeleted,
+
+    -- ** NotebookInstanceInService
+    newNotebookInstanceInService,
+
+    -- ** NotebookInstanceStopped
+    newNotebookInstanceStopped,
+
+    -- ** ProcessingJobCompletedOrStopped
+    newProcessingJobCompletedOrStopped,
+
+    -- ** TrainingJobCompletedOrStopped
+    newTrainingJobCompletedOrStopped,
+
+    -- ** TransformJobCompletedOrStopped
+    newTransformJobCompletedOrStopped,
+
+    -- * Operations
+    -- $operations
+
+    -- ** AddAssociation
+    AddAssociation (AddAssociation'),
+    newAddAssociation,
+    AddAssociationResponse (AddAssociationResponse'),
+    newAddAssociationResponse,
+
+    -- ** AddTags
+    AddTags (AddTags'),
+    newAddTags,
+    AddTagsResponse (AddTagsResponse'),
+    newAddTagsResponse,
+
+    -- ** AssociateTrialComponent
+    AssociateTrialComponent (AssociateTrialComponent'),
+    newAssociateTrialComponent,
+    AssociateTrialComponentResponse (AssociateTrialComponentResponse'),
+    newAssociateTrialComponentResponse,
+
+    -- ** BatchDescribeModelPackage
+    BatchDescribeModelPackage (BatchDescribeModelPackage'),
+    newBatchDescribeModelPackage,
+    BatchDescribeModelPackageResponse (BatchDescribeModelPackageResponse'),
+    newBatchDescribeModelPackageResponse,
+
+    -- ** CreateAction
+    CreateAction (CreateAction'),
+    newCreateAction,
+    CreateActionResponse (CreateActionResponse'),
+    newCreateActionResponse,
+
+    -- ** CreateAlgorithm
+    CreateAlgorithm (CreateAlgorithm'),
+    newCreateAlgorithm,
+    CreateAlgorithmResponse (CreateAlgorithmResponse'),
+    newCreateAlgorithmResponse,
+
+    -- ** CreateApp
+    CreateApp (CreateApp'),
+    newCreateApp,
+    CreateAppResponse (CreateAppResponse'),
+    newCreateAppResponse,
+
+    -- ** CreateAppImageConfig
+    CreateAppImageConfig (CreateAppImageConfig'),
+    newCreateAppImageConfig,
+    CreateAppImageConfigResponse (CreateAppImageConfigResponse'),
+    newCreateAppImageConfigResponse,
+
+    -- ** CreateArtifact
+    CreateArtifact (CreateArtifact'),
+    newCreateArtifact,
+    CreateArtifactResponse (CreateArtifactResponse'),
+    newCreateArtifactResponse,
+
+    -- ** CreateAutoMLJob
+    CreateAutoMLJob (CreateAutoMLJob'),
+    newCreateAutoMLJob,
+    CreateAutoMLJobResponse (CreateAutoMLJobResponse'),
+    newCreateAutoMLJobResponse,
+
+    -- ** CreateCodeRepository
+    CreateCodeRepository (CreateCodeRepository'),
+    newCreateCodeRepository,
+    CreateCodeRepositoryResponse (CreateCodeRepositoryResponse'),
+    newCreateCodeRepositoryResponse,
+
+    -- ** CreateCompilationJob
+    CreateCompilationJob (CreateCompilationJob'),
+    newCreateCompilationJob,
+    CreateCompilationJobResponse (CreateCompilationJobResponse'),
+    newCreateCompilationJobResponse,
+
+    -- ** CreateContext
+    CreateContext (CreateContext'),
+    newCreateContext,
+    CreateContextResponse (CreateContextResponse'),
+    newCreateContextResponse,
+
+    -- ** CreateDataQualityJobDefinition
+    CreateDataQualityJobDefinition (CreateDataQualityJobDefinition'),
+    newCreateDataQualityJobDefinition,
+    CreateDataQualityJobDefinitionResponse (CreateDataQualityJobDefinitionResponse'),
+    newCreateDataQualityJobDefinitionResponse,
+
+    -- ** CreateDeviceFleet
+    CreateDeviceFleet (CreateDeviceFleet'),
+    newCreateDeviceFleet,
+    CreateDeviceFleetResponse (CreateDeviceFleetResponse'),
+    newCreateDeviceFleetResponse,
+
+    -- ** CreateDomain
+    CreateDomain (CreateDomain'),
+    newCreateDomain,
+    CreateDomainResponse (CreateDomainResponse'),
+    newCreateDomainResponse,
+
+    -- ** CreateEdgeDeploymentPlan
+    CreateEdgeDeploymentPlan (CreateEdgeDeploymentPlan'),
+    newCreateEdgeDeploymentPlan,
+    CreateEdgeDeploymentPlanResponse (CreateEdgeDeploymentPlanResponse'),
+    newCreateEdgeDeploymentPlanResponse,
+
+    -- ** CreateEdgeDeploymentStage
+    CreateEdgeDeploymentStage (CreateEdgeDeploymentStage'),
+    newCreateEdgeDeploymentStage,
+    CreateEdgeDeploymentStageResponse (CreateEdgeDeploymentStageResponse'),
+    newCreateEdgeDeploymentStageResponse,
+
+    -- ** CreateEdgePackagingJob
+    CreateEdgePackagingJob (CreateEdgePackagingJob'),
+    newCreateEdgePackagingJob,
+    CreateEdgePackagingJobResponse (CreateEdgePackagingJobResponse'),
+    newCreateEdgePackagingJobResponse,
+
+    -- ** CreateEndpoint
+    CreateEndpoint (CreateEndpoint'),
+    newCreateEndpoint,
+    CreateEndpointResponse (CreateEndpointResponse'),
+    newCreateEndpointResponse,
+
+    -- ** CreateEndpointConfig
+    CreateEndpointConfig (CreateEndpointConfig'),
+    newCreateEndpointConfig,
+    CreateEndpointConfigResponse (CreateEndpointConfigResponse'),
+    newCreateEndpointConfigResponse,
+
+    -- ** CreateExperiment
+    CreateExperiment (CreateExperiment'),
+    newCreateExperiment,
+    CreateExperimentResponse (CreateExperimentResponse'),
+    newCreateExperimentResponse,
+
+    -- ** CreateFeatureGroup
+    CreateFeatureGroup (CreateFeatureGroup'),
+    newCreateFeatureGroup,
+    CreateFeatureGroupResponse (CreateFeatureGroupResponse'),
+    newCreateFeatureGroupResponse,
+
+    -- ** CreateFlowDefinition
+    CreateFlowDefinition (CreateFlowDefinition'),
+    newCreateFlowDefinition,
+    CreateFlowDefinitionResponse (CreateFlowDefinitionResponse'),
+    newCreateFlowDefinitionResponse,
+
+    -- ** CreateHub
+    CreateHub (CreateHub'),
+    newCreateHub,
+    CreateHubResponse (CreateHubResponse'),
+    newCreateHubResponse,
+
+    -- ** CreateHumanTaskUi
+    CreateHumanTaskUi (CreateHumanTaskUi'),
+    newCreateHumanTaskUi,
+    CreateHumanTaskUiResponse (CreateHumanTaskUiResponse'),
+    newCreateHumanTaskUiResponse,
+
+    -- ** CreateHyperParameterTuningJob
+    CreateHyperParameterTuningJob (CreateHyperParameterTuningJob'),
+    newCreateHyperParameterTuningJob,
+    CreateHyperParameterTuningJobResponse (CreateHyperParameterTuningJobResponse'),
+    newCreateHyperParameterTuningJobResponse,
+
+    -- ** CreateImage
+    CreateImage (CreateImage'),
+    newCreateImage,
+    CreateImageResponse (CreateImageResponse'),
+    newCreateImageResponse,
+
+    -- ** CreateImageVersion
+    CreateImageVersion (CreateImageVersion'),
+    newCreateImageVersion,
+    CreateImageVersionResponse (CreateImageVersionResponse'),
+    newCreateImageVersionResponse,
+
+    -- ** CreateInferenceExperiment
+    CreateInferenceExperiment (CreateInferenceExperiment'),
+    newCreateInferenceExperiment,
+    CreateInferenceExperimentResponse (CreateInferenceExperimentResponse'),
+    newCreateInferenceExperimentResponse,
+
+    -- ** CreateInferenceRecommendationsJob
+    CreateInferenceRecommendationsJob (CreateInferenceRecommendationsJob'),
+    newCreateInferenceRecommendationsJob,
+    CreateInferenceRecommendationsJobResponse (CreateInferenceRecommendationsJobResponse'),
+    newCreateInferenceRecommendationsJobResponse,
+
+    -- ** CreateLabelingJob
+    CreateLabelingJob (CreateLabelingJob'),
+    newCreateLabelingJob,
+    CreateLabelingJobResponse (CreateLabelingJobResponse'),
+    newCreateLabelingJobResponse,
+
+    -- ** CreateModel
+    CreateModel (CreateModel'),
+    newCreateModel,
+    CreateModelResponse (CreateModelResponse'),
+    newCreateModelResponse,
+
+    -- ** CreateModelBiasJobDefinition
+    CreateModelBiasJobDefinition (CreateModelBiasJobDefinition'),
+    newCreateModelBiasJobDefinition,
+    CreateModelBiasJobDefinitionResponse (CreateModelBiasJobDefinitionResponse'),
+    newCreateModelBiasJobDefinitionResponse,
+
+    -- ** CreateModelCard
+    CreateModelCard (CreateModelCard'),
+    newCreateModelCard,
+    CreateModelCardResponse (CreateModelCardResponse'),
+    newCreateModelCardResponse,
+
+    -- ** CreateModelCardExportJob
+    CreateModelCardExportJob (CreateModelCardExportJob'),
+    newCreateModelCardExportJob,
+    CreateModelCardExportJobResponse (CreateModelCardExportJobResponse'),
+    newCreateModelCardExportJobResponse,
+
+    -- ** CreateModelExplainabilityJobDefinition
+    CreateModelExplainabilityJobDefinition (CreateModelExplainabilityJobDefinition'),
+    newCreateModelExplainabilityJobDefinition,
+    CreateModelExplainabilityJobDefinitionResponse (CreateModelExplainabilityJobDefinitionResponse'),
+    newCreateModelExplainabilityJobDefinitionResponse,
+
+    -- ** CreateModelPackage
+    CreateModelPackage (CreateModelPackage'),
+    newCreateModelPackage,
+    CreateModelPackageResponse (CreateModelPackageResponse'),
+    newCreateModelPackageResponse,
+
+    -- ** CreateModelPackageGroup
+    CreateModelPackageGroup (CreateModelPackageGroup'),
+    newCreateModelPackageGroup,
+    CreateModelPackageGroupResponse (CreateModelPackageGroupResponse'),
+    newCreateModelPackageGroupResponse,
+
+    -- ** CreateModelQualityJobDefinition
+    CreateModelQualityJobDefinition (CreateModelQualityJobDefinition'),
+    newCreateModelQualityJobDefinition,
+    CreateModelQualityJobDefinitionResponse (CreateModelQualityJobDefinitionResponse'),
+    newCreateModelQualityJobDefinitionResponse,
+
+    -- ** CreateMonitoringSchedule
+    CreateMonitoringSchedule (CreateMonitoringSchedule'),
+    newCreateMonitoringSchedule,
+    CreateMonitoringScheduleResponse (CreateMonitoringScheduleResponse'),
+    newCreateMonitoringScheduleResponse,
+
+    -- ** CreateNotebookInstance
+    CreateNotebookInstance (CreateNotebookInstance'),
+    newCreateNotebookInstance,
+    CreateNotebookInstanceResponse (CreateNotebookInstanceResponse'),
+    newCreateNotebookInstanceResponse,
+
+    -- ** CreateNotebookInstanceLifecycleConfig
+    CreateNotebookInstanceLifecycleConfig (CreateNotebookInstanceLifecycleConfig'),
+    newCreateNotebookInstanceLifecycleConfig,
+    CreateNotebookInstanceLifecycleConfigResponse (CreateNotebookInstanceLifecycleConfigResponse'),
+    newCreateNotebookInstanceLifecycleConfigResponse,
+
+    -- ** CreatePipeline
+    CreatePipeline (CreatePipeline'),
+    newCreatePipeline,
+    CreatePipelineResponse (CreatePipelineResponse'),
+    newCreatePipelineResponse,
+
+    -- ** CreatePresignedDomainUrl
+    CreatePresignedDomainUrl (CreatePresignedDomainUrl'),
+    newCreatePresignedDomainUrl,
+    CreatePresignedDomainUrlResponse (CreatePresignedDomainUrlResponse'),
+    newCreatePresignedDomainUrlResponse,
+
+    -- ** CreatePresignedNotebookInstanceUrl
+    CreatePresignedNotebookInstanceUrl (CreatePresignedNotebookInstanceUrl'),
+    newCreatePresignedNotebookInstanceUrl,
+    CreatePresignedNotebookInstanceUrlResponse (CreatePresignedNotebookInstanceUrlResponse'),
+    newCreatePresignedNotebookInstanceUrlResponse,
+
+    -- ** CreateProcessingJob
+    CreateProcessingJob (CreateProcessingJob'),
+    newCreateProcessingJob,
+    CreateProcessingJobResponse (CreateProcessingJobResponse'),
+    newCreateProcessingJobResponse,
+
+    -- ** CreateProject
+    CreateProject (CreateProject'),
+    newCreateProject,
+    CreateProjectResponse (CreateProjectResponse'),
+    newCreateProjectResponse,
+
+    -- ** CreateSpace
+    CreateSpace (CreateSpace'),
+    newCreateSpace,
+    CreateSpaceResponse (CreateSpaceResponse'),
+    newCreateSpaceResponse,
+
+    -- ** CreateStudioLifecycleConfig
+    CreateStudioLifecycleConfig (CreateStudioLifecycleConfig'),
+    newCreateStudioLifecycleConfig,
+    CreateStudioLifecycleConfigResponse (CreateStudioLifecycleConfigResponse'),
+    newCreateStudioLifecycleConfigResponse,
+
+    -- ** CreateTrainingJob
+    CreateTrainingJob (CreateTrainingJob'),
+    newCreateTrainingJob,
+    CreateTrainingJobResponse (CreateTrainingJobResponse'),
+    newCreateTrainingJobResponse,
+
+    -- ** CreateTransformJob
+    CreateTransformJob (CreateTransformJob'),
+    newCreateTransformJob,
+    CreateTransformJobResponse (CreateTransformJobResponse'),
+    newCreateTransformJobResponse,
+
+    -- ** CreateTrial
+    CreateTrial (CreateTrial'),
+    newCreateTrial,
+    CreateTrialResponse (CreateTrialResponse'),
+    newCreateTrialResponse,
+
+    -- ** CreateTrialComponent
+    CreateTrialComponent (CreateTrialComponent'),
+    newCreateTrialComponent,
+    CreateTrialComponentResponse (CreateTrialComponentResponse'),
+    newCreateTrialComponentResponse,
+
+    -- ** CreateUserProfile
+    CreateUserProfile (CreateUserProfile'),
+    newCreateUserProfile,
+    CreateUserProfileResponse (CreateUserProfileResponse'),
+    newCreateUserProfileResponse,
+
+    -- ** CreateWorkforce
+    CreateWorkforce (CreateWorkforce'),
+    newCreateWorkforce,
+    CreateWorkforceResponse (CreateWorkforceResponse'),
+    newCreateWorkforceResponse,
+
+    -- ** CreateWorkteam
+    CreateWorkteam (CreateWorkteam'),
+    newCreateWorkteam,
+    CreateWorkteamResponse (CreateWorkteamResponse'),
+    newCreateWorkteamResponse,
+
+    -- ** DeleteAction
+    DeleteAction (DeleteAction'),
+    newDeleteAction,
+    DeleteActionResponse (DeleteActionResponse'),
+    newDeleteActionResponse,
+
+    -- ** DeleteAlgorithm
+    DeleteAlgorithm (DeleteAlgorithm'),
+    newDeleteAlgorithm,
+    DeleteAlgorithmResponse (DeleteAlgorithmResponse'),
+    newDeleteAlgorithmResponse,
+
+    -- ** DeleteApp
+    DeleteApp (DeleteApp'),
+    newDeleteApp,
+    DeleteAppResponse (DeleteAppResponse'),
+    newDeleteAppResponse,
+
+    -- ** DeleteAppImageConfig
+    DeleteAppImageConfig (DeleteAppImageConfig'),
+    newDeleteAppImageConfig,
+    DeleteAppImageConfigResponse (DeleteAppImageConfigResponse'),
+    newDeleteAppImageConfigResponse,
+
+    -- ** DeleteArtifact
+    DeleteArtifact (DeleteArtifact'),
+    newDeleteArtifact,
+    DeleteArtifactResponse (DeleteArtifactResponse'),
+    newDeleteArtifactResponse,
+
+    -- ** DeleteAssociation
+    DeleteAssociation (DeleteAssociation'),
+    newDeleteAssociation,
+    DeleteAssociationResponse (DeleteAssociationResponse'),
+    newDeleteAssociationResponse,
+
+    -- ** DeleteCodeRepository
+    DeleteCodeRepository (DeleteCodeRepository'),
+    newDeleteCodeRepository,
+    DeleteCodeRepositoryResponse (DeleteCodeRepositoryResponse'),
+    newDeleteCodeRepositoryResponse,
+
+    -- ** DeleteContext
+    DeleteContext (DeleteContext'),
+    newDeleteContext,
+    DeleteContextResponse (DeleteContextResponse'),
+    newDeleteContextResponse,
+
+    -- ** DeleteDataQualityJobDefinition
+    DeleteDataQualityJobDefinition (DeleteDataQualityJobDefinition'),
+    newDeleteDataQualityJobDefinition,
+    DeleteDataQualityJobDefinitionResponse (DeleteDataQualityJobDefinitionResponse'),
+    newDeleteDataQualityJobDefinitionResponse,
+
+    -- ** DeleteDeviceFleet
+    DeleteDeviceFleet (DeleteDeviceFleet'),
+    newDeleteDeviceFleet,
+    DeleteDeviceFleetResponse (DeleteDeviceFleetResponse'),
+    newDeleteDeviceFleetResponse,
+
+    -- ** DeleteDomain
+    DeleteDomain (DeleteDomain'),
+    newDeleteDomain,
+    DeleteDomainResponse (DeleteDomainResponse'),
+    newDeleteDomainResponse,
+
+    -- ** DeleteEdgeDeploymentPlan
+    DeleteEdgeDeploymentPlan (DeleteEdgeDeploymentPlan'),
+    newDeleteEdgeDeploymentPlan,
+    DeleteEdgeDeploymentPlanResponse (DeleteEdgeDeploymentPlanResponse'),
+    newDeleteEdgeDeploymentPlanResponse,
+
+    -- ** DeleteEdgeDeploymentStage
+    DeleteEdgeDeploymentStage (DeleteEdgeDeploymentStage'),
+    newDeleteEdgeDeploymentStage,
+    DeleteEdgeDeploymentStageResponse (DeleteEdgeDeploymentStageResponse'),
+    newDeleteEdgeDeploymentStageResponse,
+
+    -- ** DeleteEndpoint
+    DeleteEndpoint (DeleteEndpoint'),
+    newDeleteEndpoint,
+    DeleteEndpointResponse (DeleteEndpointResponse'),
+    newDeleteEndpointResponse,
+
+    -- ** DeleteEndpointConfig
+    DeleteEndpointConfig (DeleteEndpointConfig'),
+    newDeleteEndpointConfig,
+    DeleteEndpointConfigResponse (DeleteEndpointConfigResponse'),
+    newDeleteEndpointConfigResponse,
+
+    -- ** DeleteExperiment
+    DeleteExperiment (DeleteExperiment'),
+    newDeleteExperiment,
+    DeleteExperimentResponse (DeleteExperimentResponse'),
+    newDeleteExperimentResponse,
+
+    -- ** DeleteFeatureGroup
+    DeleteFeatureGroup (DeleteFeatureGroup'),
+    newDeleteFeatureGroup,
+    DeleteFeatureGroupResponse (DeleteFeatureGroupResponse'),
+    newDeleteFeatureGroupResponse,
+
+    -- ** DeleteFlowDefinition
+    DeleteFlowDefinition (DeleteFlowDefinition'),
+    newDeleteFlowDefinition,
+    DeleteFlowDefinitionResponse (DeleteFlowDefinitionResponse'),
+    newDeleteFlowDefinitionResponse,
+
+    -- ** DeleteHub
+    DeleteHub (DeleteHub'),
+    newDeleteHub,
+    DeleteHubResponse (DeleteHubResponse'),
+    newDeleteHubResponse,
+
+    -- ** DeleteHubContent
+    DeleteHubContent (DeleteHubContent'),
+    newDeleteHubContent,
+    DeleteHubContentResponse (DeleteHubContentResponse'),
+    newDeleteHubContentResponse,
+
+    -- ** DeleteHumanTaskUi
+    DeleteHumanTaskUi (DeleteHumanTaskUi'),
+    newDeleteHumanTaskUi,
+    DeleteHumanTaskUiResponse (DeleteHumanTaskUiResponse'),
+    newDeleteHumanTaskUiResponse,
+
+    -- ** DeleteImage
+    DeleteImage (DeleteImage'),
+    newDeleteImage,
+    DeleteImageResponse (DeleteImageResponse'),
+    newDeleteImageResponse,
+
+    -- ** DeleteImageVersion
+    DeleteImageVersion (DeleteImageVersion'),
+    newDeleteImageVersion,
+    DeleteImageVersionResponse (DeleteImageVersionResponse'),
+    newDeleteImageVersionResponse,
+
+    -- ** DeleteInferenceExperiment
+    DeleteInferenceExperiment (DeleteInferenceExperiment'),
+    newDeleteInferenceExperiment,
+    DeleteInferenceExperimentResponse (DeleteInferenceExperimentResponse'),
+    newDeleteInferenceExperimentResponse,
+
+    -- ** DeleteModel
+    DeleteModel (DeleteModel'),
+    newDeleteModel,
+    DeleteModelResponse (DeleteModelResponse'),
+    newDeleteModelResponse,
+
+    -- ** DeleteModelBiasJobDefinition
+    DeleteModelBiasJobDefinition (DeleteModelBiasJobDefinition'),
+    newDeleteModelBiasJobDefinition,
+    DeleteModelBiasJobDefinitionResponse (DeleteModelBiasJobDefinitionResponse'),
+    newDeleteModelBiasJobDefinitionResponse,
+
+    -- ** DeleteModelCard
+    DeleteModelCard (DeleteModelCard'),
+    newDeleteModelCard,
+    DeleteModelCardResponse (DeleteModelCardResponse'),
+    newDeleteModelCardResponse,
+
+    -- ** DeleteModelExplainabilityJobDefinition
+    DeleteModelExplainabilityJobDefinition (DeleteModelExplainabilityJobDefinition'),
+    newDeleteModelExplainabilityJobDefinition,
+    DeleteModelExplainabilityJobDefinitionResponse (DeleteModelExplainabilityJobDefinitionResponse'),
+    newDeleteModelExplainabilityJobDefinitionResponse,
+
+    -- ** DeleteModelPackage
+    DeleteModelPackage (DeleteModelPackage'),
+    newDeleteModelPackage,
+    DeleteModelPackageResponse (DeleteModelPackageResponse'),
+    newDeleteModelPackageResponse,
+
+    -- ** DeleteModelPackageGroup
+    DeleteModelPackageGroup (DeleteModelPackageGroup'),
+    newDeleteModelPackageGroup,
+    DeleteModelPackageGroupResponse (DeleteModelPackageGroupResponse'),
+    newDeleteModelPackageGroupResponse,
+
+    -- ** DeleteModelPackageGroupPolicy
+    DeleteModelPackageGroupPolicy (DeleteModelPackageGroupPolicy'),
+    newDeleteModelPackageGroupPolicy,
+    DeleteModelPackageGroupPolicyResponse (DeleteModelPackageGroupPolicyResponse'),
+    newDeleteModelPackageGroupPolicyResponse,
+
+    -- ** DeleteModelQualityJobDefinition
+    DeleteModelQualityJobDefinition (DeleteModelQualityJobDefinition'),
+    newDeleteModelQualityJobDefinition,
+    DeleteModelQualityJobDefinitionResponse (DeleteModelQualityJobDefinitionResponse'),
+    newDeleteModelQualityJobDefinitionResponse,
+
+    -- ** DeleteMonitoringSchedule
+    DeleteMonitoringSchedule (DeleteMonitoringSchedule'),
+    newDeleteMonitoringSchedule,
+    DeleteMonitoringScheduleResponse (DeleteMonitoringScheduleResponse'),
+    newDeleteMonitoringScheduleResponse,
+
+    -- ** DeleteNotebookInstance
+    DeleteNotebookInstance (DeleteNotebookInstance'),
+    newDeleteNotebookInstance,
+    DeleteNotebookInstanceResponse (DeleteNotebookInstanceResponse'),
+    newDeleteNotebookInstanceResponse,
+
+    -- ** DeleteNotebookInstanceLifecycleConfig
+    DeleteNotebookInstanceLifecycleConfig (DeleteNotebookInstanceLifecycleConfig'),
+    newDeleteNotebookInstanceLifecycleConfig,
+    DeleteNotebookInstanceLifecycleConfigResponse (DeleteNotebookInstanceLifecycleConfigResponse'),
+    newDeleteNotebookInstanceLifecycleConfigResponse,
+
+    -- ** DeletePipeline
+    DeletePipeline (DeletePipeline'),
+    newDeletePipeline,
+    DeletePipelineResponse (DeletePipelineResponse'),
+    newDeletePipelineResponse,
+
+    -- ** DeleteProject
+    DeleteProject (DeleteProject'),
+    newDeleteProject,
+    DeleteProjectResponse (DeleteProjectResponse'),
+    newDeleteProjectResponse,
+
+    -- ** DeleteSpace
+    DeleteSpace (DeleteSpace'),
+    newDeleteSpace,
+    DeleteSpaceResponse (DeleteSpaceResponse'),
+    newDeleteSpaceResponse,
+
+    -- ** DeleteStudioLifecycleConfig
+    DeleteStudioLifecycleConfig (DeleteStudioLifecycleConfig'),
+    newDeleteStudioLifecycleConfig,
+    DeleteStudioLifecycleConfigResponse (DeleteStudioLifecycleConfigResponse'),
+    newDeleteStudioLifecycleConfigResponse,
+
+    -- ** DeleteTags
+    DeleteTags (DeleteTags'),
+    newDeleteTags,
+    DeleteTagsResponse (DeleteTagsResponse'),
+    newDeleteTagsResponse,
+
+    -- ** DeleteTrial
+    DeleteTrial (DeleteTrial'),
+    newDeleteTrial,
+    DeleteTrialResponse (DeleteTrialResponse'),
+    newDeleteTrialResponse,
+
+    -- ** DeleteTrialComponent
+    DeleteTrialComponent (DeleteTrialComponent'),
+    newDeleteTrialComponent,
+    DeleteTrialComponentResponse (DeleteTrialComponentResponse'),
+    newDeleteTrialComponentResponse,
+
+    -- ** DeleteUserProfile
+    DeleteUserProfile (DeleteUserProfile'),
+    newDeleteUserProfile,
+    DeleteUserProfileResponse (DeleteUserProfileResponse'),
+    newDeleteUserProfileResponse,
+
+    -- ** DeleteWorkforce
+    DeleteWorkforce (DeleteWorkforce'),
+    newDeleteWorkforce,
+    DeleteWorkforceResponse (DeleteWorkforceResponse'),
+    newDeleteWorkforceResponse,
+
+    -- ** DeleteWorkteam
+    DeleteWorkteam (DeleteWorkteam'),
+    newDeleteWorkteam,
+    DeleteWorkteamResponse (DeleteWorkteamResponse'),
+    newDeleteWorkteamResponse,
+
+    -- ** DeregisterDevices
+    DeregisterDevices (DeregisterDevices'),
+    newDeregisterDevices,
+    DeregisterDevicesResponse (DeregisterDevicesResponse'),
+    newDeregisterDevicesResponse,
+
+    -- ** DescribeAction
+    DescribeAction (DescribeAction'),
+    newDescribeAction,
+    DescribeActionResponse (DescribeActionResponse'),
+    newDescribeActionResponse,
+
+    -- ** DescribeAlgorithm
+    DescribeAlgorithm (DescribeAlgorithm'),
+    newDescribeAlgorithm,
+    DescribeAlgorithmResponse (DescribeAlgorithmResponse'),
+    newDescribeAlgorithmResponse,
+
+    -- ** DescribeApp
+    DescribeApp (DescribeApp'),
+    newDescribeApp,
+    DescribeAppResponse (DescribeAppResponse'),
+    newDescribeAppResponse,
+
+    -- ** DescribeAppImageConfig
+    DescribeAppImageConfig (DescribeAppImageConfig'),
+    newDescribeAppImageConfig,
+    DescribeAppImageConfigResponse (DescribeAppImageConfigResponse'),
+    newDescribeAppImageConfigResponse,
+
+    -- ** DescribeArtifact
+    DescribeArtifact (DescribeArtifact'),
+    newDescribeArtifact,
+    DescribeArtifactResponse (DescribeArtifactResponse'),
+    newDescribeArtifactResponse,
+
+    -- ** DescribeAutoMLJob
+    DescribeAutoMLJob (DescribeAutoMLJob'),
+    newDescribeAutoMLJob,
+    DescribeAutoMLJobResponse (DescribeAutoMLJobResponse'),
+    newDescribeAutoMLJobResponse,
+
+    -- ** DescribeCodeRepository
+    DescribeCodeRepository (DescribeCodeRepository'),
+    newDescribeCodeRepository,
+    DescribeCodeRepositoryResponse (DescribeCodeRepositoryResponse'),
+    newDescribeCodeRepositoryResponse,
+
+    -- ** DescribeCompilationJob
+    DescribeCompilationJob (DescribeCompilationJob'),
+    newDescribeCompilationJob,
+    DescribeCompilationJobResponse (DescribeCompilationJobResponse'),
+    newDescribeCompilationJobResponse,
+
+    -- ** DescribeContext
+    DescribeContext (DescribeContext'),
+    newDescribeContext,
+    DescribeContextResponse (DescribeContextResponse'),
+    newDescribeContextResponse,
+
+    -- ** DescribeDataQualityJobDefinition
+    DescribeDataQualityJobDefinition (DescribeDataQualityJobDefinition'),
+    newDescribeDataQualityJobDefinition,
+    DescribeDataQualityJobDefinitionResponse (DescribeDataQualityJobDefinitionResponse'),
+    newDescribeDataQualityJobDefinitionResponse,
+
+    -- ** DescribeDevice
+    DescribeDevice (DescribeDevice'),
+    newDescribeDevice,
+    DescribeDeviceResponse (DescribeDeviceResponse'),
+    newDescribeDeviceResponse,
+
+    -- ** DescribeDeviceFleet
+    DescribeDeviceFleet (DescribeDeviceFleet'),
+    newDescribeDeviceFleet,
+    DescribeDeviceFleetResponse (DescribeDeviceFleetResponse'),
+    newDescribeDeviceFleetResponse,
+
+    -- ** DescribeDomain
+    DescribeDomain (DescribeDomain'),
+    newDescribeDomain,
+    DescribeDomainResponse (DescribeDomainResponse'),
+    newDescribeDomainResponse,
+
+    -- ** DescribeEdgeDeploymentPlan
+    DescribeEdgeDeploymentPlan (DescribeEdgeDeploymentPlan'),
+    newDescribeEdgeDeploymentPlan,
+    DescribeEdgeDeploymentPlanResponse (DescribeEdgeDeploymentPlanResponse'),
+    newDescribeEdgeDeploymentPlanResponse,
+
+    -- ** DescribeEdgePackagingJob
+    DescribeEdgePackagingJob (DescribeEdgePackagingJob'),
+    newDescribeEdgePackagingJob,
+    DescribeEdgePackagingJobResponse (DescribeEdgePackagingJobResponse'),
+    newDescribeEdgePackagingJobResponse,
+
+    -- ** DescribeEndpoint
+    DescribeEndpoint (DescribeEndpoint'),
+    newDescribeEndpoint,
+    DescribeEndpointResponse (DescribeEndpointResponse'),
+    newDescribeEndpointResponse,
+
+    -- ** DescribeEndpointConfig
+    DescribeEndpointConfig (DescribeEndpointConfig'),
+    newDescribeEndpointConfig,
+    DescribeEndpointConfigResponse (DescribeEndpointConfigResponse'),
+    newDescribeEndpointConfigResponse,
+
+    -- ** DescribeExperiment
+    DescribeExperiment (DescribeExperiment'),
+    newDescribeExperiment,
+    DescribeExperimentResponse (DescribeExperimentResponse'),
+    newDescribeExperimentResponse,
+
+    -- ** DescribeFeatureGroup
+    DescribeFeatureGroup (DescribeFeatureGroup'),
+    newDescribeFeatureGroup,
+    DescribeFeatureGroupResponse (DescribeFeatureGroupResponse'),
+    newDescribeFeatureGroupResponse,
+
+    -- ** DescribeFeatureMetadata
+    DescribeFeatureMetadata (DescribeFeatureMetadata'),
+    newDescribeFeatureMetadata,
+    DescribeFeatureMetadataResponse (DescribeFeatureMetadataResponse'),
+    newDescribeFeatureMetadataResponse,
+
+    -- ** DescribeFlowDefinition
+    DescribeFlowDefinition (DescribeFlowDefinition'),
+    newDescribeFlowDefinition,
+    DescribeFlowDefinitionResponse (DescribeFlowDefinitionResponse'),
+    newDescribeFlowDefinitionResponse,
+
+    -- ** DescribeHub
+    DescribeHub (DescribeHub'),
+    newDescribeHub,
+    DescribeHubResponse (DescribeHubResponse'),
+    newDescribeHubResponse,
+
+    -- ** DescribeHubContent
+    DescribeHubContent (DescribeHubContent'),
+    newDescribeHubContent,
+    DescribeHubContentResponse (DescribeHubContentResponse'),
+    newDescribeHubContentResponse,
+
+    -- ** DescribeHumanTaskUi
+    DescribeHumanTaskUi (DescribeHumanTaskUi'),
+    newDescribeHumanTaskUi,
+    DescribeHumanTaskUiResponse (DescribeHumanTaskUiResponse'),
+    newDescribeHumanTaskUiResponse,
+
+    -- ** DescribeHyperParameterTuningJob
+    DescribeHyperParameterTuningJob (DescribeHyperParameterTuningJob'),
+    newDescribeHyperParameterTuningJob,
+    DescribeHyperParameterTuningJobResponse (DescribeHyperParameterTuningJobResponse'),
+    newDescribeHyperParameterTuningJobResponse,
+
+    -- ** DescribeImage
+    DescribeImage (DescribeImage'),
+    newDescribeImage,
+    DescribeImageResponse (DescribeImageResponse'),
+    newDescribeImageResponse,
+
+    -- ** DescribeImageVersion
+    DescribeImageVersion (DescribeImageVersion'),
+    newDescribeImageVersion,
+    DescribeImageVersionResponse (DescribeImageVersionResponse'),
+    newDescribeImageVersionResponse,
+
+    -- ** DescribeInferenceExperiment
+    DescribeInferenceExperiment (DescribeInferenceExperiment'),
+    newDescribeInferenceExperiment,
+    DescribeInferenceExperimentResponse (DescribeInferenceExperimentResponse'),
+    newDescribeInferenceExperimentResponse,
+
+    -- ** DescribeInferenceRecommendationsJob
+    DescribeInferenceRecommendationsJob (DescribeInferenceRecommendationsJob'),
+    newDescribeInferenceRecommendationsJob,
+    DescribeInferenceRecommendationsJobResponse (DescribeInferenceRecommendationsJobResponse'),
+    newDescribeInferenceRecommendationsJobResponse,
+
+    -- ** DescribeLabelingJob
+    DescribeLabelingJob (DescribeLabelingJob'),
+    newDescribeLabelingJob,
+    DescribeLabelingJobResponse (DescribeLabelingJobResponse'),
+    newDescribeLabelingJobResponse,
+
+    -- ** DescribeLineageGroup
+    DescribeLineageGroup (DescribeLineageGroup'),
+    newDescribeLineageGroup,
+    DescribeLineageGroupResponse (DescribeLineageGroupResponse'),
+    newDescribeLineageGroupResponse,
+
+    -- ** DescribeModel
+    DescribeModel (DescribeModel'),
+    newDescribeModel,
+    DescribeModelResponse (DescribeModelResponse'),
+    newDescribeModelResponse,
+
+    -- ** DescribeModelBiasJobDefinition
+    DescribeModelBiasJobDefinition (DescribeModelBiasJobDefinition'),
+    newDescribeModelBiasJobDefinition,
+    DescribeModelBiasJobDefinitionResponse (DescribeModelBiasJobDefinitionResponse'),
+    newDescribeModelBiasJobDefinitionResponse,
+
+    -- ** DescribeModelCard
+    DescribeModelCard (DescribeModelCard'),
+    newDescribeModelCard,
+    DescribeModelCardResponse (DescribeModelCardResponse'),
+    newDescribeModelCardResponse,
+
+    -- ** DescribeModelCardExportJob
+    DescribeModelCardExportJob (DescribeModelCardExportJob'),
+    newDescribeModelCardExportJob,
+    DescribeModelCardExportJobResponse (DescribeModelCardExportJobResponse'),
+    newDescribeModelCardExportJobResponse,
+
+    -- ** DescribeModelExplainabilityJobDefinition
+    DescribeModelExplainabilityJobDefinition (DescribeModelExplainabilityJobDefinition'),
+    newDescribeModelExplainabilityJobDefinition,
+    DescribeModelExplainabilityJobDefinitionResponse (DescribeModelExplainabilityJobDefinitionResponse'),
+    newDescribeModelExplainabilityJobDefinitionResponse,
+
+    -- ** DescribeModelPackage
+    DescribeModelPackage (DescribeModelPackage'),
+    newDescribeModelPackage,
+    DescribeModelPackageResponse (DescribeModelPackageResponse'),
+    newDescribeModelPackageResponse,
+
+    -- ** DescribeModelPackageGroup
+    DescribeModelPackageGroup (DescribeModelPackageGroup'),
+    newDescribeModelPackageGroup,
+    DescribeModelPackageGroupResponse (DescribeModelPackageGroupResponse'),
+    newDescribeModelPackageGroupResponse,
+
+    -- ** DescribeModelQualityJobDefinition
+    DescribeModelQualityJobDefinition (DescribeModelQualityJobDefinition'),
+    newDescribeModelQualityJobDefinition,
+    DescribeModelQualityJobDefinitionResponse (DescribeModelQualityJobDefinitionResponse'),
+    newDescribeModelQualityJobDefinitionResponse,
+
+    -- ** DescribeMonitoringSchedule
+    DescribeMonitoringSchedule (DescribeMonitoringSchedule'),
+    newDescribeMonitoringSchedule,
+    DescribeMonitoringScheduleResponse (DescribeMonitoringScheduleResponse'),
+    newDescribeMonitoringScheduleResponse,
+
+    -- ** DescribeNotebookInstance
+    DescribeNotebookInstance (DescribeNotebookInstance'),
+    newDescribeNotebookInstance,
+    DescribeNotebookInstanceResponse (DescribeNotebookInstanceResponse'),
+    newDescribeNotebookInstanceResponse,
+
+    -- ** DescribeNotebookInstanceLifecycleConfig
+    DescribeNotebookInstanceLifecycleConfig (DescribeNotebookInstanceLifecycleConfig'),
+    newDescribeNotebookInstanceLifecycleConfig,
+    DescribeNotebookInstanceLifecycleConfigResponse (DescribeNotebookInstanceLifecycleConfigResponse'),
+    newDescribeNotebookInstanceLifecycleConfigResponse,
+
+    -- ** DescribePipeline
+    DescribePipeline (DescribePipeline'),
+    newDescribePipeline,
+    DescribePipelineResponse (DescribePipelineResponse'),
+    newDescribePipelineResponse,
+
+    -- ** DescribePipelineDefinitionForExecution
+    DescribePipelineDefinitionForExecution (DescribePipelineDefinitionForExecution'),
+    newDescribePipelineDefinitionForExecution,
+    DescribePipelineDefinitionForExecutionResponse (DescribePipelineDefinitionForExecutionResponse'),
+    newDescribePipelineDefinitionForExecutionResponse,
+
+    -- ** DescribePipelineExecution
+    DescribePipelineExecution (DescribePipelineExecution'),
+    newDescribePipelineExecution,
+    DescribePipelineExecutionResponse (DescribePipelineExecutionResponse'),
+    newDescribePipelineExecutionResponse,
+
+    -- ** DescribeProcessingJob
+    DescribeProcessingJob (DescribeProcessingJob'),
+    newDescribeProcessingJob,
+    DescribeProcessingJobResponse (DescribeProcessingJobResponse'),
+    newDescribeProcessingJobResponse,
+
+    -- ** DescribeProject
+    DescribeProject (DescribeProject'),
+    newDescribeProject,
+    DescribeProjectResponse (DescribeProjectResponse'),
+    newDescribeProjectResponse,
+
+    -- ** DescribeSpace
+    DescribeSpace (DescribeSpace'),
+    newDescribeSpace,
+    DescribeSpaceResponse (DescribeSpaceResponse'),
+    newDescribeSpaceResponse,
+
+    -- ** DescribeStudioLifecycleConfig
+    DescribeStudioLifecycleConfig (DescribeStudioLifecycleConfig'),
+    newDescribeStudioLifecycleConfig,
+    DescribeStudioLifecycleConfigResponse (DescribeStudioLifecycleConfigResponse'),
+    newDescribeStudioLifecycleConfigResponse,
+
+    -- ** DescribeSubscribedWorkteam
+    DescribeSubscribedWorkteam (DescribeSubscribedWorkteam'),
+    newDescribeSubscribedWorkteam,
+    DescribeSubscribedWorkteamResponse (DescribeSubscribedWorkteamResponse'),
+    newDescribeSubscribedWorkteamResponse,
+
+    -- ** DescribeTrainingJob
+    DescribeTrainingJob (DescribeTrainingJob'),
+    newDescribeTrainingJob,
+    DescribeTrainingJobResponse (DescribeTrainingJobResponse'),
+    newDescribeTrainingJobResponse,
+
+    -- ** DescribeTransformJob
+    DescribeTransformJob (DescribeTransformJob'),
+    newDescribeTransformJob,
+    DescribeTransformJobResponse (DescribeTransformJobResponse'),
+    newDescribeTransformJobResponse,
+
+    -- ** DescribeTrial
+    DescribeTrial (DescribeTrial'),
+    newDescribeTrial,
+    DescribeTrialResponse (DescribeTrialResponse'),
+    newDescribeTrialResponse,
+
+    -- ** DescribeTrialComponent
+    DescribeTrialComponent (DescribeTrialComponent'),
+    newDescribeTrialComponent,
+    DescribeTrialComponentResponse (DescribeTrialComponentResponse'),
+    newDescribeTrialComponentResponse,
+
+    -- ** DescribeUserProfile
+    DescribeUserProfile (DescribeUserProfile'),
+    newDescribeUserProfile,
+    DescribeUserProfileResponse (DescribeUserProfileResponse'),
+    newDescribeUserProfileResponse,
+
+    -- ** DescribeWorkforce
+    DescribeWorkforce (DescribeWorkforce'),
+    newDescribeWorkforce,
+    DescribeWorkforceResponse (DescribeWorkforceResponse'),
+    newDescribeWorkforceResponse,
+
+    -- ** DescribeWorkteam
+    DescribeWorkteam (DescribeWorkteam'),
+    newDescribeWorkteam,
+    DescribeWorkteamResponse (DescribeWorkteamResponse'),
+    newDescribeWorkteamResponse,
+
+    -- ** DisableSagemakerServicecatalogPortfolio
+    DisableSagemakerServicecatalogPortfolio (DisableSagemakerServicecatalogPortfolio'),
+    newDisableSagemakerServicecatalogPortfolio,
+    DisableSagemakerServicecatalogPortfolioResponse (DisableSagemakerServicecatalogPortfolioResponse'),
+    newDisableSagemakerServicecatalogPortfolioResponse,
+
+    -- ** DisassociateTrialComponent
+    DisassociateTrialComponent (DisassociateTrialComponent'),
+    newDisassociateTrialComponent,
+    DisassociateTrialComponentResponse (DisassociateTrialComponentResponse'),
+    newDisassociateTrialComponentResponse,
+
+    -- ** EnableSagemakerServicecatalogPortfolio
+    EnableSagemakerServicecatalogPortfolio (EnableSagemakerServicecatalogPortfolio'),
+    newEnableSagemakerServicecatalogPortfolio,
+    EnableSagemakerServicecatalogPortfolioResponse (EnableSagemakerServicecatalogPortfolioResponse'),
+    newEnableSagemakerServicecatalogPortfolioResponse,
+
+    -- ** GetDeviceFleetReport
+    GetDeviceFleetReport (GetDeviceFleetReport'),
+    newGetDeviceFleetReport,
+    GetDeviceFleetReportResponse (GetDeviceFleetReportResponse'),
+    newGetDeviceFleetReportResponse,
+
+    -- ** GetLineageGroupPolicy
+    GetLineageGroupPolicy (GetLineageGroupPolicy'),
+    newGetLineageGroupPolicy,
+    GetLineageGroupPolicyResponse (GetLineageGroupPolicyResponse'),
+    newGetLineageGroupPolicyResponse,
+
+    -- ** GetModelPackageGroupPolicy
+    GetModelPackageGroupPolicy (GetModelPackageGroupPolicy'),
+    newGetModelPackageGroupPolicy,
+    GetModelPackageGroupPolicyResponse (GetModelPackageGroupPolicyResponse'),
+    newGetModelPackageGroupPolicyResponse,
+
+    -- ** GetSagemakerServicecatalogPortfolioStatus
+    GetSagemakerServicecatalogPortfolioStatus (GetSagemakerServicecatalogPortfolioStatus'),
+    newGetSagemakerServicecatalogPortfolioStatus,
+    GetSagemakerServicecatalogPortfolioStatusResponse (GetSagemakerServicecatalogPortfolioStatusResponse'),
+    newGetSagemakerServicecatalogPortfolioStatusResponse,
+
+    -- ** GetSearchSuggestions
+    GetSearchSuggestions (GetSearchSuggestions'),
+    newGetSearchSuggestions,
+    GetSearchSuggestionsResponse (GetSearchSuggestionsResponse'),
+    newGetSearchSuggestionsResponse,
+
+    -- ** ImportHubContent
+    ImportHubContent (ImportHubContent'),
+    newImportHubContent,
+    ImportHubContentResponse (ImportHubContentResponse'),
+    newImportHubContentResponse,
+
+    -- ** ListActions (Paginated)
+    ListActions (ListActions'),
+    newListActions,
+    ListActionsResponse (ListActionsResponse'),
+    newListActionsResponse,
+
+    -- ** ListAlgorithms (Paginated)
+    ListAlgorithms (ListAlgorithms'),
+    newListAlgorithms,
+    ListAlgorithmsResponse (ListAlgorithmsResponse'),
+    newListAlgorithmsResponse,
+
+    -- ** ListAliases (Paginated)
+    ListAliases (ListAliases'),
+    newListAliases,
+    ListAliasesResponse (ListAliasesResponse'),
+    newListAliasesResponse,
+
+    -- ** ListAppImageConfigs (Paginated)
+    ListAppImageConfigs (ListAppImageConfigs'),
+    newListAppImageConfigs,
+    ListAppImageConfigsResponse (ListAppImageConfigsResponse'),
+    newListAppImageConfigsResponse,
+
+    -- ** ListApps (Paginated)
+    ListApps (ListApps'),
+    newListApps,
+    ListAppsResponse (ListAppsResponse'),
+    newListAppsResponse,
+
+    -- ** ListArtifacts (Paginated)
+    ListArtifacts (ListArtifacts'),
+    newListArtifacts,
+    ListArtifactsResponse (ListArtifactsResponse'),
+    newListArtifactsResponse,
+
+    -- ** ListAssociations (Paginated)
+    ListAssociations (ListAssociations'),
+    newListAssociations,
+    ListAssociationsResponse (ListAssociationsResponse'),
+    newListAssociationsResponse,
+
+    -- ** ListAutoMLJobs (Paginated)
+    ListAutoMLJobs (ListAutoMLJobs'),
+    newListAutoMLJobs,
+    ListAutoMLJobsResponse (ListAutoMLJobsResponse'),
+    newListAutoMLJobsResponse,
+
+    -- ** ListCandidatesForAutoMLJob (Paginated)
+    ListCandidatesForAutoMLJob (ListCandidatesForAutoMLJob'),
+    newListCandidatesForAutoMLJob,
+    ListCandidatesForAutoMLJobResponse (ListCandidatesForAutoMLJobResponse'),
+    newListCandidatesForAutoMLJobResponse,
+
+    -- ** ListCodeRepositories (Paginated)
+    ListCodeRepositories (ListCodeRepositories'),
+    newListCodeRepositories,
+    ListCodeRepositoriesResponse (ListCodeRepositoriesResponse'),
+    newListCodeRepositoriesResponse,
+
+    -- ** ListCompilationJobs (Paginated)
+    ListCompilationJobs (ListCompilationJobs'),
+    newListCompilationJobs,
+    ListCompilationJobsResponse (ListCompilationJobsResponse'),
+    newListCompilationJobsResponse,
+
+    -- ** ListContexts (Paginated)
+    ListContexts (ListContexts'),
+    newListContexts,
+    ListContextsResponse (ListContextsResponse'),
+    newListContextsResponse,
+
+    -- ** ListDataQualityJobDefinitions (Paginated)
+    ListDataQualityJobDefinitions (ListDataQualityJobDefinitions'),
+    newListDataQualityJobDefinitions,
+    ListDataQualityJobDefinitionsResponse (ListDataQualityJobDefinitionsResponse'),
+    newListDataQualityJobDefinitionsResponse,
+
+    -- ** ListDeviceFleets (Paginated)
+    ListDeviceFleets (ListDeviceFleets'),
+    newListDeviceFleets,
+    ListDeviceFleetsResponse (ListDeviceFleetsResponse'),
+    newListDeviceFleetsResponse,
+
+    -- ** ListDevices (Paginated)
+    ListDevices (ListDevices'),
+    newListDevices,
+    ListDevicesResponse (ListDevicesResponse'),
+    newListDevicesResponse,
+
+    -- ** ListDomains (Paginated)
+    ListDomains (ListDomains'),
+    newListDomains,
+    ListDomainsResponse (ListDomainsResponse'),
+    newListDomainsResponse,
+
+    -- ** ListEdgeDeploymentPlans (Paginated)
+    ListEdgeDeploymentPlans (ListEdgeDeploymentPlans'),
+    newListEdgeDeploymentPlans,
+    ListEdgeDeploymentPlansResponse (ListEdgeDeploymentPlansResponse'),
+    newListEdgeDeploymentPlansResponse,
+
+    -- ** ListEdgePackagingJobs (Paginated)
+    ListEdgePackagingJobs (ListEdgePackagingJobs'),
+    newListEdgePackagingJobs,
+    ListEdgePackagingJobsResponse (ListEdgePackagingJobsResponse'),
+    newListEdgePackagingJobsResponse,
+
+    -- ** ListEndpointConfigs (Paginated)
+    ListEndpointConfigs (ListEndpointConfigs'),
+    newListEndpointConfigs,
+    ListEndpointConfigsResponse (ListEndpointConfigsResponse'),
+    newListEndpointConfigsResponse,
+
+    -- ** ListEndpoints (Paginated)
+    ListEndpoints (ListEndpoints'),
+    newListEndpoints,
+    ListEndpointsResponse (ListEndpointsResponse'),
+    newListEndpointsResponse,
+
+    -- ** ListExperiments (Paginated)
+    ListExperiments (ListExperiments'),
+    newListExperiments,
+    ListExperimentsResponse (ListExperimentsResponse'),
+    newListExperimentsResponse,
+
+    -- ** ListFeatureGroups (Paginated)
+    ListFeatureGroups (ListFeatureGroups'),
+    newListFeatureGroups,
+    ListFeatureGroupsResponse (ListFeatureGroupsResponse'),
+    newListFeatureGroupsResponse,
+
+    -- ** ListFlowDefinitions (Paginated)
+    ListFlowDefinitions (ListFlowDefinitions'),
+    newListFlowDefinitions,
+    ListFlowDefinitionsResponse (ListFlowDefinitionsResponse'),
+    newListFlowDefinitionsResponse,
+
+    -- ** ListHubContentVersions
+    ListHubContentVersions (ListHubContentVersions'),
+    newListHubContentVersions,
+    ListHubContentVersionsResponse (ListHubContentVersionsResponse'),
+    newListHubContentVersionsResponse,
+
+    -- ** ListHubContents
+    ListHubContents (ListHubContents'),
+    newListHubContents,
+    ListHubContentsResponse (ListHubContentsResponse'),
+    newListHubContentsResponse,
+
+    -- ** ListHubs
+    ListHubs (ListHubs'),
+    newListHubs,
+    ListHubsResponse (ListHubsResponse'),
+    newListHubsResponse,
+
+    -- ** ListHumanTaskUis (Paginated)
+    ListHumanTaskUis (ListHumanTaskUis'),
+    newListHumanTaskUis,
+    ListHumanTaskUisResponse (ListHumanTaskUisResponse'),
+    newListHumanTaskUisResponse,
+
+    -- ** ListHyperParameterTuningJobs (Paginated)
+    ListHyperParameterTuningJobs (ListHyperParameterTuningJobs'),
+    newListHyperParameterTuningJobs,
+    ListHyperParameterTuningJobsResponse (ListHyperParameterTuningJobsResponse'),
+    newListHyperParameterTuningJobsResponse,
+
+    -- ** ListImageVersions (Paginated)
+    ListImageVersions (ListImageVersions'),
+    newListImageVersions,
+    ListImageVersionsResponse (ListImageVersionsResponse'),
+    newListImageVersionsResponse,
+
+    -- ** ListImages (Paginated)
+    ListImages (ListImages'),
+    newListImages,
+    ListImagesResponse (ListImagesResponse'),
+    newListImagesResponse,
+
+    -- ** ListInferenceExperiments (Paginated)
+    ListInferenceExperiments (ListInferenceExperiments'),
+    newListInferenceExperiments,
+    ListInferenceExperimentsResponse (ListInferenceExperimentsResponse'),
+    newListInferenceExperimentsResponse,
+
+    -- ** ListInferenceRecommendationsJobSteps (Paginated)
+    ListInferenceRecommendationsJobSteps (ListInferenceRecommendationsJobSteps'),
+    newListInferenceRecommendationsJobSteps,
+    ListInferenceRecommendationsJobStepsResponse (ListInferenceRecommendationsJobStepsResponse'),
+    newListInferenceRecommendationsJobStepsResponse,
+
+    -- ** ListInferenceRecommendationsJobs (Paginated)
+    ListInferenceRecommendationsJobs (ListInferenceRecommendationsJobs'),
+    newListInferenceRecommendationsJobs,
+    ListInferenceRecommendationsJobsResponse (ListInferenceRecommendationsJobsResponse'),
+    newListInferenceRecommendationsJobsResponse,
+
+    -- ** ListLabelingJobs (Paginated)
+    ListLabelingJobs (ListLabelingJobs'),
+    newListLabelingJobs,
+    ListLabelingJobsResponse (ListLabelingJobsResponse'),
+    newListLabelingJobsResponse,
+
+    -- ** ListLabelingJobsForWorkteam (Paginated)
+    ListLabelingJobsForWorkteam (ListLabelingJobsForWorkteam'),
+    newListLabelingJobsForWorkteam,
+    ListLabelingJobsForWorkteamResponse (ListLabelingJobsForWorkteamResponse'),
+    newListLabelingJobsForWorkteamResponse,
+
+    -- ** ListLineageGroups (Paginated)
+    ListLineageGroups (ListLineageGroups'),
+    newListLineageGroups,
+    ListLineageGroupsResponse (ListLineageGroupsResponse'),
+    newListLineageGroupsResponse,
+
+    -- ** ListModelBiasJobDefinitions (Paginated)
+    ListModelBiasJobDefinitions (ListModelBiasJobDefinitions'),
+    newListModelBiasJobDefinitions,
+    ListModelBiasJobDefinitionsResponse (ListModelBiasJobDefinitionsResponse'),
+    newListModelBiasJobDefinitionsResponse,
+
+    -- ** ListModelCardExportJobs (Paginated)
+    ListModelCardExportJobs (ListModelCardExportJobs'),
+    newListModelCardExportJobs,
+    ListModelCardExportJobsResponse (ListModelCardExportJobsResponse'),
+    newListModelCardExportJobsResponse,
+
+    -- ** ListModelCardVersions (Paginated)
+    ListModelCardVersions (ListModelCardVersions'),
+    newListModelCardVersions,
+    ListModelCardVersionsResponse (ListModelCardVersionsResponse'),
+    newListModelCardVersionsResponse,
+
+    -- ** ListModelCards (Paginated)
+    ListModelCards (ListModelCards'),
+    newListModelCards,
+    ListModelCardsResponse (ListModelCardsResponse'),
+    newListModelCardsResponse,
+
+    -- ** ListModelExplainabilityJobDefinitions (Paginated)
+    ListModelExplainabilityJobDefinitions (ListModelExplainabilityJobDefinitions'),
+    newListModelExplainabilityJobDefinitions,
+    ListModelExplainabilityJobDefinitionsResponse (ListModelExplainabilityJobDefinitionsResponse'),
+    newListModelExplainabilityJobDefinitionsResponse,
+
+    -- ** ListModelMetadata (Paginated)
+    ListModelMetadata (ListModelMetadata'),
+    newListModelMetadata,
+    ListModelMetadataResponse (ListModelMetadataResponse'),
+    newListModelMetadataResponse,
+
+    -- ** ListModelPackageGroups (Paginated)
+    ListModelPackageGroups (ListModelPackageGroups'),
+    newListModelPackageGroups,
+    ListModelPackageGroupsResponse (ListModelPackageGroupsResponse'),
+    newListModelPackageGroupsResponse,
+
+    -- ** ListModelPackages (Paginated)
+    ListModelPackages (ListModelPackages'),
+    newListModelPackages,
+    ListModelPackagesResponse (ListModelPackagesResponse'),
+    newListModelPackagesResponse,
+
+    -- ** ListModelQualityJobDefinitions (Paginated)
+    ListModelQualityJobDefinitions (ListModelQualityJobDefinitions'),
+    newListModelQualityJobDefinitions,
+    ListModelQualityJobDefinitionsResponse (ListModelQualityJobDefinitionsResponse'),
+    newListModelQualityJobDefinitionsResponse,
+
+    -- ** ListModels (Paginated)
+    ListModels (ListModels'),
+    newListModels,
+    ListModelsResponse (ListModelsResponse'),
+    newListModelsResponse,
+
+    -- ** ListMonitoringAlertHistory (Paginated)
+    ListMonitoringAlertHistory (ListMonitoringAlertHistory'),
+    newListMonitoringAlertHistory,
+    ListMonitoringAlertHistoryResponse (ListMonitoringAlertHistoryResponse'),
+    newListMonitoringAlertHistoryResponse,
+
+    -- ** ListMonitoringAlerts (Paginated)
+    ListMonitoringAlerts (ListMonitoringAlerts'),
+    newListMonitoringAlerts,
+    ListMonitoringAlertsResponse (ListMonitoringAlertsResponse'),
+    newListMonitoringAlertsResponse,
+
+    -- ** ListMonitoringExecutions (Paginated)
+    ListMonitoringExecutions (ListMonitoringExecutions'),
+    newListMonitoringExecutions,
+    ListMonitoringExecutionsResponse (ListMonitoringExecutionsResponse'),
+    newListMonitoringExecutionsResponse,
+
+    -- ** ListMonitoringSchedules (Paginated)
+    ListMonitoringSchedules (ListMonitoringSchedules'),
+    newListMonitoringSchedules,
+    ListMonitoringSchedulesResponse (ListMonitoringSchedulesResponse'),
+    newListMonitoringSchedulesResponse,
+
+    -- ** ListNotebookInstanceLifecycleConfigs (Paginated)
+    ListNotebookInstanceLifecycleConfigs (ListNotebookInstanceLifecycleConfigs'),
+    newListNotebookInstanceLifecycleConfigs,
+    ListNotebookInstanceLifecycleConfigsResponse (ListNotebookInstanceLifecycleConfigsResponse'),
+    newListNotebookInstanceLifecycleConfigsResponse,
+
+    -- ** ListNotebookInstances (Paginated)
+    ListNotebookInstances (ListNotebookInstances'),
+    newListNotebookInstances,
+    ListNotebookInstancesResponse (ListNotebookInstancesResponse'),
+    newListNotebookInstancesResponse,
+
+    -- ** ListPipelineExecutionSteps (Paginated)
+    ListPipelineExecutionSteps (ListPipelineExecutionSteps'),
+    newListPipelineExecutionSteps,
+    ListPipelineExecutionStepsResponse (ListPipelineExecutionStepsResponse'),
+    newListPipelineExecutionStepsResponse,
+
+    -- ** ListPipelineExecutions (Paginated)
+    ListPipelineExecutions (ListPipelineExecutions'),
+    newListPipelineExecutions,
+    ListPipelineExecutionsResponse (ListPipelineExecutionsResponse'),
+    newListPipelineExecutionsResponse,
+
+    -- ** ListPipelineParametersForExecution (Paginated)
+    ListPipelineParametersForExecution (ListPipelineParametersForExecution'),
+    newListPipelineParametersForExecution,
+    ListPipelineParametersForExecutionResponse (ListPipelineParametersForExecutionResponse'),
+    newListPipelineParametersForExecutionResponse,
+
+    -- ** ListPipelines (Paginated)
+    ListPipelines (ListPipelines'),
+    newListPipelines,
+    ListPipelinesResponse (ListPipelinesResponse'),
+    newListPipelinesResponse,
+
+    -- ** ListProcessingJobs (Paginated)
+    ListProcessingJobs (ListProcessingJobs'),
+    newListProcessingJobs,
+    ListProcessingJobsResponse (ListProcessingJobsResponse'),
+    newListProcessingJobsResponse,
+
+    -- ** ListProjects
+    ListProjects (ListProjects'),
+    newListProjects,
+    ListProjectsResponse (ListProjectsResponse'),
+    newListProjectsResponse,
+
+    -- ** ListSpaces (Paginated)
+    ListSpaces (ListSpaces'),
+    newListSpaces,
+    ListSpacesResponse (ListSpacesResponse'),
+    newListSpacesResponse,
+
+    -- ** ListStageDevices (Paginated)
+    ListStageDevices (ListStageDevices'),
+    newListStageDevices,
+    ListStageDevicesResponse (ListStageDevicesResponse'),
+    newListStageDevicesResponse,
+
+    -- ** ListStudioLifecycleConfigs (Paginated)
+    ListStudioLifecycleConfigs (ListStudioLifecycleConfigs'),
+    newListStudioLifecycleConfigs,
+    ListStudioLifecycleConfigsResponse (ListStudioLifecycleConfigsResponse'),
+    newListStudioLifecycleConfigsResponse,
+
+    -- ** ListSubscribedWorkteams (Paginated)
+    ListSubscribedWorkteams (ListSubscribedWorkteams'),
+    newListSubscribedWorkteams,
+    ListSubscribedWorkteamsResponse (ListSubscribedWorkteamsResponse'),
+    newListSubscribedWorkteamsResponse,
+
+    -- ** ListTags (Paginated)
+    ListTags (ListTags'),
+    newListTags,
+    ListTagsResponse (ListTagsResponse'),
+    newListTagsResponse,
+
+    -- ** ListTrainingJobs (Paginated)
+    ListTrainingJobs (ListTrainingJobs'),
+    newListTrainingJobs,
+    ListTrainingJobsResponse (ListTrainingJobsResponse'),
+    newListTrainingJobsResponse,
+
+    -- ** ListTrainingJobsForHyperParameterTuningJob (Paginated)
+    ListTrainingJobsForHyperParameterTuningJob (ListTrainingJobsForHyperParameterTuningJob'),
+    newListTrainingJobsForHyperParameterTuningJob,
+    ListTrainingJobsForHyperParameterTuningJobResponse (ListTrainingJobsForHyperParameterTuningJobResponse'),
+    newListTrainingJobsForHyperParameterTuningJobResponse,
+
+    -- ** ListTransformJobs (Paginated)
+    ListTransformJobs (ListTransformJobs'),
+    newListTransformJobs,
+    ListTransformJobsResponse (ListTransformJobsResponse'),
+    newListTransformJobsResponse,
+
+    -- ** ListTrialComponents (Paginated)
+    ListTrialComponents (ListTrialComponents'),
+    newListTrialComponents,
+    ListTrialComponentsResponse (ListTrialComponentsResponse'),
+    newListTrialComponentsResponse,
+
+    -- ** ListTrials (Paginated)
+    ListTrials (ListTrials'),
+    newListTrials,
+    ListTrialsResponse (ListTrialsResponse'),
+    newListTrialsResponse,
+
+    -- ** ListUserProfiles (Paginated)
+    ListUserProfiles (ListUserProfiles'),
+    newListUserProfiles,
+    ListUserProfilesResponse (ListUserProfilesResponse'),
+    newListUserProfilesResponse,
+
+    -- ** ListWorkforces (Paginated)
+    ListWorkforces (ListWorkforces'),
+    newListWorkforces,
+    ListWorkforcesResponse (ListWorkforcesResponse'),
+    newListWorkforcesResponse,
+
+    -- ** ListWorkteams (Paginated)
+    ListWorkteams (ListWorkteams'),
+    newListWorkteams,
+    ListWorkteamsResponse (ListWorkteamsResponse'),
+    newListWorkteamsResponse,
+
+    -- ** PutModelPackageGroupPolicy
+    PutModelPackageGroupPolicy (PutModelPackageGroupPolicy'),
+    newPutModelPackageGroupPolicy,
+    PutModelPackageGroupPolicyResponse (PutModelPackageGroupPolicyResponse'),
+    newPutModelPackageGroupPolicyResponse,
+
+    -- ** QueryLineage
+    QueryLineage (QueryLineage'),
+    newQueryLineage,
+    QueryLineageResponse (QueryLineageResponse'),
+    newQueryLineageResponse,
+
+    -- ** RegisterDevices
+    RegisterDevices (RegisterDevices'),
+    newRegisterDevices,
+    RegisterDevicesResponse (RegisterDevicesResponse'),
+    newRegisterDevicesResponse,
+
+    -- ** RenderUiTemplate
+    RenderUiTemplate (RenderUiTemplate'),
+    newRenderUiTemplate,
+    RenderUiTemplateResponse (RenderUiTemplateResponse'),
+    newRenderUiTemplateResponse,
+
+    -- ** RetryPipelineExecution
+    RetryPipelineExecution (RetryPipelineExecution'),
+    newRetryPipelineExecution,
+    RetryPipelineExecutionResponse (RetryPipelineExecutionResponse'),
+    newRetryPipelineExecutionResponse,
+
+    -- ** Search (Paginated)
+    Search (Search'),
+    newSearch,
+    SearchResponse (SearchResponse'),
+    newSearchResponse,
+
+    -- ** SendPipelineExecutionStepFailure
+    SendPipelineExecutionStepFailure (SendPipelineExecutionStepFailure'),
+    newSendPipelineExecutionStepFailure,
+    SendPipelineExecutionStepFailureResponse (SendPipelineExecutionStepFailureResponse'),
+    newSendPipelineExecutionStepFailureResponse,
+
+    -- ** SendPipelineExecutionStepSuccess
+    SendPipelineExecutionStepSuccess (SendPipelineExecutionStepSuccess'),
+    newSendPipelineExecutionStepSuccess,
+    SendPipelineExecutionStepSuccessResponse (SendPipelineExecutionStepSuccessResponse'),
+    newSendPipelineExecutionStepSuccessResponse,
+
+    -- ** StartEdgeDeploymentStage
+    StartEdgeDeploymentStage (StartEdgeDeploymentStage'),
+    newStartEdgeDeploymentStage,
+    StartEdgeDeploymentStageResponse (StartEdgeDeploymentStageResponse'),
+    newStartEdgeDeploymentStageResponse,
+
+    -- ** StartInferenceExperiment
+    StartInferenceExperiment (StartInferenceExperiment'),
+    newStartInferenceExperiment,
+    StartInferenceExperimentResponse (StartInferenceExperimentResponse'),
+    newStartInferenceExperimentResponse,
+
+    -- ** StartMonitoringSchedule
+    StartMonitoringSchedule (StartMonitoringSchedule'),
+    newStartMonitoringSchedule,
+    StartMonitoringScheduleResponse (StartMonitoringScheduleResponse'),
+    newStartMonitoringScheduleResponse,
+
+    -- ** StartNotebookInstance
+    StartNotebookInstance (StartNotebookInstance'),
+    newStartNotebookInstance,
+    StartNotebookInstanceResponse (StartNotebookInstanceResponse'),
+    newStartNotebookInstanceResponse,
+
+    -- ** StartPipelineExecution
+    StartPipelineExecution (StartPipelineExecution'),
+    newStartPipelineExecution,
+    StartPipelineExecutionResponse (StartPipelineExecutionResponse'),
+    newStartPipelineExecutionResponse,
+
+    -- ** StopAutoMLJob
+    StopAutoMLJob (StopAutoMLJob'),
+    newStopAutoMLJob,
+    StopAutoMLJobResponse (StopAutoMLJobResponse'),
+    newStopAutoMLJobResponse,
+
+    -- ** StopCompilationJob
+    StopCompilationJob (StopCompilationJob'),
+    newStopCompilationJob,
+    StopCompilationJobResponse (StopCompilationJobResponse'),
+    newStopCompilationJobResponse,
+
+    -- ** StopEdgeDeploymentStage
+    StopEdgeDeploymentStage (StopEdgeDeploymentStage'),
+    newStopEdgeDeploymentStage,
+    StopEdgeDeploymentStageResponse (StopEdgeDeploymentStageResponse'),
+    newStopEdgeDeploymentStageResponse,
+
+    -- ** StopEdgePackagingJob
+    StopEdgePackagingJob (StopEdgePackagingJob'),
+    newStopEdgePackagingJob,
+    StopEdgePackagingJobResponse (StopEdgePackagingJobResponse'),
+    newStopEdgePackagingJobResponse,
+
+    -- ** StopHyperParameterTuningJob
+    StopHyperParameterTuningJob (StopHyperParameterTuningJob'),
+    newStopHyperParameterTuningJob,
+    StopHyperParameterTuningJobResponse (StopHyperParameterTuningJobResponse'),
+    newStopHyperParameterTuningJobResponse,
+
+    -- ** StopInferenceExperiment
+    StopInferenceExperiment (StopInferenceExperiment'),
+    newStopInferenceExperiment,
+    StopInferenceExperimentResponse (StopInferenceExperimentResponse'),
+    newStopInferenceExperimentResponse,
+
+    -- ** StopInferenceRecommendationsJob
+    StopInferenceRecommendationsJob (StopInferenceRecommendationsJob'),
+    newStopInferenceRecommendationsJob,
+    StopInferenceRecommendationsJobResponse (StopInferenceRecommendationsJobResponse'),
+    newStopInferenceRecommendationsJobResponse,
+
+    -- ** StopLabelingJob
+    StopLabelingJob (StopLabelingJob'),
+    newStopLabelingJob,
+    StopLabelingJobResponse (StopLabelingJobResponse'),
+    newStopLabelingJobResponse,
+
+    -- ** StopMonitoringSchedule
+    StopMonitoringSchedule (StopMonitoringSchedule'),
+    newStopMonitoringSchedule,
+    StopMonitoringScheduleResponse (StopMonitoringScheduleResponse'),
+    newStopMonitoringScheduleResponse,
+
+    -- ** StopNotebookInstance
+    StopNotebookInstance (StopNotebookInstance'),
+    newStopNotebookInstance,
+    StopNotebookInstanceResponse (StopNotebookInstanceResponse'),
+    newStopNotebookInstanceResponse,
+
+    -- ** StopPipelineExecution
+    StopPipelineExecution (StopPipelineExecution'),
+    newStopPipelineExecution,
+    StopPipelineExecutionResponse (StopPipelineExecutionResponse'),
+    newStopPipelineExecutionResponse,
+
+    -- ** StopProcessingJob
+    StopProcessingJob (StopProcessingJob'),
+    newStopProcessingJob,
+    StopProcessingJobResponse (StopProcessingJobResponse'),
+    newStopProcessingJobResponse,
+
+    -- ** StopTrainingJob
+    StopTrainingJob (StopTrainingJob'),
+    newStopTrainingJob,
+    StopTrainingJobResponse (StopTrainingJobResponse'),
+    newStopTrainingJobResponse,
+
+    -- ** StopTransformJob
+    StopTransformJob (StopTransformJob'),
+    newStopTransformJob,
+    StopTransformJobResponse (StopTransformJobResponse'),
+    newStopTransformJobResponse,
+
+    -- ** UpdateAction
+    UpdateAction (UpdateAction'),
+    newUpdateAction,
+    UpdateActionResponse (UpdateActionResponse'),
+    newUpdateActionResponse,
+
+    -- ** UpdateAppImageConfig
+    UpdateAppImageConfig (UpdateAppImageConfig'),
+    newUpdateAppImageConfig,
+    UpdateAppImageConfigResponse (UpdateAppImageConfigResponse'),
+    newUpdateAppImageConfigResponse,
+
+    -- ** UpdateArtifact
+    UpdateArtifact (UpdateArtifact'),
+    newUpdateArtifact,
+    UpdateArtifactResponse (UpdateArtifactResponse'),
+    newUpdateArtifactResponse,
+
+    -- ** UpdateCodeRepository
+    UpdateCodeRepository (UpdateCodeRepository'),
+    newUpdateCodeRepository,
+    UpdateCodeRepositoryResponse (UpdateCodeRepositoryResponse'),
+    newUpdateCodeRepositoryResponse,
+
+    -- ** UpdateContext
+    UpdateContext (UpdateContext'),
+    newUpdateContext,
+    UpdateContextResponse (UpdateContextResponse'),
+    newUpdateContextResponse,
+
+    -- ** UpdateDeviceFleet
+    UpdateDeviceFleet (UpdateDeviceFleet'),
+    newUpdateDeviceFleet,
+    UpdateDeviceFleetResponse (UpdateDeviceFleetResponse'),
+    newUpdateDeviceFleetResponse,
+
+    -- ** UpdateDevices
+    UpdateDevices (UpdateDevices'),
+    newUpdateDevices,
+    UpdateDevicesResponse (UpdateDevicesResponse'),
+    newUpdateDevicesResponse,
+
+    -- ** UpdateDomain
+    UpdateDomain (UpdateDomain'),
+    newUpdateDomain,
+    UpdateDomainResponse (UpdateDomainResponse'),
+    newUpdateDomainResponse,
+
+    -- ** UpdateEndpoint
+    UpdateEndpoint (UpdateEndpoint'),
+    newUpdateEndpoint,
+    UpdateEndpointResponse (UpdateEndpointResponse'),
+    newUpdateEndpointResponse,
+
+    -- ** UpdateEndpointWeightsAndCapacities
+    UpdateEndpointWeightsAndCapacities (UpdateEndpointWeightsAndCapacities'),
+    newUpdateEndpointWeightsAndCapacities,
+    UpdateEndpointWeightsAndCapacitiesResponse (UpdateEndpointWeightsAndCapacitiesResponse'),
+    newUpdateEndpointWeightsAndCapacitiesResponse,
+
+    -- ** UpdateExperiment
+    UpdateExperiment (UpdateExperiment'),
+    newUpdateExperiment,
+    UpdateExperimentResponse (UpdateExperimentResponse'),
+    newUpdateExperimentResponse,
+
+    -- ** UpdateFeatureGroup
+    UpdateFeatureGroup (UpdateFeatureGroup'),
+    newUpdateFeatureGroup,
+    UpdateFeatureGroupResponse (UpdateFeatureGroupResponse'),
+    newUpdateFeatureGroupResponse,
+
+    -- ** UpdateFeatureMetadata
+    UpdateFeatureMetadata (UpdateFeatureMetadata'),
+    newUpdateFeatureMetadata,
+    UpdateFeatureMetadataResponse (UpdateFeatureMetadataResponse'),
+    newUpdateFeatureMetadataResponse,
+
+    -- ** UpdateHub
+    UpdateHub (UpdateHub'),
+    newUpdateHub,
+    UpdateHubResponse (UpdateHubResponse'),
+    newUpdateHubResponse,
+
+    -- ** UpdateImage
+    UpdateImage (UpdateImage'),
+    newUpdateImage,
+    UpdateImageResponse (UpdateImageResponse'),
+    newUpdateImageResponse,
+
+    -- ** UpdateImageVersion
+    UpdateImageVersion (UpdateImageVersion'),
+    newUpdateImageVersion,
+    UpdateImageVersionResponse (UpdateImageVersionResponse'),
+    newUpdateImageVersionResponse,
+
+    -- ** UpdateInferenceExperiment
+    UpdateInferenceExperiment (UpdateInferenceExperiment'),
+    newUpdateInferenceExperiment,
+    UpdateInferenceExperimentResponse (UpdateInferenceExperimentResponse'),
+    newUpdateInferenceExperimentResponse,
+
+    -- ** UpdateModelCard
+    UpdateModelCard (UpdateModelCard'),
+    newUpdateModelCard,
+    UpdateModelCardResponse (UpdateModelCardResponse'),
+    newUpdateModelCardResponse,
+
+    -- ** UpdateModelPackage
+    UpdateModelPackage (UpdateModelPackage'),
+    newUpdateModelPackage,
+    UpdateModelPackageResponse (UpdateModelPackageResponse'),
+    newUpdateModelPackageResponse,
+
+    -- ** UpdateMonitoringAlert
+    UpdateMonitoringAlert (UpdateMonitoringAlert'),
+    newUpdateMonitoringAlert,
+    UpdateMonitoringAlertResponse (UpdateMonitoringAlertResponse'),
+    newUpdateMonitoringAlertResponse,
+
+    -- ** UpdateMonitoringSchedule
+    UpdateMonitoringSchedule (UpdateMonitoringSchedule'),
+    newUpdateMonitoringSchedule,
+    UpdateMonitoringScheduleResponse (UpdateMonitoringScheduleResponse'),
+    newUpdateMonitoringScheduleResponse,
+
+    -- ** UpdateNotebookInstance
+    UpdateNotebookInstance (UpdateNotebookInstance'),
+    newUpdateNotebookInstance,
+    UpdateNotebookInstanceResponse (UpdateNotebookInstanceResponse'),
+    newUpdateNotebookInstanceResponse,
+
+    -- ** UpdateNotebookInstanceLifecycleConfig
+    UpdateNotebookInstanceLifecycleConfig (UpdateNotebookInstanceLifecycleConfig'),
+    newUpdateNotebookInstanceLifecycleConfig,
+    UpdateNotebookInstanceLifecycleConfigResponse (UpdateNotebookInstanceLifecycleConfigResponse'),
+    newUpdateNotebookInstanceLifecycleConfigResponse,
+
+    -- ** UpdatePipeline
+    UpdatePipeline (UpdatePipeline'),
+    newUpdatePipeline,
+    UpdatePipelineResponse (UpdatePipelineResponse'),
+    newUpdatePipelineResponse,
+
+    -- ** UpdatePipelineExecution
+    UpdatePipelineExecution (UpdatePipelineExecution'),
+    newUpdatePipelineExecution,
+    UpdatePipelineExecutionResponse (UpdatePipelineExecutionResponse'),
+    newUpdatePipelineExecutionResponse,
+
+    -- ** UpdateProject
+    UpdateProject (UpdateProject'),
+    newUpdateProject,
+    UpdateProjectResponse (UpdateProjectResponse'),
+    newUpdateProjectResponse,
+
+    -- ** UpdateSpace
+    UpdateSpace (UpdateSpace'),
+    newUpdateSpace,
+    UpdateSpaceResponse (UpdateSpaceResponse'),
+    newUpdateSpaceResponse,
+
+    -- ** UpdateTrainingJob
+    UpdateTrainingJob (UpdateTrainingJob'),
+    newUpdateTrainingJob,
+    UpdateTrainingJobResponse (UpdateTrainingJobResponse'),
+    newUpdateTrainingJobResponse,
+
+    -- ** UpdateTrial
+    UpdateTrial (UpdateTrial'),
+    newUpdateTrial,
+    UpdateTrialResponse (UpdateTrialResponse'),
+    newUpdateTrialResponse,
+
+    -- ** UpdateTrialComponent
+    UpdateTrialComponent (UpdateTrialComponent'),
+    newUpdateTrialComponent,
+    UpdateTrialComponentResponse (UpdateTrialComponentResponse'),
+    newUpdateTrialComponentResponse,
+
+    -- ** UpdateUserProfile
+    UpdateUserProfile (UpdateUserProfile'),
+    newUpdateUserProfile,
+    UpdateUserProfileResponse (UpdateUserProfileResponse'),
+    newUpdateUserProfileResponse,
+
+    -- ** UpdateWorkforce
+    UpdateWorkforce (UpdateWorkforce'),
+    newUpdateWorkforce,
+    UpdateWorkforceResponse (UpdateWorkforceResponse'),
+    newUpdateWorkforceResponse,
+
+    -- ** UpdateWorkteam
+    UpdateWorkteam (UpdateWorkteam'),
+    newUpdateWorkteam,
+    UpdateWorkteamResponse (UpdateWorkteamResponse'),
+    newUpdateWorkteamResponse,
+
+    -- * Types
+
+    -- ** ActionStatus
+    ActionStatus (..),
+
+    -- ** AlgorithmSortBy
+    AlgorithmSortBy (..),
+
+    -- ** AlgorithmStatus
+    AlgorithmStatus (..),
+
+    -- ** AppImageConfigSortKey
+    AppImageConfigSortKey (..),
+
+    -- ** AppInstanceType
+    AppInstanceType (..),
+
+    -- ** AppNetworkAccessType
+    AppNetworkAccessType (..),
+
+    -- ** AppSecurityGroupManagement
+    AppSecurityGroupManagement (..),
+
+    -- ** AppSortKey
+    AppSortKey (..),
+
+    -- ** AppStatus
+    AppStatus (..),
+
+    -- ** AppType
+    AppType (..),
+
+    -- ** ArtifactSourceIdType
+    ArtifactSourceIdType (..),
+
+    -- ** AssemblyType
+    AssemblyType (..),
+
+    -- ** AssociationEdgeType
+    AssociationEdgeType (..),
+
+    -- ** AthenaResultCompressionType
+    AthenaResultCompressionType (..),
+
+    -- ** AthenaResultFormat
+    AthenaResultFormat (..),
+
+    -- ** AuthMode
+    AuthMode (..),
+
+    -- ** AutoMLChannelType
+    AutoMLChannelType (..),
+
+    -- ** AutoMLJobObjectiveType
+    AutoMLJobObjectiveType (..),
+
+    -- ** AutoMLJobSecondaryStatus
+    AutoMLJobSecondaryStatus (..),
+
+    -- ** AutoMLJobStatus
+    AutoMLJobStatus (..),
+
+    -- ** AutoMLMetricEnum
+    AutoMLMetricEnum (..),
+
+    -- ** AutoMLMetricExtendedEnum
+    AutoMLMetricExtendedEnum (..),
+
+    -- ** AutoMLMode
+    AutoMLMode (..),
+
+    -- ** AutoMLS3DataType
+    AutoMLS3DataType (..),
+
+    -- ** AutoMLSortBy
+    AutoMLSortBy (..),
+
+    -- ** AutoMLSortOrder
+    AutoMLSortOrder (..),
+
+    -- ** AwsManagedHumanLoopRequestSource
+    AwsManagedHumanLoopRequestSource (..),
+
+    -- ** BatchStrategy
+    BatchStrategy (..),
+
+    -- ** BooleanOperator
+    BooleanOperator (..),
+
+    -- ** CandidateSortBy
+    CandidateSortBy (..),
+
+    -- ** CandidateStatus
+    CandidateStatus (..),
+
+    -- ** CandidateStepType
+    CandidateStepType (..),
+
+    -- ** CapacitySizeType
+    CapacitySizeType (..),
+
+    -- ** CaptureMode
+    CaptureMode (..),
+
+    -- ** CaptureStatus
+    CaptureStatus (..),
+
+    -- ** ClarifyFeatureType
+    ClarifyFeatureType (..),
+
+    -- ** ClarifyTextGranularity
+    ClarifyTextGranularity (..),
+
+    -- ** ClarifyTextLanguage
+    ClarifyTextLanguage (..),
+
+    -- ** CodeRepositorySortBy
+    CodeRepositorySortBy (..),
+
+    -- ** CodeRepositorySortOrder
+    CodeRepositorySortOrder (..),
+
+    -- ** CompilationJobStatus
+    CompilationJobStatus (..),
+
+    -- ** CompressionType
+    CompressionType (..),
+
+    -- ** ConditionOutcome
+    ConditionOutcome (..),
+
+    -- ** ContainerMode
+    ContainerMode (..),
+
+    -- ** ContentClassifier
+    ContentClassifier (..),
+
+    -- ** DataDistributionType
+    DataDistributionType (..),
+
+    -- ** DetailedAlgorithmStatus
+    DetailedAlgorithmStatus (..),
+
+    -- ** DetailedModelPackageStatus
+    DetailedModelPackageStatus (..),
+
+    -- ** DeviceDeploymentStatus
+    DeviceDeploymentStatus (..),
+
+    -- ** DeviceSubsetType
+    DeviceSubsetType (..),
+
+    -- ** DirectInternetAccess
+    DirectInternetAccess (..),
+
+    -- ** Direction
+    Direction (..),
+
+    -- ** DomainStatus
+    DomainStatus (..),
+
+    -- ** EdgePackagingJobStatus
+    EdgePackagingJobStatus (..),
+
+    -- ** EdgePresetDeploymentStatus
+    EdgePresetDeploymentStatus (..),
+
+    -- ** EdgePresetDeploymentType
+    EdgePresetDeploymentType (..),
+
+    -- ** EndpointConfigSortKey
+    EndpointConfigSortKey (..),
+
+    -- ** EndpointSortKey
+    EndpointSortKey (..),
+
+    -- ** EndpointStatus
+    EndpointStatus (..),
+
+    -- ** ExecutionRoleIdentityConfig
+    ExecutionRoleIdentityConfig (..),
+
+    -- ** ExecutionStatus
+    ExecutionStatus (..),
+
+    -- ** FailureHandlingPolicy
+    FailureHandlingPolicy (..),
+
+    -- ** FeatureGroupSortBy
+    FeatureGroupSortBy (..),
+
+    -- ** FeatureGroupSortOrder
+    FeatureGroupSortOrder (..),
+
+    -- ** FeatureGroupStatus
+    FeatureGroupStatus (..),
+
+    -- ** FeatureStatus
+    FeatureStatus (..),
+
+    -- ** FeatureType
+    FeatureType (..),
+
+    -- ** FileSystemAccessMode
+    FileSystemAccessMode (..),
+
+    -- ** FileSystemType
+    FileSystemType (..),
+
+    -- ** FlowDefinitionStatus
+    FlowDefinitionStatus (..),
+
+    -- ** Framework
+    Framework (..),
+
+    -- ** HubContentSortBy
+    HubContentSortBy (..),
+
+    -- ** HubContentStatus
+    HubContentStatus (..),
+
+    -- ** HubContentType
+    HubContentType (..),
+
+    -- ** HubSortBy
+    HubSortBy (..),
+
+    -- ** HubStatus
+    HubStatus (..),
+
+    -- ** HumanTaskUiStatus
+    HumanTaskUiStatus (..),
+
+    -- ** HyperParameterScalingType
+    HyperParameterScalingType (..),
+
+    -- ** HyperParameterTuningAllocationStrategy
+    HyperParameterTuningAllocationStrategy (..),
+
+    -- ** HyperParameterTuningJobObjectiveType
+    HyperParameterTuningJobObjectiveType (..),
+
+    -- ** HyperParameterTuningJobSortByOptions
+    HyperParameterTuningJobSortByOptions (..),
+
+    -- ** HyperParameterTuningJobStatus
+    HyperParameterTuningJobStatus (..),
+
+    -- ** HyperParameterTuningJobStrategyType
+    HyperParameterTuningJobStrategyType (..),
+
+    -- ** HyperParameterTuningJobWarmStartType
+    HyperParameterTuningJobWarmStartType (..),
+
+    -- ** ImageSortBy
+    ImageSortBy (..),
+
+    -- ** ImageSortOrder
+    ImageSortOrder (..),
+
+    -- ** ImageStatus
+    ImageStatus (..),
+
+    -- ** ImageVersionSortBy
+    ImageVersionSortBy (..),
+
+    -- ** ImageVersionSortOrder
+    ImageVersionSortOrder (..),
+
+    -- ** ImageVersionStatus
+    ImageVersionStatus (..),
+
+    -- ** InferenceExecutionMode
+    InferenceExecutionMode (..),
+
+    -- ** InferenceExperimentStatus
+    InferenceExperimentStatus (..),
+
+    -- ** InferenceExperimentStopDesiredState
+    InferenceExperimentStopDesiredState (..),
+
+    -- ** InferenceExperimentType
+    InferenceExperimentType (..),
+
+    -- ** InputMode
+    InputMode (..),
+
+    -- ** InstanceType
+    InstanceType (..),
+
+    -- ** JobType
+    JobType (..),
+
+    -- ** JoinSource
+    JoinSource (..),
+
+    -- ** LabelingJobStatus
+    LabelingJobStatus (..),
+
+    -- ** LastUpdateStatusValue
+    LastUpdateStatusValue (..),
+
+    -- ** LineageType
+    LineageType (..),
+
+    -- ** ListCompilationJobsSortBy
+    ListCompilationJobsSortBy (..),
+
+    -- ** ListDeviceFleetsSortBy
+    ListDeviceFleetsSortBy (..),
+
+    -- ** ListEdgeDeploymentPlansSortBy
+    ListEdgeDeploymentPlansSortBy (..),
+
+    -- ** ListEdgePackagingJobsSortBy
+    ListEdgePackagingJobsSortBy (..),
+
+    -- ** ListInferenceRecommendationsJobsSortBy
+    ListInferenceRecommendationsJobsSortBy (..),
+
+    -- ** ListLabelingJobsForWorkteamSortByOptions
+    ListLabelingJobsForWorkteamSortByOptions (..),
+
+    -- ** ListWorkforcesSortByOptions
+    ListWorkforcesSortByOptions (..),
+
+    -- ** ListWorkteamsSortByOptions
+    ListWorkteamsSortByOptions (..),
+
+    -- ** MetricSetSource
+    MetricSetSource (..),
+
+    -- ** ModelApprovalStatus
+    ModelApprovalStatus (..),
+
+    -- ** ModelCacheSetting
+    ModelCacheSetting (..),
+
+    -- ** ModelCardExportJobSortBy
+    ModelCardExportJobSortBy (..),
+
+    -- ** ModelCardExportJobSortOrder
+    ModelCardExportJobSortOrder (..),
+
+    -- ** ModelCardExportJobStatus
+    ModelCardExportJobStatus (..),
+
+    -- ** ModelCardProcessingStatus
+    ModelCardProcessingStatus (..),
+
+    -- ** ModelCardSortBy
+    ModelCardSortBy (..),
+
+    -- ** ModelCardSortOrder
+    ModelCardSortOrder (..),
+
+    -- ** ModelCardStatus
+    ModelCardStatus (..),
+
+    -- ** ModelCardVersionSortBy
+    ModelCardVersionSortBy (..),
+
+    -- ** ModelInfrastructureType
+    ModelInfrastructureType (..),
+
+    -- ** ModelMetadataFilterType
+    ModelMetadataFilterType (..),
+
+    -- ** ModelPackageGroupSortBy
+    ModelPackageGroupSortBy (..),
+
+    -- ** ModelPackageGroupStatus
+    ModelPackageGroupStatus (..),
+
+    -- ** ModelPackageSortBy
+    ModelPackageSortBy (..),
+
+    -- ** ModelPackageStatus
+    ModelPackageStatus (..),
+
+    -- ** ModelPackageType
+    ModelPackageType (..),
+
+    -- ** ModelSortKey
+    ModelSortKey (..),
+
+    -- ** ModelVariantAction
+    ModelVariantAction (..),
+
+    -- ** ModelVariantStatus
+    ModelVariantStatus (..),
+
+    -- ** MonitoringAlertHistorySortKey
+    MonitoringAlertHistorySortKey (..),
+
+    -- ** MonitoringAlertStatus
+    MonitoringAlertStatus (..),
+
+    -- ** MonitoringExecutionSortKey
+    MonitoringExecutionSortKey (..),
+
+    -- ** MonitoringJobDefinitionSortKey
+    MonitoringJobDefinitionSortKey (..),
+
+    -- ** MonitoringProblemType
+    MonitoringProblemType (..),
+
+    -- ** MonitoringScheduleSortKey
+    MonitoringScheduleSortKey (..),
+
+    -- ** MonitoringType
+    MonitoringType (..),
+
+    -- ** NotebookInstanceAcceleratorType
+    NotebookInstanceAcceleratorType (..),
+
+    -- ** NotebookInstanceLifecycleConfigSortKey
+    NotebookInstanceLifecycleConfigSortKey (..),
+
+    -- ** NotebookInstanceLifecycleConfigSortOrder
+    NotebookInstanceLifecycleConfigSortOrder (..),
+
+    -- ** NotebookInstanceSortKey
+    NotebookInstanceSortKey (..),
+
+    -- ** NotebookInstanceSortOrder
+    NotebookInstanceSortOrder (..),
+
+    -- ** NotebookInstanceStatus
+    NotebookInstanceStatus (..),
+
+    -- ** NotebookOutputOption
+    NotebookOutputOption (..),
+
+    -- ** ObjectiveStatus
+    ObjectiveStatus (..),
+
+    -- ** OfflineStoreStatusValue
+    OfflineStoreStatusValue (..),
+
+    -- ** Operator
+    Operator (..),
+
+    -- ** OrderKey
+    OrderKey (..),
+
+    -- ** ParameterType
+    ParameterType (..),
+
+    -- ** PipelineExecutionStatus
+    PipelineExecutionStatus (..),
+
+    -- ** PipelineStatus
+    PipelineStatus (..),
+
+    -- ** ProblemType
+    ProblemType (..),
+
+    -- ** ProcessingInstanceType
+    ProcessingInstanceType (..),
+
+    -- ** ProcessingJobStatus
+    ProcessingJobStatus (..),
+
+    -- ** ProcessingS3CompressionType
+    ProcessingS3CompressionType (..),
+
+    -- ** ProcessingS3DataDistributionType
+    ProcessingS3DataDistributionType (..),
+
+    -- ** ProcessingS3DataType
+    ProcessingS3DataType (..),
+
+    -- ** ProcessingS3InputMode
+    ProcessingS3InputMode (..),
+
+    -- ** ProcessingS3UploadMode
+    ProcessingS3UploadMode (..),
+
+    -- ** Processor
+    Processor (..),
+
+    -- ** ProductionVariantAcceleratorType
+    ProductionVariantAcceleratorType (..),
+
+    -- ** ProductionVariantInstanceType
+    ProductionVariantInstanceType (..),
+
+    -- ** ProfilingStatus
+    ProfilingStatus (..),
+
+    -- ** ProjectSortBy
+    ProjectSortBy (..),
+
+    -- ** ProjectSortOrder
+    ProjectSortOrder (..),
+
+    -- ** ProjectStatus
+    ProjectStatus (..),
+
+    -- ** RStudioServerProAccessStatus
+    RStudioServerProAccessStatus (..),
+
+    -- ** RStudioServerProUserGroup
+    RStudioServerProUserGroup (..),
+
+    -- ** RecommendationJobStatus
+    RecommendationJobStatus (..),
+
+    -- ** RecommendationJobType
+    RecommendationJobType (..),
+
+    -- ** RecommendationStepType
+    RecommendationStepType (..),
+
+    -- ** RecordWrapper
+    RecordWrapper (..),
+
+    -- ** RedshiftResultCompressionType
+    RedshiftResultCompressionType (..),
+
+    -- ** RedshiftResultFormat
+    RedshiftResultFormat (..),
+
+    -- ** RepositoryAccessMode
+    RepositoryAccessMode (..),
+
+    -- ** ResourceType
+    ResourceType (..),
+
+    -- ** RetentionType
+    RetentionType (..),
+
+    -- ** RootAccess
+    RootAccess (..),
+
+    -- ** RuleEvaluationStatus
+    RuleEvaluationStatus (..),
+
+    -- ** S3DataDistribution
+    S3DataDistribution (..),
+
+    -- ** S3DataType
+    S3DataType (..),
+
+    -- ** SagemakerServicecatalogStatus
+    SagemakerServicecatalogStatus (..),
+
+    -- ** ScheduleStatus
+    ScheduleStatus (..),
+
+    -- ** SearchSortOrder
+    SearchSortOrder (..),
+
+    -- ** SecondaryStatus
+    SecondaryStatus (..),
+
+    -- ** SortActionsBy
+    SortActionsBy (..),
+
+    -- ** SortArtifactsBy
+    SortArtifactsBy (..),
+
+    -- ** SortAssociationsBy
+    SortAssociationsBy (..),
+
+    -- ** SortBy
+    SortBy (..),
+
+    -- ** SortContextsBy
+    SortContextsBy (..),
+
+    -- ** SortExperimentsBy
+    SortExperimentsBy (..),
+
+    -- ** SortInferenceExperimentsBy
+    SortInferenceExperimentsBy (..),
+
+    -- ** SortLineageGroupsBy
+    SortLineageGroupsBy (..),
+
+    -- ** SortOrder
+    SortOrder (..),
+
+    -- ** SortPipelineExecutionsBy
+    SortPipelineExecutionsBy (..),
+
+    -- ** SortPipelinesBy
+    SortPipelinesBy (..),
+
+    -- ** SortTrialComponentsBy
+    SortTrialComponentsBy (..),
+
+    -- ** SortTrialsBy
+    SortTrialsBy (..),
+
+    -- ** SpaceSortKey
+    SpaceSortKey (..),
+
+    -- ** SpaceStatus
+    SpaceStatus (..),
+
+    -- ** SplitType
+    SplitType (..),
+
+    -- ** StageStatus
+    StageStatus (..),
+
+    -- ** StepStatus
+    StepStatus (..),
+
+    -- ** StudioLifecycleConfigAppType
+    StudioLifecycleConfigAppType (..),
+
+    -- ** StudioLifecycleConfigSortKey
+    StudioLifecycleConfigSortKey (..),
+
+    -- ** TableFormat
+    TableFormat (..),
+
+    -- ** TargetDevice
+    TargetDevice (..),
+
+    -- ** TargetPlatformAccelerator
+    TargetPlatformAccelerator (..),
+
+    -- ** TargetPlatformArch
+    TargetPlatformArch (..),
+
+    -- ** TargetPlatformOs
+    TargetPlatformOs (..),
+
+    -- ** TrafficRoutingConfigType
+    TrafficRoutingConfigType (..),
+
+    -- ** TrafficType
+    TrafficType (..),
+
+    -- ** TrainingInputMode
+    TrainingInputMode (..),
+
+    -- ** TrainingInstanceType
+    TrainingInstanceType (..),
+
+    -- ** TrainingJobEarlyStoppingType
+    TrainingJobEarlyStoppingType (..),
+
+    -- ** TrainingJobSortByOptions
+    TrainingJobSortByOptions (..),
+
+    -- ** TrainingJobStatus
+    TrainingJobStatus (..),
+
+    -- ** TransformInstanceType
+    TransformInstanceType (..),
+
+    -- ** TransformJobStatus
+    TransformJobStatus (..),
+
+    -- ** TrialComponentPrimaryStatus
+    TrialComponentPrimaryStatus (..),
+
+    -- ** UserProfileSortKey
+    UserProfileSortKey (..),
+
+    -- ** UserProfileStatus
+    UserProfileStatus (..),
+
+    -- ** VariantPropertyType
+    VariantPropertyType (..),
+
+    -- ** VariantStatus
+    VariantStatus (..),
+
+    -- ** VendorGuidance
+    VendorGuidance (..),
+
+    -- ** WarmPoolResourceStatus
+    WarmPoolResourceStatus (..),
+
+    -- ** WorkforceStatus
+    WorkforceStatus (..),
+
+    -- ** ActionSource
+    ActionSource (ActionSource'),
+    newActionSource,
+
+    -- ** ActionSummary
+    ActionSummary (ActionSummary'),
+    newActionSummary,
+
+    -- ** AdditionalInferenceSpecificationDefinition
+    AdditionalInferenceSpecificationDefinition (AdditionalInferenceSpecificationDefinition'),
+    newAdditionalInferenceSpecificationDefinition,
+
+    -- ** AgentVersion
+    AgentVersion (AgentVersion'),
+    newAgentVersion,
+
+    -- ** Alarm
+    Alarm (Alarm'),
+    newAlarm,
+
+    -- ** AlgorithmSpecification
+    AlgorithmSpecification (AlgorithmSpecification'),
+    newAlgorithmSpecification,
+
+    -- ** AlgorithmStatusDetails
+    AlgorithmStatusDetails (AlgorithmStatusDetails'),
+    newAlgorithmStatusDetails,
+
+    -- ** AlgorithmStatusItem
+    AlgorithmStatusItem (AlgorithmStatusItem'),
+    newAlgorithmStatusItem,
+
+    -- ** AlgorithmSummary
+    AlgorithmSummary (AlgorithmSummary'),
+    newAlgorithmSummary,
+
+    -- ** AlgorithmValidationProfile
+    AlgorithmValidationProfile (AlgorithmValidationProfile'),
+    newAlgorithmValidationProfile,
+
+    -- ** AlgorithmValidationSpecification
+    AlgorithmValidationSpecification (AlgorithmValidationSpecification'),
+    newAlgorithmValidationSpecification,
+
+    -- ** AnnotationConsolidationConfig
+    AnnotationConsolidationConfig (AnnotationConsolidationConfig'),
+    newAnnotationConsolidationConfig,
+
+    -- ** AppDetails
+    AppDetails (AppDetails'),
+    newAppDetails,
+
+    -- ** AppImageConfigDetails
+    AppImageConfigDetails (AppImageConfigDetails'),
+    newAppImageConfigDetails,
+
+    -- ** AppSpecification
+    AppSpecification (AppSpecification'),
+    newAppSpecification,
+
+    -- ** ArtifactSource
+    ArtifactSource (ArtifactSource'),
+    newArtifactSource,
+
+    -- ** ArtifactSourceType
+    ArtifactSourceType (ArtifactSourceType'),
+    newArtifactSourceType,
+
+    -- ** ArtifactSummary
+    ArtifactSummary (ArtifactSummary'),
+    newArtifactSummary,
+
+    -- ** AssociationSummary
+    AssociationSummary (AssociationSummary'),
+    newAssociationSummary,
+
+    -- ** AsyncInferenceClientConfig
+    AsyncInferenceClientConfig (AsyncInferenceClientConfig'),
+    newAsyncInferenceClientConfig,
+
+    -- ** AsyncInferenceConfig
+    AsyncInferenceConfig (AsyncInferenceConfig'),
+    newAsyncInferenceConfig,
+
+    -- ** AsyncInferenceNotificationConfig
+    AsyncInferenceNotificationConfig (AsyncInferenceNotificationConfig'),
+    newAsyncInferenceNotificationConfig,
+
+    -- ** AsyncInferenceOutputConfig
+    AsyncInferenceOutputConfig (AsyncInferenceOutputConfig'),
+    newAsyncInferenceOutputConfig,
+
+    -- ** AthenaDatasetDefinition
+    AthenaDatasetDefinition (AthenaDatasetDefinition'),
+    newAthenaDatasetDefinition,
+
+    -- ** AutoMLCandidate
+    AutoMLCandidate (AutoMLCandidate'),
+    newAutoMLCandidate,
+
+    -- ** AutoMLCandidateGenerationConfig
+    AutoMLCandidateGenerationConfig (AutoMLCandidateGenerationConfig'),
+    newAutoMLCandidateGenerationConfig,
+
+    -- ** AutoMLCandidateStep
+    AutoMLCandidateStep (AutoMLCandidateStep'),
+    newAutoMLCandidateStep,
+
+    -- ** AutoMLChannel
+    AutoMLChannel (AutoMLChannel'),
+    newAutoMLChannel,
+
+    -- ** AutoMLContainerDefinition
+    AutoMLContainerDefinition (AutoMLContainerDefinition'),
+    newAutoMLContainerDefinition,
+
+    -- ** AutoMLDataSource
+    AutoMLDataSource (AutoMLDataSource'),
+    newAutoMLDataSource,
+
+    -- ** AutoMLDataSplitConfig
+    AutoMLDataSplitConfig (AutoMLDataSplitConfig'),
+    newAutoMLDataSplitConfig,
+
+    -- ** AutoMLJobArtifacts
+    AutoMLJobArtifacts (AutoMLJobArtifacts'),
+    newAutoMLJobArtifacts,
+
+    -- ** AutoMLJobCompletionCriteria
+    AutoMLJobCompletionCriteria (AutoMLJobCompletionCriteria'),
+    newAutoMLJobCompletionCriteria,
+
+    -- ** AutoMLJobConfig
+    AutoMLJobConfig (AutoMLJobConfig'),
+    newAutoMLJobConfig,
+
+    -- ** AutoMLJobObjective
+    AutoMLJobObjective (AutoMLJobObjective'),
+    newAutoMLJobObjective,
+
+    -- ** AutoMLJobStepMetadata
+    AutoMLJobStepMetadata (AutoMLJobStepMetadata'),
+    newAutoMLJobStepMetadata,
+
+    -- ** AutoMLJobSummary
+    AutoMLJobSummary (AutoMLJobSummary'),
+    newAutoMLJobSummary,
+
+    -- ** AutoMLOutputDataConfig
+    AutoMLOutputDataConfig (AutoMLOutputDataConfig'),
+    newAutoMLOutputDataConfig,
+
+    -- ** AutoMLPartialFailureReason
+    AutoMLPartialFailureReason (AutoMLPartialFailureReason'),
+    newAutoMLPartialFailureReason,
+
+    -- ** AutoMLS3DataSource
+    AutoMLS3DataSource (AutoMLS3DataSource'),
+    newAutoMLS3DataSource,
+
+    -- ** AutoMLSecurityConfig
+    AutoMLSecurityConfig (AutoMLSecurityConfig'),
+    newAutoMLSecurityConfig,
+
+    -- ** AutoRollbackConfig
+    AutoRollbackConfig (AutoRollbackConfig'),
+    newAutoRollbackConfig,
+
+    -- ** BatchDataCaptureConfig
+    BatchDataCaptureConfig (BatchDataCaptureConfig'),
+    newBatchDataCaptureConfig,
+
+    -- ** BatchDescribeModelPackageError
+    BatchDescribeModelPackageError (BatchDescribeModelPackageError'),
+    newBatchDescribeModelPackageError,
+
+    -- ** BatchDescribeModelPackageSummary
+    BatchDescribeModelPackageSummary (BatchDescribeModelPackageSummary'),
+    newBatchDescribeModelPackageSummary,
+
+    -- ** BatchTransformInput
+    BatchTransformInput (BatchTransformInput'),
+    newBatchTransformInput,
+
+    -- ** Bias
+    Bias (Bias'),
+    newBias,
+
+    -- ** BlueGreenUpdatePolicy
+    BlueGreenUpdatePolicy (BlueGreenUpdatePolicy'),
+    newBlueGreenUpdatePolicy,
+
+    -- ** CacheHitResult
+    CacheHitResult (CacheHitResult'),
+    newCacheHitResult,
+
+    -- ** CallbackStepMetadata
+    CallbackStepMetadata (CallbackStepMetadata'),
+    newCallbackStepMetadata,
+
+    -- ** CandidateArtifactLocations
+    CandidateArtifactLocations (CandidateArtifactLocations'),
+    newCandidateArtifactLocations,
+
+    -- ** CandidateProperties
+    CandidateProperties (CandidateProperties'),
+    newCandidateProperties,
+
+    -- ** CanvasAppSettings
+    CanvasAppSettings (CanvasAppSettings'),
+    newCanvasAppSettings,
+
+    -- ** CapacitySize
+    CapacitySize (CapacitySize'),
+    newCapacitySize,
+
+    -- ** CaptureContentTypeHeader
+    CaptureContentTypeHeader (CaptureContentTypeHeader'),
+    newCaptureContentTypeHeader,
+
+    -- ** CaptureOption
+    CaptureOption (CaptureOption'),
+    newCaptureOption,
+
+    -- ** CategoricalParameter
+    CategoricalParameter (CategoricalParameter'),
+    newCategoricalParameter,
+
+    -- ** CategoricalParameterRange
+    CategoricalParameterRange (CategoricalParameterRange'),
+    newCategoricalParameterRange,
+
+    -- ** CategoricalParameterRangeSpecification
+    CategoricalParameterRangeSpecification (CategoricalParameterRangeSpecification'),
+    newCategoricalParameterRangeSpecification,
+
+    -- ** Channel
+    Channel (Channel'),
+    newChannel,
+
+    -- ** ChannelSpecification
+    ChannelSpecification (ChannelSpecification'),
+    newChannelSpecification,
+
+    -- ** CheckpointConfig
+    CheckpointConfig (CheckpointConfig'),
+    newCheckpointConfig,
+
+    -- ** ClarifyCheckStepMetadata
+    ClarifyCheckStepMetadata (ClarifyCheckStepMetadata'),
+    newClarifyCheckStepMetadata,
+
+    -- ** ClarifyExplainerConfig
+    ClarifyExplainerConfig (ClarifyExplainerConfig'),
+    newClarifyExplainerConfig,
+
+    -- ** ClarifyInferenceConfig
+    ClarifyInferenceConfig (ClarifyInferenceConfig'),
+    newClarifyInferenceConfig,
+
+    -- ** ClarifyShapBaselineConfig
+    ClarifyShapBaselineConfig (ClarifyShapBaselineConfig'),
+    newClarifyShapBaselineConfig,
+
+    -- ** ClarifyShapConfig
+    ClarifyShapConfig (ClarifyShapConfig'),
+    newClarifyShapConfig,
+
+    -- ** ClarifyTextConfig
+    ClarifyTextConfig (ClarifyTextConfig'),
+    newClarifyTextConfig,
+
+    -- ** CodeRepository
+    CodeRepository (CodeRepository'),
+    newCodeRepository,
+
+    -- ** CodeRepositorySummary
+    CodeRepositorySummary (CodeRepositorySummary'),
+    newCodeRepositorySummary,
+
+    -- ** CognitoConfig
+    CognitoConfig (CognitoConfig'),
+    newCognitoConfig,
+
+    -- ** CognitoMemberDefinition
+    CognitoMemberDefinition (CognitoMemberDefinition'),
+    newCognitoMemberDefinition,
+
+    -- ** CollectionConfiguration
+    CollectionConfiguration (CollectionConfiguration'),
+    newCollectionConfiguration,
+
+    -- ** CompilationJobSummary
+    CompilationJobSummary (CompilationJobSummary'),
+    newCompilationJobSummary,
+
+    -- ** ConditionStepMetadata
+    ConditionStepMetadata (ConditionStepMetadata'),
+    newConditionStepMetadata,
+
+    -- ** ContainerDefinition
+    ContainerDefinition (ContainerDefinition'),
+    newContainerDefinition,
+
+    -- ** ContextSource
+    ContextSource (ContextSource'),
+    newContextSource,
+
+    -- ** ContextSummary
+    ContextSummary (ContextSummary'),
+    newContextSummary,
+
+    -- ** ContinuousParameterRange
+    ContinuousParameterRange (ContinuousParameterRange'),
+    newContinuousParameterRange,
+
+    -- ** ContinuousParameterRangeSpecification
+    ContinuousParameterRangeSpecification (ContinuousParameterRangeSpecification'),
+    newContinuousParameterRangeSpecification,
+
+    -- ** CustomImage
+    CustomImage (CustomImage'),
+    newCustomImage,
+
+    -- ** DataCaptureConfig
+    DataCaptureConfig (DataCaptureConfig'),
+    newDataCaptureConfig,
+
+    -- ** DataCaptureConfigSummary
+    DataCaptureConfigSummary (DataCaptureConfigSummary'),
+    newDataCaptureConfigSummary,
+
+    -- ** DataCatalogConfig
+    DataCatalogConfig (DataCatalogConfig'),
+    newDataCatalogConfig,
+
+    -- ** DataProcessing
+    DataProcessing (DataProcessing'),
+    newDataProcessing,
+
+    -- ** DataQualityAppSpecification
+    DataQualityAppSpecification (DataQualityAppSpecification'),
+    newDataQualityAppSpecification,
+
+    -- ** DataQualityBaselineConfig
+    DataQualityBaselineConfig (DataQualityBaselineConfig'),
+    newDataQualityBaselineConfig,
+
+    -- ** DataQualityJobInput
+    DataQualityJobInput (DataQualityJobInput'),
+    newDataQualityJobInput,
+
+    -- ** DataSource
+    DataSource (DataSource'),
+    newDataSource,
+
+    -- ** DatasetDefinition
+    DatasetDefinition (DatasetDefinition'),
+    newDatasetDefinition,
+
+    -- ** DebugHookConfig
+    DebugHookConfig (DebugHookConfig'),
+    newDebugHookConfig,
+
+    -- ** DebugRuleConfiguration
+    DebugRuleConfiguration (DebugRuleConfiguration'),
+    newDebugRuleConfiguration,
+
+    -- ** DebugRuleEvaluationStatus
+    DebugRuleEvaluationStatus (DebugRuleEvaluationStatus'),
+    newDebugRuleEvaluationStatus,
+
+    -- ** DefaultSpaceSettings
+    DefaultSpaceSettings (DefaultSpaceSettings'),
+    newDefaultSpaceSettings,
+
+    -- ** DeployedImage
+    DeployedImage (DeployedImage'),
+    newDeployedImage,
+
+    -- ** DeploymentConfig
+    DeploymentConfig (DeploymentConfig'),
+    newDeploymentConfig,
+
+    -- ** DeploymentStage
+    DeploymentStage (DeploymentStage'),
+    newDeploymentStage,
+
+    -- ** DeploymentStageStatusSummary
+    DeploymentStageStatusSummary (DeploymentStageStatusSummary'),
+    newDeploymentStageStatusSummary,
+
+    -- ** DesiredWeightAndCapacity
+    DesiredWeightAndCapacity (DesiredWeightAndCapacity'),
+    newDesiredWeightAndCapacity,
+
+    -- ** Device
+    Device (Device'),
+    newDevice,
+
+    -- ** DeviceDeploymentSummary
+    DeviceDeploymentSummary (DeviceDeploymentSummary'),
+    newDeviceDeploymentSummary,
+
+    -- ** DeviceFleetSummary
+    DeviceFleetSummary (DeviceFleetSummary'),
+    newDeviceFleetSummary,
+
+    -- ** DeviceSelectionConfig
+    DeviceSelectionConfig (DeviceSelectionConfig'),
+    newDeviceSelectionConfig,
+
+    -- ** DeviceStats
+    DeviceStats (DeviceStats'),
+    newDeviceStats,
+
+    -- ** DeviceSummary
+    DeviceSummary (DeviceSummary'),
+    newDeviceSummary,
+
+    -- ** DomainDetails
+    DomainDetails (DomainDetails'),
+    newDomainDetails,
+
+    -- ** DomainSettings
+    DomainSettings (DomainSettings'),
+    newDomainSettings,
+
+    -- ** DomainSettingsForUpdate
+    DomainSettingsForUpdate (DomainSettingsForUpdate'),
+    newDomainSettingsForUpdate,
+
+    -- ** DriftCheckBaselines
+    DriftCheckBaselines (DriftCheckBaselines'),
+    newDriftCheckBaselines,
+
+    -- ** DriftCheckBias
+    DriftCheckBias (DriftCheckBias'),
+    newDriftCheckBias,
+
+    -- ** DriftCheckExplainability
+    DriftCheckExplainability (DriftCheckExplainability'),
+    newDriftCheckExplainability,
+
+    -- ** DriftCheckModelDataQuality
+    DriftCheckModelDataQuality (DriftCheckModelDataQuality'),
+    newDriftCheckModelDataQuality,
+
+    -- ** DriftCheckModelQuality
+    DriftCheckModelQuality (DriftCheckModelQuality'),
+    newDriftCheckModelQuality,
+
+    -- ** EMRStepMetadata
+    EMRStepMetadata (EMRStepMetadata'),
+    newEMRStepMetadata,
+
+    -- ** Edge
+    Edge (Edge'),
+    newEdge,
+
+    -- ** EdgeDeploymentConfig
+    EdgeDeploymentConfig (EdgeDeploymentConfig'),
+    newEdgeDeploymentConfig,
+
+    -- ** EdgeDeploymentModelConfig
+    EdgeDeploymentModelConfig (EdgeDeploymentModelConfig'),
+    newEdgeDeploymentModelConfig,
+
+    -- ** EdgeDeploymentPlanSummary
+    EdgeDeploymentPlanSummary (EdgeDeploymentPlanSummary'),
+    newEdgeDeploymentPlanSummary,
+
+    -- ** EdgeDeploymentStatus
+    EdgeDeploymentStatus (EdgeDeploymentStatus'),
+    newEdgeDeploymentStatus,
+
+    -- ** EdgeModel
+    EdgeModel (EdgeModel'),
+    newEdgeModel,
+
+    -- ** EdgeModelStat
+    EdgeModelStat (EdgeModelStat'),
+    newEdgeModelStat,
+
+    -- ** EdgeModelSummary
+    EdgeModelSummary (EdgeModelSummary'),
+    newEdgeModelSummary,
+
+    -- ** EdgeOutputConfig
+    EdgeOutputConfig (EdgeOutputConfig'),
+    newEdgeOutputConfig,
+
+    -- ** EdgePackagingJobSummary
+    EdgePackagingJobSummary (EdgePackagingJobSummary'),
+    newEdgePackagingJobSummary,
+
+    -- ** EdgePresetDeploymentOutput
+    EdgePresetDeploymentOutput (EdgePresetDeploymentOutput'),
+    newEdgePresetDeploymentOutput,
+
+    -- ** Endpoint
+    Endpoint (Endpoint'),
+    newEndpoint,
+
+    -- ** EndpointConfigSummary
+    EndpointConfigSummary (EndpointConfigSummary'),
+    newEndpointConfigSummary,
+
+    -- ** EndpointInfo
+    EndpointInfo (EndpointInfo'),
+    newEndpointInfo,
+
+    -- ** EndpointInput
+    EndpointInput (EndpointInput'),
+    newEndpointInput,
+
+    -- ** EndpointInputConfiguration
+    EndpointInputConfiguration (EndpointInputConfiguration'),
+    newEndpointInputConfiguration,
+
+    -- ** EndpointMetadata
+    EndpointMetadata (EndpointMetadata'),
+    newEndpointMetadata,
+
+    -- ** EndpointOutputConfiguration
+    EndpointOutputConfiguration (EndpointOutputConfiguration'),
+    newEndpointOutputConfiguration,
+
+    -- ** EndpointPerformance
+    EndpointPerformance (EndpointPerformance'),
+    newEndpointPerformance,
+
+    -- ** EndpointSummary
+    EndpointSummary (EndpointSummary'),
+    newEndpointSummary,
+
+    -- ** EnvironmentParameter
+    EnvironmentParameter (EnvironmentParameter'),
+    newEnvironmentParameter,
+
+    -- ** EnvironmentParameterRanges
+    EnvironmentParameterRanges (EnvironmentParameterRanges'),
+    newEnvironmentParameterRanges,
+
+    -- ** Experiment
+    Experiment (Experiment'),
+    newExperiment,
+
+    -- ** ExperimentConfig
+    ExperimentConfig (ExperimentConfig'),
+    newExperimentConfig,
+
+    -- ** ExperimentSource
+    ExperimentSource (ExperimentSource'),
+    newExperimentSource,
+
+    -- ** ExperimentSummary
+    ExperimentSummary (ExperimentSummary'),
+    newExperimentSummary,
+
+    -- ** Explainability
+    Explainability (Explainability'),
+    newExplainability,
+
+    -- ** ExplainerConfig
+    ExplainerConfig (ExplainerConfig'),
+    newExplainerConfig,
+
+    -- ** FailStepMetadata
+    FailStepMetadata (FailStepMetadata'),
+    newFailStepMetadata,
+
+    -- ** FeatureDefinition
+    FeatureDefinition (FeatureDefinition'),
+    newFeatureDefinition,
+
+    -- ** FeatureGroup
+    FeatureGroup (FeatureGroup'),
+    newFeatureGroup,
+
+    -- ** FeatureGroupSummary
+    FeatureGroupSummary (FeatureGroupSummary'),
+    newFeatureGroupSummary,
+
+    -- ** FeatureMetadata
+    FeatureMetadata (FeatureMetadata'),
+    newFeatureMetadata,
+
+    -- ** FeatureParameter
+    FeatureParameter (FeatureParameter'),
+    newFeatureParameter,
+
+    -- ** FileSource
+    FileSource (FileSource'),
+    newFileSource,
+
+    -- ** FileSystemConfig
+    FileSystemConfig (FileSystemConfig'),
+    newFileSystemConfig,
+
+    -- ** FileSystemDataSource
+    FileSystemDataSource (FileSystemDataSource'),
+    newFileSystemDataSource,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** FinalAutoMLJobObjectiveMetric
+    FinalAutoMLJobObjectiveMetric (FinalAutoMLJobObjectiveMetric'),
+    newFinalAutoMLJobObjectiveMetric,
+
+    -- ** FinalHyperParameterTuningJobObjectiveMetric
+    FinalHyperParameterTuningJobObjectiveMetric (FinalHyperParameterTuningJobObjectiveMetric'),
+    newFinalHyperParameterTuningJobObjectiveMetric,
+
+    -- ** FlowDefinitionOutputConfig
+    FlowDefinitionOutputConfig (FlowDefinitionOutputConfig'),
+    newFlowDefinitionOutputConfig,
+
+    -- ** FlowDefinitionSummary
+    FlowDefinitionSummary (FlowDefinitionSummary'),
+    newFlowDefinitionSummary,
+
+    -- ** GitConfig
+    GitConfig (GitConfig'),
+    newGitConfig,
+
+    -- ** GitConfigForUpdate
+    GitConfigForUpdate (GitConfigForUpdate'),
+    newGitConfigForUpdate,
+
+    -- ** HubContentDependency
+    HubContentDependency (HubContentDependency'),
+    newHubContentDependency,
+
+    -- ** HubContentInfo
+    HubContentInfo (HubContentInfo'),
+    newHubContentInfo,
+
+    -- ** HubInfo
+    HubInfo (HubInfo'),
+    newHubInfo,
+
+    -- ** HubS3StorageConfig
+    HubS3StorageConfig (HubS3StorageConfig'),
+    newHubS3StorageConfig,
+
+    -- ** HumanLoopActivationConditionsConfig
+    HumanLoopActivationConditionsConfig (HumanLoopActivationConditionsConfig'),
+    newHumanLoopActivationConditionsConfig,
+
+    -- ** HumanLoopActivationConfig
+    HumanLoopActivationConfig (HumanLoopActivationConfig'),
+    newHumanLoopActivationConfig,
+
+    -- ** HumanLoopConfig
+    HumanLoopConfig (HumanLoopConfig'),
+    newHumanLoopConfig,
+
+    -- ** HumanLoopRequestSource
+    HumanLoopRequestSource (HumanLoopRequestSource'),
+    newHumanLoopRequestSource,
+
+    -- ** HumanTaskConfig
+    HumanTaskConfig (HumanTaskConfig'),
+    newHumanTaskConfig,
+
+    -- ** HumanTaskUiSummary
+    HumanTaskUiSummary (HumanTaskUiSummary'),
+    newHumanTaskUiSummary,
+
+    -- ** HyperParameterAlgorithmSpecification
+    HyperParameterAlgorithmSpecification (HyperParameterAlgorithmSpecification'),
+    newHyperParameterAlgorithmSpecification,
+
+    -- ** HyperParameterSpecification
+    HyperParameterSpecification (HyperParameterSpecification'),
+    newHyperParameterSpecification,
+
+    -- ** HyperParameterTrainingJobDefinition
+    HyperParameterTrainingJobDefinition (HyperParameterTrainingJobDefinition'),
+    newHyperParameterTrainingJobDefinition,
+
+    -- ** HyperParameterTrainingJobSummary
+    HyperParameterTrainingJobSummary (HyperParameterTrainingJobSummary'),
+    newHyperParameterTrainingJobSummary,
+
+    -- ** HyperParameterTuningInstanceConfig
+    HyperParameterTuningInstanceConfig (HyperParameterTuningInstanceConfig'),
+    newHyperParameterTuningInstanceConfig,
+
+    -- ** HyperParameterTuningJobConfig
+    HyperParameterTuningJobConfig (HyperParameterTuningJobConfig'),
+    newHyperParameterTuningJobConfig,
+
+    -- ** HyperParameterTuningJobObjective
+    HyperParameterTuningJobObjective (HyperParameterTuningJobObjective'),
+    newHyperParameterTuningJobObjective,
+
+    -- ** HyperParameterTuningJobSearchEntity
+    HyperParameterTuningJobSearchEntity (HyperParameterTuningJobSearchEntity'),
+    newHyperParameterTuningJobSearchEntity,
+
+    -- ** HyperParameterTuningJobStrategyConfig
+    HyperParameterTuningJobStrategyConfig (HyperParameterTuningJobStrategyConfig'),
+    newHyperParameterTuningJobStrategyConfig,
+
+    -- ** HyperParameterTuningJobSummary
+    HyperParameterTuningJobSummary (HyperParameterTuningJobSummary'),
+    newHyperParameterTuningJobSummary,
+
+    -- ** HyperParameterTuningJobWarmStartConfig
+    HyperParameterTuningJobWarmStartConfig (HyperParameterTuningJobWarmStartConfig'),
+    newHyperParameterTuningJobWarmStartConfig,
+
+    -- ** HyperParameterTuningResourceConfig
+    HyperParameterTuningResourceConfig (HyperParameterTuningResourceConfig'),
+    newHyperParameterTuningResourceConfig,
+
+    -- ** HyperbandStrategyConfig
+    HyperbandStrategyConfig (HyperbandStrategyConfig'),
+    newHyperbandStrategyConfig,
+
+    -- ** Image
+    Image (Image'),
+    newImage,
+
+    -- ** ImageConfig
+    ImageConfig (ImageConfig'),
+    newImageConfig,
+
+    -- ** ImageVersion
+    ImageVersion (ImageVersion'),
+    newImageVersion,
+
+    -- ** InferenceExecutionConfig
+    InferenceExecutionConfig (InferenceExecutionConfig'),
+    newInferenceExecutionConfig,
+
+    -- ** InferenceExperimentDataStorageConfig
+    InferenceExperimentDataStorageConfig (InferenceExperimentDataStorageConfig'),
+    newInferenceExperimentDataStorageConfig,
+
+    -- ** InferenceExperimentSchedule
+    InferenceExperimentSchedule (InferenceExperimentSchedule'),
+    newInferenceExperimentSchedule,
+
+    -- ** InferenceExperimentSummary
+    InferenceExperimentSummary (InferenceExperimentSummary'),
+    newInferenceExperimentSummary,
+
+    -- ** InferenceMetrics
+    InferenceMetrics (InferenceMetrics'),
+    newInferenceMetrics,
+
+    -- ** InferenceRecommendation
+    InferenceRecommendation (InferenceRecommendation'),
+    newInferenceRecommendation,
+
+    -- ** InferenceRecommendationsJob
+    InferenceRecommendationsJob (InferenceRecommendationsJob'),
+    newInferenceRecommendationsJob,
+
+    -- ** InferenceRecommendationsJobStep
+    InferenceRecommendationsJobStep (InferenceRecommendationsJobStep'),
+    newInferenceRecommendationsJobStep,
+
+    -- ** InferenceSpecification
+    InferenceSpecification (InferenceSpecification'),
+    newInferenceSpecification,
+
+    -- ** InputConfig
+    InputConfig (InputConfig'),
+    newInputConfig,
+
+    -- ** InstanceGroup
+    InstanceGroup (InstanceGroup'),
+    newInstanceGroup,
+
+    -- ** InstanceMetadataServiceConfiguration
+    InstanceMetadataServiceConfiguration (InstanceMetadataServiceConfiguration'),
+    newInstanceMetadataServiceConfiguration,
+
+    -- ** IntegerParameterRange
+    IntegerParameterRange (IntegerParameterRange'),
+    newIntegerParameterRange,
+
+    -- ** IntegerParameterRangeSpecification
+    IntegerParameterRangeSpecification (IntegerParameterRangeSpecification'),
+    newIntegerParameterRangeSpecification,
+
+    -- ** JupyterServerAppSettings
+    JupyterServerAppSettings (JupyterServerAppSettings'),
+    newJupyterServerAppSettings,
+
+    -- ** KernelGatewayAppSettings
+    KernelGatewayAppSettings (KernelGatewayAppSettings'),
+    newKernelGatewayAppSettings,
+
+    -- ** KernelGatewayImageConfig
+    KernelGatewayImageConfig (KernelGatewayImageConfig'),
+    newKernelGatewayImageConfig,
+
+    -- ** KernelSpec
+    KernelSpec (KernelSpec'),
+    newKernelSpec,
+
+    -- ** LabelCounters
+    LabelCounters (LabelCounters'),
+    newLabelCounters,
+
+    -- ** LabelCountersForWorkteam
+    LabelCountersForWorkteam (LabelCountersForWorkteam'),
+    newLabelCountersForWorkteam,
+
+    -- ** LabelingJobAlgorithmsConfig
+    LabelingJobAlgorithmsConfig (LabelingJobAlgorithmsConfig'),
+    newLabelingJobAlgorithmsConfig,
+
+    -- ** LabelingJobDataAttributes
+    LabelingJobDataAttributes (LabelingJobDataAttributes'),
+    newLabelingJobDataAttributes,
+
+    -- ** LabelingJobDataSource
+    LabelingJobDataSource (LabelingJobDataSource'),
+    newLabelingJobDataSource,
+
+    -- ** LabelingJobForWorkteamSummary
+    LabelingJobForWorkteamSummary (LabelingJobForWorkteamSummary'),
+    newLabelingJobForWorkteamSummary,
+
+    -- ** LabelingJobInputConfig
+    LabelingJobInputConfig (LabelingJobInputConfig'),
+    newLabelingJobInputConfig,
+
+    -- ** LabelingJobOutput
+    LabelingJobOutput (LabelingJobOutput'),
+    newLabelingJobOutput,
+
+    -- ** LabelingJobOutputConfig
+    LabelingJobOutputConfig (LabelingJobOutputConfig'),
+    newLabelingJobOutputConfig,
+
+    -- ** LabelingJobResourceConfig
+    LabelingJobResourceConfig (LabelingJobResourceConfig'),
+    newLabelingJobResourceConfig,
+
+    -- ** LabelingJobS3DataSource
+    LabelingJobS3DataSource (LabelingJobS3DataSource'),
+    newLabelingJobS3DataSource,
+
+    -- ** LabelingJobSnsDataSource
+    LabelingJobSnsDataSource (LabelingJobSnsDataSource'),
+    newLabelingJobSnsDataSource,
+
+    -- ** LabelingJobStoppingConditions
+    LabelingJobStoppingConditions (LabelingJobStoppingConditions'),
+    newLabelingJobStoppingConditions,
+
+    -- ** LabelingJobSummary
+    LabelingJobSummary (LabelingJobSummary'),
+    newLabelingJobSummary,
+
+    -- ** LambdaStepMetadata
+    LambdaStepMetadata (LambdaStepMetadata'),
+    newLambdaStepMetadata,
+
+    -- ** LastUpdateStatus
+    LastUpdateStatus (LastUpdateStatus'),
+    newLastUpdateStatus,
+
+    -- ** LineageGroupSummary
+    LineageGroupSummary (LineageGroupSummary'),
+    newLineageGroupSummary,
+
+    -- ** MemberDefinition
+    MemberDefinition (MemberDefinition'),
+    newMemberDefinition,
+
+    -- ** MetadataProperties
+    MetadataProperties (MetadataProperties'),
+    newMetadataProperties,
+
+    -- ** MetricData
+    MetricData (MetricData'),
+    newMetricData,
+
+    -- ** MetricDatum
+    MetricDatum (MetricDatum'),
+    newMetricDatum,
+
+    -- ** MetricDefinition
+    MetricDefinition (MetricDefinition'),
+    newMetricDefinition,
+
+    -- ** MetricsSource
+    MetricsSource (MetricsSource'),
+    newMetricsSource,
+
+    -- ** Model
+    Model (Model'),
+    newModel,
+
+    -- ** ModelArtifacts
+    ModelArtifacts (ModelArtifacts'),
+    newModelArtifacts,
+
+    -- ** ModelBiasAppSpecification
+    ModelBiasAppSpecification (ModelBiasAppSpecification'),
+    newModelBiasAppSpecification,
+
+    -- ** ModelBiasBaselineConfig
+    ModelBiasBaselineConfig (ModelBiasBaselineConfig'),
+    newModelBiasBaselineConfig,
+
+    -- ** ModelBiasJobInput
+    ModelBiasJobInput (ModelBiasJobInput'),
+    newModelBiasJobInput,
+
+    -- ** ModelCard
+    ModelCard (ModelCard'),
+    newModelCard,
+
+    -- ** ModelCardExportArtifacts
+    ModelCardExportArtifacts (ModelCardExportArtifacts'),
+    newModelCardExportArtifacts,
+
+    -- ** ModelCardExportJobSummary
+    ModelCardExportJobSummary (ModelCardExportJobSummary'),
+    newModelCardExportJobSummary,
+
+    -- ** ModelCardExportOutputConfig
+    ModelCardExportOutputConfig (ModelCardExportOutputConfig'),
+    newModelCardExportOutputConfig,
+
+    -- ** ModelCardSecurityConfig
+    ModelCardSecurityConfig (ModelCardSecurityConfig'),
+    newModelCardSecurityConfig,
+
+    -- ** ModelCardSummary
+    ModelCardSummary (ModelCardSummary'),
+    newModelCardSummary,
+
+    -- ** ModelCardVersionSummary
+    ModelCardVersionSummary (ModelCardVersionSummary'),
+    newModelCardVersionSummary,
+
+    -- ** ModelClientConfig
+    ModelClientConfig (ModelClientConfig'),
+    newModelClientConfig,
+
+    -- ** ModelConfiguration
+    ModelConfiguration (ModelConfiguration'),
+    newModelConfiguration,
+
+    -- ** ModelDashboardEndpoint
+    ModelDashboardEndpoint (ModelDashboardEndpoint'),
+    newModelDashboardEndpoint,
+
+    -- ** ModelDashboardIndicatorAction
+    ModelDashboardIndicatorAction (ModelDashboardIndicatorAction'),
+    newModelDashboardIndicatorAction,
+
+    -- ** ModelDashboardModel
+    ModelDashboardModel (ModelDashboardModel'),
+    newModelDashboardModel,
+
+    -- ** ModelDashboardModelCard
+    ModelDashboardModelCard (ModelDashboardModelCard'),
+    newModelDashboardModelCard,
+
+    -- ** ModelDashboardMonitoringSchedule
+    ModelDashboardMonitoringSchedule (ModelDashboardMonitoringSchedule'),
+    newModelDashboardMonitoringSchedule,
+
+    -- ** ModelDataQuality
+    ModelDataQuality (ModelDataQuality'),
+    newModelDataQuality,
+
+    -- ** ModelDeployConfig
+    ModelDeployConfig (ModelDeployConfig'),
+    newModelDeployConfig,
+
+    -- ** ModelDeployResult
+    ModelDeployResult (ModelDeployResult'),
+    newModelDeployResult,
+
+    -- ** ModelDigests
+    ModelDigests (ModelDigests'),
+    newModelDigests,
+
+    -- ** ModelExplainabilityAppSpecification
+    ModelExplainabilityAppSpecification (ModelExplainabilityAppSpecification'),
+    newModelExplainabilityAppSpecification,
+
+    -- ** ModelExplainabilityBaselineConfig
+    ModelExplainabilityBaselineConfig (ModelExplainabilityBaselineConfig'),
+    newModelExplainabilityBaselineConfig,
+
+    -- ** ModelExplainabilityJobInput
+    ModelExplainabilityJobInput (ModelExplainabilityJobInput'),
+    newModelExplainabilityJobInput,
+
+    -- ** ModelInfrastructureConfig
+    ModelInfrastructureConfig (ModelInfrastructureConfig'),
+    newModelInfrastructureConfig,
+
+    -- ** ModelInput
+    ModelInput (ModelInput'),
+    newModelInput,
+
+    -- ** ModelLatencyThreshold
+    ModelLatencyThreshold (ModelLatencyThreshold'),
+    newModelLatencyThreshold,
+
+    -- ** ModelMetadataFilter
+    ModelMetadataFilter (ModelMetadataFilter'),
+    newModelMetadataFilter,
+
+    -- ** ModelMetadataSearchExpression
+    ModelMetadataSearchExpression (ModelMetadataSearchExpression'),
+    newModelMetadataSearchExpression,
+
+    -- ** ModelMetadataSummary
+    ModelMetadataSummary (ModelMetadataSummary'),
+    newModelMetadataSummary,
+
+    -- ** ModelMetrics
+    ModelMetrics (ModelMetrics'),
+    newModelMetrics,
+
+    -- ** ModelPackage
+    ModelPackage (ModelPackage'),
+    newModelPackage,
+
+    -- ** ModelPackageContainerDefinition
+    ModelPackageContainerDefinition (ModelPackageContainerDefinition'),
+    newModelPackageContainerDefinition,
+
+    -- ** ModelPackageGroup
+    ModelPackageGroup (ModelPackageGroup'),
+    newModelPackageGroup,
+
+    -- ** ModelPackageGroupSummary
+    ModelPackageGroupSummary (ModelPackageGroupSummary'),
+    newModelPackageGroupSummary,
+
+    -- ** ModelPackageStatusDetails
+    ModelPackageStatusDetails (ModelPackageStatusDetails'),
+    newModelPackageStatusDetails,
+
+    -- ** ModelPackageStatusItem
+    ModelPackageStatusItem (ModelPackageStatusItem'),
+    newModelPackageStatusItem,
+
+    -- ** ModelPackageSummary
+    ModelPackageSummary (ModelPackageSummary'),
+    newModelPackageSummary,
+
+    -- ** ModelPackageValidationProfile
+    ModelPackageValidationProfile (ModelPackageValidationProfile'),
+    newModelPackageValidationProfile,
+
+    -- ** ModelPackageValidationSpecification
+    ModelPackageValidationSpecification (ModelPackageValidationSpecification'),
+    newModelPackageValidationSpecification,
+
+    -- ** ModelQuality
+    ModelQuality (ModelQuality'),
+    newModelQuality,
+
+    -- ** ModelQualityAppSpecification
+    ModelQualityAppSpecification (ModelQualityAppSpecification'),
+    newModelQualityAppSpecification,
+
+    -- ** ModelQualityBaselineConfig
+    ModelQualityBaselineConfig (ModelQualityBaselineConfig'),
+    newModelQualityBaselineConfig,
+
+    -- ** ModelQualityJobInput
+    ModelQualityJobInput (ModelQualityJobInput'),
+    newModelQualityJobInput,
+
+    -- ** ModelStepMetadata
+    ModelStepMetadata (ModelStepMetadata'),
+    newModelStepMetadata,
+
+    -- ** ModelSummary
+    ModelSummary (ModelSummary'),
+    newModelSummary,
+
+    -- ** ModelVariantConfig
+    ModelVariantConfig (ModelVariantConfig'),
+    newModelVariantConfig,
+
+    -- ** ModelVariantConfigSummary
+    ModelVariantConfigSummary (ModelVariantConfigSummary'),
+    newModelVariantConfigSummary,
+
+    -- ** MonitoringAlertActions
+    MonitoringAlertActions (MonitoringAlertActions'),
+    newMonitoringAlertActions,
+
+    -- ** MonitoringAlertHistorySummary
+    MonitoringAlertHistorySummary (MonitoringAlertHistorySummary'),
+    newMonitoringAlertHistorySummary,
+
+    -- ** MonitoringAlertSummary
+    MonitoringAlertSummary (MonitoringAlertSummary'),
+    newMonitoringAlertSummary,
+
+    -- ** MonitoringAppSpecification
+    MonitoringAppSpecification (MonitoringAppSpecification'),
+    newMonitoringAppSpecification,
+
+    -- ** MonitoringBaselineConfig
+    MonitoringBaselineConfig (MonitoringBaselineConfig'),
+    newMonitoringBaselineConfig,
+
+    -- ** MonitoringClusterConfig
+    MonitoringClusterConfig (MonitoringClusterConfig'),
+    newMonitoringClusterConfig,
+
+    -- ** MonitoringConstraintsResource
+    MonitoringConstraintsResource (MonitoringConstraintsResource'),
+    newMonitoringConstraintsResource,
+
+    -- ** MonitoringCsvDatasetFormat
+    MonitoringCsvDatasetFormat (MonitoringCsvDatasetFormat'),
+    newMonitoringCsvDatasetFormat,
+
+    -- ** MonitoringDatasetFormat
+    MonitoringDatasetFormat (MonitoringDatasetFormat'),
+    newMonitoringDatasetFormat,
+
+    -- ** MonitoringExecutionSummary
+    MonitoringExecutionSummary (MonitoringExecutionSummary'),
+    newMonitoringExecutionSummary,
+
+    -- ** MonitoringGroundTruthS3Input
+    MonitoringGroundTruthS3Input (MonitoringGroundTruthS3Input'),
+    newMonitoringGroundTruthS3Input,
+
+    -- ** MonitoringInput
+    MonitoringInput (MonitoringInput'),
+    newMonitoringInput,
+
+    -- ** MonitoringJobDefinition
+    MonitoringJobDefinition (MonitoringJobDefinition'),
+    newMonitoringJobDefinition,
+
+    -- ** MonitoringJobDefinitionSummary
+    MonitoringJobDefinitionSummary (MonitoringJobDefinitionSummary'),
+    newMonitoringJobDefinitionSummary,
+
+    -- ** MonitoringJsonDatasetFormat
+    MonitoringJsonDatasetFormat (MonitoringJsonDatasetFormat'),
+    newMonitoringJsonDatasetFormat,
+
+    -- ** MonitoringNetworkConfig
+    MonitoringNetworkConfig (MonitoringNetworkConfig'),
+    newMonitoringNetworkConfig,
+
+    -- ** MonitoringOutput
+    MonitoringOutput (MonitoringOutput'),
+    newMonitoringOutput,
+
+    -- ** MonitoringOutputConfig
+    MonitoringOutputConfig (MonitoringOutputConfig'),
+    newMonitoringOutputConfig,
+
+    -- ** MonitoringParquetDatasetFormat
+    MonitoringParquetDatasetFormat (MonitoringParquetDatasetFormat'),
+    newMonitoringParquetDatasetFormat,
+
+    -- ** MonitoringResources
+    MonitoringResources (MonitoringResources'),
+    newMonitoringResources,
+
+    -- ** MonitoringS3Output
+    MonitoringS3Output (MonitoringS3Output'),
+    newMonitoringS3Output,
+
+    -- ** MonitoringSchedule
+    MonitoringSchedule (MonitoringSchedule'),
+    newMonitoringSchedule,
+
+    -- ** MonitoringScheduleConfig
+    MonitoringScheduleConfig (MonitoringScheduleConfig'),
+    newMonitoringScheduleConfig,
+
+    -- ** MonitoringScheduleSummary
+    MonitoringScheduleSummary (MonitoringScheduleSummary'),
+    newMonitoringScheduleSummary,
+
+    -- ** MonitoringStatisticsResource
+    MonitoringStatisticsResource (MonitoringStatisticsResource'),
+    newMonitoringStatisticsResource,
+
+    -- ** MonitoringStoppingCondition
+    MonitoringStoppingCondition (MonitoringStoppingCondition'),
+    newMonitoringStoppingCondition,
+
+    -- ** MultiModelConfig
+    MultiModelConfig (MultiModelConfig'),
+    newMultiModelConfig,
+
+    -- ** NeoVpcConfig
+    NeoVpcConfig (NeoVpcConfig'),
+    newNeoVpcConfig,
+
+    -- ** NestedFilters
+    NestedFilters (NestedFilters'),
+    newNestedFilters,
+
+    -- ** NetworkConfig
+    NetworkConfig (NetworkConfig'),
+    newNetworkConfig,
+
+    -- ** NotebookInstanceLifecycleConfigSummary
+    NotebookInstanceLifecycleConfigSummary (NotebookInstanceLifecycleConfigSummary'),
+    newNotebookInstanceLifecycleConfigSummary,
+
+    -- ** NotebookInstanceLifecycleHook
+    NotebookInstanceLifecycleHook (NotebookInstanceLifecycleHook'),
+    newNotebookInstanceLifecycleHook,
+
+    -- ** NotebookInstanceSummary
+    NotebookInstanceSummary (NotebookInstanceSummary'),
+    newNotebookInstanceSummary,
+
+    -- ** NotificationConfiguration
+    NotificationConfiguration (NotificationConfiguration'),
+    newNotificationConfiguration,
+
+    -- ** ObjectiveStatusCounters
+    ObjectiveStatusCounters (ObjectiveStatusCounters'),
+    newObjectiveStatusCounters,
+
+    -- ** OfflineStoreConfig
+    OfflineStoreConfig (OfflineStoreConfig'),
+    newOfflineStoreConfig,
+
+    -- ** OfflineStoreStatus
+    OfflineStoreStatus (OfflineStoreStatus'),
+    newOfflineStoreStatus,
+
+    -- ** OidcConfig
+    OidcConfig (OidcConfig'),
+    newOidcConfig,
+
+    -- ** OidcConfigForResponse
+    OidcConfigForResponse (OidcConfigForResponse'),
+    newOidcConfigForResponse,
+
+    -- ** OidcMemberDefinition
+    OidcMemberDefinition (OidcMemberDefinition'),
+    newOidcMemberDefinition,
+
+    -- ** OnlineStoreConfig
+    OnlineStoreConfig (OnlineStoreConfig'),
+    newOnlineStoreConfig,
+
+    -- ** OnlineStoreSecurityConfig
+    OnlineStoreSecurityConfig (OnlineStoreSecurityConfig'),
+    newOnlineStoreSecurityConfig,
+
+    -- ** OutputConfig
+    OutputConfig (OutputConfig'),
+    newOutputConfig,
+
+    -- ** OutputDataConfig
+    OutputDataConfig (OutputDataConfig'),
+    newOutputDataConfig,
+
+    -- ** OutputParameter
+    OutputParameter (OutputParameter'),
+    newOutputParameter,
+
+    -- ** ParallelismConfiguration
+    ParallelismConfiguration (ParallelismConfiguration'),
+    newParallelismConfiguration,
+
+    -- ** Parameter
+    Parameter (Parameter'),
+    newParameter,
+
+    -- ** ParameterRange
+    ParameterRange (ParameterRange'),
+    newParameterRange,
+
+    -- ** ParameterRanges
+    ParameterRanges (ParameterRanges'),
+    newParameterRanges,
+
+    -- ** Parent
+    Parent (Parent'),
+    newParent,
+
+    -- ** ParentHyperParameterTuningJob
+    ParentHyperParameterTuningJob (ParentHyperParameterTuningJob'),
+    newParentHyperParameterTuningJob,
+
+    -- ** PendingDeploymentSummary
+    PendingDeploymentSummary (PendingDeploymentSummary'),
+    newPendingDeploymentSummary,
+
+    -- ** PendingProductionVariantSummary
+    PendingProductionVariantSummary (PendingProductionVariantSummary'),
+    newPendingProductionVariantSummary,
+
+    -- ** Phase
+    Phase (Phase'),
+    newPhase,
+
+    -- ** Pipeline
+    Pipeline (Pipeline'),
+    newPipeline,
+
+    -- ** PipelineDefinitionS3Location
+    PipelineDefinitionS3Location (PipelineDefinitionS3Location'),
+    newPipelineDefinitionS3Location,
+
+    -- ** PipelineExecution
+    PipelineExecution (PipelineExecution'),
+    newPipelineExecution,
+
+    -- ** PipelineExecutionStep
+    PipelineExecutionStep (PipelineExecutionStep'),
+    newPipelineExecutionStep,
+
+    -- ** PipelineExecutionStepMetadata
+    PipelineExecutionStepMetadata (PipelineExecutionStepMetadata'),
+    newPipelineExecutionStepMetadata,
+
+    -- ** PipelineExecutionSummary
+    PipelineExecutionSummary (PipelineExecutionSummary'),
+    newPipelineExecutionSummary,
+
+    -- ** PipelineExperimentConfig
+    PipelineExperimentConfig (PipelineExperimentConfig'),
+    newPipelineExperimentConfig,
+
+    -- ** PipelineSummary
+    PipelineSummary (PipelineSummary'),
+    newPipelineSummary,
+
+    -- ** ProcessingClusterConfig
+    ProcessingClusterConfig (ProcessingClusterConfig'),
+    newProcessingClusterConfig,
+
+    -- ** ProcessingFeatureStoreOutput
+    ProcessingFeatureStoreOutput (ProcessingFeatureStoreOutput'),
+    newProcessingFeatureStoreOutput,
+
+    -- ** ProcessingInput
+    ProcessingInput (ProcessingInput'),
+    newProcessingInput,
+
+    -- ** ProcessingJob
+    ProcessingJob (ProcessingJob'),
+    newProcessingJob,
+
+    -- ** ProcessingJobStepMetadata
+    ProcessingJobStepMetadata (ProcessingJobStepMetadata'),
+    newProcessingJobStepMetadata,
+
+    -- ** ProcessingJobSummary
+    ProcessingJobSummary (ProcessingJobSummary'),
+    newProcessingJobSummary,
+
+    -- ** ProcessingOutput
+    ProcessingOutput (ProcessingOutput'),
+    newProcessingOutput,
+
+    -- ** ProcessingOutputConfig
+    ProcessingOutputConfig (ProcessingOutputConfig'),
+    newProcessingOutputConfig,
+
+    -- ** ProcessingResources
+    ProcessingResources (ProcessingResources'),
+    newProcessingResources,
+
+    -- ** ProcessingS3Input
+    ProcessingS3Input (ProcessingS3Input'),
+    newProcessingS3Input,
+
+    -- ** ProcessingS3Output
+    ProcessingS3Output (ProcessingS3Output'),
+    newProcessingS3Output,
+
+    -- ** ProcessingStoppingCondition
+    ProcessingStoppingCondition (ProcessingStoppingCondition'),
+    newProcessingStoppingCondition,
+
+    -- ** ProductionVariant
+    ProductionVariant (ProductionVariant'),
+    newProductionVariant,
+
+    -- ** ProductionVariantCoreDumpConfig
+    ProductionVariantCoreDumpConfig (ProductionVariantCoreDumpConfig'),
+    newProductionVariantCoreDumpConfig,
+
+    -- ** ProductionVariantServerlessConfig
+    ProductionVariantServerlessConfig (ProductionVariantServerlessConfig'),
+    newProductionVariantServerlessConfig,
+
+    -- ** ProductionVariantStatus
+    ProductionVariantStatus (ProductionVariantStatus'),
+    newProductionVariantStatus,
+
+    -- ** ProductionVariantSummary
+    ProductionVariantSummary (ProductionVariantSummary'),
+    newProductionVariantSummary,
+
+    -- ** ProfilerConfig
+    ProfilerConfig (ProfilerConfig'),
+    newProfilerConfig,
+
+    -- ** ProfilerConfigForUpdate
+    ProfilerConfigForUpdate (ProfilerConfigForUpdate'),
+    newProfilerConfigForUpdate,
+
+    -- ** ProfilerRuleConfiguration
+    ProfilerRuleConfiguration (ProfilerRuleConfiguration'),
+    newProfilerRuleConfiguration,
+
+    -- ** ProfilerRuleEvaluationStatus
+    ProfilerRuleEvaluationStatus (ProfilerRuleEvaluationStatus'),
+    newProfilerRuleEvaluationStatus,
+
+    -- ** Project
+    Project (Project'),
+    newProject,
+
+    -- ** ProjectSummary
+    ProjectSummary (ProjectSummary'),
+    newProjectSummary,
+
+    -- ** PropertyNameQuery
+    PropertyNameQuery (PropertyNameQuery'),
+    newPropertyNameQuery,
+
+    -- ** PropertyNameSuggestion
+    PropertyNameSuggestion (PropertyNameSuggestion'),
+    newPropertyNameSuggestion,
+
+    -- ** ProvisioningParameter
+    ProvisioningParameter (ProvisioningParameter'),
+    newProvisioningParameter,
+
+    -- ** PublicWorkforceTaskPrice
+    PublicWorkforceTaskPrice (PublicWorkforceTaskPrice'),
+    newPublicWorkforceTaskPrice,
+
+    -- ** QualityCheckStepMetadata
+    QualityCheckStepMetadata (QualityCheckStepMetadata'),
+    newQualityCheckStepMetadata,
+
+    -- ** QueryFilters
+    QueryFilters (QueryFilters'),
+    newQueryFilters,
+
+    -- ** RSessionAppSettings
+    RSessionAppSettings (RSessionAppSettings'),
+    newRSessionAppSettings,
+
+    -- ** RStudioServerProAppSettings
+    RStudioServerProAppSettings (RStudioServerProAppSettings'),
+    newRStudioServerProAppSettings,
+
+    -- ** RStudioServerProDomainSettings
+    RStudioServerProDomainSettings (RStudioServerProDomainSettings'),
+    newRStudioServerProDomainSettings,
+
+    -- ** RStudioServerProDomainSettingsForUpdate
+    RStudioServerProDomainSettingsForUpdate (RStudioServerProDomainSettingsForUpdate'),
+    newRStudioServerProDomainSettingsForUpdate,
+
+    -- ** RealTimeInferenceConfig
+    RealTimeInferenceConfig (RealTimeInferenceConfig'),
+    newRealTimeInferenceConfig,
+
+    -- ** RecommendationJobCompiledOutputConfig
+    RecommendationJobCompiledOutputConfig (RecommendationJobCompiledOutputConfig'),
+    newRecommendationJobCompiledOutputConfig,
+
+    -- ** RecommendationJobContainerConfig
+    RecommendationJobContainerConfig (RecommendationJobContainerConfig'),
+    newRecommendationJobContainerConfig,
+
+    -- ** RecommendationJobInferenceBenchmark
+    RecommendationJobInferenceBenchmark (RecommendationJobInferenceBenchmark'),
+    newRecommendationJobInferenceBenchmark,
+
+    -- ** RecommendationJobInputConfig
+    RecommendationJobInputConfig (RecommendationJobInputConfig'),
+    newRecommendationJobInputConfig,
+
+    -- ** RecommendationJobOutputConfig
+    RecommendationJobOutputConfig (RecommendationJobOutputConfig'),
+    newRecommendationJobOutputConfig,
+
+    -- ** RecommendationJobPayloadConfig
+    RecommendationJobPayloadConfig (RecommendationJobPayloadConfig'),
+    newRecommendationJobPayloadConfig,
+
+    -- ** RecommendationJobResourceLimit
+    RecommendationJobResourceLimit (RecommendationJobResourceLimit'),
+    newRecommendationJobResourceLimit,
+
+    -- ** RecommendationJobStoppingConditions
+    RecommendationJobStoppingConditions (RecommendationJobStoppingConditions'),
+    newRecommendationJobStoppingConditions,
+
+    -- ** RecommendationJobVpcConfig
+    RecommendationJobVpcConfig (RecommendationJobVpcConfig'),
+    newRecommendationJobVpcConfig,
+
+    -- ** RecommendationMetrics
+    RecommendationMetrics (RecommendationMetrics'),
+    newRecommendationMetrics,
+
+    -- ** RedshiftDatasetDefinition
+    RedshiftDatasetDefinition (RedshiftDatasetDefinition'),
+    newRedshiftDatasetDefinition,
+
+    -- ** RegisterModelStepMetadata
+    RegisterModelStepMetadata (RegisterModelStepMetadata'),
+    newRegisterModelStepMetadata,
+
+    -- ** RenderableTask
+    RenderableTask (RenderableTask'),
+    newRenderableTask,
+
+    -- ** RenderingError
+    RenderingError (RenderingError'),
+    newRenderingError,
+
+    -- ** RepositoryAuthConfig
+    RepositoryAuthConfig (RepositoryAuthConfig'),
+    newRepositoryAuthConfig,
+
+    -- ** ResolvedAttributes
+    ResolvedAttributes (ResolvedAttributes'),
+    newResolvedAttributes,
+
+    -- ** ResourceConfig
+    ResourceConfig (ResourceConfig'),
+    newResourceConfig,
+
+    -- ** ResourceConfigForUpdate
+    ResourceConfigForUpdate (ResourceConfigForUpdate'),
+    newResourceConfigForUpdate,
+
+    -- ** ResourceLimits
+    ResourceLimits (ResourceLimits'),
+    newResourceLimits,
+
+    -- ** ResourceSpec
+    ResourceSpec (ResourceSpec'),
+    newResourceSpec,
+
+    -- ** RetentionPolicy
+    RetentionPolicy (RetentionPolicy'),
+    newRetentionPolicy,
+
+    -- ** RetryStrategy
+    RetryStrategy (RetryStrategy'),
+    newRetryStrategy,
+
+    -- ** S3DataSource
+    S3DataSource (S3DataSource'),
+    newS3DataSource,
+
+    -- ** S3StorageConfig
+    S3StorageConfig (S3StorageConfig'),
+    newS3StorageConfig,
+
+    -- ** ScheduleConfig
+    ScheduleConfig (ScheduleConfig'),
+    newScheduleConfig,
+
+    -- ** SearchExpression
+    SearchExpression (SearchExpression'),
+    newSearchExpression,
+
+    -- ** SearchRecord
+    SearchRecord (SearchRecord'),
+    newSearchRecord,
+
+    -- ** SecondaryStatusTransition
+    SecondaryStatusTransition (SecondaryStatusTransition'),
+    newSecondaryStatusTransition,
+
+    -- ** ServiceCatalogProvisionedProductDetails
+    ServiceCatalogProvisionedProductDetails (ServiceCatalogProvisionedProductDetails'),
+    newServiceCatalogProvisionedProductDetails,
+
+    -- ** ServiceCatalogProvisioningDetails
+    ServiceCatalogProvisioningDetails (ServiceCatalogProvisioningDetails'),
+    newServiceCatalogProvisioningDetails,
+
+    -- ** ServiceCatalogProvisioningUpdateDetails
+    ServiceCatalogProvisioningUpdateDetails (ServiceCatalogProvisioningUpdateDetails'),
+    newServiceCatalogProvisioningUpdateDetails,
+
+    -- ** ShadowModeConfig
+    ShadowModeConfig (ShadowModeConfig'),
+    newShadowModeConfig,
+
+    -- ** ShadowModelVariantConfig
+    ShadowModelVariantConfig (ShadowModelVariantConfig'),
+    newShadowModelVariantConfig,
+
+    -- ** SharingSettings
+    SharingSettings (SharingSettings'),
+    newSharingSettings,
+
+    -- ** ShuffleConfig
+    ShuffleConfig (ShuffleConfig'),
+    newShuffleConfig,
+
+    -- ** SourceAlgorithm
+    SourceAlgorithm (SourceAlgorithm'),
+    newSourceAlgorithm,
+
+    -- ** SourceAlgorithmSpecification
+    SourceAlgorithmSpecification (SourceAlgorithmSpecification'),
+    newSourceAlgorithmSpecification,
+
+    -- ** SourceIpConfig
+    SourceIpConfig (SourceIpConfig'),
+    newSourceIpConfig,
+
+    -- ** SpaceDetails
+    SpaceDetails (SpaceDetails'),
+    newSpaceDetails,
+
+    -- ** SpaceSettings
+    SpaceSettings (SpaceSettings'),
+    newSpaceSettings,
+
+    -- ** StoppingCondition
+    StoppingCondition (StoppingCondition'),
+    newStoppingCondition,
+
+    -- ** StudioLifecycleConfigDetails
+    StudioLifecycleConfigDetails (StudioLifecycleConfigDetails'),
+    newStudioLifecycleConfigDetails,
+
+    -- ** SubscribedWorkteam
+    SubscribedWorkteam (SubscribedWorkteam'),
+    newSubscribedWorkteam,
+
+    -- ** SuggestionQuery
+    SuggestionQuery (SuggestionQuery'),
+    newSuggestionQuery,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TargetPlatform
+    TargetPlatform (TargetPlatform'),
+    newTargetPlatform,
+
+    -- ** TensorBoardAppSettings
+    TensorBoardAppSettings (TensorBoardAppSettings'),
+    newTensorBoardAppSettings,
+
+    -- ** TensorBoardOutputConfig
+    TensorBoardOutputConfig (TensorBoardOutputConfig'),
+    newTensorBoardOutputConfig,
+
+    -- ** TimeSeriesForecastingSettings
+    TimeSeriesForecastingSettings (TimeSeriesForecastingSettings'),
+    newTimeSeriesForecastingSettings,
+
+    -- ** TrafficPattern
+    TrafficPattern (TrafficPattern'),
+    newTrafficPattern,
+
+    -- ** TrafficRoutingConfig
+    TrafficRoutingConfig (TrafficRoutingConfig'),
+    newTrafficRoutingConfig,
+
+    -- ** TrainingJob
+    TrainingJob (TrainingJob'),
+    newTrainingJob,
+
+    -- ** TrainingJobDefinition
+    TrainingJobDefinition (TrainingJobDefinition'),
+    newTrainingJobDefinition,
+
+    -- ** TrainingJobStatusCounters
+    TrainingJobStatusCounters (TrainingJobStatusCounters'),
+    newTrainingJobStatusCounters,
+
+    -- ** TrainingJobStepMetadata
+    TrainingJobStepMetadata (TrainingJobStepMetadata'),
+    newTrainingJobStepMetadata,
+
+    -- ** TrainingJobSummary
+    TrainingJobSummary (TrainingJobSummary'),
+    newTrainingJobSummary,
+
+    -- ** TrainingSpecification
+    TrainingSpecification (TrainingSpecification'),
+    newTrainingSpecification,
+
+    -- ** TransformDataSource
+    TransformDataSource (TransformDataSource'),
+    newTransformDataSource,
+
+    -- ** TransformInput
+    TransformInput (TransformInput'),
+    newTransformInput,
+
+    -- ** TransformJob
+    TransformJob (TransformJob'),
+    newTransformJob,
+
+    -- ** TransformJobDefinition
+    TransformJobDefinition (TransformJobDefinition'),
+    newTransformJobDefinition,
+
+    -- ** TransformJobStepMetadata
+    TransformJobStepMetadata (TransformJobStepMetadata'),
+    newTransformJobStepMetadata,
+
+    -- ** TransformJobSummary
+    TransformJobSummary (TransformJobSummary'),
+    newTransformJobSummary,
+
+    -- ** TransformOutput
+    TransformOutput (TransformOutput'),
+    newTransformOutput,
+
+    -- ** TransformResources
+    TransformResources (TransformResources'),
+    newTransformResources,
+
+    -- ** TransformS3DataSource
+    TransformS3DataSource (TransformS3DataSource'),
+    newTransformS3DataSource,
+
+    -- ** Trial
+    Trial (Trial'),
+    newTrial,
+
+    -- ** TrialComponent
+    TrialComponent (TrialComponent'),
+    newTrialComponent,
+
+    -- ** TrialComponentArtifact
+    TrialComponentArtifact (TrialComponentArtifact'),
+    newTrialComponentArtifact,
+
+    -- ** TrialComponentMetricSummary
+    TrialComponentMetricSummary (TrialComponentMetricSummary'),
+    newTrialComponentMetricSummary,
+
+    -- ** TrialComponentParameterValue
+    TrialComponentParameterValue (TrialComponentParameterValue'),
+    newTrialComponentParameterValue,
+
+    -- ** TrialComponentSimpleSummary
+    TrialComponentSimpleSummary (TrialComponentSimpleSummary'),
+    newTrialComponentSimpleSummary,
+
+    -- ** TrialComponentSource
+    TrialComponentSource (TrialComponentSource'),
+    newTrialComponentSource,
+
+    -- ** TrialComponentSourceDetail
+    TrialComponentSourceDetail (TrialComponentSourceDetail'),
+    newTrialComponentSourceDetail,
+
+    -- ** TrialComponentStatus
+    TrialComponentStatus (TrialComponentStatus'),
+    newTrialComponentStatus,
+
+    -- ** TrialComponentSummary
+    TrialComponentSummary (TrialComponentSummary'),
+    newTrialComponentSummary,
+
+    -- ** TrialSource
+    TrialSource (TrialSource'),
+    newTrialSource,
+
+    -- ** TrialSummary
+    TrialSummary (TrialSummary'),
+    newTrialSummary,
+
+    -- ** TuningJobCompletionCriteria
+    TuningJobCompletionCriteria (TuningJobCompletionCriteria'),
+    newTuningJobCompletionCriteria,
+
+    -- ** TuningJobStepMetaData
+    TuningJobStepMetaData (TuningJobStepMetaData'),
+    newTuningJobStepMetaData,
+
+    -- ** USD
+    USD (USD'),
+    newUSD,
+
+    -- ** UiConfig
+    UiConfig (UiConfig'),
+    newUiConfig,
+
+    -- ** UiTemplate
+    UiTemplate (UiTemplate'),
+    newUiTemplate,
+
+    -- ** UiTemplateInfo
+    UiTemplateInfo (UiTemplateInfo'),
+    newUiTemplateInfo,
+
+    -- ** UserContext
+    UserContext (UserContext'),
+    newUserContext,
+
+    -- ** UserProfileDetails
+    UserProfileDetails (UserProfileDetails'),
+    newUserProfileDetails,
+
+    -- ** UserSettings
+    UserSettings (UserSettings'),
+    newUserSettings,
+
+    -- ** VariantProperty
+    VariantProperty (VariantProperty'),
+    newVariantProperty,
+
+    -- ** Vertex
+    Vertex (Vertex'),
+    newVertex,
+
+    -- ** VpcConfig
+    VpcConfig (VpcConfig'),
+    newVpcConfig,
+
+    -- ** WarmPoolStatus
+    WarmPoolStatus (WarmPoolStatus'),
+    newWarmPoolStatus,
+
+    -- ** Workforce
+    Workforce (Workforce'),
+    newWorkforce,
+
+    -- ** WorkforceVpcConfigRequest
+    WorkforceVpcConfigRequest (WorkforceVpcConfigRequest'),
+    newWorkforceVpcConfigRequest,
+
+    -- ** WorkforceVpcConfigResponse
+    WorkforceVpcConfigResponse (WorkforceVpcConfigResponse'),
+    newWorkforceVpcConfigResponse,
+
+    -- ** Workteam
+    Workteam (Workteam'),
+    newWorkteam,
+  )
+where
+
+import Amazonka.SageMaker.AddAssociation
+import Amazonka.SageMaker.AddTags
+import Amazonka.SageMaker.AssociateTrialComponent
+import Amazonka.SageMaker.BatchDescribeModelPackage
+import Amazonka.SageMaker.CreateAction
+import Amazonka.SageMaker.CreateAlgorithm
+import Amazonka.SageMaker.CreateApp
+import Amazonka.SageMaker.CreateAppImageConfig
+import Amazonka.SageMaker.CreateArtifact
+import Amazonka.SageMaker.CreateAutoMLJob
+import Amazonka.SageMaker.CreateCodeRepository
+import Amazonka.SageMaker.CreateCompilationJob
+import Amazonka.SageMaker.CreateContext
+import Amazonka.SageMaker.CreateDataQualityJobDefinition
+import Amazonka.SageMaker.CreateDeviceFleet
+import Amazonka.SageMaker.CreateDomain
+import Amazonka.SageMaker.CreateEdgeDeploymentPlan
+import Amazonka.SageMaker.CreateEdgeDeploymentStage
+import Amazonka.SageMaker.CreateEdgePackagingJob
+import Amazonka.SageMaker.CreateEndpoint
+import Amazonka.SageMaker.CreateEndpointConfig
+import Amazonka.SageMaker.CreateExperiment
+import Amazonka.SageMaker.CreateFeatureGroup
+import Amazonka.SageMaker.CreateFlowDefinition
+import Amazonka.SageMaker.CreateHub
+import Amazonka.SageMaker.CreateHumanTaskUi
+import Amazonka.SageMaker.CreateHyperParameterTuningJob
+import Amazonka.SageMaker.CreateImage
+import Amazonka.SageMaker.CreateImageVersion
+import Amazonka.SageMaker.CreateInferenceExperiment
+import Amazonka.SageMaker.CreateInferenceRecommendationsJob
+import Amazonka.SageMaker.CreateLabelingJob
+import Amazonka.SageMaker.CreateModel
+import Amazonka.SageMaker.CreateModelBiasJobDefinition
+import Amazonka.SageMaker.CreateModelCard
+import Amazonka.SageMaker.CreateModelCardExportJob
+import Amazonka.SageMaker.CreateModelExplainabilityJobDefinition
+import Amazonka.SageMaker.CreateModelPackage
+import Amazonka.SageMaker.CreateModelPackageGroup
+import Amazonka.SageMaker.CreateModelQualityJobDefinition
+import Amazonka.SageMaker.CreateMonitoringSchedule
+import Amazonka.SageMaker.CreateNotebookInstance
+import Amazonka.SageMaker.CreateNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.CreatePipeline
+import Amazonka.SageMaker.CreatePresignedDomainUrl
+import Amazonka.SageMaker.CreatePresignedNotebookInstanceUrl
+import Amazonka.SageMaker.CreateProcessingJob
+import Amazonka.SageMaker.CreateProject
+import Amazonka.SageMaker.CreateSpace
+import Amazonka.SageMaker.CreateStudioLifecycleConfig
+import Amazonka.SageMaker.CreateTrainingJob
+import Amazonka.SageMaker.CreateTransformJob
+import Amazonka.SageMaker.CreateTrial
+import Amazonka.SageMaker.CreateTrialComponent
+import Amazonka.SageMaker.CreateUserProfile
+import Amazonka.SageMaker.CreateWorkforce
+import Amazonka.SageMaker.CreateWorkteam
+import Amazonka.SageMaker.DeleteAction
+import Amazonka.SageMaker.DeleteAlgorithm
+import Amazonka.SageMaker.DeleteApp
+import Amazonka.SageMaker.DeleteAppImageConfig
+import Amazonka.SageMaker.DeleteArtifact
+import Amazonka.SageMaker.DeleteAssociation
+import Amazonka.SageMaker.DeleteCodeRepository
+import Amazonka.SageMaker.DeleteContext
+import Amazonka.SageMaker.DeleteDataQualityJobDefinition
+import Amazonka.SageMaker.DeleteDeviceFleet
+import Amazonka.SageMaker.DeleteDomain
+import Amazonka.SageMaker.DeleteEdgeDeploymentPlan
+import Amazonka.SageMaker.DeleteEdgeDeploymentStage
+import Amazonka.SageMaker.DeleteEndpoint
+import Amazonka.SageMaker.DeleteEndpointConfig
+import Amazonka.SageMaker.DeleteExperiment
+import Amazonka.SageMaker.DeleteFeatureGroup
+import Amazonka.SageMaker.DeleteFlowDefinition
+import Amazonka.SageMaker.DeleteHub
+import Amazonka.SageMaker.DeleteHubContent
+import Amazonka.SageMaker.DeleteHumanTaskUi
+import Amazonka.SageMaker.DeleteImage
+import Amazonka.SageMaker.DeleteImageVersion
+import Amazonka.SageMaker.DeleteInferenceExperiment
+import Amazonka.SageMaker.DeleteModel
+import Amazonka.SageMaker.DeleteModelBiasJobDefinition
+import Amazonka.SageMaker.DeleteModelCard
+import Amazonka.SageMaker.DeleteModelExplainabilityJobDefinition
+import Amazonka.SageMaker.DeleteModelPackage
+import Amazonka.SageMaker.DeleteModelPackageGroup
+import Amazonka.SageMaker.DeleteModelPackageGroupPolicy
+import Amazonka.SageMaker.DeleteModelQualityJobDefinition
+import Amazonka.SageMaker.DeleteMonitoringSchedule
+import Amazonka.SageMaker.DeleteNotebookInstance
+import Amazonka.SageMaker.DeleteNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.DeletePipeline
+import Amazonka.SageMaker.DeleteProject
+import Amazonka.SageMaker.DeleteSpace
+import Amazonka.SageMaker.DeleteStudioLifecycleConfig
+import Amazonka.SageMaker.DeleteTags
+import Amazonka.SageMaker.DeleteTrial
+import Amazonka.SageMaker.DeleteTrialComponent
+import Amazonka.SageMaker.DeleteUserProfile
+import Amazonka.SageMaker.DeleteWorkforce
+import Amazonka.SageMaker.DeleteWorkteam
+import Amazonka.SageMaker.DeregisterDevices
+import Amazonka.SageMaker.DescribeAction
+import Amazonka.SageMaker.DescribeAlgorithm
+import Amazonka.SageMaker.DescribeApp
+import Amazonka.SageMaker.DescribeAppImageConfig
+import Amazonka.SageMaker.DescribeArtifact
+import Amazonka.SageMaker.DescribeAutoMLJob
+import Amazonka.SageMaker.DescribeCodeRepository
+import Amazonka.SageMaker.DescribeCompilationJob
+import Amazonka.SageMaker.DescribeContext
+import Amazonka.SageMaker.DescribeDataQualityJobDefinition
+import Amazonka.SageMaker.DescribeDevice
+import Amazonka.SageMaker.DescribeDeviceFleet
+import Amazonka.SageMaker.DescribeDomain
+import Amazonka.SageMaker.DescribeEdgeDeploymentPlan
+import Amazonka.SageMaker.DescribeEdgePackagingJob
+import Amazonka.SageMaker.DescribeEndpoint
+import Amazonka.SageMaker.DescribeEndpointConfig
+import Amazonka.SageMaker.DescribeExperiment
+import Amazonka.SageMaker.DescribeFeatureGroup
+import Amazonka.SageMaker.DescribeFeatureMetadata
+import Amazonka.SageMaker.DescribeFlowDefinition
+import Amazonka.SageMaker.DescribeHub
+import Amazonka.SageMaker.DescribeHubContent
+import Amazonka.SageMaker.DescribeHumanTaskUi
+import Amazonka.SageMaker.DescribeHyperParameterTuningJob
+import Amazonka.SageMaker.DescribeImage
+import Amazonka.SageMaker.DescribeImageVersion
+import Amazonka.SageMaker.DescribeInferenceExperiment
+import Amazonka.SageMaker.DescribeInferenceRecommendationsJob
+import Amazonka.SageMaker.DescribeLabelingJob
+import Amazonka.SageMaker.DescribeLineageGroup
+import Amazonka.SageMaker.DescribeModel
+import Amazonka.SageMaker.DescribeModelBiasJobDefinition
+import Amazonka.SageMaker.DescribeModelCard
+import Amazonka.SageMaker.DescribeModelCardExportJob
+import Amazonka.SageMaker.DescribeModelExplainabilityJobDefinition
+import Amazonka.SageMaker.DescribeModelPackage
+import Amazonka.SageMaker.DescribeModelPackageGroup
+import Amazonka.SageMaker.DescribeModelQualityJobDefinition
+import Amazonka.SageMaker.DescribeMonitoringSchedule
+import Amazonka.SageMaker.DescribeNotebookInstance
+import Amazonka.SageMaker.DescribeNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.DescribePipeline
+import Amazonka.SageMaker.DescribePipelineDefinitionForExecution
+import Amazonka.SageMaker.DescribePipelineExecution
+import Amazonka.SageMaker.DescribeProcessingJob
+import Amazonka.SageMaker.DescribeProject
+import Amazonka.SageMaker.DescribeSpace
+import Amazonka.SageMaker.DescribeStudioLifecycleConfig
+import Amazonka.SageMaker.DescribeSubscribedWorkteam
+import Amazonka.SageMaker.DescribeTrainingJob
+import Amazonka.SageMaker.DescribeTransformJob
+import Amazonka.SageMaker.DescribeTrial
+import Amazonka.SageMaker.DescribeTrialComponent
+import Amazonka.SageMaker.DescribeUserProfile
+import Amazonka.SageMaker.DescribeWorkforce
+import Amazonka.SageMaker.DescribeWorkteam
+import Amazonka.SageMaker.DisableSagemakerServicecatalogPortfolio
+import Amazonka.SageMaker.DisassociateTrialComponent
+import Amazonka.SageMaker.EnableSagemakerServicecatalogPortfolio
+import Amazonka.SageMaker.GetDeviceFleetReport
+import Amazonka.SageMaker.GetLineageGroupPolicy
+import Amazonka.SageMaker.GetModelPackageGroupPolicy
+import Amazonka.SageMaker.GetSagemakerServicecatalogPortfolioStatus
+import Amazonka.SageMaker.GetSearchSuggestions
+import Amazonka.SageMaker.ImportHubContent
+import Amazonka.SageMaker.Lens
+import Amazonka.SageMaker.ListActions
+import Amazonka.SageMaker.ListAlgorithms
+import Amazonka.SageMaker.ListAliases
+import Amazonka.SageMaker.ListAppImageConfigs
+import Amazonka.SageMaker.ListApps
+import Amazonka.SageMaker.ListArtifacts
+import Amazonka.SageMaker.ListAssociations
+import Amazonka.SageMaker.ListAutoMLJobs
+import Amazonka.SageMaker.ListCandidatesForAutoMLJob
+import Amazonka.SageMaker.ListCodeRepositories
+import Amazonka.SageMaker.ListCompilationJobs
+import Amazonka.SageMaker.ListContexts
+import Amazonka.SageMaker.ListDataQualityJobDefinitions
+import Amazonka.SageMaker.ListDeviceFleets
+import Amazonka.SageMaker.ListDevices
+import Amazonka.SageMaker.ListDomains
+import Amazonka.SageMaker.ListEdgeDeploymentPlans
+import Amazonka.SageMaker.ListEdgePackagingJobs
+import Amazonka.SageMaker.ListEndpointConfigs
+import Amazonka.SageMaker.ListEndpoints
+import Amazonka.SageMaker.ListExperiments
+import Amazonka.SageMaker.ListFeatureGroups
+import Amazonka.SageMaker.ListFlowDefinitions
+import Amazonka.SageMaker.ListHubContentVersions
+import Amazonka.SageMaker.ListHubContents
+import Amazonka.SageMaker.ListHubs
+import Amazonka.SageMaker.ListHumanTaskUis
+import Amazonka.SageMaker.ListHyperParameterTuningJobs
+import Amazonka.SageMaker.ListImageVersions
+import Amazonka.SageMaker.ListImages
+import Amazonka.SageMaker.ListInferenceExperiments
+import Amazonka.SageMaker.ListInferenceRecommendationsJobSteps
+import Amazonka.SageMaker.ListInferenceRecommendationsJobs
+import Amazonka.SageMaker.ListLabelingJobs
+import Amazonka.SageMaker.ListLabelingJobsForWorkteam
+import Amazonka.SageMaker.ListLineageGroups
+import Amazonka.SageMaker.ListModelBiasJobDefinitions
+import Amazonka.SageMaker.ListModelCardExportJobs
+import Amazonka.SageMaker.ListModelCardVersions
+import Amazonka.SageMaker.ListModelCards
+import Amazonka.SageMaker.ListModelExplainabilityJobDefinitions
+import Amazonka.SageMaker.ListModelMetadata
+import Amazonka.SageMaker.ListModelPackageGroups
+import Amazonka.SageMaker.ListModelPackages
+import Amazonka.SageMaker.ListModelQualityJobDefinitions
+import Amazonka.SageMaker.ListModels
+import Amazonka.SageMaker.ListMonitoringAlertHistory
+import Amazonka.SageMaker.ListMonitoringAlerts
+import Amazonka.SageMaker.ListMonitoringExecutions
+import Amazonka.SageMaker.ListMonitoringSchedules
+import Amazonka.SageMaker.ListNotebookInstanceLifecycleConfigs
+import Amazonka.SageMaker.ListNotebookInstances
+import Amazonka.SageMaker.ListPipelineExecutionSteps
+import Amazonka.SageMaker.ListPipelineExecutions
+import Amazonka.SageMaker.ListPipelineParametersForExecution
+import Amazonka.SageMaker.ListPipelines
+import Amazonka.SageMaker.ListProcessingJobs
+import Amazonka.SageMaker.ListProjects
+import Amazonka.SageMaker.ListSpaces
+import Amazonka.SageMaker.ListStageDevices
+import Amazonka.SageMaker.ListStudioLifecycleConfigs
+import Amazonka.SageMaker.ListSubscribedWorkteams
+import Amazonka.SageMaker.ListTags
+import Amazonka.SageMaker.ListTrainingJobs
+import Amazonka.SageMaker.ListTrainingJobsForHyperParameterTuningJob
+import Amazonka.SageMaker.ListTransformJobs
+import Amazonka.SageMaker.ListTrialComponents
+import Amazonka.SageMaker.ListTrials
+import Amazonka.SageMaker.ListUserProfiles
+import Amazonka.SageMaker.ListWorkforces
+import Amazonka.SageMaker.ListWorkteams
+import Amazonka.SageMaker.PutModelPackageGroupPolicy
+import Amazonka.SageMaker.QueryLineage
+import Amazonka.SageMaker.RegisterDevices
+import Amazonka.SageMaker.RenderUiTemplate
+import Amazonka.SageMaker.RetryPipelineExecution
+import Amazonka.SageMaker.Search
+import Amazonka.SageMaker.SendPipelineExecutionStepFailure
+import Amazonka.SageMaker.SendPipelineExecutionStepSuccess
+import Amazonka.SageMaker.StartEdgeDeploymentStage
+import Amazonka.SageMaker.StartInferenceExperiment
+import Amazonka.SageMaker.StartMonitoringSchedule
+import Amazonka.SageMaker.StartNotebookInstance
+import Amazonka.SageMaker.StartPipelineExecution
+import Amazonka.SageMaker.StopAutoMLJob
+import Amazonka.SageMaker.StopCompilationJob
+import Amazonka.SageMaker.StopEdgeDeploymentStage
+import Amazonka.SageMaker.StopEdgePackagingJob
+import Amazonka.SageMaker.StopHyperParameterTuningJob
+import Amazonka.SageMaker.StopInferenceExperiment
+import Amazonka.SageMaker.StopInferenceRecommendationsJob
+import Amazonka.SageMaker.StopLabelingJob
+import Amazonka.SageMaker.StopMonitoringSchedule
+import Amazonka.SageMaker.StopNotebookInstance
+import Amazonka.SageMaker.StopPipelineExecution
+import Amazonka.SageMaker.StopProcessingJob
+import Amazonka.SageMaker.StopTrainingJob
+import Amazonka.SageMaker.StopTransformJob
+import Amazonka.SageMaker.Types
+import Amazonka.SageMaker.UpdateAction
+import Amazonka.SageMaker.UpdateAppImageConfig
+import Amazonka.SageMaker.UpdateArtifact
+import Amazonka.SageMaker.UpdateCodeRepository
+import Amazonka.SageMaker.UpdateContext
+import Amazonka.SageMaker.UpdateDeviceFleet
+import Amazonka.SageMaker.UpdateDevices
+import Amazonka.SageMaker.UpdateDomain
+import Amazonka.SageMaker.UpdateEndpoint
+import Amazonka.SageMaker.UpdateEndpointWeightsAndCapacities
+import Amazonka.SageMaker.UpdateExperiment
+import Amazonka.SageMaker.UpdateFeatureGroup
+import Amazonka.SageMaker.UpdateFeatureMetadata
+import Amazonka.SageMaker.UpdateHub
+import Amazonka.SageMaker.UpdateImage
+import Amazonka.SageMaker.UpdateImageVersion
+import Amazonka.SageMaker.UpdateInferenceExperiment
+import Amazonka.SageMaker.UpdateModelCard
+import Amazonka.SageMaker.UpdateModelPackage
+import Amazonka.SageMaker.UpdateMonitoringAlert
+import Amazonka.SageMaker.UpdateMonitoringSchedule
+import Amazonka.SageMaker.UpdateNotebookInstance
+import Amazonka.SageMaker.UpdateNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.UpdatePipeline
+import Amazonka.SageMaker.UpdatePipelineExecution
+import Amazonka.SageMaker.UpdateProject
+import Amazonka.SageMaker.UpdateSpace
+import Amazonka.SageMaker.UpdateTrainingJob
+import Amazonka.SageMaker.UpdateTrial
+import Amazonka.SageMaker.UpdateTrialComponent
+import Amazonka.SageMaker.UpdateUserProfile
+import Amazonka.SageMaker.UpdateWorkforce
+import Amazonka.SageMaker.UpdateWorkteam
+import Amazonka.SageMaker.Waiters
+
+-- $errors
+-- Error matchers are designed for use with the functions provided by
+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+-- This allows catching (and rethrowing) service specific errors returned
+-- by 'SageMaker'.
+
+-- $operations
+-- Some AWS operations return results that are incomplete and require subsequent
+-- requests in order to obtain the entire result set. The process of sending
+-- subsequent requests to continue where a previous request left off is called
+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+-- 1000 objects at a time, and you must send subsequent requests with the
+-- appropriate Marker in order to retrieve the next page of results.
+--
+-- Operations that have an 'AWSPager' instance can transparently perform subsequent
+-- requests, correctly setting Markers and other request facets to iterate through
+-- the entire result set of a truncated API operation. Operations which support
+-- this have an additional note in the documentation.
+--
+-- Many operations have the ability to filter results on the server side. See the
+-- individual operation parameters for details.
+
+-- $waiters
+-- Waiters poll by repeatedly sending a request until some remote success condition
+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+-- determines how many attempts should be made, in addition to delay and retry strategies.
diff --git a/gen/Amazonka/SageMaker/AddAssociation.hs b/gen/Amazonka/SageMaker/AddAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/AddAssociation.hs
@@ -0,0 +1,262 @@
+{-# 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.AddAssociation
+-- 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 an /association/ between the source and the destination. A
+-- source can be associated with multiple destinations, and a destination
+-- can be associated with multiple sources. An association is a lineage
+-- tracking entity. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking.html Amazon SageMaker ML Lineage Tracking>.
+module Amazonka.SageMaker.AddAssociation
+  ( -- * Creating a Request
+    AddAssociation (..),
+    newAddAssociation,
+
+    -- * Request Lenses
+    addAssociation_associationType,
+    addAssociation_sourceArn,
+    addAssociation_destinationArn,
+
+    -- * Destructuring the Response
+    AddAssociationResponse (..),
+    newAddAssociationResponse,
+
+    -- * Response Lenses
+    addAssociationResponse_destinationArn,
+    addAssociationResponse_sourceArn,
+    addAssociationResponse_httpStatus,
+  )
+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:/ 'newAddAssociation' smart constructor.
+data AddAssociation = AddAssociation'
+  { -- | The type of association. The following are suggested uses for each type.
+    -- Amazon SageMaker places no restrictions on their use.
+    --
+    -- -   ContributedTo - The source contributed to the destination or had a
+    --     part in enabling the destination. For example, the training data
+    --     contributed to the training job.
+    --
+    -- -   AssociatedWith - The source is connected to the destination. For
+    --     example, an approval workflow is associated with a model deployment.
+    --
+    -- -   DerivedFrom - The destination is a modification of the source. For
+    --     example, a digest output of a channel input for a processing job is
+    --     derived from the original inputs.
+    --
+    -- -   Produced - The source generated the destination. For example, a
+    --     training job produced a model artifact.
+    associationType :: Prelude.Maybe AssociationEdgeType,
+    -- | The ARN of the source.
+    sourceArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the destination.
+    destinationArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddAssociation' 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:
+--
+-- 'associationType', 'addAssociation_associationType' - The type of association. The following are suggested uses for each type.
+-- Amazon SageMaker places no restrictions on their use.
+--
+-- -   ContributedTo - The source contributed to the destination or had a
+--     part in enabling the destination. For example, the training data
+--     contributed to the training job.
+--
+-- -   AssociatedWith - The source is connected to the destination. For
+--     example, an approval workflow is associated with a model deployment.
+--
+-- -   DerivedFrom - The destination is a modification of the source. For
+--     example, a digest output of a channel input for a processing job is
+--     derived from the original inputs.
+--
+-- -   Produced - The source generated the destination. For example, a
+--     training job produced a model artifact.
+--
+-- 'sourceArn', 'addAssociation_sourceArn' - The ARN of the source.
+--
+-- 'destinationArn', 'addAssociation_destinationArn' - The Amazon Resource Name (ARN) of the destination.
+newAddAssociation ::
+  -- | 'sourceArn'
+  Prelude.Text ->
+  -- | 'destinationArn'
+  Prelude.Text ->
+  AddAssociation
+newAddAssociation pSourceArn_ pDestinationArn_ =
+  AddAssociation'
+    { associationType = Prelude.Nothing,
+      sourceArn = pSourceArn_,
+      destinationArn = pDestinationArn_
+    }
+
+-- | The type of association. The following are suggested uses for each type.
+-- Amazon SageMaker places no restrictions on their use.
+--
+-- -   ContributedTo - The source contributed to the destination or had a
+--     part in enabling the destination. For example, the training data
+--     contributed to the training job.
+--
+-- -   AssociatedWith - The source is connected to the destination. For
+--     example, an approval workflow is associated with a model deployment.
+--
+-- -   DerivedFrom - The destination is a modification of the source. For
+--     example, a digest output of a channel input for a processing job is
+--     derived from the original inputs.
+--
+-- -   Produced - The source generated the destination. For example, a
+--     training job produced a model artifact.
+addAssociation_associationType :: Lens.Lens' AddAssociation (Prelude.Maybe AssociationEdgeType)
+addAssociation_associationType = Lens.lens (\AddAssociation' {associationType} -> associationType) (\s@AddAssociation' {} a -> s {associationType = a} :: AddAssociation)
+
+-- | The ARN of the source.
+addAssociation_sourceArn :: Lens.Lens' AddAssociation Prelude.Text
+addAssociation_sourceArn = Lens.lens (\AddAssociation' {sourceArn} -> sourceArn) (\s@AddAssociation' {} a -> s {sourceArn = a} :: AddAssociation)
+
+-- | The Amazon Resource Name (ARN) of the destination.
+addAssociation_destinationArn :: Lens.Lens' AddAssociation Prelude.Text
+addAssociation_destinationArn = Lens.lens (\AddAssociation' {destinationArn} -> destinationArn) (\s@AddAssociation' {} a -> s {destinationArn = a} :: AddAssociation)
+
+instance Core.AWSRequest AddAssociation where
+  type
+    AWSResponse AddAssociation =
+      AddAssociationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AddAssociationResponse'
+            Prelude.<$> (x Data..?> "DestinationArn")
+            Prelude.<*> (x Data..?> "SourceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AddAssociation where
+  hashWithSalt _salt AddAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationType
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` destinationArn
+
+instance Prelude.NFData AddAssociation where
+  rnf AddAssociation' {..} =
+    Prelude.rnf associationType
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf destinationArn
+
+instance Data.ToHeaders AddAssociation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.AddAssociation" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AddAssociation where
+  toJSON AddAssociation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AssociationType" Data..=)
+              Prelude.<$> associationType,
+            Prelude.Just ("SourceArn" Data..= sourceArn),
+            Prelude.Just
+              ("DestinationArn" Data..= destinationArn)
+          ]
+      )
+
+instance Data.ToPath AddAssociation where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AddAssociation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAddAssociationResponse' smart constructor.
+data AddAssociationResponse = AddAssociationResponse'
+  { -- | The Amazon Resource Name (ARN) of the destination.
+    destinationArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the source.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddAssociationResponse' 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:
+--
+-- 'destinationArn', 'addAssociationResponse_destinationArn' - The Amazon Resource Name (ARN) of the destination.
+--
+-- 'sourceArn', 'addAssociationResponse_sourceArn' - The ARN of the source.
+--
+-- 'httpStatus', 'addAssociationResponse_httpStatus' - The response's http status code.
+newAddAssociationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddAssociationResponse
+newAddAssociationResponse pHttpStatus_ =
+  AddAssociationResponse'
+    { destinationArn =
+        Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the destination.
+addAssociationResponse_destinationArn :: Lens.Lens' AddAssociationResponse (Prelude.Maybe Prelude.Text)
+addAssociationResponse_destinationArn = Lens.lens (\AddAssociationResponse' {destinationArn} -> destinationArn) (\s@AddAssociationResponse' {} a -> s {destinationArn = a} :: AddAssociationResponse)
+
+-- | The ARN of the source.
+addAssociationResponse_sourceArn :: Lens.Lens' AddAssociationResponse (Prelude.Maybe Prelude.Text)
+addAssociationResponse_sourceArn = Lens.lens (\AddAssociationResponse' {sourceArn} -> sourceArn) (\s@AddAssociationResponse' {} a -> s {sourceArn = a} :: AddAssociationResponse)
+
+-- | The response's http status code.
+addAssociationResponse_httpStatus :: Lens.Lens' AddAssociationResponse Prelude.Int
+addAssociationResponse_httpStatus = Lens.lens (\AddAssociationResponse' {httpStatus} -> httpStatus) (\s@AddAssociationResponse' {} a -> s {httpStatus = a} :: AddAssociationResponse)
+
+instance Prelude.NFData AddAssociationResponse where
+  rnf AddAssociationResponse' {..} =
+    Prelude.rnf destinationArn
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/AddTags.hs b/gen/Amazonka/SageMaker/AddTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/AddTags.hs
@@ -0,0 +1,216 @@
+{-# 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.AddTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds or overwrites one or more tags for the specified SageMaker
+-- resource. You can add tags to notebook instances, training jobs,
+-- hyperparameter tuning jobs, batch transform jobs, models, labeling jobs,
+-- work teams, endpoint configurations, and endpoints.
+--
+-- Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource. For more information about tags, see For more
+-- information, see
+-- <https://aws.amazon.com/answers/account-management/aws-tagging-strategies/ Amazon Web Services Tagging Strategies>.
+--
+-- Tags that you add to a hyperparameter tuning job by calling this API are
+-- also added to any training jobs that the hyperparameter tuning job
+-- launches after you call this API, but not to training jobs that the
+-- hyperparameter tuning job launched before you called this API. To make
+-- sure that the tags associated with a hyperparameter tuning job are also
+-- added to all training jobs that the hyperparameter tuning job launches,
+-- add the tags when you first create the tuning job by specifying them in
+-- the @Tags@ parameter of CreateHyperParameterTuningJob
+--
+-- Tags that you add to a SageMaker Studio Domain or User Profile by
+-- calling this API are also added to any Apps that the Domain or User
+-- Profile launches after you call this API, but not to Apps that the
+-- Domain or User Profile launched before you called this API. To make sure
+-- that the tags associated with a Domain or User Profile are also added to
+-- all Apps that the Domain or User Profile launches, add the tags when you
+-- first create the Domain or User Profile by specifying them in the @Tags@
+-- parameter of CreateDomain or CreateUserProfile.
+module Amazonka.SageMaker.AddTags
+  ( -- * Creating a Request
+    AddTags (..),
+    newAddTags,
+
+    -- * Request Lenses
+    addTags_resourceArn,
+    addTags_tags,
+
+    -- * Destructuring the Response
+    AddTagsResponse (..),
+    newAddTagsResponse,
+
+    -- * Response Lenses
+    addTagsResponse_tags,
+    addTagsResponse_httpStatus,
+  )
+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:/ 'newAddTags' smart constructor.
+data AddTags = AddTags'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to tag.
+    resourceArn :: Prelude.Text,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddTags' 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:
+--
+-- 'resourceArn', 'addTags_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to tag.
+--
+-- 'tags', 'addTags_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+newAddTags ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  AddTags
+newAddTags pResourceArn_ =
+  AddTags'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to tag.
+addTags_resourceArn :: Lens.Lens' AddTags Prelude.Text
+addTags_resourceArn = Lens.lens (\AddTags' {resourceArn} -> resourceArn) (\s@AddTags' {} a -> s {resourceArn = a} :: AddTags)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+addTags_tags :: Lens.Lens' AddTags [Tag]
+addTags_tags = Lens.lens (\AddTags' {tags} -> tags) (\s@AddTags' {} a -> s {tags = a} :: AddTags) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AddTags where
+  type AWSResponse AddTags = AddTagsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AddTagsResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AddTags where
+  hashWithSalt _salt AddTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData AddTags where
+  rnf AddTags' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders AddTags where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.AddTags" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AddTags where
+  toJSON AddTags' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath AddTags where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AddTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAddTagsResponse' smart constructor.
+data AddTagsResponse = AddTagsResponse'
+  { -- | A list of tags associated with the SageMaker resource.
+    tags :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddTagsResponse' 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:
+--
+-- 'tags', 'addTagsResponse_tags' - A list of tags associated with the SageMaker resource.
+--
+-- 'httpStatus', 'addTagsResponse_httpStatus' - The response's http status code.
+newAddTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddTagsResponse
+newAddTagsResponse pHttpStatus_ =
+  AddTagsResponse'
+    { tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of tags associated with the SageMaker resource.
+addTagsResponse_tags :: Lens.Lens' AddTagsResponse (Prelude.Maybe [Tag])
+addTagsResponse_tags = Lens.lens (\AddTagsResponse' {tags} -> tags) (\s@AddTagsResponse' {} a -> s {tags = a} :: AddTagsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+addTagsResponse_httpStatus :: Lens.Lens' AddTagsResponse Prelude.Int
+addTagsResponse_httpStatus = Lens.lens (\AddTagsResponse' {httpStatus} -> httpStatus) (\s@AddTagsResponse' {} a -> s {httpStatus = a} :: AddTagsResponse)
+
+instance Prelude.NFData AddTagsResponse where
+  rnf AddTagsResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/AssociateTrialComponent.hs b/gen/Amazonka/SageMaker/AssociateTrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/AssociateTrialComponent.hs
@@ -0,0 +1,209 @@
+{-# 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.AssociateTrialComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a trial component with a trial. A trial component can be
+-- associated with multiple trials. To disassociate a trial component from
+-- a trial, call the DisassociateTrialComponent API.
+module Amazonka.SageMaker.AssociateTrialComponent
+  ( -- * Creating a Request
+    AssociateTrialComponent (..),
+    newAssociateTrialComponent,
+
+    -- * Request Lenses
+    associateTrialComponent_trialComponentName,
+    associateTrialComponent_trialName,
+
+    -- * Destructuring the Response
+    AssociateTrialComponentResponse (..),
+    newAssociateTrialComponentResponse,
+
+    -- * Response Lenses
+    associateTrialComponentResponse_trialArn,
+    associateTrialComponentResponse_trialComponentArn,
+    associateTrialComponentResponse_httpStatus,
+  )
+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:/ 'newAssociateTrialComponent' smart constructor.
+data AssociateTrialComponent = AssociateTrialComponent'
+  { -- | The name of the component to associated with the trial.
+    trialComponentName :: Prelude.Text,
+    -- | The name of the trial to associate with.
+    trialName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateTrialComponent' 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:
+--
+-- 'trialComponentName', 'associateTrialComponent_trialComponentName' - The name of the component to associated with the trial.
+--
+-- 'trialName', 'associateTrialComponent_trialName' - The name of the trial to associate with.
+newAssociateTrialComponent ::
+  -- | 'trialComponentName'
+  Prelude.Text ->
+  -- | 'trialName'
+  Prelude.Text ->
+  AssociateTrialComponent
+newAssociateTrialComponent
+  pTrialComponentName_
+  pTrialName_ =
+    AssociateTrialComponent'
+      { trialComponentName =
+          pTrialComponentName_,
+        trialName = pTrialName_
+      }
+
+-- | The name of the component to associated with the trial.
+associateTrialComponent_trialComponentName :: Lens.Lens' AssociateTrialComponent Prelude.Text
+associateTrialComponent_trialComponentName = Lens.lens (\AssociateTrialComponent' {trialComponentName} -> trialComponentName) (\s@AssociateTrialComponent' {} a -> s {trialComponentName = a} :: AssociateTrialComponent)
+
+-- | The name of the trial to associate with.
+associateTrialComponent_trialName :: Lens.Lens' AssociateTrialComponent Prelude.Text
+associateTrialComponent_trialName = Lens.lens (\AssociateTrialComponent' {trialName} -> trialName) (\s@AssociateTrialComponent' {} a -> s {trialName = a} :: AssociateTrialComponent)
+
+instance Core.AWSRequest AssociateTrialComponent where
+  type
+    AWSResponse AssociateTrialComponent =
+      AssociateTrialComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateTrialComponentResponse'
+            Prelude.<$> (x Data..?> "TrialArn")
+            Prelude.<*> (x Data..?> "TrialComponentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateTrialComponent where
+  hashWithSalt _salt AssociateTrialComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` trialComponentName
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData AssociateTrialComponent where
+  rnf AssociateTrialComponent' {..} =
+    Prelude.rnf trialComponentName
+      `Prelude.seq` Prelude.rnf trialName
+
+instance Data.ToHeaders AssociateTrialComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.AssociateTrialComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateTrialComponent where
+  toJSON AssociateTrialComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TrialComponentName" Data..= trialComponentName),
+            Prelude.Just ("TrialName" Data..= trialName)
+          ]
+      )
+
+instance Data.ToPath AssociateTrialComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AssociateTrialComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateTrialComponentResponse' smart constructor.
+data AssociateTrialComponentResponse = AssociateTrialComponentResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateTrialComponentResponse' 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:
+--
+-- 'trialArn', 'associateTrialComponentResponse_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'trialComponentArn', 'associateTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'httpStatus', 'associateTrialComponentResponse_httpStatus' - The response's http status code.
+newAssociateTrialComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateTrialComponentResponse
+newAssociateTrialComponentResponse pHttpStatus_ =
+  AssociateTrialComponentResponse'
+    { trialArn =
+        Prelude.Nothing,
+      trialComponentArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial.
+associateTrialComponentResponse_trialArn :: Lens.Lens' AssociateTrialComponentResponse (Prelude.Maybe Prelude.Text)
+associateTrialComponentResponse_trialArn = Lens.lens (\AssociateTrialComponentResponse' {trialArn} -> trialArn) (\s@AssociateTrialComponentResponse' {} a -> s {trialArn = a} :: AssociateTrialComponentResponse)
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+associateTrialComponentResponse_trialComponentArn :: Lens.Lens' AssociateTrialComponentResponse (Prelude.Maybe Prelude.Text)
+associateTrialComponentResponse_trialComponentArn = Lens.lens (\AssociateTrialComponentResponse' {trialComponentArn} -> trialComponentArn) (\s@AssociateTrialComponentResponse' {} a -> s {trialComponentArn = a} :: AssociateTrialComponentResponse)
+
+-- | The response's http status code.
+associateTrialComponentResponse_httpStatus :: Lens.Lens' AssociateTrialComponentResponse Prelude.Int
+associateTrialComponentResponse_httpStatus = Lens.lens (\AssociateTrialComponentResponse' {httpStatus} -> httpStatus) (\s@AssociateTrialComponentResponse' {} a -> s {httpStatus = a} :: AssociateTrialComponentResponse)
+
+instance
+  Prelude.NFData
+    AssociateTrialComponentResponse
+  where
+  rnf AssociateTrialComponentResponse' {..} =
+    Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/BatchDescribeModelPackage.hs b/gen/Amazonka/SageMaker/BatchDescribeModelPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/BatchDescribeModelPackage.hs
@@ -0,0 +1,198 @@
+{-# 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.BatchDescribeModelPackage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This action batch describes a list of versioned model packages
+module Amazonka.SageMaker.BatchDescribeModelPackage
+  ( -- * Creating a Request
+    BatchDescribeModelPackage (..),
+    newBatchDescribeModelPackage,
+
+    -- * Request Lenses
+    batchDescribeModelPackage_modelPackageArnList,
+
+    -- * Destructuring the Response
+    BatchDescribeModelPackageResponse (..),
+    newBatchDescribeModelPackageResponse,
+
+    -- * Response Lenses
+    batchDescribeModelPackageResponse_batchDescribeModelPackageErrorMap,
+    batchDescribeModelPackageResponse_modelPackageSummaries,
+    batchDescribeModelPackageResponse_httpStatus,
+  )
+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:/ 'newBatchDescribeModelPackage' smart constructor.
+data BatchDescribeModelPackage = BatchDescribeModelPackage'
+  { -- | The list of Amazon Resource Name (ARN) of the model package groups.
+    modelPackageArnList :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDescribeModelPackage' 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:
+--
+-- 'modelPackageArnList', 'batchDescribeModelPackage_modelPackageArnList' - The list of Amazon Resource Name (ARN) of the model package groups.
+newBatchDescribeModelPackage ::
+  -- | 'modelPackageArnList'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchDescribeModelPackage
+newBatchDescribeModelPackage pModelPackageArnList_ =
+  BatchDescribeModelPackage'
+    { modelPackageArnList =
+        Lens.coerced Lens.# pModelPackageArnList_
+    }
+
+-- | The list of Amazon Resource Name (ARN) of the model package groups.
+batchDescribeModelPackage_modelPackageArnList :: Lens.Lens' BatchDescribeModelPackage (Prelude.NonEmpty Prelude.Text)
+batchDescribeModelPackage_modelPackageArnList = Lens.lens (\BatchDescribeModelPackage' {modelPackageArnList} -> modelPackageArnList) (\s@BatchDescribeModelPackage' {} a -> s {modelPackageArnList = a} :: BatchDescribeModelPackage) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchDescribeModelPackage where
+  type
+    AWSResponse BatchDescribeModelPackage =
+      BatchDescribeModelPackageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchDescribeModelPackageResponse'
+            Prelude.<$> ( x
+                            Data..?> "BatchDescribeModelPackageErrorMap"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "ModelPackageSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchDescribeModelPackage where
+  hashWithSalt _salt BatchDescribeModelPackage' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageArnList
+
+instance Prelude.NFData BatchDescribeModelPackage where
+  rnf BatchDescribeModelPackage' {..} =
+    Prelude.rnf modelPackageArnList
+
+instance Data.ToHeaders BatchDescribeModelPackage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.BatchDescribeModelPackage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON BatchDescribeModelPackage where
+  toJSON BatchDescribeModelPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ModelPackageArnList" Data..= modelPackageArnList)
+          ]
+      )
+
+instance Data.ToPath BatchDescribeModelPackage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery BatchDescribeModelPackage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newBatchDescribeModelPackageResponse' smart constructor.
+data BatchDescribeModelPackageResponse = BatchDescribeModelPackageResponse'
+  { -- | A map of the resource and BatchDescribeModelPackageError objects
+    -- reporting the error associated with describing the model package.
+    batchDescribeModelPackageErrorMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text BatchDescribeModelPackageError),
+    -- | The summaries for the model package versions
+    modelPackageSummaries :: Prelude.Maybe (Prelude.HashMap Prelude.Text BatchDescribeModelPackageSummary),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDescribeModelPackageResponse' 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:
+--
+-- 'batchDescribeModelPackageErrorMap', 'batchDescribeModelPackageResponse_batchDescribeModelPackageErrorMap' - A map of the resource and BatchDescribeModelPackageError objects
+-- reporting the error associated with describing the model package.
+--
+-- 'modelPackageSummaries', 'batchDescribeModelPackageResponse_modelPackageSummaries' - The summaries for the model package versions
+--
+-- 'httpStatus', 'batchDescribeModelPackageResponse_httpStatus' - The response's http status code.
+newBatchDescribeModelPackageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchDescribeModelPackageResponse
+newBatchDescribeModelPackageResponse pHttpStatus_ =
+  BatchDescribeModelPackageResponse'
+    { batchDescribeModelPackageErrorMap =
+        Prelude.Nothing,
+      modelPackageSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A map of the resource and BatchDescribeModelPackageError objects
+-- reporting the error associated with describing the model package.
+batchDescribeModelPackageResponse_batchDescribeModelPackageErrorMap :: Lens.Lens' BatchDescribeModelPackageResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text BatchDescribeModelPackageError))
+batchDescribeModelPackageResponse_batchDescribeModelPackageErrorMap = Lens.lens (\BatchDescribeModelPackageResponse' {batchDescribeModelPackageErrorMap} -> batchDescribeModelPackageErrorMap) (\s@BatchDescribeModelPackageResponse' {} a -> s {batchDescribeModelPackageErrorMap = a} :: BatchDescribeModelPackageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The summaries for the model package versions
+batchDescribeModelPackageResponse_modelPackageSummaries :: Lens.Lens' BatchDescribeModelPackageResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text BatchDescribeModelPackageSummary))
+batchDescribeModelPackageResponse_modelPackageSummaries = Lens.lens (\BatchDescribeModelPackageResponse' {modelPackageSummaries} -> modelPackageSummaries) (\s@BatchDescribeModelPackageResponse' {} a -> s {modelPackageSummaries = a} :: BatchDescribeModelPackageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchDescribeModelPackageResponse_httpStatus :: Lens.Lens' BatchDescribeModelPackageResponse Prelude.Int
+batchDescribeModelPackageResponse_httpStatus = Lens.lens (\BatchDescribeModelPackageResponse' {httpStatus} -> httpStatus) (\s@BatchDescribeModelPackageResponse' {} a -> s {httpStatus = a} :: BatchDescribeModelPackageResponse)
+
+instance
+  Prelude.NFData
+    BatchDescribeModelPackageResponse
+  where
+  rnf BatchDescribeModelPackageResponse' {..} =
+    Prelude.rnf batchDescribeModelPackageErrorMap
+      `Prelude.seq` Prelude.rnf modelPackageSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateAction.hs b/gen/Amazonka/SageMaker/CreateAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateAction.hs
@@ -0,0 +1,270 @@
+{-# 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.CreateAction
+-- 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 an /action/. An action is a lineage tracking entity that
+-- represents an action or activity. For example, a model deployment or an
+-- HPO job. Generally, an action involves at least one input or output
+-- artifact. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking.html Amazon SageMaker ML Lineage Tracking>.
+module Amazonka.SageMaker.CreateAction
+  ( -- * Creating a Request
+    CreateAction (..),
+    newCreateAction,
+
+    -- * Request Lenses
+    createAction_description,
+    createAction_metadataProperties,
+    createAction_properties,
+    createAction_status,
+    createAction_tags,
+    createAction_actionName,
+    createAction_source,
+    createAction_actionType,
+
+    -- * Destructuring the Response
+    CreateActionResponse (..),
+    newCreateActionResponse,
+
+    -- * Response Lenses
+    createActionResponse_actionArn,
+    createActionResponse_httpStatus,
+  )
+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:/ 'newCreateAction' smart constructor.
+data CreateAction = CreateAction'
+  { -- | The description of the action.
+    description :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | A list of properties to add to the action.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The status of the action.
+    status :: Prelude.Maybe ActionStatus,
+    -- | A list of tags to apply to the action.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the action. Must be unique to your account in an Amazon Web
+    -- Services Region.
+    actionName :: Prelude.Text,
+    -- | The source type, ID, and URI.
+    source :: ActionSource,
+    -- | The action type.
+    actionType :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAction' 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:
+--
+-- 'description', 'createAction_description' - The description of the action.
+--
+-- 'metadataProperties', 'createAction_metadataProperties' - Undocumented member.
+--
+-- 'properties', 'createAction_properties' - A list of properties to add to the action.
+--
+-- 'status', 'createAction_status' - The status of the action.
+--
+-- 'tags', 'createAction_tags' - A list of tags to apply to the action.
+--
+-- 'actionName', 'createAction_actionName' - The name of the action. Must be unique to your account in an Amazon Web
+-- Services Region.
+--
+-- 'source', 'createAction_source' - The source type, ID, and URI.
+--
+-- 'actionType', 'createAction_actionType' - The action type.
+newCreateAction ::
+  -- | 'actionName'
+  Prelude.Text ->
+  -- | 'source'
+  ActionSource ->
+  -- | 'actionType'
+  Prelude.Text ->
+  CreateAction
+newCreateAction pActionName_ pSource_ pActionType_ =
+  CreateAction'
+    { description = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      status = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      actionName = pActionName_,
+      source = pSource_,
+      actionType = pActionType_
+    }
+
+-- | The description of the action.
+createAction_description :: Lens.Lens' CreateAction (Prelude.Maybe Prelude.Text)
+createAction_description = Lens.lens (\CreateAction' {description} -> description) (\s@CreateAction' {} a -> s {description = a} :: CreateAction)
+
+-- | Undocumented member.
+createAction_metadataProperties :: Lens.Lens' CreateAction (Prelude.Maybe MetadataProperties)
+createAction_metadataProperties = Lens.lens (\CreateAction' {metadataProperties} -> metadataProperties) (\s@CreateAction' {} a -> s {metadataProperties = a} :: CreateAction)
+
+-- | A list of properties to add to the action.
+createAction_properties :: Lens.Lens' CreateAction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createAction_properties = Lens.lens (\CreateAction' {properties} -> properties) (\s@CreateAction' {} a -> s {properties = a} :: CreateAction) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of the action.
+createAction_status :: Lens.Lens' CreateAction (Prelude.Maybe ActionStatus)
+createAction_status = Lens.lens (\CreateAction' {status} -> status) (\s@CreateAction' {} a -> s {status = a} :: CreateAction)
+
+-- | A list of tags to apply to the action.
+createAction_tags :: Lens.Lens' CreateAction (Prelude.Maybe [Tag])
+createAction_tags = Lens.lens (\CreateAction' {tags} -> tags) (\s@CreateAction' {} a -> s {tags = a} :: CreateAction) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the action. Must be unique to your account in an Amazon Web
+-- Services Region.
+createAction_actionName :: Lens.Lens' CreateAction Prelude.Text
+createAction_actionName = Lens.lens (\CreateAction' {actionName} -> actionName) (\s@CreateAction' {} a -> s {actionName = a} :: CreateAction)
+
+-- | The source type, ID, and URI.
+createAction_source :: Lens.Lens' CreateAction ActionSource
+createAction_source = Lens.lens (\CreateAction' {source} -> source) (\s@CreateAction' {} a -> s {source = a} :: CreateAction)
+
+-- | The action type.
+createAction_actionType :: Lens.Lens' CreateAction Prelude.Text
+createAction_actionType = Lens.lens (\CreateAction' {actionType} -> actionType) (\s@CreateAction' {} a -> s {actionType = a} :: CreateAction)
+
+instance Core.AWSRequest CreateAction where
+  type AWSResponse CreateAction = CreateActionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateActionResponse'
+            Prelude.<$> (x Data..?> "ActionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAction where
+  hashWithSalt _salt CreateAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` actionName
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` actionType
+
+instance Prelude.NFData CreateAction where
+  rnf CreateAction' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf actionName
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf actionType
+
+instance Data.ToHeaders CreateAction where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateAction" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAction where
+  toJSON CreateAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("MetadataProperties" Data..=)
+              Prelude.<$> metadataProperties,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("Status" Data..=) Prelude.<$> status,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ActionName" Data..= actionName),
+            Prelude.Just ("Source" Data..= source),
+            Prelude.Just ("ActionType" Data..= actionType)
+          ]
+      )
+
+instance Data.ToPath CreateAction where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateAction where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateActionResponse' smart constructor.
+data CreateActionResponse = CreateActionResponse'
+  { -- | The Amazon Resource Name (ARN) of the action.
+    actionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateActionResponse' 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:
+--
+-- 'actionArn', 'createActionResponse_actionArn' - The Amazon Resource Name (ARN) of the action.
+--
+-- 'httpStatus', 'createActionResponse_httpStatus' - The response's http status code.
+newCreateActionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateActionResponse
+newCreateActionResponse pHttpStatus_ =
+  CreateActionResponse'
+    { actionArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the action.
+createActionResponse_actionArn :: Lens.Lens' CreateActionResponse (Prelude.Maybe Prelude.Text)
+createActionResponse_actionArn = Lens.lens (\CreateActionResponse' {actionArn} -> actionArn) (\s@CreateActionResponse' {} a -> s {actionArn = a} :: CreateActionResponse)
+
+-- | The response's http status code.
+createActionResponse_httpStatus :: Lens.Lens' CreateActionResponse Prelude.Int
+createActionResponse_httpStatus = Lens.lens (\CreateActionResponse' {httpStatus} -> httpStatus) (\s@CreateActionResponse' {} a -> s {httpStatus = a} :: CreateActionResponse)
+
+instance Prelude.NFData CreateActionResponse where
+  rnf CreateActionResponse' {..} =
+    Prelude.rnf actionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateAlgorithm.hs b/gen/Amazonka/SageMaker/CreateAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateAlgorithm.hs
@@ -0,0 +1,373 @@
+{-# 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.CreateAlgorithm
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a machine learning algorithm that you can use in SageMaker and
+-- list in the Amazon Web Services Marketplace.
+module Amazonka.SageMaker.CreateAlgorithm
+  ( -- * Creating a Request
+    CreateAlgorithm (..),
+    newCreateAlgorithm,
+
+    -- * Request Lenses
+    createAlgorithm_algorithmDescription,
+    createAlgorithm_certifyForMarketplace,
+    createAlgorithm_inferenceSpecification,
+    createAlgorithm_tags,
+    createAlgorithm_validationSpecification,
+    createAlgorithm_algorithmName,
+    createAlgorithm_trainingSpecification,
+
+    -- * Destructuring the Response
+    CreateAlgorithmResponse (..),
+    newCreateAlgorithmResponse,
+
+    -- * Response Lenses
+    createAlgorithmResponse_httpStatus,
+    createAlgorithmResponse_algorithmArn,
+  )
+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:/ 'newCreateAlgorithm' smart constructor.
+data CreateAlgorithm = CreateAlgorithm'
+  { -- | A description of the algorithm.
+    algorithmDescription :: Prelude.Maybe Prelude.Text,
+    -- | Whether to certify the algorithm so that it can be listed in Amazon Web
+    -- Services Marketplace.
+    certifyForMarketplace :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies details about inference jobs that the algorithm runs,
+    -- including the following:
+    --
+    -- -   The Amazon ECR paths of containers that contain the inference code
+    --     and model artifacts.
+    --
+    -- -   The instance types that the algorithm supports for transform jobs
+    --     and real-time endpoints used for inference.
+    --
+    -- -   The input and output content formats that the algorithm supports for
+    --     inference.
+    inferenceSpecification :: Prelude.Maybe InferenceSpecification,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | Specifies configurations for one or more training jobs and that
+    -- SageMaker runs to test the algorithm\'s training code and, optionally,
+    -- one or more batch transform jobs that SageMaker runs to test the
+    -- algorithm\'s inference code.
+    validationSpecification :: Prelude.Maybe AlgorithmValidationSpecification,
+    -- | The name of the algorithm.
+    algorithmName :: Prelude.Text,
+    -- | Specifies details about training jobs run by this algorithm, including
+    -- the following:
+    --
+    -- -   The Amazon ECR path of the container and the version digest of the
+    --     algorithm.
+    --
+    -- -   The hyperparameters that the algorithm supports.
+    --
+    -- -   The instance types that the algorithm supports for training.
+    --
+    -- -   Whether the algorithm supports distributed training.
+    --
+    -- -   The metrics that the algorithm emits to Amazon CloudWatch.
+    --
+    -- -   Which metrics that the algorithm emits can be used as the objective
+    --     metric for hyperparameter tuning jobs.
+    --
+    -- -   The input channels that the algorithm supports for training data.
+    --     For example, an algorithm might support @train@, @validation@, and
+    --     @test@ channels.
+    trainingSpecification :: TrainingSpecification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAlgorithm' 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:
+--
+-- 'algorithmDescription', 'createAlgorithm_algorithmDescription' - A description of the algorithm.
+--
+-- 'certifyForMarketplace', 'createAlgorithm_certifyForMarketplace' - Whether to certify the algorithm so that it can be listed in Amazon Web
+-- Services Marketplace.
+--
+-- 'inferenceSpecification', 'createAlgorithm_inferenceSpecification' - Specifies details about inference jobs that the algorithm runs,
+-- including the following:
+--
+-- -   The Amazon ECR paths of containers that contain the inference code
+--     and model artifacts.
+--
+-- -   The instance types that the algorithm supports for transform jobs
+--     and real-time endpoints used for inference.
+--
+-- -   The input and output content formats that the algorithm supports for
+--     inference.
+--
+-- 'tags', 'createAlgorithm_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'validationSpecification', 'createAlgorithm_validationSpecification' - Specifies configurations for one or more training jobs and that
+-- SageMaker runs to test the algorithm\'s training code and, optionally,
+-- one or more batch transform jobs that SageMaker runs to test the
+-- algorithm\'s inference code.
+--
+-- 'algorithmName', 'createAlgorithm_algorithmName' - The name of the algorithm.
+--
+-- 'trainingSpecification', 'createAlgorithm_trainingSpecification' - Specifies details about training jobs run by this algorithm, including
+-- the following:
+--
+-- -   The Amazon ECR path of the container and the version digest of the
+--     algorithm.
+--
+-- -   The hyperparameters that the algorithm supports.
+--
+-- -   The instance types that the algorithm supports for training.
+--
+-- -   Whether the algorithm supports distributed training.
+--
+-- -   The metrics that the algorithm emits to Amazon CloudWatch.
+--
+-- -   Which metrics that the algorithm emits can be used as the objective
+--     metric for hyperparameter tuning jobs.
+--
+-- -   The input channels that the algorithm supports for training data.
+--     For example, an algorithm might support @train@, @validation@, and
+--     @test@ channels.
+newCreateAlgorithm ::
+  -- | 'algorithmName'
+  Prelude.Text ->
+  -- | 'trainingSpecification'
+  TrainingSpecification ->
+  CreateAlgorithm
+newCreateAlgorithm
+  pAlgorithmName_
+  pTrainingSpecification_ =
+    CreateAlgorithm'
+      { algorithmDescription =
+          Prelude.Nothing,
+        certifyForMarketplace = Prelude.Nothing,
+        inferenceSpecification = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        validationSpecification = Prelude.Nothing,
+        algorithmName = pAlgorithmName_,
+        trainingSpecification = pTrainingSpecification_
+      }
+
+-- | A description of the algorithm.
+createAlgorithm_algorithmDescription :: Lens.Lens' CreateAlgorithm (Prelude.Maybe Prelude.Text)
+createAlgorithm_algorithmDescription = Lens.lens (\CreateAlgorithm' {algorithmDescription} -> algorithmDescription) (\s@CreateAlgorithm' {} a -> s {algorithmDescription = a} :: CreateAlgorithm)
+
+-- | Whether to certify the algorithm so that it can be listed in Amazon Web
+-- Services Marketplace.
+createAlgorithm_certifyForMarketplace :: Lens.Lens' CreateAlgorithm (Prelude.Maybe Prelude.Bool)
+createAlgorithm_certifyForMarketplace = Lens.lens (\CreateAlgorithm' {certifyForMarketplace} -> certifyForMarketplace) (\s@CreateAlgorithm' {} a -> s {certifyForMarketplace = a} :: CreateAlgorithm)
+
+-- | Specifies details about inference jobs that the algorithm runs,
+-- including the following:
+--
+-- -   The Amazon ECR paths of containers that contain the inference code
+--     and model artifacts.
+--
+-- -   The instance types that the algorithm supports for transform jobs
+--     and real-time endpoints used for inference.
+--
+-- -   The input and output content formats that the algorithm supports for
+--     inference.
+createAlgorithm_inferenceSpecification :: Lens.Lens' CreateAlgorithm (Prelude.Maybe InferenceSpecification)
+createAlgorithm_inferenceSpecification = Lens.lens (\CreateAlgorithm' {inferenceSpecification} -> inferenceSpecification) (\s@CreateAlgorithm' {} a -> s {inferenceSpecification = a} :: CreateAlgorithm)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createAlgorithm_tags :: Lens.Lens' CreateAlgorithm (Prelude.Maybe [Tag])
+createAlgorithm_tags = Lens.lens (\CreateAlgorithm' {tags} -> tags) (\s@CreateAlgorithm' {} a -> s {tags = a} :: CreateAlgorithm) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies configurations for one or more training jobs and that
+-- SageMaker runs to test the algorithm\'s training code and, optionally,
+-- one or more batch transform jobs that SageMaker runs to test the
+-- algorithm\'s inference code.
+createAlgorithm_validationSpecification :: Lens.Lens' CreateAlgorithm (Prelude.Maybe AlgorithmValidationSpecification)
+createAlgorithm_validationSpecification = Lens.lens (\CreateAlgorithm' {validationSpecification} -> validationSpecification) (\s@CreateAlgorithm' {} a -> s {validationSpecification = a} :: CreateAlgorithm)
+
+-- | The name of the algorithm.
+createAlgorithm_algorithmName :: Lens.Lens' CreateAlgorithm Prelude.Text
+createAlgorithm_algorithmName = Lens.lens (\CreateAlgorithm' {algorithmName} -> algorithmName) (\s@CreateAlgorithm' {} a -> s {algorithmName = a} :: CreateAlgorithm)
+
+-- | Specifies details about training jobs run by this algorithm, including
+-- the following:
+--
+-- -   The Amazon ECR path of the container and the version digest of the
+--     algorithm.
+--
+-- -   The hyperparameters that the algorithm supports.
+--
+-- -   The instance types that the algorithm supports for training.
+--
+-- -   Whether the algorithm supports distributed training.
+--
+-- -   The metrics that the algorithm emits to Amazon CloudWatch.
+--
+-- -   Which metrics that the algorithm emits can be used as the objective
+--     metric for hyperparameter tuning jobs.
+--
+-- -   The input channels that the algorithm supports for training data.
+--     For example, an algorithm might support @train@, @validation@, and
+--     @test@ channels.
+createAlgorithm_trainingSpecification :: Lens.Lens' CreateAlgorithm TrainingSpecification
+createAlgorithm_trainingSpecification = Lens.lens (\CreateAlgorithm' {trainingSpecification} -> trainingSpecification) (\s@CreateAlgorithm' {} a -> s {trainingSpecification = a} :: CreateAlgorithm)
+
+instance Core.AWSRequest CreateAlgorithm where
+  type
+    AWSResponse CreateAlgorithm =
+      CreateAlgorithmResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAlgorithmResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "AlgorithmArn")
+      )
+
+instance Prelude.Hashable CreateAlgorithm where
+  hashWithSalt _salt CreateAlgorithm' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmDescription
+      `Prelude.hashWithSalt` certifyForMarketplace
+      `Prelude.hashWithSalt` inferenceSpecification
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` validationSpecification
+      `Prelude.hashWithSalt` algorithmName
+      `Prelude.hashWithSalt` trainingSpecification
+
+instance Prelude.NFData CreateAlgorithm where
+  rnf CreateAlgorithm' {..} =
+    Prelude.rnf algorithmDescription
+      `Prelude.seq` Prelude.rnf certifyForMarketplace
+      `Prelude.seq` Prelude.rnf inferenceSpecification
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf validationSpecification
+      `Prelude.seq` Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf trainingSpecification
+
+instance Data.ToHeaders CreateAlgorithm where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateAlgorithm" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAlgorithm where
+  toJSON CreateAlgorithm' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlgorithmDescription" Data..=)
+              Prelude.<$> algorithmDescription,
+            ("CertifyForMarketplace" Data..=)
+              Prelude.<$> certifyForMarketplace,
+            ("InferenceSpecification" Data..=)
+              Prelude.<$> inferenceSpecification,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("ValidationSpecification" Data..=)
+              Prelude.<$> validationSpecification,
+            Prelude.Just ("AlgorithmName" Data..= algorithmName),
+            Prelude.Just
+              ( "TrainingSpecification"
+                  Data..= trainingSpecification
+              )
+          ]
+      )
+
+instance Data.ToPath CreateAlgorithm where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateAlgorithm where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAlgorithmResponse' smart constructor.
+data CreateAlgorithmResponse = CreateAlgorithmResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the new algorithm.
+    algorithmArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAlgorithmResponse' 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', 'createAlgorithmResponse_httpStatus' - The response's http status code.
+--
+-- 'algorithmArn', 'createAlgorithmResponse_algorithmArn' - The Amazon Resource Name (ARN) of the new algorithm.
+newCreateAlgorithmResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'algorithmArn'
+  Prelude.Text ->
+  CreateAlgorithmResponse
+newCreateAlgorithmResponse
+  pHttpStatus_
+  pAlgorithmArn_ =
+    CreateAlgorithmResponse'
+      { httpStatus = pHttpStatus_,
+        algorithmArn = pAlgorithmArn_
+      }
+
+-- | The response's http status code.
+createAlgorithmResponse_httpStatus :: Lens.Lens' CreateAlgorithmResponse Prelude.Int
+createAlgorithmResponse_httpStatus = Lens.lens (\CreateAlgorithmResponse' {httpStatus} -> httpStatus) (\s@CreateAlgorithmResponse' {} a -> s {httpStatus = a} :: CreateAlgorithmResponse)
+
+-- | The Amazon Resource Name (ARN) of the new algorithm.
+createAlgorithmResponse_algorithmArn :: Lens.Lens' CreateAlgorithmResponse Prelude.Text
+createAlgorithmResponse_algorithmArn = Lens.lens (\CreateAlgorithmResponse' {algorithmArn} -> algorithmArn) (\s@CreateAlgorithmResponse' {} a -> s {algorithmArn = a} :: CreateAlgorithmResponse)
+
+instance Prelude.NFData CreateAlgorithmResponse where
+  rnf CreateAlgorithmResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf algorithmArn
diff --git a/gen/Amazonka/SageMaker/CreateApp.hs b/gen/Amazonka/SageMaker/CreateApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateApp.hs
@@ -0,0 +1,287 @@
+{-# 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.CreateApp
+-- 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 running app for the specified UserProfile. This operation is
+-- automatically invoked by Amazon SageMaker Studio upon access to the
+-- associated Domain, and when new kernel configurations are selected by
+-- the user. A user may have multiple Apps active simultaneously.
+module Amazonka.SageMaker.CreateApp
+  ( -- * Creating a Request
+    CreateApp (..),
+    newCreateApp,
+
+    -- * Request Lenses
+    createApp_resourceSpec,
+    createApp_spaceName,
+    createApp_tags,
+    createApp_userProfileName,
+    createApp_domainId,
+    createApp_appType,
+    createApp_appName,
+
+    -- * Destructuring the Response
+    CreateAppResponse (..),
+    newCreateAppResponse,
+
+    -- * Response Lenses
+    createAppResponse_appArn,
+    createAppResponse_httpStatus,
+  )
+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:/ 'newCreateApp' smart constructor.
+data CreateApp = CreateApp'
+  { -- | The instance type and the Amazon Resource Name (ARN) of the SageMaker
+    -- image created on the instance.
+    --
+    -- The value of @InstanceType@ passed as part of the @ResourceSpec@ in the
+    -- @CreateApp@ call overrides the value passed as part of the
+    -- @ResourceSpec@ configured for the user profile or the domain. If
+    -- @InstanceType@ is not specified in any of those three @ResourceSpec@
+    -- values for a @KernelGateway@ app, the @CreateApp@ call fails with a
+    -- request validation error.
+    resourceSpec :: Prelude.Maybe ResourceSpec,
+    -- | The name of the space. If this value is not set, then @UserProfileName@
+    -- must be set.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and an optional value. Tag keys must be
+    -- unique per resource.
+    tags :: Prelude.Maybe [Tag],
+    -- | The user profile name. If this value is not set, then @SpaceName@ must
+    -- be set.
+    userProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The type of app.
+    appType :: AppType,
+    -- | The name of the app.
+    appName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApp' 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:
+--
+-- 'resourceSpec', 'createApp_resourceSpec' - The instance type and the Amazon Resource Name (ARN) of the SageMaker
+-- image created on the instance.
+--
+-- The value of @InstanceType@ passed as part of the @ResourceSpec@ in the
+-- @CreateApp@ call overrides the value passed as part of the
+-- @ResourceSpec@ configured for the user profile or the domain. If
+-- @InstanceType@ is not specified in any of those three @ResourceSpec@
+-- values for a @KernelGateway@ app, the @CreateApp@ call fails with a
+-- request validation error.
+--
+-- 'spaceName', 'createApp_spaceName' - The name of the space. If this value is not set, then @UserProfileName@
+-- must be set.
+--
+-- 'tags', 'createApp_tags' - Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource.
+--
+-- 'userProfileName', 'createApp_userProfileName' - The user profile name. If this value is not set, then @SpaceName@ must
+-- be set.
+--
+-- 'domainId', 'createApp_domainId' - The domain ID.
+--
+-- 'appType', 'createApp_appType' - The type of app.
+--
+-- 'appName', 'createApp_appName' - The name of the app.
+newCreateApp ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'appType'
+  AppType ->
+  -- | 'appName'
+  Prelude.Text ->
+  CreateApp
+newCreateApp pDomainId_ pAppType_ pAppName_ =
+  CreateApp'
+    { resourceSpec = Prelude.Nothing,
+      spaceName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      userProfileName = Prelude.Nothing,
+      domainId = pDomainId_,
+      appType = pAppType_,
+      appName = pAppName_
+    }
+
+-- | The instance type and the Amazon Resource Name (ARN) of the SageMaker
+-- image created on the instance.
+--
+-- The value of @InstanceType@ passed as part of the @ResourceSpec@ in the
+-- @CreateApp@ call overrides the value passed as part of the
+-- @ResourceSpec@ configured for the user profile or the domain. If
+-- @InstanceType@ is not specified in any of those three @ResourceSpec@
+-- values for a @KernelGateway@ app, the @CreateApp@ call fails with a
+-- request validation error.
+createApp_resourceSpec :: Lens.Lens' CreateApp (Prelude.Maybe ResourceSpec)
+createApp_resourceSpec = Lens.lens (\CreateApp' {resourceSpec} -> resourceSpec) (\s@CreateApp' {} a -> s {resourceSpec = a} :: CreateApp)
+
+-- | The name of the space. If this value is not set, then @UserProfileName@
+-- must be set.
+createApp_spaceName :: Lens.Lens' CreateApp (Prelude.Maybe Prelude.Text)
+createApp_spaceName = Lens.lens (\CreateApp' {spaceName} -> spaceName) (\s@CreateApp' {} a -> s {spaceName = a} :: CreateApp)
+
+-- | Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource.
+createApp_tags :: Lens.Lens' CreateApp (Prelude.Maybe [Tag])
+createApp_tags = Lens.lens (\CreateApp' {tags} -> tags) (\s@CreateApp' {} a -> s {tags = a} :: CreateApp) Prelude.. Lens.mapping Lens.coerced
+
+-- | The user profile name. If this value is not set, then @SpaceName@ must
+-- be set.
+createApp_userProfileName :: Lens.Lens' CreateApp (Prelude.Maybe Prelude.Text)
+createApp_userProfileName = Lens.lens (\CreateApp' {userProfileName} -> userProfileName) (\s@CreateApp' {} a -> s {userProfileName = a} :: CreateApp)
+
+-- | The domain ID.
+createApp_domainId :: Lens.Lens' CreateApp Prelude.Text
+createApp_domainId = Lens.lens (\CreateApp' {domainId} -> domainId) (\s@CreateApp' {} a -> s {domainId = a} :: CreateApp)
+
+-- | The type of app.
+createApp_appType :: Lens.Lens' CreateApp AppType
+createApp_appType = Lens.lens (\CreateApp' {appType} -> appType) (\s@CreateApp' {} a -> s {appType = a} :: CreateApp)
+
+-- | The name of the app.
+createApp_appName :: Lens.Lens' CreateApp Prelude.Text
+createApp_appName = Lens.lens (\CreateApp' {appName} -> appName) (\s@CreateApp' {} a -> s {appName = a} :: CreateApp)
+
+instance Core.AWSRequest CreateApp where
+  type AWSResponse CreateApp = CreateAppResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAppResponse'
+            Prelude.<$> (x Data..?> "AppArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateApp where
+  hashWithSalt _salt CreateApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceSpec
+      `Prelude.hashWithSalt` spaceName
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` userProfileName
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` appType
+      `Prelude.hashWithSalt` appName
+
+instance Prelude.NFData CreateApp where
+  rnf CreateApp' {..} =
+    Prelude.rnf resourceSpec
+      `Prelude.seq` Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf userProfileName
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf appType
+      `Prelude.seq` Prelude.rnf appName
+
+instance Data.ToHeaders CreateApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateApp" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateApp where
+  toJSON CreateApp' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceSpec" Data..=) Prelude.<$> resourceSpec,
+            ("SpaceName" Data..=) Prelude.<$> spaceName,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("UserProfileName" Data..=)
+              Prelude.<$> userProfileName,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("AppType" Data..= appType),
+            Prelude.Just ("AppName" Data..= appName)
+          ]
+      )
+
+instance Data.ToPath CreateApp where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateApp where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAppResponse' smart constructor.
+data CreateAppResponse = CreateAppResponse'
+  { -- | The Amazon Resource Name (ARN) of the app.
+    appArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppResponse' 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:
+--
+-- 'appArn', 'createAppResponse_appArn' - The Amazon Resource Name (ARN) of the app.
+--
+-- 'httpStatus', 'createAppResponse_httpStatus' - The response's http status code.
+newCreateAppResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAppResponse
+newCreateAppResponse pHttpStatus_ =
+  CreateAppResponse'
+    { appArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the app.
+createAppResponse_appArn :: Lens.Lens' CreateAppResponse (Prelude.Maybe Prelude.Text)
+createAppResponse_appArn = Lens.lens (\CreateAppResponse' {appArn} -> appArn) (\s@CreateAppResponse' {} a -> s {appArn = a} :: CreateAppResponse)
+
+-- | The response's http status code.
+createAppResponse_httpStatus :: Lens.Lens' CreateAppResponse Prelude.Int
+createAppResponse_httpStatus = Lens.lens (\CreateAppResponse' {httpStatus} -> httpStatus) (\s@CreateAppResponse' {} a -> s {httpStatus = a} :: CreateAppResponse)
+
+instance Prelude.NFData CreateAppResponse where
+  rnf CreateAppResponse' {..} =
+    Prelude.rnf appArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateAppImageConfig.hs b/gen/Amazonka/SageMaker/CreateAppImageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateAppImageConfig.hs
@@ -0,0 +1,213 @@
+{-# 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.CreateAppImageConfig
+-- 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 configuration for running a SageMaker image as a KernelGateway
+-- app. The configuration specifies the Amazon Elastic File System (EFS)
+-- storage volume on the image, and a list of the kernels in the image.
+module Amazonka.SageMaker.CreateAppImageConfig
+  ( -- * Creating a Request
+    CreateAppImageConfig (..),
+    newCreateAppImageConfig,
+
+    -- * Request Lenses
+    createAppImageConfig_kernelGatewayImageConfig,
+    createAppImageConfig_tags,
+    createAppImageConfig_appImageConfigName,
+
+    -- * Destructuring the Response
+    CreateAppImageConfigResponse (..),
+    newCreateAppImageConfigResponse,
+
+    -- * Response Lenses
+    createAppImageConfigResponse_appImageConfigArn,
+    createAppImageConfigResponse_httpStatus,
+  )
+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:/ 'newCreateAppImageConfig' smart constructor.
+data CreateAppImageConfig = CreateAppImageConfig'
+  { -- | The KernelGatewayImageConfig. You can only specify one image kernel in
+    -- the AppImageConfig API. This kernel will be shown to users before the
+    -- image starts. Once the image runs, all kernels are visible in
+    -- JupyterLab.
+    kernelGatewayImageConfig :: Prelude.Maybe KernelGatewayImageConfig,
+    -- | A list of tags to apply to the AppImageConfig.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the AppImageConfig. Must be unique to your account.
+    appImageConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppImageConfig' 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:
+--
+-- 'kernelGatewayImageConfig', 'createAppImageConfig_kernelGatewayImageConfig' - The KernelGatewayImageConfig. You can only specify one image kernel in
+-- the AppImageConfig API. This kernel will be shown to users before the
+-- image starts. Once the image runs, all kernels are visible in
+-- JupyterLab.
+--
+-- 'tags', 'createAppImageConfig_tags' - A list of tags to apply to the AppImageConfig.
+--
+-- 'appImageConfigName', 'createAppImageConfig_appImageConfigName' - The name of the AppImageConfig. Must be unique to your account.
+newCreateAppImageConfig ::
+  -- | 'appImageConfigName'
+  Prelude.Text ->
+  CreateAppImageConfig
+newCreateAppImageConfig pAppImageConfigName_ =
+  CreateAppImageConfig'
+    { kernelGatewayImageConfig =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      appImageConfigName = pAppImageConfigName_
+    }
+
+-- | The KernelGatewayImageConfig. You can only specify one image kernel in
+-- the AppImageConfig API. This kernel will be shown to users before the
+-- image starts. Once the image runs, all kernels are visible in
+-- JupyterLab.
+createAppImageConfig_kernelGatewayImageConfig :: Lens.Lens' CreateAppImageConfig (Prelude.Maybe KernelGatewayImageConfig)
+createAppImageConfig_kernelGatewayImageConfig = Lens.lens (\CreateAppImageConfig' {kernelGatewayImageConfig} -> kernelGatewayImageConfig) (\s@CreateAppImageConfig' {} a -> s {kernelGatewayImageConfig = a} :: CreateAppImageConfig)
+
+-- | A list of tags to apply to the AppImageConfig.
+createAppImageConfig_tags :: Lens.Lens' CreateAppImageConfig (Prelude.Maybe [Tag])
+createAppImageConfig_tags = Lens.lens (\CreateAppImageConfig' {tags} -> tags) (\s@CreateAppImageConfig' {} a -> s {tags = a} :: CreateAppImageConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the AppImageConfig. Must be unique to your account.
+createAppImageConfig_appImageConfigName :: Lens.Lens' CreateAppImageConfig Prelude.Text
+createAppImageConfig_appImageConfigName = Lens.lens (\CreateAppImageConfig' {appImageConfigName} -> appImageConfigName) (\s@CreateAppImageConfig' {} a -> s {appImageConfigName = a} :: CreateAppImageConfig)
+
+instance Core.AWSRequest CreateAppImageConfig where
+  type
+    AWSResponse CreateAppImageConfig =
+      CreateAppImageConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAppImageConfigResponse'
+            Prelude.<$> (x Data..?> "AppImageConfigArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateAppImageConfig where
+  hashWithSalt _salt CreateAppImageConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kernelGatewayImageConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` appImageConfigName
+
+instance Prelude.NFData CreateAppImageConfig where
+  rnf CreateAppImageConfig' {..} =
+    Prelude.rnf kernelGatewayImageConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf appImageConfigName
+
+instance Data.ToHeaders CreateAppImageConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateAppImageConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAppImageConfig where
+  toJSON CreateAppImageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KernelGatewayImageConfig" Data..=)
+              Prelude.<$> kernelGatewayImageConfig,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("AppImageConfigName" Data..= appImageConfigName)
+          ]
+      )
+
+instance Data.ToPath CreateAppImageConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateAppImageConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAppImageConfigResponse' smart constructor.
+data CreateAppImageConfigResponse = CreateAppImageConfigResponse'
+  { -- | The Amazon Resource Name (ARN) of the AppImageConfig.
+    appImageConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAppImageConfigResponse' 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:
+--
+-- 'appImageConfigArn', 'createAppImageConfigResponse_appImageConfigArn' - The Amazon Resource Name (ARN) of the AppImageConfig.
+--
+-- 'httpStatus', 'createAppImageConfigResponse_httpStatus' - The response's http status code.
+newCreateAppImageConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateAppImageConfigResponse
+newCreateAppImageConfigResponse pHttpStatus_ =
+  CreateAppImageConfigResponse'
+    { appImageConfigArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the AppImageConfig.
+createAppImageConfigResponse_appImageConfigArn :: Lens.Lens' CreateAppImageConfigResponse (Prelude.Maybe Prelude.Text)
+createAppImageConfigResponse_appImageConfigArn = Lens.lens (\CreateAppImageConfigResponse' {appImageConfigArn} -> appImageConfigArn) (\s@CreateAppImageConfigResponse' {} a -> s {appImageConfigArn = a} :: CreateAppImageConfigResponse)
+
+-- | The response's http status code.
+createAppImageConfigResponse_httpStatus :: Lens.Lens' CreateAppImageConfigResponse Prelude.Int
+createAppImageConfigResponse_httpStatus = Lens.lens (\CreateAppImageConfigResponse' {httpStatus} -> httpStatus) (\s@CreateAppImageConfigResponse' {} a -> s {httpStatus = a} :: CreateAppImageConfigResponse)
+
+instance Prelude.NFData CreateAppImageConfigResponse where
+  rnf CreateAppImageConfigResponse' {..} =
+    Prelude.rnf appImageConfigArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateArtifact.hs b/gen/Amazonka/SageMaker/CreateArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateArtifact.hs
@@ -0,0 +1,245 @@
+{-# 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.CreateArtifact
+-- 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 an /artifact/. An artifact is a lineage tracking entity that
+-- represents a URI addressable object or data. Some examples are the S3
+-- URI of a dataset and the ECR registry path of an image. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking.html Amazon SageMaker ML Lineage Tracking>.
+module Amazonka.SageMaker.CreateArtifact
+  ( -- * Creating a Request
+    CreateArtifact (..),
+    newCreateArtifact,
+
+    -- * Request Lenses
+    createArtifact_artifactName,
+    createArtifact_metadataProperties,
+    createArtifact_properties,
+    createArtifact_tags,
+    createArtifact_source,
+    createArtifact_artifactType,
+
+    -- * Destructuring the Response
+    CreateArtifactResponse (..),
+    newCreateArtifactResponse,
+
+    -- * Response Lenses
+    createArtifactResponse_artifactArn,
+    createArtifactResponse_httpStatus,
+  )
+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:/ 'newCreateArtifact' smart constructor.
+data CreateArtifact = CreateArtifact'
+  { -- | The name of the artifact. Must be unique to your account in an Amazon
+    -- Web Services Region.
+    artifactName :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | A list of properties to add to the artifact.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of tags to apply to the artifact.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID, ID type, and URI of the source.
+    source :: ArtifactSource,
+    -- | The artifact type.
+    artifactType :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateArtifact' 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:
+--
+-- 'artifactName', 'createArtifact_artifactName' - The name of the artifact. Must be unique to your account in an Amazon
+-- Web Services Region.
+--
+-- 'metadataProperties', 'createArtifact_metadataProperties' - Undocumented member.
+--
+-- 'properties', 'createArtifact_properties' - A list of properties to add to the artifact.
+--
+-- 'tags', 'createArtifact_tags' - A list of tags to apply to the artifact.
+--
+-- 'source', 'createArtifact_source' - The ID, ID type, and URI of the source.
+--
+-- 'artifactType', 'createArtifact_artifactType' - The artifact type.
+newCreateArtifact ::
+  -- | 'source'
+  ArtifactSource ->
+  -- | 'artifactType'
+  Prelude.Text ->
+  CreateArtifact
+newCreateArtifact pSource_ pArtifactType_ =
+  CreateArtifact'
+    { artifactName = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      source = pSource_,
+      artifactType = pArtifactType_
+    }
+
+-- | The name of the artifact. Must be unique to your account in an Amazon
+-- Web Services Region.
+createArtifact_artifactName :: Lens.Lens' CreateArtifact (Prelude.Maybe Prelude.Text)
+createArtifact_artifactName = Lens.lens (\CreateArtifact' {artifactName} -> artifactName) (\s@CreateArtifact' {} a -> s {artifactName = a} :: CreateArtifact)
+
+-- | Undocumented member.
+createArtifact_metadataProperties :: Lens.Lens' CreateArtifact (Prelude.Maybe MetadataProperties)
+createArtifact_metadataProperties = Lens.lens (\CreateArtifact' {metadataProperties} -> metadataProperties) (\s@CreateArtifact' {} a -> s {metadataProperties = a} :: CreateArtifact)
+
+-- | A list of properties to add to the artifact.
+createArtifact_properties :: Lens.Lens' CreateArtifact (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createArtifact_properties = Lens.lens (\CreateArtifact' {properties} -> properties) (\s@CreateArtifact' {} a -> s {properties = a} :: CreateArtifact) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of tags to apply to the artifact.
+createArtifact_tags :: Lens.Lens' CreateArtifact (Prelude.Maybe [Tag])
+createArtifact_tags = Lens.lens (\CreateArtifact' {tags} -> tags) (\s@CreateArtifact' {} a -> s {tags = a} :: CreateArtifact) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID, ID type, and URI of the source.
+createArtifact_source :: Lens.Lens' CreateArtifact ArtifactSource
+createArtifact_source = Lens.lens (\CreateArtifact' {source} -> source) (\s@CreateArtifact' {} a -> s {source = a} :: CreateArtifact)
+
+-- | The artifact type.
+createArtifact_artifactType :: Lens.Lens' CreateArtifact Prelude.Text
+createArtifact_artifactType = Lens.lens (\CreateArtifact' {artifactType} -> artifactType) (\s@CreateArtifact' {} a -> s {artifactType = a} :: CreateArtifact)
+
+instance Core.AWSRequest CreateArtifact where
+  type
+    AWSResponse CreateArtifact =
+      CreateArtifactResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateArtifactResponse'
+            Prelude.<$> (x Data..?> "ArtifactArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateArtifact where
+  hashWithSalt _salt CreateArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactName
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` artifactType
+
+instance Prelude.NFData CreateArtifact where
+  rnf CreateArtifact' {..} =
+    Prelude.rnf artifactName
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf artifactType
+
+instance Data.ToHeaders CreateArtifact where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateArtifact" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateArtifact where
+  toJSON CreateArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArtifactName" Data..=) Prelude.<$> artifactName,
+            ("MetadataProperties" Data..=)
+              Prelude.<$> metadataProperties,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Source" Data..= source),
+            Prelude.Just ("ArtifactType" Data..= artifactType)
+          ]
+      )
+
+instance Data.ToPath CreateArtifact where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateArtifact where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateArtifactResponse' smart constructor.
+data CreateArtifactResponse = CreateArtifactResponse'
+  { -- | The Amazon Resource Name (ARN) of the artifact.
+    artifactArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateArtifactResponse' 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:
+--
+-- 'artifactArn', 'createArtifactResponse_artifactArn' - The Amazon Resource Name (ARN) of the artifact.
+--
+-- 'httpStatus', 'createArtifactResponse_httpStatus' - The response's http status code.
+newCreateArtifactResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateArtifactResponse
+newCreateArtifactResponse pHttpStatus_ =
+  CreateArtifactResponse'
+    { artifactArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the artifact.
+createArtifactResponse_artifactArn :: Lens.Lens' CreateArtifactResponse (Prelude.Maybe Prelude.Text)
+createArtifactResponse_artifactArn = Lens.lens (\CreateArtifactResponse' {artifactArn} -> artifactArn) (\s@CreateArtifactResponse' {} a -> s {artifactArn = a} :: CreateArtifactResponse)
+
+-- | The response's http status code.
+createArtifactResponse_httpStatus :: Lens.Lens' CreateArtifactResponse Prelude.Int
+createArtifactResponse_httpStatus = Lens.lens (\CreateArtifactResponse' {httpStatus} -> httpStatus) (\s@CreateArtifactResponse' {} a -> s {httpStatus = a} :: CreateArtifactResponse)
+
+instance Prelude.NFData CreateArtifactResponse where
+  rnf CreateArtifactResponse' {..} =
+    Prelude.rnf artifactArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateAutoMLJob.hs b/gen/Amazonka/SageMaker/CreateAutoMLJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateAutoMLJob.hs
@@ -0,0 +1,356 @@
+{-# 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.CreateAutoMLJob
+-- 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 an Autopilot job.
+--
+-- Find the best-performing model after you run an Autopilot job by calling
+-- .
+--
+-- For information about how to use Autopilot, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html Automate Model Development with Amazon SageMaker Autopilot>.
+module Amazonka.SageMaker.CreateAutoMLJob
+  ( -- * Creating a Request
+    CreateAutoMLJob (..),
+    newCreateAutoMLJob,
+
+    -- * Request Lenses
+    createAutoMLJob_autoMLJobConfig,
+    createAutoMLJob_autoMLJobObjective,
+    createAutoMLJob_generateCandidateDefinitionsOnly,
+    createAutoMLJob_modelDeployConfig,
+    createAutoMLJob_problemType,
+    createAutoMLJob_tags,
+    createAutoMLJob_autoMLJobName,
+    createAutoMLJob_inputDataConfig,
+    createAutoMLJob_outputDataConfig,
+    createAutoMLJob_roleArn,
+
+    -- * Destructuring the Response
+    CreateAutoMLJobResponse (..),
+    newCreateAutoMLJobResponse,
+
+    -- * Response Lenses
+    createAutoMLJobResponse_httpStatus,
+    createAutoMLJobResponse_autoMLJobArn,
+  )
+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:/ 'newCreateAutoMLJob' smart constructor.
+data CreateAutoMLJob = CreateAutoMLJob'
+  { -- | A collection of settings used to configure an AutoML job.
+    autoMLJobConfig :: Prelude.Maybe AutoMLJobConfig,
+    -- | Defines the objective metric used to measure the predictive quality of
+    -- an AutoML job. You provide an AutoMLJobObjective$MetricName and
+    -- Autopilot infers whether to minimize or maximize it.
+    autoMLJobObjective :: Prelude.Maybe AutoMLJobObjective,
+    -- | Generates possible candidates without training the models. A candidate
+    -- is a combination of data preprocessors, algorithms, and algorithm
+    -- parameter settings.
+    generateCandidateDefinitionsOnly :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies how to generate the endpoint name for an automatic one-click
+    -- Autopilot model deployment.
+    modelDeployConfig :: Prelude.Maybe ModelDeployConfig,
+    -- | Defines the type of supervised learning available for the candidates.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-problem-types.html Amazon SageMaker Autopilot problem types and algorithm support>.
+    problemType :: Prelude.Maybe ProblemType,
+    -- | Each tag consists of a key and an optional value. Tag keys must be
+    -- unique per resource.
+    tags :: Prelude.Maybe [Tag],
+    -- | Identifies an Autopilot job. The name must be unique to your account and
+    -- is case-insensitive.
+    autoMLJobName :: Prelude.Text,
+    -- | An array of channel objects that describes the input data and its
+    -- location. Each channel is a named input source. Similar to
+    -- @InputDataConfig@ supported by . Format(s) supported: CSV, Parquet. A
+    -- minimum of 500 rows is required for the training dataset. There is not a
+    -- minimum number of rows required for the validation dataset.
+    inputDataConfig :: Prelude.NonEmpty AutoMLChannel,
+    -- | Provides information about encryption and the Amazon S3 output path
+    -- needed to store artifacts from an AutoML job. Format(s) supported: CSV.
+    outputDataConfig :: AutoMLOutputDataConfig,
+    -- | The ARN of the role that is used to access the data.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAutoMLJob' 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:
+--
+-- 'autoMLJobConfig', 'createAutoMLJob_autoMLJobConfig' - A collection of settings used to configure an AutoML job.
+--
+-- 'autoMLJobObjective', 'createAutoMLJob_autoMLJobObjective' - Defines the objective metric used to measure the predictive quality of
+-- an AutoML job. You provide an AutoMLJobObjective$MetricName and
+-- Autopilot infers whether to minimize or maximize it.
+--
+-- 'generateCandidateDefinitionsOnly', 'createAutoMLJob_generateCandidateDefinitionsOnly' - Generates possible candidates without training the models. A candidate
+-- is a combination of data preprocessors, algorithms, and algorithm
+-- parameter settings.
+--
+-- 'modelDeployConfig', 'createAutoMLJob_modelDeployConfig' - Specifies how to generate the endpoint name for an automatic one-click
+-- Autopilot model deployment.
+--
+-- 'problemType', 'createAutoMLJob_problemType' - Defines the type of supervised learning available for the candidates.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-problem-types.html Amazon SageMaker Autopilot problem types and algorithm support>.
+--
+-- 'tags', 'createAutoMLJob_tags' - Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource.
+--
+-- 'autoMLJobName', 'createAutoMLJob_autoMLJobName' - Identifies an Autopilot job. The name must be unique to your account and
+-- is case-insensitive.
+--
+-- 'inputDataConfig', 'createAutoMLJob_inputDataConfig' - An array of channel objects that describes the input data and its
+-- location. Each channel is a named input source. Similar to
+-- @InputDataConfig@ supported by . Format(s) supported: CSV, Parquet. A
+-- minimum of 500 rows is required for the training dataset. There is not a
+-- minimum number of rows required for the validation dataset.
+--
+-- 'outputDataConfig', 'createAutoMLJob_outputDataConfig' - Provides information about encryption and the Amazon S3 output path
+-- needed to store artifacts from an AutoML job. Format(s) supported: CSV.
+--
+-- 'roleArn', 'createAutoMLJob_roleArn' - The ARN of the role that is used to access the data.
+newCreateAutoMLJob ::
+  -- | 'autoMLJobName'
+  Prelude.Text ->
+  -- | 'inputDataConfig'
+  Prelude.NonEmpty AutoMLChannel ->
+  -- | 'outputDataConfig'
+  AutoMLOutputDataConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateAutoMLJob
+newCreateAutoMLJob
+  pAutoMLJobName_
+  pInputDataConfig_
+  pOutputDataConfig_
+  pRoleArn_ =
+    CreateAutoMLJob'
+      { autoMLJobConfig = Prelude.Nothing,
+        autoMLJobObjective = Prelude.Nothing,
+        generateCandidateDefinitionsOnly = Prelude.Nothing,
+        modelDeployConfig = Prelude.Nothing,
+        problemType = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        autoMLJobName = pAutoMLJobName_,
+        inputDataConfig =
+          Lens.coerced Lens.# pInputDataConfig_,
+        outputDataConfig = pOutputDataConfig_,
+        roleArn = pRoleArn_
+      }
+
+-- | A collection of settings used to configure an AutoML job.
+createAutoMLJob_autoMLJobConfig :: Lens.Lens' CreateAutoMLJob (Prelude.Maybe AutoMLJobConfig)
+createAutoMLJob_autoMLJobConfig = Lens.lens (\CreateAutoMLJob' {autoMLJobConfig} -> autoMLJobConfig) (\s@CreateAutoMLJob' {} a -> s {autoMLJobConfig = a} :: CreateAutoMLJob)
+
+-- | Defines the objective metric used to measure the predictive quality of
+-- an AutoML job. You provide an AutoMLJobObjective$MetricName and
+-- Autopilot infers whether to minimize or maximize it.
+createAutoMLJob_autoMLJobObjective :: Lens.Lens' CreateAutoMLJob (Prelude.Maybe AutoMLJobObjective)
+createAutoMLJob_autoMLJobObjective = Lens.lens (\CreateAutoMLJob' {autoMLJobObjective} -> autoMLJobObjective) (\s@CreateAutoMLJob' {} a -> s {autoMLJobObjective = a} :: CreateAutoMLJob)
+
+-- | Generates possible candidates without training the models. A candidate
+-- is a combination of data preprocessors, algorithms, and algorithm
+-- parameter settings.
+createAutoMLJob_generateCandidateDefinitionsOnly :: Lens.Lens' CreateAutoMLJob (Prelude.Maybe Prelude.Bool)
+createAutoMLJob_generateCandidateDefinitionsOnly = Lens.lens (\CreateAutoMLJob' {generateCandidateDefinitionsOnly} -> generateCandidateDefinitionsOnly) (\s@CreateAutoMLJob' {} a -> s {generateCandidateDefinitionsOnly = a} :: CreateAutoMLJob)
+
+-- | Specifies how to generate the endpoint name for an automatic one-click
+-- Autopilot model deployment.
+createAutoMLJob_modelDeployConfig :: Lens.Lens' CreateAutoMLJob (Prelude.Maybe ModelDeployConfig)
+createAutoMLJob_modelDeployConfig = Lens.lens (\CreateAutoMLJob' {modelDeployConfig} -> modelDeployConfig) (\s@CreateAutoMLJob' {} a -> s {modelDeployConfig = a} :: CreateAutoMLJob)
+
+-- | Defines the type of supervised learning available for the candidates.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-problem-types.html Amazon SageMaker Autopilot problem types and algorithm support>.
+createAutoMLJob_problemType :: Lens.Lens' CreateAutoMLJob (Prelude.Maybe ProblemType)
+createAutoMLJob_problemType = Lens.lens (\CreateAutoMLJob' {problemType} -> problemType) (\s@CreateAutoMLJob' {} a -> s {problemType = a} :: CreateAutoMLJob)
+
+-- | Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource.
+createAutoMLJob_tags :: Lens.Lens' CreateAutoMLJob (Prelude.Maybe [Tag])
+createAutoMLJob_tags = Lens.lens (\CreateAutoMLJob' {tags} -> tags) (\s@CreateAutoMLJob' {} a -> s {tags = a} :: CreateAutoMLJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Identifies an Autopilot job. The name must be unique to your account and
+-- is case-insensitive.
+createAutoMLJob_autoMLJobName :: Lens.Lens' CreateAutoMLJob Prelude.Text
+createAutoMLJob_autoMLJobName = Lens.lens (\CreateAutoMLJob' {autoMLJobName} -> autoMLJobName) (\s@CreateAutoMLJob' {} a -> s {autoMLJobName = a} :: CreateAutoMLJob)
+
+-- | An array of channel objects that describes the input data and its
+-- location. Each channel is a named input source. Similar to
+-- @InputDataConfig@ supported by . Format(s) supported: CSV, Parquet. A
+-- minimum of 500 rows is required for the training dataset. There is not a
+-- minimum number of rows required for the validation dataset.
+createAutoMLJob_inputDataConfig :: Lens.Lens' CreateAutoMLJob (Prelude.NonEmpty AutoMLChannel)
+createAutoMLJob_inputDataConfig = Lens.lens (\CreateAutoMLJob' {inputDataConfig} -> inputDataConfig) (\s@CreateAutoMLJob' {} a -> s {inputDataConfig = a} :: CreateAutoMLJob) Prelude.. Lens.coerced
+
+-- | Provides information about encryption and the Amazon S3 output path
+-- needed to store artifacts from an AutoML job. Format(s) supported: CSV.
+createAutoMLJob_outputDataConfig :: Lens.Lens' CreateAutoMLJob AutoMLOutputDataConfig
+createAutoMLJob_outputDataConfig = Lens.lens (\CreateAutoMLJob' {outputDataConfig} -> outputDataConfig) (\s@CreateAutoMLJob' {} a -> s {outputDataConfig = a} :: CreateAutoMLJob)
+
+-- | The ARN of the role that is used to access the data.
+createAutoMLJob_roleArn :: Lens.Lens' CreateAutoMLJob Prelude.Text
+createAutoMLJob_roleArn = Lens.lens (\CreateAutoMLJob' {roleArn} -> roleArn) (\s@CreateAutoMLJob' {} a -> s {roleArn = a} :: CreateAutoMLJob)
+
+instance Core.AWSRequest CreateAutoMLJob where
+  type
+    AWSResponse CreateAutoMLJob =
+      CreateAutoMLJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateAutoMLJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "AutoMLJobArn")
+      )
+
+instance Prelude.Hashable CreateAutoMLJob where
+  hashWithSalt _salt CreateAutoMLJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoMLJobConfig
+      `Prelude.hashWithSalt` autoMLJobObjective
+      `Prelude.hashWithSalt` generateCandidateDefinitionsOnly
+      `Prelude.hashWithSalt` modelDeployConfig
+      `Prelude.hashWithSalt` problemType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` autoMLJobName
+      `Prelude.hashWithSalt` inputDataConfig
+      `Prelude.hashWithSalt` outputDataConfig
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateAutoMLJob where
+  rnf CreateAutoMLJob' {..} =
+    Prelude.rnf autoMLJobConfig
+      `Prelude.seq` Prelude.rnf autoMLJobObjective
+      `Prelude.seq` Prelude.rnf generateCandidateDefinitionsOnly
+      `Prelude.seq` Prelude.rnf modelDeployConfig
+      `Prelude.seq` Prelude.rnf problemType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf autoMLJobName
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateAutoMLJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateAutoMLJob" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateAutoMLJob where
+  toJSON CreateAutoMLJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoMLJobConfig" Data..=)
+              Prelude.<$> autoMLJobConfig,
+            ("AutoMLJobObjective" Data..=)
+              Prelude.<$> autoMLJobObjective,
+            ("GenerateCandidateDefinitionsOnly" Data..=)
+              Prelude.<$> generateCandidateDefinitionsOnly,
+            ("ModelDeployConfig" Data..=)
+              Prelude.<$> modelDeployConfig,
+            ("ProblemType" Data..=) Prelude.<$> problemType,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("AutoMLJobName" Data..= autoMLJobName),
+            Prelude.Just
+              ("InputDataConfig" Data..= inputDataConfig),
+            Prelude.Just
+              ("OutputDataConfig" Data..= outputDataConfig),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateAutoMLJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateAutoMLJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateAutoMLJobResponse' smart constructor.
+data CreateAutoMLJobResponse = CreateAutoMLJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The unique ARN assigned to the AutoML job when it is created.
+    autoMLJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateAutoMLJobResponse' 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', 'createAutoMLJobResponse_httpStatus' - The response's http status code.
+--
+-- 'autoMLJobArn', 'createAutoMLJobResponse_autoMLJobArn' - The unique ARN assigned to the AutoML job when it is created.
+newCreateAutoMLJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'autoMLJobArn'
+  Prelude.Text ->
+  CreateAutoMLJobResponse
+newCreateAutoMLJobResponse
+  pHttpStatus_
+  pAutoMLJobArn_ =
+    CreateAutoMLJobResponse'
+      { httpStatus = pHttpStatus_,
+        autoMLJobArn = pAutoMLJobArn_
+      }
+
+-- | The response's http status code.
+createAutoMLJobResponse_httpStatus :: Lens.Lens' CreateAutoMLJobResponse Prelude.Int
+createAutoMLJobResponse_httpStatus = Lens.lens (\CreateAutoMLJobResponse' {httpStatus} -> httpStatus) (\s@CreateAutoMLJobResponse' {} a -> s {httpStatus = a} :: CreateAutoMLJobResponse)
+
+-- | The unique ARN assigned to the AutoML job when it is created.
+createAutoMLJobResponse_autoMLJobArn :: Lens.Lens' CreateAutoMLJobResponse Prelude.Text
+createAutoMLJobResponse_autoMLJobArn = Lens.lens (\CreateAutoMLJobResponse' {autoMLJobArn} -> autoMLJobArn) (\s@CreateAutoMLJobResponse' {} a -> s {autoMLJobArn = a} :: CreateAutoMLJobResponse)
+
+instance Prelude.NFData CreateAutoMLJobResponse where
+  rnf CreateAutoMLJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf autoMLJobArn
diff --git a/gen/Amazonka/SageMaker/CreateCodeRepository.hs b/gen/Amazonka/SageMaker/CreateCodeRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateCodeRepository.hs
@@ -0,0 +1,235 @@
+{-# 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.CreateCodeRepository
+-- 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 Git repository as a resource in your SageMaker account. You
+-- can associate the repository with notebook instances so that you can use
+-- Git source control for the notebooks you create. The Git repository is a
+-- resource in your SageMaker account, so it can be associated with more
+-- than one notebook instance, and it persists independently from the
+-- lifecycle of any notebook instances it is associated with.
+--
+-- The repository can be hosted either in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository.
+module Amazonka.SageMaker.CreateCodeRepository
+  ( -- * Creating a Request
+    CreateCodeRepository (..),
+    newCreateCodeRepository,
+
+    -- * Request Lenses
+    createCodeRepository_tags,
+    createCodeRepository_codeRepositoryName,
+    createCodeRepository_gitConfig,
+
+    -- * Destructuring the Response
+    CreateCodeRepositoryResponse (..),
+    newCreateCodeRepositoryResponse,
+
+    -- * Response Lenses
+    createCodeRepositoryResponse_httpStatus,
+    createCodeRepositoryResponse_codeRepositoryArn,
+  )
+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:/ 'newCreateCodeRepository' smart constructor.
+data CreateCodeRepository = CreateCodeRepository'
+  { -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the Git repository. The name must have 1 to 63 characters.
+    -- Valid characters are a-z, A-Z, 0-9, and - (hyphen).
+    codeRepositoryName :: Prelude.Text,
+    -- | Specifies details about the repository, including the URL where the
+    -- repository is located, the default branch, and credentials to use to
+    -- access the repository.
+    gitConfig :: GitConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCodeRepository' 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:
+--
+-- 'tags', 'createCodeRepository_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'codeRepositoryName', 'createCodeRepository_codeRepositoryName' - The name of the Git repository. The name must have 1 to 63 characters.
+-- Valid characters are a-z, A-Z, 0-9, and - (hyphen).
+--
+-- 'gitConfig', 'createCodeRepository_gitConfig' - Specifies details about the repository, including the URL where the
+-- repository is located, the default branch, and credentials to use to
+-- access the repository.
+newCreateCodeRepository ::
+  -- | 'codeRepositoryName'
+  Prelude.Text ->
+  -- | 'gitConfig'
+  GitConfig ->
+  CreateCodeRepository
+newCreateCodeRepository
+  pCodeRepositoryName_
+  pGitConfig_ =
+    CreateCodeRepository'
+      { tags = Prelude.Nothing,
+        codeRepositoryName = pCodeRepositoryName_,
+        gitConfig = pGitConfig_
+      }
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createCodeRepository_tags :: Lens.Lens' CreateCodeRepository (Prelude.Maybe [Tag])
+createCodeRepository_tags = Lens.lens (\CreateCodeRepository' {tags} -> tags) (\s@CreateCodeRepository' {} a -> s {tags = a} :: CreateCodeRepository) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the Git repository. The name must have 1 to 63 characters.
+-- Valid characters are a-z, A-Z, 0-9, and - (hyphen).
+createCodeRepository_codeRepositoryName :: Lens.Lens' CreateCodeRepository Prelude.Text
+createCodeRepository_codeRepositoryName = Lens.lens (\CreateCodeRepository' {codeRepositoryName} -> codeRepositoryName) (\s@CreateCodeRepository' {} a -> s {codeRepositoryName = a} :: CreateCodeRepository)
+
+-- | Specifies details about the repository, including the URL where the
+-- repository is located, the default branch, and credentials to use to
+-- access the repository.
+createCodeRepository_gitConfig :: Lens.Lens' CreateCodeRepository GitConfig
+createCodeRepository_gitConfig = Lens.lens (\CreateCodeRepository' {gitConfig} -> gitConfig) (\s@CreateCodeRepository' {} a -> s {gitConfig = a} :: CreateCodeRepository)
+
+instance Core.AWSRequest CreateCodeRepository where
+  type
+    AWSResponse CreateCodeRepository =
+      CreateCodeRepositoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateCodeRepositoryResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "CodeRepositoryArn")
+      )
+
+instance Prelude.Hashable CreateCodeRepository where
+  hashWithSalt _salt CreateCodeRepository' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` codeRepositoryName
+      `Prelude.hashWithSalt` gitConfig
+
+instance Prelude.NFData CreateCodeRepository where
+  rnf CreateCodeRepository' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf codeRepositoryName
+      `Prelude.seq` Prelude.rnf gitConfig
+
+instance Data.ToHeaders CreateCodeRepository where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateCodeRepository" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateCodeRepository where
+  toJSON CreateCodeRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("CodeRepositoryName" Data..= codeRepositoryName),
+            Prelude.Just ("GitConfig" Data..= gitConfig)
+          ]
+      )
+
+instance Data.ToPath CreateCodeRepository where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateCodeRepository where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateCodeRepositoryResponse' smart constructor.
+data CreateCodeRepositoryResponse = CreateCodeRepositoryResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the new repository.
+    codeRepositoryArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCodeRepositoryResponse' 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', 'createCodeRepositoryResponse_httpStatus' - The response's http status code.
+--
+-- 'codeRepositoryArn', 'createCodeRepositoryResponse_codeRepositoryArn' - The Amazon Resource Name (ARN) of the new repository.
+newCreateCodeRepositoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'codeRepositoryArn'
+  Prelude.Text ->
+  CreateCodeRepositoryResponse
+newCreateCodeRepositoryResponse
+  pHttpStatus_
+  pCodeRepositoryArn_ =
+    CreateCodeRepositoryResponse'
+      { httpStatus =
+          pHttpStatus_,
+        codeRepositoryArn = pCodeRepositoryArn_
+      }
+
+-- | The response's http status code.
+createCodeRepositoryResponse_httpStatus :: Lens.Lens' CreateCodeRepositoryResponse Prelude.Int
+createCodeRepositoryResponse_httpStatus = Lens.lens (\CreateCodeRepositoryResponse' {httpStatus} -> httpStatus) (\s@CreateCodeRepositoryResponse' {} a -> s {httpStatus = a} :: CreateCodeRepositoryResponse)
+
+-- | The Amazon Resource Name (ARN) of the new repository.
+createCodeRepositoryResponse_codeRepositoryArn :: Lens.Lens' CreateCodeRepositoryResponse Prelude.Text
+createCodeRepositoryResponse_codeRepositoryArn = Lens.lens (\CreateCodeRepositoryResponse' {codeRepositoryArn} -> codeRepositoryArn) (\s@CreateCodeRepositoryResponse' {} a -> s {codeRepositoryArn = a} :: CreateCodeRepositoryResponse)
+
+instance Prelude.NFData CreateCodeRepositoryResponse where
+  rnf CreateCodeRepositoryResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf codeRepositoryArn
diff --git a/gen/Amazonka/SageMaker/CreateCompilationJob.hs b/gen/Amazonka/SageMaker/CreateCompilationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateCompilationJob.hs
@@ -0,0 +1,415 @@
+{-# 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.CreateCompilationJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a model compilation job. After the model has been compiled,
+-- Amazon SageMaker saves the resulting model artifacts to an Amazon Simple
+-- Storage Service (Amazon S3) bucket that you specify.
+--
+-- If you choose to host your model using Amazon SageMaker hosting
+-- services, you can use the resulting model artifacts as part of the
+-- model. You can also use the artifacts with Amazon Web Services IoT
+-- Greengrass. In that case, deploy them as an ML resource.
+--
+-- In the request body, you provide the following:
+--
+-- -   A name for the compilation job
+--
+-- -   Information about the input model artifacts
+--
+-- -   The output location for the compiled model and the device (target)
+--     that the model runs on
+--
+-- -   The Amazon Resource Name (ARN) of the IAM role that Amazon SageMaker
+--     assumes to perform the model compilation job.
+--
+-- You can also provide a @Tag@ to track the model compilation job\'s
+-- resource use and costs. The response body contains the
+-- @CompilationJobArn@ for the compiled job.
+--
+-- To stop a model compilation job, use StopCompilationJob. To get
+-- information about a particular model compilation job, use
+-- DescribeCompilationJob. To get information about multiple model
+-- compilation jobs, use ListCompilationJobs.
+module Amazonka.SageMaker.CreateCompilationJob
+  ( -- * Creating a Request
+    CreateCompilationJob (..),
+    newCreateCompilationJob,
+
+    -- * Request Lenses
+    createCompilationJob_inputConfig,
+    createCompilationJob_modelPackageVersionArn,
+    createCompilationJob_tags,
+    createCompilationJob_vpcConfig,
+    createCompilationJob_compilationJobName,
+    createCompilationJob_roleArn,
+    createCompilationJob_outputConfig,
+    createCompilationJob_stoppingCondition,
+
+    -- * Destructuring the Response
+    CreateCompilationJobResponse (..),
+    newCreateCompilationJobResponse,
+
+    -- * Response Lenses
+    createCompilationJobResponse_httpStatus,
+    createCompilationJobResponse_compilationJobArn,
+  )
+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:/ 'newCreateCompilationJob' smart constructor.
+data CreateCompilationJob = CreateCompilationJob'
+  { -- | Provides information about the location of input model artifacts, the
+    -- name and shape of the expected data inputs, and the framework in which
+    -- the model was trained.
+    inputConfig :: Prelude.Maybe InputConfig,
+    -- | The Amazon Resource Name (ARN) of a versioned model package. Provide
+    -- either a @ModelPackageVersionArn@ or an @InputConfig@ object in the
+    -- request syntax. The presence of both objects in the
+    -- @CreateCompilationJob@ request will return an exception.
+    modelPackageVersionArn :: Prelude.Maybe Prelude.Text,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | A VpcConfig object that specifies the VPC that you want your compilation
+    -- job to connect to. Control access to your models by configuring the VPC.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Protect Compilation Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe NeoVpcConfig,
+    -- | A name for the model compilation job. The name must be unique within the
+    -- Amazon Web Services Region and within your Amazon Web Services account.
+    compilationJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+    -- SageMaker to perform tasks on your behalf.
+    --
+    -- During model compilation, Amazon SageMaker needs your permission to:
+    --
+    -- -   Read input data from an S3 bucket
+    --
+    -- -   Write model artifacts to an S3 bucket
+    --
+    -- -   Write logs to Amazon CloudWatch Logs
+    --
+    -- -   Publish metrics to Amazon CloudWatch
+    --
+    -- You grant permissions for all of these tasks to an IAM role. To pass
+    -- this role to Amazon SageMaker, the caller of this API must have the
+    -- @iam:PassRole@ permission. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles.>
+    roleArn :: Prelude.Text,
+    -- | Provides information about the output location for the compiled model
+    -- and the target device the model runs on.
+    outputConfig :: OutputConfig,
+    -- | Specifies a limit to how long a model compilation job can run. When the
+    -- job reaches the time limit, Amazon SageMaker ends the compilation job.
+    -- Use this API to cap model training costs.
+    stoppingCondition :: StoppingCondition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCompilationJob' 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:
+--
+-- 'inputConfig', 'createCompilationJob_inputConfig' - Provides information about the location of input model artifacts, the
+-- name and shape of the expected data inputs, and the framework in which
+-- the model was trained.
+--
+-- 'modelPackageVersionArn', 'createCompilationJob_modelPackageVersionArn' - The Amazon Resource Name (ARN) of a versioned model package. Provide
+-- either a @ModelPackageVersionArn@ or an @InputConfig@ object in the
+-- request syntax. The presence of both objects in the
+-- @CreateCompilationJob@ request will return an exception.
+--
+-- 'tags', 'createCompilationJob_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'vpcConfig', 'createCompilationJob_vpcConfig' - A VpcConfig object that specifies the VPC that you want your compilation
+-- job to connect to. Control access to your models by configuring the VPC.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Protect Compilation Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- 'compilationJobName', 'createCompilationJob_compilationJobName' - A name for the model compilation job. The name must be unique within the
+-- Amazon Web Services Region and within your Amazon Web Services account.
+--
+-- 'roleArn', 'createCompilationJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to perform tasks on your behalf.
+--
+-- During model compilation, Amazon SageMaker needs your permission to:
+--
+-- -   Read input data from an S3 bucket
+--
+-- -   Write model artifacts to an S3 bucket
+--
+-- -   Write logs to Amazon CloudWatch Logs
+--
+-- -   Publish metrics to Amazon CloudWatch
+--
+-- You grant permissions for all of these tasks to an IAM role. To pass
+-- this role to Amazon SageMaker, the caller of this API must have the
+-- @iam:PassRole@ permission. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles.>
+--
+-- 'outputConfig', 'createCompilationJob_outputConfig' - Provides information about the output location for the compiled model
+-- and the target device the model runs on.
+--
+-- 'stoppingCondition', 'createCompilationJob_stoppingCondition' - Specifies a limit to how long a model compilation job can run. When the
+-- job reaches the time limit, Amazon SageMaker ends the compilation job.
+-- Use this API to cap model training costs.
+newCreateCompilationJob ::
+  -- | 'compilationJobName'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  OutputConfig ->
+  -- | 'stoppingCondition'
+  StoppingCondition ->
+  CreateCompilationJob
+newCreateCompilationJob
+  pCompilationJobName_
+  pRoleArn_
+  pOutputConfig_
+  pStoppingCondition_ =
+    CreateCompilationJob'
+      { inputConfig =
+          Prelude.Nothing,
+        modelPackageVersionArn = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        compilationJobName = pCompilationJobName_,
+        roleArn = pRoleArn_,
+        outputConfig = pOutputConfig_,
+        stoppingCondition = pStoppingCondition_
+      }
+
+-- | Provides information about the location of input model artifacts, the
+-- name and shape of the expected data inputs, and the framework in which
+-- the model was trained.
+createCompilationJob_inputConfig :: Lens.Lens' CreateCompilationJob (Prelude.Maybe InputConfig)
+createCompilationJob_inputConfig = Lens.lens (\CreateCompilationJob' {inputConfig} -> inputConfig) (\s@CreateCompilationJob' {} a -> s {inputConfig = a} :: CreateCompilationJob)
+
+-- | The Amazon Resource Name (ARN) of a versioned model package. Provide
+-- either a @ModelPackageVersionArn@ or an @InputConfig@ object in the
+-- request syntax. The presence of both objects in the
+-- @CreateCompilationJob@ request will return an exception.
+createCompilationJob_modelPackageVersionArn :: Lens.Lens' CreateCompilationJob (Prelude.Maybe Prelude.Text)
+createCompilationJob_modelPackageVersionArn = Lens.lens (\CreateCompilationJob' {modelPackageVersionArn} -> modelPackageVersionArn) (\s@CreateCompilationJob' {} a -> s {modelPackageVersionArn = a} :: CreateCompilationJob)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createCompilationJob_tags :: Lens.Lens' CreateCompilationJob (Prelude.Maybe [Tag])
+createCompilationJob_tags = Lens.lens (\CreateCompilationJob' {tags} -> tags) (\s@CreateCompilationJob' {} a -> s {tags = a} :: CreateCompilationJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | A VpcConfig object that specifies the VPC that you want your compilation
+-- job to connect to. Control access to your models by configuring the VPC.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Protect Compilation Jobs by Using an Amazon Virtual Private Cloud>.
+createCompilationJob_vpcConfig :: Lens.Lens' CreateCompilationJob (Prelude.Maybe NeoVpcConfig)
+createCompilationJob_vpcConfig = Lens.lens (\CreateCompilationJob' {vpcConfig} -> vpcConfig) (\s@CreateCompilationJob' {} a -> s {vpcConfig = a} :: CreateCompilationJob)
+
+-- | A name for the model compilation job. The name must be unique within the
+-- Amazon Web Services Region and within your Amazon Web Services account.
+createCompilationJob_compilationJobName :: Lens.Lens' CreateCompilationJob Prelude.Text
+createCompilationJob_compilationJobName = Lens.lens (\CreateCompilationJob' {compilationJobName} -> compilationJobName) (\s@CreateCompilationJob' {} a -> s {compilationJobName = a} :: CreateCompilationJob)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to perform tasks on your behalf.
+--
+-- During model compilation, Amazon SageMaker needs your permission to:
+--
+-- -   Read input data from an S3 bucket
+--
+-- -   Write model artifacts to an S3 bucket
+--
+-- -   Write logs to Amazon CloudWatch Logs
+--
+-- -   Publish metrics to Amazon CloudWatch
+--
+-- You grant permissions for all of these tasks to an IAM role. To pass
+-- this role to Amazon SageMaker, the caller of this API must have the
+-- @iam:PassRole@ permission. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles.>
+createCompilationJob_roleArn :: Lens.Lens' CreateCompilationJob Prelude.Text
+createCompilationJob_roleArn = Lens.lens (\CreateCompilationJob' {roleArn} -> roleArn) (\s@CreateCompilationJob' {} a -> s {roleArn = a} :: CreateCompilationJob)
+
+-- | Provides information about the output location for the compiled model
+-- and the target device the model runs on.
+createCompilationJob_outputConfig :: Lens.Lens' CreateCompilationJob OutputConfig
+createCompilationJob_outputConfig = Lens.lens (\CreateCompilationJob' {outputConfig} -> outputConfig) (\s@CreateCompilationJob' {} a -> s {outputConfig = a} :: CreateCompilationJob)
+
+-- | Specifies a limit to how long a model compilation job can run. When the
+-- job reaches the time limit, Amazon SageMaker ends the compilation job.
+-- Use this API to cap model training costs.
+createCompilationJob_stoppingCondition :: Lens.Lens' CreateCompilationJob StoppingCondition
+createCompilationJob_stoppingCondition = Lens.lens (\CreateCompilationJob' {stoppingCondition} -> stoppingCondition) (\s@CreateCompilationJob' {} a -> s {stoppingCondition = a} :: CreateCompilationJob)
+
+instance Core.AWSRequest CreateCompilationJob where
+  type
+    AWSResponse CreateCompilationJob =
+      CreateCompilationJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateCompilationJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "CompilationJobArn")
+      )
+
+instance Prelude.Hashable CreateCompilationJob where
+  hashWithSalt _salt CreateCompilationJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` inputConfig
+      `Prelude.hashWithSalt` modelPackageVersionArn
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcConfig
+      `Prelude.hashWithSalt` compilationJobName
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` outputConfig
+      `Prelude.hashWithSalt` stoppingCondition
+
+instance Prelude.NFData CreateCompilationJob where
+  rnf CreateCompilationJob' {..} =
+    Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf modelPackageVersionArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf compilationJobName
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+
+instance Data.ToHeaders CreateCompilationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateCompilationJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateCompilationJob where
+  toJSON CreateCompilationJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InputConfig" Data..=) Prelude.<$> inputConfig,
+            ("ModelPackageVersionArn" Data..=)
+              Prelude.<$> modelPackageVersionArn,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig,
+            Prelude.Just
+              ("CompilationJobName" Data..= compilationJobName),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("OutputConfig" Data..= outputConfig),
+            Prelude.Just
+              ("StoppingCondition" Data..= stoppingCondition)
+          ]
+      )
+
+instance Data.ToPath CreateCompilationJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateCompilationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateCompilationJobResponse' smart constructor.
+data CreateCompilationJobResponse = CreateCompilationJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | If the action is successful, the service sends back an HTTP 200
+    -- response. Amazon SageMaker returns the following data in JSON format:
+    --
+    -- -   @CompilationJobArn@: The Amazon Resource Name (ARN) of the compiled
+    --     job.
+    compilationJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCompilationJobResponse' 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', 'createCompilationJobResponse_httpStatus' - The response's http status code.
+--
+-- 'compilationJobArn', 'createCompilationJobResponse_compilationJobArn' - If the action is successful, the service sends back an HTTP 200
+-- response. Amazon SageMaker returns the following data in JSON format:
+--
+-- -   @CompilationJobArn@: The Amazon Resource Name (ARN) of the compiled
+--     job.
+newCreateCompilationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'compilationJobArn'
+  Prelude.Text ->
+  CreateCompilationJobResponse
+newCreateCompilationJobResponse
+  pHttpStatus_
+  pCompilationJobArn_ =
+    CreateCompilationJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        compilationJobArn = pCompilationJobArn_
+      }
+
+-- | The response's http status code.
+createCompilationJobResponse_httpStatus :: Lens.Lens' CreateCompilationJobResponse Prelude.Int
+createCompilationJobResponse_httpStatus = Lens.lens (\CreateCompilationJobResponse' {httpStatus} -> httpStatus) (\s@CreateCompilationJobResponse' {} a -> s {httpStatus = a} :: CreateCompilationJobResponse)
+
+-- | If the action is successful, the service sends back an HTTP 200
+-- response. Amazon SageMaker returns the following data in JSON format:
+--
+-- -   @CompilationJobArn@: The Amazon Resource Name (ARN) of the compiled
+--     job.
+createCompilationJobResponse_compilationJobArn :: Lens.Lens' CreateCompilationJobResponse Prelude.Text
+createCompilationJobResponse_compilationJobArn = Lens.lens (\CreateCompilationJobResponse' {compilationJobArn} -> compilationJobArn) (\s@CreateCompilationJobResponse' {} a -> s {compilationJobArn = a} :: CreateCompilationJobResponse)
+
+instance Prelude.NFData CreateCompilationJobResponse where
+  rnf CreateCompilationJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf compilationJobArn
diff --git a/gen/Amazonka/SageMaker/CreateContext.hs b/gen/Amazonka/SageMaker/CreateContext.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateContext.hs
@@ -0,0 +1,247 @@
+{-# 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.CreateContext
+-- 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 /context/. A context is a lineage tracking entity that
+-- represents a logical grouping of other tracking or experiment entities.
+-- Some examples are an endpoint and a model package. For more information,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking.html Amazon SageMaker ML Lineage Tracking>.
+module Amazonka.SageMaker.CreateContext
+  ( -- * Creating a Request
+    CreateContext (..),
+    newCreateContext,
+
+    -- * Request Lenses
+    createContext_description,
+    createContext_properties,
+    createContext_tags,
+    createContext_contextName,
+    createContext_source,
+    createContext_contextType,
+
+    -- * Destructuring the Response
+    CreateContextResponse (..),
+    newCreateContextResponse,
+
+    -- * Response Lenses
+    createContextResponse_contextArn,
+    createContextResponse_httpStatus,
+  )
+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:/ 'newCreateContext' smart constructor.
+data CreateContext = CreateContext'
+  { -- | The description of the context.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | A list of properties to add to the context.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of tags to apply to the context.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the context. Must be unique to your account in an Amazon Web
+    -- Services Region.
+    contextName :: Prelude.Text,
+    -- | The source type, ID, and URI.
+    source :: ContextSource,
+    -- | The context type.
+    contextType :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateContext' 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:
+--
+-- 'description', 'createContext_description' - The description of the context.
+--
+-- 'properties', 'createContext_properties' - A list of properties to add to the context.
+--
+-- 'tags', 'createContext_tags' - A list of tags to apply to the context.
+--
+-- 'contextName', 'createContext_contextName' - The name of the context. Must be unique to your account in an Amazon Web
+-- Services Region.
+--
+-- 'source', 'createContext_source' - The source type, ID, and URI.
+--
+-- 'contextType', 'createContext_contextType' - The context type.
+newCreateContext ::
+  -- | 'contextName'
+  Prelude.Text ->
+  -- | 'source'
+  ContextSource ->
+  -- | 'contextType'
+  Prelude.Text ->
+  CreateContext
+newCreateContext pContextName_ pSource_ pContextType_ =
+  CreateContext'
+    { description = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      contextName = pContextName_,
+      source = pSource_,
+      contextType = pContextType_
+    }
+
+-- | The description of the context.
+createContext_description :: Lens.Lens' CreateContext (Prelude.Maybe Prelude.Text)
+createContext_description = Lens.lens (\CreateContext' {description} -> description) (\s@CreateContext' {} a -> s {description = a} :: CreateContext)
+
+-- | A list of properties to add to the context.
+createContext_properties :: Lens.Lens' CreateContext (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createContext_properties = Lens.lens (\CreateContext' {properties} -> properties) (\s@CreateContext' {} a -> s {properties = a} :: CreateContext) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of tags to apply to the context.
+createContext_tags :: Lens.Lens' CreateContext (Prelude.Maybe [Tag])
+createContext_tags = Lens.lens (\CreateContext' {tags} -> tags) (\s@CreateContext' {} a -> s {tags = a} :: CreateContext) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the context. Must be unique to your account in an Amazon Web
+-- Services Region.
+createContext_contextName :: Lens.Lens' CreateContext Prelude.Text
+createContext_contextName = Lens.lens (\CreateContext' {contextName} -> contextName) (\s@CreateContext' {} a -> s {contextName = a} :: CreateContext)
+
+-- | The source type, ID, and URI.
+createContext_source :: Lens.Lens' CreateContext ContextSource
+createContext_source = Lens.lens (\CreateContext' {source} -> source) (\s@CreateContext' {} a -> s {source = a} :: CreateContext)
+
+-- | The context type.
+createContext_contextType :: Lens.Lens' CreateContext Prelude.Text
+createContext_contextType = Lens.lens (\CreateContext' {contextType} -> contextType) (\s@CreateContext' {} a -> s {contextType = a} :: CreateContext)
+
+instance Core.AWSRequest CreateContext where
+  type
+    AWSResponse CreateContext =
+      CreateContextResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateContextResponse'
+            Prelude.<$> (x Data..?> "ContextArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateContext where
+  hashWithSalt _salt CreateContext' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` contextName
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` contextType
+
+instance Prelude.NFData CreateContext where
+  rnf CreateContext' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf contextName
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf contextType
+
+instance Data.ToHeaders CreateContext where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateContext" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateContext where
+  toJSON CreateContext' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ContextName" Data..= contextName),
+            Prelude.Just ("Source" Data..= source),
+            Prelude.Just ("ContextType" Data..= contextType)
+          ]
+      )
+
+instance Data.ToPath CreateContext where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateContext where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateContextResponse' smart constructor.
+data CreateContextResponse = CreateContextResponse'
+  { -- | The Amazon Resource Name (ARN) of the context.
+    contextArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateContextResponse' 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:
+--
+-- 'contextArn', 'createContextResponse_contextArn' - The Amazon Resource Name (ARN) of the context.
+--
+-- 'httpStatus', 'createContextResponse_httpStatus' - The response's http status code.
+newCreateContextResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateContextResponse
+newCreateContextResponse pHttpStatus_ =
+  CreateContextResponse'
+    { contextArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the context.
+createContextResponse_contextArn :: Lens.Lens' CreateContextResponse (Prelude.Maybe Prelude.Text)
+createContextResponse_contextArn = Lens.lens (\CreateContextResponse' {contextArn} -> contextArn) (\s@CreateContextResponse' {} a -> s {contextArn = a} :: CreateContextResponse)
+
+-- | The response's http status code.
+createContextResponse_httpStatus :: Lens.Lens' CreateContextResponse Prelude.Int
+createContextResponse_httpStatus = Lens.lens (\CreateContextResponse' {httpStatus} -> httpStatus) (\s@CreateContextResponse' {} a -> s {httpStatus = a} :: CreateContextResponse)
+
+instance Prelude.NFData CreateContextResponse where
+  rnf CreateContextResponse' {..} =
+    Prelude.rnf contextArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateDataQualityJobDefinition.hs b/gen/Amazonka/SageMaker/CreateDataQualityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateDataQualityJobDefinition.hs
@@ -0,0 +1,352 @@
+{-# 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.CreateDataQualityJobDefinition
+-- 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 definition for a job that monitors data quality and drift. For
+-- information about model monitor, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
+module Amazonka.SageMaker.CreateDataQualityJobDefinition
+  ( -- * Creating a Request
+    CreateDataQualityJobDefinition (..),
+    newCreateDataQualityJobDefinition,
+
+    -- * Request Lenses
+    createDataQualityJobDefinition_dataQualityBaselineConfig,
+    createDataQualityJobDefinition_networkConfig,
+    createDataQualityJobDefinition_stoppingCondition,
+    createDataQualityJobDefinition_tags,
+    createDataQualityJobDefinition_jobDefinitionName,
+    createDataQualityJobDefinition_dataQualityAppSpecification,
+    createDataQualityJobDefinition_dataQualityJobInput,
+    createDataQualityJobDefinition_dataQualityJobOutputConfig,
+    createDataQualityJobDefinition_jobResources,
+    createDataQualityJobDefinition_roleArn,
+
+    -- * Destructuring the Response
+    CreateDataQualityJobDefinitionResponse (..),
+    newCreateDataQualityJobDefinitionResponse,
+
+    -- * Response Lenses
+    createDataQualityJobDefinitionResponse_httpStatus,
+    createDataQualityJobDefinitionResponse_jobDefinitionArn,
+  )
+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:/ 'newCreateDataQualityJobDefinition' smart constructor.
+data CreateDataQualityJobDefinition = CreateDataQualityJobDefinition'
+  { -- | Configures the constraints and baselines for the monitoring job.
+    dataQualityBaselineConfig :: Prelude.Maybe DataQualityBaselineConfig,
+    -- | Specifies networking configuration for the monitoring job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | (Optional) An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name for the monitoring job definition.
+    jobDefinitionName :: Prelude.Text,
+    -- | Specifies the container that runs the monitoring job.
+    dataQualityAppSpecification :: DataQualityAppSpecification,
+    -- | A list of inputs for the monitoring job. Currently endpoints are
+    -- supported as monitoring inputs.
+    dataQualityJobInput :: DataQualityJobInput,
+    dataQualityJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataQualityJobDefinition' 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:
+--
+-- 'dataQualityBaselineConfig', 'createDataQualityJobDefinition_dataQualityBaselineConfig' - Configures the constraints and baselines for the monitoring job.
+--
+-- 'networkConfig', 'createDataQualityJobDefinition_networkConfig' - Specifies networking configuration for the monitoring job.
+--
+-- 'stoppingCondition', 'createDataQualityJobDefinition_stoppingCondition' - Undocumented member.
+--
+-- 'tags', 'createDataQualityJobDefinition_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'jobDefinitionName', 'createDataQualityJobDefinition_jobDefinitionName' - The name for the monitoring job definition.
+--
+-- 'dataQualityAppSpecification', 'createDataQualityJobDefinition_dataQualityAppSpecification' - Specifies the container that runs the monitoring job.
+--
+-- 'dataQualityJobInput', 'createDataQualityJobDefinition_dataQualityJobInput' - A list of inputs for the monitoring job. Currently endpoints are
+-- supported as monitoring inputs.
+--
+-- 'dataQualityJobOutputConfig', 'createDataQualityJobDefinition_dataQualityJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'createDataQualityJobDefinition_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'createDataQualityJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newCreateDataQualityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'dataQualityAppSpecification'
+  DataQualityAppSpecification ->
+  -- | 'dataQualityJobInput'
+  DataQualityJobInput ->
+  -- | 'dataQualityJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateDataQualityJobDefinition
+newCreateDataQualityJobDefinition
+  pJobDefinitionName_
+  pDataQualityAppSpecification_
+  pDataQualityJobInput_
+  pDataQualityJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    CreateDataQualityJobDefinition'
+      { dataQualityBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        jobDefinitionName = pJobDefinitionName_,
+        dataQualityAppSpecification =
+          pDataQualityAppSpecification_,
+        dataQualityJobInput = pDataQualityJobInput_,
+        dataQualityJobOutputConfig =
+          pDataQualityJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | Configures the constraints and baselines for the monitoring job.
+createDataQualityJobDefinition_dataQualityBaselineConfig :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe DataQualityBaselineConfig)
+createDataQualityJobDefinition_dataQualityBaselineConfig = Lens.lens (\CreateDataQualityJobDefinition' {dataQualityBaselineConfig} -> dataQualityBaselineConfig) (\s@CreateDataQualityJobDefinition' {} a -> s {dataQualityBaselineConfig = a} :: CreateDataQualityJobDefinition)
+
+-- | Specifies networking configuration for the monitoring job.
+createDataQualityJobDefinition_networkConfig :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe MonitoringNetworkConfig)
+createDataQualityJobDefinition_networkConfig = Lens.lens (\CreateDataQualityJobDefinition' {networkConfig} -> networkConfig) (\s@CreateDataQualityJobDefinition' {} a -> s {networkConfig = a} :: CreateDataQualityJobDefinition)
+
+-- | Undocumented member.
+createDataQualityJobDefinition_stoppingCondition :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe MonitoringStoppingCondition)
+createDataQualityJobDefinition_stoppingCondition = Lens.lens (\CreateDataQualityJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@CreateDataQualityJobDefinition' {} a -> s {stoppingCondition = a} :: CreateDataQualityJobDefinition)
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createDataQualityJobDefinition_tags :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe [Tag])
+createDataQualityJobDefinition_tags = Lens.lens (\CreateDataQualityJobDefinition' {tags} -> tags) (\s@CreateDataQualityJobDefinition' {} a -> s {tags = a} :: CreateDataQualityJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name for the monitoring job definition.
+createDataQualityJobDefinition_jobDefinitionName :: Lens.Lens' CreateDataQualityJobDefinition Prelude.Text
+createDataQualityJobDefinition_jobDefinitionName = Lens.lens (\CreateDataQualityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@CreateDataQualityJobDefinition' {} a -> s {jobDefinitionName = a} :: CreateDataQualityJobDefinition)
+
+-- | Specifies the container that runs the monitoring job.
+createDataQualityJobDefinition_dataQualityAppSpecification :: Lens.Lens' CreateDataQualityJobDefinition DataQualityAppSpecification
+createDataQualityJobDefinition_dataQualityAppSpecification = Lens.lens (\CreateDataQualityJobDefinition' {dataQualityAppSpecification} -> dataQualityAppSpecification) (\s@CreateDataQualityJobDefinition' {} a -> s {dataQualityAppSpecification = a} :: CreateDataQualityJobDefinition)
+
+-- | A list of inputs for the monitoring job. Currently endpoints are
+-- supported as monitoring inputs.
+createDataQualityJobDefinition_dataQualityJobInput :: Lens.Lens' CreateDataQualityJobDefinition DataQualityJobInput
+createDataQualityJobDefinition_dataQualityJobInput = Lens.lens (\CreateDataQualityJobDefinition' {dataQualityJobInput} -> dataQualityJobInput) (\s@CreateDataQualityJobDefinition' {} a -> s {dataQualityJobInput = a} :: CreateDataQualityJobDefinition)
+
+-- | Undocumented member.
+createDataQualityJobDefinition_dataQualityJobOutputConfig :: Lens.Lens' CreateDataQualityJobDefinition MonitoringOutputConfig
+createDataQualityJobDefinition_dataQualityJobOutputConfig = Lens.lens (\CreateDataQualityJobDefinition' {dataQualityJobOutputConfig} -> dataQualityJobOutputConfig) (\s@CreateDataQualityJobDefinition' {} a -> s {dataQualityJobOutputConfig = a} :: CreateDataQualityJobDefinition)
+
+-- | Undocumented member.
+createDataQualityJobDefinition_jobResources :: Lens.Lens' CreateDataQualityJobDefinition MonitoringResources
+createDataQualityJobDefinition_jobResources = Lens.lens (\CreateDataQualityJobDefinition' {jobResources} -> jobResources) (\s@CreateDataQualityJobDefinition' {} a -> s {jobResources = a} :: CreateDataQualityJobDefinition)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+createDataQualityJobDefinition_roleArn :: Lens.Lens' CreateDataQualityJobDefinition Prelude.Text
+createDataQualityJobDefinition_roleArn = Lens.lens (\CreateDataQualityJobDefinition' {roleArn} -> roleArn) (\s@CreateDataQualityJobDefinition' {} a -> s {roleArn = a} :: CreateDataQualityJobDefinition)
+
+instance
+  Core.AWSRequest
+    CreateDataQualityJobDefinition
+  where
+  type
+    AWSResponse CreateDataQualityJobDefinition =
+      CreateDataQualityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDataQualityJobDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+      )
+
+instance
+  Prelude.Hashable
+    CreateDataQualityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    CreateDataQualityJobDefinition' {..} =
+      _salt
+        `Prelude.hashWithSalt` dataQualityBaselineConfig
+        `Prelude.hashWithSalt` networkConfig
+        `Prelude.hashWithSalt` stoppingCondition
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` jobDefinitionName
+        `Prelude.hashWithSalt` dataQualityAppSpecification
+        `Prelude.hashWithSalt` dataQualityJobInput
+        `Prelude.hashWithSalt` dataQualityJobOutputConfig
+        `Prelude.hashWithSalt` jobResources
+        `Prelude.hashWithSalt` roleArn
+
+instance
+  Prelude.NFData
+    CreateDataQualityJobDefinition
+  where
+  rnf CreateDataQualityJobDefinition' {..} =
+    Prelude.rnf dataQualityBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf dataQualityAppSpecification
+      `Prelude.seq` Prelude.rnf dataQualityJobInput
+      `Prelude.seq` Prelude.rnf dataQualityJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance
+  Data.ToHeaders
+    CreateDataQualityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateDataQualityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDataQualityJobDefinition where
+  toJSON CreateDataQualityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataQualityBaselineConfig" Data..=)
+              Prelude.<$> dataQualityBaselineConfig,
+            ("NetworkConfig" Data..=) Prelude.<$> networkConfig,
+            ("StoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName),
+            Prelude.Just
+              ( "DataQualityAppSpecification"
+                  Data..= dataQualityAppSpecification
+              ),
+            Prelude.Just
+              ("DataQualityJobInput" Data..= dataQualityJobInput),
+            Prelude.Just
+              ( "DataQualityJobOutputConfig"
+                  Data..= dataQualityJobOutputConfig
+              ),
+            Prelude.Just ("JobResources" Data..= jobResources),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateDataQualityJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDataQualityJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDataQualityJobDefinitionResponse' smart constructor.
+data CreateDataQualityJobDefinitionResponse = CreateDataQualityJobDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the job definition.
+    jobDefinitionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataQualityJobDefinitionResponse' 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', 'createDataQualityJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'createDataQualityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the job definition.
+newCreateDataQualityJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  CreateDataQualityJobDefinitionResponse
+newCreateDataQualityJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_ =
+    CreateDataQualityJobDefinitionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_
+      }
+
+-- | The response's http status code.
+createDataQualityJobDefinitionResponse_httpStatus :: Lens.Lens' CreateDataQualityJobDefinitionResponse Prelude.Int
+createDataQualityJobDefinitionResponse_httpStatus = Lens.lens (\CreateDataQualityJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@CreateDataQualityJobDefinitionResponse' {} a -> s {httpStatus = a} :: CreateDataQualityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the job definition.
+createDataQualityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' CreateDataQualityJobDefinitionResponse Prelude.Text
+createDataQualityJobDefinitionResponse_jobDefinitionArn = Lens.lens (\CreateDataQualityJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@CreateDataQualityJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: CreateDataQualityJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    CreateDataQualityJobDefinitionResponse
+  where
+  rnf CreateDataQualityJobDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionArn
diff --git a/gen/Amazonka/SageMaker/CreateDeviceFleet.hs b/gen/Amazonka/SageMaker/CreateDeviceFleet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateDeviceFleet.hs
@@ -0,0 +1,225 @@
+{-# 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.CreateDeviceFleet
+-- 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 device fleet.
+module Amazonka.SageMaker.CreateDeviceFleet
+  ( -- * Creating a Request
+    CreateDeviceFleet (..),
+    newCreateDeviceFleet,
+
+    -- * Request Lenses
+    createDeviceFleet_description,
+    createDeviceFleet_enableIotRoleAlias,
+    createDeviceFleet_roleArn,
+    createDeviceFleet_tags,
+    createDeviceFleet_deviceFleetName,
+    createDeviceFleet_outputConfig,
+
+    -- * Destructuring the Response
+    CreateDeviceFleetResponse (..),
+    newCreateDeviceFleetResponse,
+  )
+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:/ 'newCreateDeviceFleet' smart constructor.
+data CreateDeviceFleet = CreateDeviceFleet'
+  { -- | A description of the fleet.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Whether to create an Amazon Web Services IoT Role Alias during device
+    -- fleet creation. The name of the role alias generated will match this
+    -- pattern: \"SageMakerEdge-{DeviceFleetName}\".
+    --
+    -- For example, if your device fleet is called \"demo-fleet\", the name of
+    -- the role alias will be \"SageMakerEdge-demo-fleet\".
+    enableIotRoleAlias :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) that has access to Amazon Web Services
+    -- Internet of Things (IoT).
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Creates tags for the specified fleet.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the fleet that the device belongs to.
+    deviceFleetName :: Prelude.Text,
+    -- | The output configuration for storing sample data collected by the fleet.
+    outputConfig :: EdgeOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDeviceFleet' 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:
+--
+-- 'description', 'createDeviceFleet_description' - A description of the fleet.
+--
+-- 'enableIotRoleAlias', 'createDeviceFleet_enableIotRoleAlias' - Whether to create an Amazon Web Services IoT Role Alias during device
+-- fleet creation. The name of the role alias generated will match this
+-- pattern: \"SageMakerEdge-{DeviceFleetName}\".
+--
+-- For example, if your device fleet is called \"demo-fleet\", the name of
+-- the role alias will be \"SageMakerEdge-demo-fleet\".
+--
+-- 'roleArn', 'createDeviceFleet_roleArn' - The Amazon Resource Name (ARN) that has access to Amazon Web Services
+-- Internet of Things (IoT).
+--
+-- 'tags', 'createDeviceFleet_tags' - Creates tags for the specified fleet.
+--
+-- 'deviceFleetName', 'createDeviceFleet_deviceFleetName' - The name of the fleet that the device belongs to.
+--
+-- 'outputConfig', 'createDeviceFleet_outputConfig' - The output configuration for storing sample data collected by the fleet.
+newCreateDeviceFleet ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  EdgeOutputConfig ->
+  CreateDeviceFleet
+newCreateDeviceFleet pDeviceFleetName_ pOutputConfig_ =
+  CreateDeviceFleet'
+    { description = Prelude.Nothing,
+      enableIotRoleAlias = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      deviceFleetName = pDeviceFleetName_,
+      outputConfig = pOutputConfig_
+    }
+
+-- | A description of the fleet.
+createDeviceFleet_description :: Lens.Lens' CreateDeviceFleet (Prelude.Maybe Prelude.Text)
+createDeviceFleet_description = Lens.lens (\CreateDeviceFleet' {description} -> description) (\s@CreateDeviceFleet' {} a -> s {description = a} :: CreateDeviceFleet)
+
+-- | Whether to create an Amazon Web Services IoT Role Alias during device
+-- fleet creation. The name of the role alias generated will match this
+-- pattern: \"SageMakerEdge-{DeviceFleetName}\".
+--
+-- For example, if your device fleet is called \"demo-fleet\", the name of
+-- the role alias will be \"SageMakerEdge-demo-fleet\".
+createDeviceFleet_enableIotRoleAlias :: Lens.Lens' CreateDeviceFleet (Prelude.Maybe Prelude.Bool)
+createDeviceFleet_enableIotRoleAlias = Lens.lens (\CreateDeviceFleet' {enableIotRoleAlias} -> enableIotRoleAlias) (\s@CreateDeviceFleet' {} a -> s {enableIotRoleAlias = a} :: CreateDeviceFleet)
+
+-- | The Amazon Resource Name (ARN) that has access to Amazon Web Services
+-- Internet of Things (IoT).
+createDeviceFleet_roleArn :: Lens.Lens' CreateDeviceFleet (Prelude.Maybe Prelude.Text)
+createDeviceFleet_roleArn = Lens.lens (\CreateDeviceFleet' {roleArn} -> roleArn) (\s@CreateDeviceFleet' {} a -> s {roleArn = a} :: CreateDeviceFleet)
+
+-- | Creates tags for the specified fleet.
+createDeviceFleet_tags :: Lens.Lens' CreateDeviceFleet (Prelude.Maybe [Tag])
+createDeviceFleet_tags = Lens.lens (\CreateDeviceFleet' {tags} -> tags) (\s@CreateDeviceFleet' {} a -> s {tags = a} :: CreateDeviceFleet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the fleet that the device belongs to.
+createDeviceFleet_deviceFleetName :: Lens.Lens' CreateDeviceFleet Prelude.Text
+createDeviceFleet_deviceFleetName = Lens.lens (\CreateDeviceFleet' {deviceFleetName} -> deviceFleetName) (\s@CreateDeviceFleet' {} a -> s {deviceFleetName = a} :: CreateDeviceFleet)
+
+-- | The output configuration for storing sample data collected by the fleet.
+createDeviceFleet_outputConfig :: Lens.Lens' CreateDeviceFleet EdgeOutputConfig
+createDeviceFleet_outputConfig = Lens.lens (\CreateDeviceFleet' {outputConfig} -> outputConfig) (\s@CreateDeviceFleet' {} a -> s {outputConfig = a} :: CreateDeviceFleet)
+
+instance Core.AWSRequest CreateDeviceFleet where
+  type
+    AWSResponse CreateDeviceFleet =
+      CreateDeviceFleetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull CreateDeviceFleetResponse'
+
+instance Prelude.Hashable CreateDeviceFleet where
+  hashWithSalt _salt CreateDeviceFleet' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` enableIotRoleAlias
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData CreateDeviceFleet where
+  rnf CreateDeviceFleet' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf enableIotRoleAlias
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToHeaders CreateDeviceFleet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateDeviceFleet" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDeviceFleet where
+  toJSON CreateDeviceFleet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("EnableIotRoleAlias" Data..=)
+              Prelude.<$> enableIotRoleAlias,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName),
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
+
+instance Data.ToPath CreateDeviceFleet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDeviceFleet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDeviceFleetResponse' smart constructor.
+data CreateDeviceFleetResponse = CreateDeviceFleetResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDeviceFleetResponse' 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.
+newCreateDeviceFleetResponse ::
+  CreateDeviceFleetResponse
+newCreateDeviceFleetResponse =
+  CreateDeviceFleetResponse'
+
+instance Prelude.NFData CreateDeviceFleetResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/CreateDomain.hs b/gen/Amazonka/SageMaker/CreateDomain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateDomain.hs
@@ -0,0 +1,463 @@
+{-# 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.CreateDomain
+-- 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 @Domain@ used by Amazon SageMaker Studio. A domain consists of
+-- an associated Amazon Elastic File System (EFS) volume, a list of
+-- authorized users, and a variety of security, application, policy, and
+-- Amazon Virtual Private Cloud (VPC) configurations. An Amazon Web
+-- Services account is limited to one domain per region. Users within a
+-- domain can share notebook files and other artifacts with each other.
+--
+-- __EFS storage__
+--
+-- When a domain is created, an EFS volume is created for use by all of the
+-- users within the domain. Each user receives a private home directory
+-- within the EFS volume for notebooks, Git repositories, and data files.
+--
+-- SageMaker uses the Amazon Web Services Key Management Service (Amazon
+-- Web Services KMS) to encrypt the EFS volume attached to the domain with
+-- an Amazon Web Services managed key by default. For more control, you can
+-- specify a customer managed key. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/encryption-at-rest.html Protect Data at Rest Using Encryption>.
+--
+-- __VPC configuration__
+--
+-- All SageMaker Studio traffic between the domain and the EFS volume is
+-- through the specified VPC and subnets. For other Studio traffic, you can
+-- specify the @AppNetworkAccessType@ parameter. @AppNetworkAccessType@
+-- corresponds to the network access type that you choose when you onboard
+-- to Studio. The following options are available:
+--
+-- -   @PublicInternetOnly@ - Non-EFS traffic goes through a VPC managed by
+--     Amazon SageMaker, which allows internet access. This is the default
+--     value.
+--
+-- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+--     subnets. Internet access is disabled by default. To allow internet
+--     access, you must specify a NAT gateway.
+--
+--     When internet access is disabled, you won\'t be able to run a Studio
+--     notebook or to train or host models unless your VPC has an interface
+--     endpoint to the SageMaker API and runtime or a NAT gateway and your
+--     security groups allow outbound connections.
+--
+-- NFS traffic over TCP on port 2049 needs to be allowed in both inbound
+-- and outbound rules in order to launch a SageMaker Studio app
+-- successfully.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html Connect SageMaker Studio Notebooks to Resources in a VPC>.
+module Amazonka.SageMaker.CreateDomain
+  ( -- * Creating a Request
+    CreateDomain (..),
+    newCreateDomain,
+
+    -- * Request Lenses
+    createDomain_appNetworkAccessType,
+    createDomain_appSecurityGroupManagement,
+    createDomain_defaultSpaceSettings,
+    createDomain_domainSettings,
+    createDomain_homeEfsFileSystemKmsKeyId,
+    createDomain_kmsKeyId,
+    createDomain_tags,
+    createDomain_domainName,
+    createDomain_authMode,
+    createDomain_defaultUserSettings,
+    createDomain_subnetIds,
+    createDomain_vpcId,
+
+    -- * Destructuring the Response
+    CreateDomainResponse (..),
+    newCreateDomainResponse,
+
+    -- * Response Lenses
+    createDomainResponse_domainArn,
+    createDomainResponse_url,
+    createDomainResponse_httpStatus,
+  )
+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:/ 'newCreateDomain' smart constructor.
+data CreateDomain = CreateDomain'
+  { -- | Specifies the VPC used for non-EFS traffic. The default value is
+    -- @PublicInternetOnly@.
+    --
+    -- -   @PublicInternetOnly@ - Non-EFS traffic is through a VPC managed by
+    --     Amazon SageMaker, which allows direct internet access
+    --
+    -- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+    --     subnets
+    appNetworkAccessType :: Prelude.Maybe AppNetworkAccessType,
+    -- | The entity that creates and manages the required security groups for
+    -- inter-app communication in @VPCOnly@ mode. Required when
+    -- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+    -- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+    -- is provided.
+    appSecurityGroupManagement :: Prelude.Maybe AppSecurityGroupManagement,
+    -- | The default settings used to create a space.
+    defaultSpaceSettings :: Prelude.Maybe DefaultSpaceSettings,
+    -- | A collection of @Domain@ settings.
+    domainSettings :: Prelude.Maybe DomainSettings,
+    -- | Use @KmsKeyId@.
+    homeEfsFileSystemKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | SageMaker uses Amazon Web Services KMS to encrypt the EFS volume
+    -- attached to the domain with an Amazon Web Services managed key by
+    -- default. For more control, specify a customer managed key.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Tags to associated with the Domain. Each tag consists of a key and an
+    -- optional value. Tag keys must be unique per resource. Tags are
+    -- searchable using the @Search@ API.
+    --
+    -- Tags that you specify for the Domain are also added to all Apps that the
+    -- Domain launches.
+    tags :: Prelude.Maybe [Tag],
+    -- | A name for the domain.
+    domainName :: Prelude.Text,
+    -- | The mode of authentication that members use to access the domain.
+    authMode :: AuthMode,
+    -- | The default settings to use to create a user profile when @UserSettings@
+    -- isn\'t specified in the call to the @CreateUserProfile@ API.
+    --
+    -- @SecurityGroups@ is aggregated when specified in both calls. For all
+    -- other settings in @UserSettings@, the values specified in
+    -- @CreateUserProfile@ take precedence over those specified in
+    -- @CreateDomain@.
+    defaultUserSettings :: UserSettings,
+    -- | The VPC subnets that Studio uses for communication.
+    subnetIds :: Prelude.NonEmpty Prelude.Text,
+    -- | The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for
+    -- communication.
+    vpcId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDomain' 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:
+--
+-- 'appNetworkAccessType', 'createDomain_appNetworkAccessType' - Specifies the VPC used for non-EFS traffic. The default value is
+-- @PublicInternetOnly@.
+--
+-- -   @PublicInternetOnly@ - Non-EFS traffic is through a VPC managed by
+--     Amazon SageMaker, which allows direct internet access
+--
+-- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+--     subnets
+--
+-- 'appSecurityGroupManagement', 'createDomain_appSecurityGroupManagement' - The entity that creates and manages the required security groups for
+-- inter-app communication in @VPCOnly@ mode. Required when
+-- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+-- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+-- is provided.
+--
+-- 'defaultSpaceSettings', 'createDomain_defaultSpaceSettings' - The default settings used to create a space.
+--
+-- 'domainSettings', 'createDomain_domainSettings' - A collection of @Domain@ settings.
+--
+-- 'homeEfsFileSystemKmsKeyId', 'createDomain_homeEfsFileSystemKmsKeyId' - Use @KmsKeyId@.
+--
+-- 'kmsKeyId', 'createDomain_kmsKeyId' - SageMaker uses Amazon Web Services KMS to encrypt the EFS volume
+-- attached to the domain with an Amazon Web Services managed key by
+-- default. For more control, specify a customer managed key.
+--
+-- 'tags', 'createDomain_tags' - Tags to associated with the Domain. Each tag consists of a key and an
+-- optional value. Tag keys must be unique per resource. Tags are
+-- searchable using the @Search@ API.
+--
+-- Tags that you specify for the Domain are also added to all Apps that the
+-- Domain launches.
+--
+-- 'domainName', 'createDomain_domainName' - A name for the domain.
+--
+-- 'authMode', 'createDomain_authMode' - The mode of authentication that members use to access the domain.
+--
+-- 'defaultUserSettings', 'createDomain_defaultUserSettings' - The default settings to use to create a user profile when @UserSettings@
+-- isn\'t specified in the call to the @CreateUserProfile@ API.
+--
+-- @SecurityGroups@ is aggregated when specified in both calls. For all
+-- other settings in @UserSettings@, the values specified in
+-- @CreateUserProfile@ take precedence over those specified in
+-- @CreateDomain@.
+--
+-- 'subnetIds', 'createDomain_subnetIds' - The VPC subnets that Studio uses for communication.
+--
+-- 'vpcId', 'createDomain_vpcId' - The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for
+-- communication.
+newCreateDomain ::
+  -- | 'domainName'
+  Prelude.Text ->
+  -- | 'authMode'
+  AuthMode ->
+  -- | 'defaultUserSettings'
+  UserSettings ->
+  -- | 'subnetIds'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'vpcId'
+  Prelude.Text ->
+  CreateDomain
+newCreateDomain
+  pDomainName_
+  pAuthMode_
+  pDefaultUserSettings_
+  pSubnetIds_
+  pVpcId_ =
+    CreateDomain'
+      { appNetworkAccessType =
+          Prelude.Nothing,
+        appSecurityGroupManagement = Prelude.Nothing,
+        defaultSpaceSettings = Prelude.Nothing,
+        domainSettings = Prelude.Nothing,
+        homeEfsFileSystemKmsKeyId = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        domainName = pDomainName_,
+        authMode = pAuthMode_,
+        defaultUserSettings = pDefaultUserSettings_,
+        subnetIds = Lens.coerced Lens.# pSubnetIds_,
+        vpcId = pVpcId_
+      }
+
+-- | Specifies the VPC used for non-EFS traffic. The default value is
+-- @PublicInternetOnly@.
+--
+-- -   @PublicInternetOnly@ - Non-EFS traffic is through a VPC managed by
+--     Amazon SageMaker, which allows direct internet access
+--
+-- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+--     subnets
+createDomain_appNetworkAccessType :: Lens.Lens' CreateDomain (Prelude.Maybe AppNetworkAccessType)
+createDomain_appNetworkAccessType = Lens.lens (\CreateDomain' {appNetworkAccessType} -> appNetworkAccessType) (\s@CreateDomain' {} a -> s {appNetworkAccessType = a} :: CreateDomain)
+
+-- | The entity that creates and manages the required security groups for
+-- inter-app communication in @VPCOnly@ mode. Required when
+-- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+-- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+-- is provided.
+createDomain_appSecurityGroupManagement :: Lens.Lens' CreateDomain (Prelude.Maybe AppSecurityGroupManagement)
+createDomain_appSecurityGroupManagement = Lens.lens (\CreateDomain' {appSecurityGroupManagement} -> appSecurityGroupManagement) (\s@CreateDomain' {} a -> s {appSecurityGroupManagement = a} :: CreateDomain)
+
+-- | The default settings used to create a space.
+createDomain_defaultSpaceSettings :: Lens.Lens' CreateDomain (Prelude.Maybe DefaultSpaceSettings)
+createDomain_defaultSpaceSettings = Lens.lens (\CreateDomain' {defaultSpaceSettings} -> defaultSpaceSettings) (\s@CreateDomain' {} a -> s {defaultSpaceSettings = a} :: CreateDomain)
+
+-- | A collection of @Domain@ settings.
+createDomain_domainSettings :: Lens.Lens' CreateDomain (Prelude.Maybe DomainSettings)
+createDomain_domainSettings = Lens.lens (\CreateDomain' {domainSettings} -> domainSettings) (\s@CreateDomain' {} a -> s {domainSettings = a} :: CreateDomain)
+
+-- | Use @KmsKeyId@.
+createDomain_homeEfsFileSystemKmsKeyId :: Lens.Lens' CreateDomain (Prelude.Maybe Prelude.Text)
+createDomain_homeEfsFileSystemKmsKeyId = Lens.lens (\CreateDomain' {homeEfsFileSystemKmsKeyId} -> homeEfsFileSystemKmsKeyId) (\s@CreateDomain' {} a -> s {homeEfsFileSystemKmsKeyId = a} :: CreateDomain)
+
+-- | SageMaker uses Amazon Web Services KMS to encrypt the EFS volume
+-- attached to the domain with an Amazon Web Services managed key by
+-- default. For more control, specify a customer managed key.
+createDomain_kmsKeyId :: Lens.Lens' CreateDomain (Prelude.Maybe Prelude.Text)
+createDomain_kmsKeyId = Lens.lens (\CreateDomain' {kmsKeyId} -> kmsKeyId) (\s@CreateDomain' {} a -> s {kmsKeyId = a} :: CreateDomain)
+
+-- | Tags to associated with the Domain. Each tag consists of a key and an
+-- optional value. Tag keys must be unique per resource. Tags are
+-- searchable using the @Search@ API.
+--
+-- Tags that you specify for the Domain are also added to all Apps that the
+-- Domain launches.
+createDomain_tags :: Lens.Lens' CreateDomain (Prelude.Maybe [Tag])
+createDomain_tags = Lens.lens (\CreateDomain' {tags} -> tags) (\s@CreateDomain' {} a -> s {tags = a} :: CreateDomain) Prelude.. Lens.mapping Lens.coerced
+
+-- | A name for the domain.
+createDomain_domainName :: Lens.Lens' CreateDomain Prelude.Text
+createDomain_domainName = Lens.lens (\CreateDomain' {domainName} -> domainName) (\s@CreateDomain' {} a -> s {domainName = a} :: CreateDomain)
+
+-- | The mode of authentication that members use to access the domain.
+createDomain_authMode :: Lens.Lens' CreateDomain AuthMode
+createDomain_authMode = Lens.lens (\CreateDomain' {authMode} -> authMode) (\s@CreateDomain' {} a -> s {authMode = a} :: CreateDomain)
+
+-- | The default settings to use to create a user profile when @UserSettings@
+-- isn\'t specified in the call to the @CreateUserProfile@ API.
+--
+-- @SecurityGroups@ is aggregated when specified in both calls. For all
+-- other settings in @UserSettings@, the values specified in
+-- @CreateUserProfile@ take precedence over those specified in
+-- @CreateDomain@.
+createDomain_defaultUserSettings :: Lens.Lens' CreateDomain UserSettings
+createDomain_defaultUserSettings = Lens.lens (\CreateDomain' {defaultUserSettings} -> defaultUserSettings) (\s@CreateDomain' {} a -> s {defaultUserSettings = a} :: CreateDomain)
+
+-- | The VPC subnets that Studio uses for communication.
+createDomain_subnetIds :: Lens.Lens' CreateDomain (Prelude.NonEmpty Prelude.Text)
+createDomain_subnetIds = Lens.lens (\CreateDomain' {subnetIds} -> subnetIds) (\s@CreateDomain' {} a -> s {subnetIds = a} :: CreateDomain) Prelude.. Lens.coerced
+
+-- | The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for
+-- communication.
+createDomain_vpcId :: Lens.Lens' CreateDomain Prelude.Text
+createDomain_vpcId = Lens.lens (\CreateDomain' {vpcId} -> vpcId) (\s@CreateDomain' {} a -> s {vpcId = a} :: CreateDomain)
+
+instance Core.AWSRequest CreateDomain where
+  type AWSResponse CreateDomain = CreateDomainResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDomainResponse'
+            Prelude.<$> (x Data..?> "DomainArn")
+            Prelude.<*> (x Data..?> "Url")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDomain where
+  hashWithSalt _salt CreateDomain' {..} =
+    _salt
+      `Prelude.hashWithSalt` appNetworkAccessType
+      `Prelude.hashWithSalt` appSecurityGroupManagement
+      `Prelude.hashWithSalt` defaultSpaceSettings
+      `Prelude.hashWithSalt` domainSettings
+      `Prelude.hashWithSalt` homeEfsFileSystemKmsKeyId
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` domainName
+      `Prelude.hashWithSalt` authMode
+      `Prelude.hashWithSalt` defaultUserSettings
+      `Prelude.hashWithSalt` subnetIds
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData CreateDomain where
+  rnf CreateDomain' {..} =
+    Prelude.rnf appNetworkAccessType
+      `Prelude.seq` Prelude.rnf appSecurityGroupManagement
+      `Prelude.seq` Prelude.rnf defaultSpaceSettings
+      `Prelude.seq` Prelude.rnf domainSettings
+      `Prelude.seq` Prelude.rnf homeEfsFileSystemKmsKeyId
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf domainName
+      `Prelude.seq` Prelude.rnf authMode
+      `Prelude.seq` Prelude.rnf defaultUserSettings
+      `Prelude.seq` Prelude.rnf subnetIds
+      `Prelude.seq` Prelude.rnf vpcId
+
+instance Data.ToHeaders CreateDomain where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateDomain" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDomain where
+  toJSON CreateDomain' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AppNetworkAccessType" Data..=)
+              Prelude.<$> appNetworkAccessType,
+            ("AppSecurityGroupManagement" Data..=)
+              Prelude.<$> appSecurityGroupManagement,
+            ("DefaultSpaceSettings" Data..=)
+              Prelude.<$> defaultSpaceSettings,
+            ("DomainSettings" Data..=)
+              Prelude.<$> domainSettings,
+            ("HomeEfsFileSystemKmsKeyId" Data..=)
+              Prelude.<$> homeEfsFileSystemKmsKeyId,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("DomainName" Data..= domainName),
+            Prelude.Just ("AuthMode" Data..= authMode),
+            Prelude.Just
+              ("DefaultUserSettings" Data..= defaultUserSettings),
+            Prelude.Just ("SubnetIds" Data..= subnetIds),
+            Prelude.Just ("VpcId" Data..= vpcId)
+          ]
+      )
+
+instance Data.ToPath CreateDomain where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDomain where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDomainResponse' smart constructor.
+data CreateDomainResponse = CreateDomainResponse'
+  { -- | The Amazon Resource Name (ARN) of the created domain.
+    domainArn :: Prelude.Maybe Prelude.Text,
+    -- | The URL to the created domain.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDomainResponse' 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:
+--
+-- 'domainArn', 'createDomainResponse_domainArn' - The Amazon Resource Name (ARN) of the created domain.
+--
+-- 'url', 'createDomainResponse_url' - The URL to the created domain.
+--
+-- 'httpStatus', 'createDomainResponse_httpStatus' - The response's http status code.
+newCreateDomainResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDomainResponse
+newCreateDomainResponse pHttpStatus_ =
+  CreateDomainResponse'
+    { domainArn = Prelude.Nothing,
+      url = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the created domain.
+createDomainResponse_domainArn :: Lens.Lens' CreateDomainResponse (Prelude.Maybe Prelude.Text)
+createDomainResponse_domainArn = Lens.lens (\CreateDomainResponse' {domainArn} -> domainArn) (\s@CreateDomainResponse' {} a -> s {domainArn = a} :: CreateDomainResponse)
+
+-- | The URL to the created domain.
+createDomainResponse_url :: Lens.Lens' CreateDomainResponse (Prelude.Maybe Prelude.Text)
+createDomainResponse_url = Lens.lens (\CreateDomainResponse' {url} -> url) (\s@CreateDomainResponse' {} a -> s {url = a} :: CreateDomainResponse)
+
+-- | The response's http status code.
+createDomainResponse_httpStatus :: Lens.Lens' CreateDomainResponse Prelude.Int
+createDomainResponse_httpStatus = Lens.lens (\CreateDomainResponse' {httpStatus} -> httpStatus) (\s@CreateDomainResponse' {} a -> s {httpStatus = a} :: CreateDomainResponse)
+
+instance Prelude.NFData CreateDomainResponse where
+  rnf CreateDomainResponse' {..} =
+    Prelude.rnf domainArn
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateEdgeDeploymentPlan.hs b/gen/Amazonka/SageMaker/CreateEdgeDeploymentPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateEdgeDeploymentPlan.hs
@@ -0,0 +1,245 @@
+{-# 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.CreateEdgeDeploymentPlan
+-- 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 an edge deployment plan, consisting of multiple stages. Each
+-- stage may have a different deployment configuration and devices.
+module Amazonka.SageMaker.CreateEdgeDeploymentPlan
+  ( -- * Creating a Request
+    CreateEdgeDeploymentPlan (..),
+    newCreateEdgeDeploymentPlan,
+
+    -- * Request Lenses
+    createEdgeDeploymentPlan_stages,
+    createEdgeDeploymentPlan_tags,
+    createEdgeDeploymentPlan_edgeDeploymentPlanName,
+    createEdgeDeploymentPlan_modelConfigs,
+    createEdgeDeploymentPlan_deviceFleetName,
+
+    -- * Destructuring the Response
+    CreateEdgeDeploymentPlanResponse (..),
+    newCreateEdgeDeploymentPlanResponse,
+
+    -- * Response Lenses
+    createEdgeDeploymentPlanResponse_httpStatus,
+    createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn,
+  )
+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:/ 'newCreateEdgeDeploymentPlan' smart constructor.
+data CreateEdgeDeploymentPlan = CreateEdgeDeploymentPlan'
+  { -- | List of stages of the edge deployment plan. The number of stages is
+    -- limited to 10 per deployment.
+    stages :: Prelude.Maybe [DeploymentStage],
+    -- | List of tags with which to tag the edge deployment plan.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the edge deployment plan.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | List of models associated with the edge deployment plan.
+    modelConfigs :: [EdgeDeploymentModelConfig],
+    -- | The device fleet used for this edge deployment plan.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEdgeDeploymentPlan' 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:
+--
+-- 'stages', 'createEdgeDeploymentPlan_stages' - List of stages of the edge deployment plan. The number of stages is
+-- limited to 10 per deployment.
+--
+-- 'tags', 'createEdgeDeploymentPlan_tags' - List of tags with which to tag the edge deployment plan.
+--
+-- 'edgeDeploymentPlanName', 'createEdgeDeploymentPlan_edgeDeploymentPlanName' - The name of the edge deployment plan.
+--
+-- 'modelConfigs', 'createEdgeDeploymentPlan_modelConfigs' - List of models associated with the edge deployment plan.
+--
+-- 'deviceFleetName', 'createEdgeDeploymentPlan_deviceFleetName' - The device fleet used for this edge deployment plan.
+newCreateEdgeDeploymentPlan ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  CreateEdgeDeploymentPlan
+newCreateEdgeDeploymentPlan
+  pEdgeDeploymentPlanName_
+  pDeviceFleetName_ =
+    CreateEdgeDeploymentPlan'
+      { stages = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        edgeDeploymentPlanName = pEdgeDeploymentPlanName_,
+        modelConfigs = Prelude.mempty,
+        deviceFleetName = pDeviceFleetName_
+      }
+
+-- | List of stages of the edge deployment plan. The number of stages is
+-- limited to 10 per deployment.
+createEdgeDeploymentPlan_stages :: Lens.Lens' CreateEdgeDeploymentPlan (Prelude.Maybe [DeploymentStage])
+createEdgeDeploymentPlan_stages = Lens.lens (\CreateEdgeDeploymentPlan' {stages} -> stages) (\s@CreateEdgeDeploymentPlan' {} a -> s {stages = a} :: CreateEdgeDeploymentPlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of tags with which to tag the edge deployment plan.
+createEdgeDeploymentPlan_tags :: Lens.Lens' CreateEdgeDeploymentPlan (Prelude.Maybe [Tag])
+createEdgeDeploymentPlan_tags = Lens.lens (\CreateEdgeDeploymentPlan' {tags} -> tags) (\s@CreateEdgeDeploymentPlan' {} a -> s {tags = a} :: CreateEdgeDeploymentPlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the edge deployment plan.
+createEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens.Lens' CreateEdgeDeploymentPlan Prelude.Text
+createEdgeDeploymentPlan_edgeDeploymentPlanName = Lens.lens (\CreateEdgeDeploymentPlan' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@CreateEdgeDeploymentPlan' {} a -> s {edgeDeploymentPlanName = a} :: CreateEdgeDeploymentPlan)
+
+-- | List of models associated with the edge deployment plan.
+createEdgeDeploymentPlan_modelConfigs :: Lens.Lens' CreateEdgeDeploymentPlan [EdgeDeploymentModelConfig]
+createEdgeDeploymentPlan_modelConfigs = Lens.lens (\CreateEdgeDeploymentPlan' {modelConfigs} -> modelConfigs) (\s@CreateEdgeDeploymentPlan' {} a -> s {modelConfigs = a} :: CreateEdgeDeploymentPlan) Prelude.. Lens.coerced
+
+-- | The device fleet used for this edge deployment plan.
+createEdgeDeploymentPlan_deviceFleetName :: Lens.Lens' CreateEdgeDeploymentPlan Prelude.Text
+createEdgeDeploymentPlan_deviceFleetName = Lens.lens (\CreateEdgeDeploymentPlan' {deviceFleetName} -> deviceFleetName) (\s@CreateEdgeDeploymentPlan' {} a -> s {deviceFleetName = a} :: CreateEdgeDeploymentPlan)
+
+instance Core.AWSRequest CreateEdgeDeploymentPlan where
+  type
+    AWSResponse CreateEdgeDeploymentPlan =
+      CreateEdgeDeploymentPlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateEdgeDeploymentPlanResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EdgeDeploymentPlanArn")
+      )
+
+instance Prelude.Hashable CreateEdgeDeploymentPlan where
+  hashWithSalt _salt CreateEdgeDeploymentPlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` stages
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` modelConfigs
+      `Prelude.hashWithSalt` deviceFleetName
+
+instance Prelude.NFData CreateEdgeDeploymentPlan where
+  rnf CreateEdgeDeploymentPlan' {..} =
+    Prelude.rnf stages
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf modelConfigs
+      `Prelude.seq` Prelude.rnf deviceFleetName
+
+instance Data.ToHeaders CreateEdgeDeploymentPlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateEdgeDeploymentPlan" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateEdgeDeploymentPlan where
+  toJSON CreateEdgeDeploymentPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Stages" Data..=) Prelude.<$> stages,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              ),
+            Prelude.Just ("ModelConfigs" Data..= modelConfigs),
+            Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName)
+          ]
+      )
+
+instance Data.ToPath CreateEdgeDeploymentPlan where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateEdgeDeploymentPlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateEdgeDeploymentPlanResponse' smart constructor.
+data CreateEdgeDeploymentPlanResponse = CreateEdgeDeploymentPlanResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the edge deployment plan.
+    edgeDeploymentPlanArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEdgeDeploymentPlanResponse' 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', 'createEdgeDeploymentPlanResponse_httpStatus' - The response's http status code.
+--
+-- 'edgeDeploymentPlanArn', 'createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn' - The ARN of the edge deployment plan.
+newCreateEdgeDeploymentPlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'edgeDeploymentPlanArn'
+  Prelude.Text ->
+  CreateEdgeDeploymentPlanResponse
+newCreateEdgeDeploymentPlanResponse
+  pHttpStatus_
+  pEdgeDeploymentPlanArn_ =
+    CreateEdgeDeploymentPlanResponse'
+      { httpStatus =
+          pHttpStatus_,
+        edgeDeploymentPlanArn =
+          pEdgeDeploymentPlanArn_
+      }
+
+-- | The response's http status code.
+createEdgeDeploymentPlanResponse_httpStatus :: Lens.Lens' CreateEdgeDeploymentPlanResponse Prelude.Int
+createEdgeDeploymentPlanResponse_httpStatus = Lens.lens (\CreateEdgeDeploymentPlanResponse' {httpStatus} -> httpStatus) (\s@CreateEdgeDeploymentPlanResponse' {} a -> s {httpStatus = a} :: CreateEdgeDeploymentPlanResponse)
+
+-- | The ARN of the edge deployment plan.
+createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn :: Lens.Lens' CreateEdgeDeploymentPlanResponse Prelude.Text
+createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn = Lens.lens (\CreateEdgeDeploymentPlanResponse' {edgeDeploymentPlanArn} -> edgeDeploymentPlanArn) (\s@CreateEdgeDeploymentPlanResponse' {} a -> s {edgeDeploymentPlanArn = a} :: CreateEdgeDeploymentPlanResponse)
+
+instance
+  Prelude.NFData
+    CreateEdgeDeploymentPlanResponse
+  where
+  rnf CreateEdgeDeploymentPlanResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanArn
diff --git a/gen/Amazonka/SageMaker/CreateEdgeDeploymentStage.hs b/gen/Amazonka/SageMaker/CreateEdgeDeploymentStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateEdgeDeploymentStage.hs
@@ -0,0 +1,159 @@
+{-# 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.CreateEdgeDeploymentStage
+-- 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 new stage in an existing edge deployment plan.
+module Amazonka.SageMaker.CreateEdgeDeploymentStage
+  ( -- * Creating a Request
+    CreateEdgeDeploymentStage (..),
+    newCreateEdgeDeploymentStage,
+
+    -- * Request Lenses
+    createEdgeDeploymentStage_edgeDeploymentPlanName,
+    createEdgeDeploymentStage_stages,
+
+    -- * Destructuring the Response
+    CreateEdgeDeploymentStageResponse (..),
+    newCreateEdgeDeploymentStageResponse,
+  )
+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:/ 'newCreateEdgeDeploymentStage' smart constructor.
+data CreateEdgeDeploymentStage = CreateEdgeDeploymentStage'
+  { -- | The name of the edge deployment plan.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | List of stages to be added to the edge deployment plan.
+    stages :: [DeploymentStage]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEdgeDeploymentStage' 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:
+--
+-- 'edgeDeploymentPlanName', 'createEdgeDeploymentStage_edgeDeploymentPlanName' - The name of the edge deployment plan.
+--
+-- 'stages', 'createEdgeDeploymentStage_stages' - List of stages to be added to the edge deployment plan.
+newCreateEdgeDeploymentStage ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  CreateEdgeDeploymentStage
+newCreateEdgeDeploymentStage pEdgeDeploymentPlanName_ =
+  CreateEdgeDeploymentStage'
+    { edgeDeploymentPlanName =
+        pEdgeDeploymentPlanName_,
+      stages = Prelude.mempty
+    }
+
+-- | The name of the edge deployment plan.
+createEdgeDeploymentStage_edgeDeploymentPlanName :: Lens.Lens' CreateEdgeDeploymentStage Prelude.Text
+createEdgeDeploymentStage_edgeDeploymentPlanName = Lens.lens (\CreateEdgeDeploymentStage' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@CreateEdgeDeploymentStage' {} a -> s {edgeDeploymentPlanName = a} :: CreateEdgeDeploymentStage)
+
+-- | List of stages to be added to the edge deployment plan.
+createEdgeDeploymentStage_stages :: Lens.Lens' CreateEdgeDeploymentStage [DeploymentStage]
+createEdgeDeploymentStage_stages = Lens.lens (\CreateEdgeDeploymentStage' {stages} -> stages) (\s@CreateEdgeDeploymentStage' {} a -> s {stages = a} :: CreateEdgeDeploymentStage) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateEdgeDeploymentStage where
+  type
+    AWSResponse CreateEdgeDeploymentStage =
+      CreateEdgeDeploymentStageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      CreateEdgeDeploymentStageResponse'
+
+instance Prelude.Hashable CreateEdgeDeploymentStage where
+  hashWithSalt _salt CreateEdgeDeploymentStage' {..} =
+    _salt
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` stages
+
+instance Prelude.NFData CreateEdgeDeploymentStage where
+  rnf CreateEdgeDeploymentStage' {..} =
+    Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf stages
+
+instance Data.ToHeaders CreateEdgeDeploymentStage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateEdgeDeploymentStage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateEdgeDeploymentStage where
+  toJSON CreateEdgeDeploymentStage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              ),
+            Prelude.Just ("Stages" Data..= stages)
+          ]
+      )
+
+instance Data.ToPath CreateEdgeDeploymentStage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateEdgeDeploymentStage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateEdgeDeploymentStageResponse' smart constructor.
+data CreateEdgeDeploymentStageResponse = CreateEdgeDeploymentStageResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEdgeDeploymentStageResponse' 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.
+newCreateEdgeDeploymentStageResponse ::
+  CreateEdgeDeploymentStageResponse
+newCreateEdgeDeploymentStageResponse =
+  CreateEdgeDeploymentStageResponse'
+
+instance
+  Prelude.NFData
+    CreateEdgeDeploymentStageResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/CreateEdgePackagingJob.hs b/gen/Amazonka/SageMaker/CreateEdgePackagingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateEdgePackagingJob.hs
@@ -0,0 +1,269 @@
+{-# 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.CreateEdgePackagingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a SageMaker Edge Manager model packaging job. Edge Manager will
+-- use the model artifacts from the Amazon Simple Storage Service bucket
+-- that you specify. After the model has been packaged, Amazon SageMaker
+-- saves the resulting artifacts to an S3 bucket that you specify.
+module Amazonka.SageMaker.CreateEdgePackagingJob
+  ( -- * Creating a Request
+    CreateEdgePackagingJob (..),
+    newCreateEdgePackagingJob,
+
+    -- * Request Lenses
+    createEdgePackagingJob_resourceKey,
+    createEdgePackagingJob_tags,
+    createEdgePackagingJob_edgePackagingJobName,
+    createEdgePackagingJob_compilationJobName,
+    createEdgePackagingJob_modelName,
+    createEdgePackagingJob_modelVersion,
+    createEdgePackagingJob_roleArn,
+    createEdgePackagingJob_outputConfig,
+
+    -- * Destructuring the Response
+    CreateEdgePackagingJobResponse (..),
+    newCreateEdgePackagingJobResponse,
+  )
+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:/ 'newCreateEdgePackagingJob' smart constructor.
+data CreateEdgePackagingJob = CreateEdgePackagingJob'
+  { -- | The Amazon Web Services KMS key to use when encrypting the EBS volume
+    -- the edge packaging job runs on.
+    resourceKey :: Prelude.Maybe Prelude.Text,
+    -- | Creates tags for the packaging job.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the edge packaging job.
+    edgePackagingJobName :: Prelude.Text,
+    -- | The name of the SageMaker Neo compilation job that will be used to
+    -- locate model artifacts for packaging.
+    compilationJobName :: Prelude.Text,
+    -- | The name of the model.
+    modelName :: Prelude.Text,
+    -- | The version of the model.
+    modelVersion :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+    -- SageMaker to download and upload the model, and to contact SageMaker
+    -- Neo.
+    roleArn :: Prelude.Text,
+    -- | Provides information about the output location for the packaged model.
+    outputConfig :: EdgeOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEdgePackagingJob' 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:
+--
+-- 'resourceKey', 'createEdgePackagingJob_resourceKey' - The Amazon Web Services KMS key to use when encrypting the EBS volume
+-- the edge packaging job runs on.
+--
+-- 'tags', 'createEdgePackagingJob_tags' - Creates tags for the packaging job.
+--
+-- 'edgePackagingJobName', 'createEdgePackagingJob_edgePackagingJobName' - The name of the edge packaging job.
+--
+-- 'compilationJobName', 'createEdgePackagingJob_compilationJobName' - The name of the SageMaker Neo compilation job that will be used to
+-- locate model artifacts for packaging.
+--
+-- 'modelName', 'createEdgePackagingJob_modelName' - The name of the model.
+--
+-- 'modelVersion', 'createEdgePackagingJob_modelVersion' - The version of the model.
+--
+-- 'roleArn', 'createEdgePackagingJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to download and upload the model, and to contact SageMaker
+-- Neo.
+--
+-- 'outputConfig', 'createEdgePackagingJob_outputConfig' - Provides information about the output location for the packaged model.
+newCreateEdgePackagingJob ::
+  -- | 'edgePackagingJobName'
+  Prelude.Text ->
+  -- | 'compilationJobName'
+  Prelude.Text ->
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'modelVersion'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  EdgeOutputConfig ->
+  CreateEdgePackagingJob
+newCreateEdgePackagingJob
+  pEdgePackagingJobName_
+  pCompilationJobName_
+  pModelName_
+  pModelVersion_
+  pRoleArn_
+  pOutputConfig_ =
+    CreateEdgePackagingJob'
+      { resourceKey =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        edgePackagingJobName = pEdgePackagingJobName_,
+        compilationJobName = pCompilationJobName_,
+        modelName = pModelName_,
+        modelVersion = pModelVersion_,
+        roleArn = pRoleArn_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The Amazon Web Services KMS key to use when encrypting the EBS volume
+-- the edge packaging job runs on.
+createEdgePackagingJob_resourceKey :: Lens.Lens' CreateEdgePackagingJob (Prelude.Maybe Prelude.Text)
+createEdgePackagingJob_resourceKey = Lens.lens (\CreateEdgePackagingJob' {resourceKey} -> resourceKey) (\s@CreateEdgePackagingJob' {} a -> s {resourceKey = a} :: CreateEdgePackagingJob)
+
+-- | Creates tags for the packaging job.
+createEdgePackagingJob_tags :: Lens.Lens' CreateEdgePackagingJob (Prelude.Maybe [Tag])
+createEdgePackagingJob_tags = Lens.lens (\CreateEdgePackagingJob' {tags} -> tags) (\s@CreateEdgePackagingJob' {} a -> s {tags = a} :: CreateEdgePackagingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the edge packaging job.
+createEdgePackagingJob_edgePackagingJobName :: Lens.Lens' CreateEdgePackagingJob Prelude.Text
+createEdgePackagingJob_edgePackagingJobName = Lens.lens (\CreateEdgePackagingJob' {edgePackagingJobName} -> edgePackagingJobName) (\s@CreateEdgePackagingJob' {} a -> s {edgePackagingJobName = a} :: CreateEdgePackagingJob)
+
+-- | The name of the SageMaker Neo compilation job that will be used to
+-- locate model artifacts for packaging.
+createEdgePackagingJob_compilationJobName :: Lens.Lens' CreateEdgePackagingJob Prelude.Text
+createEdgePackagingJob_compilationJobName = Lens.lens (\CreateEdgePackagingJob' {compilationJobName} -> compilationJobName) (\s@CreateEdgePackagingJob' {} a -> s {compilationJobName = a} :: CreateEdgePackagingJob)
+
+-- | The name of the model.
+createEdgePackagingJob_modelName :: Lens.Lens' CreateEdgePackagingJob Prelude.Text
+createEdgePackagingJob_modelName = Lens.lens (\CreateEdgePackagingJob' {modelName} -> modelName) (\s@CreateEdgePackagingJob' {} a -> s {modelName = a} :: CreateEdgePackagingJob)
+
+-- | The version of the model.
+createEdgePackagingJob_modelVersion :: Lens.Lens' CreateEdgePackagingJob Prelude.Text
+createEdgePackagingJob_modelVersion = Lens.lens (\CreateEdgePackagingJob' {modelVersion} -> modelVersion) (\s@CreateEdgePackagingJob' {} a -> s {modelVersion = a} :: CreateEdgePackagingJob)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to download and upload the model, and to contact SageMaker
+-- Neo.
+createEdgePackagingJob_roleArn :: Lens.Lens' CreateEdgePackagingJob Prelude.Text
+createEdgePackagingJob_roleArn = Lens.lens (\CreateEdgePackagingJob' {roleArn} -> roleArn) (\s@CreateEdgePackagingJob' {} a -> s {roleArn = a} :: CreateEdgePackagingJob)
+
+-- | Provides information about the output location for the packaged model.
+createEdgePackagingJob_outputConfig :: Lens.Lens' CreateEdgePackagingJob EdgeOutputConfig
+createEdgePackagingJob_outputConfig = Lens.lens (\CreateEdgePackagingJob' {outputConfig} -> outputConfig) (\s@CreateEdgePackagingJob' {} a -> s {outputConfig = a} :: CreateEdgePackagingJob)
+
+instance Core.AWSRequest CreateEdgePackagingJob where
+  type
+    AWSResponse CreateEdgePackagingJob =
+      CreateEdgePackagingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      CreateEdgePackagingJobResponse'
+
+instance Prelude.Hashable CreateEdgePackagingJob where
+  hashWithSalt _salt CreateEdgePackagingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceKey
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` edgePackagingJobName
+      `Prelude.hashWithSalt` compilationJobName
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` modelVersion
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData CreateEdgePackagingJob where
+  rnf CreateEdgePackagingJob' {..} =
+    Prelude.rnf resourceKey
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf edgePackagingJobName
+      `Prelude.seq` Prelude.rnf compilationJobName
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelVersion
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToHeaders CreateEdgePackagingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateEdgePackagingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateEdgePackagingJob where
+  toJSON CreateEdgePackagingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ResourceKey" Data..=) Prelude.<$> resourceKey,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "EdgePackagingJobName"
+                  Data..= edgePackagingJobName
+              ),
+            Prelude.Just
+              ("CompilationJobName" Data..= compilationJobName),
+            Prelude.Just ("ModelName" Data..= modelName),
+            Prelude.Just ("ModelVersion" Data..= modelVersion),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
+
+instance Data.ToPath CreateEdgePackagingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateEdgePackagingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateEdgePackagingJobResponse' smart constructor.
+data CreateEdgePackagingJobResponse = CreateEdgePackagingJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEdgePackagingJobResponse' 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.
+newCreateEdgePackagingJobResponse ::
+  CreateEdgePackagingJobResponse
+newCreateEdgePackagingJobResponse =
+  CreateEdgePackagingJobResponse'
+
+instance
+  Prelude.NFData
+    CreateEdgePackagingJobResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/CreateEndpoint.hs b/gen/Amazonka/SageMaker/CreateEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateEndpoint.hs
@@ -0,0 +1,310 @@
+{-# 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.CreateEndpoint
+-- 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 an endpoint using the endpoint configuration specified in the
+-- request. SageMaker uses the endpoint to provision resources and deploy
+-- models. You create the endpoint configuration with the
+-- CreateEndpointConfig API.
+--
+-- Use this API to deploy models using SageMaker hosting services.
+--
+-- For an example that calls this method when deploying a model to
+-- SageMaker hosting services, see the
+-- <https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-fundamentals/create-endpoint/create_endpoint.ipynb Create Endpoint example notebook.>
+--
+-- You must not delete an @EndpointConfig@ that is in use by an endpoint
+-- that is live or while the @UpdateEndpoint@ or @CreateEndpoint@
+-- operations are being performed on the endpoint. To update an endpoint,
+-- you must create a new @EndpointConfig@.
+--
+-- The endpoint name must be unique within an Amazon Web Services Region in
+-- your Amazon Web Services account.
+--
+-- When it receives the request, SageMaker creates the endpoint, launches
+-- the resources (ML compute instances), and deploys the model(s) on them.
+--
+-- When you call CreateEndpoint, a load call is made to DynamoDB to verify
+-- that your endpoint configuration exists. When you read data from a
+-- DynamoDB table supporting
+-- <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html Eventually Consistent Reads>
+-- , the response might not reflect the results of a recently completed
+-- write operation. The response might include some stale data. If the
+-- dependent entities are not yet in DynamoDB, this causes a validation
+-- error. If you repeat your read request after a short time, the response
+-- should return the latest data. So retry logic is recommended to handle
+-- these possible issues. We also recommend that customers call
+-- DescribeEndpointConfig before calling CreateEndpoint to minimize the
+-- potential impact of a DynamoDB eventually consistent read.
+--
+-- When SageMaker receives the request, it sets the endpoint status to
+-- @Creating@. After it creates the endpoint, it sets the status to
+-- @InService@. SageMaker can then process incoming requests for
+-- inferences. To check the status of an endpoint, use the DescribeEndpoint
+-- API.
+--
+-- If any of the models hosted at this endpoint get model data from an
+-- Amazon S3 location, SageMaker uses Amazon Web Services Security Token
+-- Service to download model artifacts from the S3 path you provided.
+-- Amazon Web Services STS is activated in your IAM user account by
+-- default. If you previously deactivated Amazon Web Services STS for a
+-- region, you need to reactivate Amazon Web Services STS for that region.
+-- For more information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+--
+-- To add the IAM role policies for using this API operation, go to the
+-- <https://console.aws.amazon.com/iam/ IAM console>, and choose Roles in
+-- the left navigation pane. Search the IAM role that you want to grant
+-- access to use the CreateEndpoint and CreateEndpointConfig API
+-- operations, add the following policies to the role.
+--
+-- -   Option 1: For a full SageMaker access, search and attach the
+--     @AmazonSageMakerFullAccess@ policy.
+--
+-- -   Option 2: For granting a limited access to an IAM role, paste the
+--     following Action elements manually into the JSON file of the IAM
+--     role:
+--
+--     @\"Action\": [\"sagemaker:CreateEndpoint\", \"sagemaker:CreateEndpointConfig\"]@
+--
+--     @\"Resource\": [@
+--
+--     @\"arn:aws:sagemaker:region:account-id:endpoint\/endpointName\"@
+--
+--     @\"arn:aws:sagemaker:region:account-id:endpoint-config\/endpointConfigName\"@
+--
+--     @]@
+--
+--     For more information, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html SageMaker API Permissions: Actions, Permissions, and Resources Reference>.
+module Amazonka.SageMaker.CreateEndpoint
+  ( -- * Creating a Request
+    CreateEndpoint (..),
+    newCreateEndpoint,
+
+    -- * Request Lenses
+    createEndpoint_deploymentConfig,
+    createEndpoint_tags,
+    createEndpoint_endpointName,
+    createEndpoint_endpointConfigName,
+
+    -- * Destructuring the Response
+    CreateEndpointResponse (..),
+    newCreateEndpointResponse,
+
+    -- * Response Lenses
+    createEndpointResponse_httpStatus,
+    createEndpointResponse_endpointArn,
+  )
+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:/ 'newCreateEndpoint' smart constructor.
+data CreateEndpoint = CreateEndpoint'
+  { deploymentConfig :: Prelude.Maybe DeploymentConfig,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the endpoint.The name must be unique within an Amazon Web
+    -- Services Region in your Amazon Web Services account. The name is
+    -- case-insensitive in @CreateEndpoint@, but the case is preserved and must
+    -- be matched in .
+    endpointName :: Prelude.Text,
+    -- | The name of an endpoint configuration. For more information, see
+    -- CreateEndpointConfig.
+    endpointConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEndpoint' 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:
+--
+-- 'deploymentConfig', 'createEndpoint_deploymentConfig' - Undocumented member.
+--
+-- 'tags', 'createEndpoint_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'endpointName', 'createEndpoint_endpointName' - The name of the endpoint.The name must be unique within an Amazon Web
+-- Services Region in your Amazon Web Services account. The name is
+-- case-insensitive in @CreateEndpoint@, but the case is preserved and must
+-- be matched in .
+--
+-- 'endpointConfigName', 'createEndpoint_endpointConfigName' - The name of an endpoint configuration. For more information, see
+-- CreateEndpointConfig.
+newCreateEndpoint ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  CreateEndpoint
+newCreateEndpoint pEndpointName_ pEndpointConfigName_ =
+  CreateEndpoint'
+    { deploymentConfig = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      endpointName = pEndpointName_,
+      endpointConfigName = pEndpointConfigName_
+    }
+
+-- | Undocumented member.
+createEndpoint_deploymentConfig :: Lens.Lens' CreateEndpoint (Prelude.Maybe DeploymentConfig)
+createEndpoint_deploymentConfig = Lens.lens (\CreateEndpoint' {deploymentConfig} -> deploymentConfig) (\s@CreateEndpoint' {} a -> s {deploymentConfig = a} :: CreateEndpoint)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createEndpoint_tags :: Lens.Lens' CreateEndpoint (Prelude.Maybe [Tag])
+createEndpoint_tags = Lens.lens (\CreateEndpoint' {tags} -> tags) (\s@CreateEndpoint' {} a -> s {tags = a} :: CreateEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the endpoint.The name must be unique within an Amazon Web
+-- Services Region in your Amazon Web Services account. The name is
+-- case-insensitive in @CreateEndpoint@, but the case is preserved and must
+-- be matched in .
+createEndpoint_endpointName :: Lens.Lens' CreateEndpoint Prelude.Text
+createEndpoint_endpointName = Lens.lens (\CreateEndpoint' {endpointName} -> endpointName) (\s@CreateEndpoint' {} a -> s {endpointName = a} :: CreateEndpoint)
+
+-- | The name of an endpoint configuration. For more information, see
+-- CreateEndpointConfig.
+createEndpoint_endpointConfigName :: Lens.Lens' CreateEndpoint Prelude.Text
+createEndpoint_endpointConfigName = Lens.lens (\CreateEndpoint' {endpointConfigName} -> endpointConfigName) (\s@CreateEndpoint' {} a -> s {endpointConfigName = a} :: CreateEndpoint)
+
+instance Core.AWSRequest CreateEndpoint where
+  type
+    AWSResponse CreateEndpoint =
+      CreateEndpointResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateEndpointResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EndpointArn")
+      )
+
+instance Prelude.Hashable CreateEndpoint where
+  hashWithSalt _salt CreateEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` deploymentConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` endpointConfigName
+
+instance Prelude.NFData CreateEndpoint where
+  rnf CreateEndpoint' {..} =
+    Prelude.rnf deploymentConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf endpointConfigName
+
+instance Data.ToHeaders CreateEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateEndpoint" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateEndpoint where
+  toJSON CreateEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeploymentConfig" Data..=)
+              Prelude.<$> deploymentConfig,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("EndpointName" Data..= endpointName),
+            Prelude.Just
+              ("EndpointConfigName" Data..= endpointConfigName)
+          ]
+      )
+
+instance Data.ToPath CreateEndpoint where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateEndpointResponse' smart constructor.
+data CreateEndpointResponse = CreateEndpointResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the endpoint.
+    endpointArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEndpointResponse' 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', 'createEndpointResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointArn', 'createEndpointResponse_endpointArn' - The Amazon Resource Name (ARN) of the endpoint.
+newCreateEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  CreateEndpointResponse
+newCreateEndpointResponse pHttpStatus_ pEndpointArn_ =
+  CreateEndpointResponse'
+    { httpStatus = pHttpStatus_,
+      endpointArn = pEndpointArn_
+    }
+
+-- | The response's http status code.
+createEndpointResponse_httpStatus :: Lens.Lens' CreateEndpointResponse Prelude.Int
+createEndpointResponse_httpStatus = Lens.lens (\CreateEndpointResponse' {httpStatus} -> httpStatus) (\s@CreateEndpointResponse' {} a -> s {httpStatus = a} :: CreateEndpointResponse)
+
+-- | The Amazon Resource Name (ARN) of the endpoint.
+createEndpointResponse_endpointArn :: Lens.Lens' CreateEndpointResponse Prelude.Text
+createEndpointResponse_endpointArn = Lens.lens (\CreateEndpointResponse' {endpointArn} -> endpointArn) (\s@CreateEndpointResponse' {} a -> s {endpointArn = a} :: CreateEndpointResponse)
+
+instance Prelude.NFData CreateEndpointResponse where
+  rnf CreateEndpointResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointArn
diff --git a/gen/Amazonka/SageMaker/CreateEndpointConfig.hs b/gen/Amazonka/SageMaker/CreateEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateEndpointConfig.hs
@@ -0,0 +1,451 @@
+{-# 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.CreateEndpointConfig
+-- 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 an endpoint configuration that SageMaker hosting services uses
+-- to deploy models. In the configuration, you identify one or more models,
+-- created using the @CreateModel@ API, to deploy and the resources that
+-- you want SageMaker to provision. Then you call the CreateEndpoint API.
+--
+-- Use this API if you want to use SageMaker hosting services to deploy
+-- models into production.
+--
+-- In the request, you define a @ProductionVariant@, for each model that
+-- you want to deploy. Each @ProductionVariant@ parameter also describes
+-- the resources that you want SageMaker to provision. This includes the
+-- number and type of ML compute instances to deploy.
+--
+-- If you are hosting multiple models, you also assign a @VariantWeight@ to
+-- specify how much traffic you want to allocate to each model. For
+-- example, suppose that you want to host two models, A and B, and you
+-- assign traffic weight 2 for model A and 1 for model B. SageMaker
+-- distributes two-thirds of the traffic to Model A, and one-third to model
+-- B.
+--
+-- When you call CreateEndpoint, a load call is made to DynamoDB to verify
+-- that your endpoint configuration exists. When you read data from a
+-- DynamoDB table supporting
+-- <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html Eventually Consistent Reads>
+-- , the response might not reflect the results of a recently completed
+-- write operation. The response might include some stale data. If the
+-- dependent entities are not yet in DynamoDB, this causes a validation
+-- error. If you repeat your read request after a short time, the response
+-- should return the latest data. So retry logic is recommended to handle
+-- these possible issues. We also recommend that customers call
+-- DescribeEndpointConfig before calling CreateEndpoint to minimize the
+-- potential impact of a DynamoDB eventually consistent read.
+module Amazonka.SageMaker.CreateEndpointConfig
+  ( -- * Creating a Request
+    CreateEndpointConfig (..),
+    newCreateEndpointConfig,
+
+    -- * Request Lenses
+    createEndpointConfig_asyncInferenceConfig,
+    createEndpointConfig_dataCaptureConfig,
+    createEndpointConfig_explainerConfig,
+    createEndpointConfig_kmsKeyId,
+    createEndpointConfig_shadowProductionVariants,
+    createEndpointConfig_tags,
+    createEndpointConfig_endpointConfigName,
+    createEndpointConfig_productionVariants,
+
+    -- * Destructuring the Response
+    CreateEndpointConfigResponse (..),
+    newCreateEndpointConfigResponse,
+
+    -- * Response Lenses
+    createEndpointConfigResponse_httpStatus,
+    createEndpointConfigResponse_endpointConfigArn,
+  )
+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:/ 'newCreateEndpointConfig' smart constructor.
+data CreateEndpointConfig = CreateEndpointConfig'
+  { -- | Specifies configuration for how an endpoint performs asynchronous
+    -- inference. This is a required field in order for your Endpoint to be
+    -- invoked using
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpointAsync.html InvokeEndpointAsync>.
+    asyncInferenceConfig :: Prelude.Maybe AsyncInferenceConfig,
+    dataCaptureConfig :: Prelude.Maybe DataCaptureConfig,
+    -- | A member of @CreateEndpointConfig@ that enables explainers.
+    explainerConfig :: Prelude.Maybe ExplainerConfig,
+    -- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+    -- Service key that SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance that hosts the endpoint.
+    --
+    -- The KmsKeyId can be any of the following formats:
+    --
+    -- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Key ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Alias name: @alias\/ExampleAlias@
+    --
+    -- -   Alias name ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+    --
+    -- The KMS key policy must grant permission to the IAM role that you
+    -- specify in your @CreateEndpoint@, @UpdateEndpoint@ requests. For more
+    -- information, refer to the Amazon Web Services Key Management Service
+    -- section
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+    --
+    -- Certain Nitro-based instances include local storage, dependent on the
+    -- instance type. Local storage volumes are encrypted using a hardware
+    -- module on the instance. You can\'t request a @KmsKeyId@ when using an
+    -- instance type with local storage. If any of the models that you specify
+    -- in the @ProductionVariants@ parameter use nitro-based instances with
+    -- local storage, do not specify a value for the @KmsKeyId@ parameter. If
+    -- you specify a value for @KmsKeyId@ when using any nitro-based instances
+    -- with local storage, the call to @CreateEndpointConfig@ fails.
+    --
+    -- For a list of instance types that support local instance storage, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+    --
+    -- For more information about local instance storage encryption, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | An array of @ProductionVariant@ objects, one for each model that you
+    -- want to host at this endpoint in shadow mode with production traffic
+    -- replicated from the model specified on @ProductionVariants@. If you use
+    -- this field, you can only specify one variant for @ProductionVariants@
+    -- and one variant for @ShadowProductionVariants@.
+    shadowProductionVariants :: Prelude.Maybe (Prelude.NonEmpty ProductionVariant),
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the endpoint configuration. You specify this name in a
+    -- CreateEndpoint request.
+    endpointConfigName :: Prelude.Text,
+    -- | An array of @ProductionVariant@ objects, one for each model that you
+    -- want to host at this endpoint.
+    productionVariants :: Prelude.NonEmpty ProductionVariant
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEndpointConfig' 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:
+--
+-- 'asyncInferenceConfig', 'createEndpointConfig_asyncInferenceConfig' - Specifies configuration for how an endpoint performs asynchronous
+-- inference. This is a required field in order for your Endpoint to be
+-- invoked using
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpointAsync.html InvokeEndpointAsync>.
+--
+-- 'dataCaptureConfig', 'createEndpointConfig_dataCaptureConfig' - Undocumented member.
+--
+-- 'explainerConfig', 'createEndpointConfig_explainerConfig' - A member of @CreateEndpointConfig@ that enables explainers.
+--
+-- 'kmsKeyId', 'createEndpointConfig_kmsKeyId' - The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the endpoint.
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateEndpoint@, @UpdateEndpoint@ requests. For more
+-- information, refer to the Amazon Web Services Key Management Service
+-- section
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @KmsKeyId@ when using an
+-- instance type with local storage. If any of the models that you specify
+-- in the @ProductionVariants@ parameter use nitro-based instances with
+-- local storage, do not specify a value for the @KmsKeyId@ parameter. If
+-- you specify a value for @KmsKeyId@ when using any nitro-based instances
+-- with local storage, the call to @CreateEndpointConfig@ fails.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+--
+-- 'shadowProductionVariants', 'createEndpointConfig_shadowProductionVariants' - An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@. If you use
+-- this field, you can only specify one variant for @ProductionVariants@
+-- and one variant for @ShadowProductionVariants@.
+--
+-- 'tags', 'createEndpointConfig_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'endpointConfigName', 'createEndpointConfig_endpointConfigName' - The name of the endpoint configuration. You specify this name in a
+-- CreateEndpoint request.
+--
+-- 'productionVariants', 'createEndpointConfig_productionVariants' - An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint.
+newCreateEndpointConfig ::
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  -- | 'productionVariants'
+  Prelude.NonEmpty ProductionVariant ->
+  CreateEndpointConfig
+newCreateEndpointConfig
+  pEndpointConfigName_
+  pProductionVariants_ =
+    CreateEndpointConfig'
+      { asyncInferenceConfig =
+          Prelude.Nothing,
+        dataCaptureConfig = Prelude.Nothing,
+        explainerConfig = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        shadowProductionVariants = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        endpointConfigName = pEndpointConfigName_,
+        productionVariants =
+          Lens.coerced Lens.# pProductionVariants_
+      }
+
+-- | Specifies configuration for how an endpoint performs asynchronous
+-- inference. This is a required field in order for your Endpoint to be
+-- invoked using
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpointAsync.html InvokeEndpointAsync>.
+createEndpointConfig_asyncInferenceConfig :: Lens.Lens' CreateEndpointConfig (Prelude.Maybe AsyncInferenceConfig)
+createEndpointConfig_asyncInferenceConfig = Lens.lens (\CreateEndpointConfig' {asyncInferenceConfig} -> asyncInferenceConfig) (\s@CreateEndpointConfig' {} a -> s {asyncInferenceConfig = a} :: CreateEndpointConfig)
+
+-- | Undocumented member.
+createEndpointConfig_dataCaptureConfig :: Lens.Lens' CreateEndpointConfig (Prelude.Maybe DataCaptureConfig)
+createEndpointConfig_dataCaptureConfig = Lens.lens (\CreateEndpointConfig' {dataCaptureConfig} -> dataCaptureConfig) (\s@CreateEndpointConfig' {} a -> s {dataCaptureConfig = a} :: CreateEndpointConfig)
+
+-- | A member of @CreateEndpointConfig@ that enables explainers.
+createEndpointConfig_explainerConfig :: Lens.Lens' CreateEndpointConfig (Prelude.Maybe ExplainerConfig)
+createEndpointConfig_explainerConfig = Lens.lens (\CreateEndpointConfig' {explainerConfig} -> explainerConfig) (\s@CreateEndpointConfig' {} a -> s {explainerConfig = a} :: CreateEndpointConfig)
+
+-- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the endpoint.
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateEndpoint@, @UpdateEndpoint@ requests. For more
+-- information, refer to the Amazon Web Services Key Management Service
+-- section
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @KmsKeyId@ when using an
+-- instance type with local storage. If any of the models that you specify
+-- in the @ProductionVariants@ parameter use nitro-based instances with
+-- local storage, do not specify a value for the @KmsKeyId@ parameter. If
+-- you specify a value for @KmsKeyId@ when using any nitro-based instances
+-- with local storage, the call to @CreateEndpointConfig@ fails.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+createEndpointConfig_kmsKeyId :: Lens.Lens' CreateEndpointConfig (Prelude.Maybe Prelude.Text)
+createEndpointConfig_kmsKeyId = Lens.lens (\CreateEndpointConfig' {kmsKeyId} -> kmsKeyId) (\s@CreateEndpointConfig' {} a -> s {kmsKeyId = a} :: CreateEndpointConfig)
+
+-- | An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@. If you use
+-- this field, you can only specify one variant for @ProductionVariants@
+-- and one variant for @ShadowProductionVariants@.
+createEndpointConfig_shadowProductionVariants :: Lens.Lens' CreateEndpointConfig (Prelude.Maybe (Prelude.NonEmpty ProductionVariant))
+createEndpointConfig_shadowProductionVariants = Lens.lens (\CreateEndpointConfig' {shadowProductionVariants} -> shadowProductionVariants) (\s@CreateEndpointConfig' {} a -> s {shadowProductionVariants = a} :: CreateEndpointConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createEndpointConfig_tags :: Lens.Lens' CreateEndpointConfig (Prelude.Maybe [Tag])
+createEndpointConfig_tags = Lens.lens (\CreateEndpointConfig' {tags} -> tags) (\s@CreateEndpointConfig' {} a -> s {tags = a} :: CreateEndpointConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the endpoint configuration. You specify this name in a
+-- CreateEndpoint request.
+createEndpointConfig_endpointConfigName :: Lens.Lens' CreateEndpointConfig Prelude.Text
+createEndpointConfig_endpointConfigName = Lens.lens (\CreateEndpointConfig' {endpointConfigName} -> endpointConfigName) (\s@CreateEndpointConfig' {} a -> s {endpointConfigName = a} :: CreateEndpointConfig)
+
+-- | An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint.
+createEndpointConfig_productionVariants :: Lens.Lens' CreateEndpointConfig (Prelude.NonEmpty ProductionVariant)
+createEndpointConfig_productionVariants = Lens.lens (\CreateEndpointConfig' {productionVariants} -> productionVariants) (\s@CreateEndpointConfig' {} a -> s {productionVariants = a} :: CreateEndpointConfig) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateEndpointConfig where
+  type
+    AWSResponse CreateEndpointConfig =
+      CreateEndpointConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateEndpointConfigResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EndpointConfigArn")
+      )
+
+instance Prelude.Hashable CreateEndpointConfig where
+  hashWithSalt _salt CreateEndpointConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` asyncInferenceConfig
+      `Prelude.hashWithSalt` dataCaptureConfig
+      `Prelude.hashWithSalt` explainerConfig
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` shadowProductionVariants
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` endpointConfigName
+      `Prelude.hashWithSalt` productionVariants
+
+instance Prelude.NFData CreateEndpointConfig where
+  rnf CreateEndpointConfig' {..} =
+    Prelude.rnf asyncInferenceConfig
+      `Prelude.seq` Prelude.rnf dataCaptureConfig
+      `Prelude.seq` Prelude.rnf explainerConfig
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf shadowProductionVariants
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf endpointConfigName
+      `Prelude.seq` Prelude.rnf productionVariants
+
+instance Data.ToHeaders CreateEndpointConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateEndpointConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateEndpointConfig where
+  toJSON CreateEndpointConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AsyncInferenceConfig" Data..=)
+              Prelude.<$> asyncInferenceConfig,
+            ("DataCaptureConfig" Data..=)
+              Prelude.<$> dataCaptureConfig,
+            ("ExplainerConfig" Data..=)
+              Prelude.<$> explainerConfig,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("ShadowProductionVariants" Data..=)
+              Prelude.<$> shadowProductionVariants,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("EndpointConfigName" Data..= endpointConfigName),
+            Prelude.Just
+              ("ProductionVariants" Data..= productionVariants)
+          ]
+      )
+
+instance Data.ToPath CreateEndpointConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateEndpointConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateEndpointConfigResponse' smart constructor.
+data CreateEndpointConfigResponse = CreateEndpointConfigResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the endpoint configuration.
+    endpointConfigArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEndpointConfigResponse' 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', 'createEndpointConfigResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointConfigArn', 'createEndpointConfigResponse_endpointConfigArn' - The Amazon Resource Name (ARN) of the endpoint configuration.
+newCreateEndpointConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'endpointConfigArn'
+  Prelude.Text ->
+  CreateEndpointConfigResponse
+newCreateEndpointConfigResponse
+  pHttpStatus_
+  pEndpointConfigArn_ =
+    CreateEndpointConfigResponse'
+      { httpStatus =
+          pHttpStatus_,
+        endpointConfigArn = pEndpointConfigArn_
+      }
+
+-- | The response's http status code.
+createEndpointConfigResponse_httpStatus :: Lens.Lens' CreateEndpointConfigResponse Prelude.Int
+createEndpointConfigResponse_httpStatus = Lens.lens (\CreateEndpointConfigResponse' {httpStatus} -> httpStatus) (\s@CreateEndpointConfigResponse' {} a -> s {httpStatus = a} :: CreateEndpointConfigResponse)
+
+-- | The Amazon Resource Name (ARN) of the endpoint configuration.
+createEndpointConfigResponse_endpointConfigArn :: Lens.Lens' CreateEndpointConfigResponse Prelude.Text
+createEndpointConfigResponse_endpointConfigArn = Lens.lens (\CreateEndpointConfigResponse' {endpointConfigArn} -> endpointConfigArn) (\s@CreateEndpointConfigResponse' {} a -> s {endpointConfigArn = a} :: CreateEndpointConfigResponse)
+
+instance Prelude.NFData CreateEndpointConfigResponse where
+  rnf CreateEndpointConfigResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointConfigArn
diff --git a/gen/Amazonka/SageMaker/CreateExperiment.hs b/gen/Amazonka/SageMaker/CreateExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateExperiment.hs
@@ -0,0 +1,251 @@
+{-# 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.CreateExperiment
+-- 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 SageMaker /experiment/. An experiment is a collection of
+-- /trials/ that are observed, compared and evaluated as a group. A trial
+-- is a set of steps, called /trial components/, that produce a machine
+-- learning model.
+--
+-- In the Studio UI, trials are referred to as /run groups/ and trial
+-- components are referred to as /runs/.
+--
+-- The goal of an experiment is to determine the components that produce
+-- the best model. Multiple trials are performed, each one isolating and
+-- measuring the impact of a change to one or more inputs, while keeping
+-- the remaining inputs constant.
+--
+-- When you use SageMaker Studio or the SageMaker Python SDK, all
+-- experiments, trials, and trial components are automatically tracked,
+-- logged, and indexed. When you use the Amazon Web Services SDK for Python
+-- (Boto), you must use the logging APIs provided by the SDK.
+--
+-- You can add tags to experiments, trials, trial components and then use
+-- the Search API to search for the tags.
+--
+-- To add a description to an experiment, specify the optional
+-- @Description@ parameter. To add a description later, or to change the
+-- description, call the UpdateExperiment API.
+--
+-- To get a list of all your experiments, call the ListExperiments API. To
+-- view an experiment\'s properties, call the DescribeExperiment API. To
+-- get a list of all the trials associated with an experiment, call the
+-- ListTrials API. To create a trial call the CreateTrial API.
+module Amazonka.SageMaker.CreateExperiment
+  ( -- * Creating a Request
+    CreateExperiment (..),
+    newCreateExperiment,
+
+    -- * Request Lenses
+    createExperiment_description,
+    createExperiment_displayName,
+    createExperiment_tags,
+    createExperiment_experimentName,
+
+    -- * Destructuring the Response
+    CreateExperimentResponse (..),
+    newCreateExperimentResponse,
+
+    -- * Response Lenses
+    createExperimentResponse_experimentArn,
+    createExperimentResponse_httpStatus,
+  )
+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:/ 'newCreateExperiment' smart constructor.
+data CreateExperiment = CreateExperiment'
+  { -- | The description of the experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment as displayed. The name doesn\'t need to be
+    -- unique. If you don\'t specify @DisplayName@, the value in
+    -- @ExperimentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags to associate with the experiment. You can use Search API
+    -- to search on the tags.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the experiment. The name must be unique in your Amazon Web
+    -- Services account and is not case-sensitive.
+    experimentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateExperiment' 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:
+--
+-- 'description', 'createExperiment_description' - The description of the experiment.
+--
+-- 'displayName', 'createExperiment_displayName' - The name of the experiment as displayed. The name doesn\'t need to be
+-- unique. If you don\'t specify @DisplayName@, the value in
+-- @ExperimentName@ is displayed.
+--
+-- 'tags', 'createExperiment_tags' - A list of tags to associate with the experiment. You can use Search API
+-- to search on the tags.
+--
+-- 'experimentName', 'createExperiment_experimentName' - The name of the experiment. The name must be unique in your Amazon Web
+-- Services account and is not case-sensitive.
+newCreateExperiment ::
+  -- | 'experimentName'
+  Prelude.Text ->
+  CreateExperiment
+newCreateExperiment pExperimentName_ =
+  CreateExperiment'
+    { description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      experimentName = pExperimentName_
+    }
+
+-- | The description of the experiment.
+createExperiment_description :: Lens.Lens' CreateExperiment (Prelude.Maybe Prelude.Text)
+createExperiment_description = Lens.lens (\CreateExperiment' {description} -> description) (\s@CreateExperiment' {} a -> s {description = a} :: CreateExperiment)
+
+-- | The name of the experiment as displayed. The name doesn\'t need to be
+-- unique. If you don\'t specify @DisplayName@, the value in
+-- @ExperimentName@ is displayed.
+createExperiment_displayName :: Lens.Lens' CreateExperiment (Prelude.Maybe Prelude.Text)
+createExperiment_displayName = Lens.lens (\CreateExperiment' {displayName} -> displayName) (\s@CreateExperiment' {} a -> s {displayName = a} :: CreateExperiment)
+
+-- | A list of tags to associate with the experiment. You can use Search API
+-- to search on the tags.
+createExperiment_tags :: Lens.Lens' CreateExperiment (Prelude.Maybe [Tag])
+createExperiment_tags = Lens.lens (\CreateExperiment' {tags} -> tags) (\s@CreateExperiment' {} a -> s {tags = a} :: CreateExperiment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the experiment. The name must be unique in your Amazon Web
+-- Services account and is not case-sensitive.
+createExperiment_experimentName :: Lens.Lens' CreateExperiment Prelude.Text
+createExperiment_experimentName = Lens.lens (\CreateExperiment' {experimentName} -> experimentName) (\s@CreateExperiment' {} a -> s {experimentName = a} :: CreateExperiment)
+
+instance Core.AWSRequest CreateExperiment where
+  type
+    AWSResponse CreateExperiment =
+      CreateExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateExperimentResponse'
+            Prelude.<$> (x Data..?> "ExperimentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateExperiment where
+  hashWithSalt _salt CreateExperiment' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` experimentName
+
+instance Prelude.NFData CreateExperiment where
+  rnf CreateExperiment' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf experimentName
+
+instance Data.ToHeaders CreateExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateExperiment" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateExperiment where
+  toJSON CreateExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("DisplayName" Data..=) Prelude.<$> displayName,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ExperimentName" Data..= experimentName)
+          ]
+      )
+
+instance Data.ToPath CreateExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateExperimentResponse' smart constructor.
+data CreateExperimentResponse = CreateExperimentResponse'
+  { -- | The Amazon Resource Name (ARN) of the experiment.
+    experimentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateExperimentResponse' 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:
+--
+-- 'experimentArn', 'createExperimentResponse_experimentArn' - The Amazon Resource Name (ARN) of the experiment.
+--
+-- 'httpStatus', 'createExperimentResponse_httpStatus' - The response's http status code.
+newCreateExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateExperimentResponse
+newCreateExperimentResponse pHttpStatus_ =
+  CreateExperimentResponse'
+    { experimentArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the experiment.
+createExperimentResponse_experimentArn :: Lens.Lens' CreateExperimentResponse (Prelude.Maybe Prelude.Text)
+createExperimentResponse_experimentArn = Lens.lens (\CreateExperimentResponse' {experimentArn} -> experimentArn) (\s@CreateExperimentResponse' {} a -> s {experimentArn = a} :: CreateExperimentResponse)
+
+-- | The response's http status code.
+createExperimentResponse_httpStatus :: Lens.Lens' CreateExperimentResponse Prelude.Int
+createExperimentResponse_httpStatus = Lens.lens (\CreateExperimentResponse' {httpStatus} -> httpStatus) (\s@CreateExperimentResponse' {} a -> s {httpStatus = a} :: CreateExperimentResponse)
+
+instance Prelude.NFData CreateExperimentResponse where
+  rnf CreateExperimentResponse' {..} =
+    Prelude.rnf experimentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateFeatureGroup.hs b/gen/Amazonka/SageMaker/CreateFeatureGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateFeatureGroup.hs
@@ -0,0 +1,533 @@
+{-# 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.CreateFeatureGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new @FeatureGroup@. A @FeatureGroup@ is a group of @Features@
+-- defined in the @FeatureStore@ to describe a @Record@.
+--
+-- The @FeatureGroup@ defines the schema and features contained in the
+-- FeatureGroup. A @FeatureGroup@ definition is composed of a list of
+-- @Features@, a @RecordIdentifierFeatureName@, an @EventTimeFeatureName@
+-- and configurations for its @OnlineStore@ and @OfflineStore@. Check
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html Amazon Web Services service quotas>
+-- to see the @FeatureGroup@s quota for your Amazon Web Services account.
+--
+-- You must include at least one of @OnlineStoreConfig@ and
+-- @OfflineStoreConfig@ to create a @FeatureGroup@.
+module Amazonka.SageMaker.CreateFeatureGroup
+  ( -- * Creating a Request
+    CreateFeatureGroup (..),
+    newCreateFeatureGroup,
+
+    -- * Request Lenses
+    createFeatureGroup_description,
+    createFeatureGroup_offlineStoreConfig,
+    createFeatureGroup_onlineStoreConfig,
+    createFeatureGroup_roleArn,
+    createFeatureGroup_tags,
+    createFeatureGroup_featureGroupName,
+    createFeatureGroup_recordIdentifierFeatureName,
+    createFeatureGroup_eventTimeFeatureName,
+    createFeatureGroup_featureDefinitions,
+
+    -- * Destructuring the Response
+    CreateFeatureGroupResponse (..),
+    newCreateFeatureGroupResponse,
+
+    -- * Response Lenses
+    createFeatureGroupResponse_httpStatus,
+    createFeatureGroupResponse_featureGroupArn,
+  )
+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:/ 'newCreateFeatureGroup' smart constructor.
+data CreateFeatureGroup = CreateFeatureGroup'
+  { -- | A free-form description of a @FeatureGroup@.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Use this to configure an @OfflineFeatureStore@. This parameter allows
+    -- you to specify:
+    --
+    -- -   The Amazon Simple Storage Service (Amazon S3) location of an
+    --     @OfflineStore@.
+    --
+    -- -   A configuration for an Amazon Web Services Glue or Amazon Web
+    --     Services Hive data catalog.
+    --
+    -- -   An KMS encryption key to encrypt the Amazon S3 location used for
+    --     @OfflineStore@. If KMS encryption key is not specified, by default
+    --     we encrypt all data at rest using Amazon Web Services KMS key. By
+    --     defining your
+    --     <https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html bucket-level key>
+    --     for SSE, you can reduce Amazon Web Services KMS requests costs by up
+    --     to 99 percent.
+    --
+    -- -   Format for the offline store table. Supported formats are Glue
+    --     (Default) and <https://iceberg.apache.org/ Apache Iceberg>.
+    --
+    -- To learn more about this parameter, see OfflineStoreConfig.
+    offlineStoreConfig :: Prelude.Maybe OfflineStoreConfig,
+    -- | You can turn the @OnlineStore@ on or off by specifying @True@ for the
+    -- @EnableOnlineStore@ flag in @OnlineStoreConfig@; the default value is
+    -- @False@.
+    --
+    -- You can also include an Amazon Web Services KMS key ID (@KMSKeyId@) for
+    -- at-rest encryption of the @OnlineStore@.
+    onlineStoreConfig :: Prelude.Maybe OnlineStoreConfig,
+    -- | The Amazon Resource Name (ARN) of the IAM execution role used to persist
+    -- data into the @OfflineStore@ if an @OfflineStoreConfig@ is provided.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Tags used to identify @Features@ in each @FeatureGroup@.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the @FeatureGroup@. The name must be unique within an Amazon
+    -- Web Services Region in an Amazon Web Services account. The name:
+    --
+    -- -   Must start and end with an alphanumeric character.
+    --
+    -- -   Can only contain alphanumeric character and hyphens. Spaces are not
+    --     allowed.
+    featureGroupName :: Prelude.Text,
+    -- | The name of the @Feature@ whose value uniquely identifies a @Record@
+    -- defined in the @FeatureStore@. Only the latest record per identifier
+    -- value will be stored in the @OnlineStore@. @RecordIdentifierFeatureName@
+    -- must be one of feature definitions\' names.
+    --
+    -- You use the @RecordIdentifierFeatureName@ to access data in a
+    -- @FeatureStore@.
+    --
+    -- This name:
+    --
+    -- -   Must start and end with an alphanumeric character.
+    --
+    -- -   Can only contains alphanumeric characters, hyphens, underscores.
+    --     Spaces are not allowed.
+    recordIdentifierFeatureName :: Prelude.Text,
+    -- | The name of the feature that stores the @EventTime@ of a @Record@ in a
+    -- @FeatureGroup@.
+    --
+    -- An @EventTime@ is a point in time when a new event occurs that
+    -- corresponds to the creation or update of a @Record@ in a @FeatureGroup@.
+    -- All @Records@ in the @FeatureGroup@ must have a corresponding
+    -- @EventTime@.
+    --
+    -- An @EventTime@ can be a @String@ or @Fractional@.
+    --
+    -- -   @Fractional@: @EventTime@ feature values must be a Unix timestamp in
+    --     seconds.
+    --
+    -- -   @String@: @EventTime@ feature values must be an ISO-8601 string in
+    --     the format. The following formats are supported
+    --     @yyyy-MM-dd\'T\'HH:mm:ssZ@ and @yyyy-MM-dd\'T\'HH:mm:ss.SSSZ@ where
+    --     @yyyy@, @MM@, and @dd@ represent the year, month, and day
+    --     respectively and @HH@, @mm@, @ss@, and if applicable, @SSS@
+    --     represent the hour, month, second and milliseconds respsectively.
+    --     @\'T\'@ and @Z@ are constants.
+    eventTimeFeatureName :: Prelude.Text,
+    -- | A list of @Feature@ names and types. @Name@ and @Type@ is compulsory per
+    -- @Feature@.
+    --
+    -- Valid feature @FeatureType@s are @Integral@, @Fractional@ and @String@.
+    --
+    -- @FeatureName@s cannot be any of the following: @is_deleted@,
+    -- @write_time@, @api_invocation_time@
+    --
+    -- You can create up to 2,500 @FeatureDefinition@s per @FeatureGroup@.
+    featureDefinitions :: Prelude.NonEmpty FeatureDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFeatureGroup' 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:
+--
+-- 'description', 'createFeatureGroup_description' - A free-form description of a @FeatureGroup@.
+--
+-- 'offlineStoreConfig', 'createFeatureGroup_offlineStoreConfig' - Use this to configure an @OfflineFeatureStore@. This parameter allows
+-- you to specify:
+--
+-- -   The Amazon Simple Storage Service (Amazon S3) location of an
+--     @OfflineStore@.
+--
+-- -   A configuration for an Amazon Web Services Glue or Amazon Web
+--     Services Hive data catalog.
+--
+-- -   An KMS encryption key to encrypt the Amazon S3 location used for
+--     @OfflineStore@. If KMS encryption key is not specified, by default
+--     we encrypt all data at rest using Amazon Web Services KMS key. By
+--     defining your
+--     <https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html bucket-level key>
+--     for SSE, you can reduce Amazon Web Services KMS requests costs by up
+--     to 99 percent.
+--
+-- -   Format for the offline store table. Supported formats are Glue
+--     (Default) and <https://iceberg.apache.org/ Apache Iceberg>.
+--
+-- To learn more about this parameter, see OfflineStoreConfig.
+--
+-- 'onlineStoreConfig', 'createFeatureGroup_onlineStoreConfig' - You can turn the @OnlineStore@ on or off by specifying @True@ for the
+-- @EnableOnlineStore@ flag in @OnlineStoreConfig@; the default value is
+-- @False@.
+--
+-- You can also include an Amazon Web Services KMS key ID (@KMSKeyId@) for
+-- at-rest encryption of the @OnlineStore@.
+--
+-- 'roleArn', 'createFeatureGroup_roleArn' - The Amazon Resource Name (ARN) of the IAM execution role used to persist
+-- data into the @OfflineStore@ if an @OfflineStoreConfig@ is provided.
+--
+-- 'tags', 'createFeatureGroup_tags' - Tags used to identify @Features@ in each @FeatureGroup@.
+--
+-- 'featureGroupName', 'createFeatureGroup_featureGroupName' - The name of the @FeatureGroup@. The name must be unique within an Amazon
+-- Web Services Region in an Amazon Web Services account. The name:
+--
+-- -   Must start and end with an alphanumeric character.
+--
+-- -   Can only contain alphanumeric character and hyphens. Spaces are not
+--     allowed.
+--
+-- 'recordIdentifierFeatureName', 'createFeatureGroup_recordIdentifierFeatureName' - The name of the @Feature@ whose value uniquely identifies a @Record@
+-- defined in the @FeatureStore@. Only the latest record per identifier
+-- value will be stored in the @OnlineStore@. @RecordIdentifierFeatureName@
+-- must be one of feature definitions\' names.
+--
+-- You use the @RecordIdentifierFeatureName@ to access data in a
+-- @FeatureStore@.
+--
+-- This name:
+--
+-- -   Must start and end with an alphanumeric character.
+--
+-- -   Can only contains alphanumeric characters, hyphens, underscores.
+--     Spaces are not allowed.
+--
+-- 'eventTimeFeatureName', 'createFeatureGroup_eventTimeFeatureName' - The name of the feature that stores the @EventTime@ of a @Record@ in a
+-- @FeatureGroup@.
+--
+-- An @EventTime@ is a point in time when a new event occurs that
+-- corresponds to the creation or update of a @Record@ in a @FeatureGroup@.
+-- All @Records@ in the @FeatureGroup@ must have a corresponding
+-- @EventTime@.
+--
+-- An @EventTime@ can be a @String@ or @Fractional@.
+--
+-- -   @Fractional@: @EventTime@ feature values must be a Unix timestamp in
+--     seconds.
+--
+-- -   @String@: @EventTime@ feature values must be an ISO-8601 string in
+--     the format. The following formats are supported
+--     @yyyy-MM-dd\'T\'HH:mm:ssZ@ and @yyyy-MM-dd\'T\'HH:mm:ss.SSSZ@ where
+--     @yyyy@, @MM@, and @dd@ represent the year, month, and day
+--     respectively and @HH@, @mm@, @ss@, and if applicable, @SSS@
+--     represent the hour, month, second and milliseconds respsectively.
+--     @\'T\'@ and @Z@ are constants.
+--
+-- 'featureDefinitions', 'createFeatureGroup_featureDefinitions' - A list of @Feature@ names and types. @Name@ and @Type@ is compulsory per
+-- @Feature@.
+--
+-- Valid feature @FeatureType@s are @Integral@, @Fractional@ and @String@.
+--
+-- @FeatureName@s cannot be any of the following: @is_deleted@,
+-- @write_time@, @api_invocation_time@
+--
+-- You can create up to 2,500 @FeatureDefinition@s per @FeatureGroup@.
+newCreateFeatureGroup ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  -- | 'recordIdentifierFeatureName'
+  Prelude.Text ->
+  -- | 'eventTimeFeatureName'
+  Prelude.Text ->
+  -- | 'featureDefinitions'
+  Prelude.NonEmpty FeatureDefinition ->
+  CreateFeatureGroup
+newCreateFeatureGroup
+  pFeatureGroupName_
+  pRecordIdentifierFeatureName_
+  pEventTimeFeatureName_
+  pFeatureDefinitions_ =
+    CreateFeatureGroup'
+      { description = Prelude.Nothing,
+        offlineStoreConfig = Prelude.Nothing,
+        onlineStoreConfig = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        featureGroupName = pFeatureGroupName_,
+        recordIdentifierFeatureName =
+          pRecordIdentifierFeatureName_,
+        eventTimeFeatureName = pEventTimeFeatureName_,
+        featureDefinitions =
+          Lens.coerced Lens.# pFeatureDefinitions_
+      }
+
+-- | A free-form description of a @FeatureGroup@.
+createFeatureGroup_description :: Lens.Lens' CreateFeatureGroup (Prelude.Maybe Prelude.Text)
+createFeatureGroup_description = Lens.lens (\CreateFeatureGroup' {description} -> description) (\s@CreateFeatureGroup' {} a -> s {description = a} :: CreateFeatureGroup)
+
+-- | Use this to configure an @OfflineFeatureStore@. This parameter allows
+-- you to specify:
+--
+-- -   The Amazon Simple Storage Service (Amazon S3) location of an
+--     @OfflineStore@.
+--
+-- -   A configuration for an Amazon Web Services Glue or Amazon Web
+--     Services Hive data catalog.
+--
+-- -   An KMS encryption key to encrypt the Amazon S3 location used for
+--     @OfflineStore@. If KMS encryption key is not specified, by default
+--     we encrypt all data at rest using Amazon Web Services KMS key. By
+--     defining your
+--     <https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html bucket-level key>
+--     for SSE, you can reduce Amazon Web Services KMS requests costs by up
+--     to 99 percent.
+--
+-- -   Format for the offline store table. Supported formats are Glue
+--     (Default) and <https://iceberg.apache.org/ Apache Iceberg>.
+--
+-- To learn more about this parameter, see OfflineStoreConfig.
+createFeatureGroup_offlineStoreConfig :: Lens.Lens' CreateFeatureGroup (Prelude.Maybe OfflineStoreConfig)
+createFeatureGroup_offlineStoreConfig = Lens.lens (\CreateFeatureGroup' {offlineStoreConfig} -> offlineStoreConfig) (\s@CreateFeatureGroup' {} a -> s {offlineStoreConfig = a} :: CreateFeatureGroup)
+
+-- | You can turn the @OnlineStore@ on or off by specifying @True@ for the
+-- @EnableOnlineStore@ flag in @OnlineStoreConfig@; the default value is
+-- @False@.
+--
+-- You can also include an Amazon Web Services KMS key ID (@KMSKeyId@) for
+-- at-rest encryption of the @OnlineStore@.
+createFeatureGroup_onlineStoreConfig :: Lens.Lens' CreateFeatureGroup (Prelude.Maybe OnlineStoreConfig)
+createFeatureGroup_onlineStoreConfig = Lens.lens (\CreateFeatureGroup' {onlineStoreConfig} -> onlineStoreConfig) (\s@CreateFeatureGroup' {} a -> s {onlineStoreConfig = a} :: CreateFeatureGroup)
+
+-- | The Amazon Resource Name (ARN) of the IAM execution role used to persist
+-- data into the @OfflineStore@ if an @OfflineStoreConfig@ is provided.
+createFeatureGroup_roleArn :: Lens.Lens' CreateFeatureGroup (Prelude.Maybe Prelude.Text)
+createFeatureGroup_roleArn = Lens.lens (\CreateFeatureGroup' {roleArn} -> roleArn) (\s@CreateFeatureGroup' {} a -> s {roleArn = a} :: CreateFeatureGroup)
+
+-- | Tags used to identify @Features@ in each @FeatureGroup@.
+createFeatureGroup_tags :: Lens.Lens' CreateFeatureGroup (Prelude.Maybe [Tag])
+createFeatureGroup_tags = Lens.lens (\CreateFeatureGroup' {tags} -> tags) (\s@CreateFeatureGroup' {} a -> s {tags = a} :: CreateFeatureGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the @FeatureGroup@. The name must be unique within an Amazon
+-- Web Services Region in an Amazon Web Services account. The name:
+--
+-- -   Must start and end with an alphanumeric character.
+--
+-- -   Can only contain alphanumeric character and hyphens. Spaces are not
+--     allowed.
+createFeatureGroup_featureGroupName :: Lens.Lens' CreateFeatureGroup Prelude.Text
+createFeatureGroup_featureGroupName = Lens.lens (\CreateFeatureGroup' {featureGroupName} -> featureGroupName) (\s@CreateFeatureGroup' {} a -> s {featureGroupName = a} :: CreateFeatureGroup)
+
+-- | The name of the @Feature@ whose value uniquely identifies a @Record@
+-- defined in the @FeatureStore@. Only the latest record per identifier
+-- value will be stored in the @OnlineStore@. @RecordIdentifierFeatureName@
+-- must be one of feature definitions\' names.
+--
+-- You use the @RecordIdentifierFeatureName@ to access data in a
+-- @FeatureStore@.
+--
+-- This name:
+--
+-- -   Must start and end with an alphanumeric character.
+--
+-- -   Can only contains alphanumeric characters, hyphens, underscores.
+--     Spaces are not allowed.
+createFeatureGroup_recordIdentifierFeatureName :: Lens.Lens' CreateFeatureGroup Prelude.Text
+createFeatureGroup_recordIdentifierFeatureName = Lens.lens (\CreateFeatureGroup' {recordIdentifierFeatureName} -> recordIdentifierFeatureName) (\s@CreateFeatureGroup' {} a -> s {recordIdentifierFeatureName = a} :: CreateFeatureGroup)
+
+-- | The name of the feature that stores the @EventTime@ of a @Record@ in a
+-- @FeatureGroup@.
+--
+-- An @EventTime@ is a point in time when a new event occurs that
+-- corresponds to the creation or update of a @Record@ in a @FeatureGroup@.
+-- All @Records@ in the @FeatureGroup@ must have a corresponding
+-- @EventTime@.
+--
+-- An @EventTime@ can be a @String@ or @Fractional@.
+--
+-- -   @Fractional@: @EventTime@ feature values must be a Unix timestamp in
+--     seconds.
+--
+-- -   @String@: @EventTime@ feature values must be an ISO-8601 string in
+--     the format. The following formats are supported
+--     @yyyy-MM-dd\'T\'HH:mm:ssZ@ and @yyyy-MM-dd\'T\'HH:mm:ss.SSSZ@ where
+--     @yyyy@, @MM@, and @dd@ represent the year, month, and day
+--     respectively and @HH@, @mm@, @ss@, and if applicable, @SSS@
+--     represent the hour, month, second and milliseconds respsectively.
+--     @\'T\'@ and @Z@ are constants.
+createFeatureGroup_eventTimeFeatureName :: Lens.Lens' CreateFeatureGroup Prelude.Text
+createFeatureGroup_eventTimeFeatureName = Lens.lens (\CreateFeatureGroup' {eventTimeFeatureName} -> eventTimeFeatureName) (\s@CreateFeatureGroup' {} a -> s {eventTimeFeatureName = a} :: CreateFeatureGroup)
+
+-- | A list of @Feature@ names and types. @Name@ and @Type@ is compulsory per
+-- @Feature@.
+--
+-- Valid feature @FeatureType@s are @Integral@, @Fractional@ and @String@.
+--
+-- @FeatureName@s cannot be any of the following: @is_deleted@,
+-- @write_time@, @api_invocation_time@
+--
+-- You can create up to 2,500 @FeatureDefinition@s per @FeatureGroup@.
+createFeatureGroup_featureDefinitions :: Lens.Lens' CreateFeatureGroup (Prelude.NonEmpty FeatureDefinition)
+createFeatureGroup_featureDefinitions = Lens.lens (\CreateFeatureGroup' {featureDefinitions} -> featureDefinitions) (\s@CreateFeatureGroup' {} a -> s {featureDefinitions = a} :: CreateFeatureGroup) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateFeatureGroup where
+  type
+    AWSResponse CreateFeatureGroup =
+      CreateFeatureGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFeatureGroupResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "FeatureGroupArn")
+      )
+
+instance Prelude.Hashable CreateFeatureGroup where
+  hashWithSalt _salt CreateFeatureGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` offlineStoreConfig
+      `Prelude.hashWithSalt` onlineStoreConfig
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` featureGroupName
+      `Prelude.hashWithSalt` recordIdentifierFeatureName
+      `Prelude.hashWithSalt` eventTimeFeatureName
+      `Prelude.hashWithSalt` featureDefinitions
+
+instance Prelude.NFData CreateFeatureGroup where
+  rnf CreateFeatureGroup' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf offlineStoreConfig
+      `Prelude.seq` Prelude.rnf onlineStoreConfig
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf recordIdentifierFeatureName
+      `Prelude.seq` Prelude.rnf eventTimeFeatureName
+      `Prelude.seq` Prelude.rnf featureDefinitions
+
+instance Data.ToHeaders CreateFeatureGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateFeatureGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFeatureGroup where
+  toJSON CreateFeatureGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("OfflineStoreConfig" Data..=)
+              Prelude.<$> offlineStoreConfig,
+            ("OnlineStoreConfig" Data..=)
+              Prelude.<$> onlineStoreConfig,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName),
+            Prelude.Just
+              ( "RecordIdentifierFeatureName"
+                  Data..= recordIdentifierFeatureName
+              ),
+            Prelude.Just
+              ( "EventTimeFeatureName"
+                  Data..= eventTimeFeatureName
+              ),
+            Prelude.Just
+              ("FeatureDefinitions" Data..= featureDefinitions)
+          ]
+      )
+
+instance Data.ToPath CreateFeatureGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateFeatureGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFeatureGroupResponse' smart constructor.
+data CreateFeatureGroupResponse = CreateFeatureGroupResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the @FeatureGroup@. This is a unique
+    -- identifier for the feature group.
+    featureGroupArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFeatureGroupResponse' 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', 'createFeatureGroupResponse_httpStatus' - The response's http status code.
+--
+-- 'featureGroupArn', 'createFeatureGroupResponse_featureGroupArn' - The Amazon Resource Name (ARN) of the @FeatureGroup@. This is a unique
+-- identifier for the feature group.
+newCreateFeatureGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'featureGroupArn'
+  Prelude.Text ->
+  CreateFeatureGroupResponse
+newCreateFeatureGroupResponse
+  pHttpStatus_
+  pFeatureGroupArn_ =
+    CreateFeatureGroupResponse'
+      { httpStatus =
+          pHttpStatus_,
+        featureGroupArn = pFeatureGroupArn_
+      }
+
+-- | The response's http status code.
+createFeatureGroupResponse_httpStatus :: Lens.Lens' CreateFeatureGroupResponse Prelude.Int
+createFeatureGroupResponse_httpStatus = Lens.lens (\CreateFeatureGroupResponse' {httpStatus} -> httpStatus) (\s@CreateFeatureGroupResponse' {} a -> s {httpStatus = a} :: CreateFeatureGroupResponse)
+
+-- | The Amazon Resource Name (ARN) of the @FeatureGroup@. This is a unique
+-- identifier for the feature group.
+createFeatureGroupResponse_featureGroupArn :: Lens.Lens' CreateFeatureGroupResponse Prelude.Text
+createFeatureGroupResponse_featureGroupArn = Lens.lens (\CreateFeatureGroupResponse' {featureGroupArn} -> featureGroupArn) (\s@CreateFeatureGroupResponse' {} a -> s {featureGroupArn = a} :: CreateFeatureGroupResponse)
+
+instance Prelude.NFData CreateFeatureGroupResponse where
+  rnf CreateFeatureGroupResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf featureGroupArn
diff --git a/gen/Amazonka/SageMaker/CreateFlowDefinition.hs b/gen/Amazonka/SageMaker/CreateFlowDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateFlowDefinition.hs
@@ -0,0 +1,297 @@
+{-# 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.CreateFlowDefinition
+-- 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 flow definition.
+module Amazonka.SageMaker.CreateFlowDefinition
+  ( -- * Creating a Request
+    CreateFlowDefinition (..),
+    newCreateFlowDefinition,
+
+    -- * Request Lenses
+    createFlowDefinition_humanLoopActivationConfig,
+    createFlowDefinition_humanLoopRequestSource,
+    createFlowDefinition_tags,
+    createFlowDefinition_flowDefinitionName,
+    createFlowDefinition_humanLoopConfig,
+    createFlowDefinition_outputConfig,
+    createFlowDefinition_roleArn,
+
+    -- * Destructuring the Response
+    CreateFlowDefinitionResponse (..),
+    newCreateFlowDefinitionResponse,
+
+    -- * Response Lenses
+    createFlowDefinitionResponse_httpStatus,
+    createFlowDefinitionResponse_flowDefinitionArn,
+  )
+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:/ 'newCreateFlowDefinition' smart constructor.
+data CreateFlowDefinition = CreateFlowDefinition'
+  { -- | An object containing information about the events that trigger a human
+    -- workflow.
+    humanLoopActivationConfig :: Prelude.Maybe HumanLoopActivationConfig,
+    -- | Container for configuring the source of human task requests. Use to
+    -- specify if Amazon Rekognition or Amazon Textract is used as an
+    -- integration source.
+    humanLoopRequestSource :: Prelude.Maybe HumanLoopRequestSource,
+    -- | An array of key-value pairs that contain metadata to help you categorize
+    -- and organize a flow definition. Each tag consists of a key and a value,
+    -- both of which you define.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of your flow definition.
+    flowDefinitionName :: Prelude.Text,
+    -- | An object containing information about the tasks the human reviewers
+    -- will perform.
+    humanLoopConfig :: HumanLoopConfig,
+    -- | An object containing information about where the human review results
+    -- will be uploaded.
+    outputConfig :: FlowDefinitionOutputConfig,
+    -- | The Amazon Resource Name (ARN) of the role needed to call other services
+    -- on your behalf. For example,
+    -- @arn:aws:iam::1234567890:role\/service-role\/AmazonSageMaker-ExecutionRole-20180111T151298@.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFlowDefinition' 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:
+--
+-- 'humanLoopActivationConfig', 'createFlowDefinition_humanLoopActivationConfig' - An object containing information about the events that trigger a human
+-- workflow.
+--
+-- 'humanLoopRequestSource', 'createFlowDefinition_humanLoopRequestSource' - Container for configuring the source of human task requests. Use to
+-- specify if Amazon Rekognition or Amazon Textract is used as an
+-- integration source.
+--
+-- 'tags', 'createFlowDefinition_tags' - An array of key-value pairs that contain metadata to help you categorize
+-- and organize a flow definition. Each tag consists of a key and a value,
+-- both of which you define.
+--
+-- 'flowDefinitionName', 'createFlowDefinition_flowDefinitionName' - The name of your flow definition.
+--
+-- 'humanLoopConfig', 'createFlowDefinition_humanLoopConfig' - An object containing information about the tasks the human reviewers
+-- will perform.
+--
+-- 'outputConfig', 'createFlowDefinition_outputConfig' - An object containing information about where the human review results
+-- will be uploaded.
+--
+-- 'roleArn', 'createFlowDefinition_roleArn' - The Amazon Resource Name (ARN) of the role needed to call other services
+-- on your behalf. For example,
+-- @arn:aws:iam::1234567890:role\/service-role\/AmazonSageMaker-ExecutionRole-20180111T151298@.
+newCreateFlowDefinition ::
+  -- | 'flowDefinitionName'
+  Prelude.Text ->
+  -- | 'humanLoopConfig'
+  HumanLoopConfig ->
+  -- | 'outputConfig'
+  FlowDefinitionOutputConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateFlowDefinition
+newCreateFlowDefinition
+  pFlowDefinitionName_
+  pHumanLoopConfig_
+  pOutputConfig_
+  pRoleArn_ =
+    CreateFlowDefinition'
+      { humanLoopActivationConfig =
+          Prelude.Nothing,
+        humanLoopRequestSource = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        flowDefinitionName = pFlowDefinitionName_,
+        humanLoopConfig = pHumanLoopConfig_,
+        outputConfig = pOutputConfig_,
+        roleArn = pRoleArn_
+      }
+
+-- | An object containing information about the events that trigger a human
+-- workflow.
+createFlowDefinition_humanLoopActivationConfig :: Lens.Lens' CreateFlowDefinition (Prelude.Maybe HumanLoopActivationConfig)
+createFlowDefinition_humanLoopActivationConfig = Lens.lens (\CreateFlowDefinition' {humanLoopActivationConfig} -> humanLoopActivationConfig) (\s@CreateFlowDefinition' {} a -> s {humanLoopActivationConfig = a} :: CreateFlowDefinition)
+
+-- | Container for configuring the source of human task requests. Use to
+-- specify if Amazon Rekognition or Amazon Textract is used as an
+-- integration source.
+createFlowDefinition_humanLoopRequestSource :: Lens.Lens' CreateFlowDefinition (Prelude.Maybe HumanLoopRequestSource)
+createFlowDefinition_humanLoopRequestSource = Lens.lens (\CreateFlowDefinition' {humanLoopRequestSource} -> humanLoopRequestSource) (\s@CreateFlowDefinition' {} a -> s {humanLoopRequestSource = a} :: CreateFlowDefinition)
+
+-- | An array of key-value pairs that contain metadata to help you categorize
+-- and organize a flow definition. Each tag consists of a key and a value,
+-- both of which you define.
+createFlowDefinition_tags :: Lens.Lens' CreateFlowDefinition (Prelude.Maybe [Tag])
+createFlowDefinition_tags = Lens.lens (\CreateFlowDefinition' {tags} -> tags) (\s@CreateFlowDefinition' {} a -> s {tags = a} :: CreateFlowDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of your flow definition.
+createFlowDefinition_flowDefinitionName :: Lens.Lens' CreateFlowDefinition Prelude.Text
+createFlowDefinition_flowDefinitionName = Lens.lens (\CreateFlowDefinition' {flowDefinitionName} -> flowDefinitionName) (\s@CreateFlowDefinition' {} a -> s {flowDefinitionName = a} :: CreateFlowDefinition)
+
+-- | An object containing information about the tasks the human reviewers
+-- will perform.
+createFlowDefinition_humanLoopConfig :: Lens.Lens' CreateFlowDefinition HumanLoopConfig
+createFlowDefinition_humanLoopConfig = Lens.lens (\CreateFlowDefinition' {humanLoopConfig} -> humanLoopConfig) (\s@CreateFlowDefinition' {} a -> s {humanLoopConfig = a} :: CreateFlowDefinition)
+
+-- | An object containing information about where the human review results
+-- will be uploaded.
+createFlowDefinition_outputConfig :: Lens.Lens' CreateFlowDefinition FlowDefinitionOutputConfig
+createFlowDefinition_outputConfig = Lens.lens (\CreateFlowDefinition' {outputConfig} -> outputConfig) (\s@CreateFlowDefinition' {} a -> s {outputConfig = a} :: CreateFlowDefinition)
+
+-- | The Amazon Resource Name (ARN) of the role needed to call other services
+-- on your behalf. For example,
+-- @arn:aws:iam::1234567890:role\/service-role\/AmazonSageMaker-ExecutionRole-20180111T151298@.
+createFlowDefinition_roleArn :: Lens.Lens' CreateFlowDefinition Prelude.Text
+createFlowDefinition_roleArn = Lens.lens (\CreateFlowDefinition' {roleArn} -> roleArn) (\s@CreateFlowDefinition' {} a -> s {roleArn = a} :: CreateFlowDefinition)
+
+instance Core.AWSRequest CreateFlowDefinition where
+  type
+    AWSResponse CreateFlowDefinition =
+      CreateFlowDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFlowDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "FlowDefinitionArn")
+      )
+
+instance Prelude.Hashable CreateFlowDefinition where
+  hashWithSalt _salt CreateFlowDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` humanLoopActivationConfig
+      `Prelude.hashWithSalt` humanLoopRequestSource
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` flowDefinitionName
+      `Prelude.hashWithSalt` humanLoopConfig
+      `Prelude.hashWithSalt` outputConfig
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateFlowDefinition where
+  rnf CreateFlowDefinition' {..} =
+    Prelude.rnf humanLoopActivationConfig
+      `Prelude.seq` Prelude.rnf humanLoopRequestSource
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf flowDefinitionName
+      `Prelude.seq` Prelude.rnf humanLoopConfig
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateFlowDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateFlowDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFlowDefinition where
+  toJSON CreateFlowDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HumanLoopActivationConfig" Data..=)
+              Prelude.<$> humanLoopActivationConfig,
+            ("HumanLoopRequestSource" Data..=)
+              Prelude.<$> humanLoopRequestSource,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("FlowDefinitionName" Data..= flowDefinitionName),
+            Prelude.Just
+              ("HumanLoopConfig" Data..= humanLoopConfig),
+            Prelude.Just ("OutputConfig" Data..= outputConfig),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateFlowDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateFlowDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFlowDefinitionResponse' smart constructor.
+data CreateFlowDefinitionResponse = CreateFlowDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the flow definition you create.
+    flowDefinitionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFlowDefinitionResponse' 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', 'createFlowDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'flowDefinitionArn', 'createFlowDefinitionResponse_flowDefinitionArn' - The Amazon Resource Name (ARN) of the flow definition you create.
+newCreateFlowDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'flowDefinitionArn'
+  Prelude.Text ->
+  CreateFlowDefinitionResponse
+newCreateFlowDefinitionResponse
+  pHttpStatus_
+  pFlowDefinitionArn_ =
+    CreateFlowDefinitionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        flowDefinitionArn = pFlowDefinitionArn_
+      }
+
+-- | The response's http status code.
+createFlowDefinitionResponse_httpStatus :: Lens.Lens' CreateFlowDefinitionResponse Prelude.Int
+createFlowDefinitionResponse_httpStatus = Lens.lens (\CreateFlowDefinitionResponse' {httpStatus} -> httpStatus) (\s@CreateFlowDefinitionResponse' {} a -> s {httpStatus = a} :: CreateFlowDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the flow definition you create.
+createFlowDefinitionResponse_flowDefinitionArn :: Lens.Lens' CreateFlowDefinitionResponse Prelude.Text
+createFlowDefinitionResponse_flowDefinitionArn = Lens.lens (\CreateFlowDefinitionResponse' {flowDefinitionArn} -> flowDefinitionArn) (\s@CreateFlowDefinitionResponse' {} a -> s {flowDefinitionArn = a} :: CreateFlowDefinitionResponse)
+
+instance Prelude.NFData CreateFlowDefinitionResponse where
+  rnf CreateFlowDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf flowDefinitionArn
diff --git a/gen/Amazonka/SageMaker/CreateHub.hs b/gen/Amazonka/SageMaker/CreateHub.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateHub.hs
@@ -0,0 +1,241 @@
+{-# 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.CreateHub
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a hub.
+module Amazonka.SageMaker.CreateHub
+  ( -- * Creating a Request
+    CreateHub (..),
+    newCreateHub,
+
+    -- * Request Lenses
+    createHub_hubDisplayName,
+    createHub_hubSearchKeywords,
+    createHub_s3StorageConfig,
+    createHub_tags,
+    createHub_hubName,
+    createHub_hubDescription,
+
+    -- * Destructuring the Response
+    CreateHubResponse (..),
+    newCreateHubResponse,
+
+    -- * Response Lenses
+    createHubResponse_httpStatus,
+    createHubResponse_hubArn,
+  )
+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:/ 'newCreateHub' smart constructor.
+data CreateHub = CreateHub'
+  { -- | The display name of the hub.
+    hubDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords for the hub.
+    hubSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The Amazon S3 storage configuration for the hub.
+    s3StorageConfig :: Prelude.Maybe HubS3StorageConfig,
+    -- | Any tags to associate with the hub.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the hub to create.
+    hubName :: Prelude.Text,
+    -- | A description of the hub.
+    hubDescription :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHub' 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:
+--
+-- 'hubDisplayName', 'createHub_hubDisplayName' - The display name of the hub.
+--
+-- 'hubSearchKeywords', 'createHub_hubSearchKeywords' - The searchable keywords for the hub.
+--
+-- 's3StorageConfig', 'createHub_s3StorageConfig' - The Amazon S3 storage configuration for the hub.
+--
+-- 'tags', 'createHub_tags' - Any tags to associate with the hub.
+--
+-- 'hubName', 'createHub_hubName' - The name of the hub to create.
+--
+-- 'hubDescription', 'createHub_hubDescription' - A description of the hub.
+newCreateHub ::
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubDescription'
+  Prelude.Text ->
+  CreateHub
+newCreateHub pHubName_ pHubDescription_ =
+  CreateHub'
+    { hubDisplayName = Prelude.Nothing,
+      hubSearchKeywords = Prelude.Nothing,
+      s3StorageConfig = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      hubName = pHubName_,
+      hubDescription = pHubDescription_
+    }
+
+-- | The display name of the hub.
+createHub_hubDisplayName :: Lens.Lens' CreateHub (Prelude.Maybe Prelude.Text)
+createHub_hubDisplayName = Lens.lens (\CreateHub' {hubDisplayName} -> hubDisplayName) (\s@CreateHub' {} a -> s {hubDisplayName = a} :: CreateHub)
+
+-- | The searchable keywords for the hub.
+createHub_hubSearchKeywords :: Lens.Lens' CreateHub (Prelude.Maybe [Prelude.Text])
+createHub_hubSearchKeywords = Lens.lens (\CreateHub' {hubSearchKeywords} -> hubSearchKeywords) (\s@CreateHub' {} a -> s {hubSearchKeywords = a} :: CreateHub) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon S3 storage configuration for the hub.
+createHub_s3StorageConfig :: Lens.Lens' CreateHub (Prelude.Maybe HubS3StorageConfig)
+createHub_s3StorageConfig = Lens.lens (\CreateHub' {s3StorageConfig} -> s3StorageConfig) (\s@CreateHub' {} a -> s {s3StorageConfig = a} :: CreateHub)
+
+-- | Any tags to associate with the hub.
+createHub_tags :: Lens.Lens' CreateHub (Prelude.Maybe [Tag])
+createHub_tags = Lens.lens (\CreateHub' {tags} -> tags) (\s@CreateHub' {} a -> s {tags = a} :: CreateHub) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the hub to create.
+createHub_hubName :: Lens.Lens' CreateHub Prelude.Text
+createHub_hubName = Lens.lens (\CreateHub' {hubName} -> hubName) (\s@CreateHub' {} a -> s {hubName = a} :: CreateHub)
+
+-- | A description of the hub.
+createHub_hubDescription :: Lens.Lens' CreateHub Prelude.Text
+createHub_hubDescription = Lens.lens (\CreateHub' {hubDescription} -> hubDescription) (\s@CreateHub' {} a -> s {hubDescription = a} :: CreateHub)
+
+instance Core.AWSRequest CreateHub where
+  type AWSResponse CreateHub = CreateHubResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateHubResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HubArn")
+      )
+
+instance Prelude.Hashable CreateHub where
+  hashWithSalt _salt CreateHub' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubDisplayName
+      `Prelude.hashWithSalt` hubSearchKeywords
+      `Prelude.hashWithSalt` s3StorageConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubDescription
+
+instance Prelude.NFData CreateHub where
+  rnf CreateHub' {..} =
+    Prelude.rnf hubDisplayName
+      `Prelude.seq` Prelude.rnf hubSearchKeywords
+      `Prelude.seq` Prelude.rnf s3StorageConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubDescription
+
+instance Data.ToHeaders CreateHub where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateHub" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateHub where
+  toJSON CreateHub' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HubDisplayName" Data..=)
+              Prelude.<$> hubDisplayName,
+            ("HubSearchKeywords" Data..=)
+              Prelude.<$> hubSearchKeywords,
+            ("S3StorageConfig" Data..=)
+              Prelude.<$> s3StorageConfig,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("HubName" Data..= hubName),
+            Prelude.Just
+              ("HubDescription" Data..= hubDescription)
+          ]
+      )
+
+instance Data.ToPath CreateHub where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateHub where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateHubResponse' smart constructor.
+data CreateHubResponse = CreateHubResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the hub.
+    hubArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHubResponse' 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', 'createHubResponse_httpStatus' - The response's http status code.
+--
+-- 'hubArn', 'createHubResponse_hubArn' - The Amazon Resource Name (ARN) of the hub.
+newCreateHubResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hubArn'
+  Prelude.Text ->
+  CreateHubResponse
+newCreateHubResponse pHttpStatus_ pHubArn_ =
+  CreateHubResponse'
+    { httpStatus = pHttpStatus_,
+      hubArn = pHubArn_
+    }
+
+-- | The response's http status code.
+createHubResponse_httpStatus :: Lens.Lens' CreateHubResponse Prelude.Int
+createHubResponse_httpStatus = Lens.lens (\CreateHubResponse' {httpStatus} -> httpStatus) (\s@CreateHubResponse' {} a -> s {httpStatus = a} :: CreateHubResponse)
+
+-- | The Amazon Resource Name (ARN) of the hub.
+createHubResponse_hubArn :: Lens.Lens' CreateHubResponse Prelude.Text
+createHubResponse_hubArn = Lens.lens (\CreateHubResponse' {hubArn} -> hubArn) (\s@CreateHubResponse' {} a -> s {hubArn = a} :: CreateHubResponse)
+
+instance Prelude.NFData CreateHubResponse where
+  rnf CreateHubResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubArn
diff --git a/gen/Amazonka/SageMaker/CreateHumanTaskUi.hs b/gen/Amazonka/SageMaker/CreateHumanTaskUi.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateHumanTaskUi.hs
@@ -0,0 +1,216 @@
+{-# 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.CreateHumanTaskUi
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Defines the settings you will use for the human review workflow user
+-- interface. Reviewers will see a three-panel interface with an
+-- instruction area, the item to review, and an input area.
+module Amazonka.SageMaker.CreateHumanTaskUi
+  ( -- * Creating a Request
+    CreateHumanTaskUi (..),
+    newCreateHumanTaskUi,
+
+    -- * Request Lenses
+    createHumanTaskUi_tags,
+    createHumanTaskUi_humanTaskUiName,
+    createHumanTaskUi_uiTemplate,
+
+    -- * Destructuring the Response
+    CreateHumanTaskUiResponse (..),
+    newCreateHumanTaskUiResponse,
+
+    -- * Response Lenses
+    createHumanTaskUiResponse_httpStatus,
+    createHumanTaskUiResponse_humanTaskUiArn,
+  )
+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:/ 'newCreateHumanTaskUi' smart constructor.
+data CreateHumanTaskUi = CreateHumanTaskUi'
+  { -- | An array of key-value pairs that contain metadata to help you categorize
+    -- and organize a human review workflow user interface. Each tag consists
+    -- of a key and a value, both of which you define.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the user interface you are creating.
+    humanTaskUiName :: Prelude.Text,
+    uiTemplate :: UiTemplate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHumanTaskUi' 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:
+--
+-- 'tags', 'createHumanTaskUi_tags' - An array of key-value pairs that contain metadata to help you categorize
+-- and organize a human review workflow user interface. Each tag consists
+-- of a key and a value, both of which you define.
+--
+-- 'humanTaskUiName', 'createHumanTaskUi_humanTaskUiName' - The name of the user interface you are creating.
+--
+-- 'uiTemplate', 'createHumanTaskUi_uiTemplate' - Undocumented member.
+newCreateHumanTaskUi ::
+  -- | 'humanTaskUiName'
+  Prelude.Text ->
+  -- | 'uiTemplate'
+  UiTemplate ->
+  CreateHumanTaskUi
+newCreateHumanTaskUi pHumanTaskUiName_ pUiTemplate_ =
+  CreateHumanTaskUi'
+    { tags = Prelude.Nothing,
+      humanTaskUiName = pHumanTaskUiName_,
+      uiTemplate = pUiTemplate_
+    }
+
+-- | An array of key-value pairs that contain metadata to help you categorize
+-- and organize a human review workflow user interface. Each tag consists
+-- of a key and a value, both of which you define.
+createHumanTaskUi_tags :: Lens.Lens' CreateHumanTaskUi (Prelude.Maybe [Tag])
+createHumanTaskUi_tags = Lens.lens (\CreateHumanTaskUi' {tags} -> tags) (\s@CreateHumanTaskUi' {} a -> s {tags = a} :: CreateHumanTaskUi) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the user interface you are creating.
+createHumanTaskUi_humanTaskUiName :: Lens.Lens' CreateHumanTaskUi Prelude.Text
+createHumanTaskUi_humanTaskUiName = Lens.lens (\CreateHumanTaskUi' {humanTaskUiName} -> humanTaskUiName) (\s@CreateHumanTaskUi' {} a -> s {humanTaskUiName = a} :: CreateHumanTaskUi)
+
+-- | Undocumented member.
+createHumanTaskUi_uiTemplate :: Lens.Lens' CreateHumanTaskUi UiTemplate
+createHumanTaskUi_uiTemplate = Lens.lens (\CreateHumanTaskUi' {uiTemplate} -> uiTemplate) (\s@CreateHumanTaskUi' {} a -> s {uiTemplate = a} :: CreateHumanTaskUi)
+
+instance Core.AWSRequest CreateHumanTaskUi where
+  type
+    AWSResponse CreateHumanTaskUi =
+      CreateHumanTaskUiResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateHumanTaskUiResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HumanTaskUiArn")
+      )
+
+instance Prelude.Hashable CreateHumanTaskUi where
+  hashWithSalt _salt CreateHumanTaskUi' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` humanTaskUiName
+      `Prelude.hashWithSalt` uiTemplate
+
+instance Prelude.NFData CreateHumanTaskUi where
+  rnf CreateHumanTaskUi' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf humanTaskUiName
+      `Prelude.seq` Prelude.rnf uiTemplate
+
+instance Data.ToHeaders CreateHumanTaskUi where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateHumanTaskUi" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateHumanTaskUi where
+  toJSON CreateHumanTaskUi' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("HumanTaskUiName" Data..= humanTaskUiName),
+            Prelude.Just ("UiTemplate" Data..= uiTemplate)
+          ]
+      )
+
+instance Data.ToPath CreateHumanTaskUi where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateHumanTaskUi where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateHumanTaskUiResponse' smart constructor.
+data CreateHumanTaskUiResponse = CreateHumanTaskUiResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the human review workflow user
+    -- interface you create.
+    humanTaskUiArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHumanTaskUiResponse' 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', 'createHumanTaskUiResponse_httpStatus' - The response's http status code.
+--
+-- 'humanTaskUiArn', 'createHumanTaskUiResponse_humanTaskUiArn' - The Amazon Resource Name (ARN) of the human review workflow user
+-- interface you create.
+newCreateHumanTaskUiResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'humanTaskUiArn'
+  Prelude.Text ->
+  CreateHumanTaskUiResponse
+newCreateHumanTaskUiResponse
+  pHttpStatus_
+  pHumanTaskUiArn_ =
+    CreateHumanTaskUiResponse'
+      { httpStatus =
+          pHttpStatus_,
+        humanTaskUiArn = pHumanTaskUiArn_
+      }
+
+-- | The response's http status code.
+createHumanTaskUiResponse_httpStatus :: Lens.Lens' CreateHumanTaskUiResponse Prelude.Int
+createHumanTaskUiResponse_httpStatus = Lens.lens (\CreateHumanTaskUiResponse' {httpStatus} -> httpStatus) (\s@CreateHumanTaskUiResponse' {} a -> s {httpStatus = a} :: CreateHumanTaskUiResponse)
+
+-- | The Amazon Resource Name (ARN) of the human review workflow user
+-- interface you create.
+createHumanTaskUiResponse_humanTaskUiArn :: Lens.Lens' CreateHumanTaskUiResponse Prelude.Text
+createHumanTaskUiResponse_humanTaskUiArn = Lens.lens (\CreateHumanTaskUiResponse' {humanTaskUiArn} -> humanTaskUiArn) (\s@CreateHumanTaskUiResponse' {} a -> s {humanTaskUiArn = a} :: CreateHumanTaskUiResponse)
+
+instance Prelude.NFData CreateHumanTaskUiResponse where
+  rnf CreateHumanTaskUiResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf humanTaskUiArn
diff --git a/gen/Amazonka/SageMaker/CreateHyperParameterTuningJob.hs b/gen/Amazonka/SageMaker/CreateHyperParameterTuningJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateHyperParameterTuningJob.hs
@@ -0,0 +1,386 @@
+{-# 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.CreateHyperParameterTuningJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a hyperparameter tuning job. A hyperparameter tuning job finds
+-- the best version of a model by running many training jobs on your
+-- dataset using the algorithm you choose and values for hyperparameters
+-- within ranges that you specify. It then chooses the hyperparameter
+-- values that result in a model that performs the best, as measured by an
+-- objective metric that you choose.
+--
+-- A hyperparameter tuning job automatically creates Amazon SageMaker
+-- experiments, trials, and trial components for each training job that it
+-- runs. You can view these entities in Amazon SageMaker Studio. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/experiments-view-compare.html#experiments-view View Experiments, Trials, and Trial Components>.
+--
+-- Do not include any security-sensitive information including account
+-- access IDs, secrets or tokens in any hyperparameter field. If the use of
+-- security-sensitive credentials are detected, SageMaker will reject your
+-- training job request and return an exception error.
+module Amazonka.SageMaker.CreateHyperParameterTuningJob
+  ( -- * Creating a Request
+    CreateHyperParameterTuningJob (..),
+    newCreateHyperParameterTuningJob,
+
+    -- * Request Lenses
+    createHyperParameterTuningJob_tags,
+    createHyperParameterTuningJob_trainingJobDefinition,
+    createHyperParameterTuningJob_trainingJobDefinitions,
+    createHyperParameterTuningJob_warmStartConfig,
+    createHyperParameterTuningJob_hyperParameterTuningJobName,
+    createHyperParameterTuningJob_hyperParameterTuningJobConfig,
+
+    -- * Destructuring the Response
+    CreateHyperParameterTuningJobResponse (..),
+    newCreateHyperParameterTuningJobResponse,
+
+    -- * Response Lenses
+    createHyperParameterTuningJobResponse_httpStatus,
+    createHyperParameterTuningJobResponse_hyperParameterTuningJobArn,
+  )
+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:/ 'newCreateHyperParameterTuningJob' smart constructor.
+data CreateHyperParameterTuningJob = CreateHyperParameterTuningJob'
+  { -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    --
+    -- Tags that you specify for the tuning job are also added to all training
+    -- jobs that the tuning job launches.
+    tags :: Prelude.Maybe [Tag],
+    -- | The HyperParameterTrainingJobDefinition object that describes the
+    -- training jobs that this tuning job launches, including static
+    -- hyperparameters, input data configuration, output data configuration,
+    -- resource configuration, and stopping condition.
+    trainingJobDefinition :: Prelude.Maybe HyperParameterTrainingJobDefinition,
+    -- | A list of the HyperParameterTrainingJobDefinition objects launched for
+    -- this tuning job.
+    trainingJobDefinitions :: Prelude.Maybe (Prelude.NonEmpty HyperParameterTrainingJobDefinition),
+    -- | Specifies the configuration for starting the hyperparameter tuning job
+    -- using one or more previous tuning jobs as a starting point. The results
+    -- of previous tuning jobs are used to inform which combinations of
+    -- hyperparameters to search over in the new tuning job.
+    --
+    -- All training jobs launched by the new hyperparameter tuning job are
+    -- evaluated by using the objective metric. If you specify
+    -- @IDENTICAL_DATA_AND_ALGORITHM@ as the @WarmStartType@ value for the warm
+    -- start configuration, the training job that performs the best in the new
+    -- tuning job is compared to the best training jobs from the parent tuning
+    -- jobs. From these, the training job that performs the best as measured by
+    -- the objective metric is returned as the overall best training job.
+    --
+    -- All training jobs launched by parent hyperparameter tuning jobs and the
+    -- new hyperparameter tuning jobs count against the limit of training jobs
+    -- for the tuning job.
+    warmStartConfig :: Prelude.Maybe HyperParameterTuningJobWarmStartConfig,
+    -- | The name of the tuning job. This name is the prefix for the names of all
+    -- training jobs that this tuning job launches. The name must be unique
+    -- within the same Amazon Web Services account and Amazon Web Services
+    -- Region. The name must have 1 to 32 characters. Valid characters are a-z,
+    -- A-Z, 0-9, and : + = \@ _ % - (hyphen). The name is not case sensitive.
+    hyperParameterTuningJobName :: Prelude.Text,
+    -- | The HyperParameterTuningJobConfig object that describes the tuning job,
+    -- including the search strategy, the objective metric used to evaluate
+    -- training jobs, ranges of parameters to search, and resource limits for
+    -- the tuning job. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+    hyperParameterTuningJobConfig :: HyperParameterTuningJobConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHyperParameterTuningJob' 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:
+--
+-- 'tags', 'createHyperParameterTuningJob_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- Tags that you specify for the tuning job are also added to all training
+-- jobs that the tuning job launches.
+--
+-- 'trainingJobDefinition', 'createHyperParameterTuningJob_trainingJobDefinition' - The HyperParameterTrainingJobDefinition object that describes the
+-- training jobs that this tuning job launches, including static
+-- hyperparameters, input data configuration, output data configuration,
+-- resource configuration, and stopping condition.
+--
+-- 'trainingJobDefinitions', 'createHyperParameterTuningJob_trainingJobDefinitions' - A list of the HyperParameterTrainingJobDefinition objects launched for
+-- this tuning job.
+--
+-- 'warmStartConfig', 'createHyperParameterTuningJob_warmStartConfig' - Specifies the configuration for starting the hyperparameter tuning job
+-- using one or more previous tuning jobs as a starting point. The results
+-- of previous tuning jobs are used to inform which combinations of
+-- hyperparameters to search over in the new tuning job.
+--
+-- All training jobs launched by the new hyperparameter tuning job are
+-- evaluated by using the objective metric. If you specify
+-- @IDENTICAL_DATA_AND_ALGORITHM@ as the @WarmStartType@ value for the warm
+-- start configuration, the training job that performs the best in the new
+-- tuning job is compared to the best training jobs from the parent tuning
+-- jobs. From these, the training job that performs the best as measured by
+-- the objective metric is returned as the overall best training job.
+--
+-- All training jobs launched by parent hyperparameter tuning jobs and the
+-- new hyperparameter tuning jobs count against the limit of training jobs
+-- for the tuning job.
+--
+-- 'hyperParameterTuningJobName', 'createHyperParameterTuningJob_hyperParameterTuningJobName' - The name of the tuning job. This name is the prefix for the names of all
+-- training jobs that this tuning job launches. The name must be unique
+-- within the same Amazon Web Services account and Amazon Web Services
+-- Region. The name must have 1 to 32 characters. Valid characters are a-z,
+-- A-Z, 0-9, and : + = \@ _ % - (hyphen). The name is not case sensitive.
+--
+-- 'hyperParameterTuningJobConfig', 'createHyperParameterTuningJob_hyperParameterTuningJobConfig' - The HyperParameterTuningJobConfig object that describes the tuning job,
+-- including the search strategy, the objective metric used to evaluate
+-- training jobs, ranges of parameters to search, and resource limits for
+-- the tuning job. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+newCreateHyperParameterTuningJob ::
+  -- | 'hyperParameterTuningJobName'
+  Prelude.Text ->
+  -- | 'hyperParameterTuningJobConfig'
+  HyperParameterTuningJobConfig ->
+  CreateHyperParameterTuningJob
+newCreateHyperParameterTuningJob
+  pHyperParameterTuningJobName_
+  pHyperParameterTuningJobConfig_ =
+    CreateHyperParameterTuningJob'
+      { tags =
+          Prelude.Nothing,
+        trainingJobDefinition = Prelude.Nothing,
+        trainingJobDefinitions = Prelude.Nothing,
+        warmStartConfig = Prelude.Nothing,
+        hyperParameterTuningJobName =
+          pHyperParameterTuningJobName_,
+        hyperParameterTuningJobConfig =
+          pHyperParameterTuningJobConfig_
+      }
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- Tags that you specify for the tuning job are also added to all training
+-- jobs that the tuning job launches.
+createHyperParameterTuningJob_tags :: Lens.Lens' CreateHyperParameterTuningJob (Prelude.Maybe [Tag])
+createHyperParameterTuningJob_tags = Lens.lens (\CreateHyperParameterTuningJob' {tags} -> tags) (\s@CreateHyperParameterTuningJob' {} a -> s {tags = a} :: CreateHyperParameterTuningJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The HyperParameterTrainingJobDefinition object that describes the
+-- training jobs that this tuning job launches, including static
+-- hyperparameters, input data configuration, output data configuration,
+-- resource configuration, and stopping condition.
+createHyperParameterTuningJob_trainingJobDefinition :: Lens.Lens' CreateHyperParameterTuningJob (Prelude.Maybe HyperParameterTrainingJobDefinition)
+createHyperParameterTuningJob_trainingJobDefinition = Lens.lens (\CreateHyperParameterTuningJob' {trainingJobDefinition} -> trainingJobDefinition) (\s@CreateHyperParameterTuningJob' {} a -> s {trainingJobDefinition = a} :: CreateHyperParameterTuningJob)
+
+-- | A list of the HyperParameterTrainingJobDefinition objects launched for
+-- this tuning job.
+createHyperParameterTuningJob_trainingJobDefinitions :: Lens.Lens' CreateHyperParameterTuningJob (Prelude.Maybe (Prelude.NonEmpty HyperParameterTrainingJobDefinition))
+createHyperParameterTuningJob_trainingJobDefinitions = Lens.lens (\CreateHyperParameterTuningJob' {trainingJobDefinitions} -> trainingJobDefinitions) (\s@CreateHyperParameterTuningJob' {} a -> s {trainingJobDefinitions = a} :: CreateHyperParameterTuningJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the configuration for starting the hyperparameter tuning job
+-- using one or more previous tuning jobs as a starting point. The results
+-- of previous tuning jobs are used to inform which combinations of
+-- hyperparameters to search over in the new tuning job.
+--
+-- All training jobs launched by the new hyperparameter tuning job are
+-- evaluated by using the objective metric. If you specify
+-- @IDENTICAL_DATA_AND_ALGORITHM@ as the @WarmStartType@ value for the warm
+-- start configuration, the training job that performs the best in the new
+-- tuning job is compared to the best training jobs from the parent tuning
+-- jobs. From these, the training job that performs the best as measured by
+-- the objective metric is returned as the overall best training job.
+--
+-- All training jobs launched by parent hyperparameter tuning jobs and the
+-- new hyperparameter tuning jobs count against the limit of training jobs
+-- for the tuning job.
+createHyperParameterTuningJob_warmStartConfig :: Lens.Lens' CreateHyperParameterTuningJob (Prelude.Maybe HyperParameterTuningJobWarmStartConfig)
+createHyperParameterTuningJob_warmStartConfig = Lens.lens (\CreateHyperParameterTuningJob' {warmStartConfig} -> warmStartConfig) (\s@CreateHyperParameterTuningJob' {} a -> s {warmStartConfig = a} :: CreateHyperParameterTuningJob)
+
+-- | The name of the tuning job. This name is the prefix for the names of all
+-- training jobs that this tuning job launches. The name must be unique
+-- within the same Amazon Web Services account and Amazon Web Services
+-- Region. The name must have 1 to 32 characters. Valid characters are a-z,
+-- A-Z, 0-9, and : + = \@ _ % - (hyphen). The name is not case sensitive.
+createHyperParameterTuningJob_hyperParameterTuningJobName :: Lens.Lens' CreateHyperParameterTuningJob Prelude.Text
+createHyperParameterTuningJob_hyperParameterTuningJobName = Lens.lens (\CreateHyperParameterTuningJob' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@CreateHyperParameterTuningJob' {} a -> s {hyperParameterTuningJobName = a} :: CreateHyperParameterTuningJob)
+
+-- | The HyperParameterTuningJobConfig object that describes the tuning job,
+-- including the search strategy, the objective metric used to evaluate
+-- training jobs, ranges of parameters to search, and resource limits for
+-- the tuning job. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+createHyperParameterTuningJob_hyperParameterTuningJobConfig :: Lens.Lens' CreateHyperParameterTuningJob HyperParameterTuningJobConfig
+createHyperParameterTuningJob_hyperParameterTuningJobConfig = Lens.lens (\CreateHyperParameterTuningJob' {hyperParameterTuningJobConfig} -> hyperParameterTuningJobConfig) (\s@CreateHyperParameterTuningJob' {} a -> s {hyperParameterTuningJobConfig = a} :: CreateHyperParameterTuningJob)
+
+instance
+  Core.AWSRequest
+    CreateHyperParameterTuningJob
+  where
+  type
+    AWSResponse CreateHyperParameterTuningJob =
+      CreateHyperParameterTuningJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateHyperParameterTuningJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HyperParameterTuningJobArn")
+      )
+
+instance
+  Prelude.Hashable
+    CreateHyperParameterTuningJob
+  where
+  hashWithSalt _salt CreateHyperParameterTuningJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trainingJobDefinition
+      `Prelude.hashWithSalt` trainingJobDefinitions
+      `Prelude.hashWithSalt` warmStartConfig
+      `Prelude.hashWithSalt` hyperParameterTuningJobName
+      `Prelude.hashWithSalt` hyperParameterTuningJobConfig
+
+instance Prelude.NFData CreateHyperParameterTuningJob where
+  rnf CreateHyperParameterTuningJob' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trainingJobDefinition
+      `Prelude.seq` Prelude.rnf trainingJobDefinitions
+      `Prelude.seq` Prelude.rnf warmStartConfig
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobName
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobConfig
+
+instance Data.ToHeaders CreateHyperParameterTuningJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateHyperParameterTuningJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateHyperParameterTuningJob where
+  toJSON CreateHyperParameterTuningJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            ("TrainingJobDefinition" Data..=)
+              Prelude.<$> trainingJobDefinition,
+            ("TrainingJobDefinitions" Data..=)
+              Prelude.<$> trainingJobDefinitions,
+            ("WarmStartConfig" Data..=)
+              Prelude.<$> warmStartConfig,
+            Prelude.Just
+              ( "HyperParameterTuningJobName"
+                  Data..= hyperParameterTuningJobName
+              ),
+            Prelude.Just
+              ( "HyperParameterTuningJobConfig"
+                  Data..= hyperParameterTuningJobConfig
+              )
+          ]
+      )
+
+instance Data.ToPath CreateHyperParameterTuningJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateHyperParameterTuningJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateHyperParameterTuningJobResponse' smart constructor.
+data CreateHyperParameterTuningJobResponse = CreateHyperParameterTuningJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the tuning job. SageMaker assigns an
+    -- ARN to a hyperparameter tuning job when you create it.
+    hyperParameterTuningJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHyperParameterTuningJobResponse' 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', 'createHyperParameterTuningJobResponse_httpStatus' - The response's http status code.
+--
+-- 'hyperParameterTuningJobArn', 'createHyperParameterTuningJobResponse_hyperParameterTuningJobArn' - The Amazon Resource Name (ARN) of the tuning job. SageMaker assigns an
+-- ARN to a hyperparameter tuning job when you create it.
+newCreateHyperParameterTuningJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hyperParameterTuningJobArn'
+  Prelude.Text ->
+  CreateHyperParameterTuningJobResponse
+newCreateHyperParameterTuningJobResponse
+  pHttpStatus_
+  pHyperParameterTuningJobArn_ =
+    CreateHyperParameterTuningJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        hyperParameterTuningJobArn =
+          pHyperParameterTuningJobArn_
+      }
+
+-- | The response's http status code.
+createHyperParameterTuningJobResponse_httpStatus :: Lens.Lens' CreateHyperParameterTuningJobResponse Prelude.Int
+createHyperParameterTuningJobResponse_httpStatus = Lens.lens (\CreateHyperParameterTuningJobResponse' {httpStatus} -> httpStatus) (\s@CreateHyperParameterTuningJobResponse' {} a -> s {httpStatus = a} :: CreateHyperParameterTuningJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the tuning job. SageMaker assigns an
+-- ARN to a hyperparameter tuning job when you create it.
+createHyperParameterTuningJobResponse_hyperParameterTuningJobArn :: Lens.Lens' CreateHyperParameterTuningJobResponse Prelude.Text
+createHyperParameterTuningJobResponse_hyperParameterTuningJobArn = Lens.lens (\CreateHyperParameterTuningJobResponse' {hyperParameterTuningJobArn} -> hyperParameterTuningJobArn) (\s@CreateHyperParameterTuningJobResponse' {} a -> s {hyperParameterTuningJobArn = a} :: CreateHyperParameterTuningJobResponse)
+
+instance
+  Prelude.NFData
+    CreateHyperParameterTuningJobResponse
+  where
+  rnf CreateHyperParameterTuningJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobArn
diff --git a/gen/Amazonka/SageMaker/CreateImage.hs b/gen/Amazonka/SageMaker/CreateImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateImage.hs
@@ -0,0 +1,231 @@
+{-# 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.CreateImage
+-- 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 custom SageMaker image. A SageMaker image is a set of image
+-- versions. Each image version represents a container image stored in
+-- Amazon Elastic Container Registry (ECR). For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html Bring your own SageMaker image>.
+module Amazonka.SageMaker.CreateImage
+  ( -- * Creating a Request
+    CreateImage (..),
+    newCreateImage,
+
+    -- * Request Lenses
+    createImage_description,
+    createImage_displayName,
+    createImage_tags,
+    createImage_imageName,
+    createImage_roleArn,
+
+    -- * Destructuring the Response
+    CreateImageResponse (..),
+    newCreateImageResponse,
+
+    -- * Response Lenses
+    createImageResponse_imageArn,
+    createImageResponse_httpStatus,
+  )
+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:/ 'newCreateImage' smart constructor.
+data CreateImage = CreateImage'
+  { -- | The description of the image.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the image. If not provided, @ImageName@ is
+    -- displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags to apply to the image.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the image. Must be unique to your account.
+    imageName :: Prelude.Text,
+    -- | The ARN of an IAM role that enables Amazon SageMaker to perform tasks on
+    -- your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateImage' 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:
+--
+-- 'description', 'createImage_description' - The description of the image.
+--
+-- 'displayName', 'createImage_displayName' - The display name of the image. If not provided, @ImageName@ is
+-- displayed.
+--
+-- 'tags', 'createImage_tags' - A list of tags to apply to the image.
+--
+-- 'imageName', 'createImage_imageName' - The name of the image. Must be unique to your account.
+--
+-- 'roleArn', 'createImage_roleArn' - The ARN of an IAM role that enables Amazon SageMaker to perform tasks on
+-- your behalf.
+newCreateImage ::
+  -- | 'imageName'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateImage
+newCreateImage pImageName_ pRoleArn_ =
+  CreateImage'
+    { description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      imageName = pImageName_,
+      roleArn = pRoleArn_
+    }
+
+-- | The description of the image.
+createImage_description :: Lens.Lens' CreateImage (Prelude.Maybe Prelude.Text)
+createImage_description = Lens.lens (\CreateImage' {description} -> description) (\s@CreateImage' {} a -> s {description = a} :: CreateImage)
+
+-- | The display name of the image. If not provided, @ImageName@ is
+-- displayed.
+createImage_displayName :: Lens.Lens' CreateImage (Prelude.Maybe Prelude.Text)
+createImage_displayName = Lens.lens (\CreateImage' {displayName} -> displayName) (\s@CreateImage' {} a -> s {displayName = a} :: CreateImage)
+
+-- | A list of tags to apply to the image.
+createImage_tags :: Lens.Lens' CreateImage (Prelude.Maybe [Tag])
+createImage_tags = Lens.lens (\CreateImage' {tags} -> tags) (\s@CreateImage' {} a -> s {tags = a} :: CreateImage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the image. Must be unique to your account.
+createImage_imageName :: Lens.Lens' CreateImage Prelude.Text
+createImage_imageName = Lens.lens (\CreateImage' {imageName} -> imageName) (\s@CreateImage' {} a -> s {imageName = a} :: CreateImage)
+
+-- | The ARN of an IAM role that enables Amazon SageMaker to perform tasks on
+-- your behalf.
+createImage_roleArn :: Lens.Lens' CreateImage Prelude.Text
+createImage_roleArn = Lens.lens (\CreateImage' {roleArn} -> roleArn) (\s@CreateImage' {} a -> s {roleArn = a} :: CreateImage)
+
+instance Core.AWSRequest CreateImage where
+  type AWSResponse CreateImage = CreateImageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateImageResponse'
+            Prelude.<$> (x Data..?> "ImageArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateImage where
+  hashWithSalt _salt CreateImage' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` imageName
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateImage where
+  rnf CreateImage' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf imageName
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateImage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateImage" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateImage where
+  toJSON CreateImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("DisplayName" Data..=) Prelude.<$> displayName,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ImageName" Data..= imageName),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateImage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateImage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateImageResponse' smart constructor.
+data CreateImageResponse = CreateImageResponse'
+  { -- | The ARN of the image.
+    imageArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateImageResponse' 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:
+--
+-- 'imageArn', 'createImageResponse_imageArn' - The ARN of the image.
+--
+-- 'httpStatus', 'createImageResponse_httpStatus' - The response's http status code.
+newCreateImageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateImageResponse
+newCreateImageResponse pHttpStatus_ =
+  CreateImageResponse'
+    { imageArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the image.
+createImageResponse_imageArn :: Lens.Lens' CreateImageResponse (Prelude.Maybe Prelude.Text)
+createImageResponse_imageArn = Lens.lens (\CreateImageResponse' {imageArn} -> imageArn) (\s@CreateImageResponse' {} a -> s {imageArn = a} :: CreateImageResponse)
+
+-- | The response's http status code.
+createImageResponse_httpStatus :: Lens.Lens' CreateImageResponse Prelude.Int
+createImageResponse_httpStatus = Lens.lens (\CreateImageResponse' {httpStatus} -> httpStatus) (\s@CreateImageResponse' {} a -> s {httpStatus = a} :: CreateImageResponse)
+
+instance Prelude.NFData CreateImageResponse where
+  rnf CreateImageResponse' {..} =
+    Prelude.rnf imageArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateImageVersion.hs b/gen/Amazonka/SageMaker/CreateImageVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateImageVersion.hs
@@ -0,0 +1,407 @@
+{-# 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.CreateImageVersion
+-- 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 version of the SageMaker image specified by @ImageName@. The
+-- version represents the Amazon Elastic Container Registry (ECR) container
+-- image specified by @BaseImage@.
+module Amazonka.SageMaker.CreateImageVersion
+  ( -- * Creating a Request
+    CreateImageVersion (..),
+    newCreateImageVersion,
+
+    -- * Request Lenses
+    createImageVersion_aliases,
+    createImageVersion_horovod,
+    createImageVersion_jobType,
+    createImageVersion_mLFramework,
+    createImageVersion_processor,
+    createImageVersion_programmingLang,
+    createImageVersion_releaseNotes,
+    createImageVersion_vendorGuidance,
+    createImageVersion_baseImage,
+    createImageVersion_clientToken,
+    createImageVersion_imageName,
+
+    -- * Destructuring the Response
+    CreateImageVersionResponse (..),
+    newCreateImageVersionResponse,
+
+    -- * Response Lenses
+    createImageVersionResponse_imageVersionArn,
+    createImageVersionResponse_httpStatus,
+  )
+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:/ 'newCreateImageVersion' smart constructor.
+data CreateImageVersion = CreateImageVersion'
+  { -- | A list of aliases created with the image version.
+    aliases :: Prelude.Maybe [Prelude.Text],
+    -- | Indicates Horovod compatibility.
+    horovod :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates SageMaker job type compatibility.
+    --
+    -- -   @TRAINING@: The image version is compatible with SageMaker training
+    --     jobs.
+    --
+    -- -   @INFERENCE@: The image version is compatible with SageMaker
+    --     inference jobs.
+    --
+    -- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+    --     notebook kernels.
+    jobType :: Prelude.Maybe JobType,
+    -- | The machine learning framework vended in the image version.
+    mLFramework :: Prelude.Maybe Prelude.Text,
+    -- | Indicates CPU or GPU compatibility.
+    --
+    -- -   @CPU@: The image version is compatible with CPU.
+    --
+    -- -   @GPU@: The image version is compatible with GPU.
+    processor :: Prelude.Maybe Processor,
+    -- | The supported programming language and its version.
+    programmingLang :: Prelude.Maybe Prelude.Text,
+    -- | The maintainer description of the image version.
+    releaseNotes :: Prelude.Maybe Prelude.Text,
+    -- | The stability of the image version, specified by the maintainer.
+    --
+    -- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+    --     version stability.
+    --
+    -- -   @STABLE@: The image version is stable.
+    --
+    -- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+    --     image versions that are set to be archived are automatically
+    --     archived after three months.
+    --
+    -- -   @ARCHIVED@: The image version is archived. Archived image versions
+    --     are not searchable and are no longer actively supported.
+    vendorGuidance :: Prelude.Maybe VendorGuidance,
+    -- | The registry path of the container image to use as the starting point
+    -- for this version. The path is an Amazon Elastic Container Registry (ECR)
+    -- URI in the following format:
+    --
+    -- @\<acct-id>.dkr.ecr.\<region>.amazonaws.com\/\<repo-name[:tag] or [\@digest]>@
+    baseImage :: Prelude.Text,
+    -- | A unique ID. If not specified, the Amazon Web Services CLI and Amazon
+    -- Web Services SDKs, such as the SDK for Python (Boto3), add a unique
+    -- value to the call.
+    clientToken :: Prelude.Text,
+    -- | The @ImageName@ of the @Image@ to create a version of.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateImageVersion' 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:
+--
+-- 'aliases', 'createImageVersion_aliases' - A list of aliases created with the image version.
+--
+-- 'horovod', 'createImageVersion_horovod' - Indicates Horovod compatibility.
+--
+-- 'jobType', 'createImageVersion_jobType' - Indicates SageMaker job type compatibility.
+--
+-- -   @TRAINING@: The image version is compatible with SageMaker training
+--     jobs.
+--
+-- -   @INFERENCE@: The image version is compatible with SageMaker
+--     inference jobs.
+--
+-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+--     notebook kernels.
+--
+-- 'mLFramework', 'createImageVersion_mLFramework' - The machine learning framework vended in the image version.
+--
+-- 'processor', 'createImageVersion_processor' - Indicates CPU or GPU compatibility.
+--
+-- -   @CPU@: The image version is compatible with CPU.
+--
+-- -   @GPU@: The image version is compatible with GPU.
+--
+-- 'programmingLang', 'createImageVersion_programmingLang' - The supported programming language and its version.
+--
+-- 'releaseNotes', 'createImageVersion_releaseNotes' - The maintainer description of the image version.
+--
+-- 'vendorGuidance', 'createImageVersion_vendorGuidance' - The stability of the image version, specified by the maintainer.
+--
+-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+--     version stability.
+--
+-- -   @STABLE@: The image version is stable.
+--
+-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+--     image versions that are set to be archived are automatically
+--     archived after three months.
+--
+-- -   @ARCHIVED@: The image version is archived. Archived image versions
+--     are not searchable and are no longer actively supported.
+--
+-- 'baseImage', 'createImageVersion_baseImage' - The registry path of the container image to use as the starting point
+-- for this version. The path is an Amazon Elastic Container Registry (ECR)
+-- URI in the following format:
+--
+-- @\<acct-id>.dkr.ecr.\<region>.amazonaws.com\/\<repo-name[:tag] or [\@digest]>@
+--
+-- 'clientToken', 'createImageVersion_clientToken' - A unique ID. If not specified, the Amazon Web Services CLI and Amazon
+-- Web Services SDKs, such as the SDK for Python (Boto3), add a unique
+-- value to the call.
+--
+-- 'imageName', 'createImageVersion_imageName' - The @ImageName@ of the @Image@ to create a version of.
+newCreateImageVersion ::
+  -- | 'baseImage'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  -- | 'imageName'
+  Prelude.Text ->
+  CreateImageVersion
+newCreateImageVersion
+  pBaseImage_
+  pClientToken_
+  pImageName_ =
+    CreateImageVersion'
+      { aliases = Prelude.Nothing,
+        horovod = Prelude.Nothing,
+        jobType = Prelude.Nothing,
+        mLFramework = Prelude.Nothing,
+        processor = Prelude.Nothing,
+        programmingLang = Prelude.Nothing,
+        releaseNotes = Prelude.Nothing,
+        vendorGuidance = Prelude.Nothing,
+        baseImage = pBaseImage_,
+        clientToken = pClientToken_,
+        imageName = pImageName_
+      }
+
+-- | A list of aliases created with the image version.
+createImageVersion_aliases :: Lens.Lens' CreateImageVersion (Prelude.Maybe [Prelude.Text])
+createImageVersion_aliases = Lens.lens (\CreateImageVersion' {aliases} -> aliases) (\s@CreateImageVersion' {} a -> s {aliases = a} :: CreateImageVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates Horovod compatibility.
+createImageVersion_horovod :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Bool)
+createImageVersion_horovod = Lens.lens (\CreateImageVersion' {horovod} -> horovod) (\s@CreateImageVersion' {} a -> s {horovod = a} :: CreateImageVersion)
+
+-- | Indicates SageMaker job type compatibility.
+--
+-- -   @TRAINING@: The image version is compatible with SageMaker training
+--     jobs.
+--
+-- -   @INFERENCE@: The image version is compatible with SageMaker
+--     inference jobs.
+--
+-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+--     notebook kernels.
+createImageVersion_jobType :: Lens.Lens' CreateImageVersion (Prelude.Maybe JobType)
+createImageVersion_jobType = Lens.lens (\CreateImageVersion' {jobType} -> jobType) (\s@CreateImageVersion' {} a -> s {jobType = a} :: CreateImageVersion)
+
+-- | The machine learning framework vended in the image version.
+createImageVersion_mLFramework :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text)
+createImageVersion_mLFramework = Lens.lens (\CreateImageVersion' {mLFramework} -> mLFramework) (\s@CreateImageVersion' {} a -> s {mLFramework = a} :: CreateImageVersion)
+
+-- | Indicates CPU or GPU compatibility.
+--
+-- -   @CPU@: The image version is compatible with CPU.
+--
+-- -   @GPU@: The image version is compatible with GPU.
+createImageVersion_processor :: Lens.Lens' CreateImageVersion (Prelude.Maybe Processor)
+createImageVersion_processor = Lens.lens (\CreateImageVersion' {processor} -> processor) (\s@CreateImageVersion' {} a -> s {processor = a} :: CreateImageVersion)
+
+-- | The supported programming language and its version.
+createImageVersion_programmingLang :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text)
+createImageVersion_programmingLang = Lens.lens (\CreateImageVersion' {programmingLang} -> programmingLang) (\s@CreateImageVersion' {} a -> s {programmingLang = a} :: CreateImageVersion)
+
+-- | The maintainer description of the image version.
+createImageVersion_releaseNotes :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text)
+createImageVersion_releaseNotes = Lens.lens (\CreateImageVersion' {releaseNotes} -> releaseNotes) (\s@CreateImageVersion' {} a -> s {releaseNotes = a} :: CreateImageVersion)
+
+-- | The stability of the image version, specified by the maintainer.
+--
+-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+--     version stability.
+--
+-- -   @STABLE@: The image version is stable.
+--
+-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+--     image versions that are set to be archived are automatically
+--     archived after three months.
+--
+-- -   @ARCHIVED@: The image version is archived. Archived image versions
+--     are not searchable and are no longer actively supported.
+createImageVersion_vendorGuidance :: Lens.Lens' CreateImageVersion (Prelude.Maybe VendorGuidance)
+createImageVersion_vendorGuidance = Lens.lens (\CreateImageVersion' {vendorGuidance} -> vendorGuidance) (\s@CreateImageVersion' {} a -> s {vendorGuidance = a} :: CreateImageVersion)
+
+-- | The registry path of the container image to use as the starting point
+-- for this version. The path is an Amazon Elastic Container Registry (ECR)
+-- URI in the following format:
+--
+-- @\<acct-id>.dkr.ecr.\<region>.amazonaws.com\/\<repo-name[:tag] or [\@digest]>@
+createImageVersion_baseImage :: Lens.Lens' CreateImageVersion Prelude.Text
+createImageVersion_baseImage = Lens.lens (\CreateImageVersion' {baseImage} -> baseImage) (\s@CreateImageVersion' {} a -> s {baseImage = a} :: CreateImageVersion)
+
+-- | A unique ID. If not specified, the Amazon Web Services CLI and Amazon
+-- Web Services SDKs, such as the SDK for Python (Boto3), add a unique
+-- value to the call.
+createImageVersion_clientToken :: Lens.Lens' CreateImageVersion Prelude.Text
+createImageVersion_clientToken = Lens.lens (\CreateImageVersion' {clientToken} -> clientToken) (\s@CreateImageVersion' {} a -> s {clientToken = a} :: CreateImageVersion)
+
+-- | The @ImageName@ of the @Image@ to create a version of.
+createImageVersion_imageName :: Lens.Lens' CreateImageVersion Prelude.Text
+createImageVersion_imageName = Lens.lens (\CreateImageVersion' {imageName} -> imageName) (\s@CreateImageVersion' {} a -> s {imageName = a} :: CreateImageVersion)
+
+instance Core.AWSRequest CreateImageVersion where
+  type
+    AWSResponse CreateImageVersion =
+      CreateImageVersionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateImageVersionResponse'
+            Prelude.<$> (x Data..?> "ImageVersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateImageVersion where
+  hashWithSalt _salt CreateImageVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` aliases
+      `Prelude.hashWithSalt` horovod
+      `Prelude.hashWithSalt` jobType
+      `Prelude.hashWithSalt` mLFramework
+      `Prelude.hashWithSalt` processor
+      `Prelude.hashWithSalt` programmingLang
+      `Prelude.hashWithSalt` releaseNotes
+      `Prelude.hashWithSalt` vendorGuidance
+      `Prelude.hashWithSalt` baseImage
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData CreateImageVersion where
+  rnf CreateImageVersion' {..} =
+    Prelude.rnf aliases
+      `Prelude.seq` Prelude.rnf horovod
+      `Prelude.seq` Prelude.rnf jobType
+      `Prelude.seq` Prelude.rnf mLFramework
+      `Prelude.seq` Prelude.rnf processor
+      `Prelude.seq` Prelude.rnf programmingLang
+      `Prelude.seq` Prelude.rnf releaseNotes
+      `Prelude.seq` Prelude.rnf vendorGuidance
+      `Prelude.seq` Prelude.rnf baseImage
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders CreateImageVersion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateImageVersion" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateImageVersion where
+  toJSON CreateImageVersion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Aliases" Data..=) Prelude.<$> aliases,
+            ("Horovod" Data..=) Prelude.<$> horovod,
+            ("JobType" Data..=) Prelude.<$> jobType,
+            ("MLFramework" Data..=) Prelude.<$> mLFramework,
+            ("Processor" Data..=) Prelude.<$> processor,
+            ("ProgrammingLang" Data..=)
+              Prelude.<$> programmingLang,
+            ("ReleaseNotes" Data..=) Prelude.<$> releaseNotes,
+            ("VendorGuidance" Data..=)
+              Prelude.<$> vendorGuidance,
+            Prelude.Just ("BaseImage" Data..= baseImage),
+            Prelude.Just ("ClientToken" Data..= clientToken),
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath CreateImageVersion where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateImageVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateImageVersionResponse' smart constructor.
+data CreateImageVersionResponse = CreateImageVersionResponse'
+  { -- | The ARN of the image version.
+    imageVersionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateImageVersionResponse' 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:
+--
+-- 'imageVersionArn', 'createImageVersionResponse_imageVersionArn' - The ARN of the image version.
+--
+-- 'httpStatus', 'createImageVersionResponse_httpStatus' - The response's http status code.
+newCreateImageVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateImageVersionResponse
+newCreateImageVersionResponse pHttpStatus_ =
+  CreateImageVersionResponse'
+    { imageVersionArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the image version.
+createImageVersionResponse_imageVersionArn :: Lens.Lens' CreateImageVersionResponse (Prelude.Maybe Prelude.Text)
+createImageVersionResponse_imageVersionArn = Lens.lens (\CreateImageVersionResponse' {imageVersionArn} -> imageVersionArn) (\s@CreateImageVersionResponse' {} a -> s {imageVersionArn = a} :: CreateImageVersionResponse)
+
+-- | The response's http status code.
+createImageVersionResponse_httpStatus :: Lens.Lens' CreateImageVersionResponse Prelude.Int
+createImageVersionResponse_httpStatus = Lens.lens (\CreateImageVersionResponse' {httpStatus} -> httpStatus) (\s@CreateImageVersionResponse' {} a -> s {httpStatus = a} :: CreateImageVersionResponse)
+
+instance Prelude.NFData CreateImageVersionResponse where
+  rnf CreateImageVersionResponse' {..} =
+    Prelude.rnf imageVersionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateInferenceExperiment.hs b/gen/Amazonka/SageMaker/CreateInferenceExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateInferenceExperiment.hs
@@ -0,0 +1,531 @@
+{-# 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.CreateInferenceExperiment
+-- 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 an inference experiment using the configurations specified in
+-- the request.
+--
+-- Use this API to setup and schedule an experiment to compare model
+-- variants on a Amazon SageMaker inference endpoint. For more information
+-- about inference experiments, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests.html Shadow tests>.
+--
+-- Amazon SageMaker begins your experiment at the scheduled time and routes
+-- traffic to your endpoint\'s model variants based on your specified
+-- configuration.
+--
+-- While the experiment is in progress or after it has concluded, you can
+-- view metrics that compare your model variants. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests-view-monitor-edit.html View, monitor, and edit shadow tests>.
+module Amazonka.SageMaker.CreateInferenceExperiment
+  ( -- * Creating a Request
+    CreateInferenceExperiment (..),
+    newCreateInferenceExperiment,
+
+    -- * Request Lenses
+    createInferenceExperiment_dataStorageConfig,
+    createInferenceExperiment_description,
+    createInferenceExperiment_kmsKey,
+    createInferenceExperiment_schedule,
+    createInferenceExperiment_tags,
+    createInferenceExperiment_name,
+    createInferenceExperiment_type,
+    createInferenceExperiment_roleArn,
+    createInferenceExperiment_endpointName,
+    createInferenceExperiment_modelVariants,
+    createInferenceExperiment_shadowModeConfig,
+
+    -- * Destructuring the Response
+    CreateInferenceExperimentResponse (..),
+    newCreateInferenceExperimentResponse,
+
+    -- * Response Lenses
+    createInferenceExperimentResponse_httpStatus,
+    createInferenceExperimentResponse_inferenceExperimentArn,
+  )
+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:/ 'newCreateInferenceExperiment' smart constructor.
+data CreateInferenceExperiment = CreateInferenceExperiment'
+  { -- | The Amazon S3 location and configuration for storing inference request
+    -- and response data.
+    --
+    -- This is an optional parameter that you can use for data capture. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture.html Capture data>.
+    dataStorageConfig :: Prelude.Maybe InferenceExperimentDataStorageConfig,
+    -- | A description for the inference experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance that hosts the endpoint. The
+    -- @KmsKey@ can be any of the following formats:
+    --
+    -- -   KMS key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   Amazon Resource Name (ARN) of a KMS key
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   KMS key Alias
+    --
+    --     @\"alias\/ExampleAlias\"@
+    --
+    -- -   Amazon Resource Name (ARN) of a KMS key Alias
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+    --
+    -- If you use a KMS key ID or an alias of your KMS key, the Amazon
+    -- SageMaker execution role must include permissions to call @kms:Encrypt@.
+    -- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+    -- KMS key for Amazon S3 for your role\'s account. Amazon SageMaker uses
+    -- server-side encryption with KMS managed keys for @OutputDataConfig@. If
+    -- you use a bucket policy with an @s3:PutObject@ permission that only
+    -- allows objects with server-side encryption, set the condition key of
+    -- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS managed Encryption Keys>
+    -- in the /Amazon Simple Storage Service Developer Guide./
+    --
+    -- The KMS key policy must grant permission to the IAM role that you
+    -- specify in your @CreateEndpoint@ and @UpdateEndpoint@ requests. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+    -- in the /Amazon Web Services Key Management Service Developer Guide/.
+    kmsKey :: Prelude.Maybe Prelude.Text,
+    -- | The duration for which you want the inference experiment to run. If you
+    -- don\'t specify this field, the experiment automatically starts
+    -- immediately upon creation and concludes after 7 days.
+    schedule :: Prelude.Maybe InferenceExperimentSchedule,
+    -- | Array of key-value pairs. You can use tags to categorize your Amazon Web
+    -- Services resources in different ways, for example, by purpose, owner, or
+    -- environment. For more information, see
+    -- <https://docs.aws.amazon.com/ARG/latest/userguide/tagging.html Tagging your Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name for the inference experiment.
+    name :: Prelude.Text,
+    -- | The type of the inference experiment that you want to run. The following
+    -- types of experiments are possible:
+    --
+    -- -   @ShadowMode@: You can use this type to validate a shadow variant.
+    --     For more information, see
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests.html Shadow tests>.
+    type' :: InferenceExperimentType,
+    -- | The ARN of the IAM role that Amazon SageMaker can assume to access model
+    -- artifacts and container images, and manage Amazon SageMaker Inference
+    -- endpoints for model deployment.
+    roleArn :: Prelude.Text,
+    -- | The name of the Amazon SageMaker endpoint on which you want to run the
+    -- inference experiment.
+    endpointName :: Prelude.Text,
+    -- | An array of @ModelVariantConfig@ objects. There is one for each variant
+    -- in the inference experiment. Each @ModelVariantConfig@ object in the
+    -- array describes the infrastructure configuration for the corresponding
+    -- variant.
+    modelVariants :: Prelude.NonEmpty ModelVariantConfig,
+    -- | The configuration of @ShadowMode@ inference experiment type. Use this
+    -- field to specify a production variant which takes all the inference
+    -- requests, and a shadow variant to which Amazon SageMaker replicates a
+    -- percentage of the inference requests. For the shadow variant also
+    -- specify the percentage of requests that Amazon SageMaker replicates.
+    shadowModeConfig :: ShadowModeConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateInferenceExperiment' 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:
+--
+-- 'dataStorageConfig', 'createInferenceExperiment_dataStorageConfig' - The Amazon S3 location and configuration for storing inference request
+-- and response data.
+--
+-- This is an optional parameter that you can use for data capture. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture.html Capture data>.
+--
+-- 'description', 'createInferenceExperiment_description' - A description for the inference experiment.
+--
+-- 'kmsKey', 'createInferenceExperiment_kmsKey' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the endpoint. The
+-- @KmsKey@ can be any of the following formats:
+--
+-- -   KMS key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   Amazon Resource Name (ARN) of a KMS key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   KMS key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   Amazon Resource Name (ARN) of a KMS key Alias
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+--
+-- If you use a KMS key ID or an alias of your KMS key, the Amazon
+-- SageMaker execution role must include permissions to call @kms:Encrypt@.
+-- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+-- KMS key for Amazon S3 for your role\'s account. Amazon SageMaker uses
+-- server-side encryption with KMS managed keys for @OutputDataConfig@. If
+-- you use a bucket policy with an @s3:PutObject@ permission that only
+-- allows objects with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateEndpoint@ and @UpdateEndpoint@ requests. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+--
+-- 'schedule', 'createInferenceExperiment_schedule' - The duration for which you want the inference experiment to run. If you
+-- don\'t specify this field, the experiment automatically starts
+-- immediately upon creation and concludes after 7 days.
+--
+-- 'tags', 'createInferenceExperiment_tags' - Array of key-value pairs. You can use tags to categorize your Amazon Web
+-- Services resources in different ways, for example, by purpose, owner, or
+-- environment. For more information, see
+-- <https://docs.aws.amazon.com/ARG/latest/userguide/tagging.html Tagging your Amazon Web Services Resources>.
+--
+-- 'name', 'createInferenceExperiment_name' - The name for the inference experiment.
+--
+-- 'type'', 'createInferenceExperiment_type' - The type of the inference experiment that you want to run. The following
+-- types of experiments are possible:
+--
+-- -   @ShadowMode@: You can use this type to validate a shadow variant.
+--     For more information, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests.html Shadow tests>.
+--
+-- 'roleArn', 'createInferenceExperiment_roleArn' - The ARN of the IAM role that Amazon SageMaker can assume to access model
+-- artifacts and container images, and manage Amazon SageMaker Inference
+-- endpoints for model deployment.
+--
+-- 'endpointName', 'createInferenceExperiment_endpointName' - The name of the Amazon SageMaker endpoint on which you want to run the
+-- inference experiment.
+--
+-- 'modelVariants', 'createInferenceExperiment_modelVariants' - An array of @ModelVariantConfig@ objects. There is one for each variant
+-- in the inference experiment. Each @ModelVariantConfig@ object in the
+-- array describes the infrastructure configuration for the corresponding
+-- variant.
+--
+-- 'shadowModeConfig', 'createInferenceExperiment_shadowModeConfig' - The configuration of @ShadowMode@ inference experiment type. Use this
+-- field to specify a production variant which takes all the inference
+-- requests, and a shadow variant to which Amazon SageMaker replicates a
+-- percentage of the inference requests. For the shadow variant also
+-- specify the percentage of requests that Amazon SageMaker replicates.
+newCreateInferenceExperiment ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  InferenceExperimentType ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'modelVariants'
+  Prelude.NonEmpty ModelVariantConfig ->
+  -- | 'shadowModeConfig'
+  ShadowModeConfig ->
+  CreateInferenceExperiment
+newCreateInferenceExperiment
+  pName_
+  pType_
+  pRoleArn_
+  pEndpointName_
+  pModelVariants_
+  pShadowModeConfig_ =
+    CreateInferenceExperiment'
+      { dataStorageConfig =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        kmsKey = Prelude.Nothing,
+        schedule = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        name = pName_,
+        type' = pType_,
+        roleArn = pRoleArn_,
+        endpointName = pEndpointName_,
+        modelVariants =
+          Lens.coerced Lens.# pModelVariants_,
+        shadowModeConfig = pShadowModeConfig_
+      }
+
+-- | The Amazon S3 location and configuration for storing inference request
+-- and response data.
+--
+-- This is an optional parameter that you can use for data capture. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture.html Capture data>.
+createInferenceExperiment_dataStorageConfig :: Lens.Lens' CreateInferenceExperiment (Prelude.Maybe InferenceExperimentDataStorageConfig)
+createInferenceExperiment_dataStorageConfig = Lens.lens (\CreateInferenceExperiment' {dataStorageConfig} -> dataStorageConfig) (\s@CreateInferenceExperiment' {} a -> s {dataStorageConfig = a} :: CreateInferenceExperiment)
+
+-- | A description for the inference experiment.
+createInferenceExperiment_description :: Lens.Lens' CreateInferenceExperiment (Prelude.Maybe Prelude.Text)
+createInferenceExperiment_description = Lens.lens (\CreateInferenceExperiment' {description} -> description) (\s@CreateInferenceExperiment' {} a -> s {description = a} :: CreateInferenceExperiment)
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the endpoint. The
+-- @KmsKey@ can be any of the following formats:
+--
+-- -   KMS key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   Amazon Resource Name (ARN) of a KMS key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   KMS key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   Amazon Resource Name (ARN) of a KMS key Alias
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+--
+-- If you use a KMS key ID or an alias of your KMS key, the Amazon
+-- SageMaker execution role must include permissions to call @kms:Encrypt@.
+-- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+-- KMS key for Amazon S3 for your role\'s account. Amazon SageMaker uses
+-- server-side encryption with KMS managed keys for @OutputDataConfig@. If
+-- you use a bucket policy with an @s3:PutObject@ permission that only
+-- allows objects with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateEndpoint@ and @UpdateEndpoint@ requests. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+createInferenceExperiment_kmsKey :: Lens.Lens' CreateInferenceExperiment (Prelude.Maybe Prelude.Text)
+createInferenceExperiment_kmsKey = Lens.lens (\CreateInferenceExperiment' {kmsKey} -> kmsKey) (\s@CreateInferenceExperiment' {} a -> s {kmsKey = a} :: CreateInferenceExperiment)
+
+-- | The duration for which you want the inference experiment to run. If you
+-- don\'t specify this field, the experiment automatically starts
+-- immediately upon creation and concludes after 7 days.
+createInferenceExperiment_schedule :: Lens.Lens' CreateInferenceExperiment (Prelude.Maybe InferenceExperimentSchedule)
+createInferenceExperiment_schedule = Lens.lens (\CreateInferenceExperiment' {schedule} -> schedule) (\s@CreateInferenceExperiment' {} a -> s {schedule = a} :: CreateInferenceExperiment)
+
+-- | Array of key-value pairs. You can use tags to categorize your Amazon Web
+-- Services resources in different ways, for example, by purpose, owner, or
+-- environment. For more information, see
+-- <https://docs.aws.amazon.com/ARG/latest/userguide/tagging.html Tagging your Amazon Web Services Resources>.
+createInferenceExperiment_tags :: Lens.Lens' CreateInferenceExperiment (Prelude.Maybe [Tag])
+createInferenceExperiment_tags = Lens.lens (\CreateInferenceExperiment' {tags} -> tags) (\s@CreateInferenceExperiment' {} a -> s {tags = a} :: CreateInferenceExperiment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name for the inference experiment.
+createInferenceExperiment_name :: Lens.Lens' CreateInferenceExperiment Prelude.Text
+createInferenceExperiment_name = Lens.lens (\CreateInferenceExperiment' {name} -> name) (\s@CreateInferenceExperiment' {} a -> s {name = a} :: CreateInferenceExperiment)
+
+-- | The type of the inference experiment that you want to run. The following
+-- types of experiments are possible:
+--
+-- -   @ShadowMode@: You can use this type to validate a shadow variant.
+--     For more information, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests.html Shadow tests>.
+createInferenceExperiment_type :: Lens.Lens' CreateInferenceExperiment InferenceExperimentType
+createInferenceExperiment_type = Lens.lens (\CreateInferenceExperiment' {type'} -> type') (\s@CreateInferenceExperiment' {} a -> s {type' = a} :: CreateInferenceExperiment)
+
+-- | The ARN of the IAM role that Amazon SageMaker can assume to access model
+-- artifacts and container images, and manage Amazon SageMaker Inference
+-- endpoints for model deployment.
+createInferenceExperiment_roleArn :: Lens.Lens' CreateInferenceExperiment Prelude.Text
+createInferenceExperiment_roleArn = Lens.lens (\CreateInferenceExperiment' {roleArn} -> roleArn) (\s@CreateInferenceExperiment' {} a -> s {roleArn = a} :: CreateInferenceExperiment)
+
+-- | The name of the Amazon SageMaker endpoint on which you want to run the
+-- inference experiment.
+createInferenceExperiment_endpointName :: Lens.Lens' CreateInferenceExperiment Prelude.Text
+createInferenceExperiment_endpointName = Lens.lens (\CreateInferenceExperiment' {endpointName} -> endpointName) (\s@CreateInferenceExperiment' {} a -> s {endpointName = a} :: CreateInferenceExperiment)
+
+-- | An array of @ModelVariantConfig@ objects. There is one for each variant
+-- in the inference experiment. Each @ModelVariantConfig@ object in the
+-- array describes the infrastructure configuration for the corresponding
+-- variant.
+createInferenceExperiment_modelVariants :: Lens.Lens' CreateInferenceExperiment (Prelude.NonEmpty ModelVariantConfig)
+createInferenceExperiment_modelVariants = Lens.lens (\CreateInferenceExperiment' {modelVariants} -> modelVariants) (\s@CreateInferenceExperiment' {} a -> s {modelVariants = a} :: CreateInferenceExperiment) Prelude.. Lens.coerced
+
+-- | The configuration of @ShadowMode@ inference experiment type. Use this
+-- field to specify a production variant which takes all the inference
+-- requests, and a shadow variant to which Amazon SageMaker replicates a
+-- percentage of the inference requests. For the shadow variant also
+-- specify the percentage of requests that Amazon SageMaker replicates.
+createInferenceExperiment_shadowModeConfig :: Lens.Lens' CreateInferenceExperiment ShadowModeConfig
+createInferenceExperiment_shadowModeConfig = Lens.lens (\CreateInferenceExperiment' {shadowModeConfig} -> shadowModeConfig) (\s@CreateInferenceExperiment' {} a -> s {shadowModeConfig = a} :: CreateInferenceExperiment)
+
+instance Core.AWSRequest CreateInferenceExperiment where
+  type
+    AWSResponse CreateInferenceExperiment =
+      CreateInferenceExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateInferenceExperimentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InferenceExperimentArn")
+      )
+
+instance Prelude.Hashable CreateInferenceExperiment where
+  hashWithSalt _salt CreateInferenceExperiment' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataStorageConfig
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` kmsKey
+      `Prelude.hashWithSalt` schedule
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` modelVariants
+      `Prelude.hashWithSalt` shadowModeConfig
+
+instance Prelude.NFData CreateInferenceExperiment where
+  rnf CreateInferenceExperiment' {..} =
+    Prelude.rnf dataStorageConfig
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf kmsKey
+      `Prelude.seq` Prelude.rnf schedule
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf modelVariants
+      `Prelude.seq` Prelude.rnf shadowModeConfig
+
+instance Data.ToHeaders CreateInferenceExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateInferenceExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateInferenceExperiment where
+  toJSON CreateInferenceExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataStorageConfig" Data..=)
+              Prelude.<$> dataStorageConfig,
+            ("Description" Data..=) Prelude.<$> description,
+            ("KmsKey" Data..=) Prelude.<$> kmsKey,
+            ("Schedule" Data..=) Prelude.<$> schedule,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("EndpointName" Data..= endpointName),
+            Prelude.Just ("ModelVariants" Data..= modelVariants),
+            Prelude.Just
+              ("ShadowModeConfig" Data..= shadowModeConfig)
+          ]
+      )
+
+instance Data.ToPath CreateInferenceExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateInferenceExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateInferenceExperimentResponse' smart constructor.
+data CreateInferenceExperimentResponse = CreateInferenceExperimentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN for your inference experiment.
+    inferenceExperimentArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateInferenceExperimentResponse' 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', 'createInferenceExperimentResponse_httpStatus' - The response's http status code.
+--
+-- 'inferenceExperimentArn', 'createInferenceExperimentResponse_inferenceExperimentArn' - The ARN for your inference experiment.
+newCreateInferenceExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'inferenceExperimentArn'
+  Prelude.Text ->
+  CreateInferenceExperimentResponse
+newCreateInferenceExperimentResponse
+  pHttpStatus_
+  pInferenceExperimentArn_ =
+    CreateInferenceExperimentResponse'
+      { httpStatus =
+          pHttpStatus_,
+        inferenceExperimentArn =
+          pInferenceExperimentArn_
+      }
+
+-- | The response's http status code.
+createInferenceExperimentResponse_httpStatus :: Lens.Lens' CreateInferenceExperimentResponse Prelude.Int
+createInferenceExperimentResponse_httpStatus = Lens.lens (\CreateInferenceExperimentResponse' {httpStatus} -> httpStatus) (\s@CreateInferenceExperimentResponse' {} a -> s {httpStatus = a} :: CreateInferenceExperimentResponse)
+
+-- | The ARN for your inference experiment.
+createInferenceExperimentResponse_inferenceExperimentArn :: Lens.Lens' CreateInferenceExperimentResponse Prelude.Text
+createInferenceExperimentResponse_inferenceExperimentArn = Lens.lens (\CreateInferenceExperimentResponse' {inferenceExperimentArn} -> inferenceExperimentArn) (\s@CreateInferenceExperimentResponse' {} a -> s {inferenceExperimentArn = a} :: CreateInferenceExperimentResponse)
+
+instance
+  Prelude.NFData
+    CreateInferenceExperimentResponse
+  where
+  rnf CreateInferenceExperimentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf inferenceExperimentArn
diff --git a/gen/Amazonka/SageMaker/CreateInferenceRecommendationsJob.hs b/gen/Amazonka/SageMaker/CreateInferenceRecommendationsJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateInferenceRecommendationsJob.hs
@@ -0,0 +1,344 @@
+{-# 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.CreateInferenceRecommendationsJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a recommendation job. You can create either an instance
+-- recommendation or load test job.
+module Amazonka.SageMaker.CreateInferenceRecommendationsJob
+  ( -- * Creating a Request
+    CreateInferenceRecommendationsJob (..),
+    newCreateInferenceRecommendationsJob,
+
+    -- * Request Lenses
+    createInferenceRecommendationsJob_jobDescription,
+    createInferenceRecommendationsJob_outputConfig,
+    createInferenceRecommendationsJob_stoppingConditions,
+    createInferenceRecommendationsJob_tags,
+    createInferenceRecommendationsJob_jobName,
+    createInferenceRecommendationsJob_jobType,
+    createInferenceRecommendationsJob_roleArn,
+    createInferenceRecommendationsJob_inputConfig,
+
+    -- * Destructuring the Response
+    CreateInferenceRecommendationsJobResponse (..),
+    newCreateInferenceRecommendationsJobResponse,
+
+    -- * Response Lenses
+    createInferenceRecommendationsJobResponse_httpStatus,
+    createInferenceRecommendationsJobResponse_jobArn,
+  )
+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:/ 'newCreateInferenceRecommendationsJob' smart constructor.
+data CreateInferenceRecommendationsJob = CreateInferenceRecommendationsJob'
+  { -- | Description of the recommendation job.
+    jobDescription :: Prelude.Maybe Prelude.Text,
+    -- | Provides information about the output artifacts and the KMS key to use
+    -- for Amazon S3 server-side encryption.
+    outputConfig :: Prelude.Maybe RecommendationJobOutputConfig,
+    -- | A set of conditions for stopping a recommendation job. If any of the
+    -- conditions are met, the job is automatically stopped.
+    stoppingConditions :: Prelude.Maybe RecommendationJobStoppingConditions,
+    -- | The metadata that you apply to Amazon Web Services resources to help you
+    -- categorize and organize them. Each tag consists of a key and a value,
+    -- both of which you define. 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.
+    tags :: Prelude.Maybe [Tag],
+    -- | A name for the recommendation job. The name must be unique within the
+    -- Amazon Web Services Region and within your Amazon Web Services account.
+    jobName :: Prelude.Text,
+    -- | Defines the type of recommendation job. Specify @Default@ to initiate an
+    -- instance recommendation and @Advanced@ to initiate a load test. If left
+    -- unspecified, Amazon SageMaker Inference Recommender will run an instance
+    -- recommendation (@DEFAULT@) job.
+    jobType :: RecommendationJobType,
+    -- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+    -- SageMaker to perform tasks on your behalf.
+    roleArn :: Prelude.Text,
+    -- | Provides information about the versioned model package Amazon Resource
+    -- Name (ARN), the traffic pattern, and endpoint configurations.
+    inputConfig :: RecommendationJobInputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateInferenceRecommendationsJob' 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:
+--
+-- 'jobDescription', 'createInferenceRecommendationsJob_jobDescription' - Description of the recommendation job.
+--
+-- 'outputConfig', 'createInferenceRecommendationsJob_outputConfig' - Provides information about the output artifacts and the KMS key to use
+-- for Amazon S3 server-side encryption.
+--
+-- 'stoppingConditions', 'createInferenceRecommendationsJob_stoppingConditions' - A set of conditions for stopping a recommendation job. If any of the
+-- conditions are met, the job is automatically stopped.
+--
+-- 'tags', 'createInferenceRecommendationsJob_tags' - The metadata that you apply to Amazon Web Services resources to help you
+-- categorize and organize them. Each tag consists of a key and a value,
+-- both of which you define. 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.
+--
+-- 'jobName', 'createInferenceRecommendationsJob_jobName' - A name for the recommendation job. The name must be unique within the
+-- Amazon Web Services Region and within your Amazon Web Services account.
+--
+-- 'jobType', 'createInferenceRecommendationsJob_jobType' - Defines the type of recommendation job. Specify @Default@ to initiate an
+-- instance recommendation and @Advanced@ to initiate a load test. If left
+-- unspecified, Amazon SageMaker Inference Recommender will run an instance
+-- recommendation (@DEFAULT@) job.
+--
+-- 'roleArn', 'createInferenceRecommendationsJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to perform tasks on your behalf.
+--
+-- 'inputConfig', 'createInferenceRecommendationsJob_inputConfig' - Provides information about the versioned model package Amazon Resource
+-- Name (ARN), the traffic pattern, and endpoint configurations.
+newCreateInferenceRecommendationsJob ::
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'jobType'
+  RecommendationJobType ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  RecommendationJobInputConfig ->
+  CreateInferenceRecommendationsJob
+newCreateInferenceRecommendationsJob
+  pJobName_
+  pJobType_
+  pRoleArn_
+  pInputConfig_ =
+    CreateInferenceRecommendationsJob'
+      { jobDescription =
+          Prelude.Nothing,
+        outputConfig = Prelude.Nothing,
+        stoppingConditions = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        jobName = pJobName_,
+        jobType = pJobType_,
+        roleArn = pRoleArn_,
+        inputConfig = pInputConfig_
+      }
+
+-- | Description of the recommendation job.
+createInferenceRecommendationsJob_jobDescription :: Lens.Lens' CreateInferenceRecommendationsJob (Prelude.Maybe Prelude.Text)
+createInferenceRecommendationsJob_jobDescription = Lens.lens (\CreateInferenceRecommendationsJob' {jobDescription} -> jobDescription) (\s@CreateInferenceRecommendationsJob' {} a -> s {jobDescription = a} :: CreateInferenceRecommendationsJob)
+
+-- | Provides information about the output artifacts and the KMS key to use
+-- for Amazon S3 server-side encryption.
+createInferenceRecommendationsJob_outputConfig :: Lens.Lens' CreateInferenceRecommendationsJob (Prelude.Maybe RecommendationJobOutputConfig)
+createInferenceRecommendationsJob_outputConfig = Lens.lens (\CreateInferenceRecommendationsJob' {outputConfig} -> outputConfig) (\s@CreateInferenceRecommendationsJob' {} a -> s {outputConfig = a} :: CreateInferenceRecommendationsJob)
+
+-- | A set of conditions for stopping a recommendation job. If any of the
+-- conditions are met, the job is automatically stopped.
+createInferenceRecommendationsJob_stoppingConditions :: Lens.Lens' CreateInferenceRecommendationsJob (Prelude.Maybe RecommendationJobStoppingConditions)
+createInferenceRecommendationsJob_stoppingConditions = Lens.lens (\CreateInferenceRecommendationsJob' {stoppingConditions} -> stoppingConditions) (\s@CreateInferenceRecommendationsJob' {} a -> s {stoppingConditions = a} :: CreateInferenceRecommendationsJob)
+
+-- | The metadata that you apply to Amazon Web Services resources to help you
+-- categorize and organize them. Each tag consists of a key and a value,
+-- both of which you define. 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.
+createInferenceRecommendationsJob_tags :: Lens.Lens' CreateInferenceRecommendationsJob (Prelude.Maybe [Tag])
+createInferenceRecommendationsJob_tags = Lens.lens (\CreateInferenceRecommendationsJob' {tags} -> tags) (\s@CreateInferenceRecommendationsJob' {} a -> s {tags = a} :: CreateInferenceRecommendationsJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | A name for the recommendation job. The name must be unique within the
+-- Amazon Web Services Region and within your Amazon Web Services account.
+createInferenceRecommendationsJob_jobName :: Lens.Lens' CreateInferenceRecommendationsJob Prelude.Text
+createInferenceRecommendationsJob_jobName = Lens.lens (\CreateInferenceRecommendationsJob' {jobName} -> jobName) (\s@CreateInferenceRecommendationsJob' {} a -> s {jobName = a} :: CreateInferenceRecommendationsJob)
+
+-- | Defines the type of recommendation job. Specify @Default@ to initiate an
+-- instance recommendation and @Advanced@ to initiate a load test. If left
+-- unspecified, Amazon SageMaker Inference Recommender will run an instance
+-- recommendation (@DEFAULT@) job.
+createInferenceRecommendationsJob_jobType :: Lens.Lens' CreateInferenceRecommendationsJob RecommendationJobType
+createInferenceRecommendationsJob_jobType = Lens.lens (\CreateInferenceRecommendationsJob' {jobType} -> jobType) (\s@CreateInferenceRecommendationsJob' {} a -> s {jobType = a} :: CreateInferenceRecommendationsJob)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to perform tasks on your behalf.
+createInferenceRecommendationsJob_roleArn :: Lens.Lens' CreateInferenceRecommendationsJob Prelude.Text
+createInferenceRecommendationsJob_roleArn = Lens.lens (\CreateInferenceRecommendationsJob' {roleArn} -> roleArn) (\s@CreateInferenceRecommendationsJob' {} a -> s {roleArn = a} :: CreateInferenceRecommendationsJob)
+
+-- | Provides information about the versioned model package Amazon Resource
+-- Name (ARN), the traffic pattern, and endpoint configurations.
+createInferenceRecommendationsJob_inputConfig :: Lens.Lens' CreateInferenceRecommendationsJob RecommendationJobInputConfig
+createInferenceRecommendationsJob_inputConfig = Lens.lens (\CreateInferenceRecommendationsJob' {inputConfig} -> inputConfig) (\s@CreateInferenceRecommendationsJob' {} a -> s {inputConfig = a} :: CreateInferenceRecommendationsJob)
+
+instance
+  Core.AWSRequest
+    CreateInferenceRecommendationsJob
+  where
+  type
+    AWSResponse CreateInferenceRecommendationsJob =
+      CreateInferenceRecommendationsJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateInferenceRecommendationsJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobArn")
+      )
+
+instance
+  Prelude.Hashable
+    CreateInferenceRecommendationsJob
+  where
+  hashWithSalt
+    _salt
+    CreateInferenceRecommendationsJob' {..} =
+      _salt
+        `Prelude.hashWithSalt` jobDescription
+        `Prelude.hashWithSalt` outputConfig
+        `Prelude.hashWithSalt` stoppingConditions
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` jobName
+        `Prelude.hashWithSalt` jobType
+        `Prelude.hashWithSalt` roleArn
+        `Prelude.hashWithSalt` inputConfig
+
+instance
+  Prelude.NFData
+    CreateInferenceRecommendationsJob
+  where
+  rnf CreateInferenceRecommendationsJob' {..} =
+    Prelude.rnf jobDescription
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf stoppingConditions
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf jobType
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf inputConfig
+
+instance
+  Data.ToHeaders
+    CreateInferenceRecommendationsJob
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateInferenceRecommendationsJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    CreateInferenceRecommendationsJob
+  where
+  toJSON CreateInferenceRecommendationsJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("JobDescription" Data..=)
+              Prelude.<$> jobDescription,
+            ("OutputConfig" Data..=) Prelude.<$> outputConfig,
+            ("StoppingConditions" Data..=)
+              Prelude.<$> stoppingConditions,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("JobName" Data..= jobName),
+            Prelude.Just ("JobType" Data..= jobType),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("InputConfig" Data..= inputConfig)
+          ]
+      )
+
+instance
+  Data.ToPath
+    CreateInferenceRecommendationsJob
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreateInferenceRecommendationsJob
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateInferenceRecommendationsJobResponse' smart constructor.
+data CreateInferenceRecommendationsJobResponse = CreateInferenceRecommendationsJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the recommendation job.
+    jobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateInferenceRecommendationsJobResponse' 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', 'createInferenceRecommendationsJobResponse_httpStatus' - The response's http status code.
+--
+-- 'jobArn', 'createInferenceRecommendationsJobResponse_jobArn' - The Amazon Resource Name (ARN) of the recommendation job.
+newCreateInferenceRecommendationsJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  CreateInferenceRecommendationsJobResponse
+newCreateInferenceRecommendationsJobResponse
+  pHttpStatus_
+  pJobArn_ =
+    CreateInferenceRecommendationsJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        jobArn = pJobArn_
+      }
+
+-- | The response's http status code.
+createInferenceRecommendationsJobResponse_httpStatus :: Lens.Lens' CreateInferenceRecommendationsJobResponse Prelude.Int
+createInferenceRecommendationsJobResponse_httpStatus = Lens.lens (\CreateInferenceRecommendationsJobResponse' {httpStatus} -> httpStatus) (\s@CreateInferenceRecommendationsJobResponse' {} a -> s {httpStatus = a} :: CreateInferenceRecommendationsJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the recommendation job.
+createInferenceRecommendationsJobResponse_jobArn :: Lens.Lens' CreateInferenceRecommendationsJobResponse Prelude.Text
+createInferenceRecommendationsJobResponse_jobArn = Lens.lens (\CreateInferenceRecommendationsJobResponse' {jobArn} -> jobArn) (\s@CreateInferenceRecommendationsJobResponse' {} a -> s {jobArn = a} :: CreateInferenceRecommendationsJobResponse)
+
+instance
+  Prelude.NFData
+    CreateInferenceRecommendationsJobResponse
+  where
+  rnf CreateInferenceRecommendationsJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobArn
diff --git a/gen/Amazonka/SageMaker/CreateLabelingJob.hs b/gen/Amazonka/SageMaker/CreateLabelingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateLabelingJob.hs
@@ -0,0 +1,731 @@
+{-# 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.CreateLabelingJob
+-- 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 job that uses workers to label the data objects in your input
+-- dataset. You can use the labeled data to train machine learning models.
+--
+-- You can select your workforce from one of three providers:
+--
+-- -   A private workforce that you create. It can include employees,
+--     contractors, and outside experts. Use a private workforce when want
+--     the data to stay within your organization or when a specific set of
+--     skills is required.
+--
+-- -   One or more vendors that you select from the Amazon Web Services
+--     Marketplace. Vendors provide expertise in specific areas.
+--
+-- -   The Amazon Mechanical Turk workforce. This is the largest workforce,
+--     but it should only be used for public data or data that has been
+--     stripped of any personally identifiable information.
+--
+-- You can also use /automated data labeling/ to reduce the number of data
+-- objects that need to be labeled by a human. Automated data labeling uses
+-- /active learning/ to determine if a data object can be labeled by
+-- machine or if it needs to be sent to a human worker. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html Using Automated Data Labeling>.
+--
+-- The data objects to be labeled are contained in an Amazon S3 bucket. You
+-- create a /manifest file/ that describes the location of each object. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data.html Using Input and Output Data>.
+--
+-- The output can be used as the manifest file for another labeling job or
+-- as training data for your machine learning models.
+--
+-- You can use this operation to create a static labeling job or a
+-- streaming labeling job. A static labeling job stops if all data objects
+-- in the input manifest file identified in @ManifestS3Uri@ have been
+-- labeled. A streaming labeling job runs perpetually until it is manually
+-- stopped, or remains idle for 10 days. You can send new data objects to
+-- an active (@InProgress@) streaming labeling job in real time. To learn
+-- how to create a static labeling job, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job-api.html Create a Labeling Job (API)>
+-- in the Amazon SageMaker Developer Guide. To learn how to create a
+-- streaming labeling job, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-create-job.html Create a Streaming Labeling Job>.
+module Amazonka.SageMaker.CreateLabelingJob
+  ( -- * Creating a Request
+    CreateLabelingJob (..),
+    newCreateLabelingJob,
+
+    -- * Request Lenses
+    createLabelingJob_labelCategoryConfigS3Uri,
+    createLabelingJob_labelingJobAlgorithmsConfig,
+    createLabelingJob_stoppingConditions,
+    createLabelingJob_tags,
+    createLabelingJob_labelingJobName,
+    createLabelingJob_labelAttributeName,
+    createLabelingJob_inputConfig,
+    createLabelingJob_outputConfig,
+    createLabelingJob_roleArn,
+    createLabelingJob_humanTaskConfig,
+
+    -- * Destructuring the Response
+    CreateLabelingJobResponse (..),
+    newCreateLabelingJobResponse,
+
+    -- * Response Lenses
+    createLabelingJobResponse_httpStatus,
+    createLabelingJobResponse_labelingJobArn,
+  )
+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:/ 'newCreateLabelingJob' smart constructor.
+data CreateLabelingJob = CreateLabelingJob'
+  { -- | The S3 URI of the file, referred to as a /label category configuration
+    -- file/, that defines the categories used to label the data objects.
+    --
+    -- For 3D point cloud and video frame task types, you can add label
+    -- category attributes and frame attributes to your label category
+    -- configuration file. To learn how, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-label-category-config.html Create a Labeling Category Configuration File for 3D Point Cloud Labeling Jobs>.
+    --
+    -- For named entity recognition jobs, in addition to @\"labels\"@, you must
+    -- provide worker instructions in the label category configuration file
+    -- using the @\"instructions\"@ parameter:
+    -- @\"instructions\": {\"shortInstruction\":\"\<h1>Add header\<\/h1>\<p>Add Instructions\<\/p>\", \"fullInstruction\":\"\<p>Add additional instructions.\<\/p>\"}@.
+    -- For details and an example, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api Create a Named Entity Recognition Labeling Job (API)>
+    -- .
+    --
+    -- For all other
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>
+    -- and
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html custom tasks>,
+    -- your label category configuration file must be a JSON file in the
+    -- following format. Identify the labels you want to use by replacing
+    -- @label_1@, @label_2@,@...@,@label_n@ with your label categories.
+    --
+    -- @{ @
+    --
+    -- @\"document-version\": \"2018-11-28\",@
+    --
+    -- @\"labels\": [{\"label\": \"label_1\"},{\"label\": \"label_2\"},...{\"label\": \"label_n\"}]@
+    --
+    -- @}@
+    --
+    -- Note the following about the label category configuration file:
+    --
+    -- -   For image classification and text classification (single and
+    --     multi-label) you must specify at least two label categories. For all
+    --     other task types, the minimum number of label categories required is
+    --     one.
+    --
+    -- -   Each label category must be unique, you cannot specify duplicate
+    --     label categories.
+    --
+    -- -   If you create a 3D point cloud or video frame adjustment or
+    --     verification labeling job, you must include
+    --     @auditLabelAttributeName@ in the label category configuration. Use
+    --     this parameter to enter the
+    --     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-LabelAttributeName LabelAttributeName>
+    --     of the labeling job you want to adjust or verify annotations of.
+    labelCategoryConfigS3Uri :: Prelude.Maybe Prelude.Text,
+    -- | Configures the information required to perform automated data labeling.
+    labelingJobAlgorithmsConfig :: Prelude.Maybe LabelingJobAlgorithmsConfig,
+    -- | A set of conditions for stopping the labeling job. If any of the
+    -- conditions are met, the job is automatically stopped. You can use these
+    -- conditions to control the cost of data labeling.
+    stoppingConditions :: Prelude.Maybe LabelingJobStoppingConditions,
+    -- | An array of key\/value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the labeling job. This name is used to identify the job in a
+    -- list of labeling jobs. Labeling job names must be unique within an
+    -- Amazon Web Services account and region. @LabelingJobName@ is not case
+    -- sensitive. For example, Example-job and example-job are considered the
+    -- same labeling job name by Ground Truth.
+    labelingJobName :: Prelude.Text,
+    -- | The attribute name to use for the label in the output manifest file.
+    -- This is the key for the key\/value pair formed with the label that a
+    -- worker assigns to the object. The @LabelAttributeName@ must meet the
+    -- following requirements.
+    --
+    -- -   The name can\'t end with \"-metadata\".
+    --
+    -- -   If you are using one of the following
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+    --     the attribute name /must/ end with \"-ref\". If the task type you
+    --     are using is not listed below, the attribute name /must not/ end
+    --     with \"-ref\".
+    --
+    --     -   Image semantic segmentation (@SemanticSegmentation)@, and
+    --         adjustment (@AdjustmentSemanticSegmentation@) and verification
+    --         (@VerificationSemanticSegmentation@) labeling jobs for this task
+    --         type.
+    --
+    --     -   Video frame object detection (@VideoObjectDetection@), and
+    --         adjustment and verification (@AdjustmentVideoObjectDetection@)
+    --         labeling jobs for this task type.
+    --
+    --     -   Video frame object tracking (@VideoObjectTracking@), and
+    --         adjustment and verification (@AdjustmentVideoObjectTracking@)
+    --         labeling jobs for this task type.
+    --
+    --     -   3D point cloud semantic segmentation
+    --         (@3DPointCloudSemanticSegmentation@), and adjustment and
+    --         verification (@Adjustment3DPointCloudSemanticSegmentation@)
+    --         labeling jobs for this task type.
+    --
+    --     -   3D point cloud object tracking (@3DPointCloudObjectTracking@),
+    --         and adjustment and verification
+    --         (@Adjustment3DPointCloudObjectTracking@) labeling jobs for this
+    --         task type.
+    --
+    -- If you are creating an adjustment or verification labeling job, you must
+    -- use a /different/ @LabelAttributeName@ than the one used in the original
+    -- labeling job. The original labeling job is the Ground Truth labeling job
+    -- that produced the labels that you want verified or adjusted. To learn
+    -- more about adjustment and verification labeling jobs, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>.
+    labelAttributeName :: Prelude.Text,
+    -- | Input data for the labeling job, such as the Amazon S3 location of the
+    -- data objects and the location of the manifest file that describes the
+    -- data objects.
+    --
+    -- You must specify at least one of the following: @S3DataSource@ or
+    -- @SnsDataSource@.
+    --
+    -- -   Use @SnsDataSource@ to specify an SNS input topic for a streaming
+    --     labeling job. If you do not specify and SNS input topic ARN, Ground
+    --     Truth will create a one-time labeling job that stops after all data
+    --     objects in the input manifest file have been labeled.
+    --
+    -- -   Use @S3DataSource@ to specify an input manifest file for both
+    --     streaming and one-time labeling jobs. Adding an @S3DataSource@ is
+    --     optional if you use @SnsDataSource@ to create a streaming labeling
+    --     job.
+    --
+    -- If you use the Amazon Mechanical Turk workforce, your input data should
+    -- not include confidential information, personal information or protected
+    -- health information. Use @ContentClassifiers@ to specify that your data
+    -- is free of personally identifiable information and adult content.
+    inputConfig :: LabelingJobInputConfig,
+    -- | The location of the output data and the Amazon Web Services Key
+    -- Management Service key ID for the key used to encrypt the output data,
+    -- if any.
+    outputConfig :: LabelingJobOutputConfig,
+    -- | The Amazon Resource Number (ARN) that Amazon SageMaker assumes to
+    -- perform tasks on your behalf during data labeling. You must grant this
+    -- role the necessary permissions so that Amazon SageMaker can successfully
+    -- complete data labeling.
+    roleArn :: Prelude.Text,
+    -- | Configures the labeling task and how it is presented to workers;
+    -- including, but not limited to price, keywords, and batch size (task
+    -- count).
+    humanTaskConfig :: HumanTaskConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabelingJob' 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:
+--
+-- 'labelCategoryConfigS3Uri', 'createLabelingJob_labelCategoryConfigS3Uri' - The S3 URI of the file, referred to as a /label category configuration
+-- file/, that defines the categories used to label the data objects.
+--
+-- For 3D point cloud and video frame task types, you can add label
+-- category attributes and frame attributes to your label category
+-- configuration file. To learn how, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-label-category-config.html Create a Labeling Category Configuration File for 3D Point Cloud Labeling Jobs>.
+--
+-- For named entity recognition jobs, in addition to @\"labels\"@, you must
+-- provide worker instructions in the label category configuration file
+-- using the @\"instructions\"@ parameter:
+-- @\"instructions\": {\"shortInstruction\":\"\<h1>Add header\<\/h1>\<p>Add Instructions\<\/p>\", \"fullInstruction\":\"\<p>Add additional instructions.\<\/p>\"}@.
+-- For details and an example, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api Create a Named Entity Recognition Labeling Job (API)>
+-- .
+--
+-- For all other
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html custom tasks>,
+-- your label category configuration file must be a JSON file in the
+-- following format. Identify the labels you want to use by replacing
+-- @label_1@, @label_2@,@...@,@label_n@ with your label categories.
+--
+-- @{ @
+--
+-- @\"document-version\": \"2018-11-28\",@
+--
+-- @\"labels\": [{\"label\": \"label_1\"},{\"label\": \"label_2\"},...{\"label\": \"label_n\"}]@
+--
+-- @}@
+--
+-- Note the following about the label category configuration file:
+--
+-- -   For image classification and text classification (single and
+--     multi-label) you must specify at least two label categories. For all
+--     other task types, the minimum number of label categories required is
+--     one.
+--
+-- -   Each label category must be unique, you cannot specify duplicate
+--     label categories.
+--
+-- -   If you create a 3D point cloud or video frame adjustment or
+--     verification labeling job, you must include
+--     @auditLabelAttributeName@ in the label category configuration. Use
+--     this parameter to enter the
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-LabelAttributeName LabelAttributeName>
+--     of the labeling job you want to adjust or verify annotations of.
+--
+-- 'labelingJobAlgorithmsConfig', 'createLabelingJob_labelingJobAlgorithmsConfig' - Configures the information required to perform automated data labeling.
+--
+-- 'stoppingConditions', 'createLabelingJob_stoppingConditions' - A set of conditions for stopping the labeling job. If any of the
+-- conditions are met, the job is automatically stopped. You can use these
+-- conditions to control the cost of data labeling.
+--
+-- 'tags', 'createLabelingJob_tags' - An array of key\/value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'labelingJobName', 'createLabelingJob_labelingJobName' - The name of the labeling job. This name is used to identify the job in a
+-- list of labeling jobs. Labeling job names must be unique within an
+-- Amazon Web Services account and region. @LabelingJobName@ is not case
+-- sensitive. For example, Example-job and example-job are considered the
+-- same labeling job name by Ground Truth.
+--
+-- 'labelAttributeName', 'createLabelingJob_labelAttributeName' - The attribute name to use for the label in the output manifest file.
+-- This is the key for the key\/value pair formed with the label that a
+-- worker assigns to the object. The @LabelAttributeName@ must meet the
+-- following requirements.
+--
+-- -   The name can\'t end with \"-metadata\".
+--
+-- -   If you are using one of the following
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+--     the attribute name /must/ end with \"-ref\". If the task type you
+--     are using is not listed below, the attribute name /must not/ end
+--     with \"-ref\".
+--
+--     -   Image semantic segmentation (@SemanticSegmentation)@, and
+--         adjustment (@AdjustmentSemanticSegmentation@) and verification
+--         (@VerificationSemanticSegmentation@) labeling jobs for this task
+--         type.
+--
+--     -   Video frame object detection (@VideoObjectDetection@), and
+--         adjustment and verification (@AdjustmentVideoObjectDetection@)
+--         labeling jobs for this task type.
+--
+--     -   Video frame object tracking (@VideoObjectTracking@), and
+--         adjustment and verification (@AdjustmentVideoObjectTracking@)
+--         labeling jobs for this task type.
+--
+--     -   3D point cloud semantic segmentation
+--         (@3DPointCloudSemanticSegmentation@), and adjustment and
+--         verification (@Adjustment3DPointCloudSemanticSegmentation@)
+--         labeling jobs for this task type.
+--
+--     -   3D point cloud object tracking (@3DPointCloudObjectTracking@),
+--         and adjustment and verification
+--         (@Adjustment3DPointCloudObjectTracking@) labeling jobs for this
+--         task type.
+--
+-- If you are creating an adjustment or verification labeling job, you must
+-- use a /different/ @LabelAttributeName@ than the one used in the original
+-- labeling job. The original labeling job is the Ground Truth labeling job
+-- that produced the labels that you want verified or adjusted. To learn
+-- more about adjustment and verification labeling jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>.
+--
+-- 'inputConfig', 'createLabelingJob_inputConfig' - Input data for the labeling job, such as the Amazon S3 location of the
+-- data objects and the location of the manifest file that describes the
+-- data objects.
+--
+-- You must specify at least one of the following: @S3DataSource@ or
+-- @SnsDataSource@.
+--
+-- -   Use @SnsDataSource@ to specify an SNS input topic for a streaming
+--     labeling job. If you do not specify and SNS input topic ARN, Ground
+--     Truth will create a one-time labeling job that stops after all data
+--     objects in the input manifest file have been labeled.
+--
+-- -   Use @S3DataSource@ to specify an input manifest file for both
+--     streaming and one-time labeling jobs. Adding an @S3DataSource@ is
+--     optional if you use @SnsDataSource@ to create a streaming labeling
+--     job.
+--
+-- If you use the Amazon Mechanical Turk workforce, your input data should
+-- not include confidential information, personal information or protected
+-- health information. Use @ContentClassifiers@ to specify that your data
+-- is free of personally identifiable information and adult content.
+--
+-- 'outputConfig', 'createLabelingJob_outputConfig' - The location of the output data and the Amazon Web Services Key
+-- Management Service key ID for the key used to encrypt the output data,
+-- if any.
+--
+-- 'roleArn', 'createLabelingJob_roleArn' - The Amazon Resource Number (ARN) that Amazon SageMaker assumes to
+-- perform tasks on your behalf during data labeling. You must grant this
+-- role the necessary permissions so that Amazon SageMaker can successfully
+-- complete data labeling.
+--
+-- 'humanTaskConfig', 'createLabelingJob_humanTaskConfig' - Configures the labeling task and how it is presented to workers;
+-- including, but not limited to price, keywords, and batch size (task
+-- count).
+newCreateLabelingJob ::
+  -- | 'labelingJobName'
+  Prelude.Text ->
+  -- | 'labelAttributeName'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  LabelingJobInputConfig ->
+  -- | 'outputConfig'
+  LabelingJobOutputConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'humanTaskConfig'
+  HumanTaskConfig ->
+  CreateLabelingJob
+newCreateLabelingJob
+  pLabelingJobName_
+  pLabelAttributeName_
+  pInputConfig_
+  pOutputConfig_
+  pRoleArn_
+  pHumanTaskConfig_ =
+    CreateLabelingJob'
+      { labelCategoryConfigS3Uri =
+          Prelude.Nothing,
+        labelingJobAlgorithmsConfig = Prelude.Nothing,
+        stoppingConditions = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        labelingJobName = pLabelingJobName_,
+        labelAttributeName = pLabelAttributeName_,
+        inputConfig = pInputConfig_,
+        outputConfig = pOutputConfig_,
+        roleArn = pRoleArn_,
+        humanTaskConfig = pHumanTaskConfig_
+      }
+
+-- | The S3 URI of the file, referred to as a /label category configuration
+-- file/, that defines the categories used to label the data objects.
+--
+-- For 3D point cloud and video frame task types, you can add label
+-- category attributes and frame attributes to your label category
+-- configuration file. To learn how, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-label-category-config.html Create a Labeling Category Configuration File for 3D Point Cloud Labeling Jobs>.
+--
+-- For named entity recognition jobs, in addition to @\"labels\"@, you must
+-- provide worker instructions in the label category configuration file
+-- using the @\"instructions\"@ parameter:
+-- @\"instructions\": {\"shortInstruction\":\"\<h1>Add header\<\/h1>\<p>Add Instructions\<\/p>\", \"fullInstruction\":\"\<p>Add additional instructions.\<\/p>\"}@.
+-- For details and an example, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api Create a Named Entity Recognition Labeling Job (API)>
+-- .
+--
+-- For all other
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html custom tasks>,
+-- your label category configuration file must be a JSON file in the
+-- following format. Identify the labels you want to use by replacing
+-- @label_1@, @label_2@,@...@,@label_n@ with your label categories.
+--
+-- @{ @
+--
+-- @\"document-version\": \"2018-11-28\",@
+--
+-- @\"labels\": [{\"label\": \"label_1\"},{\"label\": \"label_2\"},...{\"label\": \"label_n\"}]@
+--
+-- @}@
+--
+-- Note the following about the label category configuration file:
+--
+-- -   For image classification and text classification (single and
+--     multi-label) you must specify at least two label categories. For all
+--     other task types, the minimum number of label categories required is
+--     one.
+--
+-- -   Each label category must be unique, you cannot specify duplicate
+--     label categories.
+--
+-- -   If you create a 3D point cloud or video frame adjustment or
+--     verification labeling job, you must include
+--     @auditLabelAttributeName@ in the label category configuration. Use
+--     this parameter to enter the
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-LabelAttributeName LabelAttributeName>
+--     of the labeling job you want to adjust or verify annotations of.
+createLabelingJob_labelCategoryConfigS3Uri :: Lens.Lens' CreateLabelingJob (Prelude.Maybe Prelude.Text)
+createLabelingJob_labelCategoryConfigS3Uri = Lens.lens (\CreateLabelingJob' {labelCategoryConfigS3Uri} -> labelCategoryConfigS3Uri) (\s@CreateLabelingJob' {} a -> s {labelCategoryConfigS3Uri = a} :: CreateLabelingJob)
+
+-- | Configures the information required to perform automated data labeling.
+createLabelingJob_labelingJobAlgorithmsConfig :: Lens.Lens' CreateLabelingJob (Prelude.Maybe LabelingJobAlgorithmsConfig)
+createLabelingJob_labelingJobAlgorithmsConfig = Lens.lens (\CreateLabelingJob' {labelingJobAlgorithmsConfig} -> labelingJobAlgorithmsConfig) (\s@CreateLabelingJob' {} a -> s {labelingJobAlgorithmsConfig = a} :: CreateLabelingJob)
+
+-- | A set of conditions for stopping the labeling job. If any of the
+-- conditions are met, the job is automatically stopped. You can use these
+-- conditions to control the cost of data labeling.
+createLabelingJob_stoppingConditions :: Lens.Lens' CreateLabelingJob (Prelude.Maybe LabelingJobStoppingConditions)
+createLabelingJob_stoppingConditions = Lens.lens (\CreateLabelingJob' {stoppingConditions} -> stoppingConditions) (\s@CreateLabelingJob' {} a -> s {stoppingConditions = a} :: CreateLabelingJob)
+
+-- | An array of key\/value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createLabelingJob_tags :: Lens.Lens' CreateLabelingJob (Prelude.Maybe [Tag])
+createLabelingJob_tags = Lens.lens (\CreateLabelingJob' {tags} -> tags) (\s@CreateLabelingJob' {} a -> s {tags = a} :: CreateLabelingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the labeling job. This name is used to identify the job in a
+-- list of labeling jobs. Labeling job names must be unique within an
+-- Amazon Web Services account and region. @LabelingJobName@ is not case
+-- sensitive. For example, Example-job and example-job are considered the
+-- same labeling job name by Ground Truth.
+createLabelingJob_labelingJobName :: Lens.Lens' CreateLabelingJob Prelude.Text
+createLabelingJob_labelingJobName = Lens.lens (\CreateLabelingJob' {labelingJobName} -> labelingJobName) (\s@CreateLabelingJob' {} a -> s {labelingJobName = a} :: CreateLabelingJob)
+
+-- | The attribute name to use for the label in the output manifest file.
+-- This is the key for the key\/value pair formed with the label that a
+-- worker assigns to the object. The @LabelAttributeName@ must meet the
+-- following requirements.
+--
+-- -   The name can\'t end with \"-metadata\".
+--
+-- -   If you are using one of the following
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+--     the attribute name /must/ end with \"-ref\". If the task type you
+--     are using is not listed below, the attribute name /must not/ end
+--     with \"-ref\".
+--
+--     -   Image semantic segmentation (@SemanticSegmentation)@, and
+--         adjustment (@AdjustmentSemanticSegmentation@) and verification
+--         (@VerificationSemanticSegmentation@) labeling jobs for this task
+--         type.
+--
+--     -   Video frame object detection (@VideoObjectDetection@), and
+--         adjustment and verification (@AdjustmentVideoObjectDetection@)
+--         labeling jobs for this task type.
+--
+--     -   Video frame object tracking (@VideoObjectTracking@), and
+--         adjustment and verification (@AdjustmentVideoObjectTracking@)
+--         labeling jobs for this task type.
+--
+--     -   3D point cloud semantic segmentation
+--         (@3DPointCloudSemanticSegmentation@), and adjustment and
+--         verification (@Adjustment3DPointCloudSemanticSegmentation@)
+--         labeling jobs for this task type.
+--
+--     -   3D point cloud object tracking (@3DPointCloudObjectTracking@),
+--         and adjustment and verification
+--         (@Adjustment3DPointCloudObjectTracking@) labeling jobs for this
+--         task type.
+--
+-- If you are creating an adjustment or verification labeling job, you must
+-- use a /different/ @LabelAttributeName@ than the one used in the original
+-- labeling job. The original labeling job is the Ground Truth labeling job
+-- that produced the labels that you want verified or adjusted. To learn
+-- more about adjustment and verification labeling jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>.
+createLabelingJob_labelAttributeName :: Lens.Lens' CreateLabelingJob Prelude.Text
+createLabelingJob_labelAttributeName = Lens.lens (\CreateLabelingJob' {labelAttributeName} -> labelAttributeName) (\s@CreateLabelingJob' {} a -> s {labelAttributeName = a} :: CreateLabelingJob)
+
+-- | Input data for the labeling job, such as the Amazon S3 location of the
+-- data objects and the location of the manifest file that describes the
+-- data objects.
+--
+-- You must specify at least one of the following: @S3DataSource@ or
+-- @SnsDataSource@.
+--
+-- -   Use @SnsDataSource@ to specify an SNS input topic for a streaming
+--     labeling job. If you do not specify and SNS input topic ARN, Ground
+--     Truth will create a one-time labeling job that stops after all data
+--     objects in the input manifest file have been labeled.
+--
+-- -   Use @S3DataSource@ to specify an input manifest file for both
+--     streaming and one-time labeling jobs. Adding an @S3DataSource@ is
+--     optional if you use @SnsDataSource@ to create a streaming labeling
+--     job.
+--
+-- If you use the Amazon Mechanical Turk workforce, your input data should
+-- not include confidential information, personal information or protected
+-- health information. Use @ContentClassifiers@ to specify that your data
+-- is free of personally identifiable information and adult content.
+createLabelingJob_inputConfig :: Lens.Lens' CreateLabelingJob LabelingJobInputConfig
+createLabelingJob_inputConfig = Lens.lens (\CreateLabelingJob' {inputConfig} -> inputConfig) (\s@CreateLabelingJob' {} a -> s {inputConfig = a} :: CreateLabelingJob)
+
+-- | The location of the output data and the Amazon Web Services Key
+-- Management Service key ID for the key used to encrypt the output data,
+-- if any.
+createLabelingJob_outputConfig :: Lens.Lens' CreateLabelingJob LabelingJobOutputConfig
+createLabelingJob_outputConfig = Lens.lens (\CreateLabelingJob' {outputConfig} -> outputConfig) (\s@CreateLabelingJob' {} a -> s {outputConfig = a} :: CreateLabelingJob)
+
+-- | The Amazon Resource Number (ARN) that Amazon SageMaker assumes to
+-- perform tasks on your behalf during data labeling. You must grant this
+-- role the necessary permissions so that Amazon SageMaker can successfully
+-- complete data labeling.
+createLabelingJob_roleArn :: Lens.Lens' CreateLabelingJob Prelude.Text
+createLabelingJob_roleArn = Lens.lens (\CreateLabelingJob' {roleArn} -> roleArn) (\s@CreateLabelingJob' {} a -> s {roleArn = a} :: CreateLabelingJob)
+
+-- | Configures the labeling task and how it is presented to workers;
+-- including, but not limited to price, keywords, and batch size (task
+-- count).
+createLabelingJob_humanTaskConfig :: Lens.Lens' CreateLabelingJob HumanTaskConfig
+createLabelingJob_humanTaskConfig = Lens.lens (\CreateLabelingJob' {humanTaskConfig} -> humanTaskConfig) (\s@CreateLabelingJob' {} a -> s {humanTaskConfig = a} :: CreateLabelingJob)
+
+instance Core.AWSRequest CreateLabelingJob where
+  type
+    AWSResponse CreateLabelingJob =
+      CreateLabelingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLabelingJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "LabelingJobArn")
+      )
+
+instance Prelude.Hashable CreateLabelingJob where
+  hashWithSalt _salt CreateLabelingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelCategoryConfigS3Uri
+      `Prelude.hashWithSalt` labelingJobAlgorithmsConfig
+      `Prelude.hashWithSalt` stoppingConditions
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` labelingJobName
+      `Prelude.hashWithSalt` labelAttributeName
+      `Prelude.hashWithSalt` inputConfig
+      `Prelude.hashWithSalt` outputConfig
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` humanTaskConfig
+
+instance Prelude.NFData CreateLabelingJob where
+  rnf CreateLabelingJob' {..} =
+    Prelude.rnf labelCategoryConfigS3Uri
+      `Prelude.seq` Prelude.rnf labelingJobAlgorithmsConfig
+      `Prelude.seq` Prelude.rnf stoppingConditions
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf labelingJobName
+      `Prelude.seq` Prelude.rnf labelAttributeName
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf humanTaskConfig
+
+instance Data.ToHeaders CreateLabelingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateLabelingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLabelingJob where
+  toJSON CreateLabelingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LabelCategoryConfigS3Uri" Data..=)
+              Prelude.<$> labelCategoryConfigS3Uri,
+            ("LabelingJobAlgorithmsConfig" Data..=)
+              Prelude.<$> labelingJobAlgorithmsConfig,
+            ("StoppingConditions" Data..=)
+              Prelude.<$> stoppingConditions,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("LabelingJobName" Data..= labelingJobName),
+            Prelude.Just
+              ("LabelAttributeName" Data..= labelAttributeName),
+            Prelude.Just ("InputConfig" Data..= inputConfig),
+            Prelude.Just ("OutputConfig" Data..= outputConfig),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just
+              ("HumanTaskConfig" Data..= humanTaskConfig)
+          ]
+      )
+
+instance Data.ToPath CreateLabelingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateLabelingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLabelingJobResponse' smart constructor.
+data CreateLabelingJobResponse = CreateLabelingJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the labeling job. You use this ARN to
+    -- identify the labeling job.
+    labelingJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabelingJobResponse' 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', 'createLabelingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'labelingJobArn', 'createLabelingJobResponse_labelingJobArn' - The Amazon Resource Name (ARN) of the labeling job. You use this ARN to
+-- identify the labeling job.
+newCreateLabelingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'labelingJobArn'
+  Prelude.Text ->
+  CreateLabelingJobResponse
+newCreateLabelingJobResponse
+  pHttpStatus_
+  pLabelingJobArn_ =
+    CreateLabelingJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        labelingJobArn = pLabelingJobArn_
+      }
+
+-- | The response's http status code.
+createLabelingJobResponse_httpStatus :: Lens.Lens' CreateLabelingJobResponse Prelude.Int
+createLabelingJobResponse_httpStatus = Lens.lens (\CreateLabelingJobResponse' {httpStatus} -> httpStatus) (\s@CreateLabelingJobResponse' {} a -> s {httpStatus = a} :: CreateLabelingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the labeling job. You use this ARN to
+-- identify the labeling job.
+createLabelingJobResponse_labelingJobArn :: Lens.Lens' CreateLabelingJobResponse Prelude.Text
+createLabelingJobResponse_labelingJobArn = Lens.lens (\CreateLabelingJobResponse' {labelingJobArn} -> labelingJobArn) (\s@CreateLabelingJobResponse' {} a -> s {labelingJobArn = a} :: CreateLabelingJobResponse)
+
+instance Prelude.NFData CreateLabelingJobResponse where
+  rnf CreateLabelingJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf labelingJobArn
diff --git a/gen/Amazonka/SageMaker/CreateModel.hs b/gen/Amazonka/SageMaker/CreateModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModel.hs
@@ -0,0 +1,354 @@
+{-# 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.CreateModel
+-- 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 in SageMaker. In the request, you name the model and
+-- describe a primary container. For the primary container, you specify the
+-- Docker image that contains inference code, artifacts (from prior
+-- training), and a custom environment map that the inference code uses
+-- when you deploy the model for predictions.
+--
+-- Use this API to create a model if you want to use SageMaker hosting
+-- services or run a batch transform job.
+--
+-- To host your model, you create an endpoint configuration with the
+-- @CreateEndpointConfig@ API, and then create an endpoint with the
+-- @CreateEndpoint@ API. SageMaker then deploys all of the containers that
+-- you defined for the model in the hosting environment.
+--
+-- For an example that calls this method when deploying a model to
+-- SageMaker hosting services, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html#realtime-endpoints-deployment-create-model Create a Model (Amazon Web Services SDK for Python (Boto 3)).>
+--
+-- To run a batch transform using your model, you start a job with the
+-- @CreateTransformJob@ API. SageMaker uses your model and your dataset to
+-- get inferences which are then saved to a specified S3 location.
+--
+-- In the request, you also provide an IAM role that SageMaker can assume
+-- to access model artifacts and docker image for deployment on ML compute
+-- hosting instances or for batch transform jobs. In addition, you also use
+-- the IAM role to manage permissions the inference code needs. For
+-- example, if the inference code access any other Amazon Web Services
+-- resources, you grant necessary permissions via this role.
+module Amazonka.SageMaker.CreateModel
+  ( -- * Creating a Request
+    CreateModel (..),
+    newCreateModel,
+
+    -- * Request Lenses
+    createModel_containers,
+    createModel_enableNetworkIsolation,
+    createModel_inferenceExecutionConfig,
+    createModel_primaryContainer,
+    createModel_tags,
+    createModel_vpcConfig,
+    createModel_modelName,
+    createModel_executionRoleArn,
+
+    -- * Destructuring the Response
+    CreateModelResponse (..),
+    newCreateModelResponse,
+
+    -- * Response Lenses
+    createModelResponse_httpStatus,
+    createModelResponse_modelArn,
+  )
+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:/ 'newCreateModel' smart constructor.
+data CreateModel = CreateModel'
+  { -- | Specifies the containers in the inference pipeline.
+    containers :: Prelude.Maybe [ContainerDefinition],
+    -- | Isolates the model container. No inbound or outbound network calls can
+    -- be made to or from the model container.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies details of how containers in a multi-container endpoint are
+    -- called.
+    inferenceExecutionConfig :: Prelude.Maybe InferenceExecutionConfig,
+    -- | The location of the primary docker image containing inference code,
+    -- associated artifacts, and custom environment map that the inference code
+    -- uses when the model is deployed for predictions.
+    primaryContainer :: Prelude.Maybe ContainerDefinition,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | A VpcConfig object that specifies the VPC that you want your model to
+    -- connect to. Control access to and from your model container by
+    -- configuring the VPC. @VpcConfig@ is used in hosting services and in
+    -- batch transform. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+    -- and
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-vpc.html Protect Data in Batch Transform Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe VpcConfig,
+    -- | The name of the new model.
+    modelName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume
+    -- to access model artifacts and docker image for deployment on ML compute
+    -- instances or for batch transform jobs. Deploying on ML compute instances
+    -- is part of model hosting. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+    --
+    -- To be able to pass this role to SageMaker, the caller of this API must
+    -- have the @iam:PassRole@ permission.
+    executionRoleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModel' 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:
+--
+-- 'containers', 'createModel_containers' - Specifies the containers in the inference pipeline.
+--
+-- 'enableNetworkIsolation', 'createModel_enableNetworkIsolation' - Isolates the model container. No inbound or outbound network calls can
+-- be made to or from the model container.
+--
+-- 'inferenceExecutionConfig', 'createModel_inferenceExecutionConfig' - Specifies details of how containers in a multi-container endpoint are
+-- called.
+--
+-- 'primaryContainer', 'createModel_primaryContainer' - The location of the primary docker image containing inference code,
+-- associated artifacts, and custom environment map that the inference code
+-- uses when the model is deployed for predictions.
+--
+-- 'tags', 'createModel_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'vpcConfig', 'createModel_vpcConfig' - A VpcConfig object that specifies the VPC that you want your model to
+-- connect to. Control access to and from your model container by
+-- configuring the VPC. @VpcConfig@ is used in hosting services and in
+-- batch transform. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-vpc.html Protect Data in Batch Transform Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- 'modelName', 'createModel_modelName' - The name of the new model.
+--
+-- 'executionRoleArn', 'createModel_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume
+-- to access model artifacts and docker image for deployment on ML compute
+-- instances or for batch transform jobs. Deploying on ML compute instances
+-- is part of model hosting. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+newCreateModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  CreateModel
+newCreateModel pModelName_ pExecutionRoleArn_ =
+  CreateModel'
+    { containers = Prelude.Nothing,
+      enableNetworkIsolation = Prelude.Nothing,
+      inferenceExecutionConfig = Prelude.Nothing,
+      primaryContainer = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcConfig = Prelude.Nothing,
+      modelName = pModelName_,
+      executionRoleArn = pExecutionRoleArn_
+    }
+
+-- | Specifies the containers in the inference pipeline.
+createModel_containers :: Lens.Lens' CreateModel (Prelude.Maybe [ContainerDefinition])
+createModel_containers = Lens.lens (\CreateModel' {containers} -> containers) (\s@CreateModel' {} a -> s {containers = a} :: CreateModel) Prelude.. Lens.mapping Lens.coerced
+
+-- | Isolates the model container. No inbound or outbound network calls can
+-- be made to or from the model container.
+createModel_enableNetworkIsolation :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.Bool)
+createModel_enableNetworkIsolation = Lens.lens (\CreateModel' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@CreateModel' {} a -> s {enableNetworkIsolation = a} :: CreateModel)
+
+-- | Specifies details of how containers in a multi-container endpoint are
+-- called.
+createModel_inferenceExecutionConfig :: Lens.Lens' CreateModel (Prelude.Maybe InferenceExecutionConfig)
+createModel_inferenceExecutionConfig = Lens.lens (\CreateModel' {inferenceExecutionConfig} -> inferenceExecutionConfig) (\s@CreateModel' {} a -> s {inferenceExecutionConfig = a} :: CreateModel)
+
+-- | The location of the primary docker image containing inference code,
+-- associated artifacts, and custom environment map that the inference code
+-- uses when the model is deployed for predictions.
+createModel_primaryContainer :: Lens.Lens' CreateModel (Prelude.Maybe ContainerDefinition)
+createModel_primaryContainer = Lens.lens (\CreateModel' {primaryContainer} -> primaryContainer) (\s@CreateModel' {} a -> s {primaryContainer = a} :: CreateModel)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createModel_tags :: Lens.Lens' CreateModel (Prelude.Maybe [Tag])
+createModel_tags = Lens.lens (\CreateModel' {tags} -> tags) (\s@CreateModel' {} a -> s {tags = a} :: CreateModel) Prelude.. Lens.mapping Lens.coerced
+
+-- | A VpcConfig object that specifies the VPC that you want your model to
+-- connect to. Control access to and from your model container by
+-- configuring the VPC. @VpcConfig@ is used in hosting services and in
+-- batch transform. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-vpc.html Protect Data in Batch Transform Jobs by Using an Amazon Virtual Private Cloud>.
+createModel_vpcConfig :: Lens.Lens' CreateModel (Prelude.Maybe VpcConfig)
+createModel_vpcConfig = Lens.lens (\CreateModel' {vpcConfig} -> vpcConfig) (\s@CreateModel' {} a -> s {vpcConfig = a} :: CreateModel)
+
+-- | The name of the new model.
+createModel_modelName :: Lens.Lens' CreateModel Prelude.Text
+createModel_modelName = Lens.lens (\CreateModel' {modelName} -> modelName) (\s@CreateModel' {} a -> s {modelName = a} :: CreateModel)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume
+-- to access model artifacts and docker image for deployment on ML compute
+-- instances or for batch transform jobs. Deploying on ML compute instances
+-- is part of model hosting. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+createModel_executionRoleArn :: Lens.Lens' CreateModel Prelude.Text
+createModel_executionRoleArn = Lens.lens (\CreateModel' {executionRoleArn} -> executionRoleArn) (\s@CreateModel' {} a -> s {executionRoleArn = a} :: CreateModel)
+
+instance Core.AWSRequest CreateModel where
+  type AWSResponse CreateModel = CreateModelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelArn")
+      )
+
+instance Prelude.Hashable CreateModel where
+  hashWithSalt _salt CreateModel' {..} =
+    _salt
+      `Prelude.hashWithSalt` containers
+      `Prelude.hashWithSalt` enableNetworkIsolation
+      `Prelude.hashWithSalt` inferenceExecutionConfig
+      `Prelude.hashWithSalt` primaryContainer
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcConfig
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` executionRoleArn
+
+instance Prelude.NFData CreateModel where
+  rnf CreateModel' {..} =
+    Prelude.rnf containers
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf inferenceExecutionConfig
+      `Prelude.seq` Prelude.rnf primaryContainer
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf executionRoleArn
+
+instance Data.ToHeaders CreateModel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateModel" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModel where
+  toJSON CreateModel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Containers" Data..=) Prelude.<$> containers,
+            ("EnableNetworkIsolation" Data..=)
+              Prelude.<$> enableNetworkIsolation,
+            ("InferenceExecutionConfig" Data..=)
+              Prelude.<$> inferenceExecutionConfig,
+            ("PrimaryContainer" Data..=)
+              Prelude.<$> primaryContainer,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig,
+            Prelude.Just ("ModelName" Data..= modelName),
+            Prelude.Just
+              ("ExecutionRoleArn" Data..= executionRoleArn)
+          ]
+      )
+
+instance Data.ToPath CreateModel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelResponse' smart constructor.
+data CreateModelResponse = CreateModelResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the model created in SageMaker.
+    modelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelResponse' 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', 'createModelResponse_httpStatus' - The response's http status code.
+--
+-- 'modelArn', 'createModelResponse_modelArn' - The ARN of the model created in SageMaker.
+newCreateModelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelArn'
+  Prelude.Text ->
+  CreateModelResponse
+newCreateModelResponse pHttpStatus_ pModelArn_ =
+  CreateModelResponse'
+    { httpStatus = pHttpStatus_,
+      modelArn = pModelArn_
+    }
+
+-- | The response's http status code.
+createModelResponse_httpStatus :: Lens.Lens' CreateModelResponse Prelude.Int
+createModelResponse_httpStatus = Lens.lens (\CreateModelResponse' {httpStatus} -> httpStatus) (\s@CreateModelResponse' {} a -> s {httpStatus = a} :: CreateModelResponse)
+
+-- | The ARN of the model created in SageMaker.
+createModelResponse_modelArn :: Lens.Lens' CreateModelResponse Prelude.Text
+createModelResponse_modelArn = Lens.lens (\CreateModelResponse' {modelArn} -> modelArn) (\s@CreateModelResponse' {} a -> s {modelArn = a} :: CreateModelResponse)
+
+instance Prelude.NFData CreateModelResponse where
+  rnf CreateModelResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelArn
diff --git a/gen/Amazonka/SageMaker/CreateModelBiasJobDefinition.hs b/gen/Amazonka/SageMaker/CreateModelBiasJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelBiasJobDefinition.hs
@@ -0,0 +1,338 @@
+{-# 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.CreateModelBiasJobDefinition
+-- 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 the definition for a model bias job.
+module Amazonka.SageMaker.CreateModelBiasJobDefinition
+  ( -- * Creating a Request
+    CreateModelBiasJobDefinition (..),
+    newCreateModelBiasJobDefinition,
+
+    -- * Request Lenses
+    createModelBiasJobDefinition_modelBiasBaselineConfig,
+    createModelBiasJobDefinition_networkConfig,
+    createModelBiasJobDefinition_stoppingCondition,
+    createModelBiasJobDefinition_tags,
+    createModelBiasJobDefinition_jobDefinitionName,
+    createModelBiasJobDefinition_modelBiasAppSpecification,
+    createModelBiasJobDefinition_modelBiasJobInput,
+    createModelBiasJobDefinition_modelBiasJobOutputConfig,
+    createModelBiasJobDefinition_jobResources,
+    createModelBiasJobDefinition_roleArn,
+
+    -- * Destructuring the Response
+    CreateModelBiasJobDefinitionResponse (..),
+    newCreateModelBiasJobDefinitionResponse,
+
+    -- * Response Lenses
+    createModelBiasJobDefinitionResponse_httpStatus,
+    createModelBiasJobDefinitionResponse_jobDefinitionArn,
+  )
+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:/ 'newCreateModelBiasJobDefinition' smart constructor.
+data CreateModelBiasJobDefinition = CreateModelBiasJobDefinition'
+  { -- | The baseline configuration for a model bias job.
+    modelBiasBaselineConfig :: Prelude.Maybe ModelBiasBaselineConfig,
+    -- | Networking options for a model bias job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | (Optional) An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the bias job definition. The name must be unique within an
+    -- Amazon Web Services Region in the Amazon Web Services account.
+    jobDefinitionName :: Prelude.Text,
+    -- | Configures the model bias job to run a specified Docker container image.
+    modelBiasAppSpecification :: ModelBiasAppSpecification,
+    -- | Inputs for the model bias job.
+    modelBiasJobInput :: ModelBiasJobInput,
+    modelBiasJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelBiasJobDefinition' 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:
+--
+-- 'modelBiasBaselineConfig', 'createModelBiasJobDefinition_modelBiasBaselineConfig' - The baseline configuration for a model bias job.
+--
+-- 'networkConfig', 'createModelBiasJobDefinition_networkConfig' - Networking options for a model bias job.
+--
+-- 'stoppingCondition', 'createModelBiasJobDefinition_stoppingCondition' - Undocumented member.
+--
+-- 'tags', 'createModelBiasJobDefinition_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'jobDefinitionName', 'createModelBiasJobDefinition_jobDefinitionName' - The name of the bias job definition. The name must be unique within an
+-- Amazon Web Services Region in the Amazon Web Services account.
+--
+-- 'modelBiasAppSpecification', 'createModelBiasJobDefinition_modelBiasAppSpecification' - Configures the model bias job to run a specified Docker container image.
+--
+-- 'modelBiasJobInput', 'createModelBiasJobDefinition_modelBiasJobInput' - Inputs for the model bias job.
+--
+-- 'modelBiasJobOutputConfig', 'createModelBiasJobDefinition_modelBiasJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'createModelBiasJobDefinition_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'createModelBiasJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newCreateModelBiasJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'modelBiasAppSpecification'
+  ModelBiasAppSpecification ->
+  -- | 'modelBiasJobInput'
+  ModelBiasJobInput ->
+  -- | 'modelBiasJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateModelBiasJobDefinition
+newCreateModelBiasJobDefinition
+  pJobDefinitionName_
+  pModelBiasAppSpecification_
+  pModelBiasJobInput_
+  pModelBiasJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    CreateModelBiasJobDefinition'
+      { modelBiasBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        jobDefinitionName = pJobDefinitionName_,
+        modelBiasAppSpecification =
+          pModelBiasAppSpecification_,
+        modelBiasJobInput = pModelBiasJobInput_,
+        modelBiasJobOutputConfig =
+          pModelBiasJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | The baseline configuration for a model bias job.
+createModelBiasJobDefinition_modelBiasBaselineConfig :: Lens.Lens' CreateModelBiasJobDefinition (Prelude.Maybe ModelBiasBaselineConfig)
+createModelBiasJobDefinition_modelBiasBaselineConfig = Lens.lens (\CreateModelBiasJobDefinition' {modelBiasBaselineConfig} -> modelBiasBaselineConfig) (\s@CreateModelBiasJobDefinition' {} a -> s {modelBiasBaselineConfig = a} :: CreateModelBiasJobDefinition)
+
+-- | Networking options for a model bias job.
+createModelBiasJobDefinition_networkConfig :: Lens.Lens' CreateModelBiasJobDefinition (Prelude.Maybe MonitoringNetworkConfig)
+createModelBiasJobDefinition_networkConfig = Lens.lens (\CreateModelBiasJobDefinition' {networkConfig} -> networkConfig) (\s@CreateModelBiasJobDefinition' {} a -> s {networkConfig = a} :: CreateModelBiasJobDefinition)
+
+-- | Undocumented member.
+createModelBiasJobDefinition_stoppingCondition :: Lens.Lens' CreateModelBiasJobDefinition (Prelude.Maybe MonitoringStoppingCondition)
+createModelBiasJobDefinition_stoppingCondition = Lens.lens (\CreateModelBiasJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@CreateModelBiasJobDefinition' {} a -> s {stoppingCondition = a} :: CreateModelBiasJobDefinition)
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createModelBiasJobDefinition_tags :: Lens.Lens' CreateModelBiasJobDefinition (Prelude.Maybe [Tag])
+createModelBiasJobDefinition_tags = Lens.lens (\CreateModelBiasJobDefinition' {tags} -> tags) (\s@CreateModelBiasJobDefinition' {} a -> s {tags = a} :: CreateModelBiasJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the bias job definition. The name must be unique within an
+-- Amazon Web Services Region in the Amazon Web Services account.
+createModelBiasJobDefinition_jobDefinitionName :: Lens.Lens' CreateModelBiasJobDefinition Prelude.Text
+createModelBiasJobDefinition_jobDefinitionName = Lens.lens (\CreateModelBiasJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@CreateModelBiasJobDefinition' {} a -> s {jobDefinitionName = a} :: CreateModelBiasJobDefinition)
+
+-- | Configures the model bias job to run a specified Docker container image.
+createModelBiasJobDefinition_modelBiasAppSpecification :: Lens.Lens' CreateModelBiasJobDefinition ModelBiasAppSpecification
+createModelBiasJobDefinition_modelBiasAppSpecification = Lens.lens (\CreateModelBiasJobDefinition' {modelBiasAppSpecification} -> modelBiasAppSpecification) (\s@CreateModelBiasJobDefinition' {} a -> s {modelBiasAppSpecification = a} :: CreateModelBiasJobDefinition)
+
+-- | Inputs for the model bias job.
+createModelBiasJobDefinition_modelBiasJobInput :: Lens.Lens' CreateModelBiasJobDefinition ModelBiasJobInput
+createModelBiasJobDefinition_modelBiasJobInput = Lens.lens (\CreateModelBiasJobDefinition' {modelBiasJobInput} -> modelBiasJobInput) (\s@CreateModelBiasJobDefinition' {} a -> s {modelBiasJobInput = a} :: CreateModelBiasJobDefinition)
+
+-- | Undocumented member.
+createModelBiasJobDefinition_modelBiasJobOutputConfig :: Lens.Lens' CreateModelBiasJobDefinition MonitoringOutputConfig
+createModelBiasJobDefinition_modelBiasJobOutputConfig = Lens.lens (\CreateModelBiasJobDefinition' {modelBiasJobOutputConfig} -> modelBiasJobOutputConfig) (\s@CreateModelBiasJobDefinition' {} a -> s {modelBiasJobOutputConfig = a} :: CreateModelBiasJobDefinition)
+
+-- | Undocumented member.
+createModelBiasJobDefinition_jobResources :: Lens.Lens' CreateModelBiasJobDefinition MonitoringResources
+createModelBiasJobDefinition_jobResources = Lens.lens (\CreateModelBiasJobDefinition' {jobResources} -> jobResources) (\s@CreateModelBiasJobDefinition' {} a -> s {jobResources = a} :: CreateModelBiasJobDefinition)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+createModelBiasJobDefinition_roleArn :: Lens.Lens' CreateModelBiasJobDefinition Prelude.Text
+createModelBiasJobDefinition_roleArn = Lens.lens (\CreateModelBiasJobDefinition' {roleArn} -> roleArn) (\s@CreateModelBiasJobDefinition' {} a -> s {roleArn = a} :: CreateModelBiasJobDefinition)
+
+instance Core.AWSRequest CreateModelBiasJobDefinition where
+  type
+    AWSResponse CreateModelBiasJobDefinition =
+      CreateModelBiasJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelBiasJobDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+      )
+
+instance
+  Prelude.Hashable
+    CreateModelBiasJobDefinition
+  where
+  hashWithSalt _salt CreateModelBiasJobDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelBiasBaselineConfig
+      `Prelude.hashWithSalt` networkConfig
+      `Prelude.hashWithSalt` stoppingCondition
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` jobDefinitionName
+      `Prelude.hashWithSalt` modelBiasAppSpecification
+      `Prelude.hashWithSalt` modelBiasJobInput
+      `Prelude.hashWithSalt` modelBiasJobOutputConfig
+      `Prelude.hashWithSalt` jobResources
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateModelBiasJobDefinition where
+  rnf CreateModelBiasJobDefinition' {..} =
+    Prelude.rnf modelBiasBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf modelBiasAppSpecification
+      `Prelude.seq` Prelude.rnf modelBiasJobInput
+      `Prelude.seq` Prelude.rnf modelBiasJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateModelBiasJobDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateModelBiasJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModelBiasJobDefinition where
+  toJSON CreateModelBiasJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelBiasBaselineConfig" Data..=)
+              Prelude.<$> modelBiasBaselineConfig,
+            ("NetworkConfig" Data..=) Prelude.<$> networkConfig,
+            ("StoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName),
+            Prelude.Just
+              ( "ModelBiasAppSpecification"
+                  Data..= modelBiasAppSpecification
+              ),
+            Prelude.Just
+              ("ModelBiasJobInput" Data..= modelBiasJobInput),
+            Prelude.Just
+              ( "ModelBiasJobOutputConfig"
+                  Data..= modelBiasJobOutputConfig
+              ),
+            Prelude.Just ("JobResources" Data..= jobResources),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateModelBiasJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModelBiasJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelBiasJobDefinitionResponse' smart constructor.
+data CreateModelBiasJobDefinitionResponse = CreateModelBiasJobDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model bias job.
+    jobDefinitionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelBiasJobDefinitionResponse' 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', 'createModelBiasJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'createModelBiasJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model bias job.
+newCreateModelBiasJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  CreateModelBiasJobDefinitionResponse
+newCreateModelBiasJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_ =
+    CreateModelBiasJobDefinitionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        jobDefinitionArn = pJobDefinitionArn_
+      }
+
+-- | The response's http status code.
+createModelBiasJobDefinitionResponse_httpStatus :: Lens.Lens' CreateModelBiasJobDefinitionResponse Prelude.Int
+createModelBiasJobDefinitionResponse_httpStatus = Lens.lens (\CreateModelBiasJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@CreateModelBiasJobDefinitionResponse' {} a -> s {httpStatus = a} :: CreateModelBiasJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the model bias job.
+createModelBiasJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' CreateModelBiasJobDefinitionResponse Prelude.Text
+createModelBiasJobDefinitionResponse_jobDefinitionArn = Lens.lens (\CreateModelBiasJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@CreateModelBiasJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: CreateModelBiasJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    CreateModelBiasJobDefinitionResponse
+  where
+  rnf CreateModelBiasJobDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionArn
diff --git a/gen/Amazonka/SageMaker/CreateModelCard.hs b/gen/Amazonka/SageMaker/CreateModelCard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelCard.hs
@@ -0,0 +1,283 @@
+{-# 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.CreateModelCard
+-- 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 an Amazon SageMaker Model Card.
+--
+-- For information about how to use model cards, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards.html Amazon SageMaker Model Card>.
+module Amazonka.SageMaker.CreateModelCard
+  ( -- * Creating a Request
+    CreateModelCard (..),
+    newCreateModelCard,
+
+    -- * Request Lenses
+    createModelCard_securityConfig,
+    createModelCard_tags,
+    createModelCard_modelCardName,
+    createModelCard_content,
+    createModelCard_modelCardStatus,
+
+    -- * Destructuring the Response
+    CreateModelCardResponse (..),
+    newCreateModelCardResponse,
+
+    -- * Response Lenses
+    createModelCardResponse_httpStatus,
+    createModelCardResponse_modelCardArn,
+  )
+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:/ 'newCreateModelCard' smart constructor.
+data CreateModelCard = CreateModelCard'
+  { -- | An optional Key Management Service key to encrypt, decrypt, and
+    -- re-encrypt model card content for regulated workloads with highly
+    -- sensitive data.
+    securityConfig :: Prelude.Maybe ModelCardSecurityConfig,
+    -- | Key-value pairs used to manage metadata for model cards.
+    tags :: Prelude.Maybe [Tag],
+    -- | The unique name of the model card.
+    modelCardName :: Prelude.Text,
+    -- | The content of the model card. Content must be in
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+    -- and provided as a string.
+    content :: Data.Sensitive Prelude.Text,
+    -- | The approval status of the model card within your organization.
+    -- Different organizations might have different criteria for model card
+    -- review and approval.
+    --
+    -- -   @Draft@: The model card is a work in progress.
+    --
+    -- -   @PendingReview@: The model card is pending review.
+    --
+    -- -   @Approved@: The model card is approved.
+    --
+    -- -   @Archived@: The model card is archived. No more updates should be
+    --     made to the model card, but it can still be exported.
+    modelCardStatus :: ModelCardStatus
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelCard' 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:
+--
+-- 'securityConfig', 'createModelCard_securityConfig' - An optional Key Management Service key to encrypt, decrypt, and
+-- re-encrypt model card content for regulated workloads with highly
+-- sensitive data.
+--
+-- 'tags', 'createModelCard_tags' - Key-value pairs used to manage metadata for model cards.
+--
+-- 'modelCardName', 'createModelCard_modelCardName' - The unique name of the model card.
+--
+-- 'content', 'createModelCard_content' - The content of the model card. Content must be in
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+-- and provided as a string.
+--
+-- 'modelCardStatus', 'createModelCard_modelCardStatus' - The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+newCreateModelCard ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'content'
+  Prelude.Text ->
+  -- | 'modelCardStatus'
+  ModelCardStatus ->
+  CreateModelCard
+newCreateModelCard
+  pModelCardName_
+  pContent_
+  pModelCardStatus_ =
+    CreateModelCard'
+      { securityConfig = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        modelCardName = pModelCardName_,
+        content = Data._Sensitive Lens.# pContent_,
+        modelCardStatus = pModelCardStatus_
+      }
+
+-- | An optional Key Management Service key to encrypt, decrypt, and
+-- re-encrypt model card content for regulated workloads with highly
+-- sensitive data.
+createModelCard_securityConfig :: Lens.Lens' CreateModelCard (Prelude.Maybe ModelCardSecurityConfig)
+createModelCard_securityConfig = Lens.lens (\CreateModelCard' {securityConfig} -> securityConfig) (\s@CreateModelCard' {} a -> s {securityConfig = a} :: CreateModelCard)
+
+-- | Key-value pairs used to manage metadata for model cards.
+createModelCard_tags :: Lens.Lens' CreateModelCard (Prelude.Maybe [Tag])
+createModelCard_tags = Lens.lens (\CreateModelCard' {tags} -> tags) (\s@CreateModelCard' {} a -> s {tags = a} :: CreateModelCard) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique name of the model card.
+createModelCard_modelCardName :: Lens.Lens' CreateModelCard Prelude.Text
+createModelCard_modelCardName = Lens.lens (\CreateModelCard' {modelCardName} -> modelCardName) (\s@CreateModelCard' {} a -> s {modelCardName = a} :: CreateModelCard)
+
+-- | The content of the model card. Content must be in
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+-- and provided as a string.
+createModelCard_content :: Lens.Lens' CreateModelCard Prelude.Text
+createModelCard_content = Lens.lens (\CreateModelCard' {content} -> content) (\s@CreateModelCard' {} a -> s {content = a} :: CreateModelCard) Prelude.. Data._Sensitive
+
+-- | The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+createModelCard_modelCardStatus :: Lens.Lens' CreateModelCard ModelCardStatus
+createModelCard_modelCardStatus = Lens.lens (\CreateModelCard' {modelCardStatus} -> modelCardStatus) (\s@CreateModelCard' {} a -> s {modelCardStatus = a} :: CreateModelCard)
+
+instance Core.AWSRequest CreateModelCard where
+  type
+    AWSResponse CreateModelCard =
+      CreateModelCardResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelCardResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelCardArn")
+      )
+
+instance Prelude.Hashable CreateModelCard where
+  hashWithSalt _salt CreateModelCard' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` modelCardStatus
+
+instance Prelude.NFData CreateModelCard where
+  rnf CreateModelCard' {..} =
+    Prelude.rnf securityConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf modelCardStatus
+
+instance Data.ToHeaders CreateModelCard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateModelCard" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModelCard where
+  toJSON CreateModelCard' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SecurityConfig" Data..=)
+              Prelude.<$> securityConfig,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ModelCardName" Data..= modelCardName),
+            Prelude.Just ("Content" Data..= content),
+            Prelude.Just
+              ("ModelCardStatus" Data..= modelCardStatus)
+          ]
+      )
+
+instance Data.ToPath CreateModelCard where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModelCard where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelCardResponse' smart constructor.
+data CreateModelCardResponse = CreateModelCardResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the successfully created model card.
+    modelCardArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelCardResponse' 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', 'createModelCardResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardArn', 'createModelCardResponse_modelCardArn' - The Amazon Resource Name (ARN) of the successfully created model card.
+newCreateModelCardResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelCardArn'
+  Prelude.Text ->
+  CreateModelCardResponse
+newCreateModelCardResponse
+  pHttpStatus_
+  pModelCardArn_ =
+    CreateModelCardResponse'
+      { httpStatus = pHttpStatus_,
+        modelCardArn = pModelCardArn_
+      }
+
+-- | The response's http status code.
+createModelCardResponse_httpStatus :: Lens.Lens' CreateModelCardResponse Prelude.Int
+createModelCardResponse_httpStatus = Lens.lens (\CreateModelCardResponse' {httpStatus} -> httpStatus) (\s@CreateModelCardResponse' {} a -> s {httpStatus = a} :: CreateModelCardResponse)
+
+-- | The Amazon Resource Name (ARN) of the successfully created model card.
+createModelCardResponse_modelCardArn :: Lens.Lens' CreateModelCardResponse Prelude.Text
+createModelCardResponse_modelCardArn = Lens.lens (\CreateModelCardResponse' {modelCardArn} -> modelCardArn) (\s@CreateModelCardResponse' {} a -> s {modelCardArn = a} :: CreateModelCardResponse)
+
+instance Prelude.NFData CreateModelCardResponse where
+  rnf CreateModelCardResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardArn
diff --git a/gen/Amazonka/SageMaker/CreateModelCardExportJob.hs b/gen/Amazonka/SageMaker/CreateModelCardExportJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelCardExportJob.hs
@@ -0,0 +1,238 @@
+{-# 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.CreateModelCardExportJob
+-- 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 an Amazon SageMaker Model Card export job.
+module Amazonka.SageMaker.CreateModelCardExportJob
+  ( -- * Creating a Request
+    CreateModelCardExportJob (..),
+    newCreateModelCardExportJob,
+
+    -- * Request Lenses
+    createModelCardExportJob_modelCardVersion,
+    createModelCardExportJob_modelCardName,
+    createModelCardExportJob_modelCardExportJobName,
+    createModelCardExportJob_outputConfig,
+
+    -- * Destructuring the Response
+    CreateModelCardExportJobResponse (..),
+    newCreateModelCardExportJobResponse,
+
+    -- * Response Lenses
+    createModelCardExportJobResponse_httpStatus,
+    createModelCardExportJobResponse_modelCardExportJobArn,
+  )
+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:/ 'newCreateModelCardExportJob' smart constructor.
+data CreateModelCardExportJob = CreateModelCardExportJob'
+  { -- | The version of the model card to export. If a version is not provided,
+    -- then the latest version of the model card is exported.
+    modelCardVersion :: Prelude.Maybe Prelude.Int,
+    -- | The name of the model card to export.
+    modelCardName :: Prelude.Text,
+    -- | The name of the model card export job.
+    modelCardExportJobName :: Prelude.Text,
+    -- | The model card output configuration that specifies the Amazon S3 path
+    -- for exporting.
+    outputConfig :: ModelCardExportOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelCardExportJob' 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:
+--
+-- 'modelCardVersion', 'createModelCardExportJob_modelCardVersion' - The version of the model card to export. If a version is not provided,
+-- then the latest version of the model card is exported.
+--
+-- 'modelCardName', 'createModelCardExportJob_modelCardName' - The name of the model card to export.
+--
+-- 'modelCardExportJobName', 'createModelCardExportJob_modelCardExportJobName' - The name of the model card export job.
+--
+-- 'outputConfig', 'createModelCardExportJob_outputConfig' - The model card output configuration that specifies the Amazon S3 path
+-- for exporting.
+newCreateModelCardExportJob ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'modelCardExportJobName'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  ModelCardExportOutputConfig ->
+  CreateModelCardExportJob
+newCreateModelCardExportJob
+  pModelCardName_
+  pModelCardExportJobName_
+  pOutputConfig_ =
+    CreateModelCardExportJob'
+      { modelCardVersion =
+          Prelude.Nothing,
+        modelCardName = pModelCardName_,
+        modelCardExportJobName = pModelCardExportJobName_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The version of the model card to export. If a version is not provided,
+-- then the latest version of the model card is exported.
+createModelCardExportJob_modelCardVersion :: Lens.Lens' CreateModelCardExportJob (Prelude.Maybe Prelude.Int)
+createModelCardExportJob_modelCardVersion = Lens.lens (\CreateModelCardExportJob' {modelCardVersion} -> modelCardVersion) (\s@CreateModelCardExportJob' {} a -> s {modelCardVersion = a} :: CreateModelCardExportJob)
+
+-- | The name of the model card to export.
+createModelCardExportJob_modelCardName :: Lens.Lens' CreateModelCardExportJob Prelude.Text
+createModelCardExportJob_modelCardName = Lens.lens (\CreateModelCardExportJob' {modelCardName} -> modelCardName) (\s@CreateModelCardExportJob' {} a -> s {modelCardName = a} :: CreateModelCardExportJob)
+
+-- | The name of the model card export job.
+createModelCardExportJob_modelCardExportJobName :: Lens.Lens' CreateModelCardExportJob Prelude.Text
+createModelCardExportJob_modelCardExportJobName = Lens.lens (\CreateModelCardExportJob' {modelCardExportJobName} -> modelCardExportJobName) (\s@CreateModelCardExportJob' {} a -> s {modelCardExportJobName = a} :: CreateModelCardExportJob)
+
+-- | The model card output configuration that specifies the Amazon S3 path
+-- for exporting.
+createModelCardExportJob_outputConfig :: Lens.Lens' CreateModelCardExportJob ModelCardExportOutputConfig
+createModelCardExportJob_outputConfig = Lens.lens (\CreateModelCardExportJob' {outputConfig} -> outputConfig) (\s@CreateModelCardExportJob' {} a -> s {outputConfig = a} :: CreateModelCardExportJob)
+
+instance Core.AWSRequest CreateModelCardExportJob where
+  type
+    AWSResponse CreateModelCardExportJob =
+      CreateModelCardExportJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelCardExportJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelCardExportJobArn")
+      )
+
+instance Prelude.Hashable CreateModelCardExportJob where
+  hashWithSalt _salt CreateModelCardExportJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` modelCardExportJobName
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData CreateModelCardExportJob where
+  rnf CreateModelCardExportJob' {..} =
+    Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardExportJobName
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToHeaders CreateModelCardExportJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateModelCardExportJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModelCardExportJob where
+  toJSON CreateModelCardExportJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelCardVersion" Data..=)
+              Prelude.<$> modelCardVersion,
+            Prelude.Just ("ModelCardName" Data..= modelCardName),
+            Prelude.Just
+              ( "ModelCardExportJobName"
+                  Data..= modelCardExportJobName
+              ),
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
+
+instance Data.ToPath CreateModelCardExportJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModelCardExportJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelCardExportJobResponse' smart constructor.
+data CreateModelCardExportJobResponse = CreateModelCardExportJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model card export job.
+    modelCardExportJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelCardExportJobResponse' 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', 'createModelCardExportJobResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardExportJobArn', 'createModelCardExportJobResponse_modelCardExportJobArn' - The Amazon Resource Name (ARN) of the model card export job.
+newCreateModelCardExportJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelCardExportJobArn'
+  Prelude.Text ->
+  CreateModelCardExportJobResponse
+newCreateModelCardExportJobResponse
+  pHttpStatus_
+  pModelCardExportJobArn_ =
+    CreateModelCardExportJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        modelCardExportJobArn =
+          pModelCardExportJobArn_
+      }
+
+-- | The response's http status code.
+createModelCardExportJobResponse_httpStatus :: Lens.Lens' CreateModelCardExportJobResponse Prelude.Int
+createModelCardExportJobResponse_httpStatus = Lens.lens (\CreateModelCardExportJobResponse' {httpStatus} -> httpStatus) (\s@CreateModelCardExportJobResponse' {} a -> s {httpStatus = a} :: CreateModelCardExportJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the model card export job.
+createModelCardExportJobResponse_modelCardExportJobArn :: Lens.Lens' CreateModelCardExportJobResponse Prelude.Text
+createModelCardExportJobResponse_modelCardExportJobArn = Lens.lens (\CreateModelCardExportJobResponse' {modelCardExportJobArn} -> modelCardExportJobArn) (\s@CreateModelCardExportJobResponse' {} a -> s {modelCardExportJobArn = a} :: CreateModelCardExportJobResponse)
+
+instance
+  Prelude.NFData
+    CreateModelCardExportJobResponse
+  where
+  rnf CreateModelCardExportJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardExportJobArn
diff --git a/gen/Amazonka/SageMaker/CreateModelExplainabilityJobDefinition.hs b/gen/Amazonka/SageMaker/CreateModelExplainabilityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelExplainabilityJobDefinition.hs
@@ -0,0 +1,371 @@
+{-# 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.CreateModelExplainabilityJobDefinition
+-- 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 the definition for a model explainability job.
+module Amazonka.SageMaker.CreateModelExplainabilityJobDefinition
+  ( -- * Creating a Request
+    CreateModelExplainabilityJobDefinition (..),
+    newCreateModelExplainabilityJobDefinition,
+
+    -- * Request Lenses
+    createModelExplainabilityJobDefinition_modelExplainabilityBaselineConfig,
+    createModelExplainabilityJobDefinition_networkConfig,
+    createModelExplainabilityJobDefinition_stoppingCondition,
+    createModelExplainabilityJobDefinition_tags,
+    createModelExplainabilityJobDefinition_jobDefinitionName,
+    createModelExplainabilityJobDefinition_modelExplainabilityAppSpecification,
+    createModelExplainabilityJobDefinition_modelExplainabilityJobInput,
+    createModelExplainabilityJobDefinition_modelExplainabilityJobOutputConfig,
+    createModelExplainabilityJobDefinition_jobResources,
+    createModelExplainabilityJobDefinition_roleArn,
+
+    -- * Destructuring the Response
+    CreateModelExplainabilityJobDefinitionResponse (..),
+    newCreateModelExplainabilityJobDefinitionResponse,
+
+    -- * Response Lenses
+    createModelExplainabilityJobDefinitionResponse_httpStatus,
+    createModelExplainabilityJobDefinitionResponse_jobDefinitionArn,
+  )
+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:/ 'newCreateModelExplainabilityJobDefinition' smart constructor.
+data CreateModelExplainabilityJobDefinition = CreateModelExplainabilityJobDefinition'
+  { -- | The baseline configuration for a model explainability job.
+    modelExplainabilityBaselineConfig :: Prelude.Maybe ModelExplainabilityBaselineConfig,
+    -- | Networking options for a model explainability job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | (Optional) An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the model explainability job definition. The name must be
+    -- unique within an Amazon Web Services Region in the Amazon Web Services
+    -- account.
+    jobDefinitionName :: Prelude.Text,
+    -- | Configures the model explainability job to run a specified Docker
+    -- container image.
+    modelExplainabilityAppSpecification :: ModelExplainabilityAppSpecification,
+    -- | Inputs for the model explainability job.
+    modelExplainabilityJobInput :: ModelExplainabilityJobInput,
+    modelExplainabilityJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelExplainabilityJobDefinition' 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:
+--
+-- 'modelExplainabilityBaselineConfig', 'createModelExplainabilityJobDefinition_modelExplainabilityBaselineConfig' - The baseline configuration for a model explainability job.
+--
+-- 'networkConfig', 'createModelExplainabilityJobDefinition_networkConfig' - Networking options for a model explainability job.
+--
+-- 'stoppingCondition', 'createModelExplainabilityJobDefinition_stoppingCondition' - Undocumented member.
+--
+-- 'tags', 'createModelExplainabilityJobDefinition_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'jobDefinitionName', 'createModelExplainabilityJobDefinition_jobDefinitionName' - The name of the model explainability job definition. The name must be
+-- unique within an Amazon Web Services Region in the Amazon Web Services
+-- account.
+--
+-- 'modelExplainabilityAppSpecification', 'createModelExplainabilityJobDefinition_modelExplainabilityAppSpecification' - Configures the model explainability job to run a specified Docker
+-- container image.
+--
+-- 'modelExplainabilityJobInput', 'createModelExplainabilityJobDefinition_modelExplainabilityJobInput' - Inputs for the model explainability job.
+--
+-- 'modelExplainabilityJobOutputConfig', 'createModelExplainabilityJobDefinition_modelExplainabilityJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'createModelExplainabilityJobDefinition_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'createModelExplainabilityJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newCreateModelExplainabilityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'modelExplainabilityAppSpecification'
+  ModelExplainabilityAppSpecification ->
+  -- | 'modelExplainabilityJobInput'
+  ModelExplainabilityJobInput ->
+  -- | 'modelExplainabilityJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateModelExplainabilityJobDefinition
+newCreateModelExplainabilityJobDefinition
+  pJobDefinitionName_
+  pModelExplainabilityAppSpecification_
+  pModelExplainabilityJobInput_
+  pModelExplainabilityJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    CreateModelExplainabilityJobDefinition'
+      { modelExplainabilityBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        jobDefinitionName =
+          pJobDefinitionName_,
+        modelExplainabilityAppSpecification =
+          pModelExplainabilityAppSpecification_,
+        modelExplainabilityJobInput =
+          pModelExplainabilityJobInput_,
+        modelExplainabilityJobOutputConfig =
+          pModelExplainabilityJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | The baseline configuration for a model explainability job.
+createModelExplainabilityJobDefinition_modelExplainabilityBaselineConfig :: Lens.Lens' CreateModelExplainabilityJobDefinition (Prelude.Maybe ModelExplainabilityBaselineConfig)
+createModelExplainabilityJobDefinition_modelExplainabilityBaselineConfig = Lens.lens (\CreateModelExplainabilityJobDefinition' {modelExplainabilityBaselineConfig} -> modelExplainabilityBaselineConfig) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {modelExplainabilityBaselineConfig = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | Networking options for a model explainability job.
+createModelExplainabilityJobDefinition_networkConfig :: Lens.Lens' CreateModelExplainabilityJobDefinition (Prelude.Maybe MonitoringNetworkConfig)
+createModelExplainabilityJobDefinition_networkConfig = Lens.lens (\CreateModelExplainabilityJobDefinition' {networkConfig} -> networkConfig) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {networkConfig = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | Undocumented member.
+createModelExplainabilityJobDefinition_stoppingCondition :: Lens.Lens' CreateModelExplainabilityJobDefinition (Prelude.Maybe MonitoringStoppingCondition)
+createModelExplainabilityJobDefinition_stoppingCondition = Lens.lens (\CreateModelExplainabilityJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {stoppingCondition = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createModelExplainabilityJobDefinition_tags :: Lens.Lens' CreateModelExplainabilityJobDefinition (Prelude.Maybe [Tag])
+createModelExplainabilityJobDefinition_tags = Lens.lens (\CreateModelExplainabilityJobDefinition' {tags} -> tags) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {tags = a} :: CreateModelExplainabilityJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the model explainability job definition. The name must be
+-- unique within an Amazon Web Services Region in the Amazon Web Services
+-- account.
+createModelExplainabilityJobDefinition_jobDefinitionName :: Lens.Lens' CreateModelExplainabilityJobDefinition Prelude.Text
+createModelExplainabilityJobDefinition_jobDefinitionName = Lens.lens (\CreateModelExplainabilityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {jobDefinitionName = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | Configures the model explainability job to run a specified Docker
+-- container image.
+createModelExplainabilityJobDefinition_modelExplainabilityAppSpecification :: Lens.Lens' CreateModelExplainabilityJobDefinition ModelExplainabilityAppSpecification
+createModelExplainabilityJobDefinition_modelExplainabilityAppSpecification = Lens.lens (\CreateModelExplainabilityJobDefinition' {modelExplainabilityAppSpecification} -> modelExplainabilityAppSpecification) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {modelExplainabilityAppSpecification = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | Inputs for the model explainability job.
+createModelExplainabilityJobDefinition_modelExplainabilityJobInput :: Lens.Lens' CreateModelExplainabilityJobDefinition ModelExplainabilityJobInput
+createModelExplainabilityJobDefinition_modelExplainabilityJobInput = Lens.lens (\CreateModelExplainabilityJobDefinition' {modelExplainabilityJobInput} -> modelExplainabilityJobInput) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {modelExplainabilityJobInput = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | Undocumented member.
+createModelExplainabilityJobDefinition_modelExplainabilityJobOutputConfig :: Lens.Lens' CreateModelExplainabilityJobDefinition MonitoringOutputConfig
+createModelExplainabilityJobDefinition_modelExplainabilityJobOutputConfig = Lens.lens (\CreateModelExplainabilityJobDefinition' {modelExplainabilityJobOutputConfig} -> modelExplainabilityJobOutputConfig) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {modelExplainabilityJobOutputConfig = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | Undocumented member.
+createModelExplainabilityJobDefinition_jobResources :: Lens.Lens' CreateModelExplainabilityJobDefinition MonitoringResources
+createModelExplainabilityJobDefinition_jobResources = Lens.lens (\CreateModelExplainabilityJobDefinition' {jobResources} -> jobResources) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {jobResources = a} :: CreateModelExplainabilityJobDefinition)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+createModelExplainabilityJobDefinition_roleArn :: Lens.Lens' CreateModelExplainabilityJobDefinition Prelude.Text
+createModelExplainabilityJobDefinition_roleArn = Lens.lens (\CreateModelExplainabilityJobDefinition' {roleArn} -> roleArn) (\s@CreateModelExplainabilityJobDefinition' {} a -> s {roleArn = a} :: CreateModelExplainabilityJobDefinition)
+
+instance
+  Core.AWSRequest
+    CreateModelExplainabilityJobDefinition
+  where
+  type
+    AWSResponse
+      CreateModelExplainabilityJobDefinition =
+      CreateModelExplainabilityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelExplainabilityJobDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+      )
+
+instance
+  Prelude.Hashable
+    CreateModelExplainabilityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    CreateModelExplainabilityJobDefinition' {..} =
+      _salt
+        `Prelude.hashWithSalt` modelExplainabilityBaselineConfig
+        `Prelude.hashWithSalt` networkConfig
+        `Prelude.hashWithSalt` stoppingCondition
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` jobDefinitionName
+        `Prelude.hashWithSalt` modelExplainabilityAppSpecification
+        `Prelude.hashWithSalt` modelExplainabilityJobInput
+        `Prelude.hashWithSalt` modelExplainabilityJobOutputConfig
+        `Prelude.hashWithSalt` jobResources
+        `Prelude.hashWithSalt` roleArn
+
+instance
+  Prelude.NFData
+    CreateModelExplainabilityJobDefinition
+  where
+  rnf CreateModelExplainabilityJobDefinition' {..} =
+    Prelude.rnf modelExplainabilityBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf modelExplainabilityAppSpecification
+      `Prelude.seq` Prelude.rnf modelExplainabilityJobInput
+      `Prelude.seq` Prelude.rnf modelExplainabilityJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance
+  Data.ToHeaders
+    CreateModelExplainabilityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateModelExplainabilityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    CreateModelExplainabilityJobDefinition
+  where
+  toJSON CreateModelExplainabilityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelExplainabilityBaselineConfig" Data..=)
+              Prelude.<$> modelExplainabilityBaselineConfig,
+            ("NetworkConfig" Data..=) Prelude.<$> networkConfig,
+            ("StoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName),
+            Prelude.Just
+              ( "ModelExplainabilityAppSpecification"
+                  Data..= modelExplainabilityAppSpecification
+              ),
+            Prelude.Just
+              ( "ModelExplainabilityJobInput"
+                  Data..= modelExplainabilityJobInput
+              ),
+            Prelude.Just
+              ( "ModelExplainabilityJobOutputConfig"
+                  Data..= modelExplainabilityJobOutputConfig
+              ),
+            Prelude.Just ("JobResources" Data..= jobResources),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance
+  Data.ToPath
+    CreateModelExplainabilityJobDefinition
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreateModelExplainabilityJobDefinition
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelExplainabilityJobDefinitionResponse' smart constructor.
+data CreateModelExplainabilityJobDefinitionResponse = CreateModelExplainabilityJobDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model explainability job.
+    jobDefinitionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelExplainabilityJobDefinitionResponse' 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', 'createModelExplainabilityJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'createModelExplainabilityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model explainability job.
+newCreateModelExplainabilityJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  CreateModelExplainabilityJobDefinitionResponse
+newCreateModelExplainabilityJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_ =
+    CreateModelExplainabilityJobDefinitionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_
+      }
+
+-- | The response's http status code.
+createModelExplainabilityJobDefinitionResponse_httpStatus :: Lens.Lens' CreateModelExplainabilityJobDefinitionResponse Prelude.Int
+createModelExplainabilityJobDefinitionResponse_httpStatus = Lens.lens (\CreateModelExplainabilityJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@CreateModelExplainabilityJobDefinitionResponse' {} a -> s {httpStatus = a} :: CreateModelExplainabilityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the model explainability job.
+createModelExplainabilityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' CreateModelExplainabilityJobDefinitionResponse Prelude.Text
+createModelExplainabilityJobDefinitionResponse_jobDefinitionArn = Lens.lens (\CreateModelExplainabilityJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@CreateModelExplainabilityJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: CreateModelExplainabilityJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    CreateModelExplainabilityJobDefinitionResponse
+  where
+  rnf
+    CreateModelExplainabilityJobDefinitionResponse' {..} =
+      Prelude.rnf httpStatus
+        `Prelude.seq` Prelude.rnf jobDefinitionArn
diff --git a/gen/Amazonka/SageMaker/CreateModelPackage.hs b/gen/Amazonka/SageMaker/CreateModelPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelPackage.hs
@@ -0,0 +1,577 @@
+{-# 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.
+    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.
+    certifyForMarketplace :: Prelude.Maybe Prelude.Bool,
+    -- | A unique token that guarantees that the call to this API is idempotent.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The metadata properties associated with the model package versions.
+    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.
+    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/.
+    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.
+    inferenceSpecification :: Prelude.Maybe InferenceSpecification,
+    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.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | A structure that contains model metrics reports.
+    modelMetrics :: Prelude.Maybe ModelMetrics,
+    -- | A description of the model package.
+    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.
+    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.
+    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).
+    samplePayloadUrl :: Prelude.Maybe Prelude.Text,
+    -- | Details about the algorithm that was used to create the model package.
+    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/.
+    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.
+    task :: Prelude.Maybe Prelude.Text,
+    -- | Specifies configurations for one or more transform jobs that SageMaker
+    -- runs to test the model package.
+    validationSpecification :: Prelude.Maybe ModelPackageValidationSpecification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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'
+    { additionalInferenceSpecifications =
+        Prelude.Nothing,
+      certifyForMarketplace = Prelude.Nothing,
+      clientToken = Prelude.Nothing,
+      customerMetadataProperties = Prelude.Nothing,
+      domain = Prelude.Nothing,
+      driftCheckBaselines = Prelude.Nothing,
+      inferenceSpecification = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      modelApprovalStatus = Prelude.Nothing,
+      modelMetrics = Prelude.Nothing,
+      modelPackageDescription = Prelude.Nothing,
+      modelPackageGroupName = Prelude.Nothing,
+      modelPackageName = Prelude.Nothing,
+      samplePayloadUrl = Prelude.Nothing,
+      sourceAlgorithmSpecification = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      task = Prelude.Nothing,
+      validationSpecification = 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.lens (\CreateModelPackage' {additionalInferenceSpecifications} -> additionalInferenceSpecifications) (\s@CreateModelPackage' {} a -> s {additionalInferenceSpecifications = a} :: CreateModelPackage) Prelude.. Lens.mapping 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.lens (\CreateModelPackage' {certifyForMarketplace} -> certifyForMarketplace) (\s@CreateModelPackage' {} a -> s {certifyForMarketplace = 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.lens (\CreateModelPackage' {clientToken} -> clientToken) (\s@CreateModelPackage' {} a -> s {clientToken = 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.lens (\CreateModelPackage' {customerMetadataProperties} -> customerMetadataProperties) (\s@CreateModelPackage' {} a -> s {customerMetadataProperties = a} :: CreateModelPackage) Prelude.. Lens.mapping 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.lens (\CreateModelPackage' {domain} -> domain) (\s@CreateModelPackage' {} a -> s {domain = 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.lens (\CreateModelPackage' {driftCheckBaselines} -> driftCheckBaselines) (\s@CreateModelPackage' {} a -> s {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.lens (\CreateModelPackage' {inferenceSpecification} -> inferenceSpecification) (\s@CreateModelPackage' {} a -> s {inferenceSpecification = a} :: CreateModelPackage)
+
+-- | Undocumented member.
+createModelPackage_metadataProperties :: Lens.Lens' CreateModelPackage (Prelude.Maybe MetadataProperties)
+createModelPackage_metadataProperties = Lens.lens (\CreateModelPackage' {metadataProperties} -> metadataProperties) (\s@CreateModelPackage' {} a -> s {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.lens (\CreateModelPackage' {modelApprovalStatus} -> modelApprovalStatus) (\s@CreateModelPackage' {} a -> s {modelApprovalStatus = a} :: CreateModelPackage)
+
+-- | A structure that contains model metrics reports.
+createModelPackage_modelMetrics :: Lens.Lens' CreateModelPackage (Prelude.Maybe ModelMetrics)
+createModelPackage_modelMetrics = Lens.lens (\CreateModelPackage' {modelMetrics} -> modelMetrics) (\s@CreateModelPackage' {} a -> s {modelMetrics = a} :: CreateModelPackage)
+
+-- | A description of the model package.
+createModelPackage_modelPackageDescription :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
+createModelPackage_modelPackageDescription = Lens.lens (\CreateModelPackage' {modelPackageDescription} -> modelPackageDescription) (\s@CreateModelPackage' {} a -> s {modelPackageDescription = 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.lens (\CreateModelPackage' {modelPackageGroupName} -> modelPackageGroupName) (\s@CreateModelPackage' {} a -> s {modelPackageGroupName = 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.lens (\CreateModelPackage' {modelPackageName} -> modelPackageName) (\s@CreateModelPackage' {} a -> s {modelPackageName = 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.lens (\CreateModelPackage' {samplePayloadUrl} -> samplePayloadUrl) (\s@CreateModelPackage' {} a -> s {samplePayloadUrl = 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.lens (\CreateModelPackage' {sourceAlgorithmSpecification} -> sourceAlgorithmSpecification) (\s@CreateModelPackage' {} a -> s {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.lens (\CreateModelPackage' {tags} -> tags) (\s@CreateModelPackage' {} a -> s {tags = a} :: CreateModelPackage) Prelude.. Lens.mapping 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.lens (\CreateModelPackage' {task} -> task) (\s@CreateModelPackage' {} a -> s {task = 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.lens (\CreateModelPackage' {validationSpecification} -> validationSpecification) (\s@CreateModelPackage' {} a -> s {validationSpecification = a} :: CreateModelPackage)
+
+instance Core.AWSRequest CreateModelPackage where
+  type
+    AWSResponse CreateModelPackage =
+      CreateModelPackageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelPackageResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelPackageArn")
+      )
+
+instance Prelude.Hashable CreateModelPackage where
+  hashWithSalt _salt CreateModelPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalInferenceSpecifications
+      `Prelude.hashWithSalt` certifyForMarketplace
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` customerMetadataProperties
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` driftCheckBaselines
+      `Prelude.hashWithSalt` inferenceSpecification
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` modelApprovalStatus
+      `Prelude.hashWithSalt` modelMetrics
+      `Prelude.hashWithSalt` modelPackageDescription
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` modelPackageName
+      `Prelude.hashWithSalt` samplePayloadUrl
+      `Prelude.hashWithSalt` sourceAlgorithmSpecification
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` task
+      `Prelude.hashWithSalt` validationSpecification
+
+instance Prelude.NFData CreateModelPackage where
+  rnf CreateModelPackage' {..} =
+    Prelude.rnf additionalInferenceSpecifications
+      `Prelude.seq` Prelude.rnf certifyForMarketplace
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf customerMetadataProperties
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf driftCheckBaselines
+      `Prelude.seq` Prelude.rnf inferenceSpecification
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelMetrics
+      `Prelude.seq` Prelude.rnf modelPackageDescription
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageName
+      `Prelude.seq` Prelude.rnf samplePayloadUrl
+      `Prelude.seq` Prelude.rnf sourceAlgorithmSpecification
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf
+        validationSpecification
+
+instance Data.ToHeaders CreateModelPackage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateModelPackage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModelPackage where
+  toJSON CreateModelPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AdditionalInferenceSpecifications" Data..=)
+              Prelude.<$> additionalInferenceSpecifications,
+            ("CertifyForMarketplace" Data..=)
+              Prelude.<$> certifyForMarketplace,
+            ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("CustomerMetadataProperties" Data..=)
+              Prelude.<$> customerMetadataProperties,
+            ("Domain" Data..=) Prelude.<$> domain,
+            ("DriftCheckBaselines" Data..=)
+              Prelude.<$> driftCheckBaselines,
+            ("InferenceSpecification" Data..=)
+              Prelude.<$> inferenceSpecification,
+            ("MetadataProperties" Data..=)
+              Prelude.<$> metadataProperties,
+            ("ModelApprovalStatus" Data..=)
+              Prelude.<$> modelApprovalStatus,
+            ("ModelMetrics" Data..=) Prelude.<$> modelMetrics,
+            ("ModelPackageDescription" Data..=)
+              Prelude.<$> modelPackageDescription,
+            ("ModelPackageGroupName" Data..=)
+              Prelude.<$> modelPackageGroupName,
+            ("ModelPackageName" Data..=)
+              Prelude.<$> modelPackageName,
+            ("SamplePayloadUrl" Data..=)
+              Prelude.<$> samplePayloadUrl,
+            ("SourceAlgorithmSpecification" Data..=)
+              Prelude.<$> sourceAlgorithmSpecification,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("Task" Data..=) Prelude.<$> task,
+            ("ValidationSpecification" Data..=)
+              Prelude.<$> validationSpecification
+          ]
+      )
+
+instance Data.ToPath CreateModelPackage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModelPackage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelPackageResponse' smart constructor.
+data CreateModelPackageResponse = CreateModelPackageResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the new model package.
+    modelPackageArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
+  pHttpStatus_
+  pModelPackageArn_ =
+    CreateModelPackageResponse'
+      { httpStatus =
+          pHttpStatus_,
+        modelPackageArn = pModelPackageArn_
+      }
+
+-- | The response's http status code.
+createModelPackageResponse_httpStatus :: Lens.Lens' CreateModelPackageResponse Prelude.Int
+createModelPackageResponse_httpStatus = Lens.lens (\CreateModelPackageResponse' {httpStatus} -> httpStatus) (\s@CreateModelPackageResponse' {} a -> s {httpStatus = a} :: CreateModelPackageResponse)
+
+-- | The Amazon Resource Name (ARN) of the new model package.
+createModelPackageResponse_modelPackageArn :: Lens.Lens' CreateModelPackageResponse Prelude.Text
+createModelPackageResponse_modelPackageArn = Lens.lens (\CreateModelPackageResponse' {modelPackageArn} -> modelPackageArn) (\s@CreateModelPackageResponse' {} a -> s {modelPackageArn = a} :: CreateModelPackageResponse)
+
+instance Prelude.NFData CreateModelPackageResponse where
+  rnf CreateModelPackageResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageArn
diff --git a/gen/Amazonka/SageMaker/CreateModelPackageGroup.hs b/gen/Amazonka/SageMaker/CreateModelPackageGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelPackageGroup.hs
@@ -0,0 +1,221 @@
+{-# 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.CreateModelPackageGroup
+-- 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 group. A model group contains a group of model versions.
+module Amazonka.SageMaker.CreateModelPackageGroup
+  ( -- * Creating a Request
+    CreateModelPackageGroup (..),
+    newCreateModelPackageGroup,
+
+    -- * Request Lenses
+    createModelPackageGroup_modelPackageGroupDescription,
+    createModelPackageGroup_tags,
+    createModelPackageGroup_modelPackageGroupName,
+
+    -- * Destructuring the Response
+    CreateModelPackageGroupResponse (..),
+    newCreateModelPackageGroupResponse,
+
+    -- * Response Lenses
+    createModelPackageGroupResponse_httpStatus,
+    createModelPackageGroupResponse_modelPackageGroupArn,
+  )
+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:/ 'newCreateModelPackageGroup' smart constructor.
+data CreateModelPackageGroup = CreateModelPackageGroup'
+  { -- | A description for the model group.
+    modelPackageGroupDescription :: Prelude.Maybe Prelude.Text,
+    -- | A list of key value pairs associated with the model group. 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/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the model group.
+    modelPackageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelPackageGroup' 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:
+--
+-- 'modelPackageGroupDescription', 'createModelPackageGroup_modelPackageGroupDescription' - A description for the model group.
+--
+-- 'tags', 'createModelPackageGroup_tags' - A list of key value pairs associated with the model group. 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/.
+--
+-- 'modelPackageGroupName', 'createModelPackageGroup_modelPackageGroupName' - The name of the model group.
+newCreateModelPackageGroup ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  CreateModelPackageGroup
+newCreateModelPackageGroup pModelPackageGroupName_ =
+  CreateModelPackageGroup'
+    { modelPackageGroupDescription =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      modelPackageGroupName = pModelPackageGroupName_
+    }
+
+-- | A description for the model group.
+createModelPackageGroup_modelPackageGroupDescription :: Lens.Lens' CreateModelPackageGroup (Prelude.Maybe Prelude.Text)
+createModelPackageGroup_modelPackageGroupDescription = Lens.lens (\CreateModelPackageGroup' {modelPackageGroupDescription} -> modelPackageGroupDescription) (\s@CreateModelPackageGroup' {} a -> s {modelPackageGroupDescription = a} :: CreateModelPackageGroup)
+
+-- | A list of key value pairs associated with the model group. 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/.
+createModelPackageGroup_tags :: Lens.Lens' CreateModelPackageGroup (Prelude.Maybe [Tag])
+createModelPackageGroup_tags = Lens.lens (\CreateModelPackageGroup' {tags} -> tags) (\s@CreateModelPackageGroup' {} a -> s {tags = a} :: CreateModelPackageGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the model group.
+createModelPackageGroup_modelPackageGroupName :: Lens.Lens' CreateModelPackageGroup Prelude.Text
+createModelPackageGroup_modelPackageGroupName = Lens.lens (\CreateModelPackageGroup' {modelPackageGroupName} -> modelPackageGroupName) (\s@CreateModelPackageGroup' {} a -> s {modelPackageGroupName = a} :: CreateModelPackageGroup)
+
+instance Core.AWSRequest CreateModelPackageGroup where
+  type
+    AWSResponse CreateModelPackageGroup =
+      CreateModelPackageGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelPackageGroupResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelPackageGroupArn")
+      )
+
+instance Prelude.Hashable CreateModelPackageGroup where
+  hashWithSalt _salt CreateModelPackageGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelPackageGroupDescription
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` modelPackageGroupName
+
+instance Prelude.NFData CreateModelPackageGroup where
+  rnf CreateModelPackageGroup' {..} =
+    Prelude.rnf modelPackageGroupDescription
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+
+instance Data.ToHeaders CreateModelPackageGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateModelPackageGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModelPackageGroup where
+  toJSON CreateModelPackageGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelPackageGroupDescription" Data..=)
+              Prelude.<$> modelPackageGroupDescription,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "ModelPackageGroupName"
+                  Data..= modelPackageGroupName
+              )
+          ]
+      )
+
+instance Data.ToPath CreateModelPackageGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModelPackageGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelPackageGroupResponse' smart constructor.
+data CreateModelPackageGroupResponse = CreateModelPackageGroupResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model group.
+    modelPackageGroupArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelPackageGroupResponse' 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', 'createModelPackageGroupResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageGroupArn', 'createModelPackageGroupResponse_modelPackageGroupArn' - The Amazon Resource Name (ARN) of the model group.
+newCreateModelPackageGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelPackageGroupArn'
+  Prelude.Text ->
+  CreateModelPackageGroupResponse
+newCreateModelPackageGroupResponse
+  pHttpStatus_
+  pModelPackageGroupArn_ =
+    CreateModelPackageGroupResponse'
+      { httpStatus =
+          pHttpStatus_,
+        modelPackageGroupArn =
+          pModelPackageGroupArn_
+      }
+
+-- | The response's http status code.
+createModelPackageGroupResponse_httpStatus :: Lens.Lens' CreateModelPackageGroupResponse Prelude.Int
+createModelPackageGroupResponse_httpStatus = Lens.lens (\CreateModelPackageGroupResponse' {httpStatus} -> httpStatus) (\s@CreateModelPackageGroupResponse' {} a -> s {httpStatus = a} :: CreateModelPackageGroupResponse)
+
+-- | The Amazon Resource Name (ARN) of the model group.
+createModelPackageGroupResponse_modelPackageGroupArn :: Lens.Lens' CreateModelPackageGroupResponse Prelude.Text
+createModelPackageGroupResponse_modelPackageGroupArn = Lens.lens (\CreateModelPackageGroupResponse' {modelPackageGroupArn} -> modelPackageGroupArn) (\s@CreateModelPackageGroupResponse' {} a -> s {modelPackageGroupArn = a} :: CreateModelPackageGroupResponse)
+
+instance
+  Prelude.NFData
+    CreateModelPackageGroupResponse
+  where
+  rnf CreateModelPackageGroupResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageGroupArn
diff --git a/gen/Amazonka/SageMaker/CreateModelQualityJobDefinition.hs b/gen/Amazonka/SageMaker/CreateModelQualityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateModelQualityJobDefinition.hs
@@ -0,0 +1,355 @@
+{-# 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.CreateModelQualityJobDefinition
+-- 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 definition for a job that monitors model quality and drift.
+-- For information about model monitor, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
+module Amazonka.SageMaker.CreateModelQualityJobDefinition
+  ( -- * Creating a Request
+    CreateModelQualityJobDefinition (..),
+    newCreateModelQualityJobDefinition,
+
+    -- * Request Lenses
+    createModelQualityJobDefinition_modelQualityBaselineConfig,
+    createModelQualityJobDefinition_networkConfig,
+    createModelQualityJobDefinition_stoppingCondition,
+    createModelQualityJobDefinition_tags,
+    createModelQualityJobDefinition_jobDefinitionName,
+    createModelQualityJobDefinition_modelQualityAppSpecification,
+    createModelQualityJobDefinition_modelQualityJobInput,
+    createModelQualityJobDefinition_modelQualityJobOutputConfig,
+    createModelQualityJobDefinition_jobResources,
+    createModelQualityJobDefinition_roleArn,
+
+    -- * Destructuring the Response
+    CreateModelQualityJobDefinitionResponse (..),
+    newCreateModelQualityJobDefinitionResponse,
+
+    -- * Response Lenses
+    createModelQualityJobDefinitionResponse_httpStatus,
+    createModelQualityJobDefinitionResponse_jobDefinitionArn,
+  )
+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:/ 'newCreateModelQualityJobDefinition' smart constructor.
+data CreateModelQualityJobDefinition = CreateModelQualityJobDefinition'
+  { -- | Specifies the constraints and baselines for the monitoring job.
+    modelQualityBaselineConfig :: Prelude.Maybe ModelQualityBaselineConfig,
+    -- | Specifies the network configuration for the monitoring job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | (Optional) An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the monitoring job definition.
+    jobDefinitionName :: Prelude.Text,
+    -- | The container that runs the monitoring job.
+    modelQualityAppSpecification :: ModelQualityAppSpecification,
+    -- | A list of the inputs that are monitored. Currently endpoints are
+    -- supported.
+    modelQualityJobInput :: ModelQualityJobInput,
+    modelQualityJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelQualityJobDefinition' 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:
+--
+-- 'modelQualityBaselineConfig', 'createModelQualityJobDefinition_modelQualityBaselineConfig' - Specifies the constraints and baselines for the monitoring job.
+--
+-- 'networkConfig', 'createModelQualityJobDefinition_networkConfig' - Specifies the network configuration for the monitoring job.
+--
+-- 'stoppingCondition', 'createModelQualityJobDefinition_stoppingCondition' - Undocumented member.
+--
+-- 'tags', 'createModelQualityJobDefinition_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'jobDefinitionName', 'createModelQualityJobDefinition_jobDefinitionName' - The name of the monitoring job definition.
+--
+-- 'modelQualityAppSpecification', 'createModelQualityJobDefinition_modelQualityAppSpecification' - The container that runs the monitoring job.
+--
+-- 'modelQualityJobInput', 'createModelQualityJobDefinition_modelQualityJobInput' - A list of the inputs that are monitored. Currently endpoints are
+-- supported.
+--
+-- 'modelQualityJobOutputConfig', 'createModelQualityJobDefinition_modelQualityJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'createModelQualityJobDefinition_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'createModelQualityJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newCreateModelQualityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'modelQualityAppSpecification'
+  ModelQualityAppSpecification ->
+  -- | 'modelQualityJobInput'
+  ModelQualityJobInput ->
+  -- | 'modelQualityJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateModelQualityJobDefinition
+newCreateModelQualityJobDefinition
+  pJobDefinitionName_
+  pModelQualityAppSpecification_
+  pModelQualityJobInput_
+  pModelQualityJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    CreateModelQualityJobDefinition'
+      { modelQualityBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        jobDefinitionName = pJobDefinitionName_,
+        modelQualityAppSpecification =
+          pModelQualityAppSpecification_,
+        modelQualityJobInput =
+          pModelQualityJobInput_,
+        modelQualityJobOutputConfig =
+          pModelQualityJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | Specifies the constraints and baselines for the monitoring job.
+createModelQualityJobDefinition_modelQualityBaselineConfig :: Lens.Lens' CreateModelQualityJobDefinition (Prelude.Maybe ModelQualityBaselineConfig)
+createModelQualityJobDefinition_modelQualityBaselineConfig = Lens.lens (\CreateModelQualityJobDefinition' {modelQualityBaselineConfig} -> modelQualityBaselineConfig) (\s@CreateModelQualityJobDefinition' {} a -> s {modelQualityBaselineConfig = a} :: CreateModelQualityJobDefinition)
+
+-- | Specifies the network configuration for the monitoring job.
+createModelQualityJobDefinition_networkConfig :: Lens.Lens' CreateModelQualityJobDefinition (Prelude.Maybe MonitoringNetworkConfig)
+createModelQualityJobDefinition_networkConfig = Lens.lens (\CreateModelQualityJobDefinition' {networkConfig} -> networkConfig) (\s@CreateModelQualityJobDefinition' {} a -> s {networkConfig = a} :: CreateModelQualityJobDefinition)
+
+-- | Undocumented member.
+createModelQualityJobDefinition_stoppingCondition :: Lens.Lens' CreateModelQualityJobDefinition (Prelude.Maybe MonitoringStoppingCondition)
+createModelQualityJobDefinition_stoppingCondition = Lens.lens (\CreateModelQualityJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@CreateModelQualityJobDefinition' {} a -> s {stoppingCondition = a} :: CreateModelQualityJobDefinition)
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createModelQualityJobDefinition_tags :: Lens.Lens' CreateModelQualityJobDefinition (Prelude.Maybe [Tag])
+createModelQualityJobDefinition_tags = Lens.lens (\CreateModelQualityJobDefinition' {tags} -> tags) (\s@CreateModelQualityJobDefinition' {} a -> s {tags = a} :: CreateModelQualityJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the monitoring job definition.
+createModelQualityJobDefinition_jobDefinitionName :: Lens.Lens' CreateModelQualityJobDefinition Prelude.Text
+createModelQualityJobDefinition_jobDefinitionName = Lens.lens (\CreateModelQualityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@CreateModelQualityJobDefinition' {} a -> s {jobDefinitionName = a} :: CreateModelQualityJobDefinition)
+
+-- | The container that runs the monitoring job.
+createModelQualityJobDefinition_modelQualityAppSpecification :: Lens.Lens' CreateModelQualityJobDefinition ModelQualityAppSpecification
+createModelQualityJobDefinition_modelQualityAppSpecification = Lens.lens (\CreateModelQualityJobDefinition' {modelQualityAppSpecification} -> modelQualityAppSpecification) (\s@CreateModelQualityJobDefinition' {} a -> s {modelQualityAppSpecification = a} :: CreateModelQualityJobDefinition)
+
+-- | A list of the inputs that are monitored. Currently endpoints are
+-- supported.
+createModelQualityJobDefinition_modelQualityJobInput :: Lens.Lens' CreateModelQualityJobDefinition ModelQualityJobInput
+createModelQualityJobDefinition_modelQualityJobInput = Lens.lens (\CreateModelQualityJobDefinition' {modelQualityJobInput} -> modelQualityJobInput) (\s@CreateModelQualityJobDefinition' {} a -> s {modelQualityJobInput = a} :: CreateModelQualityJobDefinition)
+
+-- | Undocumented member.
+createModelQualityJobDefinition_modelQualityJobOutputConfig :: Lens.Lens' CreateModelQualityJobDefinition MonitoringOutputConfig
+createModelQualityJobDefinition_modelQualityJobOutputConfig = Lens.lens (\CreateModelQualityJobDefinition' {modelQualityJobOutputConfig} -> modelQualityJobOutputConfig) (\s@CreateModelQualityJobDefinition' {} a -> s {modelQualityJobOutputConfig = a} :: CreateModelQualityJobDefinition)
+
+-- | Undocumented member.
+createModelQualityJobDefinition_jobResources :: Lens.Lens' CreateModelQualityJobDefinition MonitoringResources
+createModelQualityJobDefinition_jobResources = Lens.lens (\CreateModelQualityJobDefinition' {jobResources} -> jobResources) (\s@CreateModelQualityJobDefinition' {} a -> s {jobResources = a} :: CreateModelQualityJobDefinition)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+createModelQualityJobDefinition_roleArn :: Lens.Lens' CreateModelQualityJobDefinition Prelude.Text
+createModelQualityJobDefinition_roleArn = Lens.lens (\CreateModelQualityJobDefinition' {roleArn} -> roleArn) (\s@CreateModelQualityJobDefinition' {} a -> s {roleArn = a} :: CreateModelQualityJobDefinition)
+
+instance
+  Core.AWSRequest
+    CreateModelQualityJobDefinition
+  where
+  type
+    AWSResponse CreateModelQualityJobDefinition =
+      CreateModelQualityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelQualityJobDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+      )
+
+instance
+  Prelude.Hashable
+    CreateModelQualityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    CreateModelQualityJobDefinition' {..} =
+      _salt
+        `Prelude.hashWithSalt` modelQualityBaselineConfig
+        `Prelude.hashWithSalt` networkConfig
+        `Prelude.hashWithSalt` stoppingCondition
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` jobDefinitionName
+        `Prelude.hashWithSalt` modelQualityAppSpecification
+        `Prelude.hashWithSalt` modelQualityJobInput
+        `Prelude.hashWithSalt` modelQualityJobOutputConfig
+        `Prelude.hashWithSalt` jobResources
+        `Prelude.hashWithSalt` roleArn
+
+instance
+  Prelude.NFData
+    CreateModelQualityJobDefinition
+  where
+  rnf CreateModelQualityJobDefinition' {..} =
+    Prelude.rnf modelQualityBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf modelQualityAppSpecification
+      `Prelude.seq` Prelude.rnf modelQualityJobInput
+      `Prelude.seq` Prelude.rnf modelQualityJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance
+  Data.ToHeaders
+    CreateModelQualityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateModelQualityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModelQualityJobDefinition where
+  toJSON CreateModelQualityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelQualityBaselineConfig" Data..=)
+              Prelude.<$> modelQualityBaselineConfig,
+            ("NetworkConfig" Data..=) Prelude.<$> networkConfig,
+            ("StoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName),
+            Prelude.Just
+              ( "ModelQualityAppSpecification"
+                  Data..= modelQualityAppSpecification
+              ),
+            Prelude.Just
+              ( "ModelQualityJobInput"
+                  Data..= modelQualityJobInput
+              ),
+            Prelude.Just
+              ( "ModelQualityJobOutputConfig"
+                  Data..= modelQualityJobOutputConfig
+              ),
+            Prelude.Just ("JobResources" Data..= jobResources),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateModelQualityJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModelQualityJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelQualityJobDefinitionResponse' smart constructor.
+data CreateModelQualityJobDefinitionResponse = CreateModelQualityJobDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model quality monitoring job.
+    jobDefinitionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelQualityJobDefinitionResponse' 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', 'createModelQualityJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'createModelQualityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model quality monitoring job.
+newCreateModelQualityJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  CreateModelQualityJobDefinitionResponse
+newCreateModelQualityJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_ =
+    CreateModelQualityJobDefinitionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_
+      }
+
+-- | The response's http status code.
+createModelQualityJobDefinitionResponse_httpStatus :: Lens.Lens' CreateModelQualityJobDefinitionResponse Prelude.Int
+createModelQualityJobDefinitionResponse_httpStatus = Lens.lens (\CreateModelQualityJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@CreateModelQualityJobDefinitionResponse' {} a -> s {httpStatus = a} :: CreateModelQualityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the model quality monitoring job.
+createModelQualityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' CreateModelQualityJobDefinitionResponse Prelude.Text
+createModelQualityJobDefinitionResponse_jobDefinitionArn = Lens.lens (\CreateModelQualityJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@CreateModelQualityJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: CreateModelQualityJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    CreateModelQualityJobDefinitionResponse
+  where
+  rnf CreateModelQualityJobDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionArn
diff --git a/gen/Amazonka/SageMaker/CreateMonitoringSchedule.hs b/gen/Amazonka/SageMaker/CreateMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateMonitoringSchedule.hs
@@ -0,0 +1,231 @@
+{-# 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.CreateMonitoringSchedule
+-- 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 schedule that regularly starts Amazon SageMaker Processing
+-- Jobs to monitor the data captured for an Amazon SageMaker Endoint.
+module Amazonka.SageMaker.CreateMonitoringSchedule
+  ( -- * Creating a Request
+    CreateMonitoringSchedule (..),
+    newCreateMonitoringSchedule,
+
+    -- * Request Lenses
+    createMonitoringSchedule_tags,
+    createMonitoringSchedule_monitoringScheduleName,
+    createMonitoringSchedule_monitoringScheduleConfig,
+
+    -- * Destructuring the Response
+    CreateMonitoringScheduleResponse (..),
+    newCreateMonitoringScheduleResponse,
+
+    -- * Response Lenses
+    createMonitoringScheduleResponse_httpStatus,
+    createMonitoringScheduleResponse_monitoringScheduleArn,
+  )
+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:/ 'newCreateMonitoringSchedule' smart constructor.
+data CreateMonitoringSchedule = CreateMonitoringSchedule'
+  { -- | (Optional) An array of key-value pairs. For more information, see
+    -- <%20https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the monitoring schedule. The name must be unique within an
+    -- Amazon Web Services Region within an Amazon Web Services account.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The configuration object that specifies the monitoring schedule and
+    -- defines the monitoring job.
+    monitoringScheduleConfig :: MonitoringScheduleConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMonitoringSchedule' 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:
+--
+-- 'tags', 'createMonitoringSchedule_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <%20https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'monitoringScheduleName', 'createMonitoringSchedule_monitoringScheduleName' - The name of the monitoring schedule. The name must be unique within an
+-- Amazon Web Services Region within an Amazon Web Services account.
+--
+-- 'monitoringScheduleConfig', 'createMonitoringSchedule_monitoringScheduleConfig' - The configuration object that specifies the monitoring schedule and
+-- defines the monitoring job.
+newCreateMonitoringSchedule ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'monitoringScheduleConfig'
+  MonitoringScheduleConfig ->
+  CreateMonitoringSchedule
+newCreateMonitoringSchedule
+  pMonitoringScheduleName_
+  pMonitoringScheduleConfig_ =
+    CreateMonitoringSchedule'
+      { tags = Prelude.Nothing,
+        monitoringScheduleName = pMonitoringScheduleName_,
+        monitoringScheduleConfig =
+          pMonitoringScheduleConfig_
+      }
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <%20https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createMonitoringSchedule_tags :: Lens.Lens' CreateMonitoringSchedule (Prelude.Maybe [Tag])
+createMonitoringSchedule_tags = Lens.lens (\CreateMonitoringSchedule' {tags} -> tags) (\s@CreateMonitoringSchedule' {} a -> s {tags = a} :: CreateMonitoringSchedule) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the monitoring schedule. The name must be unique within an
+-- Amazon Web Services Region within an Amazon Web Services account.
+createMonitoringSchedule_monitoringScheduleName :: Lens.Lens' CreateMonitoringSchedule Prelude.Text
+createMonitoringSchedule_monitoringScheduleName = Lens.lens (\CreateMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@CreateMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: CreateMonitoringSchedule)
+
+-- | The configuration object that specifies the monitoring schedule and
+-- defines the monitoring job.
+createMonitoringSchedule_monitoringScheduleConfig :: Lens.Lens' CreateMonitoringSchedule MonitoringScheduleConfig
+createMonitoringSchedule_monitoringScheduleConfig = Lens.lens (\CreateMonitoringSchedule' {monitoringScheduleConfig} -> monitoringScheduleConfig) (\s@CreateMonitoringSchedule' {} a -> s {monitoringScheduleConfig = a} :: CreateMonitoringSchedule)
+
+instance Core.AWSRequest CreateMonitoringSchedule where
+  type
+    AWSResponse CreateMonitoringSchedule =
+      CreateMonitoringScheduleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMonitoringScheduleResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "MonitoringScheduleArn")
+      )
+
+instance Prelude.Hashable CreateMonitoringSchedule where
+  hashWithSalt _salt CreateMonitoringSchedule' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringScheduleConfig
+
+instance Prelude.NFData CreateMonitoringSchedule where
+  rnf CreateMonitoringSchedule' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringScheduleConfig
+
+instance Data.ToHeaders CreateMonitoringSchedule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateMonitoringSchedule" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateMonitoringSchedule where
+  toJSON CreateMonitoringSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              ),
+            Prelude.Just
+              ( "MonitoringScheduleConfig"
+                  Data..= monitoringScheduleConfig
+              )
+          ]
+      )
+
+instance Data.ToPath CreateMonitoringSchedule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateMonitoringSchedule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMonitoringScheduleResponse' smart constructor.
+data CreateMonitoringScheduleResponse = CreateMonitoringScheduleResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the monitoring schedule.
+    monitoringScheduleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMonitoringScheduleResponse' 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', 'createMonitoringScheduleResponse_httpStatus' - The response's http status code.
+--
+-- 'monitoringScheduleArn', 'createMonitoringScheduleResponse_monitoringScheduleArn' - The Amazon Resource Name (ARN) of the monitoring schedule.
+newCreateMonitoringScheduleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'monitoringScheduleArn'
+  Prelude.Text ->
+  CreateMonitoringScheduleResponse
+newCreateMonitoringScheduleResponse
+  pHttpStatus_
+  pMonitoringScheduleArn_ =
+    CreateMonitoringScheduleResponse'
+      { httpStatus =
+          pHttpStatus_,
+        monitoringScheduleArn =
+          pMonitoringScheduleArn_
+      }
+
+-- | The response's http status code.
+createMonitoringScheduleResponse_httpStatus :: Lens.Lens' CreateMonitoringScheduleResponse Prelude.Int
+createMonitoringScheduleResponse_httpStatus = Lens.lens (\CreateMonitoringScheduleResponse' {httpStatus} -> httpStatus) (\s@CreateMonitoringScheduleResponse' {} a -> s {httpStatus = a} :: CreateMonitoringScheduleResponse)
+
+-- | The Amazon Resource Name (ARN) of the monitoring schedule.
+createMonitoringScheduleResponse_monitoringScheduleArn :: Lens.Lens' CreateMonitoringScheduleResponse Prelude.Text
+createMonitoringScheduleResponse_monitoringScheduleArn = Lens.lens (\CreateMonitoringScheduleResponse' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@CreateMonitoringScheduleResponse' {} a -> s {monitoringScheduleArn = a} :: CreateMonitoringScheduleResponse)
+
+instance
+  Prelude.NFData
+    CreateMonitoringScheduleResponse
+  where
+  rnf CreateMonitoringScheduleResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
diff --git a/gen/Amazonka/SageMaker/CreateNotebookInstance.hs b/gen/Amazonka/SageMaker/CreateNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateNotebookInstance.hs
@@ -0,0 +1,593 @@
+{-# 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.CreateNotebookInstance
+-- 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 an SageMaker notebook instance. A notebook instance is a machine
+-- learning (ML) compute instance running on a Jupyter notebook.
+--
+-- In a @CreateNotebookInstance@ request, specify the type of ML compute
+-- instance that you want to run. SageMaker launches the instance, installs
+-- common libraries that you can use to explore datasets for model
+-- training, and attaches an ML storage volume to the notebook instance.
+--
+-- SageMaker also provides a set of example notebooks. Each notebook
+-- demonstrates how to use SageMaker with a specific algorithm or with a
+-- machine learning framework.
+--
+-- After receiving the request, SageMaker does the following:
+--
+-- 1.  Creates a network interface in the SageMaker VPC.
+--
+-- 2.  (Option) If you specified @SubnetId@, SageMaker creates a network
+--     interface in your own VPC, which is inferred from the subnet ID that
+--     you provide in the input. When creating this network interface,
+--     SageMaker attaches the security group that you specified in the
+--     request to the network interface that it creates in your VPC.
+--
+-- 3.  Launches an EC2 instance of the type specified in the request in the
+--     SageMaker VPC. If you specified @SubnetId@ of your VPC, SageMaker
+--     specifies both network interfaces when launching this instance. This
+--     enables inbound traffic from your own VPC to the notebook instance,
+--     assuming that the security groups allow it.
+--
+-- After creating the notebook instance, SageMaker returns its Amazon
+-- Resource Name (ARN). You can\'t change the name of a notebook instance
+-- after you create it.
+--
+-- After SageMaker creates the notebook instance, you can connect to the
+-- Jupyter server and work in Jupyter notebooks. For example, you can write
+-- code to explore a dataset that you can use for model training, train a
+-- model, host models by creating SageMaker endpoints, and validate hosted
+-- models.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works.html How It Works>.
+module Amazonka.SageMaker.CreateNotebookInstance
+  ( -- * Creating a Request
+    CreateNotebookInstance (..),
+    newCreateNotebookInstance,
+
+    -- * Request Lenses
+    createNotebookInstance_acceleratorTypes,
+    createNotebookInstance_additionalCodeRepositories,
+    createNotebookInstance_defaultCodeRepository,
+    createNotebookInstance_directInternetAccess,
+    createNotebookInstance_instanceMetadataServiceConfiguration,
+    createNotebookInstance_kmsKeyId,
+    createNotebookInstance_lifecycleConfigName,
+    createNotebookInstance_platformIdentifier,
+    createNotebookInstance_rootAccess,
+    createNotebookInstance_securityGroupIds,
+    createNotebookInstance_subnetId,
+    createNotebookInstance_tags,
+    createNotebookInstance_volumeSizeInGB,
+    createNotebookInstance_notebookInstanceName,
+    createNotebookInstance_instanceType,
+    createNotebookInstance_roleArn,
+
+    -- * Destructuring the Response
+    CreateNotebookInstanceResponse (..),
+    newCreateNotebookInstanceResponse,
+
+    -- * Response Lenses
+    createNotebookInstanceResponse_notebookInstanceArn,
+    createNotebookInstanceResponse_httpStatus,
+  )
+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:/ 'newCreateNotebookInstance' smart constructor.
+data CreateNotebookInstance = CreateNotebookInstance'
+  { -- | A list of Elastic Inference (EI) instance types to associate with this
+    -- notebook instance. Currently, only one instance type can be associated
+    -- with a notebook instance. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+    acceleratorTypes :: Prelude.Maybe [NotebookInstanceAcceleratorType],
+    -- | An array of up to three Git repositories to associate with the notebook
+    -- instance. These can be either the names of Git repositories stored as
+    -- resources in your account, or the URL of Git repositories in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. These repositories are cloned at the
+    -- same level as the default repository of your notebook instance. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    additionalCodeRepositories :: Prelude.Maybe [Prelude.Text],
+    -- | A Git repository to associate with the notebook instance as its default
+    -- code repository. This can be either the name of a Git repository stored
+    -- as a resource in your account, or the URL of a Git repository in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. When you open a notebook instance, it
+    -- opens in the directory that contains this repository. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    defaultCodeRepository :: Prelude.Maybe Prelude.Text,
+    -- | Sets whether SageMaker provides internet access to the notebook
+    -- instance. If you set this to @Disabled@ this notebook instance is able
+    -- to access resources only in your VPC, and is not be able to connect to
+    -- SageMaker training and endpoint services unless you configure a NAT
+    -- Gateway in your VPC.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access Notebook Instances Are Internet-Enabled by Default>.
+    -- You can set the value of this parameter to @Disabled@ only if you set a
+    -- value for the @SubnetId@ parameter.
+    directInternetAccess :: Prelude.Maybe DirectInternetAccess,
+    -- | Information on the IMDS configuration of the notebook instance
+    instanceMetadataServiceConfiguration :: Prelude.Maybe InstanceMetadataServiceConfiguration,
+    -- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+    -- Service key that SageMaker uses to encrypt data on the storage volume
+    -- attached to your notebook instance. The KMS key you provide must be
+    -- enabled. For information, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html Enabling and Disabling Keys>
+    -- in the /Amazon Web Services Key Management Service Developer Guide/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The name of a lifecycle configuration to associate with the notebook
+    -- instance. For information about lifestyle configurations, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+    lifecycleConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The platform identifier of the notebook instance runtime environment.
+    platformIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Whether root access is enabled or disabled for users of the notebook
+    -- instance. The default value is @Enabled@.
+    --
+    -- Lifecycle configurations need root access to be able to set up a
+    -- notebook instance. Because of this, lifecycle configurations associated
+    -- with a notebook instance always run with root access even if you disable
+    -- root access for users.
+    rootAccess :: Prelude.Maybe RootAccess,
+    -- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+    -- must be for the same VPC as specified in the subnet.
+    securityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the subnet in a VPC to which you would like to have a
+    -- connectivity from your ML compute instance.
+    subnetId :: Prelude.Maybe Prelude.Text,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The size, in GB, of the ML storage volume to attach to the notebook
+    -- instance. The default value is 5 GB.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the new notebook instance.
+    notebookInstanceName :: Prelude.Text,
+    -- | The type of ML compute instance to launch for the notebook instance.
+    instanceType :: InstanceType,
+    -- | When you send any requests to Amazon Web Services resources from the
+    -- notebook instance, SageMaker assumes this role to perform tasks on your
+    -- behalf. You must grant this role necessary permissions so SageMaker can
+    -- perform these tasks. The policy must allow the SageMaker service
+    -- principal (sagemaker.amazonaws.com) permissions to assume this role. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+    --
+    -- To be able to pass this role to SageMaker, the caller of this API must
+    -- have the @iam:PassRole@ permission.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNotebookInstance' 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:
+--
+-- 'acceleratorTypes', 'createNotebookInstance_acceleratorTypes' - A list of Elastic Inference (EI) instance types to associate with this
+-- notebook instance. Currently, only one instance type can be associated
+-- with a notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+--
+-- 'additionalCodeRepositories', 'createNotebookInstance_additionalCodeRepositories' - An array of up to three Git repositories to associate with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'defaultCodeRepository', 'createNotebookInstance_defaultCodeRepository' - A Git repository to associate with the notebook instance as its default
+-- code repository. This can be either the name of a Git repository stored
+-- as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'directInternetAccess', 'createNotebookInstance_directInternetAccess' - Sets whether SageMaker provides internet access to the notebook
+-- instance. If you set this to @Disabled@ this notebook instance is able
+-- to access resources only in your VPC, and is not be able to connect to
+-- SageMaker training and endpoint services unless you configure a NAT
+-- Gateway in your VPC.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access Notebook Instances Are Internet-Enabled by Default>.
+-- You can set the value of this parameter to @Disabled@ only if you set a
+-- value for the @SubnetId@ parameter.
+--
+-- 'instanceMetadataServiceConfiguration', 'createNotebookInstance_instanceMetadataServiceConfiguration' - Information on the IMDS configuration of the notebook instance
+--
+-- 'kmsKeyId', 'createNotebookInstance_kmsKeyId' - The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt data on the storage volume
+-- attached to your notebook instance. The KMS key you provide must be
+-- enabled. For information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html Enabling and Disabling Keys>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+--
+-- 'lifecycleConfigName', 'createNotebookInstance_lifecycleConfigName' - The name of a lifecycle configuration to associate with the notebook
+-- instance. For information about lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+--
+-- 'platformIdentifier', 'createNotebookInstance_platformIdentifier' - The platform identifier of the notebook instance runtime environment.
+--
+-- 'rootAccess', 'createNotebookInstance_rootAccess' - Whether root access is enabled or disabled for users of the notebook
+-- instance. The default value is @Enabled@.
+--
+-- Lifecycle configurations need root access to be able to set up a
+-- notebook instance. Because of this, lifecycle configurations associated
+-- with a notebook instance always run with root access even if you disable
+-- root access for users.
+--
+-- 'securityGroupIds', 'createNotebookInstance_securityGroupIds' - The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+-- must be for the same VPC as specified in the subnet.
+--
+-- 'subnetId', 'createNotebookInstance_subnetId' - The ID of the subnet in a VPC to which you would like to have a
+-- connectivity from your ML compute instance.
+--
+-- 'tags', 'createNotebookInstance_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'volumeSizeInGB', 'createNotebookInstance_volumeSizeInGB' - The size, in GB, of the ML storage volume to attach to the notebook
+-- instance. The default value is 5 GB.
+--
+-- 'notebookInstanceName', 'createNotebookInstance_notebookInstanceName' - The name of the new notebook instance.
+--
+-- 'instanceType', 'createNotebookInstance_instanceType' - The type of ML compute instance to launch for the notebook instance.
+--
+-- 'roleArn', 'createNotebookInstance_roleArn' - When you send any requests to Amazon Web Services resources from the
+-- notebook instance, SageMaker assumes this role to perform tasks on your
+-- behalf. You must grant this role necessary permissions so SageMaker can
+-- perform these tasks. The policy must allow the SageMaker service
+-- principal (sagemaker.amazonaws.com) permissions to assume this role. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+newCreateNotebookInstance ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  -- | 'instanceType'
+  InstanceType ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateNotebookInstance
+newCreateNotebookInstance
+  pNotebookInstanceName_
+  pInstanceType_
+  pRoleArn_ =
+    CreateNotebookInstance'
+      { acceleratorTypes =
+          Prelude.Nothing,
+        additionalCodeRepositories = Prelude.Nothing,
+        defaultCodeRepository = Prelude.Nothing,
+        directInternetAccess = Prelude.Nothing,
+        instanceMetadataServiceConfiguration =
+          Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        lifecycleConfigName = Prelude.Nothing,
+        platformIdentifier = Prelude.Nothing,
+        rootAccess = Prelude.Nothing,
+        securityGroupIds = Prelude.Nothing,
+        subnetId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        volumeSizeInGB = Prelude.Nothing,
+        notebookInstanceName = pNotebookInstanceName_,
+        instanceType = pInstanceType_,
+        roleArn = pRoleArn_
+      }
+
+-- | A list of Elastic Inference (EI) instance types to associate with this
+-- notebook instance. Currently, only one instance type can be associated
+-- with a notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+createNotebookInstance_acceleratorTypes :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe [NotebookInstanceAcceleratorType])
+createNotebookInstance_acceleratorTypes = Lens.lens (\CreateNotebookInstance' {acceleratorTypes} -> acceleratorTypes) (\s@CreateNotebookInstance' {} a -> s {acceleratorTypes = a} :: CreateNotebookInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of up to three Git repositories to associate with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+createNotebookInstance_additionalCodeRepositories :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe [Prelude.Text])
+createNotebookInstance_additionalCodeRepositories = Lens.lens (\CreateNotebookInstance' {additionalCodeRepositories} -> additionalCodeRepositories) (\s@CreateNotebookInstance' {} a -> s {additionalCodeRepositories = a} :: CreateNotebookInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | A Git repository to associate with the notebook instance as its default
+-- code repository. This can be either the name of a Git repository stored
+-- as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+createNotebookInstance_defaultCodeRepository :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe Prelude.Text)
+createNotebookInstance_defaultCodeRepository = Lens.lens (\CreateNotebookInstance' {defaultCodeRepository} -> defaultCodeRepository) (\s@CreateNotebookInstance' {} a -> s {defaultCodeRepository = a} :: CreateNotebookInstance)
+
+-- | Sets whether SageMaker provides internet access to the notebook
+-- instance. If you set this to @Disabled@ this notebook instance is able
+-- to access resources only in your VPC, and is not be able to connect to
+-- SageMaker training and endpoint services unless you configure a NAT
+-- Gateway in your VPC.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access Notebook Instances Are Internet-Enabled by Default>.
+-- You can set the value of this parameter to @Disabled@ only if you set a
+-- value for the @SubnetId@ parameter.
+createNotebookInstance_directInternetAccess :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe DirectInternetAccess)
+createNotebookInstance_directInternetAccess = Lens.lens (\CreateNotebookInstance' {directInternetAccess} -> directInternetAccess) (\s@CreateNotebookInstance' {} a -> s {directInternetAccess = a} :: CreateNotebookInstance)
+
+-- | Information on the IMDS configuration of the notebook instance
+createNotebookInstance_instanceMetadataServiceConfiguration :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe InstanceMetadataServiceConfiguration)
+createNotebookInstance_instanceMetadataServiceConfiguration = Lens.lens (\CreateNotebookInstance' {instanceMetadataServiceConfiguration} -> instanceMetadataServiceConfiguration) (\s@CreateNotebookInstance' {} a -> s {instanceMetadataServiceConfiguration = a} :: CreateNotebookInstance)
+
+-- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt data on the storage volume
+-- attached to your notebook instance. The KMS key you provide must be
+-- enabled. For information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html Enabling and Disabling Keys>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+createNotebookInstance_kmsKeyId :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe Prelude.Text)
+createNotebookInstance_kmsKeyId = Lens.lens (\CreateNotebookInstance' {kmsKeyId} -> kmsKeyId) (\s@CreateNotebookInstance' {} a -> s {kmsKeyId = a} :: CreateNotebookInstance)
+
+-- | The name of a lifecycle configuration to associate with the notebook
+-- instance. For information about lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+createNotebookInstance_lifecycleConfigName :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe Prelude.Text)
+createNotebookInstance_lifecycleConfigName = Lens.lens (\CreateNotebookInstance' {lifecycleConfigName} -> lifecycleConfigName) (\s@CreateNotebookInstance' {} a -> s {lifecycleConfigName = a} :: CreateNotebookInstance)
+
+-- | The platform identifier of the notebook instance runtime environment.
+createNotebookInstance_platformIdentifier :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe Prelude.Text)
+createNotebookInstance_platformIdentifier = Lens.lens (\CreateNotebookInstance' {platformIdentifier} -> platformIdentifier) (\s@CreateNotebookInstance' {} a -> s {platformIdentifier = a} :: CreateNotebookInstance)
+
+-- | Whether root access is enabled or disabled for users of the notebook
+-- instance. The default value is @Enabled@.
+--
+-- Lifecycle configurations need root access to be able to set up a
+-- notebook instance. Because of this, lifecycle configurations associated
+-- with a notebook instance always run with root access even if you disable
+-- root access for users.
+createNotebookInstance_rootAccess :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe RootAccess)
+createNotebookInstance_rootAccess = Lens.lens (\CreateNotebookInstance' {rootAccess} -> rootAccess) (\s@CreateNotebookInstance' {} a -> s {rootAccess = a} :: CreateNotebookInstance)
+
+-- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+-- must be for the same VPC as specified in the subnet.
+createNotebookInstance_securityGroupIds :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe [Prelude.Text])
+createNotebookInstance_securityGroupIds = Lens.lens (\CreateNotebookInstance' {securityGroupIds} -> securityGroupIds) (\s@CreateNotebookInstance' {} a -> s {securityGroupIds = a} :: CreateNotebookInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the subnet in a VPC to which you would like to have a
+-- connectivity from your ML compute instance.
+createNotebookInstance_subnetId :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe Prelude.Text)
+createNotebookInstance_subnetId = Lens.lens (\CreateNotebookInstance' {subnetId} -> subnetId) (\s@CreateNotebookInstance' {} a -> s {subnetId = a} :: CreateNotebookInstance)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createNotebookInstance_tags :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe [Tag])
+createNotebookInstance_tags = Lens.lens (\CreateNotebookInstance' {tags} -> tags) (\s@CreateNotebookInstance' {} a -> s {tags = a} :: CreateNotebookInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | The size, in GB, of the ML storage volume to attach to the notebook
+-- instance. The default value is 5 GB.
+createNotebookInstance_volumeSizeInGB :: Lens.Lens' CreateNotebookInstance (Prelude.Maybe Prelude.Natural)
+createNotebookInstance_volumeSizeInGB = Lens.lens (\CreateNotebookInstance' {volumeSizeInGB} -> volumeSizeInGB) (\s@CreateNotebookInstance' {} a -> s {volumeSizeInGB = a} :: CreateNotebookInstance)
+
+-- | The name of the new notebook instance.
+createNotebookInstance_notebookInstanceName :: Lens.Lens' CreateNotebookInstance Prelude.Text
+createNotebookInstance_notebookInstanceName = Lens.lens (\CreateNotebookInstance' {notebookInstanceName} -> notebookInstanceName) (\s@CreateNotebookInstance' {} a -> s {notebookInstanceName = a} :: CreateNotebookInstance)
+
+-- | The type of ML compute instance to launch for the notebook instance.
+createNotebookInstance_instanceType :: Lens.Lens' CreateNotebookInstance InstanceType
+createNotebookInstance_instanceType = Lens.lens (\CreateNotebookInstance' {instanceType} -> instanceType) (\s@CreateNotebookInstance' {} a -> s {instanceType = a} :: CreateNotebookInstance)
+
+-- | When you send any requests to Amazon Web Services resources from the
+-- notebook instance, SageMaker assumes this role to perform tasks on your
+-- behalf. You must grant this role necessary permissions so SageMaker can
+-- perform these tasks. The policy must allow the SageMaker service
+-- principal (sagemaker.amazonaws.com) permissions to assume this role. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+createNotebookInstance_roleArn :: Lens.Lens' CreateNotebookInstance Prelude.Text
+createNotebookInstance_roleArn = Lens.lens (\CreateNotebookInstance' {roleArn} -> roleArn) (\s@CreateNotebookInstance' {} a -> s {roleArn = a} :: CreateNotebookInstance)
+
+instance Core.AWSRequest CreateNotebookInstance where
+  type
+    AWSResponse CreateNotebookInstance =
+      CreateNotebookInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateNotebookInstanceResponse'
+            Prelude.<$> (x Data..?> "NotebookInstanceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateNotebookInstance where
+  hashWithSalt _salt CreateNotebookInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` acceleratorTypes
+      `Prelude.hashWithSalt` additionalCodeRepositories
+      `Prelude.hashWithSalt` defaultCodeRepository
+      `Prelude.hashWithSalt` directInternetAccess
+      `Prelude.hashWithSalt` instanceMetadataServiceConfiguration
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` lifecycleConfigName
+      `Prelude.hashWithSalt` platformIdentifier
+      `Prelude.hashWithSalt` rootAccess
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` subnetId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` volumeSizeInGB
+      `Prelude.hashWithSalt` notebookInstanceName
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateNotebookInstance where
+  rnf CreateNotebookInstance' {..} =
+    Prelude.rnf acceleratorTypes
+      `Prelude.seq` Prelude.rnf additionalCodeRepositories
+      `Prelude.seq` Prelude.rnf defaultCodeRepository
+      `Prelude.seq` Prelude.rnf directInternetAccess
+      `Prelude.seq` Prelude.rnf instanceMetadataServiceConfiguration
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lifecycleConfigName
+      `Prelude.seq` Prelude.rnf platformIdentifier
+      `Prelude.seq` Prelude.rnf rootAccess
+      `Prelude.seq` Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf subnetId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+      `Prelude.seq` Prelude.rnf notebookInstanceName
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateNotebookInstance where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateNotebookInstance" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateNotebookInstance where
+  toJSON CreateNotebookInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AcceleratorTypes" Data..=)
+              Prelude.<$> acceleratorTypes,
+            ("AdditionalCodeRepositories" Data..=)
+              Prelude.<$> additionalCodeRepositories,
+            ("DefaultCodeRepository" Data..=)
+              Prelude.<$> defaultCodeRepository,
+            ("DirectInternetAccess" Data..=)
+              Prelude.<$> directInternetAccess,
+            ("InstanceMetadataServiceConfiguration" Data..=)
+              Prelude.<$> instanceMetadataServiceConfiguration,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("LifecycleConfigName" Data..=)
+              Prelude.<$> lifecycleConfigName,
+            ("PlatformIdentifier" Data..=)
+              Prelude.<$> platformIdentifier,
+            ("RootAccess" Data..=) Prelude.<$> rootAccess,
+            ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds,
+            ("SubnetId" Data..=) Prelude.<$> subnetId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("VolumeSizeInGB" Data..=)
+              Prelude.<$> volumeSizeInGB,
+            Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              ),
+            Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateNotebookInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateNotebookInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateNotebookInstanceResponse' smart constructor.
+data CreateNotebookInstanceResponse = CreateNotebookInstanceResponse'
+  { -- | The Amazon Resource Name (ARN) of the notebook instance.
+    notebookInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNotebookInstanceResponse' 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:
+--
+-- 'notebookInstanceArn', 'createNotebookInstanceResponse_notebookInstanceArn' - The Amazon Resource Name (ARN) of the notebook instance.
+--
+-- 'httpStatus', 'createNotebookInstanceResponse_httpStatus' - The response's http status code.
+newCreateNotebookInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateNotebookInstanceResponse
+newCreateNotebookInstanceResponse pHttpStatus_ =
+  CreateNotebookInstanceResponse'
+    { notebookInstanceArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the notebook instance.
+createNotebookInstanceResponse_notebookInstanceArn :: Lens.Lens' CreateNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+createNotebookInstanceResponse_notebookInstanceArn = Lens.lens (\CreateNotebookInstanceResponse' {notebookInstanceArn} -> notebookInstanceArn) (\s@CreateNotebookInstanceResponse' {} a -> s {notebookInstanceArn = a} :: CreateNotebookInstanceResponse)
+
+-- | The response's http status code.
+createNotebookInstanceResponse_httpStatus :: Lens.Lens' CreateNotebookInstanceResponse Prelude.Int
+createNotebookInstanceResponse_httpStatus = Lens.lens (\CreateNotebookInstanceResponse' {httpStatus} -> httpStatus) (\s@CreateNotebookInstanceResponse' {} a -> s {httpStatus = a} :: CreateNotebookInstanceResponse)
+
+instance
+  Prelude.NFData
+    CreateNotebookInstanceResponse
+  where
+  rnf CreateNotebookInstanceResponse' {..} =
+    Prelude.rnf notebookInstanceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateNotebookInstanceLifecycleConfig.hs b/gen/Amazonka/SageMaker/CreateNotebookInstanceLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateNotebookInstanceLifecycleConfig.hs
@@ -0,0 +1,261 @@
+{-# 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.CreateNotebookInstanceLifecycleConfig
+-- 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 lifecycle configuration that you can associate with a notebook
+-- instance. A /lifecycle configuration/ is a collection of shell scripts
+-- that run when you create or start a notebook instance.
+--
+-- Each lifecycle configuration script has a limit of 16384 characters.
+--
+-- The value of the @$PATH@ environment variable that is available to both
+-- scripts is @\/sbin:bin:\/usr\/sbin:\/usr\/bin@.
+--
+-- View CloudWatch Logs for notebook instance lifecycle configurations in
+-- log group @\/aws\/sagemaker\/NotebookInstances@ in log stream
+-- @[notebook-instance-name]\/[LifecycleConfigHook]@.
+--
+-- Lifecycle configuration scripts cannot run for longer than 5 minutes. If
+-- a script runs for longer than 5 minutes, it fails and the notebook
+-- instance is not created or started.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+module Amazonka.SageMaker.CreateNotebookInstanceLifecycleConfig
+  ( -- * Creating a Request
+    CreateNotebookInstanceLifecycleConfig (..),
+    newCreateNotebookInstanceLifecycleConfig,
+
+    -- * Request Lenses
+    createNotebookInstanceLifecycleConfig_onCreate,
+    createNotebookInstanceLifecycleConfig_onStart,
+    createNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+
+    -- * Destructuring the Response
+    CreateNotebookInstanceLifecycleConfigResponse (..),
+    newCreateNotebookInstanceLifecycleConfigResponse,
+
+    -- * Response Lenses
+    createNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn,
+    createNotebookInstanceLifecycleConfigResponse_httpStatus,
+  )
+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:/ 'newCreateNotebookInstanceLifecycleConfig' smart constructor.
+data CreateNotebookInstanceLifecycleConfig = CreateNotebookInstanceLifecycleConfig'
+  { -- | A shell script that runs only once, when you create a notebook instance.
+    -- The shell script must be a base64-encoded string.
+    onCreate :: Prelude.Maybe [NotebookInstanceLifecycleHook],
+    -- | A shell script that runs every time you start a notebook instance,
+    -- including when you create the notebook instance. The shell script must
+    -- be a base64-encoded string.
+    onStart :: Prelude.Maybe [NotebookInstanceLifecycleHook],
+    -- | The name of the lifecycle configuration.
+    notebookInstanceLifecycleConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNotebookInstanceLifecycleConfig' 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:
+--
+-- 'onCreate', 'createNotebookInstanceLifecycleConfig_onCreate' - A shell script that runs only once, when you create a notebook instance.
+-- The shell script must be a base64-encoded string.
+--
+-- 'onStart', 'createNotebookInstanceLifecycleConfig_onStart' - A shell script that runs every time you start a notebook instance,
+-- including when you create the notebook instance. The shell script must
+-- be a base64-encoded string.
+--
+-- 'notebookInstanceLifecycleConfigName', 'createNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
+newCreateNotebookInstanceLifecycleConfig ::
+  -- | 'notebookInstanceLifecycleConfigName'
+  Prelude.Text ->
+  CreateNotebookInstanceLifecycleConfig
+newCreateNotebookInstanceLifecycleConfig
+  pNotebookInstanceLifecycleConfigName_ =
+    CreateNotebookInstanceLifecycleConfig'
+      { onCreate =
+          Prelude.Nothing,
+        onStart = Prelude.Nothing,
+        notebookInstanceLifecycleConfigName =
+          pNotebookInstanceLifecycleConfigName_
+      }
+
+-- | A shell script that runs only once, when you create a notebook instance.
+-- The shell script must be a base64-encoded string.
+createNotebookInstanceLifecycleConfig_onCreate :: Lens.Lens' CreateNotebookInstanceLifecycleConfig (Prelude.Maybe [NotebookInstanceLifecycleHook])
+createNotebookInstanceLifecycleConfig_onCreate = Lens.lens (\CreateNotebookInstanceLifecycleConfig' {onCreate} -> onCreate) (\s@CreateNotebookInstanceLifecycleConfig' {} a -> s {onCreate = a} :: CreateNotebookInstanceLifecycleConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | A shell script that runs every time you start a notebook instance,
+-- including when you create the notebook instance. The shell script must
+-- be a base64-encoded string.
+createNotebookInstanceLifecycleConfig_onStart :: Lens.Lens' CreateNotebookInstanceLifecycleConfig (Prelude.Maybe [NotebookInstanceLifecycleHook])
+createNotebookInstanceLifecycleConfig_onStart = Lens.lens (\CreateNotebookInstanceLifecycleConfig' {onStart} -> onStart) (\s@CreateNotebookInstanceLifecycleConfig' {} a -> s {onStart = a} :: CreateNotebookInstanceLifecycleConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the lifecycle configuration.
+createNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName :: Lens.Lens' CreateNotebookInstanceLifecycleConfig Prelude.Text
+createNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName = Lens.lens (\CreateNotebookInstanceLifecycleConfig' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@CreateNotebookInstanceLifecycleConfig' {} a -> s {notebookInstanceLifecycleConfigName = a} :: CreateNotebookInstanceLifecycleConfig)
+
+instance
+  Core.AWSRequest
+    CreateNotebookInstanceLifecycleConfig
+  where
+  type
+    AWSResponse
+      CreateNotebookInstanceLifecycleConfig =
+      CreateNotebookInstanceLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateNotebookInstanceLifecycleConfigResponse'
+            Prelude.<$> (x Data..?> "NotebookInstanceLifecycleConfigArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateNotebookInstanceLifecycleConfig
+  where
+  hashWithSalt
+    _salt
+    CreateNotebookInstanceLifecycleConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` onCreate
+        `Prelude.hashWithSalt` onStart
+        `Prelude.hashWithSalt` notebookInstanceLifecycleConfigName
+
+instance
+  Prelude.NFData
+    CreateNotebookInstanceLifecycleConfig
+  where
+  rnf CreateNotebookInstanceLifecycleConfig' {..} =
+    Prelude.rnf onCreate
+      `Prelude.seq` Prelude.rnf onStart
+      `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigName
+
+instance
+  Data.ToHeaders
+    CreateNotebookInstanceLifecycleConfig
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateNotebookInstanceLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    CreateNotebookInstanceLifecycleConfig
+  where
+  toJSON CreateNotebookInstanceLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OnCreate" Data..=) Prelude.<$> onCreate,
+            ("OnStart" Data..=) Prelude.<$> onStart,
+            Prelude.Just
+              ( "NotebookInstanceLifecycleConfigName"
+                  Data..= notebookInstanceLifecycleConfigName
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    CreateNotebookInstanceLifecycleConfig
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreateNotebookInstanceLifecycleConfig
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateNotebookInstanceLifecycleConfigResponse' smart constructor.
+data CreateNotebookInstanceLifecycleConfigResponse = CreateNotebookInstanceLifecycleConfigResponse'
+  { -- | The Amazon Resource Name (ARN) of the lifecycle configuration.
+    notebookInstanceLifecycleConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNotebookInstanceLifecycleConfigResponse' 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:
+--
+-- 'notebookInstanceLifecycleConfigArn', 'createNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn' - The Amazon Resource Name (ARN) of the lifecycle configuration.
+--
+-- 'httpStatus', 'createNotebookInstanceLifecycleConfigResponse_httpStatus' - The response's http status code.
+newCreateNotebookInstanceLifecycleConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateNotebookInstanceLifecycleConfigResponse
+newCreateNotebookInstanceLifecycleConfigResponse
+  pHttpStatus_ =
+    CreateNotebookInstanceLifecycleConfigResponse'
+      { notebookInstanceLifecycleConfigArn =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The Amazon Resource Name (ARN) of the lifecycle configuration.
+createNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn :: Lens.Lens' CreateNotebookInstanceLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+createNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn = Lens.lens (\CreateNotebookInstanceLifecycleConfigResponse' {notebookInstanceLifecycleConfigArn} -> notebookInstanceLifecycleConfigArn) (\s@CreateNotebookInstanceLifecycleConfigResponse' {} a -> s {notebookInstanceLifecycleConfigArn = a} :: CreateNotebookInstanceLifecycleConfigResponse)
+
+-- | The response's http status code.
+createNotebookInstanceLifecycleConfigResponse_httpStatus :: Lens.Lens' CreateNotebookInstanceLifecycleConfigResponse Prelude.Int
+createNotebookInstanceLifecycleConfigResponse_httpStatus = Lens.lens (\CreateNotebookInstanceLifecycleConfigResponse' {httpStatus} -> httpStatus) (\s@CreateNotebookInstanceLifecycleConfigResponse' {} a -> s {httpStatus = a} :: CreateNotebookInstanceLifecycleConfigResponse)
+
+instance
+  Prelude.NFData
+    CreateNotebookInstanceLifecycleConfigResponse
+  where
+  rnf
+    CreateNotebookInstanceLifecycleConfigResponse' {..} =
+      Prelude.rnf notebookInstanceLifecycleConfigArn
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreatePipeline.hs b/gen/Amazonka/SageMaker/CreatePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreatePipeline.hs
@@ -0,0 +1,307 @@
+{-# 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.CreatePipeline
+-- 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 pipeline using a JSON pipeline definition.
+module Amazonka.SageMaker.CreatePipeline
+  ( -- * Creating a Request
+    CreatePipeline (..),
+    newCreatePipeline,
+
+    -- * Request Lenses
+    createPipeline_parallelismConfiguration,
+    createPipeline_pipelineDefinition,
+    createPipeline_pipelineDefinitionS3Location,
+    createPipeline_pipelineDescription,
+    createPipeline_pipelineDisplayName,
+    createPipeline_tags,
+    createPipeline_pipelineName,
+    createPipeline_clientRequestToken,
+    createPipeline_roleArn,
+
+    -- * Destructuring the Response
+    CreatePipelineResponse (..),
+    newCreatePipelineResponse,
+
+    -- * Response Lenses
+    createPipelineResponse_pipelineArn,
+    createPipelineResponse_httpStatus,
+  )
+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:/ 'newCreatePipeline' smart constructor.
+data CreatePipeline = CreatePipeline'
+  { -- | This is the configuration that controls the parallelism of the pipeline.
+    -- If specified, it applies to all runs of this pipeline by default.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The JSON pipeline definition of the pipeline.
+    pipelineDefinition :: Prelude.Maybe Prelude.Text,
+    -- | The location of the pipeline definition stored in Amazon S3. If
+    -- specified, SageMaker will retrieve the pipeline definition from this
+    -- location.
+    pipelineDefinitionS3Location :: Prelude.Maybe PipelineDefinitionS3Location,
+    -- | A description of the pipeline.
+    pipelineDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline.
+    pipelineDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags to apply to the created pipeline.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the pipeline.
+    pipelineName :: Prelude.Text,
+    -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than one time.
+    clientRequestToken :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the role used by the pipeline to
+    -- access and create resources.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePipeline' 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:
+--
+-- 'parallelismConfiguration', 'createPipeline_parallelismConfiguration' - This is the configuration that controls the parallelism of the pipeline.
+-- If specified, it applies to all runs of this pipeline by default.
+--
+-- 'pipelineDefinition', 'createPipeline_pipelineDefinition' - The JSON pipeline definition of the pipeline.
+--
+-- 'pipelineDefinitionS3Location', 'createPipeline_pipelineDefinitionS3Location' - The location of the pipeline definition stored in Amazon S3. If
+-- specified, SageMaker will retrieve the pipeline definition from this
+-- location.
+--
+-- 'pipelineDescription', 'createPipeline_pipelineDescription' - A description of the pipeline.
+--
+-- 'pipelineDisplayName', 'createPipeline_pipelineDisplayName' - The display name of the pipeline.
+--
+-- 'tags', 'createPipeline_tags' - A list of tags to apply to the created pipeline.
+--
+-- 'pipelineName', 'createPipeline_pipelineName' - The name of the pipeline.
+--
+-- 'clientRequestToken', 'createPipeline_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+--
+-- 'roleArn', 'createPipeline_roleArn' - The Amazon Resource Name (ARN) of the role used by the pipeline to
+-- access and create resources.
+newCreatePipeline ::
+  -- | 'pipelineName'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreatePipeline
+newCreatePipeline
+  pPipelineName_
+  pClientRequestToken_
+  pRoleArn_ =
+    CreatePipeline'
+      { parallelismConfiguration =
+          Prelude.Nothing,
+        pipelineDefinition = Prelude.Nothing,
+        pipelineDefinitionS3Location = Prelude.Nothing,
+        pipelineDescription = Prelude.Nothing,
+        pipelineDisplayName = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        pipelineName = pPipelineName_,
+        clientRequestToken = pClientRequestToken_,
+        roleArn = pRoleArn_
+      }
+
+-- | This is the configuration that controls the parallelism of the pipeline.
+-- If specified, it applies to all runs of this pipeline by default.
+createPipeline_parallelismConfiguration :: Lens.Lens' CreatePipeline (Prelude.Maybe ParallelismConfiguration)
+createPipeline_parallelismConfiguration = Lens.lens (\CreatePipeline' {parallelismConfiguration} -> parallelismConfiguration) (\s@CreatePipeline' {} a -> s {parallelismConfiguration = a} :: CreatePipeline)
+
+-- | The JSON pipeline definition of the pipeline.
+createPipeline_pipelineDefinition :: Lens.Lens' CreatePipeline (Prelude.Maybe Prelude.Text)
+createPipeline_pipelineDefinition = Lens.lens (\CreatePipeline' {pipelineDefinition} -> pipelineDefinition) (\s@CreatePipeline' {} a -> s {pipelineDefinition = a} :: CreatePipeline)
+
+-- | The location of the pipeline definition stored in Amazon S3. If
+-- specified, SageMaker will retrieve the pipeline definition from this
+-- location.
+createPipeline_pipelineDefinitionS3Location :: Lens.Lens' CreatePipeline (Prelude.Maybe PipelineDefinitionS3Location)
+createPipeline_pipelineDefinitionS3Location = Lens.lens (\CreatePipeline' {pipelineDefinitionS3Location} -> pipelineDefinitionS3Location) (\s@CreatePipeline' {} a -> s {pipelineDefinitionS3Location = a} :: CreatePipeline)
+
+-- | A description of the pipeline.
+createPipeline_pipelineDescription :: Lens.Lens' CreatePipeline (Prelude.Maybe Prelude.Text)
+createPipeline_pipelineDescription = Lens.lens (\CreatePipeline' {pipelineDescription} -> pipelineDescription) (\s@CreatePipeline' {} a -> s {pipelineDescription = a} :: CreatePipeline)
+
+-- | The display name of the pipeline.
+createPipeline_pipelineDisplayName :: Lens.Lens' CreatePipeline (Prelude.Maybe Prelude.Text)
+createPipeline_pipelineDisplayName = Lens.lens (\CreatePipeline' {pipelineDisplayName} -> pipelineDisplayName) (\s@CreatePipeline' {} a -> s {pipelineDisplayName = a} :: CreatePipeline)
+
+-- | A list of tags to apply to the created pipeline.
+createPipeline_tags :: Lens.Lens' CreatePipeline (Prelude.Maybe [Tag])
+createPipeline_tags = Lens.lens (\CreatePipeline' {tags} -> tags) (\s@CreatePipeline' {} a -> s {tags = a} :: CreatePipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the pipeline.
+createPipeline_pipelineName :: Lens.Lens' CreatePipeline Prelude.Text
+createPipeline_pipelineName = Lens.lens (\CreatePipeline' {pipelineName} -> pipelineName) (\s@CreatePipeline' {} a -> s {pipelineName = a} :: CreatePipeline)
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+createPipeline_clientRequestToken :: Lens.Lens' CreatePipeline Prelude.Text
+createPipeline_clientRequestToken = Lens.lens (\CreatePipeline' {clientRequestToken} -> clientRequestToken) (\s@CreatePipeline' {} a -> s {clientRequestToken = a} :: CreatePipeline)
+
+-- | The Amazon Resource Name (ARN) of the role used by the pipeline to
+-- access and create resources.
+createPipeline_roleArn :: Lens.Lens' CreatePipeline Prelude.Text
+createPipeline_roleArn = Lens.lens (\CreatePipeline' {roleArn} -> roleArn) (\s@CreatePipeline' {} a -> s {roleArn = a} :: CreatePipeline)
+
+instance Core.AWSRequest CreatePipeline where
+  type
+    AWSResponse CreatePipeline =
+      CreatePipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePipelineResponse'
+            Prelude.<$> (x Data..?> "PipelineArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePipeline where
+  hashWithSalt _salt CreatePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineDefinition
+      `Prelude.hashWithSalt` pipelineDefinitionS3Location
+      `Prelude.hashWithSalt` pipelineDescription
+      `Prelude.hashWithSalt` pipelineDisplayName
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` pipelineName
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreatePipeline where
+  rnf CreatePipeline' {..} =
+    Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineDefinition
+      `Prelude.seq` Prelude.rnf pipelineDefinitionS3Location
+      `Prelude.seq` Prelude.rnf pipelineDescription
+      `Prelude.seq` Prelude.rnf pipelineDisplayName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf pipelineName
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreatePipeline where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreatePipeline" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreatePipeline where
+  toJSON CreatePipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ParallelismConfiguration" Data..=)
+              Prelude.<$> parallelismConfiguration,
+            ("PipelineDefinition" Data..=)
+              Prelude.<$> pipelineDefinition,
+            ("PipelineDefinitionS3Location" Data..=)
+              Prelude.<$> pipelineDefinitionS3Location,
+            ("PipelineDescription" Data..=)
+              Prelude.<$> pipelineDescription,
+            ("PipelineDisplayName" Data..=)
+              Prelude.<$> pipelineDisplayName,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("PipelineName" Data..= pipelineName),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreatePipeline where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreatePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePipelineResponse' smart constructor.
+data CreatePipelineResponse = CreatePipelineResponse'
+  { -- | The Amazon Resource Name (ARN) of the created pipeline.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePipelineResponse' 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:
+--
+-- 'pipelineArn', 'createPipelineResponse_pipelineArn' - The Amazon Resource Name (ARN) of the created pipeline.
+--
+-- 'httpStatus', 'createPipelineResponse_httpStatus' - The response's http status code.
+newCreatePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePipelineResponse
+newCreatePipelineResponse pHttpStatus_ =
+  CreatePipelineResponse'
+    { pipelineArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the created pipeline.
+createPipelineResponse_pipelineArn :: Lens.Lens' CreatePipelineResponse (Prelude.Maybe Prelude.Text)
+createPipelineResponse_pipelineArn = Lens.lens (\CreatePipelineResponse' {pipelineArn} -> pipelineArn) (\s@CreatePipelineResponse' {} a -> s {pipelineArn = a} :: CreatePipelineResponse)
+
+-- | The response's http status code.
+createPipelineResponse_httpStatus :: Lens.Lens' CreatePipelineResponse Prelude.Int
+createPipelineResponse_httpStatus = Lens.lens (\CreatePipelineResponse' {httpStatus} -> httpStatus) (\s@CreatePipelineResponse' {} a -> s {httpStatus = a} :: CreatePipelineResponse)
+
+instance Prelude.NFData CreatePipelineResponse where
+  rnf CreatePipelineResponse' {..} =
+    Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreatePresignedDomainUrl.hs b/gen/Amazonka/SageMaker/CreatePresignedDomainUrl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreatePresignedDomainUrl.hs
@@ -0,0 +1,266 @@
+{-# 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.CreatePresignedDomainUrl
+-- 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 URL for a specified UserProfile in a Domain. When accessed in
+-- a web browser, the user will be automatically signed in to Amazon
+-- SageMaker Studio, and granted access to all of the Apps and files
+-- associated with the Domain\'s Amazon Elastic File System (EFS) volume.
+-- This operation can only be called when the authentication mode equals
+-- IAM.
+--
+-- The IAM role or user passed to this API defines the permissions to
+-- access the app. Once the presigned URL is created, no additional
+-- permission is required to access this URL. IAM authorization policies
+-- for this API are also enforced for every HTTP request and WebSocket
+-- frame that attempts to connect to the app.
+--
+-- You can restrict access to this API and to the URL that it returns to a
+-- list of IP addresses, Amazon VPCs or Amazon VPC Endpoints that you
+-- specify. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/studio-interface-endpoint.html Connect to SageMaker Studio Through an Interface VPC Endpoint>
+-- .
+--
+-- The URL that you get from a call to @CreatePresignedDomainUrl@ has a
+-- default timeout of 5 minutes. You can configure this value using
+-- @ExpiresInSeconds@. If you try to use the URL after the timeout limit
+-- expires, you are directed to the Amazon Web Services console sign-in
+-- page.
+module Amazonka.SageMaker.CreatePresignedDomainUrl
+  ( -- * Creating a Request
+    CreatePresignedDomainUrl (..),
+    newCreatePresignedDomainUrl,
+
+    -- * Request Lenses
+    createPresignedDomainUrl_expiresInSeconds,
+    createPresignedDomainUrl_sessionExpirationDurationInSeconds,
+    createPresignedDomainUrl_spaceName,
+    createPresignedDomainUrl_domainId,
+    createPresignedDomainUrl_userProfileName,
+
+    -- * Destructuring the Response
+    CreatePresignedDomainUrlResponse (..),
+    newCreatePresignedDomainUrlResponse,
+
+    -- * Response Lenses
+    createPresignedDomainUrlResponse_authorizedUrl,
+    createPresignedDomainUrlResponse_httpStatus,
+  )
+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:/ 'newCreatePresignedDomainUrl' smart constructor.
+data CreatePresignedDomainUrl = CreatePresignedDomainUrl'
+  { -- | The number of seconds until the pre-signed URL expires. This value
+    -- defaults to 300.
+    expiresInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The session expiration duration in seconds. This value defaults to
+    -- 43200.
+    sessionExpirationDurationInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the space.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The name of the UserProfile to sign-in as.
+    userProfileName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePresignedDomainUrl' 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:
+--
+-- 'expiresInSeconds', 'createPresignedDomainUrl_expiresInSeconds' - The number of seconds until the pre-signed URL expires. This value
+-- defaults to 300.
+--
+-- 'sessionExpirationDurationInSeconds', 'createPresignedDomainUrl_sessionExpirationDurationInSeconds' - The session expiration duration in seconds. This value defaults to
+-- 43200.
+--
+-- 'spaceName', 'createPresignedDomainUrl_spaceName' - The name of the space.
+--
+-- 'domainId', 'createPresignedDomainUrl_domainId' - The domain ID.
+--
+-- 'userProfileName', 'createPresignedDomainUrl_userProfileName' - The name of the UserProfile to sign-in as.
+newCreatePresignedDomainUrl ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'userProfileName'
+  Prelude.Text ->
+  CreatePresignedDomainUrl
+newCreatePresignedDomainUrl
+  pDomainId_
+  pUserProfileName_ =
+    CreatePresignedDomainUrl'
+      { expiresInSeconds =
+          Prelude.Nothing,
+        sessionExpirationDurationInSeconds =
+          Prelude.Nothing,
+        spaceName = Prelude.Nothing,
+        domainId = pDomainId_,
+        userProfileName = pUserProfileName_
+      }
+
+-- | The number of seconds until the pre-signed URL expires. This value
+-- defaults to 300.
+createPresignedDomainUrl_expiresInSeconds :: Lens.Lens' CreatePresignedDomainUrl (Prelude.Maybe Prelude.Natural)
+createPresignedDomainUrl_expiresInSeconds = Lens.lens (\CreatePresignedDomainUrl' {expiresInSeconds} -> expiresInSeconds) (\s@CreatePresignedDomainUrl' {} a -> s {expiresInSeconds = a} :: CreatePresignedDomainUrl)
+
+-- | The session expiration duration in seconds. This value defaults to
+-- 43200.
+createPresignedDomainUrl_sessionExpirationDurationInSeconds :: Lens.Lens' CreatePresignedDomainUrl (Prelude.Maybe Prelude.Natural)
+createPresignedDomainUrl_sessionExpirationDurationInSeconds = Lens.lens (\CreatePresignedDomainUrl' {sessionExpirationDurationInSeconds} -> sessionExpirationDurationInSeconds) (\s@CreatePresignedDomainUrl' {} a -> s {sessionExpirationDurationInSeconds = a} :: CreatePresignedDomainUrl)
+
+-- | The name of the space.
+createPresignedDomainUrl_spaceName :: Lens.Lens' CreatePresignedDomainUrl (Prelude.Maybe Prelude.Text)
+createPresignedDomainUrl_spaceName = Lens.lens (\CreatePresignedDomainUrl' {spaceName} -> spaceName) (\s@CreatePresignedDomainUrl' {} a -> s {spaceName = a} :: CreatePresignedDomainUrl)
+
+-- | The domain ID.
+createPresignedDomainUrl_domainId :: Lens.Lens' CreatePresignedDomainUrl Prelude.Text
+createPresignedDomainUrl_domainId = Lens.lens (\CreatePresignedDomainUrl' {domainId} -> domainId) (\s@CreatePresignedDomainUrl' {} a -> s {domainId = a} :: CreatePresignedDomainUrl)
+
+-- | The name of the UserProfile to sign-in as.
+createPresignedDomainUrl_userProfileName :: Lens.Lens' CreatePresignedDomainUrl Prelude.Text
+createPresignedDomainUrl_userProfileName = Lens.lens (\CreatePresignedDomainUrl' {userProfileName} -> userProfileName) (\s@CreatePresignedDomainUrl' {} a -> s {userProfileName = a} :: CreatePresignedDomainUrl)
+
+instance Core.AWSRequest CreatePresignedDomainUrl where
+  type
+    AWSResponse CreatePresignedDomainUrl =
+      CreatePresignedDomainUrlResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePresignedDomainUrlResponse'
+            Prelude.<$> (x Data..?> "AuthorizedUrl")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePresignedDomainUrl where
+  hashWithSalt _salt CreatePresignedDomainUrl' {..} =
+    _salt
+      `Prelude.hashWithSalt` expiresInSeconds
+      `Prelude.hashWithSalt` sessionExpirationDurationInSeconds
+      `Prelude.hashWithSalt` spaceName
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData CreatePresignedDomainUrl where
+  rnf CreatePresignedDomainUrl' {..} =
+    Prelude.rnf expiresInSeconds
+      `Prelude.seq` Prelude.rnf sessionExpirationDurationInSeconds
+      `Prelude.seq` Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf userProfileName
+
+instance Data.ToHeaders CreatePresignedDomainUrl where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreatePresignedDomainUrl" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreatePresignedDomainUrl where
+  toJSON CreatePresignedDomainUrl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExpiresInSeconds" Data..=)
+              Prelude.<$> expiresInSeconds,
+            ("SessionExpirationDurationInSeconds" Data..=)
+              Prelude.<$> sessionExpirationDurationInSeconds,
+            ("SpaceName" Data..=) Prelude.<$> spaceName,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just
+              ("UserProfileName" Data..= userProfileName)
+          ]
+      )
+
+instance Data.ToPath CreatePresignedDomainUrl where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreatePresignedDomainUrl where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePresignedDomainUrlResponse' smart constructor.
+data CreatePresignedDomainUrlResponse = CreatePresignedDomainUrlResponse'
+  { -- | The presigned URL.
+    authorizedUrl :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePresignedDomainUrlResponse' 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:
+--
+-- 'authorizedUrl', 'createPresignedDomainUrlResponse_authorizedUrl' - The presigned URL.
+--
+-- 'httpStatus', 'createPresignedDomainUrlResponse_httpStatus' - The response's http status code.
+newCreatePresignedDomainUrlResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePresignedDomainUrlResponse
+newCreatePresignedDomainUrlResponse pHttpStatus_ =
+  CreatePresignedDomainUrlResponse'
+    { authorizedUrl =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The presigned URL.
+createPresignedDomainUrlResponse_authorizedUrl :: Lens.Lens' CreatePresignedDomainUrlResponse (Prelude.Maybe Prelude.Text)
+createPresignedDomainUrlResponse_authorizedUrl = Lens.lens (\CreatePresignedDomainUrlResponse' {authorizedUrl} -> authorizedUrl) (\s@CreatePresignedDomainUrlResponse' {} a -> s {authorizedUrl = a} :: CreatePresignedDomainUrlResponse)
+
+-- | The response's http status code.
+createPresignedDomainUrlResponse_httpStatus :: Lens.Lens' CreatePresignedDomainUrlResponse Prelude.Int
+createPresignedDomainUrlResponse_httpStatus = Lens.lens (\CreatePresignedDomainUrlResponse' {httpStatus} -> httpStatus) (\s@CreatePresignedDomainUrlResponse' {} a -> s {httpStatus = a} :: CreatePresignedDomainUrlResponse)
+
+instance
+  Prelude.NFData
+    CreatePresignedDomainUrlResponse
+  where
+  rnf CreatePresignedDomainUrlResponse' {..} =
+    Prelude.rnf authorizedUrl
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreatePresignedNotebookInstanceUrl.hs b/gen/Amazonka/SageMaker/CreatePresignedNotebookInstanceUrl.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreatePresignedNotebookInstanceUrl.hs
@@ -0,0 +1,242 @@
+{-# 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.CreatePresignedNotebookInstanceUrl
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a URL that you can use to connect to the Jupyter server from a
+-- notebook instance. In the SageMaker console, when you choose @Open@ next
+-- to a notebook instance, SageMaker opens a new tab showing the Jupyter
+-- server home page from the notebook instance. The console uses this API
+-- to get the URL and show the page.
+--
+-- The IAM role or user used to call this API defines the permissions to
+-- access the notebook instance. Once the presigned URL is created, no
+-- additional permission is required to access this URL. IAM authorization
+-- policies for this API are also enforced for every HTTP request and
+-- WebSocket frame that attempts to connect to the notebook instance.
+--
+-- You can restrict access to this API and to the URL that it returns to a
+-- list of IP addresses that you specify. Use the @NotIpAddress@ condition
+-- operator and the @aws:SourceIP@ condition context key to specify the
+-- list of IP addresses that you want to have access to the notebook
+-- instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/security_iam_id-based-policy-examples.html#nbi-ip-filter Limit Access to a Notebook Instance by IP Address>.
+--
+-- The URL that you get from a call to CreatePresignedNotebookInstanceUrl
+-- is valid only for 5 minutes. If you try to use the URL after the
+-- 5-minute limit expires, you are directed to the Amazon Web Services
+-- console sign-in page.
+module Amazonka.SageMaker.CreatePresignedNotebookInstanceUrl
+  ( -- * Creating a Request
+    CreatePresignedNotebookInstanceUrl (..),
+    newCreatePresignedNotebookInstanceUrl,
+
+    -- * Request Lenses
+    createPresignedNotebookInstanceUrl_sessionExpirationDurationInSeconds,
+    createPresignedNotebookInstanceUrl_notebookInstanceName,
+
+    -- * Destructuring the Response
+    CreatePresignedNotebookInstanceUrlResponse (..),
+    newCreatePresignedNotebookInstanceUrlResponse,
+
+    -- * Response Lenses
+    createPresignedNotebookInstanceUrlResponse_authorizedUrl,
+    createPresignedNotebookInstanceUrlResponse_httpStatus,
+  )
+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:/ 'newCreatePresignedNotebookInstanceUrl' smart constructor.
+data CreatePresignedNotebookInstanceUrl = CreatePresignedNotebookInstanceUrl'
+  { -- | The duration of the session, in seconds. The default is 12 hours.
+    sessionExpirationDurationInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the notebook instance.
+    notebookInstanceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePresignedNotebookInstanceUrl' 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:
+--
+-- 'sessionExpirationDurationInSeconds', 'createPresignedNotebookInstanceUrl_sessionExpirationDurationInSeconds' - The duration of the session, in seconds. The default is 12 hours.
+--
+-- 'notebookInstanceName', 'createPresignedNotebookInstanceUrl_notebookInstanceName' - The name of the notebook instance.
+newCreatePresignedNotebookInstanceUrl ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  CreatePresignedNotebookInstanceUrl
+newCreatePresignedNotebookInstanceUrl
+  pNotebookInstanceName_ =
+    CreatePresignedNotebookInstanceUrl'
+      { sessionExpirationDurationInSeconds =
+          Prelude.Nothing,
+        notebookInstanceName =
+          pNotebookInstanceName_
+      }
+
+-- | The duration of the session, in seconds. The default is 12 hours.
+createPresignedNotebookInstanceUrl_sessionExpirationDurationInSeconds :: Lens.Lens' CreatePresignedNotebookInstanceUrl (Prelude.Maybe Prelude.Natural)
+createPresignedNotebookInstanceUrl_sessionExpirationDurationInSeconds = Lens.lens (\CreatePresignedNotebookInstanceUrl' {sessionExpirationDurationInSeconds} -> sessionExpirationDurationInSeconds) (\s@CreatePresignedNotebookInstanceUrl' {} a -> s {sessionExpirationDurationInSeconds = a} :: CreatePresignedNotebookInstanceUrl)
+
+-- | The name of the notebook instance.
+createPresignedNotebookInstanceUrl_notebookInstanceName :: Lens.Lens' CreatePresignedNotebookInstanceUrl Prelude.Text
+createPresignedNotebookInstanceUrl_notebookInstanceName = Lens.lens (\CreatePresignedNotebookInstanceUrl' {notebookInstanceName} -> notebookInstanceName) (\s@CreatePresignedNotebookInstanceUrl' {} a -> s {notebookInstanceName = a} :: CreatePresignedNotebookInstanceUrl)
+
+instance
+  Core.AWSRequest
+    CreatePresignedNotebookInstanceUrl
+  where
+  type
+    AWSResponse CreatePresignedNotebookInstanceUrl =
+      CreatePresignedNotebookInstanceUrlResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePresignedNotebookInstanceUrlResponse'
+            Prelude.<$> (x Data..?> "AuthorizedUrl")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreatePresignedNotebookInstanceUrl
+  where
+  hashWithSalt
+    _salt
+    CreatePresignedNotebookInstanceUrl' {..} =
+      _salt
+        `Prelude.hashWithSalt` sessionExpirationDurationInSeconds
+        `Prelude.hashWithSalt` notebookInstanceName
+
+instance
+  Prelude.NFData
+    CreatePresignedNotebookInstanceUrl
+  where
+  rnf CreatePresignedNotebookInstanceUrl' {..} =
+    Prelude.rnf sessionExpirationDurationInSeconds
+      `Prelude.seq` Prelude.rnf notebookInstanceName
+
+instance
+  Data.ToHeaders
+    CreatePresignedNotebookInstanceUrl
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreatePresignedNotebookInstanceUrl" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    CreatePresignedNotebookInstanceUrl
+  where
+  toJSON CreatePresignedNotebookInstanceUrl' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SessionExpirationDurationInSeconds" Data..=)
+              Prelude.<$> sessionExpirationDurationInSeconds,
+            Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    CreatePresignedNotebookInstanceUrl
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreatePresignedNotebookInstanceUrl
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePresignedNotebookInstanceUrlResponse' smart constructor.
+data CreatePresignedNotebookInstanceUrlResponse = CreatePresignedNotebookInstanceUrlResponse'
+  { -- | A JSON object that contains the URL string.
+    authorizedUrl :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePresignedNotebookInstanceUrlResponse' 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:
+--
+-- 'authorizedUrl', 'createPresignedNotebookInstanceUrlResponse_authorizedUrl' - A JSON object that contains the URL string.
+--
+-- 'httpStatus', 'createPresignedNotebookInstanceUrlResponse_httpStatus' - The response's http status code.
+newCreatePresignedNotebookInstanceUrlResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePresignedNotebookInstanceUrlResponse
+newCreatePresignedNotebookInstanceUrlResponse
+  pHttpStatus_ =
+    CreatePresignedNotebookInstanceUrlResponse'
+      { authorizedUrl =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A JSON object that contains the URL string.
+createPresignedNotebookInstanceUrlResponse_authorizedUrl :: Lens.Lens' CreatePresignedNotebookInstanceUrlResponse (Prelude.Maybe Prelude.Text)
+createPresignedNotebookInstanceUrlResponse_authorizedUrl = Lens.lens (\CreatePresignedNotebookInstanceUrlResponse' {authorizedUrl} -> authorizedUrl) (\s@CreatePresignedNotebookInstanceUrlResponse' {} a -> s {authorizedUrl = a} :: CreatePresignedNotebookInstanceUrlResponse)
+
+-- | The response's http status code.
+createPresignedNotebookInstanceUrlResponse_httpStatus :: Lens.Lens' CreatePresignedNotebookInstanceUrlResponse Prelude.Int
+createPresignedNotebookInstanceUrlResponse_httpStatus = Lens.lens (\CreatePresignedNotebookInstanceUrlResponse' {httpStatus} -> httpStatus) (\s@CreatePresignedNotebookInstanceUrlResponse' {} a -> s {httpStatus = a} :: CreatePresignedNotebookInstanceUrlResponse)
+
+instance
+  Prelude.NFData
+    CreatePresignedNotebookInstanceUrlResponse
+  where
+  rnf CreatePresignedNotebookInstanceUrlResponse' {..} =
+    Prelude.rnf authorizedUrl
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateProcessingJob.hs b/gen/Amazonka/SageMaker/CreateProcessingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateProcessingJob.hs
@@ -0,0 +1,356 @@
+{-# 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.CreateProcessingJob
+-- 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 processing job.
+module Amazonka.SageMaker.CreateProcessingJob
+  ( -- * Creating a Request
+    CreateProcessingJob (..),
+    newCreateProcessingJob,
+
+    -- * Request Lenses
+    createProcessingJob_environment,
+    createProcessingJob_experimentConfig,
+    createProcessingJob_networkConfig,
+    createProcessingJob_processingInputs,
+    createProcessingJob_processingOutputConfig,
+    createProcessingJob_stoppingCondition,
+    createProcessingJob_tags,
+    createProcessingJob_processingJobName,
+    createProcessingJob_processingResources,
+    createProcessingJob_appSpecification,
+    createProcessingJob_roleArn,
+
+    -- * Destructuring the Response
+    CreateProcessingJobResponse (..),
+    newCreateProcessingJobResponse,
+
+    -- * Response Lenses
+    createProcessingJobResponse_httpStatus,
+    createProcessingJobResponse_processingJobArn,
+  )
+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:/ 'newCreateProcessingJob' smart constructor.
+data CreateProcessingJob = CreateProcessingJob'
+  { -- | The environment variables to set in the Docker container. Up to 100 key
+    -- and values entries in the map are supported.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | Networking options for a processing job, such as whether to allow
+    -- inbound and outbound network calls to and from processing containers,
+    -- and the VPC subnets and security groups to use for VPC-enabled
+    -- processing jobs.
+    networkConfig :: Prelude.Maybe NetworkConfig,
+    -- | An array of inputs configuring the data to download into the processing
+    -- container.
+    processingInputs :: Prelude.Maybe [ProcessingInput],
+    -- | Output configuration for the processing job.
+    processingOutputConfig :: Prelude.Maybe ProcessingOutputConfig,
+    -- | The time limit for how long the processing job is allowed to run.
+    stoppingCondition :: Prelude.Maybe ProcessingStoppingCondition,
+    -- | (Optional) An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the processing job. The name must be unique within an Amazon
+    -- Web Services Region in the Amazon Web Services account.
+    processingJobName :: Prelude.Text,
+    -- | Identifies the resources, ML compute instances, and ML storage volumes
+    -- to deploy for a processing job. In distributed training, you specify
+    -- more than one instance.
+    processingResources :: ProcessingResources,
+    -- | Configures the processing job to run a specified Docker container image.
+    appSpecification :: AppSpecification,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProcessingJob' 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:
+--
+-- 'environment', 'createProcessingJob_environment' - The environment variables to set in the Docker container. Up to 100 key
+-- and values entries in the map are supported.
+--
+-- 'experimentConfig', 'createProcessingJob_experimentConfig' - Undocumented member.
+--
+-- 'networkConfig', 'createProcessingJob_networkConfig' - Networking options for a processing job, such as whether to allow
+-- inbound and outbound network calls to and from processing containers,
+-- and the VPC subnets and security groups to use for VPC-enabled
+-- processing jobs.
+--
+-- 'processingInputs', 'createProcessingJob_processingInputs' - An array of inputs configuring the data to download into the processing
+-- container.
+--
+-- 'processingOutputConfig', 'createProcessingJob_processingOutputConfig' - Output configuration for the processing job.
+--
+-- 'stoppingCondition', 'createProcessingJob_stoppingCondition' - The time limit for how long the processing job is allowed to run.
+--
+-- 'tags', 'createProcessingJob_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'processingJobName', 'createProcessingJob_processingJobName' - The name of the processing job. The name must be unique within an Amazon
+-- Web Services Region in the Amazon Web Services account.
+--
+-- 'processingResources', 'createProcessingJob_processingResources' - Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a processing job. In distributed training, you specify
+-- more than one instance.
+--
+-- 'appSpecification', 'createProcessingJob_appSpecification' - Configures the processing job to run a specified Docker container image.
+--
+-- 'roleArn', 'createProcessingJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newCreateProcessingJob ::
+  -- | 'processingJobName'
+  Prelude.Text ->
+  -- | 'processingResources'
+  ProcessingResources ->
+  -- | 'appSpecification'
+  AppSpecification ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateProcessingJob
+newCreateProcessingJob
+  pProcessingJobName_
+  pProcessingResources_
+  pAppSpecification_
+  pRoleArn_ =
+    CreateProcessingJob'
+      { environment = Prelude.Nothing,
+        experimentConfig = Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        processingInputs = Prelude.Nothing,
+        processingOutputConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        processingJobName = pProcessingJobName_,
+        processingResources = pProcessingResources_,
+        appSpecification = pAppSpecification_,
+        roleArn = pRoleArn_
+      }
+
+-- | The environment variables to set in the Docker container. Up to 100 key
+-- and values entries in the map are supported.
+createProcessingJob_environment :: Lens.Lens' CreateProcessingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createProcessingJob_environment = Lens.lens (\CreateProcessingJob' {environment} -> environment) (\s@CreateProcessingJob' {} a -> s {environment = a} :: CreateProcessingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createProcessingJob_experimentConfig :: Lens.Lens' CreateProcessingJob (Prelude.Maybe ExperimentConfig)
+createProcessingJob_experimentConfig = Lens.lens (\CreateProcessingJob' {experimentConfig} -> experimentConfig) (\s@CreateProcessingJob' {} a -> s {experimentConfig = a} :: CreateProcessingJob)
+
+-- | Networking options for a processing job, such as whether to allow
+-- inbound and outbound network calls to and from processing containers,
+-- and the VPC subnets and security groups to use for VPC-enabled
+-- processing jobs.
+createProcessingJob_networkConfig :: Lens.Lens' CreateProcessingJob (Prelude.Maybe NetworkConfig)
+createProcessingJob_networkConfig = Lens.lens (\CreateProcessingJob' {networkConfig} -> networkConfig) (\s@CreateProcessingJob' {} a -> s {networkConfig = a} :: CreateProcessingJob)
+
+-- | An array of inputs configuring the data to download into the processing
+-- container.
+createProcessingJob_processingInputs :: Lens.Lens' CreateProcessingJob (Prelude.Maybe [ProcessingInput])
+createProcessingJob_processingInputs = Lens.lens (\CreateProcessingJob' {processingInputs} -> processingInputs) (\s@CreateProcessingJob' {} a -> s {processingInputs = a} :: CreateProcessingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Output configuration for the processing job.
+createProcessingJob_processingOutputConfig :: Lens.Lens' CreateProcessingJob (Prelude.Maybe ProcessingOutputConfig)
+createProcessingJob_processingOutputConfig = Lens.lens (\CreateProcessingJob' {processingOutputConfig} -> processingOutputConfig) (\s@CreateProcessingJob' {} a -> s {processingOutputConfig = a} :: CreateProcessingJob)
+
+-- | The time limit for how long the processing job is allowed to run.
+createProcessingJob_stoppingCondition :: Lens.Lens' CreateProcessingJob (Prelude.Maybe ProcessingStoppingCondition)
+createProcessingJob_stoppingCondition = Lens.lens (\CreateProcessingJob' {stoppingCondition} -> stoppingCondition) (\s@CreateProcessingJob' {} a -> s {stoppingCondition = a} :: CreateProcessingJob)
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createProcessingJob_tags :: Lens.Lens' CreateProcessingJob (Prelude.Maybe [Tag])
+createProcessingJob_tags = Lens.lens (\CreateProcessingJob' {tags} -> tags) (\s@CreateProcessingJob' {} a -> s {tags = a} :: CreateProcessingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the processing job. The name must be unique within an Amazon
+-- Web Services Region in the Amazon Web Services account.
+createProcessingJob_processingJobName :: Lens.Lens' CreateProcessingJob Prelude.Text
+createProcessingJob_processingJobName = Lens.lens (\CreateProcessingJob' {processingJobName} -> processingJobName) (\s@CreateProcessingJob' {} a -> s {processingJobName = a} :: CreateProcessingJob)
+
+-- | Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a processing job. In distributed training, you specify
+-- more than one instance.
+createProcessingJob_processingResources :: Lens.Lens' CreateProcessingJob ProcessingResources
+createProcessingJob_processingResources = Lens.lens (\CreateProcessingJob' {processingResources} -> processingResources) (\s@CreateProcessingJob' {} a -> s {processingResources = a} :: CreateProcessingJob)
+
+-- | Configures the processing job to run a specified Docker container image.
+createProcessingJob_appSpecification :: Lens.Lens' CreateProcessingJob AppSpecification
+createProcessingJob_appSpecification = Lens.lens (\CreateProcessingJob' {appSpecification} -> appSpecification) (\s@CreateProcessingJob' {} a -> s {appSpecification = a} :: CreateProcessingJob)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+createProcessingJob_roleArn :: Lens.Lens' CreateProcessingJob Prelude.Text
+createProcessingJob_roleArn = Lens.lens (\CreateProcessingJob' {roleArn} -> roleArn) (\s@CreateProcessingJob' {} a -> s {roleArn = a} :: CreateProcessingJob)
+
+instance Core.AWSRequest CreateProcessingJob where
+  type
+    AWSResponse CreateProcessingJob =
+      CreateProcessingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateProcessingJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProcessingJobArn")
+      )
+
+instance Prelude.Hashable CreateProcessingJob where
+  hashWithSalt _salt CreateProcessingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` experimentConfig
+      `Prelude.hashWithSalt` networkConfig
+      `Prelude.hashWithSalt` processingInputs
+      `Prelude.hashWithSalt` processingOutputConfig
+      `Prelude.hashWithSalt` stoppingCondition
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` processingJobName
+      `Prelude.hashWithSalt` processingResources
+      `Prelude.hashWithSalt` appSpecification
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateProcessingJob where
+  rnf CreateProcessingJob' {..} =
+    Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf processingInputs
+      `Prelude.seq` Prelude.rnf processingOutputConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf processingJobName
+      `Prelude.seq` Prelude.rnf processingResources
+      `Prelude.seq` Prelude.rnf appSpecification
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateProcessingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateProcessingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateProcessingJob where
+  toJSON CreateProcessingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Environment" Data..=) Prelude.<$> environment,
+            ("ExperimentConfig" Data..=)
+              Prelude.<$> experimentConfig,
+            ("NetworkConfig" Data..=) Prelude.<$> networkConfig,
+            ("ProcessingInputs" Data..=)
+              Prelude.<$> processingInputs,
+            ("ProcessingOutputConfig" Data..=)
+              Prelude.<$> processingOutputConfig,
+            ("StoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ProcessingJobName" Data..= processingJobName),
+            Prelude.Just
+              ("ProcessingResources" Data..= processingResources),
+            Prelude.Just
+              ("AppSpecification" Data..= appSpecification),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateProcessingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateProcessingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateProcessingJobResponse' smart constructor.
+data CreateProcessingJobResponse = CreateProcessingJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the processing job.
+    processingJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProcessingJobResponse' 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', 'createProcessingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'processingJobArn', 'createProcessingJobResponse_processingJobArn' - The Amazon Resource Name (ARN) of the processing job.
+newCreateProcessingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'processingJobArn'
+  Prelude.Text ->
+  CreateProcessingJobResponse
+newCreateProcessingJobResponse
+  pHttpStatus_
+  pProcessingJobArn_ =
+    CreateProcessingJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        processingJobArn = pProcessingJobArn_
+      }
+
+-- | The response's http status code.
+createProcessingJobResponse_httpStatus :: Lens.Lens' CreateProcessingJobResponse Prelude.Int
+createProcessingJobResponse_httpStatus = Lens.lens (\CreateProcessingJobResponse' {httpStatus} -> httpStatus) (\s@CreateProcessingJobResponse' {} a -> s {httpStatus = a} :: CreateProcessingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the processing job.
+createProcessingJobResponse_processingJobArn :: Lens.Lens' CreateProcessingJobResponse Prelude.Text
+createProcessingJobResponse_processingJobArn = Lens.lens (\CreateProcessingJobResponse' {processingJobArn} -> processingJobArn) (\s@CreateProcessingJobResponse' {} a -> s {processingJobArn = a} :: CreateProcessingJobResponse)
+
+instance Prelude.NFData CreateProcessingJobResponse where
+  rnf CreateProcessingJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf processingJobArn
diff --git a/gen/Amazonka/SageMaker/CreateProject.hs b/gen/Amazonka/SageMaker/CreateProject.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateProject.hs
@@ -0,0 +1,261 @@
+{-# 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.CreateProject
+-- 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 machine learning (ML) project that can contain one or more
+-- templates that set up an ML pipeline from training to deploying an
+-- approved model.
+module Amazonka.SageMaker.CreateProject
+  ( -- * Creating a Request
+    CreateProject (..),
+    newCreateProject,
+
+    -- * Request Lenses
+    createProject_projectDescription,
+    createProject_tags,
+    createProject_projectName,
+    createProject_serviceCatalogProvisioningDetails,
+
+    -- * Destructuring the Response
+    CreateProjectResponse (..),
+    newCreateProjectResponse,
+
+    -- * Response Lenses
+    createProjectResponse_httpStatus,
+    createProjectResponse_projectArn,
+    createProjectResponse_projectId,
+  )
+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:/ 'newCreateProject' smart constructor.
+data CreateProject = CreateProject'
+  { -- | A description for the project.
+    projectDescription :: Prelude.Maybe Prelude.Text,
+    -- | An array of key-value pairs that you want to use to organize and track
+    -- your Amazon Web Services resource costs. 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/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the project.
+    projectName :: Prelude.Text,
+    -- | The product ID and provisioning artifact ID to provision a service
+    -- catalog. The provisioning artifact ID will default to the latest
+    -- provisioning artifact ID of the product, if you don\'t provide the
+    -- provisioning artifact ID. For more information, see
+    -- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+    serviceCatalogProvisioningDetails :: ServiceCatalogProvisioningDetails
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProject' 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:
+--
+-- 'projectDescription', 'createProject_projectDescription' - A description for the project.
+--
+-- 'tags', 'createProject_tags' - An array of key-value pairs that you want to use to organize and track
+-- your Amazon Web Services resource costs. 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/.
+--
+-- 'projectName', 'createProject_projectName' - The name of the project.
+--
+-- 'serviceCatalogProvisioningDetails', 'createProject_serviceCatalogProvisioningDetails' - The product ID and provisioning artifact ID to provision a service
+-- catalog. The provisioning artifact ID will default to the latest
+-- provisioning artifact ID of the product, if you don\'t provide the
+-- provisioning artifact ID. For more information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+newCreateProject ::
+  -- | 'projectName'
+  Prelude.Text ->
+  -- | 'serviceCatalogProvisioningDetails'
+  ServiceCatalogProvisioningDetails ->
+  CreateProject
+newCreateProject
+  pProjectName_
+  pServiceCatalogProvisioningDetails_ =
+    CreateProject'
+      { projectDescription =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        projectName = pProjectName_,
+        serviceCatalogProvisioningDetails =
+          pServiceCatalogProvisioningDetails_
+      }
+
+-- | A description for the project.
+createProject_projectDescription :: Lens.Lens' CreateProject (Prelude.Maybe Prelude.Text)
+createProject_projectDescription = Lens.lens (\CreateProject' {projectDescription} -> projectDescription) (\s@CreateProject' {} a -> s {projectDescription = a} :: CreateProject)
+
+-- | An array of key-value pairs that you want to use to organize and track
+-- your Amazon Web Services resource costs. 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/.
+createProject_tags :: Lens.Lens' CreateProject (Prelude.Maybe [Tag])
+createProject_tags = Lens.lens (\CreateProject' {tags} -> tags) (\s@CreateProject' {} a -> s {tags = a} :: CreateProject) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the project.
+createProject_projectName :: Lens.Lens' CreateProject Prelude.Text
+createProject_projectName = Lens.lens (\CreateProject' {projectName} -> projectName) (\s@CreateProject' {} a -> s {projectName = a} :: CreateProject)
+
+-- | The product ID and provisioning artifact ID to provision a service
+-- catalog. The provisioning artifact ID will default to the latest
+-- provisioning artifact ID of the product, if you don\'t provide the
+-- provisioning artifact ID. For more information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+createProject_serviceCatalogProvisioningDetails :: Lens.Lens' CreateProject ServiceCatalogProvisioningDetails
+createProject_serviceCatalogProvisioningDetails = Lens.lens (\CreateProject' {serviceCatalogProvisioningDetails} -> serviceCatalogProvisioningDetails) (\s@CreateProject' {} a -> s {serviceCatalogProvisioningDetails = a} :: CreateProject)
+
+instance Core.AWSRequest CreateProject where
+  type
+    AWSResponse CreateProject =
+      CreateProjectResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateProjectResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProjectArn")
+            Prelude.<*> (x Data..:> "ProjectId")
+      )
+
+instance Prelude.Hashable CreateProject where
+  hashWithSalt _salt CreateProject' {..} =
+    _salt
+      `Prelude.hashWithSalt` projectDescription
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` projectName
+      `Prelude.hashWithSalt` serviceCatalogProvisioningDetails
+
+instance Prelude.NFData CreateProject where
+  rnf CreateProject' {..} =
+    Prelude.rnf projectDescription
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf projectName
+      `Prelude.seq` Prelude.rnf serviceCatalogProvisioningDetails
+
+instance Data.ToHeaders CreateProject where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateProject" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateProject where
+  toJSON CreateProject' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ProjectDescription" Data..=)
+              Prelude.<$> projectDescription,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ProjectName" Data..= projectName),
+            Prelude.Just
+              ( "ServiceCatalogProvisioningDetails"
+                  Data..= serviceCatalogProvisioningDetails
+              )
+          ]
+      )
+
+instance Data.ToPath CreateProject where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateProject where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateProjectResponse' smart constructor.
+data CreateProjectResponse = CreateProjectResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the project.
+    projectArn :: Prelude.Text,
+    -- | The ID of the new project.
+    projectId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProjectResponse' 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', 'createProjectResponse_httpStatus' - The response's http status code.
+--
+-- 'projectArn', 'createProjectResponse_projectArn' - The Amazon Resource Name (ARN) of the project.
+--
+-- 'projectId', 'createProjectResponse_projectId' - The ID of the new project.
+newCreateProjectResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'projectArn'
+  Prelude.Text ->
+  -- | 'projectId'
+  Prelude.Text ->
+  CreateProjectResponse
+newCreateProjectResponse
+  pHttpStatus_
+  pProjectArn_
+  pProjectId_ =
+    CreateProjectResponse'
+      { httpStatus = pHttpStatus_,
+        projectArn = pProjectArn_,
+        projectId = pProjectId_
+      }
+
+-- | The response's http status code.
+createProjectResponse_httpStatus :: Lens.Lens' CreateProjectResponse Prelude.Int
+createProjectResponse_httpStatus = Lens.lens (\CreateProjectResponse' {httpStatus} -> httpStatus) (\s@CreateProjectResponse' {} a -> s {httpStatus = a} :: CreateProjectResponse)
+
+-- | The Amazon Resource Name (ARN) of the project.
+createProjectResponse_projectArn :: Lens.Lens' CreateProjectResponse Prelude.Text
+createProjectResponse_projectArn = Lens.lens (\CreateProjectResponse' {projectArn} -> projectArn) (\s@CreateProjectResponse' {} a -> s {projectArn = a} :: CreateProjectResponse)
+
+-- | The ID of the new project.
+createProjectResponse_projectId :: Lens.Lens' CreateProjectResponse Prelude.Text
+createProjectResponse_projectId = Lens.lens (\CreateProjectResponse' {projectId} -> projectId) (\s@CreateProjectResponse' {} a -> s {projectId = a} :: CreateProjectResponse)
+
+instance Prelude.NFData CreateProjectResponse where
+  rnf CreateProjectResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf projectArn
+      `Prelude.seq` Prelude.rnf projectId
diff --git a/gen/Amazonka/SageMaker/CreateSpace.hs b/gen/Amazonka/SageMaker/CreateSpace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateSpace.hs
@@ -0,0 +1,215 @@
+{-# 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.CreateSpace
+-- 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 space used for real time collaboration in a Domain.
+module Amazonka.SageMaker.CreateSpace
+  ( -- * Creating a Request
+    CreateSpace (..),
+    newCreateSpace,
+
+    -- * Request Lenses
+    createSpace_spaceSettings,
+    createSpace_tags,
+    createSpace_domainId,
+    createSpace_spaceName,
+
+    -- * Destructuring the Response
+    CreateSpaceResponse (..),
+    newCreateSpaceResponse,
+
+    -- * Response Lenses
+    createSpaceResponse_spaceArn,
+    createSpaceResponse_httpStatus,
+  )
+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:/ 'newCreateSpace' smart constructor.
+data CreateSpace = CreateSpace'
+  { -- | A collection of space settings.
+    spaceSettings :: Prelude.Maybe SpaceSettings,
+    -- | Tags to associated with the space. Each tag consists of a key and an
+    -- optional value. Tag keys must be unique for each resource. Tags are
+    -- searchable using the @Search@ API.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of the associated Domain.
+    domainId :: Prelude.Text,
+    -- | The name of the space.
+    spaceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSpace' 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:
+--
+-- 'spaceSettings', 'createSpace_spaceSettings' - A collection of space settings.
+--
+-- 'tags', 'createSpace_tags' - Tags to associated with the space. Each tag consists of a key and an
+-- optional value. Tag keys must be unique for each resource. Tags are
+-- searchable using the @Search@ API.
+--
+-- 'domainId', 'createSpace_domainId' - The ID of the associated Domain.
+--
+-- 'spaceName', 'createSpace_spaceName' - The name of the space.
+newCreateSpace ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'spaceName'
+  Prelude.Text ->
+  CreateSpace
+newCreateSpace pDomainId_ pSpaceName_ =
+  CreateSpace'
+    { spaceSettings = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      domainId = pDomainId_,
+      spaceName = pSpaceName_
+    }
+
+-- | A collection of space settings.
+createSpace_spaceSettings :: Lens.Lens' CreateSpace (Prelude.Maybe SpaceSettings)
+createSpace_spaceSettings = Lens.lens (\CreateSpace' {spaceSettings} -> spaceSettings) (\s@CreateSpace' {} a -> s {spaceSettings = a} :: CreateSpace)
+
+-- | Tags to associated with the space. Each tag consists of a key and an
+-- optional value. Tag keys must be unique for each resource. Tags are
+-- searchable using the @Search@ API.
+createSpace_tags :: Lens.Lens' CreateSpace (Prelude.Maybe [Tag])
+createSpace_tags = Lens.lens (\CreateSpace' {tags} -> tags) (\s@CreateSpace' {} a -> s {tags = a} :: CreateSpace) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the associated Domain.
+createSpace_domainId :: Lens.Lens' CreateSpace Prelude.Text
+createSpace_domainId = Lens.lens (\CreateSpace' {domainId} -> domainId) (\s@CreateSpace' {} a -> s {domainId = a} :: CreateSpace)
+
+-- | The name of the space.
+createSpace_spaceName :: Lens.Lens' CreateSpace Prelude.Text
+createSpace_spaceName = Lens.lens (\CreateSpace' {spaceName} -> spaceName) (\s@CreateSpace' {} a -> s {spaceName = a} :: CreateSpace)
+
+instance Core.AWSRequest CreateSpace where
+  type AWSResponse CreateSpace = CreateSpaceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSpaceResponse'
+            Prelude.<$> (x Data..?> "SpaceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSpace where
+  hashWithSalt _salt CreateSpace' {..} =
+    _salt
+      `Prelude.hashWithSalt` spaceSettings
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` spaceName
+
+instance Prelude.NFData CreateSpace where
+  rnf CreateSpace' {..} =
+    Prelude.rnf spaceSettings
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf spaceName
+
+instance Data.ToHeaders CreateSpace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateSpace" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateSpace where
+  toJSON CreateSpace' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SpaceSettings" Data..=) Prelude.<$> spaceSettings,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("SpaceName" Data..= spaceName)
+          ]
+      )
+
+instance Data.ToPath CreateSpace where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateSpace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSpaceResponse' smart constructor.
+data CreateSpaceResponse = CreateSpaceResponse'
+  { -- | The space\'s Amazon Resource Name (ARN).
+    spaceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSpaceResponse' 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:
+--
+-- 'spaceArn', 'createSpaceResponse_spaceArn' - The space\'s Amazon Resource Name (ARN).
+--
+-- 'httpStatus', 'createSpaceResponse_httpStatus' - The response's http status code.
+newCreateSpaceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSpaceResponse
+newCreateSpaceResponse pHttpStatus_ =
+  CreateSpaceResponse'
+    { spaceArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The space\'s Amazon Resource Name (ARN).
+createSpaceResponse_spaceArn :: Lens.Lens' CreateSpaceResponse (Prelude.Maybe Prelude.Text)
+createSpaceResponse_spaceArn = Lens.lens (\CreateSpaceResponse' {spaceArn} -> spaceArn) (\s@CreateSpaceResponse' {} a -> s {spaceArn = a} :: CreateSpaceResponse)
+
+-- | The response's http status code.
+createSpaceResponse_httpStatus :: Lens.Lens' CreateSpaceResponse Prelude.Int
+createSpaceResponse_httpStatus = Lens.lens (\CreateSpaceResponse' {httpStatus} -> httpStatus) (\s@CreateSpaceResponse' {} a -> s {httpStatus = a} :: CreateSpaceResponse)
+
+instance Prelude.NFData CreateSpaceResponse where
+  rnf CreateSpaceResponse' {..} =
+    Prelude.rnf spaceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateStudioLifecycleConfig.hs b/gen/Amazonka/SageMaker/CreateStudioLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateStudioLifecycleConfig.hs
@@ -0,0 +1,244 @@
+{-# 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.CreateStudioLifecycleConfig
+-- 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 new Studio Lifecycle Configuration.
+module Amazonka.SageMaker.CreateStudioLifecycleConfig
+  ( -- * Creating a Request
+    CreateStudioLifecycleConfig (..),
+    newCreateStudioLifecycleConfig,
+
+    -- * Request Lenses
+    createStudioLifecycleConfig_tags,
+    createStudioLifecycleConfig_studioLifecycleConfigName,
+    createStudioLifecycleConfig_studioLifecycleConfigContent,
+    createStudioLifecycleConfig_studioLifecycleConfigAppType,
+
+    -- * Destructuring the Response
+    CreateStudioLifecycleConfigResponse (..),
+    newCreateStudioLifecycleConfigResponse,
+
+    -- * Response Lenses
+    createStudioLifecycleConfigResponse_studioLifecycleConfigArn,
+    createStudioLifecycleConfigResponse_httpStatus,
+  )
+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:/ 'newCreateStudioLifecycleConfig' smart constructor.
+data CreateStudioLifecycleConfig = CreateStudioLifecycleConfig'
+  { -- | Tags to be associated with the Lifecycle Configuration. Each tag
+    -- consists of a key and an optional value. Tag keys must be unique per
+    -- resource. Tags are searchable using the Search API.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the Studio Lifecycle Configuration to create.
+    studioLifecycleConfigName :: Prelude.Text,
+    -- | The content of your Studio Lifecycle Configuration script. This content
+    -- must be base64 encoded.
+    studioLifecycleConfigContent :: Prelude.Text,
+    -- | The App type that the Lifecycle Configuration is attached to.
+    studioLifecycleConfigAppType :: StudioLifecycleConfigAppType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateStudioLifecycleConfig' 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:
+--
+-- 'tags', 'createStudioLifecycleConfig_tags' - Tags to be associated with the Lifecycle Configuration. Each tag
+-- consists of a key and an optional value. Tag keys must be unique per
+-- resource. Tags are searchable using the Search API.
+--
+-- 'studioLifecycleConfigName', 'createStudioLifecycleConfig_studioLifecycleConfigName' - The name of the Studio Lifecycle Configuration to create.
+--
+-- 'studioLifecycleConfigContent', 'createStudioLifecycleConfig_studioLifecycleConfigContent' - The content of your Studio Lifecycle Configuration script. This content
+-- must be base64 encoded.
+--
+-- 'studioLifecycleConfigAppType', 'createStudioLifecycleConfig_studioLifecycleConfigAppType' - The App type that the Lifecycle Configuration is attached to.
+newCreateStudioLifecycleConfig ::
+  -- | 'studioLifecycleConfigName'
+  Prelude.Text ->
+  -- | 'studioLifecycleConfigContent'
+  Prelude.Text ->
+  -- | 'studioLifecycleConfigAppType'
+  StudioLifecycleConfigAppType ->
+  CreateStudioLifecycleConfig
+newCreateStudioLifecycleConfig
+  pStudioLifecycleConfigName_
+  pStudioLifecycleConfigContent_
+  pStudioLifecycleConfigAppType_ =
+    CreateStudioLifecycleConfig'
+      { tags =
+          Prelude.Nothing,
+        studioLifecycleConfigName =
+          pStudioLifecycleConfigName_,
+        studioLifecycleConfigContent =
+          pStudioLifecycleConfigContent_,
+        studioLifecycleConfigAppType =
+          pStudioLifecycleConfigAppType_
+      }
+
+-- | Tags to be associated with the Lifecycle Configuration. Each tag
+-- consists of a key and an optional value. Tag keys must be unique per
+-- resource. Tags are searchable using the Search API.
+createStudioLifecycleConfig_tags :: Lens.Lens' CreateStudioLifecycleConfig (Prelude.Maybe [Tag])
+createStudioLifecycleConfig_tags = Lens.lens (\CreateStudioLifecycleConfig' {tags} -> tags) (\s@CreateStudioLifecycleConfig' {} a -> s {tags = a} :: CreateStudioLifecycleConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the Studio Lifecycle Configuration to create.
+createStudioLifecycleConfig_studioLifecycleConfigName :: Lens.Lens' CreateStudioLifecycleConfig Prelude.Text
+createStudioLifecycleConfig_studioLifecycleConfigName = Lens.lens (\CreateStudioLifecycleConfig' {studioLifecycleConfigName} -> studioLifecycleConfigName) (\s@CreateStudioLifecycleConfig' {} a -> s {studioLifecycleConfigName = a} :: CreateStudioLifecycleConfig)
+
+-- | The content of your Studio Lifecycle Configuration script. This content
+-- must be base64 encoded.
+createStudioLifecycleConfig_studioLifecycleConfigContent :: Lens.Lens' CreateStudioLifecycleConfig Prelude.Text
+createStudioLifecycleConfig_studioLifecycleConfigContent = Lens.lens (\CreateStudioLifecycleConfig' {studioLifecycleConfigContent} -> studioLifecycleConfigContent) (\s@CreateStudioLifecycleConfig' {} a -> s {studioLifecycleConfigContent = a} :: CreateStudioLifecycleConfig)
+
+-- | The App type that the Lifecycle Configuration is attached to.
+createStudioLifecycleConfig_studioLifecycleConfigAppType :: Lens.Lens' CreateStudioLifecycleConfig StudioLifecycleConfigAppType
+createStudioLifecycleConfig_studioLifecycleConfigAppType = Lens.lens (\CreateStudioLifecycleConfig' {studioLifecycleConfigAppType} -> studioLifecycleConfigAppType) (\s@CreateStudioLifecycleConfig' {} a -> s {studioLifecycleConfigAppType = a} :: CreateStudioLifecycleConfig)
+
+instance Core.AWSRequest CreateStudioLifecycleConfig where
+  type
+    AWSResponse CreateStudioLifecycleConfig =
+      CreateStudioLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateStudioLifecycleConfigResponse'
+            Prelude.<$> (x Data..?> "StudioLifecycleConfigArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateStudioLifecycleConfig where
+  hashWithSalt _salt CreateStudioLifecycleConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` studioLifecycleConfigName
+      `Prelude.hashWithSalt` studioLifecycleConfigContent
+      `Prelude.hashWithSalt` studioLifecycleConfigAppType
+
+instance Prelude.NFData CreateStudioLifecycleConfig where
+  rnf CreateStudioLifecycleConfig' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigName
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigContent
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigAppType
+
+instance Data.ToHeaders CreateStudioLifecycleConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateStudioLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateStudioLifecycleConfig where
+  toJSON CreateStudioLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "StudioLifecycleConfigName"
+                  Data..= studioLifecycleConfigName
+              ),
+            Prelude.Just
+              ( "StudioLifecycleConfigContent"
+                  Data..= studioLifecycleConfigContent
+              ),
+            Prelude.Just
+              ( "StudioLifecycleConfigAppType"
+                  Data..= studioLifecycleConfigAppType
+              )
+          ]
+      )
+
+instance Data.ToPath CreateStudioLifecycleConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateStudioLifecycleConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateStudioLifecycleConfigResponse' smart constructor.
+data CreateStudioLifecycleConfigResponse = CreateStudioLifecycleConfigResponse'
+  { -- | The ARN of your created Lifecycle Configuration.
+    studioLifecycleConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateStudioLifecycleConfigResponse' 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:
+--
+-- 'studioLifecycleConfigArn', 'createStudioLifecycleConfigResponse_studioLifecycleConfigArn' - The ARN of your created Lifecycle Configuration.
+--
+-- 'httpStatus', 'createStudioLifecycleConfigResponse_httpStatus' - The response's http status code.
+newCreateStudioLifecycleConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateStudioLifecycleConfigResponse
+newCreateStudioLifecycleConfigResponse pHttpStatus_ =
+  CreateStudioLifecycleConfigResponse'
+    { studioLifecycleConfigArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of your created Lifecycle Configuration.
+createStudioLifecycleConfigResponse_studioLifecycleConfigArn :: Lens.Lens' CreateStudioLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+createStudioLifecycleConfigResponse_studioLifecycleConfigArn = Lens.lens (\CreateStudioLifecycleConfigResponse' {studioLifecycleConfigArn} -> studioLifecycleConfigArn) (\s@CreateStudioLifecycleConfigResponse' {} a -> s {studioLifecycleConfigArn = a} :: CreateStudioLifecycleConfigResponse)
+
+-- | The response's http status code.
+createStudioLifecycleConfigResponse_httpStatus :: Lens.Lens' CreateStudioLifecycleConfigResponse Prelude.Int
+createStudioLifecycleConfigResponse_httpStatus = Lens.lens (\CreateStudioLifecycleConfigResponse' {httpStatus} -> httpStatus) (\s@CreateStudioLifecycleConfigResponse' {} a -> s {httpStatus = a} :: CreateStudioLifecycleConfigResponse)
+
+instance
+  Prelude.NFData
+    CreateStudioLifecycleConfigResponse
+  where
+  rnf CreateStudioLifecycleConfigResponse' {..} =
+    Prelude.rnf studioLifecycleConfigArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateTrainingJob.hs b/gen/Amazonka/SageMaker/CreateTrainingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateTrainingJob.hs
@@ -0,0 +1,819 @@
+{-# 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.CreateTrainingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a model training job. After training completes, SageMaker saves
+-- the resulting model artifacts to an Amazon S3 location that you specify.
+--
+-- If you choose to host your model using SageMaker hosting services, you
+-- can use the resulting model artifacts as part of the model. You can also
+-- use the artifacts in a machine learning service other than SageMaker,
+-- provided that you know how to use them for inference.
+--
+-- In the request body, you provide the following:
+--
+-- -   @AlgorithmSpecification@ - Identifies the training algorithm to use.
+--
+-- -   @HyperParameters@ - Specify these algorithm-specific parameters to
+--     enable the estimation of model parameters during training.
+--     Hyperparameters can be tuned to optimize this learning process. For
+--     a list of hyperparameters for each training algorithm provided by
+--     SageMaker, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+--
+--     Do not include any security-sensitive information including account
+--     access IDs, secrets or tokens in any hyperparameter field. If the
+--     use of security-sensitive credentials are detected, SageMaker will
+--     reject your training job request and return an exception error.
+--
+-- -   @InputDataConfig@ - Describes the input required by the training job
+--     and the Amazon S3, EFS, or FSx location where it is stored.
+--
+-- -   @OutputDataConfig@ - Identifies the Amazon S3 bucket where you want
+--     SageMaker to save the results of model training.
+--
+-- -   @ResourceConfig@ - Identifies the resources, ML compute instances,
+--     and ML storage volumes to deploy for model training. In distributed
+--     training, you specify more than one instance.
+--
+-- -   @EnableManagedSpotTraining@ - Optimize the cost of training machine
+--     learning models by up to 80% by using Amazon EC2 Spot instances. For
+--     more information, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
+--
+-- -   @RoleArn@ - The Amazon Resource Name (ARN) that SageMaker assumes to
+--     perform tasks on your behalf during model training. You must grant
+--     this role the necessary permissions so that SageMaker can
+--     successfully complete model training.
+--
+-- -   @StoppingCondition@ - To help cap training costs, use
+--     @MaxRuntimeInSeconds@ to set a time limit for training. Use
+--     @MaxWaitTimeInSeconds@ to specify how long a managed spot training
+--     job has to complete.
+--
+-- -   @Environment@ - The environment variables to set in the Docker
+--     container.
+--
+-- -   @RetryStrategy@ - The number of times to retry the job when the job
+--     fails due to an @InternalServerError@.
+--
+-- For more information about SageMaker, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works.html How It Works>.
+module Amazonka.SageMaker.CreateTrainingJob
+  ( -- * Creating a Request
+    CreateTrainingJob (..),
+    newCreateTrainingJob,
+
+    -- * Request Lenses
+    createTrainingJob_checkpointConfig,
+    createTrainingJob_debugHookConfig,
+    createTrainingJob_debugRuleConfigurations,
+    createTrainingJob_enableInterContainerTrafficEncryption,
+    createTrainingJob_enableManagedSpotTraining,
+    createTrainingJob_enableNetworkIsolation,
+    createTrainingJob_environment,
+    createTrainingJob_experimentConfig,
+    createTrainingJob_hyperParameters,
+    createTrainingJob_inputDataConfig,
+    createTrainingJob_profilerConfig,
+    createTrainingJob_profilerRuleConfigurations,
+    createTrainingJob_retryStrategy,
+    createTrainingJob_tags,
+    createTrainingJob_tensorBoardOutputConfig,
+    createTrainingJob_vpcConfig,
+    createTrainingJob_trainingJobName,
+    createTrainingJob_algorithmSpecification,
+    createTrainingJob_roleArn,
+    createTrainingJob_outputDataConfig,
+    createTrainingJob_resourceConfig,
+    createTrainingJob_stoppingCondition,
+
+    -- * Destructuring the Response
+    CreateTrainingJobResponse (..),
+    newCreateTrainingJobResponse,
+
+    -- * Response Lenses
+    createTrainingJobResponse_httpStatus,
+    createTrainingJobResponse_trainingJobArn,
+  )
+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:/ 'newCreateTrainingJob' smart constructor.
+data CreateTrainingJob = CreateTrainingJob'
+  { -- | Contains information about the output location for managed spot training
+    -- checkpoint data.
+    checkpointConfig :: Prelude.Maybe CheckpointConfig,
+    debugHookConfig :: Prelude.Maybe DebugHookConfig,
+    -- | Configuration information for Amazon SageMaker Debugger rules for
+    -- debugging output tensors.
+    debugRuleConfigurations :: Prelude.Maybe [DebugRuleConfiguration],
+    -- | To encrypt all communications between ML compute instances in
+    -- distributed training, choose @True@. Encryption provides greater
+    -- security for distributed training, but training might take longer. How
+    -- long it takes depends on the amount of communication between compute
+    -- instances, especially if you use a deep learning algorithm in
+    -- distributed training. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-encrypt.html Protect Communications Between ML Compute Instances in a Distributed Training Job>.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | To train models using managed spot training, choose @True@. Managed spot
+    -- training provides a fully managed and scalable infrastructure for
+    -- training machine learning models. this option is useful when training
+    -- jobs can be interrupted and when there is flexibility when the training
+    -- job is run.
+    --
+    -- The complete and intermediate results of jobs are stored in an Amazon S3
+    -- bucket, and can be used as a starting point to train models
+    -- incrementally. Amazon SageMaker provides metrics and logs in CloudWatch.
+    -- They can be used to see when managed spot training jobs are running,
+    -- interrupted, resumed, or completed.
+    enableManagedSpotTraining :: Prelude.Maybe Prelude.Bool,
+    -- | Isolates the training container. No inbound or outbound network calls
+    -- can be made, except for calls between peers within a training cluster
+    -- for distributed training. If you enable network isolation for training
+    -- jobs that are configured to use a VPC, SageMaker downloads and uploads
+    -- customer data and model artifacts through the specified VPC, but the
+    -- training container does not have network access.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    -- | The environment variables to set in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | Algorithm-specific parameters that influence the quality of the model.
+    -- You set hyperparameters before you start the learning process. For a
+    -- list of hyperparameters for each training algorithm provided by
+    -- SageMaker, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+    --
+    -- You can specify a maximum of 100 hyperparameters. Each hyperparameter is
+    -- a key-value pair. Each key and value is limited to 256 characters, as
+    -- specified by the @Length Constraint@.
+    --
+    -- Do not include any security-sensitive information including account
+    -- access IDs, secrets or tokens in any hyperparameter field. If the use of
+    -- security-sensitive credentials are detected, SageMaker will reject your
+    -- training job request and return an exception error.
+    hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | An array of @Channel@ objects. Each channel is a named input source.
+    -- @InputDataConfig@ describes the input data and its location.
+    --
+    -- Algorithms can accept input data from one or more channels. For example,
+    -- an algorithm might have two channels of input data, @training_data@ and
+    -- @validation_data@. The configuration for each channel provides the S3,
+    -- EFS, or FSx location where the input data is stored. It also provides
+    -- information about the stored data: the MIME type, compression method,
+    -- and whether the data is wrapped in RecordIO format.
+    --
+    -- Depending on the input mode that the algorithm supports, SageMaker
+    -- either copies input data files from an S3 bucket to a local directory in
+    -- the Docker container, or makes it available as input streams. For
+    -- example, if you specify an EFS location, input data files are available
+    -- as input streams. They do not need to be downloaded.
+    inputDataConfig :: Prelude.Maybe (Prelude.NonEmpty Channel),
+    profilerConfig :: Prelude.Maybe ProfilerConfig,
+    -- | Configuration information for Amazon SageMaker Debugger rules for
+    -- profiling system and framework metrics.
+    profilerRuleConfigurations :: Prelude.Maybe [ProfilerRuleConfiguration],
+    -- | The number of times to retry the job when the job fails due to an
+    -- @InternalServerError@.
+    retryStrategy :: Prelude.Maybe RetryStrategy,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    tensorBoardOutputConfig :: Prelude.Maybe TensorBoardOutputConfig,
+    -- | A VpcConfig object that specifies the VPC that you want your training
+    -- job to connect to. Control access to and from your training container by
+    -- configuring the VPC. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe VpcConfig,
+    -- | The name of the training job. The name must be unique within an Amazon
+    -- Web Services Region in an Amazon Web Services account.
+    trainingJobName :: Prelude.Text,
+    -- | The registry path of the Docker image that contains the training
+    -- algorithm and algorithm-specific metadata, including the input mode. For
+    -- more information about algorithms provided by SageMaker, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+    -- For information about providing your own algorithms, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+    algorithmSpecification :: AlgorithmSpecification,
+    -- | The Amazon Resource Name (ARN) of an IAM role that SageMaker can assume
+    -- to perform tasks on your behalf.
+    --
+    -- During model training, SageMaker needs your permission to read input
+    -- data from an S3 bucket, download a Docker image that contains training
+    -- code, write model artifacts to an S3 bucket, write logs to Amazon
+    -- CloudWatch Logs, and publish metrics to Amazon CloudWatch. You grant
+    -- permissions for all of these tasks to an IAM role. For more information,
+    -- see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+    --
+    -- To be able to pass this role to SageMaker, the caller of this API must
+    -- have the @iam:PassRole@ permission.
+    roleArn :: Prelude.Text,
+    -- | Specifies the path to the S3 location where you want to store model
+    -- artifacts. SageMaker creates subfolders for the artifacts.
+    outputDataConfig :: OutputDataConfig,
+    -- | The resources, including the ML compute instances and ML storage
+    -- volumes, to use for model training.
+    --
+    -- ML storage volumes store model artifacts and incremental states.
+    -- Training algorithms might also use ML storage volumes for scratch space.
+    -- If you want SageMaker to use the ML storage volume to store the training
+    -- data, choose @File@ as the @TrainingInputMode@ in the algorithm
+    -- specification. For distributed training algorithms, specify an instance
+    -- count greater than 1.
+    resourceConfig :: ResourceConfig,
+    -- | Specifies a limit to how long a model training job can run. It also
+    -- specifies how long a managed Spot training job has to complete. When the
+    -- job reaches the time limit, SageMaker ends the training job. Use this
+    -- API to cap model training costs.
+    --
+    -- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+    -- delays job termination for 120 seconds. Algorithms can use this
+    -- 120-second window to save the model artifacts, so the results of
+    -- training are not lost.
+    stoppingCondition :: StoppingCondition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTrainingJob' 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:
+--
+-- 'checkpointConfig', 'createTrainingJob_checkpointConfig' - Contains information about the output location for managed spot training
+-- checkpoint data.
+--
+-- 'debugHookConfig', 'createTrainingJob_debugHookConfig' - Undocumented member.
+--
+-- 'debugRuleConfigurations', 'createTrainingJob_debugRuleConfigurations' - Configuration information for Amazon SageMaker Debugger rules for
+-- debugging output tensors.
+--
+-- 'enableInterContainerTrafficEncryption', 'createTrainingJob_enableInterContainerTrafficEncryption' - To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithm in
+-- distributed training. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-encrypt.html Protect Communications Between ML Compute Instances in a Distributed Training Job>.
+--
+-- 'enableManagedSpotTraining', 'createTrainingJob_enableManagedSpotTraining' - To train models using managed spot training, choose @True@. Managed spot
+-- training provides a fully managed and scalable infrastructure for
+-- training machine learning models. this option is useful when training
+-- jobs can be interrupted and when there is flexibility when the training
+-- job is run.
+--
+-- The complete and intermediate results of jobs are stored in an Amazon S3
+-- bucket, and can be used as a starting point to train models
+-- incrementally. Amazon SageMaker provides metrics and logs in CloudWatch.
+-- They can be used to see when managed spot training jobs are running,
+-- interrupted, resumed, or completed.
+--
+-- 'enableNetworkIsolation', 'createTrainingJob_enableNetworkIsolation' - Isolates the training container. No inbound or outbound network calls
+-- can be made, except for calls between peers within a training cluster
+-- for distributed training. If you enable network isolation for training
+-- jobs that are configured to use a VPC, SageMaker downloads and uploads
+-- customer data and model artifacts through the specified VPC, but the
+-- training container does not have network access.
+--
+-- 'environment', 'createTrainingJob_environment' - The environment variables to set in the Docker container.
+--
+-- 'experimentConfig', 'createTrainingJob_experimentConfig' - Undocumented member.
+--
+-- 'hyperParameters', 'createTrainingJob_hyperParameters' - Algorithm-specific parameters that influence the quality of the model.
+-- You set hyperparameters before you start the learning process. For a
+-- list of hyperparameters for each training algorithm provided by
+-- SageMaker, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+--
+-- You can specify a maximum of 100 hyperparameters. Each hyperparameter is
+-- a key-value pair. Each key and value is limited to 256 characters, as
+-- specified by the @Length Constraint@.
+--
+-- Do not include any security-sensitive information including account
+-- access IDs, secrets or tokens in any hyperparameter field. If the use of
+-- security-sensitive credentials are detected, SageMaker will reject your
+-- training job request and return an exception error.
+--
+-- 'inputDataConfig', 'createTrainingJob_inputDataConfig' - An array of @Channel@ objects. Each channel is a named input source.
+-- @InputDataConfig@ describes the input data and its location.
+--
+-- Algorithms can accept input data from one or more channels. For example,
+-- an algorithm might have two channels of input data, @training_data@ and
+-- @validation_data@. The configuration for each channel provides the S3,
+-- EFS, or FSx location where the input data is stored. It also provides
+-- information about the stored data: the MIME type, compression method,
+-- and whether the data is wrapped in RecordIO format.
+--
+-- Depending on the input mode that the algorithm supports, SageMaker
+-- either copies input data files from an S3 bucket to a local directory in
+-- the Docker container, or makes it available as input streams. For
+-- example, if you specify an EFS location, input data files are available
+-- as input streams. They do not need to be downloaded.
+--
+-- 'profilerConfig', 'createTrainingJob_profilerConfig' - Undocumented member.
+--
+-- 'profilerRuleConfigurations', 'createTrainingJob_profilerRuleConfigurations' - Configuration information for Amazon SageMaker Debugger rules for
+-- profiling system and framework metrics.
+--
+-- 'retryStrategy', 'createTrainingJob_retryStrategy' - The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+--
+-- 'tags', 'createTrainingJob_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'tensorBoardOutputConfig', 'createTrainingJob_tensorBoardOutputConfig' - Undocumented member.
+--
+-- 'vpcConfig', 'createTrainingJob_vpcConfig' - A VpcConfig object that specifies the VPC that you want your training
+-- job to connect to. Control access to and from your training container by
+-- configuring the VPC. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- 'trainingJobName', 'createTrainingJob_trainingJobName' - The name of the training job. The name must be unique within an Amazon
+-- Web Services Region in an Amazon Web Services account.
+--
+-- 'algorithmSpecification', 'createTrainingJob_algorithmSpecification' - The registry path of the Docker image that contains the training
+-- algorithm and algorithm-specific metadata, including the input mode. For
+-- more information about algorithms provided by SageMaker, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+-- For information about providing your own algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+--
+-- 'roleArn', 'createTrainingJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that SageMaker can assume
+-- to perform tasks on your behalf.
+--
+-- During model training, SageMaker needs your permission to read input
+-- data from an S3 bucket, download a Docker image that contains training
+-- code, write model artifacts to an S3 bucket, write logs to Amazon
+-- CloudWatch Logs, and publish metrics to Amazon CloudWatch. You grant
+-- permissions for all of these tasks to an IAM role. For more information,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+--
+-- 'outputDataConfig', 'createTrainingJob_outputDataConfig' - Specifies the path to the S3 location where you want to store model
+-- artifacts. SageMaker creates subfolders for the artifacts.
+--
+-- 'resourceConfig', 'createTrainingJob_resourceConfig' - The resources, including the ML compute instances and ML storage
+-- volumes, to use for model training.
+--
+-- ML storage volumes store model artifacts and incremental states.
+-- Training algorithms might also use ML storage volumes for scratch space.
+-- If you want SageMaker to use the ML storage volume to store the training
+-- data, choose @File@ as the @TrainingInputMode@ in the algorithm
+-- specification. For distributed training algorithms, specify an instance
+-- count greater than 1.
+--
+-- 'stoppingCondition', 'createTrainingJob_stoppingCondition' - Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+newCreateTrainingJob ::
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  -- | 'algorithmSpecification'
+  AlgorithmSpecification ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'outputDataConfig'
+  OutputDataConfig ->
+  -- | 'resourceConfig'
+  ResourceConfig ->
+  -- | 'stoppingCondition'
+  StoppingCondition ->
+  CreateTrainingJob
+newCreateTrainingJob
+  pTrainingJobName_
+  pAlgorithmSpecification_
+  pRoleArn_
+  pOutputDataConfig_
+  pResourceConfig_
+  pStoppingCondition_ =
+    CreateTrainingJob'
+      { checkpointConfig =
+          Prelude.Nothing,
+        debugHookConfig = Prelude.Nothing,
+        debugRuleConfigurations = Prelude.Nothing,
+        enableInterContainerTrafficEncryption =
+          Prelude.Nothing,
+        enableManagedSpotTraining = Prelude.Nothing,
+        enableNetworkIsolation = Prelude.Nothing,
+        environment = Prelude.Nothing,
+        experimentConfig = Prelude.Nothing,
+        hyperParameters = Prelude.Nothing,
+        inputDataConfig = Prelude.Nothing,
+        profilerConfig = Prelude.Nothing,
+        profilerRuleConfigurations = Prelude.Nothing,
+        retryStrategy = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        tensorBoardOutputConfig = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        trainingJobName = pTrainingJobName_,
+        algorithmSpecification = pAlgorithmSpecification_,
+        roleArn = pRoleArn_,
+        outputDataConfig = pOutputDataConfig_,
+        resourceConfig = pResourceConfig_,
+        stoppingCondition = pStoppingCondition_
+      }
+
+-- | Contains information about the output location for managed spot training
+-- checkpoint data.
+createTrainingJob_checkpointConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe CheckpointConfig)
+createTrainingJob_checkpointConfig = Lens.lens (\CreateTrainingJob' {checkpointConfig} -> checkpointConfig) (\s@CreateTrainingJob' {} a -> s {checkpointConfig = a} :: CreateTrainingJob)
+
+-- | Undocumented member.
+createTrainingJob_debugHookConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe DebugHookConfig)
+createTrainingJob_debugHookConfig = Lens.lens (\CreateTrainingJob' {debugHookConfig} -> debugHookConfig) (\s@CreateTrainingJob' {} a -> s {debugHookConfig = a} :: CreateTrainingJob)
+
+-- | Configuration information for Amazon SageMaker Debugger rules for
+-- debugging output tensors.
+createTrainingJob_debugRuleConfigurations :: Lens.Lens' CreateTrainingJob (Prelude.Maybe [DebugRuleConfiguration])
+createTrainingJob_debugRuleConfigurations = Lens.lens (\CreateTrainingJob' {debugRuleConfigurations} -> debugRuleConfigurations) (\s@CreateTrainingJob' {} a -> s {debugRuleConfigurations = a} :: CreateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithm in
+-- distributed training. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-encrypt.html Protect Communications Between ML Compute Instances in a Distributed Training Job>.
+createTrainingJob_enableInterContainerTrafficEncryption :: Lens.Lens' CreateTrainingJob (Prelude.Maybe Prelude.Bool)
+createTrainingJob_enableInterContainerTrafficEncryption = Lens.lens (\CreateTrainingJob' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@CreateTrainingJob' {} a -> s {enableInterContainerTrafficEncryption = a} :: CreateTrainingJob)
+
+-- | To train models using managed spot training, choose @True@. Managed spot
+-- training provides a fully managed and scalable infrastructure for
+-- training machine learning models. this option is useful when training
+-- jobs can be interrupted and when there is flexibility when the training
+-- job is run.
+--
+-- The complete and intermediate results of jobs are stored in an Amazon S3
+-- bucket, and can be used as a starting point to train models
+-- incrementally. Amazon SageMaker provides metrics and logs in CloudWatch.
+-- They can be used to see when managed spot training jobs are running,
+-- interrupted, resumed, or completed.
+createTrainingJob_enableManagedSpotTraining :: Lens.Lens' CreateTrainingJob (Prelude.Maybe Prelude.Bool)
+createTrainingJob_enableManagedSpotTraining = Lens.lens (\CreateTrainingJob' {enableManagedSpotTraining} -> enableManagedSpotTraining) (\s@CreateTrainingJob' {} a -> s {enableManagedSpotTraining = a} :: CreateTrainingJob)
+
+-- | Isolates the training container. No inbound or outbound network calls
+-- can be made, except for calls between peers within a training cluster
+-- for distributed training. If you enable network isolation for training
+-- jobs that are configured to use a VPC, SageMaker downloads and uploads
+-- customer data and model artifacts through the specified VPC, but the
+-- training container does not have network access.
+createTrainingJob_enableNetworkIsolation :: Lens.Lens' CreateTrainingJob (Prelude.Maybe Prelude.Bool)
+createTrainingJob_enableNetworkIsolation = Lens.lens (\CreateTrainingJob' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@CreateTrainingJob' {} a -> s {enableNetworkIsolation = a} :: CreateTrainingJob)
+
+-- | The environment variables to set in the Docker container.
+createTrainingJob_environment :: Lens.Lens' CreateTrainingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createTrainingJob_environment = Lens.lens (\CreateTrainingJob' {environment} -> environment) (\s@CreateTrainingJob' {} a -> s {environment = a} :: CreateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createTrainingJob_experimentConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe ExperimentConfig)
+createTrainingJob_experimentConfig = Lens.lens (\CreateTrainingJob' {experimentConfig} -> experimentConfig) (\s@CreateTrainingJob' {} a -> s {experimentConfig = a} :: CreateTrainingJob)
+
+-- | Algorithm-specific parameters that influence the quality of the model.
+-- You set hyperparameters before you start the learning process. For a
+-- list of hyperparameters for each training algorithm provided by
+-- SageMaker, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+--
+-- You can specify a maximum of 100 hyperparameters. Each hyperparameter is
+-- a key-value pair. Each key and value is limited to 256 characters, as
+-- specified by the @Length Constraint@.
+--
+-- Do not include any security-sensitive information including account
+-- access IDs, secrets or tokens in any hyperparameter field. If the use of
+-- security-sensitive credentials are detected, SageMaker will reject your
+-- training job request and return an exception error.
+createTrainingJob_hyperParameters :: Lens.Lens' CreateTrainingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createTrainingJob_hyperParameters = Lens.lens (\CreateTrainingJob' {hyperParameters} -> hyperParameters) (\s@CreateTrainingJob' {} a -> s {hyperParameters = a} :: CreateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of @Channel@ objects. Each channel is a named input source.
+-- @InputDataConfig@ describes the input data and its location.
+--
+-- Algorithms can accept input data from one or more channels. For example,
+-- an algorithm might have two channels of input data, @training_data@ and
+-- @validation_data@. The configuration for each channel provides the S3,
+-- EFS, or FSx location where the input data is stored. It also provides
+-- information about the stored data: the MIME type, compression method,
+-- and whether the data is wrapped in RecordIO format.
+--
+-- Depending on the input mode that the algorithm supports, SageMaker
+-- either copies input data files from an S3 bucket to a local directory in
+-- the Docker container, or makes it available as input streams. For
+-- example, if you specify an EFS location, input data files are available
+-- as input streams. They do not need to be downloaded.
+createTrainingJob_inputDataConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe (Prelude.NonEmpty Channel))
+createTrainingJob_inputDataConfig = Lens.lens (\CreateTrainingJob' {inputDataConfig} -> inputDataConfig) (\s@CreateTrainingJob' {} a -> s {inputDataConfig = a} :: CreateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createTrainingJob_profilerConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe ProfilerConfig)
+createTrainingJob_profilerConfig = Lens.lens (\CreateTrainingJob' {profilerConfig} -> profilerConfig) (\s@CreateTrainingJob' {} a -> s {profilerConfig = a} :: CreateTrainingJob)
+
+-- | Configuration information for Amazon SageMaker Debugger rules for
+-- profiling system and framework metrics.
+createTrainingJob_profilerRuleConfigurations :: Lens.Lens' CreateTrainingJob (Prelude.Maybe [ProfilerRuleConfiguration])
+createTrainingJob_profilerRuleConfigurations = Lens.lens (\CreateTrainingJob' {profilerRuleConfigurations} -> profilerRuleConfigurations) (\s@CreateTrainingJob' {} a -> s {profilerRuleConfigurations = a} :: CreateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+createTrainingJob_retryStrategy :: Lens.Lens' CreateTrainingJob (Prelude.Maybe RetryStrategy)
+createTrainingJob_retryStrategy = Lens.lens (\CreateTrainingJob' {retryStrategy} -> retryStrategy) (\s@CreateTrainingJob' {} a -> s {retryStrategy = a} :: CreateTrainingJob)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+createTrainingJob_tags :: Lens.Lens' CreateTrainingJob (Prelude.Maybe [Tag])
+createTrainingJob_tags = Lens.lens (\CreateTrainingJob' {tags} -> tags) (\s@CreateTrainingJob' {} a -> s {tags = a} :: CreateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createTrainingJob_tensorBoardOutputConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe TensorBoardOutputConfig)
+createTrainingJob_tensorBoardOutputConfig = Lens.lens (\CreateTrainingJob' {tensorBoardOutputConfig} -> tensorBoardOutputConfig) (\s@CreateTrainingJob' {} a -> s {tensorBoardOutputConfig = a} :: CreateTrainingJob)
+
+-- | A VpcConfig object that specifies the VPC that you want your training
+-- job to connect to. Control access to and from your training container by
+-- configuring the VPC. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+createTrainingJob_vpcConfig :: Lens.Lens' CreateTrainingJob (Prelude.Maybe VpcConfig)
+createTrainingJob_vpcConfig = Lens.lens (\CreateTrainingJob' {vpcConfig} -> vpcConfig) (\s@CreateTrainingJob' {} a -> s {vpcConfig = a} :: CreateTrainingJob)
+
+-- | The name of the training job. The name must be unique within an Amazon
+-- Web Services Region in an Amazon Web Services account.
+createTrainingJob_trainingJobName :: Lens.Lens' CreateTrainingJob Prelude.Text
+createTrainingJob_trainingJobName = Lens.lens (\CreateTrainingJob' {trainingJobName} -> trainingJobName) (\s@CreateTrainingJob' {} a -> s {trainingJobName = a} :: CreateTrainingJob)
+
+-- | The registry path of the Docker image that contains the training
+-- algorithm and algorithm-specific metadata, including the input mode. For
+-- more information about algorithms provided by SageMaker, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+-- For information about providing your own algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+createTrainingJob_algorithmSpecification :: Lens.Lens' CreateTrainingJob AlgorithmSpecification
+createTrainingJob_algorithmSpecification = Lens.lens (\CreateTrainingJob' {algorithmSpecification} -> algorithmSpecification) (\s@CreateTrainingJob' {} a -> s {algorithmSpecification = a} :: CreateTrainingJob)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that SageMaker can assume
+-- to perform tasks on your behalf.
+--
+-- During model training, SageMaker needs your permission to read input
+-- data from an S3 bucket, download a Docker image that contains training
+-- code, write model artifacts to an S3 bucket, write logs to Amazon
+-- CloudWatch Logs, and publish metrics to Amazon CloudWatch. You grant
+-- permissions for all of these tasks to an IAM role. For more information,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+createTrainingJob_roleArn :: Lens.Lens' CreateTrainingJob Prelude.Text
+createTrainingJob_roleArn = Lens.lens (\CreateTrainingJob' {roleArn} -> roleArn) (\s@CreateTrainingJob' {} a -> s {roleArn = a} :: CreateTrainingJob)
+
+-- | Specifies the path to the S3 location where you want to store model
+-- artifacts. SageMaker creates subfolders for the artifacts.
+createTrainingJob_outputDataConfig :: Lens.Lens' CreateTrainingJob OutputDataConfig
+createTrainingJob_outputDataConfig = Lens.lens (\CreateTrainingJob' {outputDataConfig} -> outputDataConfig) (\s@CreateTrainingJob' {} a -> s {outputDataConfig = a} :: CreateTrainingJob)
+
+-- | The resources, including the ML compute instances and ML storage
+-- volumes, to use for model training.
+--
+-- ML storage volumes store model artifacts and incremental states.
+-- Training algorithms might also use ML storage volumes for scratch space.
+-- If you want SageMaker to use the ML storage volume to store the training
+-- data, choose @File@ as the @TrainingInputMode@ in the algorithm
+-- specification. For distributed training algorithms, specify an instance
+-- count greater than 1.
+createTrainingJob_resourceConfig :: Lens.Lens' CreateTrainingJob ResourceConfig
+createTrainingJob_resourceConfig = Lens.lens (\CreateTrainingJob' {resourceConfig} -> resourceConfig) (\s@CreateTrainingJob' {} a -> s {resourceConfig = a} :: CreateTrainingJob)
+
+-- | Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+createTrainingJob_stoppingCondition :: Lens.Lens' CreateTrainingJob StoppingCondition
+createTrainingJob_stoppingCondition = Lens.lens (\CreateTrainingJob' {stoppingCondition} -> stoppingCondition) (\s@CreateTrainingJob' {} a -> s {stoppingCondition = a} :: CreateTrainingJob)
+
+instance Core.AWSRequest CreateTrainingJob where
+  type
+    AWSResponse CreateTrainingJob =
+      CreateTrainingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTrainingJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "TrainingJobArn")
+      )
+
+instance Prelude.Hashable CreateTrainingJob where
+  hashWithSalt _salt CreateTrainingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` checkpointConfig
+      `Prelude.hashWithSalt` debugHookConfig
+      `Prelude.hashWithSalt` debugRuleConfigurations
+      `Prelude.hashWithSalt` enableInterContainerTrafficEncryption
+      `Prelude.hashWithSalt` enableManagedSpotTraining
+      `Prelude.hashWithSalt` enableNetworkIsolation
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` experimentConfig
+      `Prelude.hashWithSalt` hyperParameters
+      `Prelude.hashWithSalt` inputDataConfig
+      `Prelude.hashWithSalt` profilerConfig
+      `Prelude.hashWithSalt` profilerRuleConfigurations
+      `Prelude.hashWithSalt` retryStrategy
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` tensorBoardOutputConfig
+      `Prelude.hashWithSalt` vpcConfig
+      `Prelude.hashWithSalt` trainingJobName
+      `Prelude.hashWithSalt` algorithmSpecification
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` outputDataConfig
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` stoppingCondition
+
+instance Prelude.NFData CreateTrainingJob where
+  rnf CreateTrainingJob' {..} =
+    Prelude.rnf checkpointConfig
+      `Prelude.seq` Prelude.rnf debugHookConfig
+      `Prelude.seq` Prelude.rnf debugRuleConfigurations
+      `Prelude.seq` Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf enableManagedSpotTraining
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf hyperParameters
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf profilerConfig
+      `Prelude.seq` Prelude.rnf profilerRuleConfigurations
+      `Prelude.seq` Prelude.rnf retryStrategy
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf tensorBoardOutputConfig
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf trainingJobName
+      `Prelude.seq` Prelude.rnf algorithmSpecification
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf
+        stoppingCondition
+
+instance Data.ToHeaders CreateTrainingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateTrainingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTrainingJob where
+  toJSON CreateTrainingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CheckpointConfig" Data..=)
+              Prelude.<$> checkpointConfig,
+            ("DebugHookConfig" Data..=)
+              Prelude.<$> debugHookConfig,
+            ("DebugRuleConfigurations" Data..=)
+              Prelude.<$> debugRuleConfigurations,
+            ("EnableInterContainerTrafficEncryption" Data..=)
+              Prelude.<$> enableInterContainerTrafficEncryption,
+            ("EnableManagedSpotTraining" Data..=)
+              Prelude.<$> enableManagedSpotTraining,
+            ("EnableNetworkIsolation" Data..=)
+              Prelude.<$> enableNetworkIsolation,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("ExperimentConfig" Data..=)
+              Prelude.<$> experimentConfig,
+            ("HyperParameters" Data..=)
+              Prelude.<$> hyperParameters,
+            ("InputDataConfig" Data..=)
+              Prelude.<$> inputDataConfig,
+            ("ProfilerConfig" Data..=)
+              Prelude.<$> profilerConfig,
+            ("ProfilerRuleConfigurations" Data..=)
+              Prelude.<$> profilerRuleConfigurations,
+            ("RetryStrategy" Data..=) Prelude.<$> retryStrategy,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("TensorBoardOutputConfig" Data..=)
+              Prelude.<$> tensorBoardOutputConfig,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig,
+            Prelude.Just
+              ("TrainingJobName" Data..= trainingJobName),
+            Prelude.Just
+              ( "AlgorithmSpecification"
+                  Data..= algorithmSpecification
+              ),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just
+              ("OutputDataConfig" Data..= outputDataConfig),
+            Prelude.Just
+              ("ResourceConfig" Data..= resourceConfig),
+            Prelude.Just
+              ("StoppingCondition" Data..= stoppingCondition)
+          ]
+      )
+
+instance Data.ToPath CreateTrainingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateTrainingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTrainingJobResponse' smart constructor.
+data CreateTrainingJobResponse = CreateTrainingJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the training job.
+    trainingJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTrainingJobResponse' 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', 'createTrainingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'trainingJobArn', 'createTrainingJobResponse_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
+newCreateTrainingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'trainingJobArn'
+  Prelude.Text ->
+  CreateTrainingJobResponse
+newCreateTrainingJobResponse
+  pHttpStatus_
+  pTrainingJobArn_ =
+    CreateTrainingJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        trainingJobArn = pTrainingJobArn_
+      }
+
+-- | The response's http status code.
+createTrainingJobResponse_httpStatus :: Lens.Lens' CreateTrainingJobResponse Prelude.Int
+createTrainingJobResponse_httpStatus = Lens.lens (\CreateTrainingJobResponse' {httpStatus} -> httpStatus) (\s@CreateTrainingJobResponse' {} a -> s {httpStatus = a} :: CreateTrainingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the training job.
+createTrainingJobResponse_trainingJobArn :: Lens.Lens' CreateTrainingJobResponse Prelude.Text
+createTrainingJobResponse_trainingJobArn = Lens.lens (\CreateTrainingJobResponse' {trainingJobArn} -> trainingJobArn) (\s@CreateTrainingJobResponse' {} a -> s {trainingJobArn = a} :: CreateTrainingJobResponse)
+
+instance Prelude.NFData CreateTrainingJobResponse where
+  rnf CreateTrainingJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf trainingJobArn
diff --git a/gen/Amazonka/SageMaker/CreateTransformJob.hs b/gen/Amazonka/SageMaker/CreateTransformJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateTransformJob.hs
@@ -0,0 +1,554 @@
+{-# 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.CreateTransformJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a transform job. A transform job uses a trained model to get
+-- inferences on a dataset and saves these results to an Amazon S3 location
+-- that you specify.
+--
+-- To perform batch transformations, you create a transform job and use the
+-- data that you have readily available.
+--
+-- In the request body, you provide the following:
+--
+-- -   @TransformJobName@ - Identifies the transform job. The name must be
+--     unique within an Amazon Web Services Region in an Amazon Web
+--     Services account.
+--
+-- -   @ModelName@ - Identifies the model to use. @ModelName@ must be the
+--     name of an existing Amazon SageMaker model in the same Amazon Web
+--     Services Region and Amazon Web Services account. For information on
+--     creating a model, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html CreateModel>.
+--
+-- -   @TransformInput@ - Describes the dataset to be transformed and the
+--     Amazon S3 location where it is stored.
+--
+-- -   @TransformOutput@ - Identifies the Amazon S3 location where you want
+--     Amazon SageMaker to save the results from the transform job.
+--
+-- -   @TransformResources@ - Identifies the ML compute instances for the
+--     transform job.
+--
+-- For more information about how batch transformation works, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html Batch Transform>.
+module Amazonka.SageMaker.CreateTransformJob
+  ( -- * Creating a Request
+    CreateTransformJob (..),
+    newCreateTransformJob,
+
+    -- * Request Lenses
+    createTransformJob_batchStrategy,
+    createTransformJob_dataCaptureConfig,
+    createTransformJob_dataProcessing,
+    createTransformJob_environment,
+    createTransformJob_experimentConfig,
+    createTransformJob_maxConcurrentTransforms,
+    createTransformJob_maxPayloadInMB,
+    createTransformJob_modelClientConfig,
+    createTransformJob_tags,
+    createTransformJob_transformJobName,
+    createTransformJob_modelName,
+    createTransformJob_transformInput,
+    createTransformJob_transformOutput,
+    createTransformJob_transformResources,
+
+    -- * Destructuring the Response
+    CreateTransformJobResponse (..),
+    newCreateTransformJobResponse,
+
+    -- * Response Lenses
+    createTransformJobResponse_httpStatus,
+    createTransformJobResponse_transformJobArn,
+  )
+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:/ 'newCreateTransformJob' smart constructor.
+data CreateTransformJob = CreateTransformJob'
+  { -- | Specifies the number of records to include in a mini-batch for an HTTP
+    -- inference request. A /record/ // is a single unit of input data that
+    -- inference can be made on. For example, a single line in a CSV file is a
+    -- record.
+    --
+    -- To enable the batch strategy, you must set the @SplitType@ property to
+    -- @Line@, @RecordIO@, or @TFRecord@.
+    --
+    -- To use only one record when making an HTTP invocation request to a
+    -- container, set @BatchStrategy@ to @SingleRecord@ and @SplitType@ to
+    -- @Line@.
+    --
+    -- To fit as many records in a mini-batch as can fit within the
+    -- @MaxPayloadInMB@ limit, set @BatchStrategy@ to @MultiRecord@ and
+    -- @SplitType@ to @Line@.
+    batchStrategy :: Prelude.Maybe BatchStrategy,
+    -- | Configuration to control how SageMaker captures inference data.
+    dataCaptureConfig :: Prelude.Maybe BatchDataCaptureConfig,
+    -- | The data structure used to specify the data to be used for inference in
+    -- a batch transform job and to associate the data that is relevant to the
+    -- prediction results in the output. The input filter provided allows you
+    -- to exclude input data that is not needed for inference in a batch
+    -- transform job. The output filter provided allows you to include input
+    -- data relevant to interpreting the predictions in the output from the
+    -- job. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html Associate Prediction Results with their Corresponding Input Records>.
+    dataProcessing :: Prelude.Maybe DataProcessing,
+    -- | The environment variables to set in the Docker container. We support up
+    -- to 16 key and values entries in the map.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | The maximum number of parallel requests that can be sent to each
+    -- instance in a transform job. If @MaxConcurrentTransforms@ is set to @0@
+    -- or left unset, Amazon SageMaker checks the optional execution-parameters
+    -- to determine the settings for your chosen algorithm. If the
+    -- execution-parameters endpoint is not enabled, the default value is @1@.
+    -- For more information on execution-parameters, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests How Containers Serve Requests>.
+    -- For built-in algorithms, you don\'t need to set a value for
+    -- @MaxConcurrentTransforms@.
+    maxConcurrentTransforms :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum allowed size of the payload, in MB. A /payload/ is the data
+    -- portion of a record (without metadata). The value in @MaxPayloadInMB@
+    -- must be greater than, or equal to, the size of a single record. To
+    -- estimate the size of a record in MB, divide the size of your dataset by
+    -- the number of records. To ensure that the records fit within the maximum
+    -- payload size, we recommend using a slightly larger value. The default
+    -- value is @6@ MB.
+    --
+    -- The value of @MaxPayloadInMB@ cannot be greater than 100 MB. If you
+    -- specify the @MaxConcurrentTransforms@ parameter, the value of
+    -- @(MaxConcurrentTransforms * MaxPayloadInMB)@ also cannot exceed 100 MB.
+    --
+    -- For cases where the payload might be arbitrarily large and is
+    -- transmitted using HTTP chunked encoding, set the value to @0@. This
+    -- feature works only in supported algorithms. Currently, Amazon SageMaker
+    -- built-in algorithms do not support HTTP chunked encoding.
+    maxPayloadInMB :: Prelude.Maybe Prelude.Natural,
+    -- | Configures the timeout and maximum number of retries for processing a
+    -- transform job invocation.
+    modelClientConfig :: Prelude.Maybe ModelClientConfig,
+    -- | (Optional) An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the transform job. The name must be unique within an Amazon
+    -- Web Services Region in an Amazon Web Services account.
+    transformJobName :: Prelude.Text,
+    -- | The name of the model that you want to use for the transform job.
+    -- @ModelName@ must be the name of an existing Amazon SageMaker model
+    -- within an Amazon Web Services Region in an Amazon Web Services account.
+    modelName :: Prelude.Text,
+    -- | Describes the input source and the way the transform job consumes it.
+    transformInput :: TransformInput,
+    -- | Describes the results of the transform job.
+    transformOutput :: TransformOutput,
+    -- | Describes the resources, including ML instance types and ML instance
+    -- count, to use for the transform job.
+    transformResources :: TransformResources
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTransformJob' 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:
+--
+-- 'batchStrategy', 'createTransformJob_batchStrategy' - Specifies the number of records to include in a mini-batch for an HTTP
+-- inference request. A /record/ // is a single unit of input data that
+-- inference can be made on. For example, a single line in a CSV file is a
+-- record.
+--
+-- To enable the batch strategy, you must set the @SplitType@ property to
+-- @Line@, @RecordIO@, or @TFRecord@.
+--
+-- To use only one record when making an HTTP invocation request to a
+-- container, set @BatchStrategy@ to @SingleRecord@ and @SplitType@ to
+-- @Line@.
+--
+-- To fit as many records in a mini-batch as can fit within the
+-- @MaxPayloadInMB@ limit, set @BatchStrategy@ to @MultiRecord@ and
+-- @SplitType@ to @Line@.
+--
+-- 'dataCaptureConfig', 'createTransformJob_dataCaptureConfig' - Configuration to control how SageMaker captures inference data.
+--
+-- 'dataProcessing', 'createTransformJob_dataProcessing' - The data structure used to specify the data to be used for inference in
+-- a batch transform job and to associate the data that is relevant to the
+-- prediction results in the output. The input filter provided allows you
+-- to exclude input data that is not needed for inference in a batch
+-- transform job. The output filter provided allows you to include input
+-- data relevant to interpreting the predictions in the output from the
+-- job. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html Associate Prediction Results with their Corresponding Input Records>.
+--
+-- 'environment', 'createTransformJob_environment' - The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+--
+-- 'experimentConfig', 'createTransformJob_experimentConfig' - Undocumented member.
+--
+-- 'maxConcurrentTransforms', 'createTransformJob_maxConcurrentTransforms' - The maximum number of parallel requests that can be sent to each
+-- instance in a transform job. If @MaxConcurrentTransforms@ is set to @0@
+-- or left unset, Amazon SageMaker checks the optional execution-parameters
+-- to determine the settings for your chosen algorithm. If the
+-- execution-parameters endpoint is not enabled, the default value is @1@.
+-- For more information on execution-parameters, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests How Containers Serve Requests>.
+-- For built-in algorithms, you don\'t need to set a value for
+-- @MaxConcurrentTransforms@.
+--
+-- 'maxPayloadInMB', 'createTransformJob_maxPayloadInMB' - The maximum allowed size of the payload, in MB. A /payload/ is the data
+-- portion of a record (without metadata). The value in @MaxPayloadInMB@
+-- must be greater than, or equal to, the size of a single record. To
+-- estimate the size of a record in MB, divide the size of your dataset by
+-- the number of records. To ensure that the records fit within the maximum
+-- payload size, we recommend using a slightly larger value. The default
+-- value is @6@ MB.
+--
+-- The value of @MaxPayloadInMB@ cannot be greater than 100 MB. If you
+-- specify the @MaxConcurrentTransforms@ parameter, the value of
+-- @(MaxConcurrentTransforms * MaxPayloadInMB)@ also cannot exceed 100 MB.
+--
+-- For cases where the payload might be arbitrarily large and is
+-- transmitted using HTTP chunked encoding, set the value to @0@. This
+-- feature works only in supported algorithms. Currently, Amazon SageMaker
+-- built-in algorithms do not support HTTP chunked encoding.
+--
+-- 'modelClientConfig', 'createTransformJob_modelClientConfig' - Configures the timeout and maximum number of retries for processing a
+-- transform job invocation.
+--
+-- 'tags', 'createTransformJob_tags' - (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'transformJobName', 'createTransformJob_transformJobName' - The name of the transform job. The name must be unique within an Amazon
+-- Web Services Region in an Amazon Web Services account.
+--
+-- 'modelName', 'createTransformJob_modelName' - The name of the model that you want to use for the transform job.
+-- @ModelName@ must be the name of an existing Amazon SageMaker model
+-- within an Amazon Web Services Region in an Amazon Web Services account.
+--
+-- 'transformInput', 'createTransformJob_transformInput' - Describes the input source and the way the transform job consumes it.
+--
+-- 'transformOutput', 'createTransformJob_transformOutput' - Describes the results of the transform job.
+--
+-- 'transformResources', 'createTransformJob_transformResources' - Describes the resources, including ML instance types and ML instance
+-- count, to use for the transform job.
+newCreateTransformJob ::
+  -- | 'transformJobName'
+  Prelude.Text ->
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'transformInput'
+  TransformInput ->
+  -- | 'transformOutput'
+  TransformOutput ->
+  -- | 'transformResources'
+  TransformResources ->
+  CreateTransformJob
+newCreateTransformJob
+  pTransformJobName_
+  pModelName_
+  pTransformInput_
+  pTransformOutput_
+  pTransformResources_ =
+    CreateTransformJob'
+      { batchStrategy =
+          Prelude.Nothing,
+        dataCaptureConfig = Prelude.Nothing,
+        dataProcessing = Prelude.Nothing,
+        environment = Prelude.Nothing,
+        experimentConfig = Prelude.Nothing,
+        maxConcurrentTransforms = Prelude.Nothing,
+        maxPayloadInMB = Prelude.Nothing,
+        modelClientConfig = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        transformJobName = pTransformJobName_,
+        modelName = pModelName_,
+        transformInput = pTransformInput_,
+        transformOutput = pTransformOutput_,
+        transformResources = pTransformResources_
+      }
+
+-- | Specifies the number of records to include in a mini-batch for an HTTP
+-- inference request. A /record/ // is a single unit of input data that
+-- inference can be made on. For example, a single line in a CSV file is a
+-- record.
+--
+-- To enable the batch strategy, you must set the @SplitType@ property to
+-- @Line@, @RecordIO@, or @TFRecord@.
+--
+-- To use only one record when making an HTTP invocation request to a
+-- container, set @BatchStrategy@ to @SingleRecord@ and @SplitType@ to
+-- @Line@.
+--
+-- To fit as many records in a mini-batch as can fit within the
+-- @MaxPayloadInMB@ limit, set @BatchStrategy@ to @MultiRecord@ and
+-- @SplitType@ to @Line@.
+createTransformJob_batchStrategy :: Lens.Lens' CreateTransformJob (Prelude.Maybe BatchStrategy)
+createTransformJob_batchStrategy = Lens.lens (\CreateTransformJob' {batchStrategy} -> batchStrategy) (\s@CreateTransformJob' {} a -> s {batchStrategy = a} :: CreateTransformJob)
+
+-- | Configuration to control how SageMaker captures inference data.
+createTransformJob_dataCaptureConfig :: Lens.Lens' CreateTransformJob (Prelude.Maybe BatchDataCaptureConfig)
+createTransformJob_dataCaptureConfig = Lens.lens (\CreateTransformJob' {dataCaptureConfig} -> dataCaptureConfig) (\s@CreateTransformJob' {} a -> s {dataCaptureConfig = a} :: CreateTransformJob)
+
+-- | The data structure used to specify the data to be used for inference in
+-- a batch transform job and to associate the data that is relevant to the
+-- prediction results in the output. The input filter provided allows you
+-- to exclude input data that is not needed for inference in a batch
+-- transform job. The output filter provided allows you to include input
+-- data relevant to interpreting the predictions in the output from the
+-- job. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html Associate Prediction Results with their Corresponding Input Records>.
+createTransformJob_dataProcessing :: Lens.Lens' CreateTransformJob (Prelude.Maybe DataProcessing)
+createTransformJob_dataProcessing = Lens.lens (\CreateTransformJob' {dataProcessing} -> dataProcessing) (\s@CreateTransformJob' {} a -> s {dataProcessing = a} :: CreateTransformJob)
+
+-- | The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+createTransformJob_environment :: Lens.Lens' CreateTransformJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createTransformJob_environment = Lens.lens (\CreateTransformJob' {environment} -> environment) (\s@CreateTransformJob' {} a -> s {environment = a} :: CreateTransformJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createTransformJob_experimentConfig :: Lens.Lens' CreateTransformJob (Prelude.Maybe ExperimentConfig)
+createTransformJob_experimentConfig = Lens.lens (\CreateTransformJob' {experimentConfig} -> experimentConfig) (\s@CreateTransformJob' {} a -> s {experimentConfig = a} :: CreateTransformJob)
+
+-- | The maximum number of parallel requests that can be sent to each
+-- instance in a transform job. If @MaxConcurrentTransforms@ is set to @0@
+-- or left unset, Amazon SageMaker checks the optional execution-parameters
+-- to determine the settings for your chosen algorithm. If the
+-- execution-parameters endpoint is not enabled, the default value is @1@.
+-- For more information on execution-parameters, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests How Containers Serve Requests>.
+-- For built-in algorithms, you don\'t need to set a value for
+-- @MaxConcurrentTransforms@.
+createTransformJob_maxConcurrentTransforms :: Lens.Lens' CreateTransformJob (Prelude.Maybe Prelude.Natural)
+createTransformJob_maxConcurrentTransforms = Lens.lens (\CreateTransformJob' {maxConcurrentTransforms} -> maxConcurrentTransforms) (\s@CreateTransformJob' {} a -> s {maxConcurrentTransforms = a} :: CreateTransformJob)
+
+-- | The maximum allowed size of the payload, in MB. A /payload/ is the data
+-- portion of a record (without metadata). The value in @MaxPayloadInMB@
+-- must be greater than, or equal to, the size of a single record. To
+-- estimate the size of a record in MB, divide the size of your dataset by
+-- the number of records. To ensure that the records fit within the maximum
+-- payload size, we recommend using a slightly larger value. The default
+-- value is @6@ MB.
+--
+-- The value of @MaxPayloadInMB@ cannot be greater than 100 MB. If you
+-- specify the @MaxConcurrentTransforms@ parameter, the value of
+-- @(MaxConcurrentTransforms * MaxPayloadInMB)@ also cannot exceed 100 MB.
+--
+-- For cases where the payload might be arbitrarily large and is
+-- transmitted using HTTP chunked encoding, set the value to @0@. This
+-- feature works only in supported algorithms. Currently, Amazon SageMaker
+-- built-in algorithms do not support HTTP chunked encoding.
+createTransformJob_maxPayloadInMB :: Lens.Lens' CreateTransformJob (Prelude.Maybe Prelude.Natural)
+createTransformJob_maxPayloadInMB = Lens.lens (\CreateTransformJob' {maxPayloadInMB} -> maxPayloadInMB) (\s@CreateTransformJob' {} a -> s {maxPayloadInMB = a} :: CreateTransformJob)
+
+-- | Configures the timeout and maximum number of retries for processing a
+-- transform job invocation.
+createTransformJob_modelClientConfig :: Lens.Lens' CreateTransformJob (Prelude.Maybe ModelClientConfig)
+createTransformJob_modelClientConfig = Lens.lens (\CreateTransformJob' {modelClientConfig} -> modelClientConfig) (\s@CreateTransformJob' {} a -> s {modelClientConfig = a} :: CreateTransformJob)
+
+-- | (Optional) An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createTransformJob_tags :: Lens.Lens' CreateTransformJob (Prelude.Maybe [Tag])
+createTransformJob_tags = Lens.lens (\CreateTransformJob' {tags} -> tags) (\s@CreateTransformJob' {} a -> s {tags = a} :: CreateTransformJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the transform job. The name must be unique within an Amazon
+-- Web Services Region in an Amazon Web Services account.
+createTransformJob_transformJobName :: Lens.Lens' CreateTransformJob Prelude.Text
+createTransformJob_transformJobName = Lens.lens (\CreateTransformJob' {transformJobName} -> transformJobName) (\s@CreateTransformJob' {} a -> s {transformJobName = a} :: CreateTransformJob)
+
+-- | The name of the model that you want to use for the transform job.
+-- @ModelName@ must be the name of an existing Amazon SageMaker model
+-- within an Amazon Web Services Region in an Amazon Web Services account.
+createTransformJob_modelName :: Lens.Lens' CreateTransformJob Prelude.Text
+createTransformJob_modelName = Lens.lens (\CreateTransformJob' {modelName} -> modelName) (\s@CreateTransformJob' {} a -> s {modelName = a} :: CreateTransformJob)
+
+-- | Describes the input source and the way the transform job consumes it.
+createTransformJob_transformInput :: Lens.Lens' CreateTransformJob TransformInput
+createTransformJob_transformInput = Lens.lens (\CreateTransformJob' {transformInput} -> transformInput) (\s@CreateTransformJob' {} a -> s {transformInput = a} :: CreateTransformJob)
+
+-- | Describes the results of the transform job.
+createTransformJob_transformOutput :: Lens.Lens' CreateTransformJob TransformOutput
+createTransformJob_transformOutput = Lens.lens (\CreateTransformJob' {transformOutput} -> transformOutput) (\s@CreateTransformJob' {} a -> s {transformOutput = a} :: CreateTransformJob)
+
+-- | Describes the resources, including ML instance types and ML instance
+-- count, to use for the transform job.
+createTransformJob_transformResources :: Lens.Lens' CreateTransformJob TransformResources
+createTransformJob_transformResources = Lens.lens (\CreateTransformJob' {transformResources} -> transformResources) (\s@CreateTransformJob' {} a -> s {transformResources = a} :: CreateTransformJob)
+
+instance Core.AWSRequest CreateTransformJob where
+  type
+    AWSResponse CreateTransformJob =
+      CreateTransformJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTransformJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "TransformJobArn")
+      )
+
+instance Prelude.Hashable CreateTransformJob where
+  hashWithSalt _salt CreateTransformJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchStrategy
+      `Prelude.hashWithSalt` dataCaptureConfig
+      `Prelude.hashWithSalt` dataProcessing
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` experimentConfig
+      `Prelude.hashWithSalt` maxConcurrentTransforms
+      `Prelude.hashWithSalt` maxPayloadInMB
+      `Prelude.hashWithSalt` modelClientConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` transformJobName
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` transformInput
+      `Prelude.hashWithSalt` transformOutput
+      `Prelude.hashWithSalt` transformResources
+
+instance Prelude.NFData CreateTransformJob where
+  rnf CreateTransformJob' {..} =
+    Prelude.rnf batchStrategy
+      `Prelude.seq` Prelude.rnf dataCaptureConfig
+      `Prelude.seq` Prelude.rnf dataProcessing
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf maxConcurrentTransforms
+      `Prelude.seq` Prelude.rnf maxPayloadInMB
+      `Prelude.seq` Prelude.rnf modelClientConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf transformJobName
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf transformInput
+      `Prelude.seq` Prelude.rnf transformOutput
+      `Prelude.seq` Prelude.rnf transformResources
+
+instance Data.ToHeaders CreateTransformJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateTransformJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTransformJob where
+  toJSON CreateTransformJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchStrategy" Data..=) Prelude.<$> batchStrategy,
+            ("DataCaptureConfig" Data..=)
+              Prelude.<$> dataCaptureConfig,
+            ("DataProcessing" Data..=)
+              Prelude.<$> dataProcessing,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("ExperimentConfig" Data..=)
+              Prelude.<$> experimentConfig,
+            ("MaxConcurrentTransforms" Data..=)
+              Prelude.<$> maxConcurrentTransforms,
+            ("MaxPayloadInMB" Data..=)
+              Prelude.<$> maxPayloadInMB,
+            ("ModelClientConfig" Data..=)
+              Prelude.<$> modelClientConfig,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("TransformJobName" Data..= transformJobName),
+            Prelude.Just ("ModelName" Data..= modelName),
+            Prelude.Just
+              ("TransformInput" Data..= transformInput),
+            Prelude.Just
+              ("TransformOutput" Data..= transformOutput),
+            Prelude.Just
+              ("TransformResources" Data..= transformResources)
+          ]
+      )
+
+instance Data.ToPath CreateTransformJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateTransformJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTransformJobResponse' smart constructor.
+data CreateTransformJobResponse = CreateTransformJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the transform job.
+    transformJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTransformJobResponse' 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', 'createTransformJobResponse_httpStatus' - The response's http status code.
+--
+-- 'transformJobArn', 'createTransformJobResponse_transformJobArn' - The Amazon Resource Name (ARN) of the transform job.
+newCreateTransformJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'transformJobArn'
+  Prelude.Text ->
+  CreateTransformJobResponse
+newCreateTransformJobResponse
+  pHttpStatus_
+  pTransformJobArn_ =
+    CreateTransformJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        transformJobArn = pTransformJobArn_
+      }
+
+-- | The response's http status code.
+createTransformJobResponse_httpStatus :: Lens.Lens' CreateTransformJobResponse Prelude.Int
+createTransformJobResponse_httpStatus = Lens.lens (\CreateTransformJobResponse' {httpStatus} -> httpStatus) (\s@CreateTransformJobResponse' {} a -> s {httpStatus = a} :: CreateTransformJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the transform job.
+createTransformJobResponse_transformJobArn :: Lens.Lens' CreateTransformJobResponse Prelude.Text
+createTransformJobResponse_transformJobArn = Lens.lens (\CreateTransformJobResponse' {transformJobArn} -> transformJobArn) (\s@CreateTransformJobResponse' {} a -> s {transformJobArn = a} :: CreateTransformJobResponse)
+
+instance Prelude.NFData CreateTransformJobResponse where
+  rnf CreateTransformJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf transformJobArn
diff --git a/gen/Amazonka/SageMaker/CreateTrial.hs b/gen/Amazonka/SageMaker/CreateTrial.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateTrial.hs
@@ -0,0 +1,246 @@
+{-# 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.CreateTrial
+-- 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 an SageMaker /trial/. A trial is a set of steps called /trial
+-- components/ that produce a machine learning model. A trial is part of a
+-- single SageMaker /experiment/.
+--
+-- When you use SageMaker Studio or the SageMaker Python SDK, all
+-- experiments, trials, and trial components are automatically tracked,
+-- logged, and indexed. When you use the Amazon Web Services SDK for Python
+-- (Boto), you must use the logging APIs provided by the SDK.
+--
+-- You can add tags to a trial and then use the Search API to search for
+-- the tags.
+--
+-- To get a list of all your trials, call the ListTrials API. To view a
+-- trial\'s properties, call the DescribeTrial API. To create a trial
+-- component, call the CreateTrialComponent API.
+module Amazonka.SageMaker.CreateTrial
+  ( -- * Creating a Request
+    CreateTrial (..),
+    newCreateTrial,
+
+    -- * Request Lenses
+    createTrial_displayName,
+    createTrial_metadataProperties,
+    createTrial_tags,
+    createTrial_trialName,
+    createTrial_experimentName,
+
+    -- * Destructuring the Response
+    CreateTrialResponse (..),
+    newCreateTrialResponse,
+
+    -- * Response Lenses
+    createTrialResponse_trialArn,
+    createTrialResponse_httpStatus,
+  )
+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:/ 'newCreateTrial' smart constructor.
+data CreateTrial = CreateTrial'
+  { -- | The name of the trial as displayed. The name doesn\'t need to be unique.
+    -- If @DisplayName@ isn\'t specified, @TrialName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | A list of tags to associate with the trial. You can use Search API to
+    -- search on the tags.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the trial. The name must be unique in your Amazon Web
+    -- Services account and is not case-sensitive.
+    trialName :: Prelude.Text,
+    -- | The name of the experiment to associate the trial with.
+    experimentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTrial' 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:
+--
+-- 'displayName', 'createTrial_displayName' - The name of the trial as displayed. The name doesn\'t need to be unique.
+-- If @DisplayName@ isn\'t specified, @TrialName@ is displayed.
+--
+-- 'metadataProperties', 'createTrial_metadataProperties' - Undocumented member.
+--
+-- 'tags', 'createTrial_tags' - A list of tags to associate with the trial. You can use Search API to
+-- search on the tags.
+--
+-- 'trialName', 'createTrial_trialName' - The name of the trial. The name must be unique in your Amazon Web
+-- Services account and is not case-sensitive.
+--
+-- 'experimentName', 'createTrial_experimentName' - The name of the experiment to associate the trial with.
+newCreateTrial ::
+  -- | 'trialName'
+  Prelude.Text ->
+  -- | 'experimentName'
+  Prelude.Text ->
+  CreateTrial
+newCreateTrial pTrialName_ pExperimentName_ =
+  CreateTrial'
+    { displayName = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      trialName = pTrialName_,
+      experimentName = pExperimentName_
+    }
+
+-- | The name of the trial as displayed. The name doesn\'t need to be unique.
+-- If @DisplayName@ isn\'t specified, @TrialName@ is displayed.
+createTrial_displayName :: Lens.Lens' CreateTrial (Prelude.Maybe Prelude.Text)
+createTrial_displayName = Lens.lens (\CreateTrial' {displayName} -> displayName) (\s@CreateTrial' {} a -> s {displayName = a} :: CreateTrial)
+
+-- | Undocumented member.
+createTrial_metadataProperties :: Lens.Lens' CreateTrial (Prelude.Maybe MetadataProperties)
+createTrial_metadataProperties = Lens.lens (\CreateTrial' {metadataProperties} -> metadataProperties) (\s@CreateTrial' {} a -> s {metadataProperties = a} :: CreateTrial)
+
+-- | A list of tags to associate with the trial. You can use Search API to
+-- search on the tags.
+createTrial_tags :: Lens.Lens' CreateTrial (Prelude.Maybe [Tag])
+createTrial_tags = Lens.lens (\CreateTrial' {tags} -> tags) (\s@CreateTrial' {} a -> s {tags = a} :: CreateTrial) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the trial. The name must be unique in your Amazon Web
+-- Services account and is not case-sensitive.
+createTrial_trialName :: Lens.Lens' CreateTrial Prelude.Text
+createTrial_trialName = Lens.lens (\CreateTrial' {trialName} -> trialName) (\s@CreateTrial' {} a -> s {trialName = a} :: CreateTrial)
+
+-- | The name of the experiment to associate the trial with.
+createTrial_experimentName :: Lens.Lens' CreateTrial Prelude.Text
+createTrial_experimentName = Lens.lens (\CreateTrial' {experimentName} -> experimentName) (\s@CreateTrial' {} a -> s {experimentName = a} :: CreateTrial)
+
+instance Core.AWSRequest CreateTrial where
+  type AWSResponse CreateTrial = CreateTrialResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTrialResponse'
+            Prelude.<$> (x Data..?> "TrialArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTrial where
+  hashWithSalt _salt CreateTrial' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trialName
+      `Prelude.hashWithSalt` experimentName
+
+instance Prelude.NFData CreateTrial where
+  rnf CreateTrial' {..} =
+    Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trialName
+      `Prelude.seq` Prelude.rnf experimentName
+
+instance Data.ToHeaders CreateTrial where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateTrial" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTrial where
+  toJSON CreateTrial' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayName" Data..=) Prelude.<$> displayName,
+            ("MetadataProperties" Data..=)
+              Prelude.<$> metadataProperties,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("TrialName" Data..= trialName),
+            Prelude.Just
+              ("ExperimentName" Data..= experimentName)
+          ]
+      )
+
+instance Data.ToPath CreateTrial where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateTrial where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTrialResponse' smart constructor.
+data CreateTrialResponse = CreateTrialResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTrialResponse' 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:
+--
+-- 'trialArn', 'createTrialResponse_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'httpStatus', 'createTrialResponse_httpStatus' - The response's http status code.
+newCreateTrialResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTrialResponse
+newCreateTrialResponse pHttpStatus_ =
+  CreateTrialResponse'
+    { trialArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial.
+createTrialResponse_trialArn :: Lens.Lens' CreateTrialResponse (Prelude.Maybe Prelude.Text)
+createTrialResponse_trialArn = Lens.lens (\CreateTrialResponse' {trialArn} -> trialArn) (\s@CreateTrialResponse' {} a -> s {trialArn = a} :: CreateTrialResponse)
+
+-- | The response's http status code.
+createTrialResponse_httpStatus :: Lens.Lens' CreateTrialResponse Prelude.Int
+createTrialResponse_httpStatus = Lens.lens (\CreateTrialResponse' {httpStatus} -> httpStatus) (\s@CreateTrialResponse' {} a -> s {httpStatus = a} :: CreateTrialResponse)
+
+instance Prelude.NFData CreateTrialResponse where
+  rnf CreateTrialResponse' {..} =
+    Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateTrialComponent.hs b/gen/Amazonka/SageMaker/CreateTrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateTrialComponent.hs
@@ -0,0 +1,343 @@
+{-# 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.CreateTrialComponent
+-- 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 /trial component/, which is a stage of a machine learning
+-- /trial/. A trial is composed of one or more trial components. A trial
+-- component can be used in multiple trials.
+--
+-- Trial components include pre-processing jobs, training jobs, and batch
+-- transform jobs.
+--
+-- When you use SageMaker Studio or the SageMaker Python SDK, all
+-- experiments, trials, and trial components are automatically tracked,
+-- logged, and indexed. When you use the Amazon Web Services SDK for Python
+-- (Boto), you must use the logging APIs provided by the SDK.
+--
+-- You can add tags to a trial component and then use the Search API to
+-- search for the tags.
+module Amazonka.SageMaker.CreateTrialComponent
+  ( -- * Creating a Request
+    CreateTrialComponent (..),
+    newCreateTrialComponent,
+
+    -- * Request Lenses
+    createTrialComponent_displayName,
+    createTrialComponent_endTime,
+    createTrialComponent_inputArtifacts,
+    createTrialComponent_metadataProperties,
+    createTrialComponent_outputArtifacts,
+    createTrialComponent_parameters,
+    createTrialComponent_startTime,
+    createTrialComponent_status,
+    createTrialComponent_tags,
+    createTrialComponent_trialComponentName,
+
+    -- * Destructuring the Response
+    CreateTrialComponentResponse (..),
+    newCreateTrialComponentResponse,
+
+    -- * Response Lenses
+    createTrialComponentResponse_trialComponentArn,
+    createTrialComponentResponse_httpStatus,
+  )
+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:/ 'newCreateTrialComponent' smart constructor.
+data CreateTrialComponent = CreateTrialComponent'
+  { -- | The name of the component as displayed. The name doesn\'t need to be
+    -- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
+    -- displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When the component ended.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The input artifacts for the component. Examples of input artifacts are
+    -- datasets, algorithms, hyperparameters, source code, and instance types.
+    inputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | The output artifacts for the component. Examples of output artifacts are
+    -- metrics, snapshots, logs, and images.
+    outputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    -- | The hyperparameters for the component.
+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue),
+    -- | When the component started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The status of the component. States include:
+    --
+    -- -   InProgress
+    --
+    -- -   Completed
+    --
+    -- -   Failed
+    status :: Prelude.Maybe TrialComponentStatus,
+    -- | A list of tags to associate with the component. You can use Search API
+    -- to search on the tags.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the component. The name must be unique in your Amazon Web
+    -- Services account and is not case-sensitive.
+    trialComponentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTrialComponent' 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:
+--
+-- 'displayName', 'createTrialComponent_displayName' - The name of the component as displayed. The name doesn\'t need to be
+-- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
+-- displayed.
+--
+-- 'endTime', 'createTrialComponent_endTime' - When the component ended.
+--
+-- 'inputArtifacts', 'createTrialComponent_inputArtifacts' - The input artifacts for the component. Examples of input artifacts are
+-- datasets, algorithms, hyperparameters, source code, and instance types.
+--
+-- 'metadataProperties', 'createTrialComponent_metadataProperties' - Undocumented member.
+--
+-- 'outputArtifacts', 'createTrialComponent_outputArtifacts' - The output artifacts for the component. Examples of output artifacts are
+-- metrics, snapshots, logs, and images.
+--
+-- 'parameters', 'createTrialComponent_parameters' - The hyperparameters for the component.
+--
+-- 'startTime', 'createTrialComponent_startTime' - When the component started.
+--
+-- 'status', 'createTrialComponent_status' - The status of the component. States include:
+--
+-- -   InProgress
+--
+-- -   Completed
+--
+-- -   Failed
+--
+-- 'tags', 'createTrialComponent_tags' - A list of tags to associate with the component. You can use Search API
+-- to search on the tags.
+--
+-- 'trialComponentName', 'createTrialComponent_trialComponentName' - The name of the component. The name must be unique in your Amazon Web
+-- Services account and is not case-sensitive.
+newCreateTrialComponent ::
+  -- | 'trialComponentName'
+  Prelude.Text ->
+  CreateTrialComponent
+newCreateTrialComponent pTrialComponentName_ =
+  CreateTrialComponent'
+    { displayName =
+        Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      inputArtifacts = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      outputArtifacts = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      trialComponentName = pTrialComponentName_
+    }
+
+-- | The name of the component as displayed. The name doesn\'t need to be
+-- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
+-- displayed.
+createTrialComponent_displayName :: Lens.Lens' CreateTrialComponent (Prelude.Maybe Prelude.Text)
+createTrialComponent_displayName = Lens.lens (\CreateTrialComponent' {displayName} -> displayName) (\s@CreateTrialComponent' {} a -> s {displayName = a} :: CreateTrialComponent)
+
+-- | When the component ended.
+createTrialComponent_endTime :: Lens.Lens' CreateTrialComponent (Prelude.Maybe Prelude.UTCTime)
+createTrialComponent_endTime = Lens.lens (\CreateTrialComponent' {endTime} -> endTime) (\s@CreateTrialComponent' {} a -> s {endTime = a} :: CreateTrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | The input artifacts for the component. Examples of input artifacts are
+-- datasets, algorithms, hyperparameters, source code, and instance types.
+createTrialComponent_inputArtifacts :: Lens.Lens' CreateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+createTrialComponent_inputArtifacts = Lens.lens (\CreateTrialComponent' {inputArtifacts} -> inputArtifacts) (\s@CreateTrialComponent' {} a -> s {inputArtifacts = a} :: CreateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createTrialComponent_metadataProperties :: Lens.Lens' CreateTrialComponent (Prelude.Maybe MetadataProperties)
+createTrialComponent_metadataProperties = Lens.lens (\CreateTrialComponent' {metadataProperties} -> metadataProperties) (\s@CreateTrialComponent' {} a -> s {metadataProperties = a} :: CreateTrialComponent)
+
+-- | The output artifacts for the component. Examples of output artifacts are
+-- metrics, snapshots, logs, and images.
+createTrialComponent_outputArtifacts :: Lens.Lens' CreateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+createTrialComponent_outputArtifacts = Lens.lens (\CreateTrialComponent' {outputArtifacts} -> outputArtifacts) (\s@CreateTrialComponent' {} a -> s {outputArtifacts = a} :: CreateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hyperparameters for the component.
+createTrialComponent_parameters :: Lens.Lens' CreateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue))
+createTrialComponent_parameters = Lens.lens (\CreateTrialComponent' {parameters} -> parameters) (\s@CreateTrialComponent' {} a -> s {parameters = a} :: CreateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | When the component started.
+createTrialComponent_startTime :: Lens.Lens' CreateTrialComponent (Prelude.Maybe Prelude.UTCTime)
+createTrialComponent_startTime = Lens.lens (\CreateTrialComponent' {startTime} -> startTime) (\s@CreateTrialComponent' {} a -> s {startTime = a} :: CreateTrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the component. States include:
+--
+-- -   InProgress
+--
+-- -   Completed
+--
+-- -   Failed
+createTrialComponent_status :: Lens.Lens' CreateTrialComponent (Prelude.Maybe TrialComponentStatus)
+createTrialComponent_status = Lens.lens (\CreateTrialComponent' {status} -> status) (\s@CreateTrialComponent' {} a -> s {status = a} :: CreateTrialComponent)
+
+-- | A list of tags to associate with the component. You can use Search API
+-- to search on the tags.
+createTrialComponent_tags :: Lens.Lens' CreateTrialComponent (Prelude.Maybe [Tag])
+createTrialComponent_tags = Lens.lens (\CreateTrialComponent' {tags} -> tags) (\s@CreateTrialComponent' {} a -> s {tags = a} :: CreateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the component. The name must be unique in your Amazon Web
+-- Services account and is not case-sensitive.
+createTrialComponent_trialComponentName :: Lens.Lens' CreateTrialComponent Prelude.Text
+createTrialComponent_trialComponentName = Lens.lens (\CreateTrialComponent' {trialComponentName} -> trialComponentName) (\s@CreateTrialComponent' {} a -> s {trialComponentName = a} :: CreateTrialComponent)
+
+instance Core.AWSRequest CreateTrialComponent where
+  type
+    AWSResponse CreateTrialComponent =
+      CreateTrialComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTrialComponentResponse'
+            Prelude.<$> (x Data..?> "TrialComponentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTrialComponent where
+  hashWithSalt _salt CreateTrialComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` inputArtifacts
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` outputArtifacts
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trialComponentName
+
+instance Prelude.NFData CreateTrialComponent where
+  rnf CreateTrialComponent' {..} =
+    Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf inputArtifacts
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf outputArtifacts
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trialComponentName
+
+instance Data.ToHeaders CreateTrialComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateTrialComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTrialComponent where
+  toJSON CreateTrialComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayName" Data..=) Prelude.<$> displayName,
+            ("EndTime" Data..=) Prelude.<$> endTime,
+            ("InputArtifacts" Data..=)
+              Prelude.<$> inputArtifacts,
+            ("MetadataProperties" Data..=)
+              Prelude.<$> metadataProperties,
+            ("OutputArtifacts" Data..=)
+              Prelude.<$> outputArtifacts,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("StartTime" Data..=) Prelude.<$> startTime,
+            ("Status" Data..=) Prelude.<$> status,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("TrialComponentName" Data..= trialComponentName)
+          ]
+      )
+
+instance Data.ToPath CreateTrialComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateTrialComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTrialComponentResponse' smart constructor.
+data CreateTrialComponentResponse = CreateTrialComponentResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTrialComponentResponse' 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:
+--
+-- 'trialComponentArn', 'createTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'httpStatus', 'createTrialComponentResponse_httpStatus' - The response's http status code.
+newCreateTrialComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTrialComponentResponse
+newCreateTrialComponentResponse pHttpStatus_ =
+  CreateTrialComponentResponse'
+    { trialComponentArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+createTrialComponentResponse_trialComponentArn :: Lens.Lens' CreateTrialComponentResponse (Prelude.Maybe Prelude.Text)
+createTrialComponentResponse_trialComponentArn = Lens.lens (\CreateTrialComponentResponse' {trialComponentArn} -> trialComponentArn) (\s@CreateTrialComponentResponse' {} a -> s {trialComponentArn = a} :: CreateTrialComponentResponse)
+
+-- | The response's http status code.
+createTrialComponentResponse_httpStatus :: Lens.Lens' CreateTrialComponentResponse Prelude.Int
+createTrialComponentResponse_httpStatus = Lens.lens (\CreateTrialComponentResponse' {httpStatus} -> httpStatus) (\s@CreateTrialComponentResponse' {} a -> s {httpStatus = a} :: CreateTrialComponentResponse)
+
+instance Prelude.NFData CreateTrialComponentResponse where
+  rnf CreateTrialComponentResponse' {..} =
+    Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateUserProfile.hs b/gen/Amazonka/SageMaker/CreateUserProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateUserProfile.hs
@@ -0,0 +1,288 @@
+{-# 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.CreateUserProfile
+-- 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 user profile. A user profile represents a single user within a
+-- domain, and is the main way to reference a \"person\" for the purposes
+-- of sharing, reporting, and other user-oriented features. This entity is
+-- created when a user onboards to Amazon SageMaker Studio. If an
+-- administrator invites a person by email or imports them from IAM
+-- Identity Center, a user profile is automatically created. A user profile
+-- is the primary holder of settings for an individual user and has a
+-- reference to the user\'s private Amazon Elastic File System (EFS) home
+-- directory.
+module Amazonka.SageMaker.CreateUserProfile
+  ( -- * Creating a Request
+    CreateUserProfile (..),
+    newCreateUserProfile,
+
+    -- * Request Lenses
+    createUserProfile_singleSignOnUserIdentifier,
+    createUserProfile_singleSignOnUserValue,
+    createUserProfile_tags,
+    createUserProfile_userSettings,
+    createUserProfile_domainId,
+    createUserProfile_userProfileName,
+
+    -- * Destructuring the Response
+    CreateUserProfileResponse (..),
+    newCreateUserProfileResponse,
+
+    -- * Response Lenses
+    createUserProfileResponse_userProfileArn,
+    createUserProfileResponse_httpStatus,
+  )
+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:/ 'newCreateUserProfile' smart constructor.
+data CreateUserProfile = CreateUserProfile'
+  { -- | A specifier for the type of value specified in SingleSignOnUserValue.
+    -- Currently, the only supported value is \"UserName\". If the Domain\'s
+    -- AuthMode is IAM Identity Center, this field is required. If the
+    -- Domain\'s AuthMode is not IAM Identity Center, this field cannot be
+    -- specified.
+    singleSignOnUserIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The username of the associated Amazon Web Services Single Sign-On User
+    -- for this UserProfile. If the Domain\'s AuthMode is IAM Identity Center,
+    -- this field is required, and must match a valid username of a user in
+    -- your directory. If the Domain\'s AuthMode is not IAM Identity Center,
+    -- this field cannot be specified.
+    singleSignOnUserValue :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and an optional value. Tag keys must be
+    -- unique per resource.
+    --
+    -- Tags that you specify for the User Profile are also added to all Apps
+    -- that the User Profile launches.
+    tags :: Prelude.Maybe [Tag],
+    -- | A collection of settings.
+    userSettings :: Prelude.Maybe UserSettings,
+    -- | The ID of the associated Domain.
+    domainId :: Prelude.Text,
+    -- | A name for the UserProfile. This value is not case sensitive.
+    userProfileName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateUserProfile' 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:
+--
+-- 'singleSignOnUserIdentifier', 'createUserProfile_singleSignOnUserIdentifier' - A specifier for the type of value specified in SingleSignOnUserValue.
+-- Currently, the only supported value is \"UserName\". If the Domain\'s
+-- AuthMode is IAM Identity Center, this field is required. If the
+-- Domain\'s AuthMode is not IAM Identity Center, this field cannot be
+-- specified.
+--
+-- 'singleSignOnUserValue', 'createUserProfile_singleSignOnUserValue' - The username of the associated Amazon Web Services Single Sign-On User
+-- for this UserProfile. If the Domain\'s AuthMode is IAM Identity Center,
+-- this field is required, and must match a valid username of a user in
+-- your directory. If the Domain\'s AuthMode is not IAM Identity Center,
+-- this field cannot be specified.
+--
+-- 'tags', 'createUserProfile_tags' - Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource.
+--
+-- Tags that you specify for the User Profile are also added to all Apps
+-- that the User Profile launches.
+--
+-- 'userSettings', 'createUserProfile_userSettings' - A collection of settings.
+--
+-- 'domainId', 'createUserProfile_domainId' - The ID of the associated Domain.
+--
+-- 'userProfileName', 'createUserProfile_userProfileName' - A name for the UserProfile. This value is not case sensitive.
+newCreateUserProfile ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'userProfileName'
+  Prelude.Text ->
+  CreateUserProfile
+newCreateUserProfile pDomainId_ pUserProfileName_ =
+  CreateUserProfile'
+    { singleSignOnUserIdentifier =
+        Prelude.Nothing,
+      singleSignOnUserValue = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      userSettings = Prelude.Nothing,
+      domainId = pDomainId_,
+      userProfileName = pUserProfileName_
+    }
+
+-- | A specifier for the type of value specified in SingleSignOnUserValue.
+-- Currently, the only supported value is \"UserName\". If the Domain\'s
+-- AuthMode is IAM Identity Center, this field is required. If the
+-- Domain\'s AuthMode is not IAM Identity Center, this field cannot be
+-- specified.
+createUserProfile_singleSignOnUserIdentifier :: Lens.Lens' CreateUserProfile (Prelude.Maybe Prelude.Text)
+createUserProfile_singleSignOnUserIdentifier = Lens.lens (\CreateUserProfile' {singleSignOnUserIdentifier} -> singleSignOnUserIdentifier) (\s@CreateUserProfile' {} a -> s {singleSignOnUserIdentifier = a} :: CreateUserProfile)
+
+-- | The username of the associated Amazon Web Services Single Sign-On User
+-- for this UserProfile. If the Domain\'s AuthMode is IAM Identity Center,
+-- this field is required, and must match a valid username of a user in
+-- your directory. If the Domain\'s AuthMode is not IAM Identity Center,
+-- this field cannot be specified.
+createUserProfile_singleSignOnUserValue :: Lens.Lens' CreateUserProfile (Prelude.Maybe Prelude.Text)
+createUserProfile_singleSignOnUserValue = Lens.lens (\CreateUserProfile' {singleSignOnUserValue} -> singleSignOnUserValue) (\s@CreateUserProfile' {} a -> s {singleSignOnUserValue = a} :: CreateUserProfile)
+
+-- | Each tag consists of a key and an optional value. Tag keys must be
+-- unique per resource.
+--
+-- Tags that you specify for the User Profile are also added to all Apps
+-- that the User Profile launches.
+createUserProfile_tags :: Lens.Lens' CreateUserProfile (Prelude.Maybe [Tag])
+createUserProfile_tags = Lens.lens (\CreateUserProfile' {tags} -> tags) (\s@CreateUserProfile' {} a -> s {tags = a} :: CreateUserProfile) Prelude.. Lens.mapping Lens.coerced
+
+-- | A collection of settings.
+createUserProfile_userSettings :: Lens.Lens' CreateUserProfile (Prelude.Maybe UserSettings)
+createUserProfile_userSettings = Lens.lens (\CreateUserProfile' {userSettings} -> userSettings) (\s@CreateUserProfile' {} a -> s {userSettings = a} :: CreateUserProfile)
+
+-- | The ID of the associated Domain.
+createUserProfile_domainId :: Lens.Lens' CreateUserProfile Prelude.Text
+createUserProfile_domainId = Lens.lens (\CreateUserProfile' {domainId} -> domainId) (\s@CreateUserProfile' {} a -> s {domainId = a} :: CreateUserProfile)
+
+-- | A name for the UserProfile. This value is not case sensitive.
+createUserProfile_userProfileName :: Lens.Lens' CreateUserProfile Prelude.Text
+createUserProfile_userProfileName = Lens.lens (\CreateUserProfile' {userProfileName} -> userProfileName) (\s@CreateUserProfile' {} a -> s {userProfileName = a} :: CreateUserProfile)
+
+instance Core.AWSRequest CreateUserProfile where
+  type
+    AWSResponse CreateUserProfile =
+      CreateUserProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateUserProfileResponse'
+            Prelude.<$> (x Data..?> "UserProfileArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateUserProfile where
+  hashWithSalt _salt CreateUserProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` singleSignOnUserIdentifier
+      `Prelude.hashWithSalt` singleSignOnUserValue
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` userSettings
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData CreateUserProfile where
+  rnf CreateUserProfile' {..} =
+    Prelude.rnf singleSignOnUserIdentifier
+      `Prelude.seq` Prelude.rnf singleSignOnUserValue
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf userSettings
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf userProfileName
+
+instance Data.ToHeaders CreateUserProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.CreateUserProfile" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateUserProfile where
+  toJSON CreateUserProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SingleSignOnUserIdentifier" Data..=)
+              Prelude.<$> singleSignOnUserIdentifier,
+            ("SingleSignOnUserValue" Data..=)
+              Prelude.<$> singleSignOnUserValue,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("UserSettings" Data..=) Prelude.<$> userSettings,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just
+              ("UserProfileName" Data..= userProfileName)
+          ]
+      )
+
+instance Data.ToPath CreateUserProfile where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateUserProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateUserProfileResponse' smart constructor.
+data CreateUserProfileResponse = CreateUserProfileResponse'
+  { -- | The user profile Amazon Resource Name (ARN).
+    userProfileArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateUserProfileResponse' 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:
+--
+-- 'userProfileArn', 'createUserProfileResponse_userProfileArn' - The user profile Amazon Resource Name (ARN).
+--
+-- 'httpStatus', 'createUserProfileResponse_httpStatus' - The response's http status code.
+newCreateUserProfileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateUserProfileResponse
+newCreateUserProfileResponse pHttpStatus_ =
+  CreateUserProfileResponse'
+    { userProfileArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user profile Amazon Resource Name (ARN).
+createUserProfileResponse_userProfileArn :: Lens.Lens' CreateUserProfileResponse (Prelude.Maybe Prelude.Text)
+createUserProfileResponse_userProfileArn = Lens.lens (\CreateUserProfileResponse' {userProfileArn} -> userProfileArn) (\s@CreateUserProfileResponse' {} a -> s {userProfileArn = a} :: CreateUserProfileResponse)
+
+-- | The response's http status code.
+createUserProfileResponse_httpStatus :: Lens.Lens' CreateUserProfileResponse Prelude.Int
+createUserProfileResponse_httpStatus = Lens.lens (\CreateUserProfileResponse' {httpStatus} -> httpStatus) (\s@CreateUserProfileResponse' {} a -> s {httpStatus = a} :: CreateUserProfileResponse)
+
+instance Prelude.NFData CreateUserProfileResponse where
+  rnf CreateUserProfileResponse' {..} =
+    Prelude.rnf userProfileArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/CreateWorkforce.hs b/gen/Amazonka/SageMaker/CreateWorkforce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateWorkforce.hs
@@ -0,0 +1,288 @@
+{-# 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.CreateWorkforce
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this operation to create a workforce. This operation will return an
+-- error if a workforce already exists in the Amazon Web Services Region
+-- that you specify. You can only create one workforce in each Amazon Web
+-- Services Region per Amazon Web Services account.
+--
+-- If you want to create a new workforce in an Amazon Web Services Region
+-- where a workforce already exists, use the API operation to delete the
+-- existing workforce and then use @CreateWorkforce@ to create a new
+-- workforce.
+--
+-- To create a private workforce using Amazon Cognito, you must specify a
+-- Cognito user pool in @CognitoConfig@. You can also create an Amazon
+-- Cognito workforce using the Amazon SageMaker console. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce (Amazon Cognito)>.
+--
+-- To create a private workforce using your own OIDC Identity Provider
+-- (IdP), specify your IdP configuration in @OidcConfig@. Your OIDC IdP
+-- must support /groups/ because groups are used by Ground Truth and Amazon
+-- A2I to create work teams. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private-oidc.html Create a Private Workforce (OIDC IdP)>.
+module Amazonka.SageMaker.CreateWorkforce
+  ( -- * Creating a Request
+    CreateWorkforce (..),
+    newCreateWorkforce,
+
+    -- * Request Lenses
+    createWorkforce_cognitoConfig,
+    createWorkforce_oidcConfig,
+    createWorkforce_sourceIpConfig,
+    createWorkforce_tags,
+    createWorkforce_workforceVpcConfig,
+    createWorkforce_workforceName,
+
+    -- * Destructuring the Response
+    CreateWorkforceResponse (..),
+    newCreateWorkforceResponse,
+
+    -- * Response Lenses
+    createWorkforceResponse_httpStatus,
+    createWorkforceResponse_workforceArn,
+  )
+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:/ 'newCreateWorkforce' smart constructor.
+data CreateWorkforce = CreateWorkforce'
+  { -- | Use this parameter to configure an Amazon Cognito private workforce. A
+    -- single Cognito workforce is created using and corresponds to a single
+    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+    --
+    -- Do not use @OidcConfig@ if you specify values for @CognitoConfig@.
+    cognitoConfig :: Prelude.Maybe CognitoConfig,
+    -- | Use this parameter to configure a private workforce using your own OIDC
+    -- Identity Provider.
+    --
+    -- Do not use @CognitoConfig@ if you specify values for @OidcConfig@.
+    oidcConfig :: Prelude.Maybe OidcConfig,
+    sourceIpConfig :: Prelude.Maybe SourceIpConfig,
+    -- | An array of key-value pairs that contain metadata to help you categorize
+    -- and organize our workforce. Each tag consists of a key and a value, both
+    -- of which you define.
+    tags :: Prelude.Maybe [Tag],
+    -- | Use this parameter to configure a workforce using VPC.
+    workforceVpcConfig :: Prelude.Maybe WorkforceVpcConfigRequest,
+    -- | The name of the private workforce.
+    workforceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateWorkforce' 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:
+--
+-- 'cognitoConfig', 'createWorkforce_cognitoConfig' - Use this parameter to configure an Amazon Cognito private workforce. A
+-- single Cognito workforce is created using and corresponds to a single
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+--
+-- Do not use @OidcConfig@ if you specify values for @CognitoConfig@.
+--
+-- 'oidcConfig', 'createWorkforce_oidcConfig' - Use this parameter to configure a private workforce using your own OIDC
+-- Identity Provider.
+--
+-- Do not use @CognitoConfig@ if you specify values for @OidcConfig@.
+--
+-- 'sourceIpConfig', 'createWorkforce_sourceIpConfig' - Undocumented member.
+--
+-- 'tags', 'createWorkforce_tags' - An array of key-value pairs that contain metadata to help you categorize
+-- and organize our workforce. Each tag consists of a key and a value, both
+-- of which you define.
+--
+-- 'workforceVpcConfig', 'createWorkforce_workforceVpcConfig' - Use this parameter to configure a workforce using VPC.
+--
+-- 'workforceName', 'createWorkforce_workforceName' - The name of the private workforce.
+newCreateWorkforce ::
+  -- | 'workforceName'
+  Prelude.Text ->
+  CreateWorkforce
+newCreateWorkforce pWorkforceName_ =
+  CreateWorkforce'
+    { cognitoConfig = Prelude.Nothing,
+      oidcConfig = Prelude.Nothing,
+      sourceIpConfig = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      workforceVpcConfig = Prelude.Nothing,
+      workforceName = pWorkforceName_
+    }
+
+-- | Use this parameter to configure an Amazon Cognito private workforce. A
+-- single Cognito workforce is created using and corresponds to a single
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+--
+-- Do not use @OidcConfig@ if you specify values for @CognitoConfig@.
+createWorkforce_cognitoConfig :: Lens.Lens' CreateWorkforce (Prelude.Maybe CognitoConfig)
+createWorkforce_cognitoConfig = Lens.lens (\CreateWorkforce' {cognitoConfig} -> cognitoConfig) (\s@CreateWorkforce' {} a -> s {cognitoConfig = a} :: CreateWorkforce)
+
+-- | Use this parameter to configure a private workforce using your own OIDC
+-- Identity Provider.
+--
+-- Do not use @CognitoConfig@ if you specify values for @OidcConfig@.
+createWorkforce_oidcConfig :: Lens.Lens' CreateWorkforce (Prelude.Maybe OidcConfig)
+createWorkforce_oidcConfig = Lens.lens (\CreateWorkforce' {oidcConfig} -> oidcConfig) (\s@CreateWorkforce' {} a -> s {oidcConfig = a} :: CreateWorkforce)
+
+-- | Undocumented member.
+createWorkforce_sourceIpConfig :: Lens.Lens' CreateWorkforce (Prelude.Maybe SourceIpConfig)
+createWorkforce_sourceIpConfig = Lens.lens (\CreateWorkforce' {sourceIpConfig} -> sourceIpConfig) (\s@CreateWorkforce' {} a -> s {sourceIpConfig = a} :: CreateWorkforce)
+
+-- | An array of key-value pairs that contain metadata to help you categorize
+-- and organize our workforce. Each tag consists of a key and a value, both
+-- of which you define.
+createWorkforce_tags :: Lens.Lens' CreateWorkforce (Prelude.Maybe [Tag])
+createWorkforce_tags = Lens.lens (\CreateWorkforce' {tags} -> tags) (\s@CreateWorkforce' {} a -> s {tags = a} :: CreateWorkforce) Prelude.. Lens.mapping Lens.coerced
+
+-- | Use this parameter to configure a workforce using VPC.
+createWorkforce_workforceVpcConfig :: Lens.Lens' CreateWorkforce (Prelude.Maybe WorkforceVpcConfigRequest)
+createWorkforce_workforceVpcConfig = Lens.lens (\CreateWorkforce' {workforceVpcConfig} -> workforceVpcConfig) (\s@CreateWorkforce' {} a -> s {workforceVpcConfig = a} :: CreateWorkforce)
+
+-- | The name of the private workforce.
+createWorkforce_workforceName :: Lens.Lens' CreateWorkforce Prelude.Text
+createWorkforce_workforceName = Lens.lens (\CreateWorkforce' {workforceName} -> workforceName) (\s@CreateWorkforce' {} a -> s {workforceName = a} :: CreateWorkforce)
+
+instance Core.AWSRequest CreateWorkforce where
+  type
+    AWSResponse CreateWorkforce =
+      CreateWorkforceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateWorkforceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "WorkforceArn")
+      )
+
+instance Prelude.Hashable CreateWorkforce where
+  hashWithSalt _salt CreateWorkforce' {..} =
+    _salt
+      `Prelude.hashWithSalt` cognitoConfig
+      `Prelude.hashWithSalt` oidcConfig
+      `Prelude.hashWithSalt` sourceIpConfig
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` workforceVpcConfig
+      `Prelude.hashWithSalt` workforceName
+
+instance Prelude.NFData CreateWorkforce where
+  rnf CreateWorkforce' {..} =
+    Prelude.rnf cognitoConfig
+      `Prelude.seq` Prelude.rnf oidcConfig
+      `Prelude.seq` Prelude.rnf sourceIpConfig
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf workforceVpcConfig
+      `Prelude.seq` Prelude.rnf workforceName
+
+instance Data.ToHeaders CreateWorkforce where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateWorkforce" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateWorkforce where
+  toJSON CreateWorkforce' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CognitoConfig" Data..=) Prelude.<$> cognitoConfig,
+            ("OidcConfig" Data..=) Prelude.<$> oidcConfig,
+            ("SourceIpConfig" Data..=)
+              Prelude.<$> sourceIpConfig,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("WorkforceVpcConfig" Data..=)
+              Prelude.<$> workforceVpcConfig,
+            Prelude.Just
+              ("WorkforceName" Data..= workforceName)
+          ]
+      )
+
+instance Data.ToPath CreateWorkforce where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateWorkforce where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateWorkforceResponse' smart constructor.
+data CreateWorkforceResponse = CreateWorkforceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the workforce.
+    workforceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateWorkforceResponse' 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', 'createWorkforceResponse_httpStatus' - The response's http status code.
+--
+-- 'workforceArn', 'createWorkforceResponse_workforceArn' - The Amazon Resource Name (ARN) of the workforce.
+newCreateWorkforceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'workforceArn'
+  Prelude.Text ->
+  CreateWorkforceResponse
+newCreateWorkforceResponse
+  pHttpStatus_
+  pWorkforceArn_ =
+    CreateWorkforceResponse'
+      { httpStatus = pHttpStatus_,
+        workforceArn = pWorkforceArn_
+      }
+
+-- | The response's http status code.
+createWorkforceResponse_httpStatus :: Lens.Lens' CreateWorkforceResponse Prelude.Int
+createWorkforceResponse_httpStatus = Lens.lens (\CreateWorkforceResponse' {httpStatus} -> httpStatus) (\s@CreateWorkforceResponse' {} a -> s {httpStatus = a} :: CreateWorkforceResponse)
+
+-- | The Amazon Resource Name (ARN) of the workforce.
+createWorkforceResponse_workforceArn :: Lens.Lens' CreateWorkforceResponse Prelude.Text
+createWorkforceResponse_workforceArn = Lens.lens (\CreateWorkforceResponse' {workforceArn} -> workforceArn) (\s@CreateWorkforceResponse' {} a -> s {workforceArn = a} :: CreateWorkforceResponse)
+
+instance Prelude.NFData CreateWorkforceResponse where
+  rnf CreateWorkforceResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workforceArn
diff --git a/gen/Amazonka/SageMaker/CreateWorkteam.hs b/gen/Amazonka/SageMaker/CreateWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/CreateWorkteam.hs
@@ -0,0 +1,335 @@
+{-# 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.CreateWorkteam
+-- 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 new work team for labeling your data. A work team is defined
+-- by one or more Amazon Cognito user pools. You must first create the user
+-- pools before you can create a work team.
+--
+-- You cannot create more than 25 work teams in an account and region.
+module Amazonka.SageMaker.CreateWorkteam
+  ( -- * Creating a Request
+    CreateWorkteam (..),
+    newCreateWorkteam,
+
+    -- * Request Lenses
+    createWorkteam_notificationConfiguration,
+    createWorkteam_tags,
+    createWorkteam_workforceName,
+    createWorkteam_workteamName,
+    createWorkteam_memberDefinitions,
+    createWorkteam_description,
+
+    -- * Destructuring the Response
+    CreateWorkteamResponse (..),
+    newCreateWorkteamResponse,
+
+    -- * Response Lenses
+    createWorkteamResponse_workteamArn,
+    createWorkteamResponse_httpStatus,
+  )
+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:/ 'newCreateWorkteam' smart constructor.
+data CreateWorkteam = CreateWorkteam'
+  { -- | Configures notification of workers regarding available or expiring work
+    -- items.
+    notificationConfiguration :: Prelude.Maybe NotificationConfiguration,
+    -- | An array of key-value pairs.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html Resource Tag>
+    -- and
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the workforce.
+    workforceName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the work team. Use this name to identify the work team.
+    workteamName :: Prelude.Text,
+    -- | A list of @MemberDefinition@ objects that contains objects that identify
+    -- the workers that make up the work team.
+    --
+    -- Workforces can be created using Amazon Cognito or your own OIDC Identity
+    -- Provider (IdP). For private workforces created using Amazon Cognito use
+    -- @CognitoMemberDefinition@. For workforces created using your own OIDC
+    -- identity provider (IdP) use @OidcMemberDefinition@. Do not provide input
+    -- for both of these parameters in a single request.
+    --
+    -- For workforces created using Amazon Cognito, private work teams
+    -- correspond to Amazon Cognito /user groups/ within the user pool used to
+    -- create a workforce. All of the @CognitoMemberDefinition@ objects that
+    -- make up the member definition must have the same @ClientId@ and
+    -- @UserPool@ values. To add a Amazon Cognito user group to an existing
+    -- worker pool, see < Adding groups to a User Pool>. For more information
+    -- about user pools, see
+    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito User Pools>.
+    --
+    -- For workforces created using your own OIDC IdP, specify the user groups
+    -- that you want to include in your private work team in
+    -- @OidcMemberDefinition@ by listing those groups in @Groups@.
+    memberDefinitions :: Prelude.NonEmpty MemberDefinition,
+    -- | A description of the work team.
+    description :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateWorkteam' 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:
+--
+-- 'notificationConfiguration', 'createWorkteam_notificationConfiguration' - Configures notification of workers regarding available or expiring work
+-- items.
+--
+-- 'tags', 'createWorkteam_tags' - An array of key-value pairs.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html Resource Tag>
+-- and
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'workforceName', 'createWorkteam_workforceName' - The name of the workforce.
+--
+-- 'workteamName', 'createWorkteam_workteamName' - The name of the work team. Use this name to identify the work team.
+--
+-- 'memberDefinitions', 'createWorkteam_memberDefinitions' - A list of @MemberDefinition@ objects that contains objects that identify
+-- the workers that make up the work team.
+--
+-- Workforces can be created using Amazon Cognito or your own OIDC Identity
+-- Provider (IdP). For private workforces created using Amazon Cognito use
+-- @CognitoMemberDefinition@. For workforces created using your own OIDC
+-- identity provider (IdP) use @OidcMemberDefinition@. Do not provide input
+-- for both of these parameters in a single request.
+--
+-- For workforces created using Amazon Cognito, private work teams
+-- correspond to Amazon Cognito /user groups/ within the user pool used to
+-- create a workforce. All of the @CognitoMemberDefinition@ objects that
+-- make up the member definition must have the same @ClientId@ and
+-- @UserPool@ values. To add a Amazon Cognito user group to an existing
+-- worker pool, see < Adding groups to a User Pool>. For more information
+-- about user pools, see
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito User Pools>.
+--
+-- For workforces created using your own OIDC IdP, specify the user groups
+-- that you want to include in your private work team in
+-- @OidcMemberDefinition@ by listing those groups in @Groups@.
+--
+-- 'description', 'createWorkteam_description' - A description of the work team.
+newCreateWorkteam ::
+  -- | 'workteamName'
+  Prelude.Text ->
+  -- | 'memberDefinitions'
+  Prelude.NonEmpty MemberDefinition ->
+  -- | 'description'
+  Prelude.Text ->
+  CreateWorkteam
+newCreateWorkteam
+  pWorkteamName_
+  pMemberDefinitions_
+  pDescription_ =
+    CreateWorkteam'
+      { notificationConfiguration =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        workforceName = Prelude.Nothing,
+        workteamName = pWorkteamName_,
+        memberDefinitions =
+          Lens.coerced Lens.# pMemberDefinitions_,
+        description = pDescription_
+      }
+
+-- | Configures notification of workers regarding available or expiring work
+-- items.
+createWorkteam_notificationConfiguration :: Lens.Lens' CreateWorkteam (Prelude.Maybe NotificationConfiguration)
+createWorkteam_notificationConfiguration = Lens.lens (\CreateWorkteam' {notificationConfiguration} -> notificationConfiguration) (\s@CreateWorkteam' {} a -> s {notificationConfiguration = a} :: CreateWorkteam)
+
+-- | An array of key-value pairs.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html Resource Tag>
+-- and
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+createWorkteam_tags :: Lens.Lens' CreateWorkteam (Prelude.Maybe [Tag])
+createWorkteam_tags = Lens.lens (\CreateWorkteam' {tags} -> tags) (\s@CreateWorkteam' {} a -> s {tags = a} :: CreateWorkteam) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the workforce.
+createWorkteam_workforceName :: Lens.Lens' CreateWorkteam (Prelude.Maybe Prelude.Text)
+createWorkteam_workforceName = Lens.lens (\CreateWorkteam' {workforceName} -> workforceName) (\s@CreateWorkteam' {} a -> s {workforceName = a} :: CreateWorkteam)
+
+-- | The name of the work team. Use this name to identify the work team.
+createWorkteam_workteamName :: Lens.Lens' CreateWorkteam Prelude.Text
+createWorkteam_workteamName = Lens.lens (\CreateWorkteam' {workteamName} -> workteamName) (\s@CreateWorkteam' {} a -> s {workteamName = a} :: CreateWorkteam)
+
+-- | A list of @MemberDefinition@ objects that contains objects that identify
+-- the workers that make up the work team.
+--
+-- Workforces can be created using Amazon Cognito or your own OIDC Identity
+-- Provider (IdP). For private workforces created using Amazon Cognito use
+-- @CognitoMemberDefinition@. For workforces created using your own OIDC
+-- identity provider (IdP) use @OidcMemberDefinition@. Do not provide input
+-- for both of these parameters in a single request.
+--
+-- For workforces created using Amazon Cognito, private work teams
+-- correspond to Amazon Cognito /user groups/ within the user pool used to
+-- create a workforce. All of the @CognitoMemberDefinition@ objects that
+-- make up the member definition must have the same @ClientId@ and
+-- @UserPool@ values. To add a Amazon Cognito user group to an existing
+-- worker pool, see < Adding groups to a User Pool>. For more information
+-- about user pools, see
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito User Pools>.
+--
+-- For workforces created using your own OIDC IdP, specify the user groups
+-- that you want to include in your private work team in
+-- @OidcMemberDefinition@ by listing those groups in @Groups@.
+createWorkteam_memberDefinitions :: Lens.Lens' CreateWorkteam (Prelude.NonEmpty MemberDefinition)
+createWorkteam_memberDefinitions = Lens.lens (\CreateWorkteam' {memberDefinitions} -> memberDefinitions) (\s@CreateWorkteam' {} a -> s {memberDefinitions = a} :: CreateWorkteam) Prelude.. Lens.coerced
+
+-- | A description of the work team.
+createWorkteam_description :: Lens.Lens' CreateWorkteam Prelude.Text
+createWorkteam_description = Lens.lens (\CreateWorkteam' {description} -> description) (\s@CreateWorkteam' {} a -> s {description = a} :: CreateWorkteam)
+
+instance Core.AWSRequest CreateWorkteam where
+  type
+    AWSResponse CreateWorkteam =
+      CreateWorkteamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateWorkteamResponse'
+            Prelude.<$> (x Data..?> "WorkteamArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateWorkteam where
+  hashWithSalt _salt CreateWorkteam' {..} =
+    _salt
+      `Prelude.hashWithSalt` notificationConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` workforceName
+      `Prelude.hashWithSalt` workteamName
+      `Prelude.hashWithSalt` memberDefinitions
+      `Prelude.hashWithSalt` description
+
+instance Prelude.NFData CreateWorkteam where
+  rnf CreateWorkteam' {..} =
+    Prelude.rnf notificationConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf workforceName
+      `Prelude.seq` Prelude.rnf workteamName
+      `Prelude.seq` Prelude.rnf memberDefinitions
+      `Prelude.seq` Prelude.rnf description
+
+instance Data.ToHeaders CreateWorkteam where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.CreateWorkteam" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateWorkteam where
+  toJSON CreateWorkteam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NotificationConfiguration" Data..=)
+              Prelude.<$> notificationConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("WorkforceName" Data..=) Prelude.<$> workforceName,
+            Prelude.Just ("WorkteamName" Data..= workteamName),
+            Prelude.Just
+              ("MemberDefinitions" Data..= memberDefinitions),
+            Prelude.Just ("Description" Data..= description)
+          ]
+      )
+
+instance Data.ToPath CreateWorkteam where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateWorkteam where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateWorkteamResponse' smart constructor.
+data CreateWorkteamResponse = CreateWorkteamResponse'
+  { -- | The Amazon Resource Name (ARN) of the work team. You can use this ARN to
+    -- identify the work team.
+    workteamArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateWorkteamResponse' 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:
+--
+-- 'workteamArn', 'createWorkteamResponse_workteamArn' - The Amazon Resource Name (ARN) of the work team. You can use this ARN to
+-- identify the work team.
+--
+-- 'httpStatus', 'createWorkteamResponse_httpStatus' - The response's http status code.
+newCreateWorkteamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateWorkteamResponse
+newCreateWorkteamResponse pHttpStatus_ =
+  CreateWorkteamResponse'
+    { workteamArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the work team. You can use this ARN to
+-- identify the work team.
+createWorkteamResponse_workteamArn :: Lens.Lens' CreateWorkteamResponse (Prelude.Maybe Prelude.Text)
+createWorkteamResponse_workteamArn = Lens.lens (\CreateWorkteamResponse' {workteamArn} -> workteamArn) (\s@CreateWorkteamResponse' {} a -> s {workteamArn = a} :: CreateWorkteamResponse)
+
+-- | The response's http status code.
+createWorkteamResponse_httpStatus :: Lens.Lens' CreateWorkteamResponse Prelude.Int
+createWorkteamResponse_httpStatus = Lens.lens (\CreateWorkteamResponse' {httpStatus} -> httpStatus) (\s@CreateWorkteamResponse' {} a -> s {httpStatus = a} :: CreateWorkteamResponse)
+
+instance Prelude.NFData CreateWorkteamResponse where
+  rnf CreateWorkteamResponse' {..} =
+    Prelude.rnf workteamArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteAction.hs b/gen/Amazonka/SageMaker/DeleteAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteAction.hs
@@ -0,0 +1,163 @@
+{-# 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.DeleteAction
+-- 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 an action.
+module Amazonka.SageMaker.DeleteAction
+  ( -- * Creating a Request
+    DeleteAction (..),
+    newDeleteAction,
+
+    -- * Request Lenses
+    deleteAction_actionName,
+
+    -- * Destructuring the Response
+    DeleteActionResponse (..),
+    newDeleteActionResponse,
+
+    -- * Response Lenses
+    deleteActionResponse_actionArn,
+    deleteActionResponse_httpStatus,
+  )
+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:/ 'newDeleteAction' smart constructor.
+data DeleteAction = DeleteAction'
+  { -- | The name of the action to delete.
+    actionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAction' 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:
+--
+-- 'actionName', 'deleteAction_actionName' - The name of the action to delete.
+newDeleteAction ::
+  -- | 'actionName'
+  Prelude.Text ->
+  DeleteAction
+newDeleteAction pActionName_ =
+  DeleteAction' {actionName = pActionName_}
+
+-- | The name of the action to delete.
+deleteAction_actionName :: Lens.Lens' DeleteAction Prelude.Text
+deleteAction_actionName = Lens.lens (\DeleteAction' {actionName} -> actionName) (\s@DeleteAction' {} a -> s {actionName = a} :: DeleteAction)
+
+instance Core.AWSRequest DeleteAction where
+  type AWSResponse DeleteAction = DeleteActionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteActionResponse'
+            Prelude.<$> (x Data..?> "ActionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAction where
+  hashWithSalt _salt DeleteAction' {..} =
+    _salt `Prelude.hashWithSalt` actionName
+
+instance Prelude.NFData DeleteAction where
+  rnf DeleteAction' {..} = Prelude.rnf actionName
+
+instance Data.ToHeaders DeleteAction where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteAction" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteAction where
+  toJSON DeleteAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ActionName" Data..= actionName)]
+      )
+
+instance Data.ToPath DeleteAction where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteAction where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteActionResponse' smart constructor.
+data DeleteActionResponse = DeleteActionResponse'
+  { -- | The Amazon Resource Name (ARN) of the action.
+    actionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteActionResponse' 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:
+--
+-- 'actionArn', 'deleteActionResponse_actionArn' - The Amazon Resource Name (ARN) of the action.
+--
+-- 'httpStatus', 'deleteActionResponse_httpStatus' - The response's http status code.
+newDeleteActionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteActionResponse
+newDeleteActionResponse pHttpStatus_ =
+  DeleteActionResponse'
+    { actionArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the action.
+deleteActionResponse_actionArn :: Lens.Lens' DeleteActionResponse (Prelude.Maybe Prelude.Text)
+deleteActionResponse_actionArn = Lens.lens (\DeleteActionResponse' {actionArn} -> actionArn) (\s@DeleteActionResponse' {} a -> s {actionArn = a} :: DeleteActionResponse)
+
+-- | The response's http status code.
+deleteActionResponse_httpStatus :: Lens.Lens' DeleteActionResponse Prelude.Int
+deleteActionResponse_httpStatus = Lens.lens (\DeleteActionResponse' {httpStatus} -> httpStatus) (\s@DeleteActionResponse' {} a -> s {httpStatus = a} :: DeleteActionResponse)
+
+instance Prelude.NFData DeleteActionResponse where
+  rnf DeleteActionResponse' {..} =
+    Prelude.rnf actionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteAlgorithm.hs b/gen/Amazonka/SageMaker/DeleteAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteAlgorithm.hs
@@ -0,0 +1,132 @@
+{-# 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.DeleteAlgorithm
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the specified algorithm from your account.
+module Amazonka.SageMaker.DeleteAlgorithm
+  ( -- * Creating a Request
+    DeleteAlgorithm (..),
+    newDeleteAlgorithm,
+
+    -- * Request Lenses
+    deleteAlgorithm_algorithmName,
+
+    -- * Destructuring the Response
+    DeleteAlgorithmResponse (..),
+    newDeleteAlgorithmResponse,
+  )
+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:/ 'newDeleteAlgorithm' smart constructor.
+data DeleteAlgorithm = DeleteAlgorithm'
+  { -- | The name of the algorithm to delete.
+    algorithmName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAlgorithm' 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:
+--
+-- 'algorithmName', 'deleteAlgorithm_algorithmName' - The name of the algorithm to delete.
+newDeleteAlgorithm ::
+  -- | 'algorithmName'
+  Prelude.Text ->
+  DeleteAlgorithm
+newDeleteAlgorithm pAlgorithmName_ =
+  DeleteAlgorithm' {algorithmName = pAlgorithmName_}
+
+-- | The name of the algorithm to delete.
+deleteAlgorithm_algorithmName :: Lens.Lens' DeleteAlgorithm Prelude.Text
+deleteAlgorithm_algorithmName = Lens.lens (\DeleteAlgorithm' {algorithmName} -> algorithmName) (\s@DeleteAlgorithm' {} a -> s {algorithmName = a} :: DeleteAlgorithm)
+
+instance Core.AWSRequest DeleteAlgorithm where
+  type
+    AWSResponse DeleteAlgorithm =
+      DeleteAlgorithmResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteAlgorithmResponse'
+
+instance Prelude.Hashable DeleteAlgorithm where
+  hashWithSalt _salt DeleteAlgorithm' {..} =
+    _salt `Prelude.hashWithSalt` algorithmName
+
+instance Prelude.NFData DeleteAlgorithm where
+  rnf DeleteAlgorithm' {..} = Prelude.rnf algorithmName
+
+instance Data.ToHeaders DeleteAlgorithm where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteAlgorithm" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteAlgorithm where
+  toJSON DeleteAlgorithm' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AlgorithmName" Data..= algorithmName)
+          ]
+      )
+
+instance Data.ToPath DeleteAlgorithm where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteAlgorithm where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAlgorithmResponse' smart constructor.
+data DeleteAlgorithmResponse = DeleteAlgorithmResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAlgorithmResponse' 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.
+newDeleteAlgorithmResponse ::
+  DeleteAlgorithmResponse
+newDeleteAlgorithmResponse = DeleteAlgorithmResponse'
+
+instance Prelude.NFData DeleteAlgorithmResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteApp.hs b/gen/Amazonka/SageMaker/DeleteApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteApp.hs
@@ -0,0 +1,195 @@
+{-# 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.DeleteApp
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Used to stop and delete an app.
+module Amazonka.SageMaker.DeleteApp
+  ( -- * Creating a Request
+    DeleteApp (..),
+    newDeleteApp,
+
+    -- * Request Lenses
+    deleteApp_spaceName,
+    deleteApp_userProfileName,
+    deleteApp_domainId,
+    deleteApp_appType,
+    deleteApp_appName,
+
+    -- * Destructuring the Response
+    DeleteAppResponse (..),
+    newDeleteAppResponse,
+  )
+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:/ 'newDeleteApp' smart constructor.
+data DeleteApp = DeleteApp'
+  { -- | The name of the space. If this value is not set, then @UserProfileName@
+    -- must be set.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | The user profile name. If this value is not set, then @SpaceName@ must
+    -- be set.
+    userProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The type of app.
+    appType :: AppType,
+    -- | The name of the app.
+    appName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApp' 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:
+--
+-- 'spaceName', 'deleteApp_spaceName' - The name of the space. If this value is not set, then @UserProfileName@
+-- must be set.
+--
+-- 'userProfileName', 'deleteApp_userProfileName' - The user profile name. If this value is not set, then @SpaceName@ must
+-- be set.
+--
+-- 'domainId', 'deleteApp_domainId' - The domain ID.
+--
+-- 'appType', 'deleteApp_appType' - The type of app.
+--
+-- 'appName', 'deleteApp_appName' - The name of the app.
+newDeleteApp ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'appType'
+  AppType ->
+  -- | 'appName'
+  Prelude.Text ->
+  DeleteApp
+newDeleteApp pDomainId_ pAppType_ pAppName_ =
+  DeleteApp'
+    { spaceName = Prelude.Nothing,
+      userProfileName = Prelude.Nothing,
+      domainId = pDomainId_,
+      appType = pAppType_,
+      appName = pAppName_
+    }
+
+-- | The name of the space. If this value is not set, then @UserProfileName@
+-- must be set.
+deleteApp_spaceName :: Lens.Lens' DeleteApp (Prelude.Maybe Prelude.Text)
+deleteApp_spaceName = Lens.lens (\DeleteApp' {spaceName} -> spaceName) (\s@DeleteApp' {} a -> s {spaceName = a} :: DeleteApp)
+
+-- | The user profile name. If this value is not set, then @SpaceName@ must
+-- be set.
+deleteApp_userProfileName :: Lens.Lens' DeleteApp (Prelude.Maybe Prelude.Text)
+deleteApp_userProfileName = Lens.lens (\DeleteApp' {userProfileName} -> userProfileName) (\s@DeleteApp' {} a -> s {userProfileName = a} :: DeleteApp)
+
+-- | The domain ID.
+deleteApp_domainId :: Lens.Lens' DeleteApp Prelude.Text
+deleteApp_domainId = Lens.lens (\DeleteApp' {domainId} -> domainId) (\s@DeleteApp' {} a -> s {domainId = a} :: DeleteApp)
+
+-- | The type of app.
+deleteApp_appType :: Lens.Lens' DeleteApp AppType
+deleteApp_appType = Lens.lens (\DeleteApp' {appType} -> appType) (\s@DeleteApp' {} a -> s {appType = a} :: DeleteApp)
+
+-- | The name of the app.
+deleteApp_appName :: Lens.Lens' DeleteApp Prelude.Text
+deleteApp_appName = Lens.lens (\DeleteApp' {appName} -> appName) (\s@DeleteApp' {} a -> s {appName = a} :: DeleteApp)
+
+instance Core.AWSRequest DeleteApp where
+  type AWSResponse DeleteApp = DeleteAppResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteAppResponse'
+
+instance Prelude.Hashable DeleteApp where
+  hashWithSalt _salt DeleteApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` spaceName
+      `Prelude.hashWithSalt` userProfileName
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` appType
+      `Prelude.hashWithSalt` appName
+
+instance Prelude.NFData DeleteApp where
+  rnf DeleteApp' {..} =
+    Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf userProfileName
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf appType
+      `Prelude.seq` Prelude.rnf appName
+
+instance Data.ToHeaders DeleteApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteApp" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteApp where
+  toJSON DeleteApp' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SpaceName" Data..=) Prelude.<$> spaceName,
+            ("UserProfileName" Data..=)
+              Prelude.<$> userProfileName,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("AppType" Data..= appType),
+            Prelude.Just ("AppName" Data..= appName)
+          ]
+      )
+
+instance Data.ToPath DeleteApp where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteApp where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAppResponse' smart constructor.
+data DeleteAppResponse = DeleteAppResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppResponse' 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.
+newDeleteAppResponse ::
+  DeleteAppResponse
+newDeleteAppResponse = DeleteAppResponse'
+
+instance Prelude.NFData DeleteAppResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteAppImageConfig.hs b/gen/Amazonka/SageMaker/DeleteAppImageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteAppImageConfig.hs
@@ -0,0 +1,139 @@
+{-# 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.DeleteAppImageConfig
+-- 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 an AppImageConfig.
+module Amazonka.SageMaker.DeleteAppImageConfig
+  ( -- * Creating a Request
+    DeleteAppImageConfig (..),
+    newDeleteAppImageConfig,
+
+    -- * Request Lenses
+    deleteAppImageConfig_appImageConfigName,
+
+    -- * Destructuring the Response
+    DeleteAppImageConfigResponse (..),
+    newDeleteAppImageConfigResponse,
+  )
+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:/ 'newDeleteAppImageConfig' smart constructor.
+data DeleteAppImageConfig = DeleteAppImageConfig'
+  { -- | The name of the AppImageConfig to delete.
+    appImageConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppImageConfig' 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:
+--
+-- 'appImageConfigName', 'deleteAppImageConfig_appImageConfigName' - The name of the AppImageConfig to delete.
+newDeleteAppImageConfig ::
+  -- | 'appImageConfigName'
+  Prelude.Text ->
+  DeleteAppImageConfig
+newDeleteAppImageConfig pAppImageConfigName_ =
+  DeleteAppImageConfig'
+    { appImageConfigName =
+        pAppImageConfigName_
+    }
+
+-- | The name of the AppImageConfig to delete.
+deleteAppImageConfig_appImageConfigName :: Lens.Lens' DeleteAppImageConfig Prelude.Text
+deleteAppImageConfig_appImageConfigName = Lens.lens (\DeleteAppImageConfig' {appImageConfigName} -> appImageConfigName) (\s@DeleteAppImageConfig' {} a -> s {appImageConfigName = a} :: DeleteAppImageConfig)
+
+instance Core.AWSRequest DeleteAppImageConfig where
+  type
+    AWSResponse DeleteAppImageConfig =
+      DeleteAppImageConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteAppImageConfigResponse'
+
+instance Prelude.Hashable DeleteAppImageConfig where
+  hashWithSalt _salt DeleteAppImageConfig' {..} =
+    _salt `Prelude.hashWithSalt` appImageConfigName
+
+instance Prelude.NFData DeleteAppImageConfig where
+  rnf DeleteAppImageConfig' {..} =
+    Prelude.rnf appImageConfigName
+
+instance Data.ToHeaders DeleteAppImageConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteAppImageConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteAppImageConfig where
+  toJSON DeleteAppImageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AppImageConfigName" Data..= appImageConfigName)
+          ]
+      )
+
+instance Data.ToPath DeleteAppImageConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteAppImageConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAppImageConfigResponse' smart constructor.
+data DeleteAppImageConfigResponse = DeleteAppImageConfigResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppImageConfigResponse' 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.
+newDeleteAppImageConfigResponse ::
+  DeleteAppImageConfigResponse
+newDeleteAppImageConfigResponse =
+  DeleteAppImageConfigResponse'
+
+instance Prelude.NFData DeleteAppImageConfigResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteArtifact.hs b/gen/Amazonka/SageMaker/DeleteArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteArtifact.hs
@@ -0,0 +1,182 @@
+{-# 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.DeleteArtifact
+-- 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 an artifact. Either @ArtifactArn@ or @Source@ must be specified.
+module Amazonka.SageMaker.DeleteArtifact
+  ( -- * Creating a Request
+    DeleteArtifact (..),
+    newDeleteArtifact,
+
+    -- * Request Lenses
+    deleteArtifact_artifactArn,
+    deleteArtifact_source,
+
+    -- * Destructuring the Response
+    DeleteArtifactResponse (..),
+    newDeleteArtifactResponse,
+
+    -- * Response Lenses
+    deleteArtifactResponse_artifactArn,
+    deleteArtifactResponse_httpStatus,
+  )
+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:/ 'newDeleteArtifact' smart constructor.
+data DeleteArtifact = DeleteArtifact'
+  { -- | The Amazon Resource Name (ARN) of the artifact to delete.
+    artifactArn :: Prelude.Maybe Prelude.Text,
+    -- | The URI of the source.
+    source :: Prelude.Maybe ArtifactSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteArtifact' 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:
+--
+-- 'artifactArn', 'deleteArtifact_artifactArn' - The Amazon Resource Name (ARN) of the artifact to delete.
+--
+-- 'source', 'deleteArtifact_source' - The URI of the source.
+newDeleteArtifact ::
+  DeleteArtifact
+newDeleteArtifact =
+  DeleteArtifact'
+    { artifactArn = Prelude.Nothing,
+      source = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the artifact to delete.
+deleteArtifact_artifactArn :: Lens.Lens' DeleteArtifact (Prelude.Maybe Prelude.Text)
+deleteArtifact_artifactArn = Lens.lens (\DeleteArtifact' {artifactArn} -> artifactArn) (\s@DeleteArtifact' {} a -> s {artifactArn = a} :: DeleteArtifact)
+
+-- | The URI of the source.
+deleteArtifact_source :: Lens.Lens' DeleteArtifact (Prelude.Maybe ArtifactSource)
+deleteArtifact_source = Lens.lens (\DeleteArtifact' {source} -> source) (\s@DeleteArtifact' {} a -> s {source = a} :: DeleteArtifact)
+
+instance Core.AWSRequest DeleteArtifact where
+  type
+    AWSResponse DeleteArtifact =
+      DeleteArtifactResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteArtifactResponse'
+            Prelude.<$> (x Data..?> "ArtifactArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteArtifact where
+  hashWithSalt _salt DeleteArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactArn
+      `Prelude.hashWithSalt` source
+
+instance Prelude.NFData DeleteArtifact where
+  rnf DeleteArtifact' {..} =
+    Prelude.rnf artifactArn
+      `Prelude.seq` Prelude.rnf source
+
+instance Data.ToHeaders DeleteArtifact where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteArtifact" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteArtifact where
+  toJSON DeleteArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArtifactArn" Data..=) Prelude.<$> artifactArn,
+            ("Source" Data..=) Prelude.<$> source
+          ]
+      )
+
+instance Data.ToPath DeleteArtifact where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteArtifact where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteArtifactResponse' smart constructor.
+data DeleteArtifactResponse = DeleteArtifactResponse'
+  { -- | The Amazon Resource Name (ARN) of the artifact.
+    artifactArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteArtifactResponse' 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:
+--
+-- 'artifactArn', 'deleteArtifactResponse_artifactArn' - The Amazon Resource Name (ARN) of the artifact.
+--
+-- 'httpStatus', 'deleteArtifactResponse_httpStatus' - The response's http status code.
+newDeleteArtifactResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteArtifactResponse
+newDeleteArtifactResponse pHttpStatus_ =
+  DeleteArtifactResponse'
+    { artifactArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the artifact.
+deleteArtifactResponse_artifactArn :: Lens.Lens' DeleteArtifactResponse (Prelude.Maybe Prelude.Text)
+deleteArtifactResponse_artifactArn = Lens.lens (\DeleteArtifactResponse' {artifactArn} -> artifactArn) (\s@DeleteArtifactResponse' {} a -> s {artifactArn = a} :: DeleteArtifactResponse)
+
+-- | The response's http status code.
+deleteArtifactResponse_httpStatus :: Lens.Lens' DeleteArtifactResponse Prelude.Int
+deleteArtifactResponse_httpStatus = Lens.lens (\DeleteArtifactResponse' {httpStatus} -> httpStatus) (\s@DeleteArtifactResponse' {} a -> s {httpStatus = a} :: DeleteArtifactResponse)
+
+instance Prelude.NFData DeleteArtifactResponse where
+  rnf DeleteArtifactResponse' {..} =
+    Prelude.rnf artifactArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteAssociation.hs b/gen/Amazonka/SageMaker/DeleteAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteAssociation.hs
@@ -0,0 +1,201 @@
+{-# 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.DeleteAssociation
+-- 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 an association.
+module Amazonka.SageMaker.DeleteAssociation
+  ( -- * Creating a Request
+    DeleteAssociation (..),
+    newDeleteAssociation,
+
+    -- * Request Lenses
+    deleteAssociation_sourceArn,
+    deleteAssociation_destinationArn,
+
+    -- * Destructuring the Response
+    DeleteAssociationResponse (..),
+    newDeleteAssociationResponse,
+
+    -- * Response Lenses
+    deleteAssociationResponse_destinationArn,
+    deleteAssociationResponse_sourceArn,
+    deleteAssociationResponse_httpStatus,
+  )
+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:/ 'newDeleteAssociation' smart constructor.
+data DeleteAssociation = DeleteAssociation'
+  { -- | The ARN of the source.
+    sourceArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the destination.
+    destinationArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAssociation' 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:
+--
+-- 'sourceArn', 'deleteAssociation_sourceArn' - The ARN of the source.
+--
+-- 'destinationArn', 'deleteAssociation_destinationArn' - The Amazon Resource Name (ARN) of the destination.
+newDeleteAssociation ::
+  -- | 'sourceArn'
+  Prelude.Text ->
+  -- | 'destinationArn'
+  Prelude.Text ->
+  DeleteAssociation
+newDeleteAssociation pSourceArn_ pDestinationArn_ =
+  DeleteAssociation'
+    { sourceArn = pSourceArn_,
+      destinationArn = pDestinationArn_
+    }
+
+-- | The ARN of the source.
+deleteAssociation_sourceArn :: Lens.Lens' DeleteAssociation Prelude.Text
+deleteAssociation_sourceArn = Lens.lens (\DeleteAssociation' {sourceArn} -> sourceArn) (\s@DeleteAssociation' {} a -> s {sourceArn = a} :: DeleteAssociation)
+
+-- | The Amazon Resource Name (ARN) of the destination.
+deleteAssociation_destinationArn :: Lens.Lens' DeleteAssociation Prelude.Text
+deleteAssociation_destinationArn = Lens.lens (\DeleteAssociation' {destinationArn} -> destinationArn) (\s@DeleteAssociation' {} a -> s {destinationArn = a} :: DeleteAssociation)
+
+instance Core.AWSRequest DeleteAssociation where
+  type
+    AWSResponse DeleteAssociation =
+      DeleteAssociationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteAssociationResponse'
+            Prelude.<$> (x Data..?> "DestinationArn")
+            Prelude.<*> (x Data..?> "SourceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAssociation where
+  hashWithSalt _salt DeleteAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` destinationArn
+
+instance Prelude.NFData DeleteAssociation where
+  rnf DeleteAssociation' {..} =
+    Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf destinationArn
+
+instance Data.ToHeaders DeleteAssociation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteAssociation" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteAssociation where
+  toJSON DeleteAssociation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SourceArn" Data..= sourceArn),
+            Prelude.Just
+              ("DestinationArn" Data..= destinationArn)
+          ]
+      )
+
+instance Data.ToPath DeleteAssociation where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteAssociation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAssociationResponse' smart constructor.
+data DeleteAssociationResponse = DeleteAssociationResponse'
+  { -- | The Amazon Resource Name (ARN) of the destination.
+    destinationArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the source.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAssociationResponse' 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:
+--
+-- 'destinationArn', 'deleteAssociationResponse_destinationArn' - The Amazon Resource Name (ARN) of the destination.
+--
+-- 'sourceArn', 'deleteAssociationResponse_sourceArn' - The ARN of the source.
+--
+-- 'httpStatus', 'deleteAssociationResponse_httpStatus' - The response's http status code.
+newDeleteAssociationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteAssociationResponse
+newDeleteAssociationResponse pHttpStatus_ =
+  DeleteAssociationResponse'
+    { destinationArn =
+        Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the destination.
+deleteAssociationResponse_destinationArn :: Lens.Lens' DeleteAssociationResponse (Prelude.Maybe Prelude.Text)
+deleteAssociationResponse_destinationArn = Lens.lens (\DeleteAssociationResponse' {destinationArn} -> destinationArn) (\s@DeleteAssociationResponse' {} a -> s {destinationArn = a} :: DeleteAssociationResponse)
+
+-- | The ARN of the source.
+deleteAssociationResponse_sourceArn :: Lens.Lens' DeleteAssociationResponse (Prelude.Maybe Prelude.Text)
+deleteAssociationResponse_sourceArn = Lens.lens (\DeleteAssociationResponse' {sourceArn} -> sourceArn) (\s@DeleteAssociationResponse' {} a -> s {sourceArn = a} :: DeleteAssociationResponse)
+
+-- | The response's http status code.
+deleteAssociationResponse_httpStatus :: Lens.Lens' DeleteAssociationResponse Prelude.Int
+deleteAssociationResponse_httpStatus = Lens.lens (\DeleteAssociationResponse' {httpStatus} -> httpStatus) (\s@DeleteAssociationResponse' {} a -> s {httpStatus = a} :: DeleteAssociationResponse)
+
+instance Prelude.NFData DeleteAssociationResponse where
+  rnf DeleteAssociationResponse' {..} =
+    Prelude.rnf destinationArn
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteCodeRepository.hs b/gen/Amazonka/SageMaker/DeleteCodeRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteCodeRepository.hs
@@ -0,0 +1,139 @@
+{-# 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.DeleteCodeRepository
+-- 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 the specified Git repository from your account.
+module Amazonka.SageMaker.DeleteCodeRepository
+  ( -- * Creating a Request
+    DeleteCodeRepository (..),
+    newDeleteCodeRepository,
+
+    -- * Request Lenses
+    deleteCodeRepository_codeRepositoryName,
+
+    -- * Destructuring the Response
+    DeleteCodeRepositoryResponse (..),
+    newDeleteCodeRepositoryResponse,
+  )
+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:/ 'newDeleteCodeRepository' smart constructor.
+data DeleteCodeRepository = DeleteCodeRepository'
+  { -- | The name of the Git repository to delete.
+    codeRepositoryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCodeRepository' 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:
+--
+-- 'codeRepositoryName', 'deleteCodeRepository_codeRepositoryName' - The name of the Git repository to delete.
+newDeleteCodeRepository ::
+  -- | 'codeRepositoryName'
+  Prelude.Text ->
+  DeleteCodeRepository
+newDeleteCodeRepository pCodeRepositoryName_ =
+  DeleteCodeRepository'
+    { codeRepositoryName =
+        pCodeRepositoryName_
+    }
+
+-- | The name of the Git repository to delete.
+deleteCodeRepository_codeRepositoryName :: Lens.Lens' DeleteCodeRepository Prelude.Text
+deleteCodeRepository_codeRepositoryName = Lens.lens (\DeleteCodeRepository' {codeRepositoryName} -> codeRepositoryName) (\s@DeleteCodeRepository' {} a -> s {codeRepositoryName = a} :: DeleteCodeRepository)
+
+instance Core.AWSRequest DeleteCodeRepository where
+  type
+    AWSResponse DeleteCodeRepository =
+      DeleteCodeRepositoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteCodeRepositoryResponse'
+
+instance Prelude.Hashable DeleteCodeRepository where
+  hashWithSalt _salt DeleteCodeRepository' {..} =
+    _salt `Prelude.hashWithSalt` codeRepositoryName
+
+instance Prelude.NFData DeleteCodeRepository where
+  rnf DeleteCodeRepository' {..} =
+    Prelude.rnf codeRepositoryName
+
+instance Data.ToHeaders DeleteCodeRepository where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteCodeRepository" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteCodeRepository where
+  toJSON DeleteCodeRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CodeRepositoryName" Data..= codeRepositoryName)
+          ]
+      )
+
+instance Data.ToPath DeleteCodeRepository where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteCodeRepository where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteCodeRepositoryResponse' smart constructor.
+data DeleteCodeRepositoryResponse = DeleteCodeRepositoryResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCodeRepositoryResponse' 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.
+newDeleteCodeRepositoryResponse ::
+  DeleteCodeRepositoryResponse
+newDeleteCodeRepositoryResponse =
+  DeleteCodeRepositoryResponse'
+
+instance Prelude.NFData DeleteCodeRepositoryResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteContext.hs b/gen/Amazonka/SageMaker/DeleteContext.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteContext.hs
@@ -0,0 +1,166 @@
+{-# 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.DeleteContext
+-- 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 an context.
+module Amazonka.SageMaker.DeleteContext
+  ( -- * Creating a Request
+    DeleteContext (..),
+    newDeleteContext,
+
+    -- * Request Lenses
+    deleteContext_contextName,
+
+    -- * Destructuring the Response
+    DeleteContextResponse (..),
+    newDeleteContextResponse,
+
+    -- * Response Lenses
+    deleteContextResponse_contextArn,
+    deleteContextResponse_httpStatus,
+  )
+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:/ 'newDeleteContext' smart constructor.
+data DeleteContext = DeleteContext'
+  { -- | The name of the context to delete.
+    contextName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteContext' 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:
+--
+-- 'contextName', 'deleteContext_contextName' - The name of the context to delete.
+newDeleteContext ::
+  -- | 'contextName'
+  Prelude.Text ->
+  DeleteContext
+newDeleteContext pContextName_ =
+  DeleteContext' {contextName = pContextName_}
+
+-- | The name of the context to delete.
+deleteContext_contextName :: Lens.Lens' DeleteContext Prelude.Text
+deleteContext_contextName = Lens.lens (\DeleteContext' {contextName} -> contextName) (\s@DeleteContext' {} a -> s {contextName = a} :: DeleteContext)
+
+instance Core.AWSRequest DeleteContext where
+  type
+    AWSResponse DeleteContext =
+      DeleteContextResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteContextResponse'
+            Prelude.<$> (x Data..?> "ContextArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteContext where
+  hashWithSalt _salt DeleteContext' {..} =
+    _salt `Prelude.hashWithSalt` contextName
+
+instance Prelude.NFData DeleteContext where
+  rnf DeleteContext' {..} = Prelude.rnf contextName
+
+instance Data.ToHeaders DeleteContext where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteContext" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteContext where
+  toJSON DeleteContext' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ContextName" Data..= contextName)]
+      )
+
+instance Data.ToPath DeleteContext where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteContext where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteContextResponse' smart constructor.
+data DeleteContextResponse = DeleteContextResponse'
+  { -- | The Amazon Resource Name (ARN) of the context.
+    contextArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteContextResponse' 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:
+--
+-- 'contextArn', 'deleteContextResponse_contextArn' - The Amazon Resource Name (ARN) of the context.
+--
+-- 'httpStatus', 'deleteContextResponse_httpStatus' - The response's http status code.
+newDeleteContextResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteContextResponse
+newDeleteContextResponse pHttpStatus_ =
+  DeleteContextResponse'
+    { contextArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the context.
+deleteContextResponse_contextArn :: Lens.Lens' DeleteContextResponse (Prelude.Maybe Prelude.Text)
+deleteContextResponse_contextArn = Lens.lens (\DeleteContextResponse' {contextArn} -> contextArn) (\s@DeleteContextResponse' {} a -> s {contextArn = a} :: DeleteContextResponse)
+
+-- | The response's http status code.
+deleteContextResponse_httpStatus :: Lens.Lens' DeleteContextResponse Prelude.Int
+deleteContextResponse_httpStatus = Lens.lens (\DeleteContextResponse' {httpStatus} -> httpStatus) (\s@DeleteContextResponse' {} a -> s {httpStatus = a} :: DeleteContextResponse)
+
+instance Prelude.NFData DeleteContextResponse where
+  rnf DeleteContextResponse' {..} =
+    Prelude.rnf contextArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteDataQualityJobDefinition.hs b/gen/Amazonka/SageMaker/DeleteDataQualityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteDataQualityJobDefinition.hs
@@ -0,0 +1,157 @@
+{-# 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.DeleteDataQualityJobDefinition
+-- 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 a data quality monitoring job definition.
+module Amazonka.SageMaker.DeleteDataQualityJobDefinition
+  ( -- * Creating a Request
+    DeleteDataQualityJobDefinition (..),
+    newDeleteDataQualityJobDefinition,
+
+    -- * Request Lenses
+    deleteDataQualityJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DeleteDataQualityJobDefinitionResponse (..),
+    newDeleteDataQualityJobDefinitionResponse,
+  )
+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:/ 'newDeleteDataQualityJobDefinition' smart constructor.
+data DeleteDataQualityJobDefinition = DeleteDataQualityJobDefinition'
+  { -- | The name of the data quality monitoring job definition to delete.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataQualityJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'deleteDataQualityJobDefinition_jobDefinitionName' - The name of the data quality monitoring job definition to delete.
+newDeleteDataQualityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DeleteDataQualityJobDefinition
+newDeleteDataQualityJobDefinition pJobDefinitionName_ =
+  DeleteDataQualityJobDefinition'
+    { jobDefinitionName =
+        pJobDefinitionName_
+    }
+
+-- | The name of the data quality monitoring job definition to delete.
+deleteDataQualityJobDefinition_jobDefinitionName :: Lens.Lens' DeleteDataQualityJobDefinition Prelude.Text
+deleteDataQualityJobDefinition_jobDefinitionName = Lens.lens (\DeleteDataQualityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DeleteDataQualityJobDefinition' {} a -> s {jobDefinitionName = a} :: DeleteDataQualityJobDefinition)
+
+instance
+  Core.AWSRequest
+    DeleteDataQualityJobDefinition
+  where
+  type
+    AWSResponse DeleteDataQualityJobDefinition =
+      DeleteDataQualityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteDataQualityJobDefinitionResponse'
+
+instance
+  Prelude.Hashable
+    DeleteDataQualityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DeleteDataQualityJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DeleteDataQualityJobDefinition
+  where
+  rnf DeleteDataQualityJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DeleteDataQualityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteDataQualityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteDataQualityJobDefinition where
+  toJSON DeleteDataQualityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DeleteDataQualityJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDataQualityJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDataQualityJobDefinitionResponse' smart constructor.
+data DeleteDataQualityJobDefinitionResponse = DeleteDataQualityJobDefinitionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataQualityJobDefinitionResponse' 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.
+newDeleteDataQualityJobDefinitionResponse ::
+  DeleteDataQualityJobDefinitionResponse
+newDeleteDataQualityJobDefinitionResponse =
+  DeleteDataQualityJobDefinitionResponse'
+
+instance
+  Prelude.NFData
+    DeleteDataQualityJobDefinitionResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteDeviceFleet.hs b/gen/Amazonka/SageMaker/DeleteDeviceFleet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteDeviceFleet.hs
@@ -0,0 +1,139 @@
+{-# 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.DeleteDeviceFleet
+-- 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 a fleet.
+module Amazonka.SageMaker.DeleteDeviceFleet
+  ( -- * Creating a Request
+    DeleteDeviceFleet (..),
+    newDeleteDeviceFleet,
+
+    -- * Request Lenses
+    deleteDeviceFleet_deviceFleetName,
+
+    -- * Destructuring the Response
+    DeleteDeviceFleetResponse (..),
+    newDeleteDeviceFleetResponse,
+  )
+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:/ 'newDeleteDeviceFleet' smart constructor.
+data DeleteDeviceFleet = DeleteDeviceFleet'
+  { -- | The name of the fleet to delete.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDeviceFleet' 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:
+--
+-- 'deviceFleetName', 'deleteDeviceFleet_deviceFleetName' - The name of the fleet to delete.
+newDeleteDeviceFleet ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  DeleteDeviceFleet
+newDeleteDeviceFleet pDeviceFleetName_ =
+  DeleteDeviceFleet'
+    { deviceFleetName =
+        pDeviceFleetName_
+    }
+
+-- | The name of the fleet to delete.
+deleteDeviceFleet_deviceFleetName :: Lens.Lens' DeleteDeviceFleet Prelude.Text
+deleteDeviceFleet_deviceFleetName = Lens.lens (\DeleteDeviceFleet' {deviceFleetName} -> deviceFleetName) (\s@DeleteDeviceFleet' {} a -> s {deviceFleetName = a} :: DeleteDeviceFleet)
+
+instance Core.AWSRequest DeleteDeviceFleet where
+  type
+    AWSResponse DeleteDeviceFleet =
+      DeleteDeviceFleetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteDeviceFleetResponse'
+
+instance Prelude.Hashable DeleteDeviceFleet where
+  hashWithSalt _salt DeleteDeviceFleet' {..} =
+    _salt `Prelude.hashWithSalt` deviceFleetName
+
+instance Prelude.NFData DeleteDeviceFleet where
+  rnf DeleteDeviceFleet' {..} =
+    Prelude.rnf deviceFleetName
+
+instance Data.ToHeaders DeleteDeviceFleet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteDeviceFleet" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteDeviceFleet where
+  toJSON DeleteDeviceFleet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName)
+          ]
+      )
+
+instance Data.ToPath DeleteDeviceFleet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDeviceFleet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDeviceFleetResponse' smart constructor.
+data DeleteDeviceFleetResponse = DeleteDeviceFleetResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDeviceFleetResponse' 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.
+newDeleteDeviceFleetResponse ::
+  DeleteDeviceFleetResponse
+newDeleteDeviceFleetResponse =
+  DeleteDeviceFleetResponse'
+
+instance Prelude.NFData DeleteDeviceFleetResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteDomain.hs b/gen/Amazonka/SageMaker/DeleteDomain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteDomain.hs
@@ -0,0 +1,155 @@
+{-# 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.DeleteDomain
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Used to delete a domain. If you onboarded with IAM mode, you will need
+-- to delete your domain to onboard again using IAM Identity Center. Use
+-- with caution. All of the members of the domain will lose access to their
+-- EFS volume, including data, notebooks, and other artifacts.
+module Amazonka.SageMaker.DeleteDomain
+  ( -- * Creating a Request
+    DeleteDomain (..),
+    newDeleteDomain,
+
+    -- * Request Lenses
+    deleteDomain_retentionPolicy,
+    deleteDomain_domainId,
+
+    -- * Destructuring the Response
+    DeleteDomainResponse (..),
+    newDeleteDomainResponse,
+  )
+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:/ 'newDeleteDomain' smart constructor.
+data DeleteDomain = DeleteDomain'
+  { -- | The retention policy for this domain, which specifies whether resources
+    -- will be retained after the Domain is deleted. By default, all resources
+    -- are retained (not automatically deleted).
+    retentionPolicy :: Prelude.Maybe RetentionPolicy,
+    -- | The domain ID.
+    domainId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDomain' 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:
+--
+-- 'retentionPolicy', 'deleteDomain_retentionPolicy' - The retention policy for this domain, which specifies whether resources
+-- will be retained after the Domain is deleted. By default, all resources
+-- are retained (not automatically deleted).
+--
+-- 'domainId', 'deleteDomain_domainId' - The domain ID.
+newDeleteDomain ::
+  -- | 'domainId'
+  Prelude.Text ->
+  DeleteDomain
+newDeleteDomain pDomainId_ =
+  DeleteDomain'
+    { retentionPolicy = Prelude.Nothing,
+      domainId = pDomainId_
+    }
+
+-- | The retention policy for this domain, which specifies whether resources
+-- will be retained after the Domain is deleted. By default, all resources
+-- are retained (not automatically deleted).
+deleteDomain_retentionPolicy :: Lens.Lens' DeleteDomain (Prelude.Maybe RetentionPolicy)
+deleteDomain_retentionPolicy = Lens.lens (\DeleteDomain' {retentionPolicy} -> retentionPolicy) (\s@DeleteDomain' {} a -> s {retentionPolicy = a} :: DeleteDomain)
+
+-- | The domain ID.
+deleteDomain_domainId :: Lens.Lens' DeleteDomain Prelude.Text
+deleteDomain_domainId = Lens.lens (\DeleteDomain' {domainId} -> domainId) (\s@DeleteDomain' {} a -> s {domainId = a} :: DeleteDomain)
+
+instance Core.AWSRequest DeleteDomain where
+  type AWSResponse DeleteDomain = DeleteDomainResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteDomainResponse'
+
+instance Prelude.Hashable DeleteDomain where
+  hashWithSalt _salt DeleteDomain' {..} =
+    _salt
+      `Prelude.hashWithSalt` retentionPolicy
+      `Prelude.hashWithSalt` domainId
+
+instance Prelude.NFData DeleteDomain where
+  rnf DeleteDomain' {..} =
+    Prelude.rnf retentionPolicy
+      `Prelude.seq` Prelude.rnf domainId
+
+instance Data.ToHeaders DeleteDomain where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteDomain" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteDomain where
+  toJSON DeleteDomain' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RetentionPolicy" Data..=)
+              Prelude.<$> retentionPolicy,
+            Prelude.Just ("DomainId" Data..= domainId)
+          ]
+      )
+
+instance Data.ToPath DeleteDomain where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDomain where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDomainResponse' smart constructor.
+data DeleteDomainResponse = DeleteDomainResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDomainResponse' 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.
+newDeleteDomainResponse ::
+  DeleteDomainResponse
+newDeleteDomainResponse = DeleteDomainResponse'
+
+instance Prelude.NFData DeleteDomainResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteEdgeDeploymentPlan.hs b/gen/Amazonka/SageMaker/DeleteEdgeDeploymentPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteEdgeDeploymentPlan.hs
@@ -0,0 +1,146 @@
+{-# 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.DeleteEdgeDeploymentPlan
+-- 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 an edge deployment plan if (and only if) all the stages in the
+-- plan are inactive or there are no stages in the plan.
+module Amazonka.SageMaker.DeleteEdgeDeploymentPlan
+  ( -- * Creating a Request
+    DeleteEdgeDeploymentPlan (..),
+    newDeleteEdgeDeploymentPlan,
+
+    -- * Request Lenses
+    deleteEdgeDeploymentPlan_edgeDeploymentPlanName,
+
+    -- * Destructuring the Response
+    DeleteEdgeDeploymentPlanResponse (..),
+    newDeleteEdgeDeploymentPlanResponse,
+  )
+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:/ 'newDeleteEdgeDeploymentPlan' smart constructor.
+data DeleteEdgeDeploymentPlan = DeleteEdgeDeploymentPlan'
+  { -- | The name of the edge deployment plan to delete.
+    edgeDeploymentPlanName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEdgeDeploymentPlan' 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:
+--
+-- 'edgeDeploymentPlanName', 'deleteEdgeDeploymentPlan_edgeDeploymentPlanName' - The name of the edge deployment plan to delete.
+newDeleteEdgeDeploymentPlan ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  DeleteEdgeDeploymentPlan
+newDeleteEdgeDeploymentPlan pEdgeDeploymentPlanName_ =
+  DeleteEdgeDeploymentPlan'
+    { edgeDeploymentPlanName =
+        pEdgeDeploymentPlanName_
+    }
+
+-- | The name of the edge deployment plan to delete.
+deleteEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens.Lens' DeleteEdgeDeploymentPlan Prelude.Text
+deleteEdgeDeploymentPlan_edgeDeploymentPlanName = Lens.lens (\DeleteEdgeDeploymentPlan' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@DeleteEdgeDeploymentPlan' {} a -> s {edgeDeploymentPlanName = a} :: DeleteEdgeDeploymentPlan)
+
+instance Core.AWSRequest DeleteEdgeDeploymentPlan where
+  type
+    AWSResponse DeleteEdgeDeploymentPlan =
+      DeleteEdgeDeploymentPlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteEdgeDeploymentPlanResponse'
+
+instance Prelude.Hashable DeleteEdgeDeploymentPlan where
+  hashWithSalt _salt DeleteEdgeDeploymentPlan' {..} =
+    _salt `Prelude.hashWithSalt` edgeDeploymentPlanName
+
+instance Prelude.NFData DeleteEdgeDeploymentPlan where
+  rnf DeleteEdgeDeploymentPlan' {..} =
+    Prelude.rnf edgeDeploymentPlanName
+
+instance Data.ToHeaders DeleteEdgeDeploymentPlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteEdgeDeploymentPlan" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteEdgeDeploymentPlan where
+  toJSON DeleteEdgeDeploymentPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteEdgeDeploymentPlan where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteEdgeDeploymentPlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEdgeDeploymentPlanResponse' smart constructor.
+data DeleteEdgeDeploymentPlanResponse = DeleteEdgeDeploymentPlanResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEdgeDeploymentPlanResponse' 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.
+newDeleteEdgeDeploymentPlanResponse ::
+  DeleteEdgeDeploymentPlanResponse
+newDeleteEdgeDeploymentPlanResponse =
+  DeleteEdgeDeploymentPlanResponse'
+
+instance
+  Prelude.NFData
+    DeleteEdgeDeploymentPlanResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteEdgeDeploymentStage.hs b/gen/Amazonka/SageMaker/DeleteEdgeDeploymentStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteEdgeDeploymentStage.hs
@@ -0,0 +1,167 @@
+{-# 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.DeleteEdgeDeploymentStage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a stage in an edge deployment plan if (and only if) the stage is
+-- inactive.
+module Amazonka.SageMaker.DeleteEdgeDeploymentStage
+  ( -- * Creating a Request
+    DeleteEdgeDeploymentStage (..),
+    newDeleteEdgeDeploymentStage,
+
+    -- * Request Lenses
+    deleteEdgeDeploymentStage_edgeDeploymentPlanName,
+    deleteEdgeDeploymentStage_stageName,
+
+    -- * Destructuring the Response
+    DeleteEdgeDeploymentStageResponse (..),
+    newDeleteEdgeDeploymentStageResponse,
+  )
+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:/ 'newDeleteEdgeDeploymentStage' smart constructor.
+data DeleteEdgeDeploymentStage = DeleteEdgeDeploymentStage'
+  { -- | The name of the edge deployment plan from which the stage will be
+    -- deleted.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | The name of the stage.
+    stageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEdgeDeploymentStage' 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:
+--
+-- 'edgeDeploymentPlanName', 'deleteEdgeDeploymentStage_edgeDeploymentPlanName' - The name of the edge deployment plan from which the stage will be
+-- deleted.
+--
+-- 'stageName', 'deleteEdgeDeploymentStage_stageName' - The name of the stage.
+newDeleteEdgeDeploymentStage ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'stageName'
+  Prelude.Text ->
+  DeleteEdgeDeploymentStage
+newDeleteEdgeDeploymentStage
+  pEdgeDeploymentPlanName_
+  pStageName_ =
+    DeleteEdgeDeploymentStage'
+      { edgeDeploymentPlanName =
+          pEdgeDeploymentPlanName_,
+        stageName = pStageName_
+      }
+
+-- | The name of the edge deployment plan from which the stage will be
+-- deleted.
+deleteEdgeDeploymentStage_edgeDeploymentPlanName :: Lens.Lens' DeleteEdgeDeploymentStage Prelude.Text
+deleteEdgeDeploymentStage_edgeDeploymentPlanName = Lens.lens (\DeleteEdgeDeploymentStage' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@DeleteEdgeDeploymentStage' {} a -> s {edgeDeploymentPlanName = a} :: DeleteEdgeDeploymentStage)
+
+-- | The name of the stage.
+deleteEdgeDeploymentStage_stageName :: Lens.Lens' DeleteEdgeDeploymentStage Prelude.Text
+deleteEdgeDeploymentStage_stageName = Lens.lens (\DeleteEdgeDeploymentStage' {stageName} -> stageName) (\s@DeleteEdgeDeploymentStage' {} a -> s {stageName = a} :: DeleteEdgeDeploymentStage)
+
+instance Core.AWSRequest DeleteEdgeDeploymentStage where
+  type
+    AWSResponse DeleteEdgeDeploymentStage =
+      DeleteEdgeDeploymentStageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteEdgeDeploymentStageResponse'
+
+instance Prelude.Hashable DeleteEdgeDeploymentStage where
+  hashWithSalt _salt DeleteEdgeDeploymentStage' {..} =
+    _salt
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` stageName
+
+instance Prelude.NFData DeleteEdgeDeploymentStage where
+  rnf DeleteEdgeDeploymentStage' {..} =
+    Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf stageName
+
+instance Data.ToHeaders DeleteEdgeDeploymentStage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteEdgeDeploymentStage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteEdgeDeploymentStage where
+  toJSON DeleteEdgeDeploymentStage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              ),
+            Prelude.Just ("StageName" Data..= stageName)
+          ]
+      )
+
+instance Data.ToPath DeleteEdgeDeploymentStage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteEdgeDeploymentStage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEdgeDeploymentStageResponse' smart constructor.
+data DeleteEdgeDeploymentStageResponse = DeleteEdgeDeploymentStageResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEdgeDeploymentStageResponse' 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.
+newDeleteEdgeDeploymentStageResponse ::
+  DeleteEdgeDeploymentStageResponse
+newDeleteEdgeDeploymentStageResponse =
+  DeleteEdgeDeploymentStageResponse'
+
+instance
+  Prelude.NFData
+    DeleteEdgeDeploymentStageResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteEndpoint.hs b/gen/Amazonka/SageMaker/DeleteEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteEndpoint.hs
@@ -0,0 +1,143 @@
+{-# 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.DeleteEndpoint
+-- 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 an endpoint. SageMaker frees up all of the resources that were
+-- deployed when the endpoint was created.
+--
+-- SageMaker retires any custom KMS key grants associated with the
+-- endpoint, meaning you don\'t need to use the
+-- <http://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html RevokeGrant>
+-- API call.
+--
+-- When you delete your endpoint, SageMaker asynchronously deletes
+-- associated endpoint resources such as KMS key grants. You might still
+-- see these resources in your account for a few minutes after deleting
+-- your endpoint. Do not delete or revoke the permissions for your
+-- @ @<https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn ExecutionRoleArn>@ @,
+-- otherwise SageMaker cannot delete these resources.
+module Amazonka.SageMaker.DeleteEndpoint
+  ( -- * Creating a Request
+    DeleteEndpoint (..),
+    newDeleteEndpoint,
+
+    -- * Request Lenses
+    deleteEndpoint_endpointName,
+
+    -- * Destructuring the Response
+    DeleteEndpointResponse (..),
+    newDeleteEndpointResponse,
+  )
+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:/ 'newDeleteEndpoint' smart constructor.
+data DeleteEndpoint = DeleteEndpoint'
+  { -- | The name of the endpoint that you want to delete.
+    endpointName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEndpoint' 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:
+--
+-- 'endpointName', 'deleteEndpoint_endpointName' - The name of the endpoint that you want to delete.
+newDeleteEndpoint ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  DeleteEndpoint
+newDeleteEndpoint pEndpointName_ =
+  DeleteEndpoint' {endpointName = pEndpointName_}
+
+-- | The name of the endpoint that you want to delete.
+deleteEndpoint_endpointName :: Lens.Lens' DeleteEndpoint Prelude.Text
+deleteEndpoint_endpointName = Lens.lens (\DeleteEndpoint' {endpointName} -> endpointName) (\s@DeleteEndpoint' {} a -> s {endpointName = a} :: DeleteEndpoint)
+
+instance Core.AWSRequest DeleteEndpoint where
+  type
+    AWSResponse DeleteEndpoint =
+      DeleteEndpointResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteEndpointResponse'
+
+instance Prelude.Hashable DeleteEndpoint where
+  hashWithSalt _salt DeleteEndpoint' {..} =
+    _salt `Prelude.hashWithSalt` endpointName
+
+instance Prelude.NFData DeleteEndpoint where
+  rnf DeleteEndpoint' {..} = Prelude.rnf endpointName
+
+instance Data.ToHeaders DeleteEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteEndpoint" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteEndpoint where
+  toJSON DeleteEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("EndpointName" Data..= endpointName)]
+      )
+
+instance Data.ToPath DeleteEndpoint where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEndpointResponse' smart constructor.
+data DeleteEndpointResponse = DeleteEndpointResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEndpointResponse' 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.
+newDeleteEndpointResponse ::
+  DeleteEndpointResponse
+newDeleteEndpointResponse = DeleteEndpointResponse'
+
+instance Prelude.NFData DeleteEndpointResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteEndpointConfig.hs b/gen/Amazonka/SageMaker/DeleteEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteEndpointConfig.hs
@@ -0,0 +1,148 @@
+{-# 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.DeleteEndpointConfig
+-- 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 an endpoint configuration. The @DeleteEndpointConfig@ API
+-- deletes only the specified configuration. It does not delete endpoints
+-- created using the configuration.
+--
+-- You must not delete an @EndpointConfig@ in use by an endpoint that is
+-- live or while the @UpdateEndpoint@ or @CreateEndpoint@ operations are
+-- being performed on the endpoint. If you delete the @EndpointConfig@ of
+-- an endpoint that is active or being created or updated you may lose
+-- visibility into the instance type the endpoint is using. The endpoint
+-- must be deleted in order to stop incurring charges.
+module Amazonka.SageMaker.DeleteEndpointConfig
+  ( -- * Creating a Request
+    DeleteEndpointConfig (..),
+    newDeleteEndpointConfig,
+
+    -- * Request Lenses
+    deleteEndpointConfig_endpointConfigName,
+
+    -- * Destructuring the Response
+    DeleteEndpointConfigResponse (..),
+    newDeleteEndpointConfigResponse,
+  )
+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:/ 'newDeleteEndpointConfig' smart constructor.
+data DeleteEndpointConfig = DeleteEndpointConfig'
+  { -- | The name of the endpoint configuration that you want to delete.
+    endpointConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEndpointConfig' 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:
+--
+-- 'endpointConfigName', 'deleteEndpointConfig_endpointConfigName' - The name of the endpoint configuration that you want to delete.
+newDeleteEndpointConfig ::
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  DeleteEndpointConfig
+newDeleteEndpointConfig pEndpointConfigName_ =
+  DeleteEndpointConfig'
+    { endpointConfigName =
+        pEndpointConfigName_
+    }
+
+-- | The name of the endpoint configuration that you want to delete.
+deleteEndpointConfig_endpointConfigName :: Lens.Lens' DeleteEndpointConfig Prelude.Text
+deleteEndpointConfig_endpointConfigName = Lens.lens (\DeleteEndpointConfig' {endpointConfigName} -> endpointConfigName) (\s@DeleteEndpointConfig' {} a -> s {endpointConfigName = a} :: DeleteEndpointConfig)
+
+instance Core.AWSRequest DeleteEndpointConfig where
+  type
+    AWSResponse DeleteEndpointConfig =
+      DeleteEndpointConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteEndpointConfigResponse'
+
+instance Prelude.Hashable DeleteEndpointConfig where
+  hashWithSalt _salt DeleteEndpointConfig' {..} =
+    _salt `Prelude.hashWithSalt` endpointConfigName
+
+instance Prelude.NFData DeleteEndpointConfig where
+  rnf DeleteEndpointConfig' {..} =
+    Prelude.rnf endpointConfigName
+
+instance Data.ToHeaders DeleteEndpointConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteEndpointConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteEndpointConfig where
+  toJSON DeleteEndpointConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("EndpointConfigName" Data..= endpointConfigName)
+          ]
+      )
+
+instance Data.ToPath DeleteEndpointConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteEndpointConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEndpointConfigResponse' smart constructor.
+data DeleteEndpointConfigResponse = DeleteEndpointConfigResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEndpointConfigResponse' 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.
+newDeleteEndpointConfigResponse ::
+  DeleteEndpointConfigResponse
+newDeleteEndpointConfigResponse =
+  DeleteEndpointConfigResponse'
+
+instance Prelude.NFData DeleteEndpointConfigResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteExperiment.hs b/gen/Amazonka/SageMaker/DeleteExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteExperiment.hs
@@ -0,0 +1,174 @@
+{-# 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.DeleteExperiment
+-- 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 an SageMaker experiment. All trials associated with the
+-- experiment must be deleted first. Use the ListTrials API to get a list
+-- of the trials associated with the experiment.
+module Amazonka.SageMaker.DeleteExperiment
+  ( -- * Creating a Request
+    DeleteExperiment (..),
+    newDeleteExperiment,
+
+    -- * Request Lenses
+    deleteExperiment_experimentName,
+
+    -- * Destructuring the Response
+    DeleteExperimentResponse (..),
+    newDeleteExperimentResponse,
+
+    -- * Response Lenses
+    deleteExperimentResponse_experimentArn,
+    deleteExperimentResponse_httpStatus,
+  )
+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:/ 'newDeleteExperiment' smart constructor.
+data DeleteExperiment = DeleteExperiment'
+  { -- | The name of the experiment to delete.
+    experimentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteExperiment' 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:
+--
+-- 'experimentName', 'deleteExperiment_experimentName' - The name of the experiment to delete.
+newDeleteExperiment ::
+  -- | 'experimentName'
+  Prelude.Text ->
+  DeleteExperiment
+newDeleteExperiment pExperimentName_ =
+  DeleteExperiment'
+    { experimentName =
+        pExperimentName_
+    }
+
+-- | The name of the experiment to delete.
+deleteExperiment_experimentName :: Lens.Lens' DeleteExperiment Prelude.Text
+deleteExperiment_experimentName = Lens.lens (\DeleteExperiment' {experimentName} -> experimentName) (\s@DeleteExperiment' {} a -> s {experimentName = a} :: DeleteExperiment)
+
+instance Core.AWSRequest DeleteExperiment where
+  type
+    AWSResponse DeleteExperiment =
+      DeleteExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteExperimentResponse'
+            Prelude.<$> (x Data..?> "ExperimentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteExperiment where
+  hashWithSalt _salt DeleteExperiment' {..} =
+    _salt `Prelude.hashWithSalt` experimentName
+
+instance Prelude.NFData DeleteExperiment where
+  rnf DeleteExperiment' {..} =
+    Prelude.rnf experimentName
+
+instance Data.ToHeaders DeleteExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteExperiment" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteExperiment where
+  toJSON DeleteExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ExperimentName" Data..= experimentName)
+          ]
+      )
+
+instance Data.ToPath DeleteExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteExperimentResponse' smart constructor.
+data DeleteExperimentResponse = DeleteExperimentResponse'
+  { -- | The Amazon Resource Name (ARN) of the experiment that is being deleted.
+    experimentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteExperimentResponse' 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:
+--
+-- 'experimentArn', 'deleteExperimentResponse_experimentArn' - The Amazon Resource Name (ARN) of the experiment that is being deleted.
+--
+-- 'httpStatus', 'deleteExperimentResponse_httpStatus' - The response's http status code.
+newDeleteExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteExperimentResponse
+newDeleteExperimentResponse pHttpStatus_ =
+  DeleteExperimentResponse'
+    { experimentArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the experiment that is being deleted.
+deleteExperimentResponse_experimentArn :: Lens.Lens' DeleteExperimentResponse (Prelude.Maybe Prelude.Text)
+deleteExperimentResponse_experimentArn = Lens.lens (\DeleteExperimentResponse' {experimentArn} -> experimentArn) (\s@DeleteExperimentResponse' {} a -> s {experimentArn = a} :: DeleteExperimentResponse)
+
+-- | The response's http status code.
+deleteExperimentResponse_httpStatus :: Lens.Lens' DeleteExperimentResponse Prelude.Int
+deleteExperimentResponse_httpStatus = Lens.lens (\DeleteExperimentResponse' {httpStatus} -> httpStatus) (\s@DeleteExperimentResponse' {} a -> s {httpStatus = a} :: DeleteExperimentResponse)
+
+instance Prelude.NFData DeleteExperimentResponse where
+  rnf DeleteExperimentResponse' {..} =
+    Prelude.rnf experimentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteFeatureGroup.hs b/gen/Amazonka/SageMaker/DeleteFeatureGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteFeatureGroup.hs
@@ -0,0 +1,151 @@
+{-# 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.DeleteFeatureGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete the @FeatureGroup@ and any data that was written to the
+-- @OnlineStore@ of the @FeatureGroup@. Data cannot be accessed from the
+-- @OnlineStore@ immediately after @DeleteFeatureGroup@ is called.
+--
+-- Data written into the @OfflineStore@ will not be deleted. The Amazon Web
+-- Services Glue database and tables that are automatically created for
+-- your @OfflineStore@ are not deleted.
+module Amazonka.SageMaker.DeleteFeatureGroup
+  ( -- * Creating a Request
+    DeleteFeatureGroup (..),
+    newDeleteFeatureGroup,
+
+    -- * Request Lenses
+    deleteFeatureGroup_featureGroupName,
+
+    -- * Destructuring the Response
+    DeleteFeatureGroupResponse (..),
+    newDeleteFeatureGroupResponse,
+  )
+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:/ 'newDeleteFeatureGroup' smart constructor.
+data DeleteFeatureGroup = DeleteFeatureGroup'
+  { -- | The name of the @FeatureGroup@ you want to delete. The name must be
+    -- unique within an Amazon Web Services Region in an Amazon Web Services
+    -- account.
+    featureGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFeatureGroup' 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:
+--
+-- 'featureGroupName', 'deleteFeatureGroup_featureGroupName' - The name of the @FeatureGroup@ you want to delete. The name must be
+-- unique within an Amazon Web Services Region in an Amazon Web Services
+-- account.
+newDeleteFeatureGroup ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  DeleteFeatureGroup
+newDeleteFeatureGroup pFeatureGroupName_ =
+  DeleteFeatureGroup'
+    { featureGroupName =
+        pFeatureGroupName_
+    }
+
+-- | The name of the @FeatureGroup@ you want to delete. The name must be
+-- unique within an Amazon Web Services Region in an Amazon Web Services
+-- account.
+deleteFeatureGroup_featureGroupName :: Lens.Lens' DeleteFeatureGroup Prelude.Text
+deleteFeatureGroup_featureGroupName = Lens.lens (\DeleteFeatureGroup' {featureGroupName} -> featureGroupName) (\s@DeleteFeatureGroup' {} a -> s {featureGroupName = a} :: DeleteFeatureGroup)
+
+instance Core.AWSRequest DeleteFeatureGroup where
+  type
+    AWSResponse DeleteFeatureGroup =
+      DeleteFeatureGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteFeatureGroupResponse'
+
+instance Prelude.Hashable DeleteFeatureGroup where
+  hashWithSalt _salt DeleteFeatureGroup' {..} =
+    _salt `Prelude.hashWithSalt` featureGroupName
+
+instance Prelude.NFData DeleteFeatureGroup where
+  rnf DeleteFeatureGroup' {..} =
+    Prelude.rnf featureGroupName
+
+instance Data.ToHeaders DeleteFeatureGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteFeatureGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteFeatureGroup where
+  toJSON DeleteFeatureGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName)
+          ]
+      )
+
+instance Data.ToPath DeleteFeatureGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteFeatureGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFeatureGroupResponse' smart constructor.
+data DeleteFeatureGroupResponse = DeleteFeatureGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFeatureGroupResponse' 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.
+newDeleteFeatureGroupResponse ::
+  DeleteFeatureGroupResponse
+newDeleteFeatureGroupResponse =
+  DeleteFeatureGroupResponse'
+
+instance Prelude.NFData DeleteFeatureGroupResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteFlowDefinition.hs b/gen/Amazonka/SageMaker/DeleteFlowDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteFlowDefinition.hs
@@ -0,0 +1,162 @@
+{-# 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.DeleteFlowDefinition
+-- 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 the specified flow definition.
+module Amazonka.SageMaker.DeleteFlowDefinition
+  ( -- * Creating a Request
+    DeleteFlowDefinition (..),
+    newDeleteFlowDefinition,
+
+    -- * Request Lenses
+    deleteFlowDefinition_flowDefinitionName,
+
+    -- * Destructuring the Response
+    DeleteFlowDefinitionResponse (..),
+    newDeleteFlowDefinitionResponse,
+
+    -- * Response Lenses
+    deleteFlowDefinitionResponse_httpStatus,
+  )
+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:/ 'newDeleteFlowDefinition' smart constructor.
+data DeleteFlowDefinition = DeleteFlowDefinition'
+  { -- | The name of the flow definition you are deleting.
+    flowDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFlowDefinition' 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:
+--
+-- 'flowDefinitionName', 'deleteFlowDefinition_flowDefinitionName' - The name of the flow definition you are deleting.
+newDeleteFlowDefinition ::
+  -- | 'flowDefinitionName'
+  Prelude.Text ->
+  DeleteFlowDefinition
+newDeleteFlowDefinition pFlowDefinitionName_ =
+  DeleteFlowDefinition'
+    { flowDefinitionName =
+        pFlowDefinitionName_
+    }
+
+-- | The name of the flow definition you are deleting.
+deleteFlowDefinition_flowDefinitionName :: Lens.Lens' DeleteFlowDefinition Prelude.Text
+deleteFlowDefinition_flowDefinitionName = Lens.lens (\DeleteFlowDefinition' {flowDefinitionName} -> flowDefinitionName) (\s@DeleteFlowDefinition' {} a -> s {flowDefinitionName = a} :: DeleteFlowDefinition)
+
+instance Core.AWSRequest DeleteFlowDefinition where
+  type
+    AWSResponse DeleteFlowDefinition =
+      DeleteFlowDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteFlowDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteFlowDefinition where
+  hashWithSalt _salt DeleteFlowDefinition' {..} =
+    _salt `Prelude.hashWithSalt` flowDefinitionName
+
+instance Prelude.NFData DeleteFlowDefinition where
+  rnf DeleteFlowDefinition' {..} =
+    Prelude.rnf flowDefinitionName
+
+instance Data.ToHeaders DeleteFlowDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteFlowDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteFlowDefinition where
+  toJSON DeleteFlowDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FlowDefinitionName" Data..= flowDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DeleteFlowDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteFlowDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFlowDefinitionResponse' smart constructor.
+data DeleteFlowDefinitionResponse = DeleteFlowDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFlowDefinitionResponse' 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', 'deleteFlowDefinitionResponse_httpStatus' - The response's http status code.
+newDeleteFlowDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteFlowDefinitionResponse
+newDeleteFlowDefinitionResponse pHttpStatus_ =
+  DeleteFlowDefinitionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteFlowDefinitionResponse_httpStatus :: Lens.Lens' DeleteFlowDefinitionResponse Prelude.Int
+deleteFlowDefinitionResponse_httpStatus = Lens.lens (\DeleteFlowDefinitionResponse' {httpStatus} -> httpStatus) (\s@DeleteFlowDefinitionResponse' {} a -> s {httpStatus = a} :: DeleteFlowDefinitionResponse)
+
+instance Prelude.NFData DeleteFlowDefinitionResponse where
+  rnf DeleteFlowDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteHub.hs b/gen/Amazonka/SageMaker/DeleteHub.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteHub.hs
@@ -0,0 +1,127 @@
+{-# 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.DeleteHub
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a hub.
+module Amazonka.SageMaker.DeleteHub
+  ( -- * Creating a Request
+    DeleteHub (..),
+    newDeleteHub,
+
+    -- * Request Lenses
+    deleteHub_hubName,
+
+    -- * Destructuring the Response
+    DeleteHubResponse (..),
+    newDeleteHubResponse,
+  )
+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:/ 'newDeleteHub' smart constructor.
+data DeleteHub = DeleteHub'
+  { -- | The name of the hub to delete.
+    hubName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteHub' 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:
+--
+-- 'hubName', 'deleteHub_hubName' - The name of the hub to delete.
+newDeleteHub ::
+  -- | 'hubName'
+  Prelude.Text ->
+  DeleteHub
+newDeleteHub pHubName_ =
+  DeleteHub' {hubName = pHubName_}
+
+-- | The name of the hub to delete.
+deleteHub_hubName :: Lens.Lens' DeleteHub Prelude.Text
+deleteHub_hubName = Lens.lens (\DeleteHub' {hubName} -> hubName) (\s@DeleteHub' {} a -> s {hubName = a} :: DeleteHub)
+
+instance Core.AWSRequest DeleteHub where
+  type AWSResponse DeleteHub = DeleteHubResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteHubResponse'
+
+instance Prelude.Hashable DeleteHub where
+  hashWithSalt _salt DeleteHub' {..} =
+    _salt `Prelude.hashWithSalt` hubName
+
+instance Prelude.NFData DeleteHub where
+  rnf DeleteHub' {..} = Prelude.rnf hubName
+
+instance Data.ToHeaders DeleteHub where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteHub" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteHub where
+  toJSON DeleteHub' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("HubName" Data..= hubName)]
+      )
+
+instance Data.ToPath DeleteHub where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteHub where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteHubResponse' smart constructor.
+data DeleteHubResponse = DeleteHubResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteHubResponse' 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.
+newDeleteHubResponse ::
+  DeleteHubResponse
+newDeleteHubResponse = DeleteHubResponse'
+
+instance Prelude.NFData DeleteHubResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteHubContent.hs b/gen/Amazonka/SageMaker/DeleteHubContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteHubContent.hs
@@ -0,0 +1,188 @@
+{-# 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.DeleteHubContent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete the contents of a hub.
+module Amazonka.SageMaker.DeleteHubContent
+  ( -- * Creating a Request
+    DeleteHubContent (..),
+    newDeleteHubContent,
+
+    -- * Request Lenses
+    deleteHubContent_hubName,
+    deleteHubContent_hubContentType,
+    deleteHubContent_hubContentName,
+    deleteHubContent_hubContentVersion,
+
+    -- * Destructuring the Response
+    DeleteHubContentResponse (..),
+    newDeleteHubContentResponse,
+  )
+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:/ 'newDeleteHubContent' smart constructor.
+data DeleteHubContent = DeleteHubContent'
+  { -- | The name of the hub that you want to delete content in.
+    hubName :: Prelude.Text,
+    -- | The type of content that you want to delete from a hub.
+    hubContentType :: HubContentType,
+    -- | The name of the content that you want to delete from a hub.
+    hubContentName :: Prelude.Text,
+    -- | The version of the content that you want to delete from a hub.
+    hubContentVersion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteHubContent' 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:
+--
+-- 'hubName', 'deleteHubContent_hubName' - The name of the hub that you want to delete content in.
+--
+-- 'hubContentType', 'deleteHubContent_hubContentType' - The type of content that you want to delete from a hub.
+--
+-- 'hubContentName', 'deleteHubContent_hubContentName' - The name of the content that you want to delete from a hub.
+--
+-- 'hubContentVersion', 'deleteHubContent_hubContentVersion' - The version of the content that you want to delete from a hub.
+newDeleteHubContent ::
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  -- | 'hubContentName'
+  Prelude.Text ->
+  -- | 'hubContentVersion'
+  Prelude.Text ->
+  DeleteHubContent
+newDeleteHubContent
+  pHubName_
+  pHubContentType_
+  pHubContentName_
+  pHubContentVersion_ =
+    DeleteHubContent'
+      { hubName = pHubName_,
+        hubContentType = pHubContentType_,
+        hubContentName = pHubContentName_,
+        hubContentVersion = pHubContentVersion_
+      }
+
+-- | The name of the hub that you want to delete content in.
+deleteHubContent_hubName :: Lens.Lens' DeleteHubContent Prelude.Text
+deleteHubContent_hubName = Lens.lens (\DeleteHubContent' {hubName} -> hubName) (\s@DeleteHubContent' {} a -> s {hubName = a} :: DeleteHubContent)
+
+-- | The type of content that you want to delete from a hub.
+deleteHubContent_hubContentType :: Lens.Lens' DeleteHubContent HubContentType
+deleteHubContent_hubContentType = Lens.lens (\DeleteHubContent' {hubContentType} -> hubContentType) (\s@DeleteHubContent' {} a -> s {hubContentType = a} :: DeleteHubContent)
+
+-- | The name of the content that you want to delete from a hub.
+deleteHubContent_hubContentName :: Lens.Lens' DeleteHubContent Prelude.Text
+deleteHubContent_hubContentName = Lens.lens (\DeleteHubContent' {hubContentName} -> hubContentName) (\s@DeleteHubContent' {} a -> s {hubContentName = a} :: DeleteHubContent)
+
+-- | The version of the content that you want to delete from a hub.
+deleteHubContent_hubContentVersion :: Lens.Lens' DeleteHubContent Prelude.Text
+deleteHubContent_hubContentVersion = Lens.lens (\DeleteHubContent' {hubContentVersion} -> hubContentVersion) (\s@DeleteHubContent' {} a -> s {hubContentVersion = a} :: DeleteHubContent)
+
+instance Core.AWSRequest DeleteHubContent where
+  type
+    AWSResponse DeleteHubContent =
+      DeleteHubContentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteHubContentResponse'
+
+instance Prelude.Hashable DeleteHubContent where
+  hashWithSalt _salt DeleteHubContent' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubContentType
+      `Prelude.hashWithSalt` hubContentName
+      `Prelude.hashWithSalt` hubContentVersion
+
+instance Prelude.NFData DeleteHubContent where
+  rnf DeleteHubContent' {..} =
+    Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubContentType
+      `Prelude.seq` Prelude.rnf hubContentName
+      `Prelude.seq` Prelude.rnf hubContentVersion
+
+instance Data.ToHeaders DeleteHubContent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteHubContent" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteHubContent where
+  toJSON DeleteHubContent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("HubName" Data..= hubName),
+            Prelude.Just
+              ("HubContentType" Data..= hubContentType),
+            Prelude.Just
+              ("HubContentName" Data..= hubContentName),
+            Prelude.Just
+              ("HubContentVersion" Data..= hubContentVersion)
+          ]
+      )
+
+instance Data.ToPath DeleteHubContent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteHubContent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteHubContentResponse' smart constructor.
+data DeleteHubContentResponse = DeleteHubContentResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteHubContentResponse' 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.
+newDeleteHubContentResponse ::
+  DeleteHubContentResponse
+newDeleteHubContentResponse =
+  DeleteHubContentResponse'
+
+instance Prelude.NFData DeleteHubContentResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteHumanTaskUi.hs b/gen/Amazonka/SageMaker/DeleteHumanTaskUi.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteHumanTaskUi.hs
@@ -0,0 +1,170 @@
+{-# 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.DeleteHumanTaskUi
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this operation to delete a human task user interface (worker task
+-- template).
+--
+-- To see a list of human task user interfaces (work task templates) in
+-- your account, use . When you delete a worker task template, it no longer
+-- appears when you call @ListHumanTaskUis@.
+module Amazonka.SageMaker.DeleteHumanTaskUi
+  ( -- * Creating a Request
+    DeleteHumanTaskUi (..),
+    newDeleteHumanTaskUi,
+
+    -- * Request Lenses
+    deleteHumanTaskUi_humanTaskUiName,
+
+    -- * Destructuring the Response
+    DeleteHumanTaskUiResponse (..),
+    newDeleteHumanTaskUiResponse,
+
+    -- * Response Lenses
+    deleteHumanTaskUiResponse_httpStatus,
+  )
+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:/ 'newDeleteHumanTaskUi' smart constructor.
+data DeleteHumanTaskUi = DeleteHumanTaskUi'
+  { -- | The name of the human task user interface (work task template) you want
+    -- to delete.
+    humanTaskUiName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteHumanTaskUi' 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:
+--
+-- 'humanTaskUiName', 'deleteHumanTaskUi_humanTaskUiName' - The name of the human task user interface (work task template) you want
+-- to delete.
+newDeleteHumanTaskUi ::
+  -- | 'humanTaskUiName'
+  Prelude.Text ->
+  DeleteHumanTaskUi
+newDeleteHumanTaskUi pHumanTaskUiName_ =
+  DeleteHumanTaskUi'
+    { humanTaskUiName =
+        pHumanTaskUiName_
+    }
+
+-- | The name of the human task user interface (work task template) you want
+-- to delete.
+deleteHumanTaskUi_humanTaskUiName :: Lens.Lens' DeleteHumanTaskUi Prelude.Text
+deleteHumanTaskUi_humanTaskUiName = Lens.lens (\DeleteHumanTaskUi' {humanTaskUiName} -> humanTaskUiName) (\s@DeleteHumanTaskUi' {} a -> s {humanTaskUiName = a} :: DeleteHumanTaskUi)
+
+instance Core.AWSRequest DeleteHumanTaskUi where
+  type
+    AWSResponse DeleteHumanTaskUi =
+      DeleteHumanTaskUiResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteHumanTaskUiResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteHumanTaskUi where
+  hashWithSalt _salt DeleteHumanTaskUi' {..} =
+    _salt `Prelude.hashWithSalt` humanTaskUiName
+
+instance Prelude.NFData DeleteHumanTaskUi where
+  rnf DeleteHumanTaskUi' {..} =
+    Prelude.rnf humanTaskUiName
+
+instance Data.ToHeaders DeleteHumanTaskUi where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteHumanTaskUi" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteHumanTaskUi where
+  toJSON DeleteHumanTaskUi' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("HumanTaskUiName" Data..= humanTaskUiName)
+          ]
+      )
+
+instance Data.ToPath DeleteHumanTaskUi where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteHumanTaskUi where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteHumanTaskUiResponse' smart constructor.
+data DeleteHumanTaskUiResponse = DeleteHumanTaskUiResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteHumanTaskUiResponse' 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', 'deleteHumanTaskUiResponse_httpStatus' - The response's http status code.
+newDeleteHumanTaskUiResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteHumanTaskUiResponse
+newDeleteHumanTaskUiResponse pHttpStatus_ =
+  DeleteHumanTaskUiResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteHumanTaskUiResponse_httpStatus :: Lens.Lens' DeleteHumanTaskUiResponse Prelude.Int
+deleteHumanTaskUiResponse_httpStatus = Lens.lens (\DeleteHumanTaskUiResponse' {httpStatus} -> httpStatus) (\s@DeleteHumanTaskUiResponse' {} a -> s {httpStatus = a} :: DeleteHumanTaskUiResponse)
+
+instance Prelude.NFData DeleteHumanTaskUiResponse where
+  rnf DeleteHumanTaskUiResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteImage.hs b/gen/Amazonka/SageMaker/DeleteImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteImage.hs
@@ -0,0 +1,149 @@
+{-# 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.DeleteImage
+-- 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 a SageMaker image and all versions of the image. The container
+-- images aren\'t deleted.
+module Amazonka.SageMaker.DeleteImage
+  ( -- * Creating a Request
+    DeleteImage (..),
+    newDeleteImage,
+
+    -- * Request Lenses
+    deleteImage_imageName,
+
+    -- * Destructuring the Response
+    DeleteImageResponse (..),
+    newDeleteImageResponse,
+
+    -- * Response Lenses
+    deleteImageResponse_httpStatus,
+  )
+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:/ 'newDeleteImage' smart constructor.
+data DeleteImage = DeleteImage'
+  { -- | The name of the image to delete.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteImage' 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:
+--
+-- 'imageName', 'deleteImage_imageName' - The name of the image to delete.
+newDeleteImage ::
+  -- | 'imageName'
+  Prelude.Text ->
+  DeleteImage
+newDeleteImage pImageName_ =
+  DeleteImage' {imageName = pImageName_}
+
+-- | The name of the image to delete.
+deleteImage_imageName :: Lens.Lens' DeleteImage Prelude.Text
+deleteImage_imageName = Lens.lens (\DeleteImage' {imageName} -> imageName) (\s@DeleteImage' {} a -> s {imageName = a} :: DeleteImage)
+
+instance Core.AWSRequest DeleteImage where
+  type AWSResponse DeleteImage = DeleteImageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteImageResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteImage where
+  hashWithSalt _salt DeleteImage' {..} =
+    _salt `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData DeleteImage where
+  rnf DeleteImage' {..} = Prelude.rnf imageName
+
+instance Data.ToHeaders DeleteImage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteImage" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteImage where
+  toJSON DeleteImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ImageName" Data..= imageName)]
+      )
+
+instance Data.ToPath DeleteImage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteImage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteImageResponse' smart constructor.
+data DeleteImageResponse = DeleteImageResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteImageResponse' 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', 'deleteImageResponse_httpStatus' - The response's http status code.
+newDeleteImageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteImageResponse
+newDeleteImageResponse pHttpStatus_ =
+  DeleteImageResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteImageResponse_httpStatus :: Lens.Lens' DeleteImageResponse Prelude.Int
+deleteImageResponse_httpStatus = Lens.lens (\DeleteImageResponse' {httpStatus} -> httpStatus) (\s@DeleteImageResponse' {} a -> s {httpStatus = a} :: DeleteImageResponse)
+
+instance Prelude.NFData DeleteImageResponse where
+  rnf DeleteImageResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteImageVersion.hs b/gen/Amazonka/SageMaker/DeleteImageVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteImageVersion.hs
@@ -0,0 +1,188 @@
+{-# 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.DeleteImageVersion
+-- 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 a version of a SageMaker image. The container image the version
+-- represents isn\'t deleted.
+module Amazonka.SageMaker.DeleteImageVersion
+  ( -- * Creating a Request
+    DeleteImageVersion (..),
+    newDeleteImageVersion,
+
+    -- * Request Lenses
+    deleteImageVersion_alias,
+    deleteImageVersion_version,
+    deleteImageVersion_imageName,
+
+    -- * Destructuring the Response
+    DeleteImageVersionResponse (..),
+    newDeleteImageVersionResponse,
+
+    -- * Response Lenses
+    deleteImageVersionResponse_httpStatus,
+  )
+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:/ 'newDeleteImageVersion' smart constructor.
+data DeleteImageVersion = DeleteImageVersion'
+  { -- | The alias of the image to delete.
+    alias :: Prelude.Maybe Prelude.Text,
+    -- | The version to delete.
+    version :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the image to delete.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteImageVersion' 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:
+--
+-- 'alias', 'deleteImageVersion_alias' - The alias of the image to delete.
+--
+-- 'version', 'deleteImageVersion_version' - The version to delete.
+--
+-- 'imageName', 'deleteImageVersion_imageName' - The name of the image to delete.
+newDeleteImageVersion ::
+  -- | 'imageName'
+  Prelude.Text ->
+  DeleteImageVersion
+newDeleteImageVersion pImageName_ =
+  DeleteImageVersion'
+    { alias = Prelude.Nothing,
+      version = Prelude.Nothing,
+      imageName = pImageName_
+    }
+
+-- | The alias of the image to delete.
+deleteImageVersion_alias :: Lens.Lens' DeleteImageVersion (Prelude.Maybe Prelude.Text)
+deleteImageVersion_alias = Lens.lens (\DeleteImageVersion' {alias} -> alias) (\s@DeleteImageVersion' {} a -> s {alias = a} :: DeleteImageVersion)
+
+-- | The version to delete.
+deleteImageVersion_version :: Lens.Lens' DeleteImageVersion (Prelude.Maybe Prelude.Natural)
+deleteImageVersion_version = Lens.lens (\DeleteImageVersion' {version} -> version) (\s@DeleteImageVersion' {} a -> s {version = a} :: DeleteImageVersion)
+
+-- | The name of the image to delete.
+deleteImageVersion_imageName :: Lens.Lens' DeleteImageVersion Prelude.Text
+deleteImageVersion_imageName = Lens.lens (\DeleteImageVersion' {imageName} -> imageName) (\s@DeleteImageVersion' {} a -> s {imageName = a} :: DeleteImageVersion)
+
+instance Core.AWSRequest DeleteImageVersion where
+  type
+    AWSResponse DeleteImageVersion =
+      DeleteImageVersionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteImageVersionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteImageVersion where
+  hashWithSalt _salt DeleteImageVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` version
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData DeleteImageVersion where
+  rnf DeleteImageVersion' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf version
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders DeleteImageVersion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteImageVersion" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteImageVersion where
+  toJSON DeleteImageVersion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Alias" Data..=) Prelude.<$> alias,
+            ("Version" Data..=) Prelude.<$> version,
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath DeleteImageVersion where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteImageVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteImageVersionResponse' smart constructor.
+data DeleteImageVersionResponse = DeleteImageVersionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteImageVersionResponse' 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', 'deleteImageVersionResponse_httpStatus' - The response's http status code.
+newDeleteImageVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteImageVersionResponse
+newDeleteImageVersionResponse pHttpStatus_ =
+  DeleteImageVersionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteImageVersionResponse_httpStatus :: Lens.Lens' DeleteImageVersionResponse Prelude.Int
+deleteImageVersionResponse_httpStatus = Lens.lens (\DeleteImageVersionResponse' {httpStatus} -> httpStatus) (\s@DeleteImageVersionResponse' {} a -> s {httpStatus = a} :: DeleteImageVersionResponse)
+
+instance Prelude.NFData DeleteImageVersionResponse where
+  rnf DeleteImageVersionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteInferenceExperiment.hs b/gen/Amazonka/SageMaker/DeleteInferenceExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteInferenceExperiment.hs
@@ -0,0 +1,180 @@
+{-# 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.DeleteInferenceExperiment
+-- 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 an inference experiment.
+--
+-- This operation does not delete your endpoint, variants, or any
+-- underlying resources. This operation only deletes the metadata of your
+-- experiment.
+module Amazonka.SageMaker.DeleteInferenceExperiment
+  ( -- * Creating a Request
+    DeleteInferenceExperiment (..),
+    newDeleteInferenceExperiment,
+
+    -- * Request Lenses
+    deleteInferenceExperiment_name,
+
+    -- * Destructuring the Response
+    DeleteInferenceExperimentResponse (..),
+    newDeleteInferenceExperimentResponse,
+
+    -- * Response Lenses
+    deleteInferenceExperimentResponse_httpStatus,
+    deleteInferenceExperimentResponse_inferenceExperimentArn,
+  )
+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:/ 'newDeleteInferenceExperiment' smart constructor.
+data DeleteInferenceExperiment = DeleteInferenceExperiment'
+  { -- | The name of the inference experiment you want to delete.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteInferenceExperiment' 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:
+--
+-- 'name', 'deleteInferenceExperiment_name' - The name of the inference experiment you want to delete.
+newDeleteInferenceExperiment ::
+  -- | 'name'
+  Prelude.Text ->
+  DeleteInferenceExperiment
+newDeleteInferenceExperiment pName_ =
+  DeleteInferenceExperiment' {name = pName_}
+
+-- | The name of the inference experiment you want to delete.
+deleteInferenceExperiment_name :: Lens.Lens' DeleteInferenceExperiment Prelude.Text
+deleteInferenceExperiment_name = Lens.lens (\DeleteInferenceExperiment' {name} -> name) (\s@DeleteInferenceExperiment' {} a -> s {name = a} :: DeleteInferenceExperiment)
+
+instance Core.AWSRequest DeleteInferenceExperiment where
+  type
+    AWSResponse DeleteInferenceExperiment =
+      DeleteInferenceExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteInferenceExperimentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InferenceExperimentArn")
+      )
+
+instance Prelude.Hashable DeleteInferenceExperiment where
+  hashWithSalt _salt DeleteInferenceExperiment' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DeleteInferenceExperiment where
+  rnf DeleteInferenceExperiment' {..} = Prelude.rnf name
+
+instance Data.ToHeaders DeleteInferenceExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteInferenceExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteInferenceExperiment where
+  toJSON DeleteInferenceExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
+
+instance Data.ToPath DeleteInferenceExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteInferenceExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteInferenceExperimentResponse' smart constructor.
+data DeleteInferenceExperimentResponse = DeleteInferenceExperimentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the deleted inference experiment.
+    inferenceExperimentArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteInferenceExperimentResponse' 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', 'deleteInferenceExperimentResponse_httpStatus' - The response's http status code.
+--
+-- 'inferenceExperimentArn', 'deleteInferenceExperimentResponse_inferenceExperimentArn' - The ARN of the deleted inference experiment.
+newDeleteInferenceExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'inferenceExperimentArn'
+  Prelude.Text ->
+  DeleteInferenceExperimentResponse
+newDeleteInferenceExperimentResponse
+  pHttpStatus_
+  pInferenceExperimentArn_ =
+    DeleteInferenceExperimentResponse'
+      { httpStatus =
+          pHttpStatus_,
+        inferenceExperimentArn =
+          pInferenceExperimentArn_
+      }
+
+-- | The response's http status code.
+deleteInferenceExperimentResponse_httpStatus :: Lens.Lens' DeleteInferenceExperimentResponse Prelude.Int
+deleteInferenceExperimentResponse_httpStatus = Lens.lens (\DeleteInferenceExperimentResponse' {httpStatus} -> httpStatus) (\s@DeleteInferenceExperimentResponse' {} a -> s {httpStatus = a} :: DeleteInferenceExperimentResponse)
+
+-- | The ARN of the deleted inference experiment.
+deleteInferenceExperimentResponse_inferenceExperimentArn :: Lens.Lens' DeleteInferenceExperimentResponse Prelude.Text
+deleteInferenceExperimentResponse_inferenceExperimentArn = Lens.lens (\DeleteInferenceExperimentResponse' {inferenceExperimentArn} -> inferenceExperimentArn) (\s@DeleteInferenceExperimentResponse' {} a -> s {inferenceExperimentArn = a} :: DeleteInferenceExperimentResponse)
+
+instance
+  Prelude.NFData
+    DeleteInferenceExperimentResponse
+  where
+  rnf DeleteInferenceExperimentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf inferenceExperimentArn
diff --git a/gen/Amazonka/SageMaker/DeleteModel.hs b/gen/Amazonka/SageMaker/DeleteModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModel.hs
@@ -0,0 +1,130 @@
+{-# 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.DeleteModel
+-- 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 a model. The @DeleteModel@ API deletes only the model entry that
+-- was created in SageMaker when you called the @CreateModel@ API. It does
+-- not delete model artifacts, inference code, or the IAM role that you
+-- specified when creating the model.
+module Amazonka.SageMaker.DeleteModel
+  ( -- * Creating a Request
+    DeleteModel (..),
+    newDeleteModel,
+
+    -- * Request Lenses
+    deleteModel_modelName,
+
+    -- * Destructuring the Response
+    DeleteModelResponse (..),
+    newDeleteModelResponse,
+  )
+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:/ 'newDeleteModel' smart constructor.
+data DeleteModel = DeleteModel'
+  { -- | The name of the model to delete.
+    modelName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModel' 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:
+--
+-- 'modelName', 'deleteModel_modelName' - The name of the model to delete.
+newDeleteModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  DeleteModel
+newDeleteModel pModelName_ =
+  DeleteModel' {modelName = pModelName_}
+
+-- | The name of the model to delete.
+deleteModel_modelName :: Lens.Lens' DeleteModel Prelude.Text
+deleteModel_modelName = Lens.lens (\DeleteModel' {modelName} -> modelName) (\s@DeleteModel' {} a -> s {modelName = a} :: DeleteModel)
+
+instance Core.AWSRequest DeleteModel where
+  type AWSResponse DeleteModel = DeleteModelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteModelResponse'
+
+instance Prelude.Hashable DeleteModel where
+  hashWithSalt _salt DeleteModel' {..} =
+    _salt `Prelude.hashWithSalt` modelName
+
+instance Prelude.NFData DeleteModel where
+  rnf DeleteModel' {..} = Prelude.rnf modelName
+
+instance Data.ToHeaders DeleteModel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteModel" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModel where
+  toJSON DeleteModel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ModelName" Data..= modelName)]
+      )
+
+instance Data.ToPath DeleteModel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelResponse' smart constructor.
+data DeleteModelResponse = DeleteModelResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelResponse' 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.
+newDeleteModelResponse ::
+  DeleteModelResponse
+newDeleteModelResponse = DeleteModelResponse'
+
+instance Prelude.NFData DeleteModelResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelBiasJobDefinition.hs b/gen/Amazonka/SageMaker/DeleteModelBiasJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelBiasJobDefinition.hs
@@ -0,0 +1,146 @@
+{-# 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.DeleteModelBiasJobDefinition
+-- 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 an Amazon SageMaker model bias job definition.
+module Amazonka.SageMaker.DeleteModelBiasJobDefinition
+  ( -- * Creating a Request
+    DeleteModelBiasJobDefinition (..),
+    newDeleteModelBiasJobDefinition,
+
+    -- * Request Lenses
+    deleteModelBiasJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DeleteModelBiasJobDefinitionResponse (..),
+    newDeleteModelBiasJobDefinitionResponse,
+  )
+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:/ 'newDeleteModelBiasJobDefinition' smart constructor.
+data DeleteModelBiasJobDefinition = DeleteModelBiasJobDefinition'
+  { -- | The name of the model bias job definition to delete.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelBiasJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'deleteModelBiasJobDefinition_jobDefinitionName' - The name of the model bias job definition to delete.
+newDeleteModelBiasJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DeleteModelBiasJobDefinition
+newDeleteModelBiasJobDefinition pJobDefinitionName_ =
+  DeleteModelBiasJobDefinition'
+    { jobDefinitionName =
+        pJobDefinitionName_
+    }
+
+-- | The name of the model bias job definition to delete.
+deleteModelBiasJobDefinition_jobDefinitionName :: Lens.Lens' DeleteModelBiasJobDefinition Prelude.Text
+deleteModelBiasJobDefinition_jobDefinitionName = Lens.lens (\DeleteModelBiasJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DeleteModelBiasJobDefinition' {} a -> s {jobDefinitionName = a} :: DeleteModelBiasJobDefinition)
+
+instance Core.AWSRequest DeleteModelBiasJobDefinition where
+  type
+    AWSResponse DeleteModelBiasJobDefinition =
+      DeleteModelBiasJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteModelBiasJobDefinitionResponse'
+
+instance
+  Prelude.Hashable
+    DeleteModelBiasJobDefinition
+  where
+  hashWithSalt _salt DeleteModelBiasJobDefinition' {..} =
+    _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance Prelude.NFData DeleteModelBiasJobDefinition where
+  rnf DeleteModelBiasJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance Data.ToHeaders DeleteModelBiasJobDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteModelBiasJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModelBiasJobDefinition where
+  toJSON DeleteModelBiasJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DeleteModelBiasJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModelBiasJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelBiasJobDefinitionResponse' smart constructor.
+data DeleteModelBiasJobDefinitionResponse = DeleteModelBiasJobDefinitionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelBiasJobDefinitionResponse' 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.
+newDeleteModelBiasJobDefinitionResponse ::
+  DeleteModelBiasJobDefinitionResponse
+newDeleteModelBiasJobDefinitionResponse =
+  DeleteModelBiasJobDefinitionResponse'
+
+instance
+  Prelude.NFData
+    DeleteModelBiasJobDefinitionResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelCard.hs b/gen/Amazonka/SageMaker/DeleteModelCard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelCard.hs
@@ -0,0 +1,132 @@
+{-# 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.DeleteModelCard
+-- 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 an Amazon SageMaker Model Card.
+module Amazonka.SageMaker.DeleteModelCard
+  ( -- * Creating a Request
+    DeleteModelCard (..),
+    newDeleteModelCard,
+
+    -- * Request Lenses
+    deleteModelCard_modelCardName,
+
+    -- * Destructuring the Response
+    DeleteModelCardResponse (..),
+    newDeleteModelCardResponse,
+  )
+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:/ 'newDeleteModelCard' smart constructor.
+data DeleteModelCard = DeleteModelCard'
+  { -- | The name of the model card to delete.
+    modelCardName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelCard' 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:
+--
+-- 'modelCardName', 'deleteModelCard_modelCardName' - The name of the model card to delete.
+newDeleteModelCard ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  DeleteModelCard
+newDeleteModelCard pModelCardName_ =
+  DeleteModelCard' {modelCardName = pModelCardName_}
+
+-- | The name of the model card to delete.
+deleteModelCard_modelCardName :: Lens.Lens' DeleteModelCard Prelude.Text
+deleteModelCard_modelCardName = Lens.lens (\DeleteModelCard' {modelCardName} -> modelCardName) (\s@DeleteModelCard' {} a -> s {modelCardName = a} :: DeleteModelCard)
+
+instance Core.AWSRequest DeleteModelCard where
+  type
+    AWSResponse DeleteModelCard =
+      DeleteModelCardResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteModelCardResponse'
+
+instance Prelude.Hashable DeleteModelCard where
+  hashWithSalt _salt DeleteModelCard' {..} =
+    _salt `Prelude.hashWithSalt` modelCardName
+
+instance Prelude.NFData DeleteModelCard where
+  rnf DeleteModelCard' {..} = Prelude.rnf modelCardName
+
+instance Data.ToHeaders DeleteModelCard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteModelCard" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModelCard where
+  toJSON DeleteModelCard' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ModelCardName" Data..= modelCardName)
+          ]
+      )
+
+instance Data.ToPath DeleteModelCard where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModelCard where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelCardResponse' smart constructor.
+data DeleteModelCardResponse = DeleteModelCardResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelCardResponse' 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.
+newDeleteModelCardResponse ::
+  DeleteModelCardResponse
+newDeleteModelCardResponse = DeleteModelCardResponse'
+
+instance Prelude.NFData DeleteModelCardResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelExplainabilityJobDefinition.hs b/gen/Amazonka/SageMaker/DeleteModelExplainabilityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelExplainabilityJobDefinition.hs
@@ -0,0 +1,168 @@
+{-# 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.DeleteModelExplainabilityJobDefinition
+-- 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 an Amazon SageMaker model explainability job definition.
+module Amazonka.SageMaker.DeleteModelExplainabilityJobDefinition
+  ( -- * Creating a Request
+    DeleteModelExplainabilityJobDefinition (..),
+    newDeleteModelExplainabilityJobDefinition,
+
+    -- * Request Lenses
+    deleteModelExplainabilityJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DeleteModelExplainabilityJobDefinitionResponse (..),
+    newDeleteModelExplainabilityJobDefinitionResponse,
+  )
+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:/ 'newDeleteModelExplainabilityJobDefinition' smart constructor.
+data DeleteModelExplainabilityJobDefinition = DeleteModelExplainabilityJobDefinition'
+  { -- | The name of the model explainability job definition to delete.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelExplainabilityJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'deleteModelExplainabilityJobDefinition_jobDefinitionName' - The name of the model explainability job definition to delete.
+newDeleteModelExplainabilityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DeleteModelExplainabilityJobDefinition
+newDeleteModelExplainabilityJobDefinition
+  pJobDefinitionName_ =
+    DeleteModelExplainabilityJobDefinition'
+      { jobDefinitionName =
+          pJobDefinitionName_
+      }
+
+-- | The name of the model explainability job definition to delete.
+deleteModelExplainabilityJobDefinition_jobDefinitionName :: Lens.Lens' DeleteModelExplainabilityJobDefinition Prelude.Text
+deleteModelExplainabilityJobDefinition_jobDefinitionName = Lens.lens (\DeleteModelExplainabilityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DeleteModelExplainabilityJobDefinition' {} a -> s {jobDefinitionName = a} :: DeleteModelExplainabilityJobDefinition)
+
+instance
+  Core.AWSRequest
+    DeleteModelExplainabilityJobDefinition
+  where
+  type
+    AWSResponse
+      DeleteModelExplainabilityJobDefinition =
+      DeleteModelExplainabilityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteModelExplainabilityJobDefinitionResponse'
+
+instance
+  Prelude.Hashable
+    DeleteModelExplainabilityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DeleteModelExplainabilityJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DeleteModelExplainabilityJobDefinition
+  where
+  rnf DeleteModelExplainabilityJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DeleteModelExplainabilityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteModelExplainabilityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DeleteModelExplainabilityJobDefinition
+  where
+  toJSON DeleteModelExplainabilityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance
+  Data.ToPath
+    DeleteModelExplainabilityJobDefinition
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteModelExplainabilityJobDefinition
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelExplainabilityJobDefinitionResponse' smart constructor.
+data DeleteModelExplainabilityJobDefinitionResponse = DeleteModelExplainabilityJobDefinitionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelExplainabilityJobDefinitionResponse' 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.
+newDeleteModelExplainabilityJobDefinitionResponse ::
+  DeleteModelExplainabilityJobDefinitionResponse
+newDeleteModelExplainabilityJobDefinitionResponse =
+  DeleteModelExplainabilityJobDefinitionResponse'
+
+instance
+  Prelude.NFData
+    DeleteModelExplainabilityJobDefinitionResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelPackage.hs b/gen/Amazonka/SageMaker/DeleteModelPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelPackage.hs
@@ -0,0 +1,152 @@
+{-# 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.DeleteModelPackage
+-- 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 a model package.
+--
+-- A model package is used to create SageMaker models or list on Amazon Web
+-- Services Marketplace. Buyers can subscribe to model packages listed on
+-- Amazon Web Services Marketplace to create models in SageMaker.
+module Amazonka.SageMaker.DeleteModelPackage
+  ( -- * Creating a Request
+    DeleteModelPackage (..),
+    newDeleteModelPackage,
+
+    -- * Request Lenses
+    deleteModelPackage_modelPackageName,
+
+    -- * Destructuring the Response
+    DeleteModelPackageResponse (..),
+    newDeleteModelPackageResponse,
+  )
+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:/ 'newDeleteModelPackage' smart constructor.
+data DeleteModelPackage = DeleteModelPackage'
+  { -- | The name or Amazon Resource Name (ARN) of the model package to delete.
+    --
+    -- When you specify a name, the name must have 1 to 63 characters. Valid
+    -- characters are a-z, A-Z, 0-9, and - (hyphen).
+    modelPackageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelPackage' 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:
+--
+-- 'modelPackageName', 'deleteModelPackage_modelPackageName' - The name or Amazon Resource Name (ARN) of the model package to delete.
+--
+-- When you specify a name, the name must have 1 to 63 characters. Valid
+-- characters are a-z, A-Z, 0-9, and - (hyphen).
+newDeleteModelPackage ::
+  -- | 'modelPackageName'
+  Prelude.Text ->
+  DeleteModelPackage
+newDeleteModelPackage pModelPackageName_ =
+  DeleteModelPackage'
+    { modelPackageName =
+        pModelPackageName_
+    }
+
+-- | The name or Amazon Resource Name (ARN) of the model package to delete.
+--
+-- When you specify a name, the name must have 1 to 63 characters. Valid
+-- characters are a-z, A-Z, 0-9, and - (hyphen).
+deleteModelPackage_modelPackageName :: Lens.Lens' DeleteModelPackage Prelude.Text
+deleteModelPackage_modelPackageName = Lens.lens (\DeleteModelPackage' {modelPackageName} -> modelPackageName) (\s@DeleteModelPackage' {} a -> s {modelPackageName = a} :: DeleteModelPackage)
+
+instance Core.AWSRequest DeleteModelPackage where
+  type
+    AWSResponse DeleteModelPackage =
+      DeleteModelPackageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteModelPackageResponse'
+
+instance Prelude.Hashable DeleteModelPackage where
+  hashWithSalt _salt DeleteModelPackage' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageName
+
+instance Prelude.NFData DeleteModelPackage where
+  rnf DeleteModelPackage' {..} =
+    Prelude.rnf modelPackageName
+
+instance Data.ToHeaders DeleteModelPackage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteModelPackage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModelPackage where
+  toJSON DeleteModelPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ModelPackageName" Data..= modelPackageName)
+          ]
+      )
+
+instance Data.ToPath DeleteModelPackage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModelPackage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelPackageResponse' smart constructor.
+data DeleteModelPackageResponse = DeleteModelPackageResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelPackageResponse' 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.
+newDeleteModelPackageResponse ::
+  DeleteModelPackageResponse
+newDeleteModelPackageResponse =
+  DeleteModelPackageResponse'
+
+instance Prelude.NFData DeleteModelPackageResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelPackageGroup.hs b/gen/Amazonka/SageMaker/DeleteModelPackageGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelPackageGroup.hs
@@ -0,0 +1,145 @@
+{-# 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.DeleteModelPackageGroup
+-- 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 the specified model group.
+module Amazonka.SageMaker.DeleteModelPackageGroup
+  ( -- * Creating a Request
+    DeleteModelPackageGroup (..),
+    newDeleteModelPackageGroup,
+
+    -- * Request Lenses
+    deleteModelPackageGroup_modelPackageGroupName,
+
+    -- * Destructuring the Response
+    DeleteModelPackageGroupResponse (..),
+    newDeleteModelPackageGroupResponse,
+  )
+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:/ 'newDeleteModelPackageGroup' smart constructor.
+data DeleteModelPackageGroup = DeleteModelPackageGroup'
+  { -- | The name of the model group to delete.
+    modelPackageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelPackageGroup' 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:
+--
+-- 'modelPackageGroupName', 'deleteModelPackageGroup_modelPackageGroupName' - The name of the model group to delete.
+newDeleteModelPackageGroup ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  DeleteModelPackageGroup
+newDeleteModelPackageGroup pModelPackageGroupName_ =
+  DeleteModelPackageGroup'
+    { modelPackageGroupName =
+        pModelPackageGroupName_
+    }
+
+-- | The name of the model group to delete.
+deleteModelPackageGroup_modelPackageGroupName :: Lens.Lens' DeleteModelPackageGroup Prelude.Text
+deleteModelPackageGroup_modelPackageGroupName = Lens.lens (\DeleteModelPackageGroup' {modelPackageGroupName} -> modelPackageGroupName) (\s@DeleteModelPackageGroup' {} a -> s {modelPackageGroupName = a} :: DeleteModelPackageGroup)
+
+instance Core.AWSRequest DeleteModelPackageGroup where
+  type
+    AWSResponse DeleteModelPackageGroup =
+      DeleteModelPackageGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteModelPackageGroupResponse'
+
+instance Prelude.Hashable DeleteModelPackageGroup where
+  hashWithSalt _salt DeleteModelPackageGroup' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageGroupName
+
+instance Prelude.NFData DeleteModelPackageGroup where
+  rnf DeleteModelPackageGroup' {..} =
+    Prelude.rnf modelPackageGroupName
+
+instance Data.ToHeaders DeleteModelPackageGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteModelPackageGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModelPackageGroup where
+  toJSON DeleteModelPackageGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ModelPackageGroupName"
+                  Data..= modelPackageGroupName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteModelPackageGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModelPackageGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelPackageGroupResponse' smart constructor.
+data DeleteModelPackageGroupResponse = DeleteModelPackageGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelPackageGroupResponse' 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.
+newDeleteModelPackageGroupResponse ::
+  DeleteModelPackageGroupResponse
+newDeleteModelPackageGroupResponse =
+  DeleteModelPackageGroupResponse'
+
+instance
+  Prelude.NFData
+    DeleteModelPackageGroupResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelPackageGroupPolicy.hs b/gen/Amazonka/SageMaker/DeleteModelPackageGroupPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelPackageGroupPolicy.hs
@@ -0,0 +1,152 @@
+{-# 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.DeleteModelPackageGroupPolicy
+-- 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 a model group resource policy.
+module Amazonka.SageMaker.DeleteModelPackageGroupPolicy
+  ( -- * Creating a Request
+    DeleteModelPackageGroupPolicy (..),
+    newDeleteModelPackageGroupPolicy,
+
+    -- * Request Lenses
+    deleteModelPackageGroupPolicy_modelPackageGroupName,
+
+    -- * Destructuring the Response
+    DeleteModelPackageGroupPolicyResponse (..),
+    newDeleteModelPackageGroupPolicyResponse,
+  )
+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:/ 'newDeleteModelPackageGroupPolicy' smart constructor.
+data DeleteModelPackageGroupPolicy = DeleteModelPackageGroupPolicy'
+  { -- | The name of the model group for which to delete the policy.
+    modelPackageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelPackageGroupPolicy' 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:
+--
+-- 'modelPackageGroupName', 'deleteModelPackageGroupPolicy_modelPackageGroupName' - The name of the model group for which to delete the policy.
+newDeleteModelPackageGroupPolicy ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  DeleteModelPackageGroupPolicy
+newDeleteModelPackageGroupPolicy
+  pModelPackageGroupName_ =
+    DeleteModelPackageGroupPolicy'
+      { modelPackageGroupName =
+          pModelPackageGroupName_
+      }
+
+-- | The name of the model group for which to delete the policy.
+deleteModelPackageGroupPolicy_modelPackageGroupName :: Lens.Lens' DeleteModelPackageGroupPolicy Prelude.Text
+deleteModelPackageGroupPolicy_modelPackageGroupName = Lens.lens (\DeleteModelPackageGroupPolicy' {modelPackageGroupName} -> modelPackageGroupName) (\s@DeleteModelPackageGroupPolicy' {} a -> s {modelPackageGroupName = a} :: DeleteModelPackageGroupPolicy)
+
+instance
+  Core.AWSRequest
+    DeleteModelPackageGroupPolicy
+  where
+  type
+    AWSResponse DeleteModelPackageGroupPolicy =
+      DeleteModelPackageGroupPolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteModelPackageGroupPolicyResponse'
+
+instance
+  Prelude.Hashable
+    DeleteModelPackageGroupPolicy
+  where
+  hashWithSalt _salt DeleteModelPackageGroupPolicy' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageGroupName
+
+instance Prelude.NFData DeleteModelPackageGroupPolicy where
+  rnf DeleteModelPackageGroupPolicy' {..} =
+    Prelude.rnf modelPackageGroupName
+
+instance Data.ToHeaders DeleteModelPackageGroupPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteModelPackageGroupPolicy" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModelPackageGroupPolicy where
+  toJSON DeleteModelPackageGroupPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ModelPackageGroupName"
+                  Data..= modelPackageGroupName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteModelPackageGroupPolicy where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModelPackageGroupPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelPackageGroupPolicyResponse' smart constructor.
+data DeleteModelPackageGroupPolicyResponse = DeleteModelPackageGroupPolicyResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelPackageGroupPolicyResponse' 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.
+newDeleteModelPackageGroupPolicyResponse ::
+  DeleteModelPackageGroupPolicyResponse
+newDeleteModelPackageGroupPolicyResponse =
+  DeleteModelPackageGroupPolicyResponse'
+
+instance
+  Prelude.NFData
+    DeleteModelPackageGroupPolicyResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteModelQualityJobDefinition.hs b/gen/Amazonka/SageMaker/DeleteModelQualityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteModelQualityJobDefinition.hs
@@ -0,0 +1,158 @@
+{-# 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.DeleteModelQualityJobDefinition
+-- 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 the secified model quality monitoring job definition.
+module Amazonka.SageMaker.DeleteModelQualityJobDefinition
+  ( -- * Creating a Request
+    DeleteModelQualityJobDefinition (..),
+    newDeleteModelQualityJobDefinition,
+
+    -- * Request Lenses
+    deleteModelQualityJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DeleteModelQualityJobDefinitionResponse (..),
+    newDeleteModelQualityJobDefinitionResponse,
+  )
+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:/ 'newDeleteModelQualityJobDefinition' smart constructor.
+data DeleteModelQualityJobDefinition = DeleteModelQualityJobDefinition'
+  { -- | The name of the model quality monitoring job definition to delete.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelQualityJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'deleteModelQualityJobDefinition_jobDefinitionName' - The name of the model quality monitoring job definition to delete.
+newDeleteModelQualityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DeleteModelQualityJobDefinition
+newDeleteModelQualityJobDefinition
+  pJobDefinitionName_ =
+    DeleteModelQualityJobDefinition'
+      { jobDefinitionName =
+          pJobDefinitionName_
+      }
+
+-- | The name of the model quality monitoring job definition to delete.
+deleteModelQualityJobDefinition_jobDefinitionName :: Lens.Lens' DeleteModelQualityJobDefinition Prelude.Text
+deleteModelQualityJobDefinition_jobDefinitionName = Lens.lens (\DeleteModelQualityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DeleteModelQualityJobDefinition' {} a -> s {jobDefinitionName = a} :: DeleteModelQualityJobDefinition)
+
+instance
+  Core.AWSRequest
+    DeleteModelQualityJobDefinition
+  where
+  type
+    AWSResponse DeleteModelQualityJobDefinition =
+      DeleteModelQualityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteModelQualityJobDefinitionResponse'
+
+instance
+  Prelude.Hashable
+    DeleteModelQualityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DeleteModelQualityJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DeleteModelQualityJobDefinition
+  where
+  rnf DeleteModelQualityJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DeleteModelQualityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteModelQualityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModelQualityJobDefinition where
+  toJSON DeleteModelQualityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DeleteModelQualityJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModelQualityJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelQualityJobDefinitionResponse' smart constructor.
+data DeleteModelQualityJobDefinitionResponse = DeleteModelQualityJobDefinitionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelQualityJobDefinitionResponse' 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.
+newDeleteModelQualityJobDefinitionResponse ::
+  DeleteModelQualityJobDefinitionResponse
+newDeleteModelQualityJobDefinitionResponse =
+  DeleteModelQualityJobDefinitionResponse'
+
+instance
+  Prelude.NFData
+    DeleteModelQualityJobDefinitionResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteMonitoringSchedule.hs b/gen/Amazonka/SageMaker/DeleteMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteMonitoringSchedule.hs
@@ -0,0 +1,147 @@
+{-# 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.DeleteMonitoringSchedule
+-- 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 a monitoring schedule. Also stops the schedule had not already
+-- been stopped. This does not delete the job execution history of the
+-- monitoring schedule.
+module Amazonka.SageMaker.DeleteMonitoringSchedule
+  ( -- * Creating a Request
+    DeleteMonitoringSchedule (..),
+    newDeleteMonitoringSchedule,
+
+    -- * Request Lenses
+    deleteMonitoringSchedule_monitoringScheduleName,
+
+    -- * Destructuring the Response
+    DeleteMonitoringScheduleResponse (..),
+    newDeleteMonitoringScheduleResponse,
+  )
+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:/ 'newDeleteMonitoringSchedule' smart constructor.
+data DeleteMonitoringSchedule = DeleteMonitoringSchedule'
+  { -- | The name of the monitoring schedule to delete.
+    monitoringScheduleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMonitoringSchedule' 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:
+--
+-- 'monitoringScheduleName', 'deleteMonitoringSchedule_monitoringScheduleName' - The name of the monitoring schedule to delete.
+newDeleteMonitoringSchedule ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  DeleteMonitoringSchedule
+newDeleteMonitoringSchedule pMonitoringScheduleName_ =
+  DeleteMonitoringSchedule'
+    { monitoringScheduleName =
+        pMonitoringScheduleName_
+    }
+
+-- | The name of the monitoring schedule to delete.
+deleteMonitoringSchedule_monitoringScheduleName :: Lens.Lens' DeleteMonitoringSchedule Prelude.Text
+deleteMonitoringSchedule_monitoringScheduleName = Lens.lens (\DeleteMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@DeleteMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: DeleteMonitoringSchedule)
+
+instance Core.AWSRequest DeleteMonitoringSchedule where
+  type
+    AWSResponse DeleteMonitoringSchedule =
+      DeleteMonitoringScheduleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteMonitoringScheduleResponse'
+
+instance Prelude.Hashable DeleteMonitoringSchedule where
+  hashWithSalt _salt DeleteMonitoringSchedule' {..} =
+    _salt `Prelude.hashWithSalt` monitoringScheduleName
+
+instance Prelude.NFData DeleteMonitoringSchedule where
+  rnf DeleteMonitoringSchedule' {..} =
+    Prelude.rnf monitoringScheduleName
+
+instance Data.ToHeaders DeleteMonitoringSchedule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteMonitoringSchedule" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteMonitoringSchedule where
+  toJSON DeleteMonitoringSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteMonitoringSchedule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteMonitoringSchedule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteMonitoringScheduleResponse' smart constructor.
+data DeleteMonitoringScheduleResponse = DeleteMonitoringScheduleResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMonitoringScheduleResponse' 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.
+newDeleteMonitoringScheduleResponse ::
+  DeleteMonitoringScheduleResponse
+newDeleteMonitoringScheduleResponse =
+  DeleteMonitoringScheduleResponse'
+
+instance
+  Prelude.NFData
+    DeleteMonitoringScheduleResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteNotebookInstance.hs b/gen/Amazonka/SageMaker/DeleteNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteNotebookInstance.hs
@@ -0,0 +1,150 @@
+{-# 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.DeleteNotebookInstance
+-- 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 an SageMaker notebook instance. Before you can delete a notebook
+-- instance, you must call the @StopNotebookInstance@ API.
+--
+-- When you delete a notebook instance, you lose all of your data.
+-- SageMaker removes the ML compute instance, and deletes the ML storage
+-- volume and the network interface associated with the notebook instance.
+module Amazonka.SageMaker.DeleteNotebookInstance
+  ( -- * Creating a Request
+    DeleteNotebookInstance (..),
+    newDeleteNotebookInstance,
+
+    -- * Request Lenses
+    deleteNotebookInstance_notebookInstanceName,
+
+    -- * Destructuring the Response
+    DeleteNotebookInstanceResponse (..),
+    newDeleteNotebookInstanceResponse,
+  )
+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:/ 'newDeleteNotebookInstance' smart constructor.
+data DeleteNotebookInstance = DeleteNotebookInstance'
+  { -- | The name of the SageMaker notebook instance to delete.
+    notebookInstanceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNotebookInstance' 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:
+--
+-- 'notebookInstanceName', 'deleteNotebookInstance_notebookInstanceName' - The name of the SageMaker notebook instance to delete.
+newDeleteNotebookInstance ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  DeleteNotebookInstance
+newDeleteNotebookInstance pNotebookInstanceName_ =
+  DeleteNotebookInstance'
+    { notebookInstanceName =
+        pNotebookInstanceName_
+    }
+
+-- | The name of the SageMaker notebook instance to delete.
+deleteNotebookInstance_notebookInstanceName :: Lens.Lens' DeleteNotebookInstance Prelude.Text
+deleteNotebookInstance_notebookInstanceName = Lens.lens (\DeleteNotebookInstance' {notebookInstanceName} -> notebookInstanceName) (\s@DeleteNotebookInstance' {} a -> s {notebookInstanceName = a} :: DeleteNotebookInstance)
+
+instance Core.AWSRequest DeleteNotebookInstance where
+  type
+    AWSResponse DeleteNotebookInstance =
+      DeleteNotebookInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteNotebookInstanceResponse'
+
+instance Prelude.Hashable DeleteNotebookInstance where
+  hashWithSalt _salt DeleteNotebookInstance' {..} =
+    _salt `Prelude.hashWithSalt` notebookInstanceName
+
+instance Prelude.NFData DeleteNotebookInstance where
+  rnf DeleteNotebookInstance' {..} =
+    Prelude.rnf notebookInstanceName
+
+instance Data.ToHeaders DeleteNotebookInstance where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteNotebookInstance" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteNotebookInstance where
+  toJSON DeleteNotebookInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteNotebookInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteNotebookInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteNotebookInstanceResponse' smart constructor.
+data DeleteNotebookInstanceResponse = DeleteNotebookInstanceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNotebookInstanceResponse' 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.
+newDeleteNotebookInstanceResponse ::
+  DeleteNotebookInstanceResponse
+newDeleteNotebookInstanceResponse =
+  DeleteNotebookInstanceResponse'
+
+instance
+  Prelude.NFData
+    DeleteNotebookInstanceResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteNotebookInstanceLifecycleConfig.hs b/gen/Amazonka/SageMaker/DeleteNotebookInstanceLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteNotebookInstanceLifecycleConfig.hs
@@ -0,0 +1,171 @@
+{-# 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.DeleteNotebookInstanceLifecycleConfig
+-- 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 a notebook instance lifecycle configuration.
+module Amazonka.SageMaker.DeleteNotebookInstanceLifecycleConfig
+  ( -- * Creating a Request
+    DeleteNotebookInstanceLifecycleConfig (..),
+    newDeleteNotebookInstanceLifecycleConfig,
+
+    -- * Request Lenses
+    deleteNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+
+    -- * Destructuring the Response
+    DeleteNotebookInstanceLifecycleConfigResponse (..),
+    newDeleteNotebookInstanceLifecycleConfigResponse,
+  )
+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:/ 'newDeleteNotebookInstanceLifecycleConfig' smart constructor.
+data DeleteNotebookInstanceLifecycleConfig = DeleteNotebookInstanceLifecycleConfig'
+  { -- | The name of the lifecycle configuration to delete.
+    notebookInstanceLifecycleConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNotebookInstanceLifecycleConfig' 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:
+--
+-- 'notebookInstanceLifecycleConfigName', 'deleteNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName' - The name of the lifecycle configuration to delete.
+newDeleteNotebookInstanceLifecycleConfig ::
+  -- | 'notebookInstanceLifecycleConfigName'
+  Prelude.Text ->
+  DeleteNotebookInstanceLifecycleConfig
+newDeleteNotebookInstanceLifecycleConfig
+  pNotebookInstanceLifecycleConfigName_ =
+    DeleteNotebookInstanceLifecycleConfig'
+      { notebookInstanceLifecycleConfigName =
+          pNotebookInstanceLifecycleConfigName_
+      }
+
+-- | The name of the lifecycle configuration to delete.
+deleteNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName :: Lens.Lens' DeleteNotebookInstanceLifecycleConfig Prelude.Text
+deleteNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName = Lens.lens (\DeleteNotebookInstanceLifecycleConfig' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@DeleteNotebookInstanceLifecycleConfig' {} a -> s {notebookInstanceLifecycleConfigName = a} :: DeleteNotebookInstanceLifecycleConfig)
+
+instance
+  Core.AWSRequest
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  type
+    AWSResponse
+      DeleteNotebookInstanceLifecycleConfig =
+      DeleteNotebookInstanceLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteNotebookInstanceLifecycleConfigResponse'
+
+instance
+  Prelude.Hashable
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  hashWithSalt
+    _salt
+    DeleteNotebookInstanceLifecycleConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` notebookInstanceLifecycleConfigName
+
+instance
+  Prelude.NFData
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  rnf DeleteNotebookInstanceLifecycleConfig' {..} =
+    Prelude.rnf notebookInstanceLifecycleConfigName
+
+instance
+  Data.ToHeaders
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteNotebookInstanceLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  toJSON DeleteNotebookInstanceLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "NotebookInstanceLifecycleConfigName"
+                  Data..= notebookInstanceLifecycleConfigName
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteNotebookInstanceLifecycleConfig
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteNotebookInstanceLifecycleConfigResponse' smart constructor.
+data DeleteNotebookInstanceLifecycleConfigResponse = DeleteNotebookInstanceLifecycleConfigResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNotebookInstanceLifecycleConfigResponse' 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.
+newDeleteNotebookInstanceLifecycleConfigResponse ::
+  DeleteNotebookInstanceLifecycleConfigResponse
+newDeleteNotebookInstanceLifecycleConfigResponse =
+  DeleteNotebookInstanceLifecycleConfigResponse'
+
+instance
+  Prelude.NFData
+    DeleteNotebookInstanceLifecycleConfigResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeletePipeline.hs b/gen/Amazonka/SageMaker/DeletePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeletePipeline.hs
@@ -0,0 +1,196 @@
+{-# 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.DeletePipeline
+-- 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 a pipeline if there are no running instances of the pipeline. To
+-- delete a pipeline, you must stop all running instances of the pipeline
+-- using the @StopPipelineExecution@ API. When you delete a pipeline, all
+-- instances of the pipeline are deleted.
+module Amazonka.SageMaker.DeletePipeline
+  ( -- * Creating a Request
+    DeletePipeline (..),
+    newDeletePipeline,
+
+    -- * Request Lenses
+    deletePipeline_pipelineName,
+    deletePipeline_clientRequestToken,
+
+    -- * Destructuring the Response
+    DeletePipelineResponse (..),
+    newDeletePipelineResponse,
+
+    -- * Response Lenses
+    deletePipelineResponse_pipelineArn,
+    deletePipelineResponse_httpStatus,
+  )
+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:/ 'newDeletePipeline' smart constructor.
+data DeletePipeline = DeletePipeline'
+  { -- | The name of the pipeline to delete.
+    pipelineName :: Prelude.Text,
+    -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than one time.
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePipeline' 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:
+--
+-- 'pipelineName', 'deletePipeline_pipelineName' - The name of the pipeline to delete.
+--
+-- 'clientRequestToken', 'deletePipeline_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+newDeletePipeline ::
+  -- | 'pipelineName'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  DeletePipeline
+newDeletePipeline pPipelineName_ pClientRequestToken_ =
+  DeletePipeline'
+    { pipelineName = pPipelineName_,
+      clientRequestToken = pClientRequestToken_
+    }
+
+-- | The name of the pipeline to delete.
+deletePipeline_pipelineName :: Lens.Lens' DeletePipeline Prelude.Text
+deletePipeline_pipelineName = Lens.lens (\DeletePipeline' {pipelineName} -> pipelineName) (\s@DeletePipeline' {} a -> s {pipelineName = a} :: DeletePipeline)
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+deletePipeline_clientRequestToken :: Lens.Lens' DeletePipeline Prelude.Text
+deletePipeline_clientRequestToken = Lens.lens (\DeletePipeline' {clientRequestToken} -> clientRequestToken) (\s@DeletePipeline' {} a -> s {clientRequestToken = a} :: DeletePipeline)
+
+instance Core.AWSRequest DeletePipeline where
+  type
+    AWSResponse DeletePipeline =
+      DeletePipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeletePipelineResponse'
+            Prelude.<$> (x Data..?> "PipelineArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePipeline where
+  hashWithSalt _salt DeletePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` pipelineName
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData DeletePipeline where
+  rnf DeletePipeline' {..} =
+    Prelude.rnf pipelineName
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders DeletePipeline where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeletePipeline" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeletePipeline where
+  toJSON DeletePipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("PipelineName" Data..= pipelineName),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath DeletePipeline where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeletePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePipelineResponse' smart constructor.
+data DeletePipelineResponse = DeletePipelineResponse'
+  { -- | The Amazon Resource Name (ARN) of the pipeline to delete.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePipelineResponse' 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:
+--
+-- 'pipelineArn', 'deletePipelineResponse_pipelineArn' - The Amazon Resource Name (ARN) of the pipeline to delete.
+--
+-- 'httpStatus', 'deletePipelineResponse_httpStatus' - The response's http status code.
+newDeletePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePipelineResponse
+newDeletePipelineResponse pHttpStatus_ =
+  DeletePipelineResponse'
+    { pipelineArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline to delete.
+deletePipelineResponse_pipelineArn :: Lens.Lens' DeletePipelineResponse (Prelude.Maybe Prelude.Text)
+deletePipelineResponse_pipelineArn = Lens.lens (\DeletePipelineResponse' {pipelineArn} -> pipelineArn) (\s@DeletePipelineResponse' {} a -> s {pipelineArn = a} :: DeletePipelineResponse)
+
+-- | The response's http status code.
+deletePipelineResponse_httpStatus :: Lens.Lens' DeletePipelineResponse Prelude.Int
+deletePipelineResponse_httpStatus = Lens.lens (\DeletePipelineResponse' {httpStatus} -> httpStatus) (\s@DeletePipelineResponse' {} a -> s {httpStatus = a} :: DeletePipelineResponse)
+
+instance Prelude.NFData DeletePipelineResponse where
+  rnf DeletePipelineResponse' {..} =
+    Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteProject.hs b/gen/Amazonka/SageMaker/DeleteProject.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteProject.hs
@@ -0,0 +1,130 @@
+{-# 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.DeleteProject
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete the specified project.
+module Amazonka.SageMaker.DeleteProject
+  ( -- * Creating a Request
+    DeleteProject (..),
+    newDeleteProject,
+
+    -- * Request Lenses
+    deleteProject_projectName,
+
+    -- * Destructuring the Response
+    DeleteProjectResponse (..),
+    newDeleteProjectResponse,
+  )
+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:/ 'newDeleteProject' smart constructor.
+data DeleteProject = DeleteProject'
+  { -- | The name of the project to delete.
+    projectName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteProject' 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:
+--
+-- 'projectName', 'deleteProject_projectName' - The name of the project to delete.
+newDeleteProject ::
+  -- | 'projectName'
+  Prelude.Text ->
+  DeleteProject
+newDeleteProject pProjectName_ =
+  DeleteProject' {projectName = pProjectName_}
+
+-- | The name of the project to delete.
+deleteProject_projectName :: Lens.Lens' DeleteProject Prelude.Text
+deleteProject_projectName = Lens.lens (\DeleteProject' {projectName} -> projectName) (\s@DeleteProject' {} a -> s {projectName = a} :: DeleteProject)
+
+instance Core.AWSRequest DeleteProject where
+  type
+    AWSResponse DeleteProject =
+      DeleteProjectResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteProjectResponse'
+
+instance Prelude.Hashable DeleteProject where
+  hashWithSalt _salt DeleteProject' {..} =
+    _salt `Prelude.hashWithSalt` projectName
+
+instance Prelude.NFData DeleteProject where
+  rnf DeleteProject' {..} = Prelude.rnf projectName
+
+instance Data.ToHeaders DeleteProject where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteProject" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteProject where
+  toJSON DeleteProject' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ProjectName" Data..= projectName)]
+      )
+
+instance Data.ToPath DeleteProject where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteProject where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteProjectResponse' smart constructor.
+data DeleteProjectResponse = DeleteProjectResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteProjectResponse' 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.
+newDeleteProjectResponse ::
+  DeleteProjectResponse
+newDeleteProjectResponse = DeleteProjectResponse'
+
+instance Prelude.NFData DeleteProjectResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteSpace.hs b/gen/Amazonka/SageMaker/DeleteSpace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteSpace.hs
@@ -0,0 +1,147 @@
+{-# 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.DeleteSpace
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Used to delete a space.
+module Amazonka.SageMaker.DeleteSpace
+  ( -- * Creating a Request
+    DeleteSpace (..),
+    newDeleteSpace,
+
+    -- * Request Lenses
+    deleteSpace_domainId,
+    deleteSpace_spaceName,
+
+    -- * Destructuring the Response
+    DeleteSpaceResponse (..),
+    newDeleteSpaceResponse,
+  )
+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:/ 'newDeleteSpace' smart constructor.
+data DeleteSpace = DeleteSpace'
+  { -- | The ID of the associated Domain.
+    domainId :: Prelude.Text,
+    -- | The name of the space.
+    spaceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSpace' 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:
+--
+-- 'domainId', 'deleteSpace_domainId' - The ID of the associated Domain.
+--
+-- 'spaceName', 'deleteSpace_spaceName' - The name of the space.
+newDeleteSpace ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'spaceName'
+  Prelude.Text ->
+  DeleteSpace
+newDeleteSpace pDomainId_ pSpaceName_ =
+  DeleteSpace'
+    { domainId = pDomainId_,
+      spaceName = pSpaceName_
+    }
+
+-- | The ID of the associated Domain.
+deleteSpace_domainId :: Lens.Lens' DeleteSpace Prelude.Text
+deleteSpace_domainId = Lens.lens (\DeleteSpace' {domainId} -> domainId) (\s@DeleteSpace' {} a -> s {domainId = a} :: DeleteSpace)
+
+-- | The name of the space.
+deleteSpace_spaceName :: Lens.Lens' DeleteSpace Prelude.Text
+deleteSpace_spaceName = Lens.lens (\DeleteSpace' {spaceName} -> spaceName) (\s@DeleteSpace' {} a -> s {spaceName = a} :: DeleteSpace)
+
+instance Core.AWSRequest DeleteSpace where
+  type AWSResponse DeleteSpace = DeleteSpaceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteSpaceResponse'
+
+instance Prelude.Hashable DeleteSpace where
+  hashWithSalt _salt DeleteSpace' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` spaceName
+
+instance Prelude.NFData DeleteSpace where
+  rnf DeleteSpace' {..} =
+    Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf spaceName
+
+instance Data.ToHeaders DeleteSpace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteSpace" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteSpace where
+  toJSON DeleteSpace' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("SpaceName" Data..= spaceName)
+          ]
+      )
+
+instance Data.ToPath DeleteSpace where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteSpace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSpaceResponse' smart constructor.
+data DeleteSpaceResponse = DeleteSpaceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSpaceResponse' 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.
+newDeleteSpaceResponse ::
+  DeleteSpaceResponse
+newDeleteSpaceResponse = DeleteSpaceResponse'
+
+instance Prelude.NFData DeleteSpaceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteStudioLifecycleConfig.hs b/gen/Amazonka/SageMaker/DeleteStudioLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteStudioLifecycleConfig.hs
@@ -0,0 +1,150 @@
+{-# 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.DeleteStudioLifecycleConfig
+-- 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 the Studio Lifecycle Configuration. In order to delete the
+-- Lifecycle Configuration, there must be no running apps using the
+-- Lifecycle Configuration. You must also remove the Lifecycle
+-- Configuration from UserSettings in all Domains and UserProfiles.
+module Amazonka.SageMaker.DeleteStudioLifecycleConfig
+  ( -- * Creating a Request
+    DeleteStudioLifecycleConfig (..),
+    newDeleteStudioLifecycleConfig,
+
+    -- * Request Lenses
+    deleteStudioLifecycleConfig_studioLifecycleConfigName,
+
+    -- * Destructuring the Response
+    DeleteStudioLifecycleConfigResponse (..),
+    newDeleteStudioLifecycleConfigResponse,
+  )
+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:/ 'newDeleteStudioLifecycleConfig' smart constructor.
+data DeleteStudioLifecycleConfig = DeleteStudioLifecycleConfig'
+  { -- | The name of the Studio Lifecycle Configuration to delete.
+    studioLifecycleConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteStudioLifecycleConfig' 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:
+--
+-- 'studioLifecycleConfigName', 'deleteStudioLifecycleConfig_studioLifecycleConfigName' - The name of the Studio Lifecycle Configuration to delete.
+newDeleteStudioLifecycleConfig ::
+  -- | 'studioLifecycleConfigName'
+  Prelude.Text ->
+  DeleteStudioLifecycleConfig
+newDeleteStudioLifecycleConfig
+  pStudioLifecycleConfigName_ =
+    DeleteStudioLifecycleConfig'
+      { studioLifecycleConfigName =
+          pStudioLifecycleConfigName_
+      }
+
+-- | The name of the Studio Lifecycle Configuration to delete.
+deleteStudioLifecycleConfig_studioLifecycleConfigName :: Lens.Lens' DeleteStudioLifecycleConfig Prelude.Text
+deleteStudioLifecycleConfig_studioLifecycleConfigName = Lens.lens (\DeleteStudioLifecycleConfig' {studioLifecycleConfigName} -> studioLifecycleConfigName) (\s@DeleteStudioLifecycleConfig' {} a -> s {studioLifecycleConfigName = a} :: DeleteStudioLifecycleConfig)
+
+instance Core.AWSRequest DeleteStudioLifecycleConfig where
+  type
+    AWSResponse DeleteStudioLifecycleConfig =
+      DeleteStudioLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteStudioLifecycleConfigResponse'
+
+instance Prelude.Hashable DeleteStudioLifecycleConfig where
+  hashWithSalt _salt DeleteStudioLifecycleConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` studioLifecycleConfigName
+
+instance Prelude.NFData DeleteStudioLifecycleConfig where
+  rnf DeleteStudioLifecycleConfig' {..} =
+    Prelude.rnf studioLifecycleConfigName
+
+instance Data.ToHeaders DeleteStudioLifecycleConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteStudioLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteStudioLifecycleConfig where
+  toJSON DeleteStudioLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "StudioLifecycleConfigName"
+                  Data..= studioLifecycleConfigName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteStudioLifecycleConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteStudioLifecycleConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteStudioLifecycleConfigResponse' smart constructor.
+data DeleteStudioLifecycleConfigResponse = DeleteStudioLifecycleConfigResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteStudioLifecycleConfigResponse' 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.
+newDeleteStudioLifecycleConfigResponse ::
+  DeleteStudioLifecycleConfigResponse
+newDeleteStudioLifecycleConfigResponse =
+  DeleteStudioLifecycleConfigResponse'
+
+instance
+  Prelude.NFData
+    DeleteStudioLifecycleConfigResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteTags.hs b/gen/Amazonka/SageMaker/DeleteTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteTags.hs
@@ -0,0 +1,182 @@
+{-# 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.DeleteTags
+-- 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 the specified tags from an SageMaker resource.
+--
+-- To list a resource\'s tags, use the @ListTags@ API.
+--
+-- When you call this API to delete tags from a hyperparameter tuning job,
+-- the deleted tags are not removed from training jobs that the
+-- hyperparameter tuning job launched before you called this API.
+--
+-- When you call this API to delete tags from a SageMaker Studio Domain or
+-- User Profile, the deleted tags are not removed from Apps that the
+-- SageMaker Studio Domain or User Profile launched before you called this
+-- API.
+module Amazonka.SageMaker.DeleteTags
+  ( -- * Creating a Request
+    DeleteTags (..),
+    newDeleteTags,
+
+    -- * Request Lenses
+    deleteTags_resourceArn,
+    deleteTags_tagKeys,
+
+    -- * Destructuring the Response
+    DeleteTagsResponse (..),
+    newDeleteTagsResponse,
+
+    -- * Response Lenses
+    deleteTagsResponse_httpStatus,
+  )
+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:/ 'newDeleteTags' smart constructor.
+data DeleteTags = DeleteTags'
+  { -- | The Amazon Resource Name (ARN) of the resource whose tags you want to
+    -- delete.
+    resourceArn :: Prelude.Text,
+    -- | An array or one or more tag keys to delete.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTags' 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:
+--
+-- 'resourceArn', 'deleteTags_resourceArn' - The Amazon Resource Name (ARN) of the resource whose tags you want to
+-- delete.
+--
+-- 'tagKeys', 'deleteTags_tagKeys' - An array or one or more tag keys to delete.
+newDeleteTags ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  DeleteTags
+newDeleteTags pResourceArn_ pTagKeys_ =
+  DeleteTags'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource whose tags you want to
+-- delete.
+deleteTags_resourceArn :: Lens.Lens' DeleteTags Prelude.Text
+deleteTags_resourceArn = Lens.lens (\DeleteTags' {resourceArn} -> resourceArn) (\s@DeleteTags' {} a -> s {resourceArn = a} :: DeleteTags)
+
+-- | An array or one or more tag keys to delete.
+deleteTags_tagKeys :: Lens.Lens' DeleteTags (Prelude.NonEmpty Prelude.Text)
+deleteTags_tagKeys = Lens.lens (\DeleteTags' {tagKeys} -> tagKeys) (\s@DeleteTags' {} a -> s {tagKeys = a} :: DeleteTags) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DeleteTags where
+  type AWSResponse DeleteTags = DeleteTagsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteTagsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTags where
+  hashWithSalt _salt DeleteTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData DeleteTags where
+  rnf DeleteTags' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders DeleteTags where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteTags" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteTags where
+  toJSON DeleteTags' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath DeleteTags where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTagsResponse' smart constructor.
+data DeleteTagsResponse = DeleteTagsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTagsResponse' 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', 'deleteTagsResponse_httpStatus' - The response's http status code.
+newDeleteTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTagsResponse
+newDeleteTagsResponse pHttpStatus_ =
+  DeleteTagsResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteTagsResponse_httpStatus :: Lens.Lens' DeleteTagsResponse Prelude.Int
+deleteTagsResponse_httpStatus = Lens.lens (\DeleteTagsResponse' {httpStatus} -> httpStatus) (\s@DeleteTagsResponse' {} a -> s {httpStatus = a} :: DeleteTagsResponse)
+
+instance Prelude.NFData DeleteTagsResponse where
+  rnf DeleteTagsResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteTrial.hs b/gen/Amazonka/SageMaker/DeleteTrial.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteTrial.hs
@@ -0,0 +1,165 @@
+{-# 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.DeleteTrial
+-- 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 the specified trial. All trial components that make up the trial
+-- must be deleted first. Use the DescribeTrialComponent API to get the
+-- list of trial components.
+module Amazonka.SageMaker.DeleteTrial
+  ( -- * Creating a Request
+    DeleteTrial (..),
+    newDeleteTrial,
+
+    -- * Request Lenses
+    deleteTrial_trialName,
+
+    -- * Destructuring the Response
+    DeleteTrialResponse (..),
+    newDeleteTrialResponse,
+
+    -- * Response Lenses
+    deleteTrialResponse_trialArn,
+    deleteTrialResponse_httpStatus,
+  )
+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:/ 'newDeleteTrial' smart constructor.
+data DeleteTrial = DeleteTrial'
+  { -- | The name of the trial to delete.
+    trialName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTrial' 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:
+--
+-- 'trialName', 'deleteTrial_trialName' - The name of the trial to delete.
+newDeleteTrial ::
+  -- | 'trialName'
+  Prelude.Text ->
+  DeleteTrial
+newDeleteTrial pTrialName_ =
+  DeleteTrial' {trialName = pTrialName_}
+
+-- | The name of the trial to delete.
+deleteTrial_trialName :: Lens.Lens' DeleteTrial Prelude.Text
+deleteTrial_trialName = Lens.lens (\DeleteTrial' {trialName} -> trialName) (\s@DeleteTrial' {} a -> s {trialName = a} :: DeleteTrial)
+
+instance Core.AWSRequest DeleteTrial where
+  type AWSResponse DeleteTrial = DeleteTrialResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteTrialResponse'
+            Prelude.<$> (x Data..?> "TrialArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTrial where
+  hashWithSalt _salt DeleteTrial' {..} =
+    _salt `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData DeleteTrial where
+  rnf DeleteTrial' {..} = Prelude.rnf trialName
+
+instance Data.ToHeaders DeleteTrial where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteTrial" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteTrial where
+  toJSON DeleteTrial' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("TrialName" Data..= trialName)]
+      )
+
+instance Data.ToPath DeleteTrial where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteTrial where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTrialResponse' smart constructor.
+data DeleteTrialResponse = DeleteTrialResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial that is being deleted.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTrialResponse' 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:
+--
+-- 'trialArn', 'deleteTrialResponse_trialArn' - The Amazon Resource Name (ARN) of the trial that is being deleted.
+--
+-- 'httpStatus', 'deleteTrialResponse_httpStatus' - The response's http status code.
+newDeleteTrialResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTrialResponse
+newDeleteTrialResponse pHttpStatus_ =
+  DeleteTrialResponse'
+    { trialArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial that is being deleted.
+deleteTrialResponse_trialArn :: Lens.Lens' DeleteTrialResponse (Prelude.Maybe Prelude.Text)
+deleteTrialResponse_trialArn = Lens.lens (\DeleteTrialResponse' {trialArn} -> trialArn) (\s@DeleteTrialResponse' {} a -> s {trialArn = a} :: DeleteTrialResponse)
+
+-- | The response's http status code.
+deleteTrialResponse_httpStatus :: Lens.Lens' DeleteTrialResponse Prelude.Int
+deleteTrialResponse_httpStatus = Lens.lens (\DeleteTrialResponse' {httpStatus} -> httpStatus) (\s@DeleteTrialResponse' {} a -> s {httpStatus = a} :: DeleteTrialResponse)
+
+instance Prelude.NFData DeleteTrialResponse where
+  rnf DeleteTrialResponse' {..} =
+    Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteTrialComponent.hs b/gen/Amazonka/SageMaker/DeleteTrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteTrialComponent.hs
@@ -0,0 +1,177 @@
+{-# 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.DeleteTrialComponent
+-- 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 the specified trial component. A trial component must be
+-- disassociated from all trials before the trial component can be deleted.
+-- To disassociate a trial component from a trial, call the
+-- DisassociateTrialComponent API.
+module Amazonka.SageMaker.DeleteTrialComponent
+  ( -- * Creating a Request
+    DeleteTrialComponent (..),
+    newDeleteTrialComponent,
+
+    -- * Request Lenses
+    deleteTrialComponent_trialComponentName,
+
+    -- * Destructuring the Response
+    DeleteTrialComponentResponse (..),
+    newDeleteTrialComponentResponse,
+
+    -- * Response Lenses
+    deleteTrialComponentResponse_trialComponentArn,
+    deleteTrialComponentResponse_httpStatus,
+  )
+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:/ 'newDeleteTrialComponent' smart constructor.
+data DeleteTrialComponent = DeleteTrialComponent'
+  { -- | The name of the component to delete.
+    trialComponentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTrialComponent' 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:
+--
+-- 'trialComponentName', 'deleteTrialComponent_trialComponentName' - The name of the component to delete.
+newDeleteTrialComponent ::
+  -- | 'trialComponentName'
+  Prelude.Text ->
+  DeleteTrialComponent
+newDeleteTrialComponent pTrialComponentName_ =
+  DeleteTrialComponent'
+    { trialComponentName =
+        pTrialComponentName_
+    }
+
+-- | The name of the component to delete.
+deleteTrialComponent_trialComponentName :: Lens.Lens' DeleteTrialComponent Prelude.Text
+deleteTrialComponent_trialComponentName = Lens.lens (\DeleteTrialComponent' {trialComponentName} -> trialComponentName) (\s@DeleteTrialComponent' {} a -> s {trialComponentName = a} :: DeleteTrialComponent)
+
+instance Core.AWSRequest DeleteTrialComponent where
+  type
+    AWSResponse DeleteTrialComponent =
+      DeleteTrialComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteTrialComponentResponse'
+            Prelude.<$> (x Data..?> "TrialComponentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTrialComponent where
+  hashWithSalt _salt DeleteTrialComponent' {..} =
+    _salt `Prelude.hashWithSalt` trialComponentName
+
+instance Prelude.NFData DeleteTrialComponent where
+  rnf DeleteTrialComponent' {..} =
+    Prelude.rnf trialComponentName
+
+instance Data.ToHeaders DeleteTrialComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteTrialComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteTrialComponent where
+  toJSON DeleteTrialComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TrialComponentName" Data..= trialComponentName)
+          ]
+      )
+
+instance Data.ToPath DeleteTrialComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteTrialComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTrialComponentResponse' smart constructor.
+data DeleteTrialComponentResponse = DeleteTrialComponentResponse'
+  { -- | The Amazon Resource Name (ARN) of the component is being deleted.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTrialComponentResponse' 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:
+--
+-- 'trialComponentArn', 'deleteTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the component is being deleted.
+--
+-- 'httpStatus', 'deleteTrialComponentResponse_httpStatus' - The response's http status code.
+newDeleteTrialComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTrialComponentResponse
+newDeleteTrialComponentResponse pHttpStatus_ =
+  DeleteTrialComponentResponse'
+    { trialComponentArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the component is being deleted.
+deleteTrialComponentResponse_trialComponentArn :: Lens.Lens' DeleteTrialComponentResponse (Prelude.Maybe Prelude.Text)
+deleteTrialComponentResponse_trialComponentArn = Lens.lens (\DeleteTrialComponentResponse' {trialComponentArn} -> trialComponentArn) (\s@DeleteTrialComponentResponse' {} a -> s {trialComponentArn = a} :: DeleteTrialComponentResponse)
+
+-- | The response's http status code.
+deleteTrialComponentResponse_httpStatus :: Lens.Lens' DeleteTrialComponentResponse Prelude.Int
+deleteTrialComponentResponse_httpStatus = Lens.lens (\DeleteTrialComponentResponse' {httpStatus} -> httpStatus) (\s@DeleteTrialComponentResponse' {} a -> s {httpStatus = a} :: DeleteTrialComponentResponse)
+
+instance Prelude.NFData DeleteTrialComponentResponse where
+  rnf DeleteTrialComponentResponse' {..} =
+    Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteUserProfile.hs b/gen/Amazonka/SageMaker/DeleteUserProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteUserProfile.hs
@@ -0,0 +1,156 @@
+{-# 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.DeleteUserProfile
+-- 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 a user profile. When a user profile is deleted, the user loses
+-- access to their EFS volume, including data, notebooks, and other
+-- artifacts.
+module Amazonka.SageMaker.DeleteUserProfile
+  ( -- * Creating a Request
+    DeleteUserProfile (..),
+    newDeleteUserProfile,
+
+    -- * Request Lenses
+    deleteUserProfile_domainId,
+    deleteUserProfile_userProfileName,
+
+    -- * Destructuring the Response
+    DeleteUserProfileResponse (..),
+    newDeleteUserProfileResponse,
+  )
+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:/ 'newDeleteUserProfile' smart constructor.
+data DeleteUserProfile = DeleteUserProfile'
+  { -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The user profile name.
+    userProfileName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUserProfile' 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:
+--
+-- 'domainId', 'deleteUserProfile_domainId' - The domain ID.
+--
+-- 'userProfileName', 'deleteUserProfile_userProfileName' - The user profile name.
+newDeleteUserProfile ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'userProfileName'
+  Prelude.Text ->
+  DeleteUserProfile
+newDeleteUserProfile pDomainId_ pUserProfileName_ =
+  DeleteUserProfile'
+    { domainId = pDomainId_,
+      userProfileName = pUserProfileName_
+    }
+
+-- | The domain ID.
+deleteUserProfile_domainId :: Lens.Lens' DeleteUserProfile Prelude.Text
+deleteUserProfile_domainId = Lens.lens (\DeleteUserProfile' {domainId} -> domainId) (\s@DeleteUserProfile' {} a -> s {domainId = a} :: DeleteUserProfile)
+
+-- | The user profile name.
+deleteUserProfile_userProfileName :: Lens.Lens' DeleteUserProfile Prelude.Text
+deleteUserProfile_userProfileName = Lens.lens (\DeleteUserProfile' {userProfileName} -> userProfileName) (\s@DeleteUserProfile' {} a -> s {userProfileName = a} :: DeleteUserProfile)
+
+instance Core.AWSRequest DeleteUserProfile where
+  type
+    AWSResponse DeleteUserProfile =
+      DeleteUserProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteUserProfileResponse'
+
+instance Prelude.Hashable DeleteUserProfile where
+  hashWithSalt _salt DeleteUserProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData DeleteUserProfile where
+  rnf DeleteUserProfile' {..} =
+    Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf userProfileName
+
+instance Data.ToHeaders DeleteUserProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeleteUserProfile" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteUserProfile where
+  toJSON DeleteUserProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just
+              ("UserProfileName" Data..= userProfileName)
+          ]
+      )
+
+instance Data.ToPath DeleteUserProfile where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteUserProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteUserProfileResponse' smart constructor.
+data DeleteUserProfileResponse = DeleteUserProfileResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUserProfileResponse' 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.
+newDeleteUserProfileResponse ::
+  DeleteUserProfileResponse
+newDeleteUserProfileResponse =
+  DeleteUserProfileResponse'
+
+instance Prelude.NFData DeleteUserProfileResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DeleteWorkforce.hs b/gen/Amazonka/SageMaker/DeleteWorkforce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteWorkforce.hs
@@ -0,0 +1,162 @@
+{-# 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.DeleteWorkforce
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this operation to delete a workforce.
+--
+-- If you want to create a new workforce in an Amazon Web Services Region
+-- where a workforce already exists, use this operation to delete the
+-- existing workforce and then use to create a new workforce.
+--
+-- If a private workforce contains one or more work teams, you must use the
+-- operation to delete all work teams before you delete the workforce. If
+-- you try to delete a workforce that contains one or more work teams, you
+-- will recieve a @ResourceInUse@ error.
+module Amazonka.SageMaker.DeleteWorkforce
+  ( -- * Creating a Request
+    DeleteWorkforce (..),
+    newDeleteWorkforce,
+
+    -- * Request Lenses
+    deleteWorkforce_workforceName,
+
+    -- * Destructuring the Response
+    DeleteWorkforceResponse (..),
+    newDeleteWorkforceResponse,
+
+    -- * Response Lenses
+    deleteWorkforceResponse_httpStatus,
+  )
+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:/ 'newDeleteWorkforce' smart constructor.
+data DeleteWorkforce = DeleteWorkforce'
+  { -- | The name of the workforce.
+    workforceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkforce' 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:
+--
+-- 'workforceName', 'deleteWorkforce_workforceName' - The name of the workforce.
+newDeleteWorkforce ::
+  -- | 'workforceName'
+  Prelude.Text ->
+  DeleteWorkforce
+newDeleteWorkforce pWorkforceName_ =
+  DeleteWorkforce' {workforceName = pWorkforceName_}
+
+-- | The name of the workforce.
+deleteWorkforce_workforceName :: Lens.Lens' DeleteWorkforce Prelude.Text
+deleteWorkforce_workforceName = Lens.lens (\DeleteWorkforce' {workforceName} -> workforceName) (\s@DeleteWorkforce' {} a -> s {workforceName = a} :: DeleteWorkforce)
+
+instance Core.AWSRequest DeleteWorkforce where
+  type
+    AWSResponse DeleteWorkforce =
+      DeleteWorkforceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteWorkforceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteWorkforce where
+  hashWithSalt _salt DeleteWorkforce' {..} =
+    _salt `Prelude.hashWithSalt` workforceName
+
+instance Prelude.NFData DeleteWorkforce where
+  rnf DeleteWorkforce' {..} = Prelude.rnf workforceName
+
+instance Data.ToHeaders DeleteWorkforce where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteWorkforce" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteWorkforce where
+  toJSON DeleteWorkforce' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("WorkforceName" Data..= workforceName)
+          ]
+      )
+
+instance Data.ToPath DeleteWorkforce where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteWorkforce where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteWorkforceResponse' smart constructor.
+data DeleteWorkforceResponse = DeleteWorkforceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkforceResponse' 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', 'deleteWorkforceResponse_httpStatus' - The response's http status code.
+newDeleteWorkforceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteWorkforceResponse
+newDeleteWorkforceResponse pHttpStatus_ =
+  DeleteWorkforceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteWorkforceResponse_httpStatus :: Lens.Lens' DeleteWorkforceResponse Prelude.Int
+deleteWorkforceResponse_httpStatus = Lens.lens (\DeleteWorkforceResponse' {httpStatus} -> httpStatus) (\s@DeleteWorkforceResponse' {} a -> s {httpStatus = a} :: DeleteWorkforceResponse)
+
+instance Prelude.NFData DeleteWorkforceResponse where
+  rnf DeleteWorkforceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DeleteWorkteam.hs b/gen/Amazonka/SageMaker/DeleteWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeleteWorkteam.hs
@@ -0,0 +1,170 @@
+{-# 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.DeleteWorkteam
+-- 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 an existing work team. This operation can\'t be undone.
+module Amazonka.SageMaker.DeleteWorkteam
+  ( -- * Creating a Request
+    DeleteWorkteam (..),
+    newDeleteWorkteam,
+
+    -- * Request Lenses
+    deleteWorkteam_workteamName,
+
+    -- * Destructuring the Response
+    DeleteWorkteamResponse (..),
+    newDeleteWorkteamResponse,
+
+    -- * Response Lenses
+    deleteWorkteamResponse_httpStatus,
+    deleteWorkteamResponse_success,
+  )
+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:/ 'newDeleteWorkteam' smart constructor.
+data DeleteWorkteam = DeleteWorkteam'
+  { -- | The name of the work team to delete.
+    workteamName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkteam' 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:
+--
+-- 'workteamName', 'deleteWorkteam_workteamName' - The name of the work team to delete.
+newDeleteWorkteam ::
+  -- | 'workteamName'
+  Prelude.Text ->
+  DeleteWorkteam
+newDeleteWorkteam pWorkteamName_ =
+  DeleteWorkteam' {workteamName = pWorkteamName_}
+
+-- | The name of the work team to delete.
+deleteWorkteam_workteamName :: Lens.Lens' DeleteWorkteam Prelude.Text
+deleteWorkteam_workteamName = Lens.lens (\DeleteWorkteam' {workteamName} -> workteamName) (\s@DeleteWorkteam' {} a -> s {workteamName = a} :: DeleteWorkteam)
+
+instance Core.AWSRequest DeleteWorkteam where
+  type
+    AWSResponse DeleteWorkteam =
+      DeleteWorkteamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteWorkteamResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Success")
+      )
+
+instance Prelude.Hashable DeleteWorkteam where
+  hashWithSalt _salt DeleteWorkteam' {..} =
+    _salt `Prelude.hashWithSalt` workteamName
+
+instance Prelude.NFData DeleteWorkteam where
+  rnf DeleteWorkteam' {..} = Prelude.rnf workteamName
+
+instance Data.ToHeaders DeleteWorkteam where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DeleteWorkteam" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteWorkteam where
+  toJSON DeleteWorkteam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("WorkteamName" Data..= workteamName)]
+      )
+
+instance Data.ToPath DeleteWorkteam where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteWorkteam where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteWorkteamResponse' smart constructor.
+data DeleteWorkteamResponse = DeleteWorkteamResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Returns @true@ if the work team was successfully deleted; otherwise,
+    -- returns @false@.
+    success :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteWorkteamResponse' 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', 'deleteWorkteamResponse_httpStatus' - The response's http status code.
+--
+-- 'success', 'deleteWorkteamResponse_success' - Returns @true@ if the work team was successfully deleted; otherwise,
+-- returns @false@.
+newDeleteWorkteamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'success'
+  Prelude.Bool ->
+  DeleteWorkteamResponse
+newDeleteWorkteamResponse pHttpStatus_ pSuccess_ =
+  DeleteWorkteamResponse'
+    { httpStatus = pHttpStatus_,
+      success = pSuccess_
+    }
+
+-- | The response's http status code.
+deleteWorkteamResponse_httpStatus :: Lens.Lens' DeleteWorkteamResponse Prelude.Int
+deleteWorkteamResponse_httpStatus = Lens.lens (\DeleteWorkteamResponse' {httpStatus} -> httpStatus) (\s@DeleteWorkteamResponse' {} a -> s {httpStatus = a} :: DeleteWorkteamResponse)
+
+-- | Returns @true@ if the work team was successfully deleted; otherwise,
+-- returns @false@.
+deleteWorkteamResponse_success :: Lens.Lens' DeleteWorkteamResponse Prelude.Bool
+deleteWorkteamResponse_success = Lens.lens (\DeleteWorkteamResponse' {success} -> success) (\s@DeleteWorkteamResponse' {} a -> s {success = a} :: DeleteWorkteamResponse)
+
+instance Prelude.NFData DeleteWorkteamResponse where
+  rnf DeleteWorkteamResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf success
diff --git a/gen/Amazonka/SageMaker/DeregisterDevices.hs b/gen/Amazonka/SageMaker/DeregisterDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DeregisterDevices.hs
@@ -0,0 +1,154 @@
+{-# 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.DeregisterDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deregisters the specified devices. After you deregister a device, you
+-- will need to re-register the devices.
+module Amazonka.SageMaker.DeregisterDevices
+  ( -- * Creating a Request
+    DeregisterDevices (..),
+    newDeregisterDevices,
+
+    -- * Request Lenses
+    deregisterDevices_deviceFleetName,
+    deregisterDevices_deviceNames,
+
+    -- * Destructuring the Response
+    DeregisterDevicesResponse (..),
+    newDeregisterDevicesResponse,
+  )
+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:/ 'newDeregisterDevices' smart constructor.
+data DeregisterDevices = DeregisterDevices'
+  { -- | The name of the fleet the devices belong to.
+    deviceFleetName :: Prelude.Text,
+    -- | The unique IDs of the devices.
+    deviceNames :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeregisterDevices' 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:
+--
+-- 'deviceFleetName', 'deregisterDevices_deviceFleetName' - The name of the fleet the devices belong to.
+--
+-- 'deviceNames', 'deregisterDevices_deviceNames' - The unique IDs of the devices.
+newDeregisterDevices ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  DeregisterDevices
+newDeregisterDevices pDeviceFleetName_ =
+  DeregisterDevices'
+    { deviceFleetName =
+        pDeviceFleetName_,
+      deviceNames = Prelude.mempty
+    }
+
+-- | The name of the fleet the devices belong to.
+deregisterDevices_deviceFleetName :: Lens.Lens' DeregisterDevices Prelude.Text
+deregisterDevices_deviceFleetName = Lens.lens (\DeregisterDevices' {deviceFleetName} -> deviceFleetName) (\s@DeregisterDevices' {} a -> s {deviceFleetName = a} :: DeregisterDevices)
+
+-- | The unique IDs of the devices.
+deregisterDevices_deviceNames :: Lens.Lens' DeregisterDevices [Prelude.Text]
+deregisterDevices_deviceNames = Lens.lens (\DeregisterDevices' {deviceNames} -> deviceNames) (\s@DeregisterDevices' {} a -> s {deviceNames = a} :: DeregisterDevices) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DeregisterDevices where
+  type
+    AWSResponse DeregisterDevices =
+      DeregisterDevicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeregisterDevicesResponse'
+
+instance Prelude.Hashable DeregisterDevices where
+  hashWithSalt _salt DeregisterDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` deviceNames
+
+instance Prelude.NFData DeregisterDevices where
+  rnf DeregisterDevices' {..} =
+    Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf deviceNames
+
+instance Data.ToHeaders DeregisterDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DeregisterDevices" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeregisterDevices where
+  toJSON DeregisterDevices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName),
+            Prelude.Just ("DeviceNames" Data..= deviceNames)
+          ]
+      )
+
+instance Data.ToPath DeregisterDevices where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeregisterDevices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeregisterDevicesResponse' smart constructor.
+data DeregisterDevicesResponse = DeregisterDevicesResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeregisterDevicesResponse' 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.
+newDeregisterDevicesResponse ::
+  DeregisterDevicesResponse
+newDeregisterDevicesResponse =
+  DeregisterDevicesResponse'
+
+instance Prelude.NFData DeregisterDevicesResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/DescribeAction.hs b/gen/Amazonka/SageMaker/DescribeAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeAction.hs
@@ -0,0 +1,307 @@
+{-# 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.DescribeAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an action.
+module Amazonka.SageMaker.DescribeAction
+  ( -- * Creating a Request
+    DescribeAction (..),
+    newDescribeAction,
+
+    -- * Request Lenses
+    describeAction_actionName,
+
+    -- * Destructuring the Response
+    DescribeActionResponse (..),
+    newDescribeActionResponse,
+
+    -- * Response Lenses
+    describeActionResponse_actionArn,
+    describeActionResponse_actionName,
+    describeActionResponse_actionType,
+    describeActionResponse_createdBy,
+    describeActionResponse_creationTime,
+    describeActionResponse_description,
+    describeActionResponse_lastModifiedBy,
+    describeActionResponse_lastModifiedTime,
+    describeActionResponse_lineageGroupArn,
+    describeActionResponse_metadataProperties,
+    describeActionResponse_properties,
+    describeActionResponse_source,
+    describeActionResponse_status,
+    describeActionResponse_httpStatus,
+  )
+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:/ 'newDescribeAction' smart constructor.
+data DescribeAction = DescribeAction'
+  { -- | The name of the action to describe.
+    actionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAction' 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:
+--
+-- 'actionName', 'describeAction_actionName' - The name of the action to describe.
+newDescribeAction ::
+  -- | 'actionName'
+  Prelude.Text ->
+  DescribeAction
+newDescribeAction pActionName_ =
+  DescribeAction' {actionName = pActionName_}
+
+-- | The name of the action to describe.
+describeAction_actionName :: Lens.Lens' DescribeAction Prelude.Text
+describeAction_actionName = Lens.lens (\DescribeAction' {actionName} -> actionName) (\s@DescribeAction' {} a -> s {actionName = a} :: DescribeAction)
+
+instance Core.AWSRequest DescribeAction where
+  type
+    AWSResponse DescribeAction =
+      DescribeActionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeActionResponse'
+            Prelude.<$> (x Data..?> "ActionArn")
+            Prelude.<*> (x Data..?> "ActionName")
+            Prelude.<*> (x Data..?> "ActionType")
+            Prelude.<*> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LineageGroupArn")
+            Prelude.<*> (x Data..?> "MetadataProperties")
+            Prelude.<*> (x Data..?> "Properties" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAction where
+  hashWithSalt _salt DescribeAction' {..} =
+    _salt `Prelude.hashWithSalt` actionName
+
+instance Prelude.NFData DescribeAction where
+  rnf DescribeAction' {..} = Prelude.rnf actionName
+
+instance Data.ToHeaders DescribeAction where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeAction" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeAction where
+  toJSON DescribeAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ActionName" Data..= actionName)]
+      )
+
+instance Data.ToPath DescribeAction where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeAction where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeActionResponse' smart constructor.
+data DescribeActionResponse = DescribeActionResponse'
+  { -- | The Amazon Resource Name (ARN) of the action.
+    actionArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the action.
+    actionName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the action.
+    actionType :: Prelude.Maybe Prelude.Text,
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the action was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the action.
+    description :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the action was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | A list of the action\'s properties.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The source of the action.
+    source :: Prelude.Maybe ActionSource,
+    -- | The status of the action.
+    status :: Prelude.Maybe ActionStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeActionResponse' 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:
+--
+-- 'actionArn', 'describeActionResponse_actionArn' - The Amazon Resource Name (ARN) of the action.
+--
+-- 'actionName', 'describeActionResponse_actionName' - The name of the action.
+--
+-- 'actionType', 'describeActionResponse_actionType' - The type of the action.
+--
+-- 'createdBy', 'describeActionResponse_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'describeActionResponse_creationTime' - When the action was created.
+--
+-- 'description', 'describeActionResponse_description' - The description of the action.
+--
+-- 'lastModifiedBy', 'describeActionResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeActionResponse_lastModifiedTime' - When the action was last modified.
+--
+-- 'lineageGroupArn', 'describeActionResponse_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group.
+--
+-- 'metadataProperties', 'describeActionResponse_metadataProperties' - Undocumented member.
+--
+-- 'properties', 'describeActionResponse_properties' - A list of the action\'s properties.
+--
+-- 'source', 'describeActionResponse_source' - The source of the action.
+--
+-- 'status', 'describeActionResponse_status' - The status of the action.
+--
+-- 'httpStatus', 'describeActionResponse_httpStatus' - The response's http status code.
+newDescribeActionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeActionResponse
+newDescribeActionResponse pHttpStatus_ =
+  DescribeActionResponse'
+    { actionArn =
+        Prelude.Nothing,
+      actionName = Prelude.Nothing,
+      actionType = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      source = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the action.
+describeActionResponse_actionArn :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.Text)
+describeActionResponse_actionArn = Lens.lens (\DescribeActionResponse' {actionArn} -> actionArn) (\s@DescribeActionResponse' {} a -> s {actionArn = a} :: DescribeActionResponse)
+
+-- | The name of the action.
+describeActionResponse_actionName :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.Text)
+describeActionResponse_actionName = Lens.lens (\DescribeActionResponse' {actionName} -> actionName) (\s@DescribeActionResponse' {} a -> s {actionName = a} :: DescribeActionResponse)
+
+-- | The type of the action.
+describeActionResponse_actionType :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.Text)
+describeActionResponse_actionType = Lens.lens (\DescribeActionResponse' {actionType} -> actionType) (\s@DescribeActionResponse' {} a -> s {actionType = a} :: DescribeActionResponse)
+
+-- | Undocumented member.
+describeActionResponse_createdBy :: Lens.Lens' DescribeActionResponse (Prelude.Maybe UserContext)
+describeActionResponse_createdBy = Lens.lens (\DescribeActionResponse' {createdBy} -> createdBy) (\s@DescribeActionResponse' {} a -> s {createdBy = a} :: DescribeActionResponse)
+
+-- | When the action was created.
+describeActionResponse_creationTime :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.UTCTime)
+describeActionResponse_creationTime = Lens.lens (\DescribeActionResponse' {creationTime} -> creationTime) (\s@DescribeActionResponse' {} a -> s {creationTime = a} :: DescribeActionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the action.
+describeActionResponse_description :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.Text)
+describeActionResponse_description = Lens.lens (\DescribeActionResponse' {description} -> description) (\s@DescribeActionResponse' {} a -> s {description = a} :: DescribeActionResponse)
+
+-- | Undocumented member.
+describeActionResponse_lastModifiedBy :: Lens.Lens' DescribeActionResponse (Prelude.Maybe UserContext)
+describeActionResponse_lastModifiedBy = Lens.lens (\DescribeActionResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeActionResponse' {} a -> s {lastModifiedBy = a} :: DescribeActionResponse)
+
+-- | When the action was last modified.
+describeActionResponse_lastModifiedTime :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.UTCTime)
+describeActionResponse_lastModifiedTime = Lens.lens (\DescribeActionResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeActionResponse' {} a -> s {lastModifiedTime = a} :: DescribeActionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group.
+describeActionResponse_lineageGroupArn :: Lens.Lens' DescribeActionResponse (Prelude.Maybe Prelude.Text)
+describeActionResponse_lineageGroupArn = Lens.lens (\DescribeActionResponse' {lineageGroupArn} -> lineageGroupArn) (\s@DescribeActionResponse' {} a -> s {lineageGroupArn = a} :: DescribeActionResponse)
+
+-- | Undocumented member.
+describeActionResponse_metadataProperties :: Lens.Lens' DescribeActionResponse (Prelude.Maybe MetadataProperties)
+describeActionResponse_metadataProperties = Lens.lens (\DescribeActionResponse' {metadataProperties} -> metadataProperties) (\s@DescribeActionResponse' {} a -> s {metadataProperties = a} :: DescribeActionResponse)
+
+-- | A list of the action\'s properties.
+describeActionResponse_properties :: Lens.Lens' DescribeActionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeActionResponse_properties = Lens.lens (\DescribeActionResponse' {properties} -> properties) (\s@DescribeActionResponse' {} a -> s {properties = a} :: DescribeActionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source of the action.
+describeActionResponse_source :: Lens.Lens' DescribeActionResponse (Prelude.Maybe ActionSource)
+describeActionResponse_source = Lens.lens (\DescribeActionResponse' {source} -> source) (\s@DescribeActionResponse' {} a -> s {source = a} :: DescribeActionResponse)
+
+-- | The status of the action.
+describeActionResponse_status :: Lens.Lens' DescribeActionResponse (Prelude.Maybe ActionStatus)
+describeActionResponse_status = Lens.lens (\DescribeActionResponse' {status} -> status) (\s@DescribeActionResponse' {} a -> s {status = a} :: DescribeActionResponse)
+
+-- | The response's http status code.
+describeActionResponse_httpStatus :: Lens.Lens' DescribeActionResponse Prelude.Int
+describeActionResponse_httpStatus = Lens.lens (\DescribeActionResponse' {httpStatus} -> httpStatus) (\s@DescribeActionResponse' {} a -> s {httpStatus = a} :: DescribeActionResponse)
+
+instance Prelude.NFData DescribeActionResponse where
+  rnf DescribeActionResponse' {..} =
+    Prelude.rnf actionArn
+      `Prelude.seq` Prelude.rnf actionName
+      `Prelude.seq` Prelude.rnf actionType
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeAlgorithm.hs b/gen/Amazonka/SageMaker/DescribeAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeAlgorithm.hs
@@ -0,0 +1,318 @@
+{-# 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.DescribeAlgorithm
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of the specified algorithm that is in your
+-- account.
+module Amazonka.SageMaker.DescribeAlgorithm
+  ( -- * Creating a Request
+    DescribeAlgorithm (..),
+    newDescribeAlgorithm,
+
+    -- * Request Lenses
+    describeAlgorithm_algorithmName,
+
+    -- * Destructuring the Response
+    DescribeAlgorithmResponse (..),
+    newDescribeAlgorithmResponse,
+
+    -- * Response Lenses
+    describeAlgorithmResponse_algorithmDescription,
+    describeAlgorithmResponse_certifyForMarketplace,
+    describeAlgorithmResponse_inferenceSpecification,
+    describeAlgorithmResponse_productId,
+    describeAlgorithmResponse_validationSpecification,
+    describeAlgorithmResponse_httpStatus,
+    describeAlgorithmResponse_algorithmName,
+    describeAlgorithmResponse_algorithmArn,
+    describeAlgorithmResponse_creationTime,
+    describeAlgorithmResponse_trainingSpecification,
+    describeAlgorithmResponse_algorithmStatus,
+    describeAlgorithmResponse_algorithmStatusDetails,
+  )
+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:/ 'newDescribeAlgorithm' smart constructor.
+data DescribeAlgorithm = DescribeAlgorithm'
+  { -- | The name of the algorithm to describe.
+    algorithmName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAlgorithm' 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:
+--
+-- 'algorithmName', 'describeAlgorithm_algorithmName' - The name of the algorithm to describe.
+newDescribeAlgorithm ::
+  -- | 'algorithmName'
+  Prelude.Text ->
+  DescribeAlgorithm
+newDescribeAlgorithm pAlgorithmName_ =
+  DescribeAlgorithm' {algorithmName = pAlgorithmName_}
+
+-- | The name of the algorithm to describe.
+describeAlgorithm_algorithmName :: Lens.Lens' DescribeAlgorithm Prelude.Text
+describeAlgorithm_algorithmName = Lens.lens (\DescribeAlgorithm' {algorithmName} -> algorithmName) (\s@DescribeAlgorithm' {} a -> s {algorithmName = a} :: DescribeAlgorithm)
+
+instance Core.AWSRequest DescribeAlgorithm where
+  type
+    AWSResponse DescribeAlgorithm =
+      DescribeAlgorithmResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAlgorithmResponse'
+            Prelude.<$> (x Data..?> "AlgorithmDescription")
+            Prelude.<*> (x Data..?> "CertifyForMarketplace")
+            Prelude.<*> (x Data..?> "InferenceSpecification")
+            Prelude.<*> (x Data..?> "ProductId")
+            Prelude.<*> (x Data..?> "ValidationSpecification")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "AlgorithmName")
+            Prelude.<*> (x Data..:> "AlgorithmArn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "TrainingSpecification")
+            Prelude.<*> (x Data..:> "AlgorithmStatus")
+            Prelude.<*> (x Data..:> "AlgorithmStatusDetails")
+      )
+
+instance Prelude.Hashable DescribeAlgorithm where
+  hashWithSalt _salt DescribeAlgorithm' {..} =
+    _salt `Prelude.hashWithSalt` algorithmName
+
+instance Prelude.NFData DescribeAlgorithm where
+  rnf DescribeAlgorithm' {..} =
+    Prelude.rnf algorithmName
+
+instance Data.ToHeaders DescribeAlgorithm where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeAlgorithm" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeAlgorithm where
+  toJSON DescribeAlgorithm' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AlgorithmName" Data..= algorithmName)
+          ]
+      )
+
+instance Data.ToPath DescribeAlgorithm where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeAlgorithm where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAlgorithmResponse' smart constructor.
+data DescribeAlgorithmResponse = DescribeAlgorithmResponse'
+  { -- | A brief summary about the algorithm.
+    algorithmDescription :: Prelude.Maybe Prelude.Text,
+    -- | Whether the algorithm is certified to be listed in Amazon Web Services
+    -- Marketplace.
+    certifyForMarketplace :: Prelude.Maybe Prelude.Bool,
+    -- | Details about inference jobs that the algorithm runs.
+    inferenceSpecification :: Prelude.Maybe InferenceSpecification,
+    -- | The product identifier of the algorithm.
+    productId :: Prelude.Maybe Prelude.Text,
+    -- | Details about configurations for one or more training jobs that
+    -- SageMaker runs to test the algorithm.
+    validationSpecification :: Prelude.Maybe AlgorithmValidationSpecification,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the algorithm being described.
+    algorithmName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the algorithm.
+    algorithmArn :: Prelude.Text,
+    -- | A timestamp specifying when the algorithm was created.
+    creationTime :: Data.POSIX,
+    -- | Details about training jobs run by this algorithm.
+    trainingSpecification :: TrainingSpecification,
+    -- | The current status of the algorithm.
+    algorithmStatus :: AlgorithmStatus,
+    -- | Details about the current status of the algorithm.
+    algorithmStatusDetails :: AlgorithmStatusDetails
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAlgorithmResponse' 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:
+--
+-- 'algorithmDescription', 'describeAlgorithmResponse_algorithmDescription' - A brief summary about the algorithm.
+--
+-- 'certifyForMarketplace', 'describeAlgorithmResponse_certifyForMarketplace' - Whether the algorithm is certified to be listed in Amazon Web Services
+-- Marketplace.
+--
+-- 'inferenceSpecification', 'describeAlgorithmResponse_inferenceSpecification' - Details about inference jobs that the algorithm runs.
+--
+-- 'productId', 'describeAlgorithmResponse_productId' - The product identifier of the algorithm.
+--
+-- 'validationSpecification', 'describeAlgorithmResponse_validationSpecification' - Details about configurations for one or more training jobs that
+-- SageMaker runs to test the algorithm.
+--
+-- 'httpStatus', 'describeAlgorithmResponse_httpStatus' - The response's http status code.
+--
+-- 'algorithmName', 'describeAlgorithmResponse_algorithmName' - The name of the algorithm being described.
+--
+-- 'algorithmArn', 'describeAlgorithmResponse_algorithmArn' - The Amazon Resource Name (ARN) of the algorithm.
+--
+-- 'creationTime', 'describeAlgorithmResponse_creationTime' - A timestamp specifying when the algorithm was created.
+--
+-- 'trainingSpecification', 'describeAlgorithmResponse_trainingSpecification' - Details about training jobs run by this algorithm.
+--
+-- 'algorithmStatus', 'describeAlgorithmResponse_algorithmStatus' - The current status of the algorithm.
+--
+-- 'algorithmStatusDetails', 'describeAlgorithmResponse_algorithmStatusDetails' - Details about the current status of the algorithm.
+newDescribeAlgorithmResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'algorithmName'
+  Prelude.Text ->
+  -- | 'algorithmArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'trainingSpecification'
+  TrainingSpecification ->
+  -- | 'algorithmStatus'
+  AlgorithmStatus ->
+  -- | 'algorithmStatusDetails'
+  AlgorithmStatusDetails ->
+  DescribeAlgorithmResponse
+newDescribeAlgorithmResponse
+  pHttpStatus_
+  pAlgorithmName_
+  pAlgorithmArn_
+  pCreationTime_
+  pTrainingSpecification_
+  pAlgorithmStatus_
+  pAlgorithmStatusDetails_ =
+    DescribeAlgorithmResponse'
+      { algorithmDescription =
+          Prelude.Nothing,
+        certifyForMarketplace = Prelude.Nothing,
+        inferenceSpecification = Prelude.Nothing,
+        productId = Prelude.Nothing,
+        validationSpecification = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        algorithmName = pAlgorithmName_,
+        algorithmArn = pAlgorithmArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        trainingSpecification = pTrainingSpecification_,
+        algorithmStatus = pAlgorithmStatus_,
+        algorithmStatusDetails =
+          pAlgorithmStatusDetails_
+      }
+
+-- | A brief summary about the algorithm.
+describeAlgorithmResponse_algorithmDescription :: Lens.Lens' DescribeAlgorithmResponse (Prelude.Maybe Prelude.Text)
+describeAlgorithmResponse_algorithmDescription = Lens.lens (\DescribeAlgorithmResponse' {algorithmDescription} -> algorithmDescription) (\s@DescribeAlgorithmResponse' {} a -> s {algorithmDescription = a} :: DescribeAlgorithmResponse)
+
+-- | Whether the algorithm is certified to be listed in Amazon Web Services
+-- Marketplace.
+describeAlgorithmResponse_certifyForMarketplace :: Lens.Lens' DescribeAlgorithmResponse (Prelude.Maybe Prelude.Bool)
+describeAlgorithmResponse_certifyForMarketplace = Lens.lens (\DescribeAlgorithmResponse' {certifyForMarketplace} -> certifyForMarketplace) (\s@DescribeAlgorithmResponse' {} a -> s {certifyForMarketplace = a} :: DescribeAlgorithmResponse)
+
+-- | Details about inference jobs that the algorithm runs.
+describeAlgorithmResponse_inferenceSpecification :: Lens.Lens' DescribeAlgorithmResponse (Prelude.Maybe InferenceSpecification)
+describeAlgorithmResponse_inferenceSpecification = Lens.lens (\DescribeAlgorithmResponse' {inferenceSpecification} -> inferenceSpecification) (\s@DescribeAlgorithmResponse' {} a -> s {inferenceSpecification = a} :: DescribeAlgorithmResponse)
+
+-- | The product identifier of the algorithm.
+describeAlgorithmResponse_productId :: Lens.Lens' DescribeAlgorithmResponse (Prelude.Maybe Prelude.Text)
+describeAlgorithmResponse_productId = Lens.lens (\DescribeAlgorithmResponse' {productId} -> productId) (\s@DescribeAlgorithmResponse' {} a -> s {productId = a} :: DescribeAlgorithmResponse)
+
+-- | Details about configurations for one or more training jobs that
+-- SageMaker runs to test the algorithm.
+describeAlgorithmResponse_validationSpecification :: Lens.Lens' DescribeAlgorithmResponse (Prelude.Maybe AlgorithmValidationSpecification)
+describeAlgorithmResponse_validationSpecification = Lens.lens (\DescribeAlgorithmResponse' {validationSpecification} -> validationSpecification) (\s@DescribeAlgorithmResponse' {} a -> s {validationSpecification = a} :: DescribeAlgorithmResponse)
+
+-- | The response's http status code.
+describeAlgorithmResponse_httpStatus :: Lens.Lens' DescribeAlgorithmResponse Prelude.Int
+describeAlgorithmResponse_httpStatus = Lens.lens (\DescribeAlgorithmResponse' {httpStatus} -> httpStatus) (\s@DescribeAlgorithmResponse' {} a -> s {httpStatus = a} :: DescribeAlgorithmResponse)
+
+-- | The name of the algorithm being described.
+describeAlgorithmResponse_algorithmName :: Lens.Lens' DescribeAlgorithmResponse Prelude.Text
+describeAlgorithmResponse_algorithmName = Lens.lens (\DescribeAlgorithmResponse' {algorithmName} -> algorithmName) (\s@DescribeAlgorithmResponse' {} a -> s {algorithmName = a} :: DescribeAlgorithmResponse)
+
+-- | The Amazon Resource Name (ARN) of the algorithm.
+describeAlgorithmResponse_algorithmArn :: Lens.Lens' DescribeAlgorithmResponse Prelude.Text
+describeAlgorithmResponse_algorithmArn = Lens.lens (\DescribeAlgorithmResponse' {algorithmArn} -> algorithmArn) (\s@DescribeAlgorithmResponse' {} a -> s {algorithmArn = a} :: DescribeAlgorithmResponse)
+
+-- | A timestamp specifying when the algorithm was created.
+describeAlgorithmResponse_creationTime :: Lens.Lens' DescribeAlgorithmResponse Prelude.UTCTime
+describeAlgorithmResponse_creationTime = Lens.lens (\DescribeAlgorithmResponse' {creationTime} -> creationTime) (\s@DescribeAlgorithmResponse' {} a -> s {creationTime = a} :: DescribeAlgorithmResponse) Prelude.. Data._Time
+
+-- | Details about training jobs run by this algorithm.
+describeAlgorithmResponse_trainingSpecification :: Lens.Lens' DescribeAlgorithmResponse TrainingSpecification
+describeAlgorithmResponse_trainingSpecification = Lens.lens (\DescribeAlgorithmResponse' {trainingSpecification} -> trainingSpecification) (\s@DescribeAlgorithmResponse' {} a -> s {trainingSpecification = a} :: DescribeAlgorithmResponse)
+
+-- | The current status of the algorithm.
+describeAlgorithmResponse_algorithmStatus :: Lens.Lens' DescribeAlgorithmResponse AlgorithmStatus
+describeAlgorithmResponse_algorithmStatus = Lens.lens (\DescribeAlgorithmResponse' {algorithmStatus} -> algorithmStatus) (\s@DescribeAlgorithmResponse' {} a -> s {algorithmStatus = a} :: DescribeAlgorithmResponse)
+
+-- | Details about the current status of the algorithm.
+describeAlgorithmResponse_algorithmStatusDetails :: Lens.Lens' DescribeAlgorithmResponse AlgorithmStatusDetails
+describeAlgorithmResponse_algorithmStatusDetails = Lens.lens (\DescribeAlgorithmResponse' {algorithmStatusDetails} -> algorithmStatusDetails) (\s@DescribeAlgorithmResponse' {} a -> s {algorithmStatusDetails = a} :: DescribeAlgorithmResponse)
+
+instance Prelude.NFData DescribeAlgorithmResponse where
+  rnf DescribeAlgorithmResponse' {..} =
+    Prelude.rnf algorithmDescription
+      `Prelude.seq` Prelude.rnf certifyForMarketplace
+      `Prelude.seq` Prelude.rnf inferenceSpecification
+      `Prelude.seq` Prelude.rnf productId
+      `Prelude.seq` Prelude.rnf validationSpecification
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf algorithmArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf trainingSpecification
+      `Prelude.seq` Prelude.rnf algorithmStatus
+      `Prelude.seq` Prelude.rnf algorithmStatusDetails
diff --git a/gen/Amazonka/SageMaker/DescribeApp.hs b/gen/Amazonka/SageMaker/DescribeApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeApp.hs
@@ -0,0 +1,375 @@
+{-# 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.DescribeApp
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the app.
+module Amazonka.SageMaker.DescribeApp
+  ( -- * Creating a Request
+    DescribeApp (..),
+    newDescribeApp,
+
+    -- * Request Lenses
+    describeApp_spaceName,
+    describeApp_userProfileName,
+    describeApp_domainId,
+    describeApp_appType,
+    describeApp_appName,
+
+    -- * Destructuring the Response
+    DescribeAppResponse (..),
+    newDescribeAppResponse,
+
+    -- * Response Lenses
+    describeAppResponse_appArn,
+    describeAppResponse_appName,
+    describeAppResponse_appType,
+    describeAppResponse_creationTime,
+    describeAppResponse_domainId,
+    describeAppResponse_failureReason,
+    describeAppResponse_lastHealthCheckTimestamp,
+    describeAppResponse_lastUserActivityTimestamp,
+    describeAppResponse_resourceSpec,
+    describeAppResponse_spaceName,
+    describeAppResponse_status,
+    describeAppResponse_userProfileName,
+    describeAppResponse_httpStatus,
+  )
+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:/ 'newDescribeApp' smart constructor.
+data DescribeApp = DescribeApp'
+  { -- | The name of the space.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | The user profile name. If this value is not set, then @SpaceName@ must
+    -- be set.
+    userProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The type of app.
+    appType :: AppType,
+    -- | The name of the app.
+    appName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApp' 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:
+--
+-- 'spaceName', 'describeApp_spaceName' - The name of the space.
+--
+-- 'userProfileName', 'describeApp_userProfileName' - The user profile name. If this value is not set, then @SpaceName@ must
+-- be set.
+--
+-- 'domainId', 'describeApp_domainId' - The domain ID.
+--
+-- 'appType', 'describeApp_appType' - The type of app.
+--
+-- 'appName', 'describeApp_appName' - The name of the app.
+newDescribeApp ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'appType'
+  AppType ->
+  -- | 'appName'
+  Prelude.Text ->
+  DescribeApp
+newDescribeApp pDomainId_ pAppType_ pAppName_ =
+  DescribeApp'
+    { spaceName = Prelude.Nothing,
+      userProfileName = Prelude.Nothing,
+      domainId = pDomainId_,
+      appType = pAppType_,
+      appName = pAppName_
+    }
+
+-- | The name of the space.
+describeApp_spaceName :: Lens.Lens' DescribeApp (Prelude.Maybe Prelude.Text)
+describeApp_spaceName = Lens.lens (\DescribeApp' {spaceName} -> spaceName) (\s@DescribeApp' {} a -> s {spaceName = a} :: DescribeApp)
+
+-- | The user profile name. If this value is not set, then @SpaceName@ must
+-- be set.
+describeApp_userProfileName :: Lens.Lens' DescribeApp (Prelude.Maybe Prelude.Text)
+describeApp_userProfileName = Lens.lens (\DescribeApp' {userProfileName} -> userProfileName) (\s@DescribeApp' {} a -> s {userProfileName = a} :: DescribeApp)
+
+-- | The domain ID.
+describeApp_domainId :: Lens.Lens' DescribeApp Prelude.Text
+describeApp_domainId = Lens.lens (\DescribeApp' {domainId} -> domainId) (\s@DescribeApp' {} a -> s {domainId = a} :: DescribeApp)
+
+-- | The type of app.
+describeApp_appType :: Lens.Lens' DescribeApp AppType
+describeApp_appType = Lens.lens (\DescribeApp' {appType} -> appType) (\s@DescribeApp' {} a -> s {appType = a} :: DescribeApp)
+
+-- | The name of the app.
+describeApp_appName :: Lens.Lens' DescribeApp Prelude.Text
+describeApp_appName = Lens.lens (\DescribeApp' {appName} -> appName) (\s@DescribeApp' {} a -> s {appName = a} :: DescribeApp)
+
+instance Core.AWSRequest DescribeApp where
+  type AWSResponse DescribeApp = DescribeAppResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAppResponse'
+            Prelude.<$> (x Data..?> "AppArn")
+            Prelude.<*> (x Data..?> "AppName")
+            Prelude.<*> (x Data..?> "AppType")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DomainId")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LastHealthCheckTimestamp")
+            Prelude.<*> (x Data..?> "LastUserActivityTimestamp")
+            Prelude.<*> (x Data..?> "ResourceSpec")
+            Prelude.<*> (x Data..?> "SpaceName")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "UserProfileName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeApp where
+  hashWithSalt _salt DescribeApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` spaceName
+      `Prelude.hashWithSalt` userProfileName
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` appType
+      `Prelude.hashWithSalt` appName
+
+instance Prelude.NFData DescribeApp where
+  rnf DescribeApp' {..} =
+    Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf userProfileName
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf appType
+      `Prelude.seq` Prelude.rnf appName
+
+instance Data.ToHeaders DescribeApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeApp" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeApp where
+  toJSON DescribeApp' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SpaceName" Data..=) Prelude.<$> spaceName,
+            ("UserProfileName" Data..=)
+              Prelude.<$> userProfileName,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("AppType" Data..= appType),
+            Prelude.Just ("AppName" Data..= appName)
+          ]
+      )
+
+instance Data.ToPath DescribeApp where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeApp where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAppResponse' smart constructor.
+data DescribeAppResponse = DescribeAppResponse'
+  { -- | The Amazon Resource Name (ARN) of the app.
+    appArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the app.
+    appName :: Prelude.Maybe Prelude.Text,
+    -- | The type of app.
+    appType :: Prelude.Maybe AppType,
+    -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The domain ID.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The failure reason.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp of the last health check.
+    lastHealthCheckTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp of the last user\'s activity. @LastUserActivityTimestamp@
+    -- is also updated when SageMaker performs health checks without user
+    -- activity. As a result, this value is set to the same value as
+    -- @LastHealthCheckTimestamp@.
+    lastUserActivityTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The instance type and the Amazon Resource Name (ARN) of the SageMaker
+    -- image created on the instance.
+    resourceSpec :: Prelude.Maybe ResourceSpec,
+    -- | The name of the space. If this value is not set, then @UserProfileName@
+    -- must be set.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | The status.
+    status :: Prelude.Maybe AppStatus,
+    -- | The user profile name.
+    userProfileName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppResponse' 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:
+--
+-- 'appArn', 'describeAppResponse_appArn' - The Amazon Resource Name (ARN) of the app.
+--
+-- 'appName', 'describeAppResponse_appName' - The name of the app.
+--
+-- 'appType', 'describeAppResponse_appType' - The type of app.
+--
+-- 'creationTime', 'describeAppResponse_creationTime' - The creation time.
+--
+-- 'domainId', 'describeAppResponse_domainId' - The domain ID.
+--
+-- 'failureReason', 'describeAppResponse_failureReason' - The failure reason.
+--
+-- 'lastHealthCheckTimestamp', 'describeAppResponse_lastHealthCheckTimestamp' - The timestamp of the last health check.
+--
+-- 'lastUserActivityTimestamp', 'describeAppResponse_lastUserActivityTimestamp' - The timestamp of the last user\'s activity. @LastUserActivityTimestamp@
+-- is also updated when SageMaker performs health checks without user
+-- activity. As a result, this value is set to the same value as
+-- @LastHealthCheckTimestamp@.
+--
+-- 'resourceSpec', 'describeAppResponse_resourceSpec' - The instance type and the Amazon Resource Name (ARN) of the SageMaker
+-- image created on the instance.
+--
+-- 'spaceName', 'describeAppResponse_spaceName' - The name of the space. If this value is not set, then @UserProfileName@
+-- must be set.
+--
+-- 'status', 'describeAppResponse_status' - The status.
+--
+-- 'userProfileName', 'describeAppResponse_userProfileName' - The user profile name.
+--
+-- 'httpStatus', 'describeAppResponse_httpStatus' - The response's http status code.
+newDescribeAppResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAppResponse
+newDescribeAppResponse pHttpStatus_ =
+  DescribeAppResponse'
+    { appArn = Prelude.Nothing,
+      appName = Prelude.Nothing,
+      appType = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastHealthCheckTimestamp = Prelude.Nothing,
+      lastUserActivityTimestamp = Prelude.Nothing,
+      resourceSpec = Prelude.Nothing,
+      spaceName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      userProfileName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the app.
+describeAppResponse_appArn :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_appArn = Lens.lens (\DescribeAppResponse' {appArn} -> appArn) (\s@DescribeAppResponse' {} a -> s {appArn = a} :: DescribeAppResponse)
+
+-- | The name of the app.
+describeAppResponse_appName :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_appName = Lens.lens (\DescribeAppResponse' {appName} -> appName) (\s@DescribeAppResponse' {} a -> s {appName = a} :: DescribeAppResponse)
+
+-- | The type of app.
+describeAppResponse_appType :: Lens.Lens' DescribeAppResponse (Prelude.Maybe AppType)
+describeAppResponse_appType = Lens.lens (\DescribeAppResponse' {appType} -> appType) (\s@DescribeAppResponse' {} a -> s {appType = a} :: DescribeAppResponse)
+
+-- | The creation time.
+describeAppResponse_creationTime :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.UTCTime)
+describeAppResponse_creationTime = Lens.lens (\DescribeAppResponse' {creationTime} -> creationTime) (\s@DescribeAppResponse' {} a -> s {creationTime = a} :: DescribeAppResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The domain ID.
+describeAppResponse_domainId :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_domainId = Lens.lens (\DescribeAppResponse' {domainId} -> domainId) (\s@DescribeAppResponse' {} a -> s {domainId = a} :: DescribeAppResponse)
+
+-- | The failure reason.
+describeAppResponse_failureReason :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_failureReason = Lens.lens (\DescribeAppResponse' {failureReason} -> failureReason) (\s@DescribeAppResponse' {} a -> s {failureReason = a} :: DescribeAppResponse)
+
+-- | The timestamp of the last health check.
+describeAppResponse_lastHealthCheckTimestamp :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.UTCTime)
+describeAppResponse_lastHealthCheckTimestamp = Lens.lens (\DescribeAppResponse' {lastHealthCheckTimestamp} -> lastHealthCheckTimestamp) (\s@DescribeAppResponse' {} a -> s {lastHealthCheckTimestamp = a} :: DescribeAppResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp of the last user\'s activity. @LastUserActivityTimestamp@
+-- is also updated when SageMaker performs health checks without user
+-- activity. As a result, this value is set to the same value as
+-- @LastHealthCheckTimestamp@.
+describeAppResponse_lastUserActivityTimestamp :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.UTCTime)
+describeAppResponse_lastUserActivityTimestamp = Lens.lens (\DescribeAppResponse' {lastUserActivityTimestamp} -> lastUserActivityTimestamp) (\s@DescribeAppResponse' {} a -> s {lastUserActivityTimestamp = a} :: DescribeAppResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The instance type and the Amazon Resource Name (ARN) of the SageMaker
+-- image created on the instance.
+describeAppResponse_resourceSpec :: Lens.Lens' DescribeAppResponse (Prelude.Maybe ResourceSpec)
+describeAppResponse_resourceSpec = Lens.lens (\DescribeAppResponse' {resourceSpec} -> resourceSpec) (\s@DescribeAppResponse' {} a -> s {resourceSpec = a} :: DescribeAppResponse)
+
+-- | The name of the space. If this value is not set, then @UserProfileName@
+-- must be set.
+describeAppResponse_spaceName :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_spaceName = Lens.lens (\DescribeAppResponse' {spaceName} -> spaceName) (\s@DescribeAppResponse' {} a -> s {spaceName = a} :: DescribeAppResponse)
+
+-- | The status.
+describeAppResponse_status :: Lens.Lens' DescribeAppResponse (Prelude.Maybe AppStatus)
+describeAppResponse_status = Lens.lens (\DescribeAppResponse' {status} -> status) (\s@DescribeAppResponse' {} a -> s {status = a} :: DescribeAppResponse)
+
+-- | The user profile name.
+describeAppResponse_userProfileName :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_userProfileName = Lens.lens (\DescribeAppResponse' {userProfileName} -> userProfileName) (\s@DescribeAppResponse' {} a -> s {userProfileName = a} :: DescribeAppResponse)
+
+-- | The response's http status code.
+describeAppResponse_httpStatus :: Lens.Lens' DescribeAppResponse Prelude.Int
+describeAppResponse_httpStatus = Lens.lens (\DescribeAppResponse' {httpStatus} -> httpStatus) (\s@DescribeAppResponse' {} a -> s {httpStatus = a} :: DescribeAppResponse)
+
+instance Prelude.NFData DescribeAppResponse where
+  rnf DescribeAppResponse' {..} =
+    Prelude.rnf appArn
+      `Prelude.seq` Prelude.rnf appName
+      `Prelude.seq` Prelude.rnf appType
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastHealthCheckTimestamp
+      `Prelude.seq` Prelude.rnf lastUserActivityTimestamp
+      `Prelude.seq` Prelude.rnf resourceSpec
+      `Prelude.seq` Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf userProfileName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeAppImageConfig.hs b/gen/Amazonka/SageMaker/DescribeAppImageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeAppImageConfig.hs
@@ -0,0 +1,225 @@
+{-# 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.DescribeAppImageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an AppImageConfig.
+module Amazonka.SageMaker.DescribeAppImageConfig
+  ( -- * Creating a Request
+    DescribeAppImageConfig (..),
+    newDescribeAppImageConfig,
+
+    -- * Request Lenses
+    describeAppImageConfig_appImageConfigName,
+
+    -- * Destructuring the Response
+    DescribeAppImageConfigResponse (..),
+    newDescribeAppImageConfigResponse,
+
+    -- * Response Lenses
+    describeAppImageConfigResponse_appImageConfigArn,
+    describeAppImageConfigResponse_appImageConfigName,
+    describeAppImageConfigResponse_creationTime,
+    describeAppImageConfigResponse_kernelGatewayImageConfig,
+    describeAppImageConfigResponse_lastModifiedTime,
+    describeAppImageConfigResponse_httpStatus,
+  )
+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:/ 'newDescribeAppImageConfig' smart constructor.
+data DescribeAppImageConfig = DescribeAppImageConfig'
+  { -- | The name of the AppImageConfig to describe.
+    appImageConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppImageConfig' 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:
+--
+-- 'appImageConfigName', 'describeAppImageConfig_appImageConfigName' - The name of the AppImageConfig to describe.
+newDescribeAppImageConfig ::
+  -- | 'appImageConfigName'
+  Prelude.Text ->
+  DescribeAppImageConfig
+newDescribeAppImageConfig pAppImageConfigName_ =
+  DescribeAppImageConfig'
+    { appImageConfigName =
+        pAppImageConfigName_
+    }
+
+-- | The name of the AppImageConfig to describe.
+describeAppImageConfig_appImageConfigName :: Lens.Lens' DescribeAppImageConfig Prelude.Text
+describeAppImageConfig_appImageConfigName = Lens.lens (\DescribeAppImageConfig' {appImageConfigName} -> appImageConfigName) (\s@DescribeAppImageConfig' {} a -> s {appImageConfigName = a} :: DescribeAppImageConfig)
+
+instance Core.AWSRequest DescribeAppImageConfig where
+  type
+    AWSResponse DescribeAppImageConfig =
+      DescribeAppImageConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAppImageConfigResponse'
+            Prelude.<$> (x Data..?> "AppImageConfigArn")
+            Prelude.<*> (x Data..?> "AppImageConfigName")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "KernelGatewayImageConfig")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAppImageConfig where
+  hashWithSalt _salt DescribeAppImageConfig' {..} =
+    _salt `Prelude.hashWithSalt` appImageConfigName
+
+instance Prelude.NFData DescribeAppImageConfig where
+  rnf DescribeAppImageConfig' {..} =
+    Prelude.rnf appImageConfigName
+
+instance Data.ToHeaders DescribeAppImageConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeAppImageConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeAppImageConfig where
+  toJSON DescribeAppImageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AppImageConfigName" Data..= appImageConfigName)
+          ]
+      )
+
+instance Data.ToPath DescribeAppImageConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeAppImageConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAppImageConfigResponse' smart constructor.
+data DescribeAppImageConfigResponse = DescribeAppImageConfigResponse'
+  { -- | The Amazon Resource Name (ARN) of the AppImageConfig.
+    appImageConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the AppImageConfig.
+    appImageConfigName :: Prelude.Maybe Prelude.Text,
+    -- | When the AppImageConfig was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The configuration of a KernelGateway app.
+    kernelGatewayImageConfig :: Prelude.Maybe KernelGatewayImageConfig,
+    -- | When the AppImageConfig was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppImageConfigResponse' 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:
+--
+-- 'appImageConfigArn', 'describeAppImageConfigResponse_appImageConfigArn' - The Amazon Resource Name (ARN) of the AppImageConfig.
+--
+-- 'appImageConfigName', 'describeAppImageConfigResponse_appImageConfigName' - The name of the AppImageConfig.
+--
+-- 'creationTime', 'describeAppImageConfigResponse_creationTime' - When the AppImageConfig was created.
+--
+-- 'kernelGatewayImageConfig', 'describeAppImageConfigResponse_kernelGatewayImageConfig' - The configuration of a KernelGateway app.
+--
+-- 'lastModifiedTime', 'describeAppImageConfigResponse_lastModifiedTime' - When the AppImageConfig was last modified.
+--
+-- 'httpStatus', 'describeAppImageConfigResponse_httpStatus' - The response's http status code.
+newDescribeAppImageConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAppImageConfigResponse
+newDescribeAppImageConfigResponse pHttpStatus_ =
+  DescribeAppImageConfigResponse'
+    { appImageConfigArn =
+        Prelude.Nothing,
+      appImageConfigName = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      kernelGatewayImageConfig = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the AppImageConfig.
+describeAppImageConfigResponse_appImageConfigArn :: Lens.Lens' DescribeAppImageConfigResponse (Prelude.Maybe Prelude.Text)
+describeAppImageConfigResponse_appImageConfigArn = Lens.lens (\DescribeAppImageConfigResponse' {appImageConfigArn} -> appImageConfigArn) (\s@DescribeAppImageConfigResponse' {} a -> s {appImageConfigArn = a} :: DescribeAppImageConfigResponse)
+
+-- | The name of the AppImageConfig.
+describeAppImageConfigResponse_appImageConfigName :: Lens.Lens' DescribeAppImageConfigResponse (Prelude.Maybe Prelude.Text)
+describeAppImageConfigResponse_appImageConfigName = Lens.lens (\DescribeAppImageConfigResponse' {appImageConfigName} -> appImageConfigName) (\s@DescribeAppImageConfigResponse' {} a -> s {appImageConfigName = a} :: DescribeAppImageConfigResponse)
+
+-- | When the AppImageConfig was created.
+describeAppImageConfigResponse_creationTime :: Lens.Lens' DescribeAppImageConfigResponse (Prelude.Maybe Prelude.UTCTime)
+describeAppImageConfigResponse_creationTime = Lens.lens (\DescribeAppImageConfigResponse' {creationTime} -> creationTime) (\s@DescribeAppImageConfigResponse' {} a -> s {creationTime = a} :: DescribeAppImageConfigResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The configuration of a KernelGateway app.
+describeAppImageConfigResponse_kernelGatewayImageConfig :: Lens.Lens' DescribeAppImageConfigResponse (Prelude.Maybe KernelGatewayImageConfig)
+describeAppImageConfigResponse_kernelGatewayImageConfig = Lens.lens (\DescribeAppImageConfigResponse' {kernelGatewayImageConfig} -> kernelGatewayImageConfig) (\s@DescribeAppImageConfigResponse' {} a -> s {kernelGatewayImageConfig = a} :: DescribeAppImageConfigResponse)
+
+-- | When the AppImageConfig was last modified.
+describeAppImageConfigResponse_lastModifiedTime :: Lens.Lens' DescribeAppImageConfigResponse (Prelude.Maybe Prelude.UTCTime)
+describeAppImageConfigResponse_lastModifiedTime = Lens.lens (\DescribeAppImageConfigResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeAppImageConfigResponse' {} a -> s {lastModifiedTime = a} :: DescribeAppImageConfigResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeAppImageConfigResponse_httpStatus :: Lens.Lens' DescribeAppImageConfigResponse Prelude.Int
+describeAppImageConfigResponse_httpStatus = Lens.lens (\DescribeAppImageConfigResponse' {httpStatus} -> httpStatus) (\s@DescribeAppImageConfigResponse' {} a -> s {httpStatus = a} :: DescribeAppImageConfigResponse)
+
+instance
+  Prelude.NFData
+    DescribeAppImageConfigResponse
+  where
+  rnf DescribeAppImageConfigResponse' {..} =
+    Prelude.rnf appImageConfigArn
+      `Prelude.seq` Prelude.rnf appImageConfigName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf kernelGatewayImageConfig
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeArtifact.hs b/gen/Amazonka/SageMaker/DescribeArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeArtifact.hs
@@ -0,0 +1,283 @@
+{-# 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.DescribeArtifact
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an artifact.
+module Amazonka.SageMaker.DescribeArtifact
+  ( -- * Creating a Request
+    DescribeArtifact (..),
+    newDescribeArtifact,
+
+    -- * Request Lenses
+    describeArtifact_artifactArn,
+
+    -- * Destructuring the Response
+    DescribeArtifactResponse (..),
+    newDescribeArtifactResponse,
+
+    -- * Response Lenses
+    describeArtifactResponse_artifactArn,
+    describeArtifactResponse_artifactName,
+    describeArtifactResponse_artifactType,
+    describeArtifactResponse_createdBy,
+    describeArtifactResponse_creationTime,
+    describeArtifactResponse_lastModifiedBy,
+    describeArtifactResponse_lastModifiedTime,
+    describeArtifactResponse_lineageGroupArn,
+    describeArtifactResponse_metadataProperties,
+    describeArtifactResponse_properties,
+    describeArtifactResponse_source,
+    describeArtifactResponse_httpStatus,
+  )
+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:/ 'newDescribeArtifact' smart constructor.
+data DescribeArtifact = DescribeArtifact'
+  { -- | The Amazon Resource Name (ARN) of the artifact to describe.
+    artifactArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeArtifact' 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:
+--
+-- 'artifactArn', 'describeArtifact_artifactArn' - The Amazon Resource Name (ARN) of the artifact to describe.
+newDescribeArtifact ::
+  -- | 'artifactArn'
+  Prelude.Text ->
+  DescribeArtifact
+newDescribeArtifact pArtifactArn_ =
+  DescribeArtifact' {artifactArn = pArtifactArn_}
+
+-- | The Amazon Resource Name (ARN) of the artifact to describe.
+describeArtifact_artifactArn :: Lens.Lens' DescribeArtifact Prelude.Text
+describeArtifact_artifactArn = Lens.lens (\DescribeArtifact' {artifactArn} -> artifactArn) (\s@DescribeArtifact' {} a -> s {artifactArn = a} :: DescribeArtifact)
+
+instance Core.AWSRequest DescribeArtifact where
+  type
+    AWSResponse DescribeArtifact =
+      DescribeArtifactResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeArtifactResponse'
+            Prelude.<$> (x Data..?> "ArtifactArn")
+            Prelude.<*> (x Data..?> "ArtifactName")
+            Prelude.<*> (x Data..?> "ArtifactType")
+            Prelude.<*> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LineageGroupArn")
+            Prelude.<*> (x Data..?> "MetadataProperties")
+            Prelude.<*> (x Data..?> "Properties" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeArtifact where
+  hashWithSalt _salt DescribeArtifact' {..} =
+    _salt `Prelude.hashWithSalt` artifactArn
+
+instance Prelude.NFData DescribeArtifact where
+  rnf DescribeArtifact' {..} = Prelude.rnf artifactArn
+
+instance Data.ToHeaders DescribeArtifact where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeArtifact" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeArtifact where
+  toJSON DescribeArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ArtifactArn" Data..= artifactArn)]
+      )
+
+instance Data.ToPath DescribeArtifact where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeArtifact where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeArtifactResponse' smart constructor.
+data DescribeArtifactResponse = DescribeArtifactResponse'
+  { -- | The Amazon Resource Name (ARN) of the artifact.
+    artifactArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the artifact.
+    artifactName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the artifact.
+    artifactType :: Prelude.Maybe Prelude.Text,
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the artifact was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the artifact was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | A list of the artifact\'s properties.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The source of the artifact.
+    source :: Prelude.Maybe ArtifactSource,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeArtifactResponse' 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:
+--
+-- 'artifactArn', 'describeArtifactResponse_artifactArn' - The Amazon Resource Name (ARN) of the artifact.
+--
+-- 'artifactName', 'describeArtifactResponse_artifactName' - The name of the artifact.
+--
+-- 'artifactType', 'describeArtifactResponse_artifactType' - The type of the artifact.
+--
+-- 'createdBy', 'describeArtifactResponse_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'describeArtifactResponse_creationTime' - When the artifact was created.
+--
+-- 'lastModifiedBy', 'describeArtifactResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeArtifactResponse_lastModifiedTime' - When the artifact was last modified.
+--
+-- 'lineageGroupArn', 'describeArtifactResponse_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group.
+--
+-- 'metadataProperties', 'describeArtifactResponse_metadataProperties' - Undocumented member.
+--
+-- 'properties', 'describeArtifactResponse_properties' - A list of the artifact\'s properties.
+--
+-- 'source', 'describeArtifactResponse_source' - The source of the artifact.
+--
+-- 'httpStatus', 'describeArtifactResponse_httpStatus' - The response's http status code.
+newDescribeArtifactResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeArtifactResponse
+newDescribeArtifactResponse pHttpStatus_ =
+  DescribeArtifactResponse'
+    { artifactArn =
+        Prelude.Nothing,
+      artifactName = Prelude.Nothing,
+      artifactType = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      source = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the artifact.
+describeArtifactResponse_artifactArn :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe Prelude.Text)
+describeArtifactResponse_artifactArn = Lens.lens (\DescribeArtifactResponse' {artifactArn} -> artifactArn) (\s@DescribeArtifactResponse' {} a -> s {artifactArn = a} :: DescribeArtifactResponse)
+
+-- | The name of the artifact.
+describeArtifactResponse_artifactName :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe Prelude.Text)
+describeArtifactResponse_artifactName = Lens.lens (\DescribeArtifactResponse' {artifactName} -> artifactName) (\s@DescribeArtifactResponse' {} a -> s {artifactName = a} :: DescribeArtifactResponse)
+
+-- | The type of the artifact.
+describeArtifactResponse_artifactType :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe Prelude.Text)
+describeArtifactResponse_artifactType = Lens.lens (\DescribeArtifactResponse' {artifactType} -> artifactType) (\s@DescribeArtifactResponse' {} a -> s {artifactType = a} :: DescribeArtifactResponse)
+
+-- | Undocumented member.
+describeArtifactResponse_createdBy :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe UserContext)
+describeArtifactResponse_createdBy = Lens.lens (\DescribeArtifactResponse' {createdBy} -> createdBy) (\s@DescribeArtifactResponse' {} a -> s {createdBy = a} :: DescribeArtifactResponse)
+
+-- | When the artifact was created.
+describeArtifactResponse_creationTime :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe Prelude.UTCTime)
+describeArtifactResponse_creationTime = Lens.lens (\DescribeArtifactResponse' {creationTime} -> creationTime) (\s@DescribeArtifactResponse' {} a -> s {creationTime = a} :: DescribeArtifactResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+describeArtifactResponse_lastModifiedBy :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe UserContext)
+describeArtifactResponse_lastModifiedBy = Lens.lens (\DescribeArtifactResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeArtifactResponse' {} a -> s {lastModifiedBy = a} :: DescribeArtifactResponse)
+
+-- | When the artifact was last modified.
+describeArtifactResponse_lastModifiedTime :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe Prelude.UTCTime)
+describeArtifactResponse_lastModifiedTime = Lens.lens (\DescribeArtifactResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeArtifactResponse' {} a -> s {lastModifiedTime = a} :: DescribeArtifactResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group.
+describeArtifactResponse_lineageGroupArn :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe Prelude.Text)
+describeArtifactResponse_lineageGroupArn = Lens.lens (\DescribeArtifactResponse' {lineageGroupArn} -> lineageGroupArn) (\s@DescribeArtifactResponse' {} a -> s {lineageGroupArn = a} :: DescribeArtifactResponse)
+
+-- | Undocumented member.
+describeArtifactResponse_metadataProperties :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe MetadataProperties)
+describeArtifactResponse_metadataProperties = Lens.lens (\DescribeArtifactResponse' {metadataProperties} -> metadataProperties) (\s@DescribeArtifactResponse' {} a -> s {metadataProperties = a} :: DescribeArtifactResponse)
+
+-- | A list of the artifact\'s properties.
+describeArtifactResponse_properties :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeArtifactResponse_properties = Lens.lens (\DescribeArtifactResponse' {properties} -> properties) (\s@DescribeArtifactResponse' {} a -> s {properties = a} :: DescribeArtifactResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source of the artifact.
+describeArtifactResponse_source :: Lens.Lens' DescribeArtifactResponse (Prelude.Maybe ArtifactSource)
+describeArtifactResponse_source = Lens.lens (\DescribeArtifactResponse' {source} -> source) (\s@DescribeArtifactResponse' {} a -> s {source = a} :: DescribeArtifactResponse)
+
+-- | The response's http status code.
+describeArtifactResponse_httpStatus :: Lens.Lens' DescribeArtifactResponse Prelude.Int
+describeArtifactResponse_httpStatus = Lens.lens (\DescribeArtifactResponse' {httpStatus} -> httpStatus) (\s@DescribeArtifactResponse' {} a -> s {httpStatus = a} :: DescribeArtifactResponse)
+
+instance Prelude.NFData DescribeArtifactResponse where
+  rnf DescribeArtifactResponse' {..} =
+    Prelude.rnf artifactArn
+      `Prelude.seq` Prelude.rnf artifactName
+      `Prelude.seq` Prelude.rnf artifactType
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeAutoMLJob.hs b/gen/Amazonka/SageMaker/DescribeAutoMLJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeAutoMLJob.hs
@@ -0,0 +1,477 @@
+{-# 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.DescribeAutoMLJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about an Amazon SageMaker AutoML job.
+module Amazonka.SageMaker.DescribeAutoMLJob
+  ( -- * Creating a Request
+    DescribeAutoMLJob (..),
+    newDescribeAutoMLJob,
+
+    -- * Request Lenses
+    describeAutoMLJob_autoMLJobName,
+
+    -- * Destructuring the Response
+    DescribeAutoMLJobResponse (..),
+    newDescribeAutoMLJobResponse,
+
+    -- * Response Lenses
+    describeAutoMLJobResponse_autoMLJobArtifacts,
+    describeAutoMLJobResponse_autoMLJobConfig,
+    describeAutoMLJobResponse_autoMLJobObjective,
+    describeAutoMLJobResponse_bestCandidate,
+    describeAutoMLJobResponse_endTime,
+    describeAutoMLJobResponse_failureReason,
+    describeAutoMLJobResponse_generateCandidateDefinitionsOnly,
+    describeAutoMLJobResponse_modelDeployConfig,
+    describeAutoMLJobResponse_modelDeployResult,
+    describeAutoMLJobResponse_partialFailureReasons,
+    describeAutoMLJobResponse_problemType,
+    describeAutoMLJobResponse_resolvedAttributes,
+    describeAutoMLJobResponse_httpStatus,
+    describeAutoMLJobResponse_autoMLJobName,
+    describeAutoMLJobResponse_autoMLJobArn,
+    describeAutoMLJobResponse_inputDataConfig,
+    describeAutoMLJobResponse_outputDataConfig,
+    describeAutoMLJobResponse_roleArn,
+    describeAutoMLJobResponse_creationTime,
+    describeAutoMLJobResponse_lastModifiedTime,
+    describeAutoMLJobResponse_autoMLJobStatus,
+    describeAutoMLJobResponse_autoMLJobSecondaryStatus,
+  )
+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:/ 'newDescribeAutoMLJob' smart constructor.
+data DescribeAutoMLJob = DescribeAutoMLJob'
+  { -- | Requests information about an AutoML job using its unique name.
+    autoMLJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAutoMLJob' 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:
+--
+-- 'autoMLJobName', 'describeAutoMLJob_autoMLJobName' - Requests information about an AutoML job using its unique name.
+newDescribeAutoMLJob ::
+  -- | 'autoMLJobName'
+  Prelude.Text ->
+  DescribeAutoMLJob
+newDescribeAutoMLJob pAutoMLJobName_ =
+  DescribeAutoMLJob' {autoMLJobName = pAutoMLJobName_}
+
+-- | Requests information about an AutoML job using its unique name.
+describeAutoMLJob_autoMLJobName :: Lens.Lens' DescribeAutoMLJob Prelude.Text
+describeAutoMLJob_autoMLJobName = Lens.lens (\DescribeAutoMLJob' {autoMLJobName} -> autoMLJobName) (\s@DescribeAutoMLJob' {} a -> s {autoMLJobName = a} :: DescribeAutoMLJob)
+
+instance Core.AWSRequest DescribeAutoMLJob where
+  type
+    AWSResponse DescribeAutoMLJob =
+      DescribeAutoMLJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAutoMLJobResponse'
+            Prelude.<$> (x Data..?> "AutoMLJobArtifacts")
+            Prelude.<*> (x Data..?> "AutoMLJobConfig")
+            Prelude.<*> (x Data..?> "AutoMLJobObjective")
+            Prelude.<*> (x Data..?> "BestCandidate")
+            Prelude.<*> (x Data..?> "EndTime")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "GenerateCandidateDefinitionsOnly")
+            Prelude.<*> (x Data..?> "ModelDeployConfig")
+            Prelude.<*> (x Data..?> "ModelDeployResult")
+            Prelude.<*> (x Data..?> "PartialFailureReasons")
+            Prelude.<*> (x Data..?> "ProblemType")
+            Prelude.<*> (x Data..?> "ResolvedAttributes")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "AutoMLJobName")
+            Prelude.<*> (x Data..:> "AutoMLJobArn")
+            Prelude.<*> (x Data..:> "InputDataConfig")
+            Prelude.<*> (x Data..:> "OutputDataConfig")
+            Prelude.<*> (x Data..:> "RoleArn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+            Prelude.<*> (x Data..:> "AutoMLJobStatus")
+            Prelude.<*> (x Data..:> "AutoMLJobSecondaryStatus")
+      )
+
+instance Prelude.Hashable DescribeAutoMLJob where
+  hashWithSalt _salt DescribeAutoMLJob' {..} =
+    _salt `Prelude.hashWithSalt` autoMLJobName
+
+instance Prelude.NFData DescribeAutoMLJob where
+  rnf DescribeAutoMLJob' {..} =
+    Prelude.rnf autoMLJobName
+
+instance Data.ToHeaders DescribeAutoMLJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeAutoMLJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeAutoMLJob where
+  toJSON DescribeAutoMLJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AutoMLJobName" Data..= autoMLJobName)
+          ]
+      )
+
+instance Data.ToPath DescribeAutoMLJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeAutoMLJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAutoMLJobResponse' smart constructor.
+data DescribeAutoMLJobResponse = DescribeAutoMLJobResponse'
+  { -- | Returns information on the job\'s artifacts found in
+    -- @AutoMLJobArtifacts@.
+    autoMLJobArtifacts :: Prelude.Maybe AutoMLJobArtifacts,
+    -- | Returns the configuration for the AutoML job.
+    autoMLJobConfig :: Prelude.Maybe AutoMLJobConfig,
+    -- | Returns the job\'s objective.
+    autoMLJobObjective :: Prelude.Maybe AutoMLJobObjective,
+    -- | The best model candidate selected by SageMaker Autopilot using both the
+    -- best objective metric and lowest
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html InferenceLatency>
+    -- for an experiment.
+    bestCandidate :: Prelude.Maybe AutoMLCandidate,
+    -- | Returns the end time of the AutoML job.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Returns the failure reason for an AutoML job, when applicable.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the output for an AutoML job generates candidate
+    -- definitions only.
+    generateCandidateDefinitionsOnly :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether the model was deployed automatically to an endpoint
+    -- and the name of that endpoint if deployed automatically.
+    modelDeployConfig :: Prelude.Maybe ModelDeployConfig,
+    -- | Provides information about endpoint for the model deployment.
+    modelDeployResult :: Prelude.Maybe ModelDeployResult,
+    -- | Returns a list of reasons for partial failures within an AutoML job.
+    partialFailureReasons :: Prelude.Maybe (Prelude.NonEmpty AutoMLPartialFailureReason),
+    -- | Returns the job\'s problem type.
+    problemType :: Prelude.Maybe ProblemType,
+    -- | This contains @ProblemType@, @AutoMLJobObjective@, and
+    -- @CompletionCriteria@. If you do not provide these values, they are
+    -- auto-inferred. If you do provide them, the values used are the ones you
+    -- provide.
+    resolvedAttributes :: Prelude.Maybe ResolvedAttributes,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Returns the name of the AutoML job.
+    autoMLJobName :: Prelude.Text,
+    -- | Returns the ARN of the AutoML job.
+    autoMLJobArn :: Prelude.Text,
+    -- | Returns the input data configuration for the AutoML job..
+    inputDataConfig :: Prelude.NonEmpty AutoMLChannel,
+    -- | Returns the job\'s output data config.
+    outputDataConfig :: AutoMLOutputDataConfig,
+    -- | The Amazon Resource Name (ARN) of the Identity and Access Management
+    -- (IAM) role that has read permission to the input data location and write
+    -- permission to the output data location in Amazon S3.
+    roleArn :: Prelude.Text,
+    -- | Returns the creation time of the AutoML job.
+    creationTime :: Data.POSIX,
+    -- | Returns the job\'s last modified time.
+    lastModifiedTime :: Data.POSIX,
+    -- | Returns the status of the AutoML job.
+    autoMLJobStatus :: AutoMLJobStatus,
+    -- | Returns the secondary status of the AutoML job.
+    autoMLJobSecondaryStatus :: AutoMLJobSecondaryStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAutoMLJobResponse' 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:
+--
+-- 'autoMLJobArtifacts', 'describeAutoMLJobResponse_autoMLJobArtifacts' - Returns information on the job\'s artifacts found in
+-- @AutoMLJobArtifacts@.
+--
+-- 'autoMLJobConfig', 'describeAutoMLJobResponse_autoMLJobConfig' - Returns the configuration for the AutoML job.
+--
+-- 'autoMLJobObjective', 'describeAutoMLJobResponse_autoMLJobObjective' - Returns the job\'s objective.
+--
+-- 'bestCandidate', 'describeAutoMLJobResponse_bestCandidate' - The best model candidate selected by SageMaker Autopilot using both the
+-- best objective metric and lowest
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html InferenceLatency>
+-- for an experiment.
+--
+-- 'endTime', 'describeAutoMLJobResponse_endTime' - Returns the end time of the AutoML job.
+--
+-- 'failureReason', 'describeAutoMLJobResponse_failureReason' - Returns the failure reason for an AutoML job, when applicable.
+--
+-- 'generateCandidateDefinitionsOnly', 'describeAutoMLJobResponse_generateCandidateDefinitionsOnly' - Indicates whether the output for an AutoML job generates candidate
+-- definitions only.
+--
+-- 'modelDeployConfig', 'describeAutoMLJobResponse_modelDeployConfig' - Indicates whether the model was deployed automatically to an endpoint
+-- and the name of that endpoint if deployed automatically.
+--
+-- 'modelDeployResult', 'describeAutoMLJobResponse_modelDeployResult' - Provides information about endpoint for the model deployment.
+--
+-- 'partialFailureReasons', 'describeAutoMLJobResponse_partialFailureReasons' - Returns a list of reasons for partial failures within an AutoML job.
+--
+-- 'problemType', 'describeAutoMLJobResponse_problemType' - Returns the job\'s problem type.
+--
+-- 'resolvedAttributes', 'describeAutoMLJobResponse_resolvedAttributes' - This contains @ProblemType@, @AutoMLJobObjective@, and
+-- @CompletionCriteria@. If you do not provide these values, they are
+-- auto-inferred. If you do provide them, the values used are the ones you
+-- provide.
+--
+-- 'httpStatus', 'describeAutoMLJobResponse_httpStatus' - The response's http status code.
+--
+-- 'autoMLJobName', 'describeAutoMLJobResponse_autoMLJobName' - Returns the name of the AutoML job.
+--
+-- 'autoMLJobArn', 'describeAutoMLJobResponse_autoMLJobArn' - Returns the ARN of the AutoML job.
+--
+-- 'inputDataConfig', 'describeAutoMLJobResponse_inputDataConfig' - Returns the input data configuration for the AutoML job..
+--
+-- 'outputDataConfig', 'describeAutoMLJobResponse_outputDataConfig' - Returns the job\'s output data config.
+--
+-- 'roleArn', 'describeAutoMLJobResponse_roleArn' - The Amazon Resource Name (ARN) of the Identity and Access Management
+-- (IAM) role that has read permission to the input data location and write
+-- permission to the output data location in Amazon S3.
+--
+-- 'creationTime', 'describeAutoMLJobResponse_creationTime' - Returns the creation time of the AutoML job.
+--
+-- 'lastModifiedTime', 'describeAutoMLJobResponse_lastModifiedTime' - Returns the job\'s last modified time.
+--
+-- 'autoMLJobStatus', 'describeAutoMLJobResponse_autoMLJobStatus' - Returns the status of the AutoML job.
+--
+-- 'autoMLJobSecondaryStatus', 'describeAutoMLJobResponse_autoMLJobSecondaryStatus' - Returns the secondary status of the AutoML job.
+newDescribeAutoMLJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'autoMLJobName'
+  Prelude.Text ->
+  -- | 'autoMLJobArn'
+  Prelude.Text ->
+  -- | 'inputDataConfig'
+  Prelude.NonEmpty AutoMLChannel ->
+  -- | 'outputDataConfig'
+  AutoMLOutputDataConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'autoMLJobStatus'
+  AutoMLJobStatus ->
+  -- | 'autoMLJobSecondaryStatus'
+  AutoMLJobSecondaryStatus ->
+  DescribeAutoMLJobResponse
+newDescribeAutoMLJobResponse
+  pHttpStatus_
+  pAutoMLJobName_
+  pAutoMLJobArn_
+  pInputDataConfig_
+  pOutputDataConfig_
+  pRoleArn_
+  pCreationTime_
+  pLastModifiedTime_
+  pAutoMLJobStatus_
+  pAutoMLJobSecondaryStatus_ =
+    DescribeAutoMLJobResponse'
+      { autoMLJobArtifacts =
+          Prelude.Nothing,
+        autoMLJobConfig = Prelude.Nothing,
+        autoMLJobObjective = Prelude.Nothing,
+        bestCandidate = Prelude.Nothing,
+        endTime = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        generateCandidateDefinitionsOnly =
+          Prelude.Nothing,
+        modelDeployConfig = Prelude.Nothing,
+        modelDeployResult = Prelude.Nothing,
+        partialFailureReasons = Prelude.Nothing,
+        problemType = Prelude.Nothing,
+        resolvedAttributes = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        autoMLJobName = pAutoMLJobName_,
+        autoMLJobArn = pAutoMLJobArn_,
+        inputDataConfig =
+          Lens.coerced Lens.# pInputDataConfig_,
+        outputDataConfig = pOutputDataConfig_,
+        roleArn = pRoleArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        autoMLJobStatus = pAutoMLJobStatus_,
+        autoMLJobSecondaryStatus =
+          pAutoMLJobSecondaryStatus_
+      }
+
+-- | Returns information on the job\'s artifacts found in
+-- @AutoMLJobArtifacts@.
+describeAutoMLJobResponse_autoMLJobArtifacts :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe AutoMLJobArtifacts)
+describeAutoMLJobResponse_autoMLJobArtifacts = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobArtifacts} -> autoMLJobArtifacts) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobArtifacts = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the configuration for the AutoML job.
+describeAutoMLJobResponse_autoMLJobConfig :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe AutoMLJobConfig)
+describeAutoMLJobResponse_autoMLJobConfig = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobConfig} -> autoMLJobConfig) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobConfig = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the job\'s objective.
+describeAutoMLJobResponse_autoMLJobObjective :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe AutoMLJobObjective)
+describeAutoMLJobResponse_autoMLJobObjective = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobObjective} -> autoMLJobObjective) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobObjective = a} :: DescribeAutoMLJobResponse)
+
+-- | The best model candidate selected by SageMaker Autopilot using both the
+-- best objective metric and lowest
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html InferenceLatency>
+-- for an experiment.
+describeAutoMLJobResponse_bestCandidate :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe AutoMLCandidate)
+describeAutoMLJobResponse_bestCandidate = Lens.lens (\DescribeAutoMLJobResponse' {bestCandidate} -> bestCandidate) (\s@DescribeAutoMLJobResponse' {} a -> s {bestCandidate = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the end time of the AutoML job.
+describeAutoMLJobResponse_endTime :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeAutoMLJobResponse_endTime = Lens.lens (\DescribeAutoMLJobResponse' {endTime} -> endTime) (\s@DescribeAutoMLJobResponse' {} a -> s {endTime = a} :: DescribeAutoMLJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Returns the failure reason for an AutoML job, when applicable.
+describeAutoMLJobResponse_failureReason :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe Prelude.Text)
+describeAutoMLJobResponse_failureReason = Lens.lens (\DescribeAutoMLJobResponse' {failureReason} -> failureReason) (\s@DescribeAutoMLJobResponse' {} a -> s {failureReason = a} :: DescribeAutoMLJobResponse)
+
+-- | Indicates whether the output for an AutoML job generates candidate
+-- definitions only.
+describeAutoMLJobResponse_generateCandidateDefinitionsOnly :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe Prelude.Bool)
+describeAutoMLJobResponse_generateCandidateDefinitionsOnly = Lens.lens (\DescribeAutoMLJobResponse' {generateCandidateDefinitionsOnly} -> generateCandidateDefinitionsOnly) (\s@DescribeAutoMLJobResponse' {} a -> s {generateCandidateDefinitionsOnly = a} :: DescribeAutoMLJobResponse)
+
+-- | Indicates whether the model was deployed automatically to an endpoint
+-- and the name of that endpoint if deployed automatically.
+describeAutoMLJobResponse_modelDeployConfig :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe ModelDeployConfig)
+describeAutoMLJobResponse_modelDeployConfig = Lens.lens (\DescribeAutoMLJobResponse' {modelDeployConfig} -> modelDeployConfig) (\s@DescribeAutoMLJobResponse' {} a -> s {modelDeployConfig = a} :: DescribeAutoMLJobResponse)
+
+-- | Provides information about endpoint for the model deployment.
+describeAutoMLJobResponse_modelDeployResult :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe ModelDeployResult)
+describeAutoMLJobResponse_modelDeployResult = Lens.lens (\DescribeAutoMLJobResponse' {modelDeployResult} -> modelDeployResult) (\s@DescribeAutoMLJobResponse' {} a -> s {modelDeployResult = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns a list of reasons for partial failures within an AutoML job.
+describeAutoMLJobResponse_partialFailureReasons :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe (Prelude.NonEmpty AutoMLPartialFailureReason))
+describeAutoMLJobResponse_partialFailureReasons = Lens.lens (\DescribeAutoMLJobResponse' {partialFailureReasons} -> partialFailureReasons) (\s@DescribeAutoMLJobResponse' {} a -> s {partialFailureReasons = a} :: DescribeAutoMLJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Returns the job\'s problem type.
+describeAutoMLJobResponse_problemType :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe ProblemType)
+describeAutoMLJobResponse_problemType = Lens.lens (\DescribeAutoMLJobResponse' {problemType} -> problemType) (\s@DescribeAutoMLJobResponse' {} a -> s {problemType = a} :: DescribeAutoMLJobResponse)
+
+-- | This contains @ProblemType@, @AutoMLJobObjective@, and
+-- @CompletionCriteria@. If you do not provide these values, they are
+-- auto-inferred. If you do provide them, the values used are the ones you
+-- provide.
+describeAutoMLJobResponse_resolvedAttributes :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.Maybe ResolvedAttributes)
+describeAutoMLJobResponse_resolvedAttributes = Lens.lens (\DescribeAutoMLJobResponse' {resolvedAttributes} -> resolvedAttributes) (\s@DescribeAutoMLJobResponse' {} a -> s {resolvedAttributes = a} :: DescribeAutoMLJobResponse)
+
+-- | The response's http status code.
+describeAutoMLJobResponse_httpStatus :: Lens.Lens' DescribeAutoMLJobResponse Prelude.Int
+describeAutoMLJobResponse_httpStatus = Lens.lens (\DescribeAutoMLJobResponse' {httpStatus} -> httpStatus) (\s@DescribeAutoMLJobResponse' {} a -> s {httpStatus = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the name of the AutoML job.
+describeAutoMLJobResponse_autoMLJobName :: Lens.Lens' DescribeAutoMLJobResponse Prelude.Text
+describeAutoMLJobResponse_autoMLJobName = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobName} -> autoMLJobName) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobName = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the ARN of the AutoML job.
+describeAutoMLJobResponse_autoMLJobArn :: Lens.Lens' DescribeAutoMLJobResponse Prelude.Text
+describeAutoMLJobResponse_autoMLJobArn = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobArn} -> autoMLJobArn) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobArn = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the input data configuration for the AutoML job..
+describeAutoMLJobResponse_inputDataConfig :: Lens.Lens' DescribeAutoMLJobResponse (Prelude.NonEmpty AutoMLChannel)
+describeAutoMLJobResponse_inputDataConfig = Lens.lens (\DescribeAutoMLJobResponse' {inputDataConfig} -> inputDataConfig) (\s@DescribeAutoMLJobResponse' {} a -> s {inputDataConfig = a} :: DescribeAutoMLJobResponse) Prelude.. Lens.coerced
+
+-- | Returns the job\'s output data config.
+describeAutoMLJobResponse_outputDataConfig :: Lens.Lens' DescribeAutoMLJobResponse AutoMLOutputDataConfig
+describeAutoMLJobResponse_outputDataConfig = Lens.lens (\DescribeAutoMLJobResponse' {outputDataConfig} -> outputDataConfig) (\s@DescribeAutoMLJobResponse' {} a -> s {outputDataConfig = a} :: DescribeAutoMLJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Identity and Access Management
+-- (IAM) role that has read permission to the input data location and write
+-- permission to the output data location in Amazon S3.
+describeAutoMLJobResponse_roleArn :: Lens.Lens' DescribeAutoMLJobResponse Prelude.Text
+describeAutoMLJobResponse_roleArn = Lens.lens (\DescribeAutoMLJobResponse' {roleArn} -> roleArn) (\s@DescribeAutoMLJobResponse' {} a -> s {roleArn = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the creation time of the AutoML job.
+describeAutoMLJobResponse_creationTime :: Lens.Lens' DescribeAutoMLJobResponse Prelude.UTCTime
+describeAutoMLJobResponse_creationTime = Lens.lens (\DescribeAutoMLJobResponse' {creationTime} -> creationTime) (\s@DescribeAutoMLJobResponse' {} a -> s {creationTime = a} :: DescribeAutoMLJobResponse) Prelude.. Data._Time
+
+-- | Returns the job\'s last modified time.
+describeAutoMLJobResponse_lastModifiedTime :: Lens.Lens' DescribeAutoMLJobResponse Prelude.UTCTime
+describeAutoMLJobResponse_lastModifiedTime = Lens.lens (\DescribeAutoMLJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeAutoMLJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeAutoMLJobResponse) Prelude.. Data._Time
+
+-- | Returns the status of the AutoML job.
+describeAutoMLJobResponse_autoMLJobStatus :: Lens.Lens' DescribeAutoMLJobResponse AutoMLJobStatus
+describeAutoMLJobResponse_autoMLJobStatus = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobStatus} -> autoMLJobStatus) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobStatus = a} :: DescribeAutoMLJobResponse)
+
+-- | Returns the secondary status of the AutoML job.
+describeAutoMLJobResponse_autoMLJobSecondaryStatus :: Lens.Lens' DescribeAutoMLJobResponse AutoMLJobSecondaryStatus
+describeAutoMLJobResponse_autoMLJobSecondaryStatus = Lens.lens (\DescribeAutoMLJobResponse' {autoMLJobSecondaryStatus} -> autoMLJobSecondaryStatus) (\s@DescribeAutoMLJobResponse' {} a -> s {autoMLJobSecondaryStatus = a} :: DescribeAutoMLJobResponse)
+
+instance Prelude.NFData DescribeAutoMLJobResponse where
+  rnf DescribeAutoMLJobResponse' {..} =
+    Prelude.rnf autoMLJobArtifacts
+      `Prelude.seq` Prelude.rnf autoMLJobConfig
+      `Prelude.seq` Prelude.rnf autoMLJobObjective
+      `Prelude.seq` Prelude.rnf bestCandidate
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf generateCandidateDefinitionsOnly
+      `Prelude.seq` Prelude.rnf modelDeployConfig
+      `Prelude.seq` Prelude.rnf modelDeployResult
+      `Prelude.seq` Prelude.rnf partialFailureReasons
+      `Prelude.seq` Prelude.rnf problemType
+      `Prelude.seq` Prelude.rnf resolvedAttributes
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf autoMLJobName
+      `Prelude.seq` Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf autoMLJobStatus
+      `Prelude.seq` Prelude.rnf
+        autoMLJobSecondaryStatus
diff --git a/gen/Amazonka/SageMaker/DescribeCodeRepository.hs b/gen/Amazonka/SageMaker/DescribeCodeRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeCodeRepository.hs
@@ -0,0 +1,249 @@
+{-# 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.DescribeCodeRepository
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets details about the specified Git repository.
+module Amazonka.SageMaker.DescribeCodeRepository
+  ( -- * Creating a Request
+    DescribeCodeRepository (..),
+    newDescribeCodeRepository,
+
+    -- * Request Lenses
+    describeCodeRepository_codeRepositoryName,
+
+    -- * Destructuring the Response
+    DescribeCodeRepositoryResponse (..),
+    newDescribeCodeRepositoryResponse,
+
+    -- * Response Lenses
+    describeCodeRepositoryResponse_gitConfig,
+    describeCodeRepositoryResponse_httpStatus,
+    describeCodeRepositoryResponse_codeRepositoryName,
+    describeCodeRepositoryResponse_codeRepositoryArn,
+    describeCodeRepositoryResponse_creationTime,
+    describeCodeRepositoryResponse_lastModifiedTime,
+  )
+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:/ 'newDescribeCodeRepository' smart constructor.
+data DescribeCodeRepository = DescribeCodeRepository'
+  { -- | The name of the Git repository to describe.
+    codeRepositoryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCodeRepository' 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:
+--
+-- 'codeRepositoryName', 'describeCodeRepository_codeRepositoryName' - The name of the Git repository to describe.
+newDescribeCodeRepository ::
+  -- | 'codeRepositoryName'
+  Prelude.Text ->
+  DescribeCodeRepository
+newDescribeCodeRepository pCodeRepositoryName_ =
+  DescribeCodeRepository'
+    { codeRepositoryName =
+        pCodeRepositoryName_
+    }
+
+-- | The name of the Git repository to describe.
+describeCodeRepository_codeRepositoryName :: Lens.Lens' DescribeCodeRepository Prelude.Text
+describeCodeRepository_codeRepositoryName = Lens.lens (\DescribeCodeRepository' {codeRepositoryName} -> codeRepositoryName) (\s@DescribeCodeRepository' {} a -> s {codeRepositoryName = a} :: DescribeCodeRepository)
+
+instance Core.AWSRequest DescribeCodeRepository where
+  type
+    AWSResponse DescribeCodeRepository =
+      DescribeCodeRepositoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeCodeRepositoryResponse'
+            Prelude.<$> (x Data..?> "GitConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "CodeRepositoryName")
+            Prelude.<*> (x Data..:> "CodeRepositoryArn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+      )
+
+instance Prelude.Hashable DescribeCodeRepository where
+  hashWithSalt _salt DescribeCodeRepository' {..} =
+    _salt `Prelude.hashWithSalt` codeRepositoryName
+
+instance Prelude.NFData DescribeCodeRepository where
+  rnf DescribeCodeRepository' {..} =
+    Prelude.rnf codeRepositoryName
+
+instance Data.ToHeaders DescribeCodeRepository where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeCodeRepository" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeCodeRepository where
+  toJSON DescribeCodeRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CodeRepositoryName" Data..= codeRepositoryName)
+          ]
+      )
+
+instance Data.ToPath DescribeCodeRepository where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeCodeRepository where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeCodeRepositoryResponse' smart constructor.
+data DescribeCodeRepositoryResponse = DescribeCodeRepositoryResponse'
+  { -- | Configuration details about the repository, including the URL where the
+    -- repository is located, the default branch, and the Amazon Resource Name
+    -- (ARN) of the Amazon Web Services Secrets Manager secret that contains
+    -- the credentials used to access the repository.
+    gitConfig :: Prelude.Maybe GitConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the Git repository.
+    codeRepositoryName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Git repository.
+    codeRepositoryArn :: Prelude.Text,
+    -- | The date and time that the repository was created.
+    creationTime :: Data.POSIX,
+    -- | The date and time that the repository was last changed.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCodeRepositoryResponse' 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:
+--
+-- 'gitConfig', 'describeCodeRepositoryResponse_gitConfig' - Configuration details about the repository, including the URL where the
+-- repository is located, the default branch, and the Amazon Resource Name
+-- (ARN) of the Amazon Web Services Secrets Manager secret that contains
+-- the credentials used to access the repository.
+--
+-- 'httpStatus', 'describeCodeRepositoryResponse_httpStatus' - The response's http status code.
+--
+-- 'codeRepositoryName', 'describeCodeRepositoryResponse_codeRepositoryName' - The name of the Git repository.
+--
+-- 'codeRepositoryArn', 'describeCodeRepositoryResponse_codeRepositoryArn' - The Amazon Resource Name (ARN) of the Git repository.
+--
+-- 'creationTime', 'describeCodeRepositoryResponse_creationTime' - The date and time that the repository was created.
+--
+-- 'lastModifiedTime', 'describeCodeRepositoryResponse_lastModifiedTime' - The date and time that the repository was last changed.
+newDescribeCodeRepositoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'codeRepositoryName'
+  Prelude.Text ->
+  -- | 'codeRepositoryArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  DescribeCodeRepositoryResponse
+newDescribeCodeRepositoryResponse
+  pHttpStatus_
+  pCodeRepositoryName_
+  pCodeRepositoryArn_
+  pCreationTime_
+  pLastModifiedTime_ =
+    DescribeCodeRepositoryResponse'
+      { gitConfig =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        codeRepositoryName = pCodeRepositoryName_,
+        codeRepositoryArn = pCodeRepositoryArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | Configuration details about the repository, including the URL where the
+-- repository is located, the default branch, and the Amazon Resource Name
+-- (ARN) of the Amazon Web Services Secrets Manager secret that contains
+-- the credentials used to access the repository.
+describeCodeRepositoryResponse_gitConfig :: Lens.Lens' DescribeCodeRepositoryResponse (Prelude.Maybe GitConfig)
+describeCodeRepositoryResponse_gitConfig = Lens.lens (\DescribeCodeRepositoryResponse' {gitConfig} -> gitConfig) (\s@DescribeCodeRepositoryResponse' {} a -> s {gitConfig = a} :: DescribeCodeRepositoryResponse)
+
+-- | The response's http status code.
+describeCodeRepositoryResponse_httpStatus :: Lens.Lens' DescribeCodeRepositoryResponse Prelude.Int
+describeCodeRepositoryResponse_httpStatus = Lens.lens (\DescribeCodeRepositoryResponse' {httpStatus} -> httpStatus) (\s@DescribeCodeRepositoryResponse' {} a -> s {httpStatus = a} :: DescribeCodeRepositoryResponse)
+
+-- | The name of the Git repository.
+describeCodeRepositoryResponse_codeRepositoryName :: Lens.Lens' DescribeCodeRepositoryResponse Prelude.Text
+describeCodeRepositoryResponse_codeRepositoryName = Lens.lens (\DescribeCodeRepositoryResponse' {codeRepositoryName} -> codeRepositoryName) (\s@DescribeCodeRepositoryResponse' {} a -> s {codeRepositoryName = a} :: DescribeCodeRepositoryResponse)
+
+-- | The Amazon Resource Name (ARN) of the Git repository.
+describeCodeRepositoryResponse_codeRepositoryArn :: Lens.Lens' DescribeCodeRepositoryResponse Prelude.Text
+describeCodeRepositoryResponse_codeRepositoryArn = Lens.lens (\DescribeCodeRepositoryResponse' {codeRepositoryArn} -> codeRepositoryArn) (\s@DescribeCodeRepositoryResponse' {} a -> s {codeRepositoryArn = a} :: DescribeCodeRepositoryResponse)
+
+-- | The date and time that the repository was created.
+describeCodeRepositoryResponse_creationTime :: Lens.Lens' DescribeCodeRepositoryResponse Prelude.UTCTime
+describeCodeRepositoryResponse_creationTime = Lens.lens (\DescribeCodeRepositoryResponse' {creationTime} -> creationTime) (\s@DescribeCodeRepositoryResponse' {} a -> s {creationTime = a} :: DescribeCodeRepositoryResponse) Prelude.. Data._Time
+
+-- | The date and time that the repository was last changed.
+describeCodeRepositoryResponse_lastModifiedTime :: Lens.Lens' DescribeCodeRepositoryResponse Prelude.UTCTime
+describeCodeRepositoryResponse_lastModifiedTime = Lens.lens (\DescribeCodeRepositoryResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeCodeRepositoryResponse' {} a -> s {lastModifiedTime = a} :: DescribeCodeRepositoryResponse) Prelude.. Data._Time
+
+instance
+  Prelude.NFData
+    DescribeCodeRepositoryResponse
+  where
+  rnf DescribeCodeRepositoryResponse' {..} =
+    Prelude.rnf gitConfig
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf codeRepositoryName
+      `Prelude.seq` Prelude.rnf codeRepositoryArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/DescribeCompilationJob.hs b/gen/Amazonka/SageMaker/DescribeCompilationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeCompilationJob.hs
@@ -0,0 +1,479 @@
+{-# 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.DescribeCompilationJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a model compilation job.
+--
+-- To create a model compilation job, use CreateCompilationJob. To get
+-- information about multiple model compilation jobs, use
+-- ListCompilationJobs.
+module Amazonka.SageMaker.DescribeCompilationJob
+  ( -- * Creating a Request
+    DescribeCompilationJob (..),
+    newDescribeCompilationJob,
+
+    -- * Request Lenses
+    describeCompilationJob_compilationJobName,
+
+    -- * Destructuring the Response
+    DescribeCompilationJobResponse (..),
+    newDescribeCompilationJobResponse,
+
+    -- * Response Lenses
+    describeCompilationJobResponse_compilationEndTime,
+    describeCompilationJobResponse_compilationStartTime,
+    describeCompilationJobResponse_inferenceImage,
+    describeCompilationJobResponse_modelDigests,
+    describeCompilationJobResponse_modelPackageVersionArn,
+    describeCompilationJobResponse_vpcConfig,
+    describeCompilationJobResponse_httpStatus,
+    describeCompilationJobResponse_compilationJobName,
+    describeCompilationJobResponse_compilationJobArn,
+    describeCompilationJobResponse_compilationJobStatus,
+    describeCompilationJobResponse_stoppingCondition,
+    describeCompilationJobResponse_creationTime,
+    describeCompilationJobResponse_lastModifiedTime,
+    describeCompilationJobResponse_failureReason,
+    describeCompilationJobResponse_modelArtifacts,
+    describeCompilationJobResponse_roleArn,
+    describeCompilationJobResponse_inputConfig,
+    describeCompilationJobResponse_outputConfig,
+  )
+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:/ 'newDescribeCompilationJob' smart constructor.
+data DescribeCompilationJob = DescribeCompilationJob'
+  { -- | The name of the model compilation job that you want information about.
+    compilationJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCompilationJob' 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:
+--
+-- 'compilationJobName', 'describeCompilationJob_compilationJobName' - The name of the model compilation job that you want information about.
+newDescribeCompilationJob ::
+  -- | 'compilationJobName'
+  Prelude.Text ->
+  DescribeCompilationJob
+newDescribeCompilationJob pCompilationJobName_ =
+  DescribeCompilationJob'
+    { compilationJobName =
+        pCompilationJobName_
+    }
+
+-- | The name of the model compilation job that you want information about.
+describeCompilationJob_compilationJobName :: Lens.Lens' DescribeCompilationJob Prelude.Text
+describeCompilationJob_compilationJobName = Lens.lens (\DescribeCompilationJob' {compilationJobName} -> compilationJobName) (\s@DescribeCompilationJob' {} a -> s {compilationJobName = a} :: DescribeCompilationJob)
+
+instance Core.AWSRequest DescribeCompilationJob where
+  type
+    AWSResponse DescribeCompilationJob =
+      DescribeCompilationJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeCompilationJobResponse'
+            Prelude.<$> (x Data..?> "CompilationEndTime")
+            Prelude.<*> (x Data..?> "CompilationStartTime")
+            Prelude.<*> (x Data..?> "InferenceImage")
+            Prelude.<*> (x Data..?> "ModelDigests")
+            Prelude.<*> (x Data..?> "ModelPackageVersionArn")
+            Prelude.<*> (x Data..?> "VpcConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "CompilationJobName")
+            Prelude.<*> (x Data..:> "CompilationJobArn")
+            Prelude.<*> (x Data..:> "CompilationJobStatus")
+            Prelude.<*> (x Data..:> "StoppingCondition")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+            Prelude.<*> (x Data..:> "FailureReason")
+            Prelude.<*> (x Data..:> "ModelArtifacts")
+            Prelude.<*> (x Data..:> "RoleArn")
+            Prelude.<*> (x Data..:> "InputConfig")
+            Prelude.<*> (x Data..:> "OutputConfig")
+      )
+
+instance Prelude.Hashable DescribeCompilationJob where
+  hashWithSalt _salt DescribeCompilationJob' {..} =
+    _salt `Prelude.hashWithSalt` compilationJobName
+
+instance Prelude.NFData DescribeCompilationJob where
+  rnf DescribeCompilationJob' {..} =
+    Prelude.rnf compilationJobName
+
+instance Data.ToHeaders DescribeCompilationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeCompilationJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeCompilationJob where
+  toJSON DescribeCompilationJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CompilationJobName" Data..= compilationJobName)
+          ]
+      )
+
+instance Data.ToPath DescribeCompilationJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeCompilationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeCompilationJobResponse' smart constructor.
+data DescribeCompilationJobResponse = DescribeCompilationJobResponse'
+  { -- | The time when the model compilation job on a compilation job instance
+    -- ended. For a successful or stopped job, this is when the job\'s model
+    -- artifacts have finished uploading. For a failed job, this is when Amazon
+    -- SageMaker detected that the job failed.
+    compilationEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The time when the model compilation job started the @CompilationJob@
+    -- instances.
+    --
+    -- You are billed for the time between this timestamp and the timestamp in
+    -- the DescribeCompilationJobResponse$CompilationEndTime field. In Amazon
+    -- CloudWatch Logs, the start time might be later than this time. That\'s
+    -- because it takes time to download the compilation job, which depends on
+    -- the size of the compilation job container.
+    compilationStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The inference image to use when compiling a model. Specify an image only
+    -- if the target device is a cloud instance.
+    inferenceImage :: Prelude.Maybe Prelude.Text,
+    -- | Provides a BLAKE2 hash value that identifies the compiled model
+    -- artifacts in Amazon S3.
+    modelDigests :: Prelude.Maybe ModelDigests,
+    -- | The Amazon Resource Name (ARN) of the versioned model package that was
+    -- provided to SageMaker Neo when you initiated a compilation job.
+    modelPackageVersionArn :: Prelude.Maybe Prelude.Text,
+    -- | A VpcConfig object that specifies the VPC that you want your compilation
+    -- job to connect to. Control access to your models by configuring the VPC.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Protect Compilation Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe NeoVpcConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the model compilation job.
+    compilationJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model compilation job.
+    compilationJobArn :: Prelude.Text,
+    -- | The status of the model compilation job.
+    compilationJobStatus :: CompilationJobStatus,
+    -- | Specifies a limit to how long a model compilation job can run. When the
+    -- job reaches the time limit, Amazon SageMaker ends the compilation job.
+    -- Use this API to cap model training costs.
+    stoppingCondition :: StoppingCondition,
+    -- | The time that the model compilation job was created.
+    creationTime :: Data.POSIX,
+    -- | The time that the status of the model compilation job was last modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | If a model compilation job failed, the reason it failed.
+    failureReason :: Prelude.Text,
+    -- | Information about the location in Amazon S3 that has been configured for
+    -- storing the model artifacts used in the compilation job.
+    modelArtifacts :: ModelArtifacts,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker
+    -- assumes to perform the model compilation job.
+    roleArn :: Prelude.Text,
+    -- | Information about the location in Amazon S3 of the input model
+    -- artifacts, the name and shape of the expected data inputs, and the
+    -- framework in which the model was trained.
+    inputConfig :: InputConfig,
+    -- | Information about the output location for the compiled model and the
+    -- target device that the model runs on.
+    outputConfig :: OutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCompilationJobResponse' 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:
+--
+-- 'compilationEndTime', 'describeCompilationJobResponse_compilationEndTime' - The time when the model compilation job on a compilation job instance
+-- ended. For a successful or stopped job, this is when the job\'s model
+-- artifacts have finished uploading. For a failed job, this is when Amazon
+-- SageMaker detected that the job failed.
+--
+-- 'compilationStartTime', 'describeCompilationJobResponse_compilationStartTime' - The time when the model compilation job started the @CompilationJob@
+-- instances.
+--
+-- You are billed for the time between this timestamp and the timestamp in
+-- the DescribeCompilationJobResponse$CompilationEndTime field. In Amazon
+-- CloudWatch Logs, the start time might be later than this time. That\'s
+-- because it takes time to download the compilation job, which depends on
+-- the size of the compilation job container.
+--
+-- 'inferenceImage', 'describeCompilationJobResponse_inferenceImage' - The inference image to use when compiling a model. Specify an image only
+-- if the target device is a cloud instance.
+--
+-- 'modelDigests', 'describeCompilationJobResponse_modelDigests' - Provides a BLAKE2 hash value that identifies the compiled model
+-- artifacts in Amazon S3.
+--
+-- 'modelPackageVersionArn', 'describeCompilationJobResponse_modelPackageVersionArn' - The Amazon Resource Name (ARN) of the versioned model package that was
+-- provided to SageMaker Neo when you initiated a compilation job.
+--
+-- 'vpcConfig', 'describeCompilationJobResponse_vpcConfig' - A VpcConfig object that specifies the VPC that you want your compilation
+-- job to connect to. Control access to your models by configuring the VPC.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Protect Compilation Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- 'httpStatus', 'describeCompilationJobResponse_httpStatus' - The response's http status code.
+--
+-- 'compilationJobName', 'describeCompilationJobResponse_compilationJobName' - The name of the model compilation job.
+--
+-- 'compilationJobArn', 'describeCompilationJobResponse_compilationJobArn' - The Amazon Resource Name (ARN) of the model compilation job.
+--
+-- 'compilationJobStatus', 'describeCompilationJobResponse_compilationJobStatus' - The status of the model compilation job.
+--
+-- 'stoppingCondition', 'describeCompilationJobResponse_stoppingCondition' - Specifies a limit to how long a model compilation job can run. When the
+-- job reaches the time limit, Amazon SageMaker ends the compilation job.
+-- Use this API to cap model training costs.
+--
+-- 'creationTime', 'describeCompilationJobResponse_creationTime' - The time that the model compilation job was created.
+--
+-- 'lastModifiedTime', 'describeCompilationJobResponse_lastModifiedTime' - The time that the status of the model compilation job was last modified.
+--
+-- 'failureReason', 'describeCompilationJobResponse_failureReason' - If a model compilation job failed, the reason it failed.
+--
+-- 'modelArtifacts', 'describeCompilationJobResponse_modelArtifacts' - Information about the location in Amazon S3 that has been configured for
+-- storing the model artifacts used in the compilation job.
+--
+-- 'roleArn', 'describeCompilationJobResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker
+-- assumes to perform the model compilation job.
+--
+-- 'inputConfig', 'describeCompilationJobResponse_inputConfig' - Information about the location in Amazon S3 of the input model
+-- artifacts, the name and shape of the expected data inputs, and the
+-- framework in which the model was trained.
+--
+-- 'outputConfig', 'describeCompilationJobResponse_outputConfig' - Information about the output location for the compiled model and the
+-- target device that the model runs on.
+newDescribeCompilationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'compilationJobName'
+  Prelude.Text ->
+  -- | 'compilationJobArn'
+  Prelude.Text ->
+  -- | 'compilationJobStatus'
+  CompilationJobStatus ->
+  -- | 'stoppingCondition'
+  StoppingCondition ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'failureReason'
+  Prelude.Text ->
+  -- | 'modelArtifacts'
+  ModelArtifacts ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  InputConfig ->
+  -- | 'outputConfig'
+  OutputConfig ->
+  DescribeCompilationJobResponse
+newDescribeCompilationJobResponse
+  pHttpStatus_
+  pCompilationJobName_
+  pCompilationJobArn_
+  pCompilationJobStatus_
+  pStoppingCondition_
+  pCreationTime_
+  pLastModifiedTime_
+  pFailureReason_
+  pModelArtifacts_
+  pRoleArn_
+  pInputConfig_
+  pOutputConfig_ =
+    DescribeCompilationJobResponse'
+      { compilationEndTime =
+          Prelude.Nothing,
+        compilationStartTime = Prelude.Nothing,
+        inferenceImage = Prelude.Nothing,
+        modelDigests = Prelude.Nothing,
+        modelPackageVersionArn = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        compilationJobName = pCompilationJobName_,
+        compilationJobArn = pCompilationJobArn_,
+        compilationJobStatus =
+          pCompilationJobStatus_,
+        stoppingCondition = pStoppingCondition_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        failureReason = pFailureReason_,
+        modelArtifacts = pModelArtifacts_,
+        roleArn = pRoleArn_,
+        inputConfig = pInputConfig_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The time when the model compilation job on a compilation job instance
+-- ended. For a successful or stopped job, this is when the job\'s model
+-- artifacts have finished uploading. For a failed job, this is when Amazon
+-- SageMaker detected that the job failed.
+describeCompilationJobResponse_compilationEndTime :: Lens.Lens' DescribeCompilationJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeCompilationJobResponse_compilationEndTime = Lens.lens (\DescribeCompilationJobResponse' {compilationEndTime} -> compilationEndTime) (\s@DescribeCompilationJobResponse' {} a -> s {compilationEndTime = a} :: DescribeCompilationJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The time when the model compilation job started the @CompilationJob@
+-- instances.
+--
+-- You are billed for the time between this timestamp and the timestamp in
+-- the DescribeCompilationJobResponse$CompilationEndTime field. In Amazon
+-- CloudWatch Logs, the start time might be later than this time. That\'s
+-- because it takes time to download the compilation job, which depends on
+-- the size of the compilation job container.
+describeCompilationJobResponse_compilationStartTime :: Lens.Lens' DescribeCompilationJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeCompilationJobResponse_compilationStartTime = Lens.lens (\DescribeCompilationJobResponse' {compilationStartTime} -> compilationStartTime) (\s@DescribeCompilationJobResponse' {} a -> s {compilationStartTime = a} :: DescribeCompilationJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The inference image to use when compiling a model. Specify an image only
+-- if the target device is a cloud instance.
+describeCompilationJobResponse_inferenceImage :: Lens.Lens' DescribeCompilationJobResponse (Prelude.Maybe Prelude.Text)
+describeCompilationJobResponse_inferenceImage = Lens.lens (\DescribeCompilationJobResponse' {inferenceImage} -> inferenceImage) (\s@DescribeCompilationJobResponse' {} a -> s {inferenceImage = a} :: DescribeCompilationJobResponse)
+
+-- | Provides a BLAKE2 hash value that identifies the compiled model
+-- artifacts in Amazon S3.
+describeCompilationJobResponse_modelDigests :: Lens.Lens' DescribeCompilationJobResponse (Prelude.Maybe ModelDigests)
+describeCompilationJobResponse_modelDigests = Lens.lens (\DescribeCompilationJobResponse' {modelDigests} -> modelDigests) (\s@DescribeCompilationJobResponse' {} a -> s {modelDigests = a} :: DescribeCompilationJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the versioned model package that was
+-- provided to SageMaker Neo when you initiated a compilation job.
+describeCompilationJobResponse_modelPackageVersionArn :: Lens.Lens' DescribeCompilationJobResponse (Prelude.Maybe Prelude.Text)
+describeCompilationJobResponse_modelPackageVersionArn = Lens.lens (\DescribeCompilationJobResponse' {modelPackageVersionArn} -> modelPackageVersionArn) (\s@DescribeCompilationJobResponse' {} a -> s {modelPackageVersionArn = a} :: DescribeCompilationJobResponse)
+
+-- | A VpcConfig object that specifies the VPC that you want your compilation
+-- job to connect to. Control access to your models by configuring the VPC.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Protect Compilation Jobs by Using an Amazon Virtual Private Cloud>.
+describeCompilationJobResponse_vpcConfig :: Lens.Lens' DescribeCompilationJobResponse (Prelude.Maybe NeoVpcConfig)
+describeCompilationJobResponse_vpcConfig = Lens.lens (\DescribeCompilationJobResponse' {vpcConfig} -> vpcConfig) (\s@DescribeCompilationJobResponse' {} a -> s {vpcConfig = a} :: DescribeCompilationJobResponse)
+
+-- | The response's http status code.
+describeCompilationJobResponse_httpStatus :: Lens.Lens' DescribeCompilationJobResponse Prelude.Int
+describeCompilationJobResponse_httpStatus = Lens.lens (\DescribeCompilationJobResponse' {httpStatus} -> httpStatus) (\s@DescribeCompilationJobResponse' {} a -> s {httpStatus = a} :: DescribeCompilationJobResponse)
+
+-- | The name of the model compilation job.
+describeCompilationJobResponse_compilationJobName :: Lens.Lens' DescribeCompilationJobResponse Prelude.Text
+describeCompilationJobResponse_compilationJobName = Lens.lens (\DescribeCompilationJobResponse' {compilationJobName} -> compilationJobName) (\s@DescribeCompilationJobResponse' {} a -> s {compilationJobName = a} :: DescribeCompilationJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the model compilation job.
+describeCompilationJobResponse_compilationJobArn :: Lens.Lens' DescribeCompilationJobResponse Prelude.Text
+describeCompilationJobResponse_compilationJobArn = Lens.lens (\DescribeCompilationJobResponse' {compilationJobArn} -> compilationJobArn) (\s@DescribeCompilationJobResponse' {} a -> s {compilationJobArn = a} :: DescribeCompilationJobResponse)
+
+-- | The status of the model compilation job.
+describeCompilationJobResponse_compilationJobStatus :: Lens.Lens' DescribeCompilationJobResponse CompilationJobStatus
+describeCompilationJobResponse_compilationJobStatus = Lens.lens (\DescribeCompilationJobResponse' {compilationJobStatus} -> compilationJobStatus) (\s@DescribeCompilationJobResponse' {} a -> s {compilationJobStatus = a} :: DescribeCompilationJobResponse)
+
+-- | Specifies a limit to how long a model compilation job can run. When the
+-- job reaches the time limit, Amazon SageMaker ends the compilation job.
+-- Use this API to cap model training costs.
+describeCompilationJobResponse_stoppingCondition :: Lens.Lens' DescribeCompilationJobResponse StoppingCondition
+describeCompilationJobResponse_stoppingCondition = Lens.lens (\DescribeCompilationJobResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeCompilationJobResponse' {} a -> s {stoppingCondition = a} :: DescribeCompilationJobResponse)
+
+-- | The time that the model compilation job was created.
+describeCompilationJobResponse_creationTime :: Lens.Lens' DescribeCompilationJobResponse Prelude.UTCTime
+describeCompilationJobResponse_creationTime = Lens.lens (\DescribeCompilationJobResponse' {creationTime} -> creationTime) (\s@DescribeCompilationJobResponse' {} a -> s {creationTime = a} :: DescribeCompilationJobResponse) Prelude.. Data._Time
+
+-- | The time that the status of the model compilation job was last modified.
+describeCompilationJobResponse_lastModifiedTime :: Lens.Lens' DescribeCompilationJobResponse Prelude.UTCTime
+describeCompilationJobResponse_lastModifiedTime = Lens.lens (\DescribeCompilationJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeCompilationJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeCompilationJobResponse) Prelude.. Data._Time
+
+-- | If a model compilation job failed, the reason it failed.
+describeCompilationJobResponse_failureReason :: Lens.Lens' DescribeCompilationJobResponse Prelude.Text
+describeCompilationJobResponse_failureReason = Lens.lens (\DescribeCompilationJobResponse' {failureReason} -> failureReason) (\s@DescribeCompilationJobResponse' {} a -> s {failureReason = a} :: DescribeCompilationJobResponse)
+
+-- | Information about the location in Amazon S3 that has been configured for
+-- storing the model artifacts used in the compilation job.
+describeCompilationJobResponse_modelArtifacts :: Lens.Lens' DescribeCompilationJobResponse ModelArtifacts
+describeCompilationJobResponse_modelArtifacts = Lens.lens (\DescribeCompilationJobResponse' {modelArtifacts} -> modelArtifacts) (\s@DescribeCompilationJobResponse' {} a -> s {modelArtifacts = a} :: DescribeCompilationJobResponse)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker
+-- assumes to perform the model compilation job.
+describeCompilationJobResponse_roleArn :: Lens.Lens' DescribeCompilationJobResponse Prelude.Text
+describeCompilationJobResponse_roleArn = Lens.lens (\DescribeCompilationJobResponse' {roleArn} -> roleArn) (\s@DescribeCompilationJobResponse' {} a -> s {roleArn = a} :: DescribeCompilationJobResponse)
+
+-- | Information about the location in Amazon S3 of the input model
+-- artifacts, the name and shape of the expected data inputs, and the
+-- framework in which the model was trained.
+describeCompilationJobResponse_inputConfig :: Lens.Lens' DescribeCompilationJobResponse InputConfig
+describeCompilationJobResponse_inputConfig = Lens.lens (\DescribeCompilationJobResponse' {inputConfig} -> inputConfig) (\s@DescribeCompilationJobResponse' {} a -> s {inputConfig = a} :: DescribeCompilationJobResponse)
+
+-- | Information about the output location for the compiled model and the
+-- target device that the model runs on.
+describeCompilationJobResponse_outputConfig :: Lens.Lens' DescribeCompilationJobResponse OutputConfig
+describeCompilationJobResponse_outputConfig = Lens.lens (\DescribeCompilationJobResponse' {outputConfig} -> outputConfig) (\s@DescribeCompilationJobResponse' {} a -> s {outputConfig = a} :: DescribeCompilationJobResponse)
+
+instance
+  Prelude.NFData
+    DescribeCompilationJobResponse
+  where
+  rnf DescribeCompilationJobResponse' {..} =
+    Prelude.rnf compilationEndTime
+      `Prelude.seq` Prelude.rnf compilationStartTime
+      `Prelude.seq` Prelude.rnf inferenceImage
+      `Prelude.seq` Prelude.rnf modelDigests
+      `Prelude.seq` Prelude.rnf modelPackageVersionArn
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf compilationJobName
+      `Prelude.seq` Prelude.rnf compilationJobArn
+      `Prelude.seq` Prelude.rnf compilationJobStatus
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf modelArtifacts
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf outputConfig
diff --git a/gen/Amazonka/SageMaker/DescribeContext.hs b/gen/Amazonka/SageMaker/DescribeContext.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeContext.hs
@@ -0,0 +1,284 @@
+{-# 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.DescribeContext
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a context.
+module Amazonka.SageMaker.DescribeContext
+  ( -- * Creating a Request
+    DescribeContext (..),
+    newDescribeContext,
+
+    -- * Request Lenses
+    describeContext_contextName,
+
+    -- * Destructuring the Response
+    DescribeContextResponse (..),
+    newDescribeContextResponse,
+
+    -- * Response Lenses
+    describeContextResponse_contextArn,
+    describeContextResponse_contextName,
+    describeContextResponse_contextType,
+    describeContextResponse_createdBy,
+    describeContextResponse_creationTime,
+    describeContextResponse_description,
+    describeContextResponse_lastModifiedBy,
+    describeContextResponse_lastModifiedTime,
+    describeContextResponse_lineageGroupArn,
+    describeContextResponse_properties,
+    describeContextResponse_source,
+    describeContextResponse_httpStatus,
+  )
+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:/ 'newDescribeContext' smart constructor.
+data DescribeContext = DescribeContext'
+  { -- | The name of the context to describe.
+    contextName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeContext' 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:
+--
+-- 'contextName', 'describeContext_contextName' - The name of the context to describe.
+newDescribeContext ::
+  -- | 'contextName'
+  Prelude.Text ->
+  DescribeContext
+newDescribeContext pContextName_ =
+  DescribeContext' {contextName = pContextName_}
+
+-- | The name of the context to describe.
+describeContext_contextName :: Lens.Lens' DescribeContext Prelude.Text
+describeContext_contextName = Lens.lens (\DescribeContext' {contextName} -> contextName) (\s@DescribeContext' {} a -> s {contextName = a} :: DescribeContext)
+
+instance Core.AWSRequest DescribeContext where
+  type
+    AWSResponse DescribeContext =
+      DescribeContextResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeContextResponse'
+            Prelude.<$> (x Data..?> "ContextArn")
+            Prelude.<*> (x Data..?> "ContextName")
+            Prelude.<*> (x Data..?> "ContextType")
+            Prelude.<*> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LineageGroupArn")
+            Prelude.<*> (x Data..?> "Properties" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeContext where
+  hashWithSalt _salt DescribeContext' {..} =
+    _salt `Prelude.hashWithSalt` contextName
+
+instance Prelude.NFData DescribeContext where
+  rnf DescribeContext' {..} = Prelude.rnf contextName
+
+instance Data.ToHeaders DescribeContext where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeContext" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeContext where
+  toJSON DescribeContext' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ContextName" Data..= contextName)]
+      )
+
+instance Data.ToPath DescribeContext where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeContext where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeContextResponse' smart constructor.
+data DescribeContextResponse = DescribeContextResponse'
+  { -- | The Amazon Resource Name (ARN) of the context.
+    contextArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the context.
+    contextName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the context.
+    contextType :: Prelude.Maybe Prelude.Text,
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the context was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the context.
+    description :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the context was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of the context\'s properties.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The source of the context.
+    source :: Prelude.Maybe ContextSource,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeContextResponse' 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:
+--
+-- 'contextArn', 'describeContextResponse_contextArn' - The Amazon Resource Name (ARN) of the context.
+--
+-- 'contextName', 'describeContextResponse_contextName' - The name of the context.
+--
+-- 'contextType', 'describeContextResponse_contextType' - The type of the context.
+--
+-- 'createdBy', 'describeContextResponse_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'describeContextResponse_creationTime' - When the context was created.
+--
+-- 'description', 'describeContextResponse_description' - The description of the context.
+--
+-- 'lastModifiedBy', 'describeContextResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeContextResponse_lastModifiedTime' - When the context was last modified.
+--
+-- 'lineageGroupArn', 'describeContextResponse_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group.
+--
+-- 'properties', 'describeContextResponse_properties' - A list of the context\'s properties.
+--
+-- 'source', 'describeContextResponse_source' - The source of the context.
+--
+-- 'httpStatus', 'describeContextResponse_httpStatus' - The response's http status code.
+newDescribeContextResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeContextResponse
+newDescribeContextResponse pHttpStatus_ =
+  DescribeContextResponse'
+    { contextArn =
+        Prelude.Nothing,
+      contextName = Prelude.Nothing,
+      contextType = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      source = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the context.
+describeContextResponse_contextArn :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.Text)
+describeContextResponse_contextArn = Lens.lens (\DescribeContextResponse' {contextArn} -> contextArn) (\s@DescribeContextResponse' {} a -> s {contextArn = a} :: DescribeContextResponse)
+
+-- | The name of the context.
+describeContextResponse_contextName :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.Text)
+describeContextResponse_contextName = Lens.lens (\DescribeContextResponse' {contextName} -> contextName) (\s@DescribeContextResponse' {} a -> s {contextName = a} :: DescribeContextResponse)
+
+-- | The type of the context.
+describeContextResponse_contextType :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.Text)
+describeContextResponse_contextType = Lens.lens (\DescribeContextResponse' {contextType} -> contextType) (\s@DescribeContextResponse' {} a -> s {contextType = a} :: DescribeContextResponse)
+
+-- | Undocumented member.
+describeContextResponse_createdBy :: Lens.Lens' DescribeContextResponse (Prelude.Maybe UserContext)
+describeContextResponse_createdBy = Lens.lens (\DescribeContextResponse' {createdBy} -> createdBy) (\s@DescribeContextResponse' {} a -> s {createdBy = a} :: DescribeContextResponse)
+
+-- | When the context was created.
+describeContextResponse_creationTime :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.UTCTime)
+describeContextResponse_creationTime = Lens.lens (\DescribeContextResponse' {creationTime} -> creationTime) (\s@DescribeContextResponse' {} a -> s {creationTime = a} :: DescribeContextResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the context.
+describeContextResponse_description :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.Text)
+describeContextResponse_description = Lens.lens (\DescribeContextResponse' {description} -> description) (\s@DescribeContextResponse' {} a -> s {description = a} :: DescribeContextResponse)
+
+-- | Undocumented member.
+describeContextResponse_lastModifiedBy :: Lens.Lens' DescribeContextResponse (Prelude.Maybe UserContext)
+describeContextResponse_lastModifiedBy = Lens.lens (\DescribeContextResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeContextResponse' {} a -> s {lastModifiedBy = a} :: DescribeContextResponse)
+
+-- | When the context was last modified.
+describeContextResponse_lastModifiedTime :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.UTCTime)
+describeContextResponse_lastModifiedTime = Lens.lens (\DescribeContextResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeContextResponse' {} a -> s {lastModifiedTime = a} :: DescribeContextResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group.
+describeContextResponse_lineageGroupArn :: Lens.Lens' DescribeContextResponse (Prelude.Maybe Prelude.Text)
+describeContextResponse_lineageGroupArn = Lens.lens (\DescribeContextResponse' {lineageGroupArn} -> lineageGroupArn) (\s@DescribeContextResponse' {} a -> s {lineageGroupArn = a} :: DescribeContextResponse)
+
+-- | A list of the context\'s properties.
+describeContextResponse_properties :: Lens.Lens' DescribeContextResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeContextResponse_properties = Lens.lens (\DescribeContextResponse' {properties} -> properties) (\s@DescribeContextResponse' {} a -> s {properties = a} :: DescribeContextResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source of the context.
+describeContextResponse_source :: Lens.Lens' DescribeContextResponse (Prelude.Maybe ContextSource)
+describeContextResponse_source = Lens.lens (\DescribeContextResponse' {source} -> source) (\s@DescribeContextResponse' {} a -> s {source = a} :: DescribeContextResponse)
+
+-- | The response's http status code.
+describeContextResponse_httpStatus :: Lens.Lens' DescribeContextResponse Prelude.Int
+describeContextResponse_httpStatus = Lens.lens (\DescribeContextResponse' {httpStatus} -> httpStatus) (\s@DescribeContextResponse' {} a -> s {httpStatus = a} :: DescribeContextResponse)
+
+instance Prelude.NFData DescribeContextResponse where
+  rnf DescribeContextResponse' {..} =
+    Prelude.rnf contextArn
+      `Prelude.seq` Prelude.rnf contextName
+      `Prelude.seq` Prelude.rnf contextType
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeDataQualityJobDefinition.hs b/gen/Amazonka/SageMaker/DescribeDataQualityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeDataQualityJobDefinition.hs
@@ -0,0 +1,360 @@
+{-# 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.DescribeDataQualityJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the details of a data quality monitoring job definition.
+module Amazonka.SageMaker.DescribeDataQualityJobDefinition
+  ( -- * Creating a Request
+    DescribeDataQualityJobDefinition (..),
+    newDescribeDataQualityJobDefinition,
+
+    -- * Request Lenses
+    describeDataQualityJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DescribeDataQualityJobDefinitionResponse (..),
+    newDescribeDataQualityJobDefinitionResponse,
+
+    -- * Response Lenses
+    describeDataQualityJobDefinitionResponse_dataQualityBaselineConfig,
+    describeDataQualityJobDefinitionResponse_networkConfig,
+    describeDataQualityJobDefinitionResponse_stoppingCondition,
+    describeDataQualityJobDefinitionResponse_httpStatus,
+    describeDataQualityJobDefinitionResponse_jobDefinitionArn,
+    describeDataQualityJobDefinitionResponse_jobDefinitionName,
+    describeDataQualityJobDefinitionResponse_creationTime,
+    describeDataQualityJobDefinitionResponse_dataQualityAppSpecification,
+    describeDataQualityJobDefinitionResponse_dataQualityJobInput,
+    describeDataQualityJobDefinitionResponse_dataQualityJobOutputConfig,
+    describeDataQualityJobDefinitionResponse_jobResources,
+    describeDataQualityJobDefinitionResponse_roleArn,
+  )
+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:/ 'newDescribeDataQualityJobDefinition' smart constructor.
+data DescribeDataQualityJobDefinition = DescribeDataQualityJobDefinition'
+  { -- | The name of the data quality monitoring job definition to describe.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataQualityJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'describeDataQualityJobDefinition_jobDefinitionName' - The name of the data quality monitoring job definition to describe.
+newDescribeDataQualityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DescribeDataQualityJobDefinition
+newDescribeDataQualityJobDefinition
+  pJobDefinitionName_ =
+    DescribeDataQualityJobDefinition'
+      { jobDefinitionName =
+          pJobDefinitionName_
+      }
+
+-- | The name of the data quality monitoring job definition to describe.
+describeDataQualityJobDefinition_jobDefinitionName :: Lens.Lens' DescribeDataQualityJobDefinition Prelude.Text
+describeDataQualityJobDefinition_jobDefinitionName = Lens.lens (\DescribeDataQualityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeDataQualityJobDefinition' {} a -> s {jobDefinitionName = a} :: DescribeDataQualityJobDefinition)
+
+instance
+  Core.AWSRequest
+    DescribeDataQualityJobDefinition
+  where
+  type
+    AWSResponse DescribeDataQualityJobDefinition =
+      DescribeDataQualityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataQualityJobDefinitionResponse'
+            Prelude.<$> (x Data..?> "DataQualityBaselineConfig")
+            Prelude.<*> (x Data..?> "NetworkConfig")
+            Prelude.<*> (x Data..?> "StoppingCondition")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+            Prelude.<*> (x Data..:> "JobDefinitionName")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "DataQualityAppSpecification")
+            Prelude.<*> (x Data..:> "DataQualityJobInput")
+            Prelude.<*> (x Data..:> "DataQualityJobOutputConfig")
+            Prelude.<*> (x Data..:> "JobResources")
+            Prelude.<*> (x Data..:> "RoleArn")
+      )
+
+instance
+  Prelude.Hashable
+    DescribeDataQualityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DescribeDataQualityJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DescribeDataQualityJobDefinition
+  where
+  rnf DescribeDataQualityJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DescribeDataQualityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeDataQualityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDataQualityJobDefinition where
+  toJSON DescribeDataQualityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DescribeDataQualityJobDefinition where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeDataQualityJobDefinition
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataQualityJobDefinitionResponse' smart constructor.
+data DescribeDataQualityJobDefinitionResponse = DescribeDataQualityJobDefinitionResponse'
+  { -- | The constraints and baselines for the data quality monitoring job
+    -- definition.
+    dataQualityBaselineConfig :: Prelude.Maybe DataQualityBaselineConfig,
+    -- | The networking configuration for the data quality monitoring job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the data quality monitoring job
+    -- definition.
+    jobDefinitionArn :: Prelude.Text,
+    -- | The name of the data quality monitoring job definition.
+    jobDefinitionName :: Prelude.Text,
+    -- | The time that the data quality monitoring job definition was created.
+    creationTime :: Data.POSIX,
+    -- | Information about the container that runs the data quality monitoring
+    -- job.
+    dataQualityAppSpecification :: DataQualityAppSpecification,
+    -- | The list of inputs for the data quality monitoring job. Currently
+    -- endpoints are supported.
+    dataQualityJobInput :: DataQualityJobInput,
+    dataQualityJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataQualityJobDefinitionResponse' 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:
+--
+-- 'dataQualityBaselineConfig', 'describeDataQualityJobDefinitionResponse_dataQualityBaselineConfig' - The constraints and baselines for the data quality monitoring job
+-- definition.
+--
+-- 'networkConfig', 'describeDataQualityJobDefinitionResponse_networkConfig' - The networking configuration for the data quality monitoring job.
+--
+-- 'stoppingCondition', 'describeDataQualityJobDefinitionResponse_stoppingCondition' - Undocumented member.
+--
+-- 'httpStatus', 'describeDataQualityJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'describeDataQualityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the data quality monitoring job
+-- definition.
+--
+-- 'jobDefinitionName', 'describeDataQualityJobDefinitionResponse_jobDefinitionName' - The name of the data quality monitoring job definition.
+--
+-- 'creationTime', 'describeDataQualityJobDefinitionResponse_creationTime' - The time that the data quality monitoring job definition was created.
+--
+-- 'dataQualityAppSpecification', 'describeDataQualityJobDefinitionResponse_dataQualityAppSpecification' - Information about the container that runs the data quality monitoring
+-- job.
+--
+-- 'dataQualityJobInput', 'describeDataQualityJobDefinitionResponse_dataQualityJobInput' - The list of inputs for the data quality monitoring job. Currently
+-- endpoints are supported.
+--
+-- 'dataQualityJobOutputConfig', 'describeDataQualityJobDefinitionResponse_dataQualityJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'describeDataQualityJobDefinitionResponse_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'describeDataQualityJobDefinitionResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newDescribeDataQualityJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'dataQualityAppSpecification'
+  DataQualityAppSpecification ->
+  -- | 'dataQualityJobInput'
+  DataQualityJobInput ->
+  -- | 'dataQualityJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  DescribeDataQualityJobDefinitionResponse
+newDescribeDataQualityJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_
+  pJobDefinitionName_
+  pCreationTime_
+  pDataQualityAppSpecification_
+  pDataQualityJobInput_
+  pDataQualityJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    DescribeDataQualityJobDefinitionResponse'
+      { dataQualityBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_,
+        jobDefinitionName =
+          pJobDefinitionName_,
+        creationTime =
+          Data._Time
+            Lens.# pCreationTime_,
+        dataQualityAppSpecification =
+          pDataQualityAppSpecification_,
+        dataQualityJobInput =
+          pDataQualityJobInput_,
+        dataQualityJobOutputConfig =
+          pDataQualityJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | The constraints and baselines for the data quality monitoring job
+-- definition.
+describeDataQualityJobDefinitionResponse_dataQualityBaselineConfig :: Lens.Lens' DescribeDataQualityJobDefinitionResponse (Prelude.Maybe DataQualityBaselineConfig)
+describeDataQualityJobDefinitionResponse_dataQualityBaselineConfig = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {dataQualityBaselineConfig} -> dataQualityBaselineConfig) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {dataQualityBaselineConfig = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The networking configuration for the data quality monitoring job.
+describeDataQualityJobDefinitionResponse_networkConfig :: Lens.Lens' DescribeDataQualityJobDefinitionResponse (Prelude.Maybe MonitoringNetworkConfig)
+describeDataQualityJobDefinitionResponse_networkConfig = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {networkConfig} -> networkConfig) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {networkConfig = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeDataQualityJobDefinitionResponse_stoppingCondition :: Lens.Lens' DescribeDataQualityJobDefinitionResponse (Prelude.Maybe MonitoringStoppingCondition)
+describeDataQualityJobDefinitionResponse_stoppingCondition = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {stoppingCondition = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The response's http status code.
+describeDataQualityJobDefinitionResponse_httpStatus :: Lens.Lens' DescribeDataQualityJobDefinitionResponse Prelude.Int
+describeDataQualityJobDefinitionResponse_httpStatus = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {httpStatus = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the data quality monitoring job
+-- definition.
+describeDataQualityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' DescribeDataQualityJobDefinitionResponse Prelude.Text
+describeDataQualityJobDefinitionResponse_jobDefinitionArn = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The name of the data quality monitoring job definition.
+describeDataQualityJobDefinitionResponse_jobDefinitionName :: Lens.Lens' DescribeDataQualityJobDefinitionResponse Prelude.Text
+describeDataQualityJobDefinitionResponse_jobDefinitionName = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {jobDefinitionName = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The time that the data quality monitoring job definition was created.
+describeDataQualityJobDefinitionResponse_creationTime :: Lens.Lens' DescribeDataQualityJobDefinitionResponse Prelude.UTCTime
+describeDataQualityJobDefinitionResponse_creationTime = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {creationTime} -> creationTime) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {creationTime = a} :: DescribeDataQualityJobDefinitionResponse) Prelude.. Data._Time
+
+-- | Information about the container that runs the data quality monitoring
+-- job.
+describeDataQualityJobDefinitionResponse_dataQualityAppSpecification :: Lens.Lens' DescribeDataQualityJobDefinitionResponse DataQualityAppSpecification
+describeDataQualityJobDefinitionResponse_dataQualityAppSpecification = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {dataQualityAppSpecification} -> dataQualityAppSpecification) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {dataQualityAppSpecification = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The list of inputs for the data quality monitoring job. Currently
+-- endpoints are supported.
+describeDataQualityJobDefinitionResponse_dataQualityJobInput :: Lens.Lens' DescribeDataQualityJobDefinitionResponse DataQualityJobInput
+describeDataQualityJobDefinitionResponse_dataQualityJobInput = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {dataQualityJobInput} -> dataQualityJobInput) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {dataQualityJobInput = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeDataQualityJobDefinitionResponse_dataQualityJobOutputConfig :: Lens.Lens' DescribeDataQualityJobDefinitionResponse MonitoringOutputConfig
+describeDataQualityJobDefinitionResponse_dataQualityJobOutputConfig = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {dataQualityJobOutputConfig} -> dataQualityJobOutputConfig) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {dataQualityJobOutputConfig = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeDataQualityJobDefinitionResponse_jobResources :: Lens.Lens' DescribeDataQualityJobDefinitionResponse MonitoringResources
+describeDataQualityJobDefinitionResponse_jobResources = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {jobResources} -> jobResources) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {jobResources = a} :: DescribeDataQualityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+describeDataQualityJobDefinitionResponse_roleArn :: Lens.Lens' DescribeDataQualityJobDefinitionResponse Prelude.Text
+describeDataQualityJobDefinitionResponse_roleArn = Lens.lens (\DescribeDataQualityJobDefinitionResponse' {roleArn} -> roleArn) (\s@DescribeDataQualityJobDefinitionResponse' {} a -> s {roleArn = a} :: DescribeDataQualityJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeDataQualityJobDefinitionResponse
+  where
+  rnf DescribeDataQualityJobDefinitionResponse' {..} =
+    Prelude.rnf dataQualityBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionArn
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dataQualityAppSpecification
+      `Prelude.seq` Prelude.rnf dataQualityJobInput
+      `Prelude.seq` Prelude.rnf dataQualityJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
diff --git a/gen/Amazonka/SageMaker/DescribeDevice.hs b/gen/Amazonka/SageMaker/DescribeDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeDevice.hs
@@ -0,0 +1,337 @@
+{-# 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.DescribeDevice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the device.
+module Amazonka.SageMaker.DescribeDevice
+  ( -- * Creating a Request
+    DescribeDevice (..),
+    newDescribeDevice,
+
+    -- * Request Lenses
+    describeDevice_nextToken,
+    describeDevice_deviceName,
+    describeDevice_deviceFleetName,
+
+    -- * Destructuring the Response
+    DescribeDeviceResponse (..),
+    newDescribeDeviceResponse,
+
+    -- * Response Lenses
+    describeDeviceResponse_agentVersion,
+    describeDeviceResponse_description,
+    describeDeviceResponse_deviceArn,
+    describeDeviceResponse_iotThingName,
+    describeDeviceResponse_latestHeartbeat,
+    describeDeviceResponse_maxModels,
+    describeDeviceResponse_models,
+    describeDeviceResponse_nextToken,
+    describeDeviceResponse_httpStatus,
+    describeDeviceResponse_deviceName,
+    describeDeviceResponse_deviceFleetName,
+    describeDeviceResponse_registrationTime,
+  )
+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:/ 'newDescribeDevice' smart constructor.
+data DescribeDevice = DescribeDevice'
+  { -- | Next token of device description.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The unique ID of the device.
+    deviceName :: Prelude.Text,
+    -- | The name of the fleet the devices belong to.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDevice' 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:
+--
+-- 'nextToken', 'describeDevice_nextToken' - Next token of device description.
+--
+-- 'deviceName', 'describeDevice_deviceName' - The unique ID of the device.
+--
+-- 'deviceFleetName', 'describeDevice_deviceFleetName' - The name of the fleet the devices belong to.
+newDescribeDevice ::
+  -- | 'deviceName'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  DescribeDevice
+newDescribeDevice pDeviceName_ pDeviceFleetName_ =
+  DescribeDevice'
+    { nextToken = Prelude.Nothing,
+      deviceName = pDeviceName_,
+      deviceFleetName = pDeviceFleetName_
+    }
+
+-- | Next token of device description.
+describeDevice_nextToken :: Lens.Lens' DescribeDevice (Prelude.Maybe Prelude.Text)
+describeDevice_nextToken = Lens.lens (\DescribeDevice' {nextToken} -> nextToken) (\s@DescribeDevice' {} a -> s {nextToken = a} :: DescribeDevice)
+
+-- | The unique ID of the device.
+describeDevice_deviceName :: Lens.Lens' DescribeDevice Prelude.Text
+describeDevice_deviceName = Lens.lens (\DescribeDevice' {deviceName} -> deviceName) (\s@DescribeDevice' {} a -> s {deviceName = a} :: DescribeDevice)
+
+-- | The name of the fleet the devices belong to.
+describeDevice_deviceFleetName :: Lens.Lens' DescribeDevice Prelude.Text
+describeDevice_deviceFleetName = Lens.lens (\DescribeDevice' {deviceFleetName} -> deviceFleetName) (\s@DescribeDevice' {} a -> s {deviceFleetName = a} :: DescribeDevice)
+
+instance Core.AWSRequest DescribeDevice where
+  type
+    AWSResponse DescribeDevice =
+      DescribeDeviceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDeviceResponse'
+            Prelude.<$> (x Data..?> "AgentVersion")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DeviceArn")
+            Prelude.<*> (x Data..?> "IotThingName")
+            Prelude.<*> (x Data..?> "LatestHeartbeat")
+            Prelude.<*> (x Data..?> "MaxModels")
+            Prelude.<*> (x Data..?> "Models" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "DeviceName")
+            Prelude.<*> (x Data..:> "DeviceFleetName")
+            Prelude.<*> (x Data..:> "RegistrationTime")
+      )
+
+instance Prelude.Hashable DescribeDevice where
+  hashWithSalt _salt DescribeDevice' {..} =
+    _salt
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` deviceName
+      `Prelude.hashWithSalt` deviceFleetName
+
+instance Prelude.NFData DescribeDevice where
+  rnf DescribeDevice' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceFleetName
+
+instance Data.ToHeaders DescribeDevice where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeDevice" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDevice where
+  toJSON DescribeDevice' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("DeviceName" Data..= deviceName),
+            Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName)
+          ]
+      )
+
+instance Data.ToPath DescribeDevice where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDevice where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDeviceResponse' smart constructor.
+data DescribeDeviceResponse = DescribeDeviceResponse'
+  { -- | Edge Manager agent version.
+    agentVersion :: Prelude.Maybe Prelude.Text,
+    -- | A description of the device.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the device.
+    deviceArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Internet of Things (IoT) object thing name
+    -- associated with the device.
+    iotThingName :: Prelude.Maybe Prelude.Text,
+    -- | The last heartbeat received from the device.
+    latestHeartbeat :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of models.
+    maxModels :: Prelude.Maybe Prelude.Int,
+    -- | Models on the device.
+    models :: Prelude.Maybe [EdgeModel],
+    -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The unique identifier of the device.
+    deviceName :: Prelude.Text,
+    -- | The name of the fleet the device belongs to.
+    deviceFleetName :: Prelude.Text,
+    -- | The timestamp of the last registration or de-reregistration.
+    registrationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDeviceResponse' 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:
+--
+-- 'agentVersion', 'describeDeviceResponse_agentVersion' - Edge Manager agent version.
+--
+-- 'description', 'describeDeviceResponse_description' - A description of the device.
+--
+-- 'deviceArn', 'describeDeviceResponse_deviceArn' - The Amazon Resource Name (ARN) of the device.
+--
+-- 'iotThingName', 'describeDeviceResponse_iotThingName' - The Amazon Web Services Internet of Things (IoT) object thing name
+-- associated with the device.
+--
+-- 'latestHeartbeat', 'describeDeviceResponse_latestHeartbeat' - The last heartbeat received from the device.
+--
+-- 'maxModels', 'describeDeviceResponse_maxModels' - The maximum number of models.
+--
+-- 'models', 'describeDeviceResponse_models' - Models on the device.
+--
+-- 'nextToken', 'describeDeviceResponse_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'httpStatus', 'describeDeviceResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceName', 'describeDeviceResponse_deviceName' - The unique identifier of the device.
+--
+-- 'deviceFleetName', 'describeDeviceResponse_deviceFleetName' - The name of the fleet the device belongs to.
+--
+-- 'registrationTime', 'describeDeviceResponse_registrationTime' - The timestamp of the last registration or de-reregistration.
+newDescribeDeviceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'deviceName'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  -- | 'registrationTime'
+  Prelude.UTCTime ->
+  DescribeDeviceResponse
+newDescribeDeviceResponse
+  pHttpStatus_
+  pDeviceName_
+  pDeviceFleetName_
+  pRegistrationTime_ =
+    DescribeDeviceResponse'
+      { agentVersion =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        deviceArn = Prelude.Nothing,
+        iotThingName = Prelude.Nothing,
+        latestHeartbeat = Prelude.Nothing,
+        maxModels = Prelude.Nothing,
+        models = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        deviceName = pDeviceName_,
+        deviceFleetName = pDeviceFleetName_,
+        registrationTime =
+          Data._Time Lens.# pRegistrationTime_
+      }
+
+-- | Edge Manager agent version.
+describeDeviceResponse_agentVersion :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.Text)
+describeDeviceResponse_agentVersion = Lens.lens (\DescribeDeviceResponse' {agentVersion} -> agentVersion) (\s@DescribeDeviceResponse' {} a -> s {agentVersion = a} :: DescribeDeviceResponse)
+
+-- | A description of the device.
+describeDeviceResponse_description :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.Text)
+describeDeviceResponse_description = Lens.lens (\DescribeDeviceResponse' {description} -> description) (\s@DescribeDeviceResponse' {} a -> s {description = a} :: DescribeDeviceResponse)
+
+-- | The Amazon Resource Name (ARN) of the device.
+describeDeviceResponse_deviceArn :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.Text)
+describeDeviceResponse_deviceArn = Lens.lens (\DescribeDeviceResponse' {deviceArn} -> deviceArn) (\s@DescribeDeviceResponse' {} a -> s {deviceArn = a} :: DescribeDeviceResponse)
+
+-- | The Amazon Web Services Internet of Things (IoT) object thing name
+-- associated with the device.
+describeDeviceResponse_iotThingName :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.Text)
+describeDeviceResponse_iotThingName = Lens.lens (\DescribeDeviceResponse' {iotThingName} -> iotThingName) (\s@DescribeDeviceResponse' {} a -> s {iotThingName = a} :: DescribeDeviceResponse)
+
+-- | The last heartbeat received from the device.
+describeDeviceResponse_latestHeartbeat :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.UTCTime)
+describeDeviceResponse_latestHeartbeat = Lens.lens (\DescribeDeviceResponse' {latestHeartbeat} -> latestHeartbeat) (\s@DescribeDeviceResponse' {} a -> s {latestHeartbeat = a} :: DescribeDeviceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of models.
+describeDeviceResponse_maxModels :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.Int)
+describeDeviceResponse_maxModels = Lens.lens (\DescribeDeviceResponse' {maxModels} -> maxModels) (\s@DescribeDeviceResponse' {} a -> s {maxModels = a} :: DescribeDeviceResponse)
+
+-- | Models on the device.
+describeDeviceResponse_models :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe [EdgeModel])
+describeDeviceResponse_models = Lens.lens (\DescribeDeviceResponse' {models} -> models) (\s@DescribeDeviceResponse' {} a -> s {models = a} :: DescribeDeviceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+describeDeviceResponse_nextToken :: Lens.Lens' DescribeDeviceResponse (Prelude.Maybe Prelude.Text)
+describeDeviceResponse_nextToken = Lens.lens (\DescribeDeviceResponse' {nextToken} -> nextToken) (\s@DescribeDeviceResponse' {} a -> s {nextToken = a} :: DescribeDeviceResponse)
+
+-- | The response's http status code.
+describeDeviceResponse_httpStatus :: Lens.Lens' DescribeDeviceResponse Prelude.Int
+describeDeviceResponse_httpStatus = Lens.lens (\DescribeDeviceResponse' {httpStatus} -> httpStatus) (\s@DescribeDeviceResponse' {} a -> s {httpStatus = a} :: DescribeDeviceResponse)
+
+-- | The unique identifier of the device.
+describeDeviceResponse_deviceName :: Lens.Lens' DescribeDeviceResponse Prelude.Text
+describeDeviceResponse_deviceName = Lens.lens (\DescribeDeviceResponse' {deviceName} -> deviceName) (\s@DescribeDeviceResponse' {} a -> s {deviceName = a} :: DescribeDeviceResponse)
+
+-- | The name of the fleet the device belongs to.
+describeDeviceResponse_deviceFleetName :: Lens.Lens' DescribeDeviceResponse Prelude.Text
+describeDeviceResponse_deviceFleetName = Lens.lens (\DescribeDeviceResponse' {deviceFleetName} -> deviceFleetName) (\s@DescribeDeviceResponse' {} a -> s {deviceFleetName = a} :: DescribeDeviceResponse)
+
+-- | The timestamp of the last registration or de-reregistration.
+describeDeviceResponse_registrationTime :: Lens.Lens' DescribeDeviceResponse Prelude.UTCTime
+describeDeviceResponse_registrationTime = Lens.lens (\DescribeDeviceResponse' {registrationTime} -> registrationTime) (\s@DescribeDeviceResponse' {} a -> s {registrationTime = a} :: DescribeDeviceResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeDeviceResponse where
+  rnf DescribeDeviceResponse' {..} =
+    Prelude.rnf agentVersion
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf iotThingName
+      `Prelude.seq` Prelude.rnf latestHeartbeat
+      `Prelude.seq` Prelude.rnf maxModels
+      `Prelude.seq` Prelude.rnf models
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf registrationTime
diff --git a/gen/Amazonka/SageMaker/DescribeDeviceFleet.hs b/gen/Amazonka/SageMaker/DescribeDeviceFleet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeDeviceFleet.hs
@@ -0,0 +1,282 @@
+{-# 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.DescribeDeviceFleet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A description of the fleet the device belongs to.
+module Amazonka.SageMaker.DescribeDeviceFleet
+  ( -- * Creating a Request
+    DescribeDeviceFleet (..),
+    newDescribeDeviceFleet,
+
+    -- * Request Lenses
+    describeDeviceFleet_deviceFleetName,
+
+    -- * Destructuring the Response
+    DescribeDeviceFleetResponse (..),
+    newDescribeDeviceFleetResponse,
+
+    -- * Response Lenses
+    describeDeviceFleetResponse_description,
+    describeDeviceFleetResponse_iotRoleAlias,
+    describeDeviceFleetResponse_roleArn,
+    describeDeviceFleetResponse_httpStatus,
+    describeDeviceFleetResponse_deviceFleetName,
+    describeDeviceFleetResponse_deviceFleetArn,
+    describeDeviceFleetResponse_outputConfig,
+    describeDeviceFleetResponse_creationTime,
+    describeDeviceFleetResponse_lastModifiedTime,
+  )
+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:/ 'newDescribeDeviceFleet' smart constructor.
+data DescribeDeviceFleet = DescribeDeviceFleet'
+  { -- | The name of the fleet.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDeviceFleet' 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:
+--
+-- 'deviceFleetName', 'describeDeviceFleet_deviceFleetName' - The name of the fleet.
+newDescribeDeviceFleet ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  DescribeDeviceFleet
+newDescribeDeviceFleet pDeviceFleetName_ =
+  DescribeDeviceFleet'
+    { deviceFleetName =
+        pDeviceFleetName_
+    }
+
+-- | The name of the fleet.
+describeDeviceFleet_deviceFleetName :: Lens.Lens' DescribeDeviceFleet Prelude.Text
+describeDeviceFleet_deviceFleetName = Lens.lens (\DescribeDeviceFleet' {deviceFleetName} -> deviceFleetName) (\s@DescribeDeviceFleet' {} a -> s {deviceFleetName = a} :: DescribeDeviceFleet)
+
+instance Core.AWSRequest DescribeDeviceFleet where
+  type
+    AWSResponse DescribeDeviceFleet =
+      DescribeDeviceFleetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDeviceFleetResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "IotRoleAlias")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "DeviceFleetName")
+            Prelude.<*> (x Data..:> "DeviceFleetArn")
+            Prelude.<*> (x Data..:> "OutputConfig")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+      )
+
+instance Prelude.Hashable DescribeDeviceFleet where
+  hashWithSalt _salt DescribeDeviceFleet' {..} =
+    _salt `Prelude.hashWithSalt` deviceFleetName
+
+instance Prelude.NFData DescribeDeviceFleet where
+  rnf DescribeDeviceFleet' {..} =
+    Prelude.rnf deviceFleetName
+
+instance Data.ToHeaders DescribeDeviceFleet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeDeviceFleet" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDeviceFleet where
+  toJSON DescribeDeviceFleet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName)
+          ]
+      )
+
+instance Data.ToPath DescribeDeviceFleet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDeviceFleet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDeviceFleetResponse' smart constructor.
+data DescribeDeviceFleetResponse = DescribeDeviceFleetResponse'
+  { -- | A description of the fleet.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) alias created in Amazon Web Services
+    -- Internet of Things (IoT).
+    iotRoleAlias :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) that has access to Amazon Web Services
+    -- Internet of Things (IoT).
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the fleet.
+    deviceFleetName :: Prelude.Text,
+    -- | The The Amazon Resource Name (ARN) of the fleet.
+    deviceFleetArn :: Prelude.Text,
+    -- | The output configuration for storing sampled data.
+    outputConfig :: EdgeOutputConfig,
+    -- | Timestamp of when the device fleet was created.
+    creationTime :: Data.POSIX,
+    -- | Timestamp of when the device fleet was last updated.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDeviceFleetResponse' 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:
+--
+-- 'description', 'describeDeviceFleetResponse_description' - A description of the fleet.
+--
+-- 'iotRoleAlias', 'describeDeviceFleetResponse_iotRoleAlias' - The Amazon Resource Name (ARN) alias created in Amazon Web Services
+-- Internet of Things (IoT).
+--
+-- 'roleArn', 'describeDeviceFleetResponse_roleArn' - The Amazon Resource Name (ARN) that has access to Amazon Web Services
+-- Internet of Things (IoT).
+--
+-- 'httpStatus', 'describeDeviceFleetResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceFleetName', 'describeDeviceFleetResponse_deviceFleetName' - The name of the fleet.
+--
+-- 'deviceFleetArn', 'describeDeviceFleetResponse_deviceFleetArn' - The The Amazon Resource Name (ARN) of the fleet.
+--
+-- 'outputConfig', 'describeDeviceFleetResponse_outputConfig' - The output configuration for storing sampled data.
+--
+-- 'creationTime', 'describeDeviceFleetResponse_creationTime' - Timestamp of when the device fleet was created.
+--
+-- 'lastModifiedTime', 'describeDeviceFleetResponse_lastModifiedTime' - Timestamp of when the device fleet was last updated.
+newDescribeDeviceFleetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  -- | 'deviceFleetArn'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  EdgeOutputConfig ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  DescribeDeviceFleetResponse
+newDescribeDeviceFleetResponse
+  pHttpStatus_
+  pDeviceFleetName_
+  pDeviceFleetArn_
+  pOutputConfig_
+  pCreationTime_
+  pLastModifiedTime_ =
+    DescribeDeviceFleetResponse'
+      { description =
+          Prelude.Nothing,
+        iotRoleAlias = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        deviceFleetName = pDeviceFleetName_,
+        deviceFleetArn = pDeviceFleetArn_,
+        outputConfig = pOutputConfig_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | A description of the fleet.
+describeDeviceFleetResponse_description :: Lens.Lens' DescribeDeviceFleetResponse (Prelude.Maybe Prelude.Text)
+describeDeviceFleetResponse_description = Lens.lens (\DescribeDeviceFleetResponse' {description} -> description) (\s@DescribeDeviceFleetResponse' {} a -> s {description = a} :: DescribeDeviceFleetResponse)
+
+-- | The Amazon Resource Name (ARN) alias created in Amazon Web Services
+-- Internet of Things (IoT).
+describeDeviceFleetResponse_iotRoleAlias :: Lens.Lens' DescribeDeviceFleetResponse (Prelude.Maybe Prelude.Text)
+describeDeviceFleetResponse_iotRoleAlias = Lens.lens (\DescribeDeviceFleetResponse' {iotRoleAlias} -> iotRoleAlias) (\s@DescribeDeviceFleetResponse' {} a -> s {iotRoleAlias = a} :: DescribeDeviceFleetResponse)
+
+-- | The Amazon Resource Name (ARN) that has access to Amazon Web Services
+-- Internet of Things (IoT).
+describeDeviceFleetResponse_roleArn :: Lens.Lens' DescribeDeviceFleetResponse (Prelude.Maybe Prelude.Text)
+describeDeviceFleetResponse_roleArn = Lens.lens (\DescribeDeviceFleetResponse' {roleArn} -> roleArn) (\s@DescribeDeviceFleetResponse' {} a -> s {roleArn = a} :: DescribeDeviceFleetResponse)
+
+-- | The response's http status code.
+describeDeviceFleetResponse_httpStatus :: Lens.Lens' DescribeDeviceFleetResponse Prelude.Int
+describeDeviceFleetResponse_httpStatus = Lens.lens (\DescribeDeviceFleetResponse' {httpStatus} -> httpStatus) (\s@DescribeDeviceFleetResponse' {} a -> s {httpStatus = a} :: DescribeDeviceFleetResponse)
+
+-- | The name of the fleet.
+describeDeviceFleetResponse_deviceFleetName :: Lens.Lens' DescribeDeviceFleetResponse Prelude.Text
+describeDeviceFleetResponse_deviceFleetName = Lens.lens (\DescribeDeviceFleetResponse' {deviceFleetName} -> deviceFleetName) (\s@DescribeDeviceFleetResponse' {} a -> s {deviceFleetName = a} :: DescribeDeviceFleetResponse)
+
+-- | The The Amazon Resource Name (ARN) of the fleet.
+describeDeviceFleetResponse_deviceFleetArn :: Lens.Lens' DescribeDeviceFleetResponse Prelude.Text
+describeDeviceFleetResponse_deviceFleetArn = Lens.lens (\DescribeDeviceFleetResponse' {deviceFleetArn} -> deviceFleetArn) (\s@DescribeDeviceFleetResponse' {} a -> s {deviceFleetArn = a} :: DescribeDeviceFleetResponse)
+
+-- | The output configuration for storing sampled data.
+describeDeviceFleetResponse_outputConfig :: Lens.Lens' DescribeDeviceFleetResponse EdgeOutputConfig
+describeDeviceFleetResponse_outputConfig = Lens.lens (\DescribeDeviceFleetResponse' {outputConfig} -> outputConfig) (\s@DescribeDeviceFleetResponse' {} a -> s {outputConfig = a} :: DescribeDeviceFleetResponse)
+
+-- | Timestamp of when the device fleet was created.
+describeDeviceFleetResponse_creationTime :: Lens.Lens' DescribeDeviceFleetResponse Prelude.UTCTime
+describeDeviceFleetResponse_creationTime = Lens.lens (\DescribeDeviceFleetResponse' {creationTime} -> creationTime) (\s@DescribeDeviceFleetResponse' {} a -> s {creationTime = a} :: DescribeDeviceFleetResponse) Prelude.. Data._Time
+
+-- | Timestamp of when the device fleet was last updated.
+describeDeviceFleetResponse_lastModifiedTime :: Lens.Lens' DescribeDeviceFleetResponse Prelude.UTCTime
+describeDeviceFleetResponse_lastModifiedTime = Lens.lens (\DescribeDeviceFleetResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeDeviceFleetResponse' {} a -> s {lastModifiedTime = a} :: DescribeDeviceFleetResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeDeviceFleetResponse where
+  rnf DescribeDeviceFleetResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf iotRoleAlias
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf deviceFleetArn
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/DescribeDomain.hs b/gen/Amazonka/SageMaker/DescribeDomain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeDomain.hs
@@ -0,0 +1,456 @@
+{-# 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.DescribeDomain
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The description of the domain.
+module Amazonka.SageMaker.DescribeDomain
+  ( -- * Creating a Request
+    DescribeDomain (..),
+    newDescribeDomain,
+
+    -- * Request Lenses
+    describeDomain_domainId,
+
+    -- * Destructuring the Response
+    DescribeDomainResponse (..),
+    newDescribeDomainResponse,
+
+    -- * Response Lenses
+    describeDomainResponse_appNetworkAccessType,
+    describeDomainResponse_appSecurityGroupManagement,
+    describeDomainResponse_authMode,
+    describeDomainResponse_creationTime,
+    describeDomainResponse_defaultSpaceSettings,
+    describeDomainResponse_defaultUserSettings,
+    describeDomainResponse_domainArn,
+    describeDomainResponse_domainId,
+    describeDomainResponse_domainName,
+    describeDomainResponse_domainSettings,
+    describeDomainResponse_failureReason,
+    describeDomainResponse_homeEfsFileSystemId,
+    describeDomainResponse_homeEfsFileSystemKmsKeyId,
+    describeDomainResponse_kmsKeyId,
+    describeDomainResponse_lastModifiedTime,
+    describeDomainResponse_securityGroupIdForDomainBoundary,
+    describeDomainResponse_singleSignOnManagedApplicationInstanceId,
+    describeDomainResponse_status,
+    describeDomainResponse_subnetIds,
+    describeDomainResponse_url,
+    describeDomainResponse_vpcId,
+    describeDomainResponse_httpStatus,
+  )
+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:/ 'newDescribeDomain' smart constructor.
+data DescribeDomain = DescribeDomain'
+  { -- | The domain ID.
+    domainId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDomain' 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:
+--
+-- 'domainId', 'describeDomain_domainId' - The domain ID.
+newDescribeDomain ::
+  -- | 'domainId'
+  Prelude.Text ->
+  DescribeDomain
+newDescribeDomain pDomainId_ =
+  DescribeDomain' {domainId = pDomainId_}
+
+-- | The domain ID.
+describeDomain_domainId :: Lens.Lens' DescribeDomain Prelude.Text
+describeDomain_domainId = Lens.lens (\DescribeDomain' {domainId} -> domainId) (\s@DescribeDomain' {} a -> s {domainId = a} :: DescribeDomain)
+
+instance Core.AWSRequest DescribeDomain where
+  type
+    AWSResponse DescribeDomain =
+      DescribeDomainResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDomainResponse'
+            Prelude.<$> (x Data..?> "AppNetworkAccessType")
+            Prelude.<*> (x Data..?> "AppSecurityGroupManagement")
+            Prelude.<*> (x Data..?> "AuthMode")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DefaultSpaceSettings")
+            Prelude.<*> (x Data..?> "DefaultUserSettings")
+            Prelude.<*> (x Data..?> "DomainArn")
+            Prelude.<*> (x Data..?> "DomainId")
+            Prelude.<*> (x Data..?> "DomainName")
+            Prelude.<*> (x Data..?> "DomainSettings")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "HomeEfsFileSystemId")
+            Prelude.<*> (x Data..?> "HomeEfsFileSystemKmsKeyId")
+            Prelude.<*> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "SecurityGroupIdForDomainBoundary")
+            Prelude.<*> ( x
+                            Data..?> "SingleSignOnManagedApplicationInstanceId"
+                        )
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "SubnetIds")
+            Prelude.<*> (x Data..?> "Url")
+            Prelude.<*> (x Data..?> "VpcId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDomain where
+  hashWithSalt _salt DescribeDomain' {..} =
+    _salt `Prelude.hashWithSalt` domainId
+
+instance Prelude.NFData DescribeDomain where
+  rnf DescribeDomain' {..} = Prelude.rnf domainId
+
+instance Data.ToHeaders DescribeDomain where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeDomain" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDomain where
+  toJSON DescribeDomain' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("DomainId" Data..= domainId)]
+      )
+
+instance Data.ToPath DescribeDomain where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDomain where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDomainResponse' smart constructor.
+data DescribeDomainResponse = DescribeDomainResponse'
+  { -- | Specifies the VPC used for non-EFS traffic. The default value is
+    -- @PublicInternetOnly@.
+    --
+    -- -   @PublicInternetOnly@ - Non-EFS traffic is through a VPC managed by
+    --     Amazon SageMaker, which allows direct internet access
+    --
+    -- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+    --     subnets
+    appNetworkAccessType :: Prelude.Maybe AppNetworkAccessType,
+    -- | The entity that creates and manages the required security groups for
+    -- inter-app communication in @VPCOnly@ mode. Required when
+    -- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+    -- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+    -- is provided.
+    appSecurityGroupManagement :: Prelude.Maybe AppSecurityGroupManagement,
+    -- | The domain\'s authentication mode.
+    authMode :: Prelude.Maybe AuthMode,
+    -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The default settings used to create a space.
+    defaultSpaceSettings :: Prelude.Maybe DefaultSpaceSettings,
+    -- | Settings which are applied to UserProfiles in this domain if settings
+    -- are not explicitly specified in a given UserProfile.
+    defaultUserSettings :: Prelude.Maybe UserSettings,
+    -- | The domain\'s Amazon Resource Name (ARN).
+    domainArn :: Prelude.Maybe Prelude.Text,
+    -- | The domain ID.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The domain name.
+    domainName :: Prelude.Maybe Prelude.Text,
+    -- | A collection of @Domain@ settings.
+    domainSettings :: Prelude.Maybe DomainSettings,
+    -- | The failure reason.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Elastic File System (EFS) managed by this Domain.
+    homeEfsFileSystemId :: Prelude.Maybe Prelude.Text,
+    -- | Use @KmsKeyId@.
+    homeEfsFileSystemKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services KMS customer managed key used to encrypt the EFS
+    -- volume attached to the domain.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the security group that authorizes traffic between the
+    -- @RSessionGateway@ apps and the @RStudioServerPro@ app.
+    securityGroupIdForDomainBoundary :: Prelude.Maybe Prelude.Text,
+    -- | The IAM Identity Center managed application instance ID.
+    singleSignOnManagedApplicationInstanceId :: Prelude.Maybe Prelude.Text,
+    -- | The status.
+    status :: Prelude.Maybe DomainStatus,
+    -- | The VPC subnets that Studio uses for communication.
+    subnetIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The domain\'s URL.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for
+    -- communication.
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDomainResponse' 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:
+--
+-- 'appNetworkAccessType', 'describeDomainResponse_appNetworkAccessType' - Specifies the VPC used for non-EFS traffic. The default value is
+-- @PublicInternetOnly@.
+--
+-- -   @PublicInternetOnly@ - Non-EFS traffic is through a VPC managed by
+--     Amazon SageMaker, which allows direct internet access
+--
+-- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+--     subnets
+--
+-- 'appSecurityGroupManagement', 'describeDomainResponse_appSecurityGroupManagement' - The entity that creates and manages the required security groups for
+-- inter-app communication in @VPCOnly@ mode. Required when
+-- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+-- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+-- is provided.
+--
+-- 'authMode', 'describeDomainResponse_authMode' - The domain\'s authentication mode.
+--
+-- 'creationTime', 'describeDomainResponse_creationTime' - The creation time.
+--
+-- 'defaultSpaceSettings', 'describeDomainResponse_defaultSpaceSettings' - The default settings used to create a space.
+--
+-- 'defaultUserSettings', 'describeDomainResponse_defaultUserSettings' - Settings which are applied to UserProfiles in this domain if settings
+-- are not explicitly specified in a given UserProfile.
+--
+-- 'domainArn', 'describeDomainResponse_domainArn' - The domain\'s Amazon Resource Name (ARN).
+--
+-- 'domainId', 'describeDomainResponse_domainId' - The domain ID.
+--
+-- 'domainName', 'describeDomainResponse_domainName' - The domain name.
+--
+-- 'domainSettings', 'describeDomainResponse_domainSettings' - A collection of @Domain@ settings.
+--
+-- 'failureReason', 'describeDomainResponse_failureReason' - The failure reason.
+--
+-- 'homeEfsFileSystemId', 'describeDomainResponse_homeEfsFileSystemId' - The ID of the Amazon Elastic File System (EFS) managed by this Domain.
+--
+-- 'homeEfsFileSystemKmsKeyId', 'describeDomainResponse_homeEfsFileSystemKmsKeyId' - Use @KmsKeyId@.
+--
+-- 'kmsKeyId', 'describeDomainResponse_kmsKeyId' - The Amazon Web Services KMS customer managed key used to encrypt the EFS
+-- volume attached to the domain.
+--
+-- 'lastModifiedTime', 'describeDomainResponse_lastModifiedTime' - The last modified time.
+--
+-- 'securityGroupIdForDomainBoundary', 'describeDomainResponse_securityGroupIdForDomainBoundary' - The ID of the security group that authorizes traffic between the
+-- @RSessionGateway@ apps and the @RStudioServerPro@ app.
+--
+-- 'singleSignOnManagedApplicationInstanceId', 'describeDomainResponse_singleSignOnManagedApplicationInstanceId' - The IAM Identity Center managed application instance ID.
+--
+-- 'status', 'describeDomainResponse_status' - The status.
+--
+-- 'subnetIds', 'describeDomainResponse_subnetIds' - The VPC subnets that Studio uses for communication.
+--
+-- 'url', 'describeDomainResponse_url' - The domain\'s URL.
+--
+-- 'vpcId', 'describeDomainResponse_vpcId' - The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for
+-- communication.
+--
+-- 'httpStatus', 'describeDomainResponse_httpStatus' - The response's http status code.
+newDescribeDomainResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDomainResponse
+newDescribeDomainResponse pHttpStatus_ =
+  DescribeDomainResponse'
+    { appNetworkAccessType =
+        Prelude.Nothing,
+      appSecurityGroupManagement = Prelude.Nothing,
+      authMode = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      defaultSpaceSettings = Prelude.Nothing,
+      defaultUserSettings = Prelude.Nothing,
+      domainArn = Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      domainName = Prelude.Nothing,
+      domainSettings = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      homeEfsFileSystemId = Prelude.Nothing,
+      homeEfsFileSystemKmsKeyId = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      securityGroupIdForDomainBoundary = Prelude.Nothing,
+      singleSignOnManagedApplicationInstanceId =
+        Prelude.Nothing,
+      status = Prelude.Nothing,
+      subnetIds = Prelude.Nothing,
+      url = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Specifies the VPC used for non-EFS traffic. The default value is
+-- @PublicInternetOnly@.
+--
+-- -   @PublicInternetOnly@ - Non-EFS traffic is through a VPC managed by
+--     Amazon SageMaker, which allows direct internet access
+--
+-- -   @VpcOnly@ - All Studio traffic is through the specified VPC and
+--     subnets
+describeDomainResponse_appNetworkAccessType :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe AppNetworkAccessType)
+describeDomainResponse_appNetworkAccessType = Lens.lens (\DescribeDomainResponse' {appNetworkAccessType} -> appNetworkAccessType) (\s@DescribeDomainResponse' {} a -> s {appNetworkAccessType = a} :: DescribeDomainResponse)
+
+-- | The entity that creates and manages the required security groups for
+-- inter-app communication in @VPCOnly@ mode. Required when
+-- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+-- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+-- is provided.
+describeDomainResponse_appSecurityGroupManagement :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe AppSecurityGroupManagement)
+describeDomainResponse_appSecurityGroupManagement = Lens.lens (\DescribeDomainResponse' {appSecurityGroupManagement} -> appSecurityGroupManagement) (\s@DescribeDomainResponse' {} a -> s {appSecurityGroupManagement = a} :: DescribeDomainResponse)
+
+-- | The domain\'s authentication mode.
+describeDomainResponse_authMode :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe AuthMode)
+describeDomainResponse_authMode = Lens.lens (\DescribeDomainResponse' {authMode} -> authMode) (\s@DescribeDomainResponse' {} a -> s {authMode = a} :: DescribeDomainResponse)
+
+-- | The creation time.
+describeDomainResponse_creationTime :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.UTCTime)
+describeDomainResponse_creationTime = Lens.lens (\DescribeDomainResponse' {creationTime} -> creationTime) (\s@DescribeDomainResponse' {} a -> s {creationTime = a} :: DescribeDomainResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The default settings used to create a space.
+describeDomainResponse_defaultSpaceSettings :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe DefaultSpaceSettings)
+describeDomainResponse_defaultSpaceSettings = Lens.lens (\DescribeDomainResponse' {defaultSpaceSettings} -> defaultSpaceSettings) (\s@DescribeDomainResponse' {} a -> s {defaultSpaceSettings = a} :: DescribeDomainResponse)
+
+-- | Settings which are applied to UserProfiles in this domain if settings
+-- are not explicitly specified in a given UserProfile.
+describeDomainResponse_defaultUserSettings :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe UserSettings)
+describeDomainResponse_defaultUserSettings = Lens.lens (\DescribeDomainResponse' {defaultUserSettings} -> defaultUserSettings) (\s@DescribeDomainResponse' {} a -> s {defaultUserSettings = a} :: DescribeDomainResponse)
+
+-- | The domain\'s Amazon Resource Name (ARN).
+describeDomainResponse_domainArn :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_domainArn = Lens.lens (\DescribeDomainResponse' {domainArn} -> domainArn) (\s@DescribeDomainResponse' {} a -> s {domainArn = a} :: DescribeDomainResponse)
+
+-- | The domain ID.
+describeDomainResponse_domainId :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_domainId = Lens.lens (\DescribeDomainResponse' {domainId} -> domainId) (\s@DescribeDomainResponse' {} a -> s {domainId = a} :: DescribeDomainResponse)
+
+-- | The domain name.
+describeDomainResponse_domainName :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_domainName = Lens.lens (\DescribeDomainResponse' {domainName} -> domainName) (\s@DescribeDomainResponse' {} a -> s {domainName = a} :: DescribeDomainResponse)
+
+-- | A collection of @Domain@ settings.
+describeDomainResponse_domainSettings :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe DomainSettings)
+describeDomainResponse_domainSettings = Lens.lens (\DescribeDomainResponse' {domainSettings} -> domainSettings) (\s@DescribeDomainResponse' {} a -> s {domainSettings = a} :: DescribeDomainResponse)
+
+-- | The failure reason.
+describeDomainResponse_failureReason :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_failureReason = Lens.lens (\DescribeDomainResponse' {failureReason} -> failureReason) (\s@DescribeDomainResponse' {} a -> s {failureReason = a} :: DescribeDomainResponse)
+
+-- | The ID of the Amazon Elastic File System (EFS) managed by this Domain.
+describeDomainResponse_homeEfsFileSystemId :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_homeEfsFileSystemId = Lens.lens (\DescribeDomainResponse' {homeEfsFileSystemId} -> homeEfsFileSystemId) (\s@DescribeDomainResponse' {} a -> s {homeEfsFileSystemId = a} :: DescribeDomainResponse)
+
+-- | Use @KmsKeyId@.
+describeDomainResponse_homeEfsFileSystemKmsKeyId :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_homeEfsFileSystemKmsKeyId = Lens.lens (\DescribeDomainResponse' {homeEfsFileSystemKmsKeyId} -> homeEfsFileSystemKmsKeyId) (\s@DescribeDomainResponse' {} a -> s {homeEfsFileSystemKmsKeyId = a} :: DescribeDomainResponse)
+
+-- | The Amazon Web Services KMS customer managed key used to encrypt the EFS
+-- volume attached to the domain.
+describeDomainResponse_kmsKeyId :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_kmsKeyId = Lens.lens (\DescribeDomainResponse' {kmsKeyId} -> kmsKeyId) (\s@DescribeDomainResponse' {} a -> s {kmsKeyId = a} :: DescribeDomainResponse)
+
+-- | The last modified time.
+describeDomainResponse_lastModifiedTime :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.UTCTime)
+describeDomainResponse_lastModifiedTime = Lens.lens (\DescribeDomainResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeDomainResponse' {} a -> s {lastModifiedTime = a} :: DescribeDomainResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the security group that authorizes traffic between the
+-- @RSessionGateway@ apps and the @RStudioServerPro@ app.
+describeDomainResponse_securityGroupIdForDomainBoundary :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_securityGroupIdForDomainBoundary = Lens.lens (\DescribeDomainResponse' {securityGroupIdForDomainBoundary} -> securityGroupIdForDomainBoundary) (\s@DescribeDomainResponse' {} a -> s {securityGroupIdForDomainBoundary = a} :: DescribeDomainResponse)
+
+-- | The IAM Identity Center managed application instance ID.
+describeDomainResponse_singleSignOnManagedApplicationInstanceId :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_singleSignOnManagedApplicationInstanceId = Lens.lens (\DescribeDomainResponse' {singleSignOnManagedApplicationInstanceId} -> singleSignOnManagedApplicationInstanceId) (\s@DescribeDomainResponse' {} a -> s {singleSignOnManagedApplicationInstanceId = a} :: DescribeDomainResponse)
+
+-- | The status.
+describeDomainResponse_status :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe DomainStatus)
+describeDomainResponse_status = Lens.lens (\DescribeDomainResponse' {status} -> status) (\s@DescribeDomainResponse' {} a -> s {status = a} :: DescribeDomainResponse)
+
+-- | The VPC subnets that Studio uses for communication.
+describeDomainResponse_subnetIds :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+describeDomainResponse_subnetIds = Lens.lens (\DescribeDomainResponse' {subnetIds} -> subnetIds) (\s@DescribeDomainResponse' {} a -> s {subnetIds = a} :: DescribeDomainResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The domain\'s URL.
+describeDomainResponse_url :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_url = Lens.lens (\DescribeDomainResponse' {url} -> url) (\s@DescribeDomainResponse' {} a -> s {url = a} :: DescribeDomainResponse)
+
+-- | The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for
+-- communication.
+describeDomainResponse_vpcId :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Prelude.Text)
+describeDomainResponse_vpcId = Lens.lens (\DescribeDomainResponse' {vpcId} -> vpcId) (\s@DescribeDomainResponse' {} a -> s {vpcId = a} :: DescribeDomainResponse)
+
+-- | The response's http status code.
+describeDomainResponse_httpStatus :: Lens.Lens' DescribeDomainResponse Prelude.Int
+describeDomainResponse_httpStatus = Lens.lens (\DescribeDomainResponse' {httpStatus} -> httpStatus) (\s@DescribeDomainResponse' {} a -> s {httpStatus = a} :: DescribeDomainResponse)
+
+instance Prelude.NFData DescribeDomainResponse where
+  rnf DescribeDomainResponse' {..} =
+    Prelude.rnf appNetworkAccessType
+      `Prelude.seq` Prelude.rnf appSecurityGroupManagement
+      `Prelude.seq` Prelude.rnf authMode
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf defaultSpaceSettings
+      `Prelude.seq` Prelude.rnf defaultUserSettings
+      `Prelude.seq` Prelude.rnf domainArn
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf domainName
+      `Prelude.seq` Prelude.rnf domainSettings
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf homeEfsFileSystemId
+      `Prelude.seq` Prelude.rnf homeEfsFileSystemKmsKeyId
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf
+        securityGroupIdForDomainBoundary
+      `Prelude.seq` Prelude.rnf
+        singleSignOnManagedApplicationInstanceId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf subnetIds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeEdgeDeploymentPlan.hs b/gen/Amazonka/SageMaker/DescribeEdgeDeploymentPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeEdgeDeploymentPlan.hs
@@ -0,0 +1,346 @@
+{-# 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.DescribeEdgeDeploymentPlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an edge deployment plan with deployment status per stage.
+module Amazonka.SageMaker.DescribeEdgeDeploymentPlan
+  ( -- * Creating a Request
+    DescribeEdgeDeploymentPlan (..),
+    newDescribeEdgeDeploymentPlan,
+
+    -- * Request Lenses
+    describeEdgeDeploymentPlan_maxResults,
+    describeEdgeDeploymentPlan_nextToken,
+    describeEdgeDeploymentPlan_edgeDeploymentPlanName,
+
+    -- * Destructuring the Response
+    DescribeEdgeDeploymentPlanResponse (..),
+    newDescribeEdgeDeploymentPlanResponse,
+
+    -- * Response Lenses
+    describeEdgeDeploymentPlanResponse_creationTime,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentFailed,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentPending,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentSuccess,
+    describeEdgeDeploymentPlanResponse_lastModifiedTime,
+    describeEdgeDeploymentPlanResponse_nextToken,
+    describeEdgeDeploymentPlanResponse_httpStatus,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentPlanArn,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentPlanName,
+    describeEdgeDeploymentPlanResponse_modelConfigs,
+    describeEdgeDeploymentPlanResponse_deviceFleetName,
+    describeEdgeDeploymentPlanResponse_stages,
+  )
+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:/ 'newDescribeEdgeDeploymentPlan' smart constructor.
+data DescribeEdgeDeploymentPlan = DescribeEdgeDeploymentPlan'
+  { -- | The maximum number of results to select (50 by default).
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | If the edge deployment plan has enough stages to require tokening, then
+    -- this is the response from the last list of stages returned.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the deployment plan to describe.
+    edgeDeploymentPlanName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEdgeDeploymentPlan' 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:
+--
+-- 'maxResults', 'describeEdgeDeploymentPlan_maxResults' - The maximum number of results to select (50 by default).
+--
+-- 'nextToken', 'describeEdgeDeploymentPlan_nextToken' - If the edge deployment plan has enough stages to require tokening, then
+-- this is the response from the last list of stages returned.
+--
+-- 'edgeDeploymentPlanName', 'describeEdgeDeploymentPlan_edgeDeploymentPlanName' - The name of the deployment plan to describe.
+newDescribeEdgeDeploymentPlan ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  DescribeEdgeDeploymentPlan
+newDescribeEdgeDeploymentPlan
+  pEdgeDeploymentPlanName_ =
+    DescribeEdgeDeploymentPlan'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        edgeDeploymentPlanName =
+          pEdgeDeploymentPlanName_
+      }
+
+-- | The maximum number of results to select (50 by default).
+describeEdgeDeploymentPlan_maxResults :: Lens.Lens' DescribeEdgeDeploymentPlan (Prelude.Maybe Prelude.Int)
+describeEdgeDeploymentPlan_maxResults = Lens.lens (\DescribeEdgeDeploymentPlan' {maxResults} -> maxResults) (\s@DescribeEdgeDeploymentPlan' {} a -> s {maxResults = a} :: DescribeEdgeDeploymentPlan)
+
+-- | If the edge deployment plan has enough stages to require tokening, then
+-- this is the response from the last list of stages returned.
+describeEdgeDeploymentPlan_nextToken :: Lens.Lens' DescribeEdgeDeploymentPlan (Prelude.Maybe Prelude.Text)
+describeEdgeDeploymentPlan_nextToken = Lens.lens (\DescribeEdgeDeploymentPlan' {nextToken} -> nextToken) (\s@DescribeEdgeDeploymentPlan' {} a -> s {nextToken = a} :: DescribeEdgeDeploymentPlan)
+
+-- | The name of the deployment plan to describe.
+describeEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens.Lens' DescribeEdgeDeploymentPlan Prelude.Text
+describeEdgeDeploymentPlan_edgeDeploymentPlanName = Lens.lens (\DescribeEdgeDeploymentPlan' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@DescribeEdgeDeploymentPlan' {} a -> s {edgeDeploymentPlanName = a} :: DescribeEdgeDeploymentPlan)
+
+instance Core.AWSRequest DescribeEdgeDeploymentPlan where
+  type
+    AWSResponse DescribeEdgeDeploymentPlan =
+      DescribeEdgeDeploymentPlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeEdgeDeploymentPlanResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "EdgeDeploymentFailed")
+            Prelude.<*> (x Data..?> "EdgeDeploymentPending")
+            Prelude.<*> (x Data..?> "EdgeDeploymentSuccess")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EdgeDeploymentPlanArn")
+            Prelude.<*> (x Data..:> "EdgeDeploymentPlanName")
+            Prelude.<*> (x Data..?> "ModelConfigs" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..:> "DeviceFleetName")
+            Prelude.<*> (x Data..?> "Stages" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable DescribeEdgeDeploymentPlan where
+  hashWithSalt _salt DescribeEdgeDeploymentPlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+
+instance Prelude.NFData DescribeEdgeDeploymentPlan where
+  rnf DescribeEdgeDeploymentPlan' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanName
+
+instance Data.ToHeaders DescribeEdgeDeploymentPlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeEdgeDeploymentPlan" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeEdgeDeploymentPlan where
+  toJSON DescribeEdgeDeploymentPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeEdgeDeploymentPlan where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEdgeDeploymentPlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeEdgeDeploymentPlanResponse' smart constructor.
+data DescribeEdgeDeploymentPlanResponse = DescribeEdgeDeploymentPlanResponse'
+  { -- | The time when the edge deployment plan was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The number of edge devices that failed the deployment.
+    edgeDeploymentFailed :: Prelude.Maybe Prelude.Int,
+    -- | The number of edge devices yet to pick up deployment, or in progress.
+    edgeDeploymentPending :: Prelude.Maybe Prelude.Int,
+    -- | The number of edge devices with the successful deployment.
+    edgeDeploymentSuccess :: Prelude.Maybe Prelude.Int,
+    -- | The time when the edge deployment plan was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | Token to use when calling the next set of stages in the edge deployment
+    -- plan.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of edge deployment plan.
+    edgeDeploymentPlanArn :: Prelude.Text,
+    -- | The name of the edge deployment plan.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | List of models associated with the edge deployment plan.
+    modelConfigs :: [EdgeDeploymentModelConfig],
+    -- | The device fleet used for this edge deployment plan.
+    deviceFleetName :: Prelude.Text,
+    -- | List of stages in the edge deployment plan.
+    stages :: [DeploymentStageStatusSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEdgeDeploymentPlanResponse' 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:
+--
+-- 'creationTime', 'describeEdgeDeploymentPlanResponse_creationTime' - The time when the edge deployment plan was created.
+--
+-- 'edgeDeploymentFailed', 'describeEdgeDeploymentPlanResponse_edgeDeploymentFailed' - The number of edge devices that failed the deployment.
+--
+-- 'edgeDeploymentPending', 'describeEdgeDeploymentPlanResponse_edgeDeploymentPending' - The number of edge devices yet to pick up deployment, or in progress.
+--
+-- 'edgeDeploymentSuccess', 'describeEdgeDeploymentPlanResponse_edgeDeploymentSuccess' - The number of edge devices with the successful deployment.
+--
+-- 'lastModifiedTime', 'describeEdgeDeploymentPlanResponse_lastModifiedTime' - The time when the edge deployment plan was last updated.
+--
+-- 'nextToken', 'describeEdgeDeploymentPlanResponse_nextToken' - Token to use when calling the next set of stages in the edge deployment
+-- plan.
+--
+-- 'httpStatus', 'describeEdgeDeploymentPlanResponse_httpStatus' - The response's http status code.
+--
+-- 'edgeDeploymentPlanArn', 'describeEdgeDeploymentPlanResponse_edgeDeploymentPlanArn' - The ARN of edge deployment plan.
+--
+-- 'edgeDeploymentPlanName', 'describeEdgeDeploymentPlanResponse_edgeDeploymentPlanName' - The name of the edge deployment plan.
+--
+-- 'modelConfigs', 'describeEdgeDeploymentPlanResponse_modelConfigs' - List of models associated with the edge deployment plan.
+--
+-- 'deviceFleetName', 'describeEdgeDeploymentPlanResponse_deviceFleetName' - The device fleet used for this edge deployment plan.
+--
+-- 'stages', 'describeEdgeDeploymentPlanResponse_stages' - List of stages in the edge deployment plan.
+newDescribeEdgeDeploymentPlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'edgeDeploymentPlanArn'
+  Prelude.Text ->
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  DescribeEdgeDeploymentPlanResponse
+newDescribeEdgeDeploymentPlanResponse
+  pHttpStatus_
+  pEdgeDeploymentPlanArn_
+  pEdgeDeploymentPlanName_
+  pDeviceFleetName_ =
+    DescribeEdgeDeploymentPlanResponse'
+      { creationTime =
+          Prelude.Nothing,
+        edgeDeploymentFailed = Prelude.Nothing,
+        edgeDeploymentPending = Prelude.Nothing,
+        edgeDeploymentSuccess = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        edgeDeploymentPlanArn =
+          pEdgeDeploymentPlanArn_,
+        edgeDeploymentPlanName =
+          pEdgeDeploymentPlanName_,
+        modelConfigs = Prelude.mempty,
+        deviceFleetName = pDeviceFleetName_,
+        stages = Prelude.mempty
+      }
+
+-- | The time when the edge deployment plan was created.
+describeEdgeDeploymentPlanResponse_creationTime :: Lens.Lens' DescribeEdgeDeploymentPlanResponse (Prelude.Maybe Prelude.UTCTime)
+describeEdgeDeploymentPlanResponse_creationTime = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {creationTime} -> creationTime) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {creationTime = a} :: DescribeEdgeDeploymentPlanResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The number of edge devices that failed the deployment.
+describeEdgeDeploymentPlanResponse_edgeDeploymentFailed :: Lens.Lens' DescribeEdgeDeploymentPlanResponse (Prelude.Maybe Prelude.Int)
+describeEdgeDeploymentPlanResponse_edgeDeploymentFailed = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {edgeDeploymentFailed} -> edgeDeploymentFailed) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {edgeDeploymentFailed = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | The number of edge devices yet to pick up deployment, or in progress.
+describeEdgeDeploymentPlanResponse_edgeDeploymentPending :: Lens.Lens' DescribeEdgeDeploymentPlanResponse (Prelude.Maybe Prelude.Int)
+describeEdgeDeploymentPlanResponse_edgeDeploymentPending = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {edgeDeploymentPending} -> edgeDeploymentPending) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {edgeDeploymentPending = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | The number of edge devices with the successful deployment.
+describeEdgeDeploymentPlanResponse_edgeDeploymentSuccess :: Lens.Lens' DescribeEdgeDeploymentPlanResponse (Prelude.Maybe Prelude.Int)
+describeEdgeDeploymentPlanResponse_edgeDeploymentSuccess = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {edgeDeploymentSuccess} -> edgeDeploymentSuccess) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {edgeDeploymentSuccess = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | The time when the edge deployment plan was last updated.
+describeEdgeDeploymentPlanResponse_lastModifiedTime :: Lens.Lens' DescribeEdgeDeploymentPlanResponse (Prelude.Maybe Prelude.UTCTime)
+describeEdgeDeploymentPlanResponse_lastModifiedTime = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {lastModifiedTime = a} :: DescribeEdgeDeploymentPlanResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Token to use when calling the next set of stages in the edge deployment
+-- plan.
+describeEdgeDeploymentPlanResponse_nextToken :: Lens.Lens' DescribeEdgeDeploymentPlanResponse (Prelude.Maybe Prelude.Text)
+describeEdgeDeploymentPlanResponse_nextToken = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {nextToken} -> nextToken) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {nextToken = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | The response's http status code.
+describeEdgeDeploymentPlanResponse_httpStatus :: Lens.Lens' DescribeEdgeDeploymentPlanResponse Prelude.Int
+describeEdgeDeploymentPlanResponse_httpStatus = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {httpStatus} -> httpStatus) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {httpStatus = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | The ARN of edge deployment plan.
+describeEdgeDeploymentPlanResponse_edgeDeploymentPlanArn :: Lens.Lens' DescribeEdgeDeploymentPlanResponse Prelude.Text
+describeEdgeDeploymentPlanResponse_edgeDeploymentPlanArn = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {edgeDeploymentPlanArn} -> edgeDeploymentPlanArn) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {edgeDeploymentPlanArn = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | The name of the edge deployment plan.
+describeEdgeDeploymentPlanResponse_edgeDeploymentPlanName :: Lens.Lens' DescribeEdgeDeploymentPlanResponse Prelude.Text
+describeEdgeDeploymentPlanResponse_edgeDeploymentPlanName = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {edgeDeploymentPlanName = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | List of models associated with the edge deployment plan.
+describeEdgeDeploymentPlanResponse_modelConfigs :: Lens.Lens' DescribeEdgeDeploymentPlanResponse [EdgeDeploymentModelConfig]
+describeEdgeDeploymentPlanResponse_modelConfigs = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {modelConfigs} -> modelConfigs) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {modelConfigs = a} :: DescribeEdgeDeploymentPlanResponse) Prelude.. Lens.coerced
+
+-- | The device fleet used for this edge deployment plan.
+describeEdgeDeploymentPlanResponse_deviceFleetName :: Lens.Lens' DescribeEdgeDeploymentPlanResponse Prelude.Text
+describeEdgeDeploymentPlanResponse_deviceFleetName = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {deviceFleetName} -> deviceFleetName) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {deviceFleetName = a} :: DescribeEdgeDeploymentPlanResponse)
+
+-- | List of stages in the edge deployment plan.
+describeEdgeDeploymentPlanResponse_stages :: Lens.Lens' DescribeEdgeDeploymentPlanResponse [DeploymentStageStatusSummary]
+describeEdgeDeploymentPlanResponse_stages = Lens.lens (\DescribeEdgeDeploymentPlanResponse' {stages} -> stages) (\s@DescribeEdgeDeploymentPlanResponse' {} a -> s {stages = a} :: DescribeEdgeDeploymentPlanResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    DescribeEdgeDeploymentPlanResponse
+  where
+  rnf DescribeEdgeDeploymentPlanResponse' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf edgeDeploymentFailed
+      `Prelude.seq` Prelude.rnf edgeDeploymentPending
+      `Prelude.seq` Prelude.rnf edgeDeploymentSuccess
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanArn
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf modelConfigs
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf stages
diff --git a/gen/Amazonka/SageMaker/DescribeEdgePackagingJob.hs b/gen/Amazonka/SageMaker/DescribeEdgePackagingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeEdgePackagingJob.hs
@@ -0,0 +1,370 @@
+{-# 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.DescribeEdgePackagingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A description of edge packaging jobs.
+module Amazonka.SageMaker.DescribeEdgePackagingJob
+  ( -- * Creating a Request
+    DescribeEdgePackagingJob (..),
+    newDescribeEdgePackagingJob,
+
+    -- * Request Lenses
+    describeEdgePackagingJob_edgePackagingJobName,
+
+    -- * Destructuring the Response
+    DescribeEdgePackagingJobResponse (..),
+    newDescribeEdgePackagingJobResponse,
+
+    -- * Response Lenses
+    describeEdgePackagingJobResponse_compilationJobName,
+    describeEdgePackagingJobResponse_creationTime,
+    describeEdgePackagingJobResponse_edgePackagingJobStatusMessage,
+    describeEdgePackagingJobResponse_lastModifiedTime,
+    describeEdgePackagingJobResponse_modelArtifact,
+    describeEdgePackagingJobResponse_modelName,
+    describeEdgePackagingJobResponse_modelSignature,
+    describeEdgePackagingJobResponse_modelVersion,
+    describeEdgePackagingJobResponse_outputConfig,
+    describeEdgePackagingJobResponse_presetDeploymentOutput,
+    describeEdgePackagingJobResponse_resourceKey,
+    describeEdgePackagingJobResponse_roleArn,
+    describeEdgePackagingJobResponse_httpStatus,
+    describeEdgePackagingJobResponse_edgePackagingJobArn,
+    describeEdgePackagingJobResponse_edgePackagingJobName,
+    describeEdgePackagingJobResponse_edgePackagingJobStatus,
+  )
+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:/ 'newDescribeEdgePackagingJob' smart constructor.
+data DescribeEdgePackagingJob = DescribeEdgePackagingJob'
+  { -- | The name of the edge packaging job.
+    edgePackagingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEdgePackagingJob' 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:
+--
+-- 'edgePackagingJobName', 'describeEdgePackagingJob_edgePackagingJobName' - The name of the edge packaging job.
+newDescribeEdgePackagingJob ::
+  -- | 'edgePackagingJobName'
+  Prelude.Text ->
+  DescribeEdgePackagingJob
+newDescribeEdgePackagingJob pEdgePackagingJobName_ =
+  DescribeEdgePackagingJob'
+    { edgePackagingJobName =
+        pEdgePackagingJobName_
+    }
+
+-- | The name of the edge packaging job.
+describeEdgePackagingJob_edgePackagingJobName :: Lens.Lens' DescribeEdgePackagingJob Prelude.Text
+describeEdgePackagingJob_edgePackagingJobName = Lens.lens (\DescribeEdgePackagingJob' {edgePackagingJobName} -> edgePackagingJobName) (\s@DescribeEdgePackagingJob' {} a -> s {edgePackagingJobName = a} :: DescribeEdgePackagingJob)
+
+instance Core.AWSRequest DescribeEdgePackagingJob where
+  type
+    AWSResponse DescribeEdgePackagingJob =
+      DescribeEdgePackagingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeEdgePackagingJobResponse'
+            Prelude.<$> (x Data..?> "CompilationJobName")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "EdgePackagingJobStatusMessage")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "ModelArtifact")
+            Prelude.<*> (x Data..?> "ModelName")
+            Prelude.<*> (x Data..?> "ModelSignature")
+            Prelude.<*> (x Data..?> "ModelVersion")
+            Prelude.<*> (x Data..?> "OutputConfig")
+            Prelude.<*> (x Data..?> "PresetDeploymentOutput")
+            Prelude.<*> (x Data..?> "ResourceKey")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EdgePackagingJobArn")
+            Prelude.<*> (x Data..:> "EdgePackagingJobName")
+            Prelude.<*> (x Data..:> "EdgePackagingJobStatus")
+      )
+
+instance Prelude.Hashable DescribeEdgePackagingJob where
+  hashWithSalt _salt DescribeEdgePackagingJob' {..} =
+    _salt `Prelude.hashWithSalt` edgePackagingJobName
+
+instance Prelude.NFData DescribeEdgePackagingJob where
+  rnf DescribeEdgePackagingJob' {..} =
+    Prelude.rnf edgePackagingJobName
+
+instance Data.ToHeaders DescribeEdgePackagingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeEdgePackagingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeEdgePackagingJob where
+  toJSON DescribeEdgePackagingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgePackagingJobName"
+                  Data..= edgePackagingJobName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeEdgePackagingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEdgePackagingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeEdgePackagingJobResponse' smart constructor.
+data DescribeEdgePackagingJobResponse = DescribeEdgePackagingJobResponse'
+  { -- | The name of the SageMaker Neo compilation job that is used to locate
+    -- model artifacts that are being packaged.
+    compilationJobName :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp of when the packaging job was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | Returns a message describing the job status and error messages.
+    edgePackagingJobStatusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp of when the job was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Simple Storage (S3) URI where model artifacts ares stored.
+    modelArtifact :: Prelude.Maybe Prelude.Text,
+    -- | The name of the model.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | The signature document of files in the model artifact.
+    modelSignature :: Prelude.Maybe Prelude.Text,
+    -- | The version of the model.
+    modelVersion :: Prelude.Maybe Prelude.Text,
+    -- | The output configuration for the edge packaging job.
+    outputConfig :: Prelude.Maybe EdgeOutputConfig,
+    -- | The output of a SageMaker Edge Manager deployable resource.
+    presetDeploymentOutput :: Prelude.Maybe EdgePresetDeploymentOutput,
+    -- | The Amazon Web Services KMS key to use when encrypting the EBS volume
+    -- the job run on.
+    resourceKey :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+    -- SageMaker to download and upload the model, and to contact Neo.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the edge packaging job.
+    edgePackagingJobArn :: Prelude.Text,
+    -- | The name of the edge packaging job.
+    edgePackagingJobName :: Prelude.Text,
+    -- | The current status of the packaging job.
+    edgePackagingJobStatus :: EdgePackagingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEdgePackagingJobResponse' 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:
+--
+-- 'compilationJobName', 'describeEdgePackagingJobResponse_compilationJobName' - The name of the SageMaker Neo compilation job that is used to locate
+-- model artifacts that are being packaged.
+--
+-- 'creationTime', 'describeEdgePackagingJobResponse_creationTime' - The timestamp of when the packaging job was created.
+--
+-- 'edgePackagingJobStatusMessage', 'describeEdgePackagingJobResponse_edgePackagingJobStatusMessage' - Returns a message describing the job status and error messages.
+--
+-- 'lastModifiedTime', 'describeEdgePackagingJobResponse_lastModifiedTime' - The timestamp of when the job was last updated.
+--
+-- 'modelArtifact', 'describeEdgePackagingJobResponse_modelArtifact' - The Amazon Simple Storage (S3) URI where model artifacts ares stored.
+--
+-- 'modelName', 'describeEdgePackagingJobResponse_modelName' - The name of the model.
+--
+-- 'modelSignature', 'describeEdgePackagingJobResponse_modelSignature' - The signature document of files in the model artifact.
+--
+-- 'modelVersion', 'describeEdgePackagingJobResponse_modelVersion' - The version of the model.
+--
+-- 'outputConfig', 'describeEdgePackagingJobResponse_outputConfig' - The output configuration for the edge packaging job.
+--
+-- 'presetDeploymentOutput', 'describeEdgePackagingJobResponse_presetDeploymentOutput' - The output of a SageMaker Edge Manager deployable resource.
+--
+-- 'resourceKey', 'describeEdgePackagingJobResponse_resourceKey' - The Amazon Web Services KMS key to use when encrypting the EBS volume
+-- the job run on.
+--
+-- 'roleArn', 'describeEdgePackagingJobResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to download and upload the model, and to contact Neo.
+--
+-- 'httpStatus', 'describeEdgePackagingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'edgePackagingJobArn', 'describeEdgePackagingJobResponse_edgePackagingJobArn' - The Amazon Resource Name (ARN) of the edge packaging job.
+--
+-- 'edgePackagingJobName', 'describeEdgePackagingJobResponse_edgePackagingJobName' - The name of the edge packaging job.
+--
+-- 'edgePackagingJobStatus', 'describeEdgePackagingJobResponse_edgePackagingJobStatus' - The current status of the packaging job.
+newDescribeEdgePackagingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'edgePackagingJobArn'
+  Prelude.Text ->
+  -- | 'edgePackagingJobName'
+  Prelude.Text ->
+  -- | 'edgePackagingJobStatus'
+  EdgePackagingJobStatus ->
+  DescribeEdgePackagingJobResponse
+newDescribeEdgePackagingJobResponse
+  pHttpStatus_
+  pEdgePackagingJobArn_
+  pEdgePackagingJobName_
+  pEdgePackagingJobStatus_ =
+    DescribeEdgePackagingJobResponse'
+      { compilationJobName =
+          Prelude.Nothing,
+        creationTime = Prelude.Nothing,
+        edgePackagingJobStatusMessage =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        modelArtifact = Prelude.Nothing,
+        modelName = Prelude.Nothing,
+        modelSignature = Prelude.Nothing,
+        modelVersion = Prelude.Nothing,
+        outputConfig = Prelude.Nothing,
+        presetDeploymentOutput = Prelude.Nothing,
+        resourceKey = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        edgePackagingJobArn =
+          pEdgePackagingJobArn_,
+        edgePackagingJobName =
+          pEdgePackagingJobName_,
+        edgePackagingJobStatus =
+          pEdgePackagingJobStatus_
+      }
+
+-- | The name of the SageMaker Neo compilation job that is used to locate
+-- model artifacts that are being packaged.
+describeEdgePackagingJobResponse_compilationJobName :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_compilationJobName = Lens.lens (\DescribeEdgePackagingJobResponse' {compilationJobName} -> compilationJobName) (\s@DescribeEdgePackagingJobResponse' {} a -> s {compilationJobName = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The timestamp of when the packaging job was created.
+describeEdgePackagingJobResponse_creationTime :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeEdgePackagingJobResponse_creationTime = Lens.lens (\DescribeEdgePackagingJobResponse' {creationTime} -> creationTime) (\s@DescribeEdgePackagingJobResponse' {} a -> s {creationTime = a} :: DescribeEdgePackagingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Returns a message describing the job status and error messages.
+describeEdgePackagingJobResponse_edgePackagingJobStatusMessage :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_edgePackagingJobStatusMessage = Lens.lens (\DescribeEdgePackagingJobResponse' {edgePackagingJobStatusMessage} -> edgePackagingJobStatusMessage) (\s@DescribeEdgePackagingJobResponse' {} a -> s {edgePackagingJobStatusMessage = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The timestamp of when the job was last updated.
+describeEdgePackagingJobResponse_lastModifiedTime :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeEdgePackagingJobResponse_lastModifiedTime = Lens.lens (\DescribeEdgePackagingJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeEdgePackagingJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeEdgePackagingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Simple Storage (S3) URI where model artifacts ares stored.
+describeEdgePackagingJobResponse_modelArtifact :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_modelArtifact = Lens.lens (\DescribeEdgePackagingJobResponse' {modelArtifact} -> modelArtifact) (\s@DescribeEdgePackagingJobResponse' {} a -> s {modelArtifact = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The name of the model.
+describeEdgePackagingJobResponse_modelName :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_modelName = Lens.lens (\DescribeEdgePackagingJobResponse' {modelName} -> modelName) (\s@DescribeEdgePackagingJobResponse' {} a -> s {modelName = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The signature document of files in the model artifact.
+describeEdgePackagingJobResponse_modelSignature :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_modelSignature = Lens.lens (\DescribeEdgePackagingJobResponse' {modelSignature} -> modelSignature) (\s@DescribeEdgePackagingJobResponse' {} a -> s {modelSignature = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The version of the model.
+describeEdgePackagingJobResponse_modelVersion :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_modelVersion = Lens.lens (\DescribeEdgePackagingJobResponse' {modelVersion} -> modelVersion) (\s@DescribeEdgePackagingJobResponse' {} a -> s {modelVersion = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The output configuration for the edge packaging job.
+describeEdgePackagingJobResponse_outputConfig :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe EdgeOutputConfig)
+describeEdgePackagingJobResponse_outputConfig = Lens.lens (\DescribeEdgePackagingJobResponse' {outputConfig} -> outputConfig) (\s@DescribeEdgePackagingJobResponse' {} a -> s {outputConfig = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The output of a SageMaker Edge Manager deployable resource.
+describeEdgePackagingJobResponse_presetDeploymentOutput :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe EdgePresetDeploymentOutput)
+describeEdgePackagingJobResponse_presetDeploymentOutput = Lens.lens (\DescribeEdgePackagingJobResponse' {presetDeploymentOutput} -> presetDeploymentOutput) (\s@DescribeEdgePackagingJobResponse' {} a -> s {presetDeploymentOutput = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The Amazon Web Services KMS key to use when encrypting the EBS volume
+-- the job run on.
+describeEdgePackagingJobResponse_resourceKey :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_resourceKey = Lens.lens (\DescribeEdgePackagingJobResponse' {resourceKey} -> resourceKey) (\s@DescribeEdgePackagingJobResponse' {} a -> s {resourceKey = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to download and upload the model, and to contact Neo.
+describeEdgePackagingJobResponse_roleArn :: Lens.Lens' DescribeEdgePackagingJobResponse (Prelude.Maybe Prelude.Text)
+describeEdgePackagingJobResponse_roleArn = Lens.lens (\DescribeEdgePackagingJobResponse' {roleArn} -> roleArn) (\s@DescribeEdgePackagingJobResponse' {} a -> s {roleArn = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The response's http status code.
+describeEdgePackagingJobResponse_httpStatus :: Lens.Lens' DescribeEdgePackagingJobResponse Prelude.Int
+describeEdgePackagingJobResponse_httpStatus = Lens.lens (\DescribeEdgePackagingJobResponse' {httpStatus} -> httpStatus) (\s@DescribeEdgePackagingJobResponse' {} a -> s {httpStatus = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the edge packaging job.
+describeEdgePackagingJobResponse_edgePackagingJobArn :: Lens.Lens' DescribeEdgePackagingJobResponse Prelude.Text
+describeEdgePackagingJobResponse_edgePackagingJobArn = Lens.lens (\DescribeEdgePackagingJobResponse' {edgePackagingJobArn} -> edgePackagingJobArn) (\s@DescribeEdgePackagingJobResponse' {} a -> s {edgePackagingJobArn = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The name of the edge packaging job.
+describeEdgePackagingJobResponse_edgePackagingJobName :: Lens.Lens' DescribeEdgePackagingJobResponse Prelude.Text
+describeEdgePackagingJobResponse_edgePackagingJobName = Lens.lens (\DescribeEdgePackagingJobResponse' {edgePackagingJobName} -> edgePackagingJobName) (\s@DescribeEdgePackagingJobResponse' {} a -> s {edgePackagingJobName = a} :: DescribeEdgePackagingJobResponse)
+
+-- | The current status of the packaging job.
+describeEdgePackagingJobResponse_edgePackagingJobStatus :: Lens.Lens' DescribeEdgePackagingJobResponse EdgePackagingJobStatus
+describeEdgePackagingJobResponse_edgePackagingJobStatus = Lens.lens (\DescribeEdgePackagingJobResponse' {edgePackagingJobStatus} -> edgePackagingJobStatus) (\s@DescribeEdgePackagingJobResponse' {} a -> s {edgePackagingJobStatus = a} :: DescribeEdgePackagingJobResponse)
+
+instance
+  Prelude.NFData
+    DescribeEdgePackagingJobResponse
+  where
+  rnf DescribeEdgePackagingJobResponse' {..} =
+    Prelude.rnf compilationJobName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf edgePackagingJobStatusMessage
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelArtifact
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelSignature
+      `Prelude.seq` Prelude.rnf modelVersion
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf presetDeploymentOutput
+      `Prelude.seq` Prelude.rnf resourceKey
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf edgePackagingJobArn
+      `Prelude.seq` Prelude.rnf edgePackagingJobName
+      `Prelude.seq` Prelude.rnf edgePackagingJobStatus
diff --git a/gen/Amazonka/SageMaker/DescribeEndpoint.hs b/gen/Amazonka/SageMaker/DescribeEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeEndpoint.hs
@@ -0,0 +1,455 @@
+{-# 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.DescribeEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the description of an endpoint.
+module Amazonka.SageMaker.DescribeEndpoint
+  ( -- * Creating a Request
+    DescribeEndpoint (..),
+    newDescribeEndpoint,
+
+    -- * Request Lenses
+    describeEndpoint_endpointName,
+
+    -- * Destructuring the Response
+    DescribeEndpointResponse (..),
+    newDescribeEndpointResponse,
+
+    -- * Response Lenses
+    describeEndpointResponse_asyncInferenceConfig,
+    describeEndpointResponse_dataCaptureConfig,
+    describeEndpointResponse_explainerConfig,
+    describeEndpointResponse_failureReason,
+    describeEndpointResponse_lastDeploymentConfig,
+    describeEndpointResponse_pendingDeploymentSummary,
+    describeEndpointResponse_productionVariants,
+    describeEndpointResponse_shadowProductionVariants,
+    describeEndpointResponse_httpStatus,
+    describeEndpointResponse_endpointName,
+    describeEndpointResponse_endpointArn,
+    describeEndpointResponse_endpointConfigName,
+    describeEndpointResponse_endpointStatus,
+    describeEndpointResponse_creationTime,
+    describeEndpointResponse_lastModifiedTime,
+  )
+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:/ 'newDescribeEndpoint' smart constructor.
+data DescribeEndpoint = DescribeEndpoint'
+  { -- | The name of the endpoint.
+    endpointName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEndpoint' 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:
+--
+-- 'endpointName', 'describeEndpoint_endpointName' - The name of the endpoint.
+newDescribeEndpoint ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  DescribeEndpoint
+newDescribeEndpoint pEndpointName_ =
+  DescribeEndpoint' {endpointName = pEndpointName_}
+
+-- | The name of the endpoint.
+describeEndpoint_endpointName :: Lens.Lens' DescribeEndpoint Prelude.Text
+describeEndpoint_endpointName = Lens.lens (\DescribeEndpoint' {endpointName} -> endpointName) (\s@DescribeEndpoint' {} a -> s {endpointName = a} :: DescribeEndpoint)
+
+instance Core.AWSRequest DescribeEndpoint where
+  type
+    AWSResponse DescribeEndpoint =
+      DescribeEndpointResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeEndpointResponse'
+            Prelude.<$> (x Data..?> "AsyncInferenceConfig")
+            Prelude.<*> (x Data..?> "DataCaptureConfig")
+            Prelude.<*> (x Data..?> "ExplainerConfig")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LastDeploymentConfig")
+            Prelude.<*> (x Data..?> "PendingDeploymentSummary")
+            Prelude.<*> (x Data..?> "ProductionVariants")
+            Prelude.<*> (x Data..?> "ShadowProductionVariants")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EndpointName")
+            Prelude.<*> (x Data..:> "EndpointArn")
+            Prelude.<*> (x Data..:> "EndpointConfigName")
+            Prelude.<*> (x Data..:> "EndpointStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+      )
+
+instance Prelude.Hashable DescribeEndpoint where
+  hashWithSalt _salt DescribeEndpoint' {..} =
+    _salt `Prelude.hashWithSalt` endpointName
+
+instance Prelude.NFData DescribeEndpoint where
+  rnf DescribeEndpoint' {..} = Prelude.rnf endpointName
+
+instance Data.ToHeaders DescribeEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeEndpoint" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeEndpoint where
+  toJSON DescribeEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("EndpointName" Data..= endpointName)]
+      )
+
+instance Data.ToPath DescribeEndpoint where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeEndpointResponse' smart constructor.
+data DescribeEndpointResponse = DescribeEndpointResponse'
+  { -- | Returns the description of an endpoint configuration created using the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html CreateEndpointConfig>
+    -- API.
+    asyncInferenceConfig :: Prelude.Maybe AsyncInferenceConfig,
+    dataCaptureConfig :: Prelude.Maybe DataCaptureConfigSummary,
+    -- | The configuration parameters for an explainer.
+    explainerConfig :: Prelude.Maybe ExplainerConfig,
+    -- | If the status of the endpoint is @Failed@, the reason why it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The most recent deployment configuration for the endpoint.
+    lastDeploymentConfig :: Prelude.Maybe DeploymentConfig,
+    -- | Returns the summary of an in-progress deployment. This field is only
+    -- returned when the endpoint is creating or updating with a new endpoint
+    -- configuration.
+    pendingDeploymentSummary :: Prelude.Maybe PendingDeploymentSummary,
+    -- | An array of ProductionVariantSummary objects, one for each model hosted
+    -- behind this endpoint.
+    productionVariants :: Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary),
+    -- | An array of ProductionVariantSummary objects, one for each model that
+    -- you want to host at this endpoint in shadow mode with production traffic
+    -- replicated from the model specified on @ProductionVariants@.
+    shadowProductionVariants :: Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Name of the endpoint.
+    endpointName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the endpoint.
+    endpointArn :: Prelude.Text,
+    -- | The name of the endpoint configuration associated with this endpoint.
+    endpointConfigName :: Prelude.Text,
+    -- | The status of the endpoint.
+    --
+    -- -   @OutOfService@: Endpoint is not available to take incoming requests.
+    --
+    -- -   @Creating@: CreateEndpoint is executing.
+    --
+    -- -   @Updating@: UpdateEndpoint or UpdateEndpointWeightsAndCapacities is
+    --     executing.
+    --
+    -- -   @SystemUpdating@: Endpoint is undergoing maintenance and cannot be
+    --     updated or deleted or re-scaled until it has completed. This
+    --     maintenance operation does not change any customer-specified values
+    --     such as VPC config, KMS encryption, model, instance type, or
+    --     instance count.
+    --
+    -- -   @RollingBack@: Endpoint fails to scale up or down or change its
+    --     variant weight and is in the process of rolling back to its previous
+    --     configuration. Once the rollback completes, endpoint returns to an
+    --     @InService@ status. This transitional status only applies to an
+    --     endpoint that has autoscaling enabled and is undergoing variant
+    --     weight or capacity changes as part of an
+    --     UpdateEndpointWeightsAndCapacities call or when the
+    --     UpdateEndpointWeightsAndCapacities operation is called explicitly.
+    --
+    -- -   @InService@: Endpoint is available to process incoming requests.
+    --
+    -- -   @Deleting@: DeleteEndpoint is executing.
+    --
+    -- -   @Failed@: Endpoint could not be created, updated, or re-scaled. Use
+    --     DescribeEndpointOutput$FailureReason for information about the
+    --     failure. DeleteEndpoint is the only operation that can be performed
+    --     on a failed endpoint.
+    endpointStatus :: EndpointStatus,
+    -- | A timestamp that shows when the endpoint was created.
+    creationTime :: Data.POSIX,
+    -- | A timestamp that shows when the endpoint was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEndpointResponse' 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:
+--
+-- 'asyncInferenceConfig', 'describeEndpointResponse_asyncInferenceConfig' - Returns the description of an endpoint configuration created using the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html CreateEndpointConfig>
+-- API.
+--
+-- 'dataCaptureConfig', 'describeEndpointResponse_dataCaptureConfig' - Undocumented member.
+--
+-- 'explainerConfig', 'describeEndpointResponse_explainerConfig' - The configuration parameters for an explainer.
+--
+-- 'failureReason', 'describeEndpointResponse_failureReason' - If the status of the endpoint is @Failed@, the reason why it failed.
+--
+-- 'lastDeploymentConfig', 'describeEndpointResponse_lastDeploymentConfig' - The most recent deployment configuration for the endpoint.
+--
+-- 'pendingDeploymentSummary', 'describeEndpointResponse_pendingDeploymentSummary' - Returns the summary of an in-progress deployment. This field is only
+-- returned when the endpoint is creating or updating with a new endpoint
+-- configuration.
+--
+-- 'productionVariants', 'describeEndpointResponse_productionVariants' - An array of ProductionVariantSummary objects, one for each model hosted
+-- behind this endpoint.
+--
+-- 'shadowProductionVariants', 'describeEndpointResponse_shadowProductionVariants' - An array of ProductionVariantSummary objects, one for each model that
+-- you want to host at this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@.
+--
+-- 'httpStatus', 'describeEndpointResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointName', 'describeEndpointResponse_endpointName' - Name of the endpoint.
+--
+-- 'endpointArn', 'describeEndpointResponse_endpointArn' - The Amazon Resource Name (ARN) of the endpoint.
+--
+-- 'endpointConfigName', 'describeEndpointResponse_endpointConfigName' - The name of the endpoint configuration associated with this endpoint.
+--
+-- 'endpointStatus', 'describeEndpointResponse_endpointStatus' - The status of the endpoint.
+--
+-- -   @OutOfService@: Endpoint is not available to take incoming requests.
+--
+-- -   @Creating@: CreateEndpoint is executing.
+--
+-- -   @Updating@: UpdateEndpoint or UpdateEndpointWeightsAndCapacities is
+--     executing.
+--
+-- -   @SystemUpdating@: Endpoint is undergoing maintenance and cannot be
+--     updated or deleted or re-scaled until it has completed. This
+--     maintenance operation does not change any customer-specified values
+--     such as VPC config, KMS encryption, model, instance type, or
+--     instance count.
+--
+-- -   @RollingBack@: Endpoint fails to scale up or down or change its
+--     variant weight and is in the process of rolling back to its previous
+--     configuration. Once the rollback completes, endpoint returns to an
+--     @InService@ status. This transitional status only applies to an
+--     endpoint that has autoscaling enabled and is undergoing variant
+--     weight or capacity changes as part of an
+--     UpdateEndpointWeightsAndCapacities call or when the
+--     UpdateEndpointWeightsAndCapacities operation is called explicitly.
+--
+-- -   @InService@: Endpoint is available to process incoming requests.
+--
+-- -   @Deleting@: DeleteEndpoint is executing.
+--
+-- -   @Failed@: Endpoint could not be created, updated, or re-scaled. Use
+--     DescribeEndpointOutput$FailureReason for information about the
+--     failure. DeleteEndpoint is the only operation that can be performed
+--     on a failed endpoint.
+--
+-- 'creationTime', 'describeEndpointResponse_creationTime' - A timestamp that shows when the endpoint was created.
+--
+-- 'lastModifiedTime', 'describeEndpointResponse_lastModifiedTime' - A timestamp that shows when the endpoint was last modified.
+newDescribeEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  -- | 'endpointStatus'
+  EndpointStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  DescribeEndpointResponse
+newDescribeEndpointResponse
+  pHttpStatus_
+  pEndpointName_
+  pEndpointArn_
+  pEndpointConfigName_
+  pEndpointStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    DescribeEndpointResponse'
+      { asyncInferenceConfig =
+          Prelude.Nothing,
+        dataCaptureConfig = Prelude.Nothing,
+        explainerConfig = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        lastDeploymentConfig = Prelude.Nothing,
+        pendingDeploymentSummary = Prelude.Nothing,
+        productionVariants = Prelude.Nothing,
+        shadowProductionVariants = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        endpointName = pEndpointName_,
+        endpointArn = pEndpointArn_,
+        endpointConfigName = pEndpointConfigName_,
+        endpointStatus = pEndpointStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | Returns the description of an endpoint configuration created using the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html CreateEndpointConfig>
+-- API.
+describeEndpointResponse_asyncInferenceConfig :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe AsyncInferenceConfig)
+describeEndpointResponse_asyncInferenceConfig = Lens.lens (\DescribeEndpointResponse' {asyncInferenceConfig} -> asyncInferenceConfig) (\s@DescribeEndpointResponse' {} a -> s {asyncInferenceConfig = a} :: DescribeEndpointResponse)
+
+-- | Undocumented member.
+describeEndpointResponse_dataCaptureConfig :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe DataCaptureConfigSummary)
+describeEndpointResponse_dataCaptureConfig = Lens.lens (\DescribeEndpointResponse' {dataCaptureConfig} -> dataCaptureConfig) (\s@DescribeEndpointResponse' {} a -> s {dataCaptureConfig = a} :: DescribeEndpointResponse)
+
+-- | The configuration parameters for an explainer.
+describeEndpointResponse_explainerConfig :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe ExplainerConfig)
+describeEndpointResponse_explainerConfig = Lens.lens (\DescribeEndpointResponse' {explainerConfig} -> explainerConfig) (\s@DescribeEndpointResponse' {} a -> s {explainerConfig = a} :: DescribeEndpointResponse)
+
+-- | If the status of the endpoint is @Failed@, the reason why it failed.
+describeEndpointResponse_failureReason :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe Prelude.Text)
+describeEndpointResponse_failureReason = Lens.lens (\DescribeEndpointResponse' {failureReason} -> failureReason) (\s@DescribeEndpointResponse' {} a -> s {failureReason = a} :: DescribeEndpointResponse)
+
+-- | The most recent deployment configuration for the endpoint.
+describeEndpointResponse_lastDeploymentConfig :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe DeploymentConfig)
+describeEndpointResponse_lastDeploymentConfig = Lens.lens (\DescribeEndpointResponse' {lastDeploymentConfig} -> lastDeploymentConfig) (\s@DescribeEndpointResponse' {} a -> s {lastDeploymentConfig = a} :: DescribeEndpointResponse)
+
+-- | Returns the summary of an in-progress deployment. This field is only
+-- returned when the endpoint is creating or updating with a new endpoint
+-- configuration.
+describeEndpointResponse_pendingDeploymentSummary :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe PendingDeploymentSummary)
+describeEndpointResponse_pendingDeploymentSummary = Lens.lens (\DescribeEndpointResponse' {pendingDeploymentSummary} -> pendingDeploymentSummary) (\s@DescribeEndpointResponse' {} a -> s {pendingDeploymentSummary = a} :: DescribeEndpointResponse)
+
+-- | An array of ProductionVariantSummary objects, one for each model hosted
+-- behind this endpoint.
+describeEndpointResponse_productionVariants :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary))
+describeEndpointResponse_productionVariants = Lens.lens (\DescribeEndpointResponse' {productionVariants} -> productionVariants) (\s@DescribeEndpointResponse' {} a -> s {productionVariants = a} :: DescribeEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of ProductionVariantSummary objects, one for each model that
+-- you want to host at this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@.
+describeEndpointResponse_shadowProductionVariants :: Lens.Lens' DescribeEndpointResponse (Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary))
+describeEndpointResponse_shadowProductionVariants = Lens.lens (\DescribeEndpointResponse' {shadowProductionVariants} -> shadowProductionVariants) (\s@DescribeEndpointResponse' {} a -> s {shadowProductionVariants = a} :: DescribeEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeEndpointResponse_httpStatus :: Lens.Lens' DescribeEndpointResponse Prelude.Int
+describeEndpointResponse_httpStatus = Lens.lens (\DescribeEndpointResponse' {httpStatus} -> httpStatus) (\s@DescribeEndpointResponse' {} a -> s {httpStatus = a} :: DescribeEndpointResponse)
+
+-- | Name of the endpoint.
+describeEndpointResponse_endpointName :: Lens.Lens' DescribeEndpointResponse Prelude.Text
+describeEndpointResponse_endpointName = Lens.lens (\DescribeEndpointResponse' {endpointName} -> endpointName) (\s@DescribeEndpointResponse' {} a -> s {endpointName = a} :: DescribeEndpointResponse)
+
+-- | The Amazon Resource Name (ARN) of the endpoint.
+describeEndpointResponse_endpointArn :: Lens.Lens' DescribeEndpointResponse Prelude.Text
+describeEndpointResponse_endpointArn = Lens.lens (\DescribeEndpointResponse' {endpointArn} -> endpointArn) (\s@DescribeEndpointResponse' {} a -> s {endpointArn = a} :: DescribeEndpointResponse)
+
+-- | The name of the endpoint configuration associated with this endpoint.
+describeEndpointResponse_endpointConfigName :: Lens.Lens' DescribeEndpointResponse Prelude.Text
+describeEndpointResponse_endpointConfigName = Lens.lens (\DescribeEndpointResponse' {endpointConfigName} -> endpointConfigName) (\s@DescribeEndpointResponse' {} a -> s {endpointConfigName = a} :: DescribeEndpointResponse)
+
+-- | The status of the endpoint.
+--
+-- -   @OutOfService@: Endpoint is not available to take incoming requests.
+--
+-- -   @Creating@: CreateEndpoint is executing.
+--
+-- -   @Updating@: UpdateEndpoint or UpdateEndpointWeightsAndCapacities is
+--     executing.
+--
+-- -   @SystemUpdating@: Endpoint is undergoing maintenance and cannot be
+--     updated or deleted or re-scaled until it has completed. This
+--     maintenance operation does not change any customer-specified values
+--     such as VPC config, KMS encryption, model, instance type, or
+--     instance count.
+--
+-- -   @RollingBack@: Endpoint fails to scale up or down or change its
+--     variant weight and is in the process of rolling back to its previous
+--     configuration. Once the rollback completes, endpoint returns to an
+--     @InService@ status. This transitional status only applies to an
+--     endpoint that has autoscaling enabled and is undergoing variant
+--     weight or capacity changes as part of an
+--     UpdateEndpointWeightsAndCapacities call or when the
+--     UpdateEndpointWeightsAndCapacities operation is called explicitly.
+--
+-- -   @InService@: Endpoint is available to process incoming requests.
+--
+-- -   @Deleting@: DeleteEndpoint is executing.
+--
+-- -   @Failed@: Endpoint could not be created, updated, or re-scaled. Use
+--     DescribeEndpointOutput$FailureReason for information about the
+--     failure. DeleteEndpoint is the only operation that can be performed
+--     on a failed endpoint.
+describeEndpointResponse_endpointStatus :: Lens.Lens' DescribeEndpointResponse EndpointStatus
+describeEndpointResponse_endpointStatus = Lens.lens (\DescribeEndpointResponse' {endpointStatus} -> endpointStatus) (\s@DescribeEndpointResponse' {} a -> s {endpointStatus = a} :: DescribeEndpointResponse)
+
+-- | A timestamp that shows when the endpoint was created.
+describeEndpointResponse_creationTime :: Lens.Lens' DescribeEndpointResponse Prelude.UTCTime
+describeEndpointResponse_creationTime = Lens.lens (\DescribeEndpointResponse' {creationTime} -> creationTime) (\s@DescribeEndpointResponse' {} a -> s {creationTime = a} :: DescribeEndpointResponse) Prelude.. Data._Time
+
+-- | A timestamp that shows when the endpoint was last modified.
+describeEndpointResponse_lastModifiedTime :: Lens.Lens' DescribeEndpointResponse Prelude.UTCTime
+describeEndpointResponse_lastModifiedTime = Lens.lens (\DescribeEndpointResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeEndpointResponse' {} a -> s {lastModifiedTime = a} :: DescribeEndpointResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeEndpointResponse where
+  rnf DescribeEndpointResponse' {..} =
+    Prelude.rnf asyncInferenceConfig
+      `Prelude.seq` Prelude.rnf dataCaptureConfig
+      `Prelude.seq` Prelude.rnf explainerConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastDeploymentConfig
+      `Prelude.seq` Prelude.rnf pendingDeploymentSummary
+      `Prelude.seq` Prelude.rnf productionVariants
+      `Prelude.seq` Prelude.rnf shadowProductionVariants
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf endpointArn
+      `Prelude.seq` Prelude.rnf endpointConfigName
+      `Prelude.seq` Prelude.rnf endpointStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/DescribeEndpointConfig.hs b/gen/Amazonka/SageMaker/DescribeEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeEndpointConfig.hs
@@ -0,0 +1,306 @@
+{-# 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.DescribeEndpointConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the description of an endpoint configuration created using the
+-- @CreateEndpointConfig@ API.
+module Amazonka.SageMaker.DescribeEndpointConfig
+  ( -- * Creating a Request
+    DescribeEndpointConfig (..),
+    newDescribeEndpointConfig,
+
+    -- * Request Lenses
+    describeEndpointConfig_endpointConfigName,
+
+    -- * Destructuring the Response
+    DescribeEndpointConfigResponse (..),
+    newDescribeEndpointConfigResponse,
+
+    -- * Response Lenses
+    describeEndpointConfigResponse_asyncInferenceConfig,
+    describeEndpointConfigResponse_dataCaptureConfig,
+    describeEndpointConfigResponse_explainerConfig,
+    describeEndpointConfigResponse_kmsKeyId,
+    describeEndpointConfigResponse_shadowProductionVariants,
+    describeEndpointConfigResponse_httpStatus,
+    describeEndpointConfigResponse_endpointConfigName,
+    describeEndpointConfigResponse_endpointConfigArn,
+    describeEndpointConfigResponse_productionVariants,
+    describeEndpointConfigResponse_creationTime,
+  )
+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:/ 'newDescribeEndpointConfig' smart constructor.
+data DescribeEndpointConfig = DescribeEndpointConfig'
+  { -- | The name of the endpoint configuration.
+    endpointConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEndpointConfig' 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:
+--
+-- 'endpointConfigName', 'describeEndpointConfig_endpointConfigName' - The name of the endpoint configuration.
+newDescribeEndpointConfig ::
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  DescribeEndpointConfig
+newDescribeEndpointConfig pEndpointConfigName_ =
+  DescribeEndpointConfig'
+    { endpointConfigName =
+        pEndpointConfigName_
+    }
+
+-- | The name of the endpoint configuration.
+describeEndpointConfig_endpointConfigName :: Lens.Lens' DescribeEndpointConfig Prelude.Text
+describeEndpointConfig_endpointConfigName = Lens.lens (\DescribeEndpointConfig' {endpointConfigName} -> endpointConfigName) (\s@DescribeEndpointConfig' {} a -> s {endpointConfigName = a} :: DescribeEndpointConfig)
+
+instance Core.AWSRequest DescribeEndpointConfig where
+  type
+    AWSResponse DescribeEndpointConfig =
+      DescribeEndpointConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeEndpointConfigResponse'
+            Prelude.<$> (x Data..?> "AsyncInferenceConfig")
+            Prelude.<*> (x Data..?> "DataCaptureConfig")
+            Prelude.<*> (x Data..?> "ExplainerConfig")
+            Prelude.<*> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "ShadowProductionVariants")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EndpointConfigName")
+            Prelude.<*> (x Data..:> "EndpointConfigArn")
+            Prelude.<*> (x Data..:> "ProductionVariants")
+            Prelude.<*> (x Data..:> "CreationTime")
+      )
+
+instance Prelude.Hashable DescribeEndpointConfig where
+  hashWithSalt _salt DescribeEndpointConfig' {..} =
+    _salt `Prelude.hashWithSalt` endpointConfigName
+
+instance Prelude.NFData DescribeEndpointConfig where
+  rnf DescribeEndpointConfig' {..} =
+    Prelude.rnf endpointConfigName
+
+instance Data.ToHeaders DescribeEndpointConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeEndpointConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeEndpointConfig where
+  toJSON DescribeEndpointConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("EndpointConfigName" Data..= endpointConfigName)
+          ]
+      )
+
+instance Data.ToPath DescribeEndpointConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEndpointConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeEndpointConfigResponse' smart constructor.
+data DescribeEndpointConfigResponse = DescribeEndpointConfigResponse'
+  { -- | Returns the description of an endpoint configuration created using the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html CreateEndpointConfig>
+    -- API.
+    asyncInferenceConfig :: Prelude.Maybe AsyncInferenceConfig,
+    dataCaptureConfig :: Prelude.Maybe DataCaptureConfig,
+    -- | The configuration parameters for an explainer.
+    explainerConfig :: Prelude.Maybe ExplainerConfig,
+    -- | Amazon Web Services KMS key ID Amazon SageMaker uses to encrypt data
+    -- when storing it on the ML storage volume attached to the instance.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | An array of @ProductionVariant@ objects, one for each model that you
+    -- want to host at this endpoint in shadow mode with production traffic
+    -- replicated from the model specified on @ProductionVariants@.
+    shadowProductionVariants :: Prelude.Maybe (Prelude.NonEmpty ProductionVariant),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Name of the SageMaker endpoint configuration.
+    endpointConfigName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the endpoint configuration.
+    endpointConfigArn :: Prelude.Text,
+    -- | An array of @ProductionVariant@ objects, one for each model that you
+    -- want to host at this endpoint.
+    productionVariants :: Prelude.NonEmpty ProductionVariant,
+    -- | A timestamp that shows when the endpoint configuration was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEndpointConfigResponse' 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:
+--
+-- 'asyncInferenceConfig', 'describeEndpointConfigResponse_asyncInferenceConfig' - Returns the description of an endpoint configuration created using the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html CreateEndpointConfig>
+-- API.
+--
+-- 'dataCaptureConfig', 'describeEndpointConfigResponse_dataCaptureConfig' - Undocumented member.
+--
+-- 'explainerConfig', 'describeEndpointConfigResponse_explainerConfig' - The configuration parameters for an explainer.
+--
+-- 'kmsKeyId', 'describeEndpointConfigResponse_kmsKeyId' - Amazon Web Services KMS key ID Amazon SageMaker uses to encrypt data
+-- when storing it on the ML storage volume attached to the instance.
+--
+-- 'shadowProductionVariants', 'describeEndpointConfigResponse_shadowProductionVariants' - An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@.
+--
+-- 'httpStatus', 'describeEndpointConfigResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointConfigName', 'describeEndpointConfigResponse_endpointConfigName' - Name of the SageMaker endpoint configuration.
+--
+-- 'endpointConfigArn', 'describeEndpointConfigResponse_endpointConfigArn' - The Amazon Resource Name (ARN) of the endpoint configuration.
+--
+-- 'productionVariants', 'describeEndpointConfigResponse_productionVariants' - An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint.
+--
+-- 'creationTime', 'describeEndpointConfigResponse_creationTime' - A timestamp that shows when the endpoint configuration was created.
+newDescribeEndpointConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  -- | 'endpointConfigArn'
+  Prelude.Text ->
+  -- | 'productionVariants'
+  Prelude.NonEmpty ProductionVariant ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DescribeEndpointConfigResponse
+newDescribeEndpointConfigResponse
+  pHttpStatus_
+  pEndpointConfigName_
+  pEndpointConfigArn_
+  pProductionVariants_
+  pCreationTime_ =
+    DescribeEndpointConfigResponse'
+      { asyncInferenceConfig =
+          Prelude.Nothing,
+        dataCaptureConfig = Prelude.Nothing,
+        explainerConfig = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        shadowProductionVariants = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        endpointConfigName = pEndpointConfigName_,
+        endpointConfigArn = pEndpointConfigArn_,
+        productionVariants =
+          Lens.coerced Lens.# pProductionVariants_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_
+      }
+
+-- | Returns the description of an endpoint configuration created using the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html CreateEndpointConfig>
+-- API.
+describeEndpointConfigResponse_asyncInferenceConfig :: Lens.Lens' DescribeEndpointConfigResponse (Prelude.Maybe AsyncInferenceConfig)
+describeEndpointConfigResponse_asyncInferenceConfig = Lens.lens (\DescribeEndpointConfigResponse' {asyncInferenceConfig} -> asyncInferenceConfig) (\s@DescribeEndpointConfigResponse' {} a -> s {asyncInferenceConfig = a} :: DescribeEndpointConfigResponse)
+
+-- | Undocumented member.
+describeEndpointConfigResponse_dataCaptureConfig :: Lens.Lens' DescribeEndpointConfigResponse (Prelude.Maybe DataCaptureConfig)
+describeEndpointConfigResponse_dataCaptureConfig = Lens.lens (\DescribeEndpointConfigResponse' {dataCaptureConfig} -> dataCaptureConfig) (\s@DescribeEndpointConfigResponse' {} a -> s {dataCaptureConfig = a} :: DescribeEndpointConfigResponse)
+
+-- | The configuration parameters for an explainer.
+describeEndpointConfigResponse_explainerConfig :: Lens.Lens' DescribeEndpointConfigResponse (Prelude.Maybe ExplainerConfig)
+describeEndpointConfigResponse_explainerConfig = Lens.lens (\DescribeEndpointConfigResponse' {explainerConfig} -> explainerConfig) (\s@DescribeEndpointConfigResponse' {} a -> s {explainerConfig = a} :: DescribeEndpointConfigResponse)
+
+-- | Amazon Web Services KMS key ID Amazon SageMaker uses to encrypt data
+-- when storing it on the ML storage volume attached to the instance.
+describeEndpointConfigResponse_kmsKeyId :: Lens.Lens' DescribeEndpointConfigResponse (Prelude.Maybe Prelude.Text)
+describeEndpointConfigResponse_kmsKeyId = Lens.lens (\DescribeEndpointConfigResponse' {kmsKeyId} -> kmsKeyId) (\s@DescribeEndpointConfigResponse' {} a -> s {kmsKeyId = a} :: DescribeEndpointConfigResponse)
+
+-- | An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@.
+describeEndpointConfigResponse_shadowProductionVariants :: Lens.Lens' DescribeEndpointConfigResponse (Prelude.Maybe (Prelude.NonEmpty ProductionVariant))
+describeEndpointConfigResponse_shadowProductionVariants = Lens.lens (\DescribeEndpointConfigResponse' {shadowProductionVariants} -> shadowProductionVariants) (\s@DescribeEndpointConfigResponse' {} a -> s {shadowProductionVariants = a} :: DescribeEndpointConfigResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeEndpointConfigResponse_httpStatus :: Lens.Lens' DescribeEndpointConfigResponse Prelude.Int
+describeEndpointConfigResponse_httpStatus = Lens.lens (\DescribeEndpointConfigResponse' {httpStatus} -> httpStatus) (\s@DescribeEndpointConfigResponse' {} a -> s {httpStatus = a} :: DescribeEndpointConfigResponse)
+
+-- | Name of the SageMaker endpoint configuration.
+describeEndpointConfigResponse_endpointConfigName :: Lens.Lens' DescribeEndpointConfigResponse Prelude.Text
+describeEndpointConfigResponse_endpointConfigName = Lens.lens (\DescribeEndpointConfigResponse' {endpointConfigName} -> endpointConfigName) (\s@DescribeEndpointConfigResponse' {} a -> s {endpointConfigName = a} :: DescribeEndpointConfigResponse)
+
+-- | The Amazon Resource Name (ARN) of the endpoint configuration.
+describeEndpointConfigResponse_endpointConfigArn :: Lens.Lens' DescribeEndpointConfigResponse Prelude.Text
+describeEndpointConfigResponse_endpointConfigArn = Lens.lens (\DescribeEndpointConfigResponse' {endpointConfigArn} -> endpointConfigArn) (\s@DescribeEndpointConfigResponse' {} a -> s {endpointConfigArn = a} :: DescribeEndpointConfigResponse)
+
+-- | An array of @ProductionVariant@ objects, one for each model that you
+-- want to host at this endpoint.
+describeEndpointConfigResponse_productionVariants :: Lens.Lens' DescribeEndpointConfigResponse (Prelude.NonEmpty ProductionVariant)
+describeEndpointConfigResponse_productionVariants = Lens.lens (\DescribeEndpointConfigResponse' {productionVariants} -> productionVariants) (\s@DescribeEndpointConfigResponse' {} a -> s {productionVariants = a} :: DescribeEndpointConfigResponse) Prelude.. Lens.coerced
+
+-- | A timestamp that shows when the endpoint configuration was created.
+describeEndpointConfigResponse_creationTime :: Lens.Lens' DescribeEndpointConfigResponse Prelude.UTCTime
+describeEndpointConfigResponse_creationTime = Lens.lens (\DescribeEndpointConfigResponse' {creationTime} -> creationTime) (\s@DescribeEndpointConfigResponse' {} a -> s {creationTime = a} :: DescribeEndpointConfigResponse) Prelude.. Data._Time
+
+instance
+  Prelude.NFData
+    DescribeEndpointConfigResponse
+  where
+  rnf DescribeEndpointConfigResponse' {..} =
+    Prelude.rnf asyncInferenceConfig
+      `Prelude.seq` Prelude.rnf dataCaptureConfig
+      `Prelude.seq` Prelude.rnf explainerConfig
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf shadowProductionVariants
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointConfigName
+      `Prelude.seq` Prelude.rnf endpointConfigArn
+      `Prelude.seq` Prelude.rnf productionVariants
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/DescribeExperiment.hs b/gen/Amazonka/SageMaker/DescribeExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeExperiment.hs
@@ -0,0 +1,273 @@
+{-# 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.DescribeExperiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of an experiment\'s properties.
+module Amazonka.SageMaker.DescribeExperiment
+  ( -- * Creating a Request
+    DescribeExperiment (..),
+    newDescribeExperiment,
+
+    -- * Request Lenses
+    describeExperiment_experimentName,
+
+    -- * Destructuring the Response
+    DescribeExperimentResponse (..),
+    newDescribeExperimentResponse,
+
+    -- * Response Lenses
+    describeExperimentResponse_createdBy,
+    describeExperimentResponse_creationTime,
+    describeExperimentResponse_description,
+    describeExperimentResponse_displayName,
+    describeExperimentResponse_experimentArn,
+    describeExperimentResponse_experimentName,
+    describeExperimentResponse_lastModifiedBy,
+    describeExperimentResponse_lastModifiedTime,
+    describeExperimentResponse_source,
+    describeExperimentResponse_httpStatus,
+  )
+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:/ 'newDescribeExperiment' smart constructor.
+data DescribeExperiment = DescribeExperiment'
+  { -- | The name of the experiment to describe.
+    experimentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeExperiment' 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:
+--
+-- 'experimentName', 'describeExperiment_experimentName' - The name of the experiment to describe.
+newDescribeExperiment ::
+  -- | 'experimentName'
+  Prelude.Text ->
+  DescribeExperiment
+newDescribeExperiment pExperimentName_ =
+  DescribeExperiment'
+    { experimentName =
+        pExperimentName_
+    }
+
+-- | The name of the experiment to describe.
+describeExperiment_experimentName :: Lens.Lens' DescribeExperiment Prelude.Text
+describeExperiment_experimentName = Lens.lens (\DescribeExperiment' {experimentName} -> experimentName) (\s@DescribeExperiment' {} a -> s {experimentName = a} :: DescribeExperiment)
+
+instance Core.AWSRequest DescribeExperiment where
+  type
+    AWSResponse DescribeExperiment =
+      DescribeExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeExperimentResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DisplayName")
+            Prelude.<*> (x Data..?> "ExperimentArn")
+            Prelude.<*> (x Data..?> "ExperimentName")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeExperiment where
+  hashWithSalt _salt DescribeExperiment' {..} =
+    _salt `Prelude.hashWithSalt` experimentName
+
+instance Prelude.NFData DescribeExperiment where
+  rnf DescribeExperiment' {..} =
+    Prelude.rnf experimentName
+
+instance Data.ToHeaders DescribeExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeExperiment where
+  toJSON DescribeExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ExperimentName" Data..= experimentName)
+          ]
+      )
+
+instance Data.ToPath DescribeExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeExperimentResponse' smart constructor.
+data DescribeExperimentResponse = DescribeExperimentResponse'
+  { -- | Who created the experiment.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the experiment was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment as displayed. If @DisplayName@ isn\'t
+    -- specified, @ExperimentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the experiment.
+    experimentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | Who last modified the experiment.
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the experiment was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the source and, optionally, the type.
+    source :: Prelude.Maybe ExperimentSource,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeExperimentResponse' 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:
+--
+-- 'createdBy', 'describeExperimentResponse_createdBy' - Who created the experiment.
+--
+-- 'creationTime', 'describeExperimentResponse_creationTime' - When the experiment was created.
+--
+-- 'description', 'describeExperimentResponse_description' - The description of the experiment.
+--
+-- 'displayName', 'describeExperimentResponse_displayName' - The name of the experiment as displayed. If @DisplayName@ isn\'t
+-- specified, @ExperimentName@ is displayed.
+--
+-- 'experimentArn', 'describeExperimentResponse_experimentArn' - The Amazon Resource Name (ARN) of the experiment.
+--
+-- 'experimentName', 'describeExperimentResponse_experimentName' - The name of the experiment.
+--
+-- 'lastModifiedBy', 'describeExperimentResponse_lastModifiedBy' - Who last modified the experiment.
+--
+-- 'lastModifiedTime', 'describeExperimentResponse_lastModifiedTime' - When the experiment was last modified.
+--
+-- 'source', 'describeExperimentResponse_source' - The Amazon Resource Name (ARN) of the source and, optionally, the type.
+--
+-- 'httpStatus', 'describeExperimentResponse_httpStatus' - The response's http status code.
+newDescribeExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeExperimentResponse
+newDescribeExperimentResponse pHttpStatus_ =
+  DescribeExperimentResponse'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      experimentArn = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      source = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Who created the experiment.
+describeExperimentResponse_createdBy :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe UserContext)
+describeExperimentResponse_createdBy = Lens.lens (\DescribeExperimentResponse' {createdBy} -> createdBy) (\s@DescribeExperimentResponse' {} a -> s {createdBy = a} :: DescribeExperimentResponse)
+
+-- | When the experiment was created.
+describeExperimentResponse_creationTime :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe Prelude.UTCTime)
+describeExperimentResponse_creationTime = Lens.lens (\DescribeExperimentResponse' {creationTime} -> creationTime) (\s@DescribeExperimentResponse' {} a -> s {creationTime = a} :: DescribeExperimentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the experiment.
+describeExperimentResponse_description :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe Prelude.Text)
+describeExperimentResponse_description = Lens.lens (\DescribeExperimentResponse' {description} -> description) (\s@DescribeExperimentResponse' {} a -> s {description = a} :: DescribeExperimentResponse)
+
+-- | The name of the experiment as displayed. If @DisplayName@ isn\'t
+-- specified, @ExperimentName@ is displayed.
+describeExperimentResponse_displayName :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe Prelude.Text)
+describeExperimentResponse_displayName = Lens.lens (\DescribeExperimentResponse' {displayName} -> displayName) (\s@DescribeExperimentResponse' {} a -> s {displayName = a} :: DescribeExperimentResponse)
+
+-- | The Amazon Resource Name (ARN) of the experiment.
+describeExperimentResponse_experimentArn :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe Prelude.Text)
+describeExperimentResponse_experimentArn = Lens.lens (\DescribeExperimentResponse' {experimentArn} -> experimentArn) (\s@DescribeExperimentResponse' {} a -> s {experimentArn = a} :: DescribeExperimentResponse)
+
+-- | The name of the experiment.
+describeExperimentResponse_experimentName :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe Prelude.Text)
+describeExperimentResponse_experimentName = Lens.lens (\DescribeExperimentResponse' {experimentName} -> experimentName) (\s@DescribeExperimentResponse' {} a -> s {experimentName = a} :: DescribeExperimentResponse)
+
+-- | Who last modified the experiment.
+describeExperimentResponse_lastModifiedBy :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe UserContext)
+describeExperimentResponse_lastModifiedBy = Lens.lens (\DescribeExperimentResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeExperimentResponse' {} a -> s {lastModifiedBy = a} :: DescribeExperimentResponse)
+
+-- | When the experiment was last modified.
+describeExperimentResponse_lastModifiedTime :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe Prelude.UTCTime)
+describeExperimentResponse_lastModifiedTime = Lens.lens (\DescribeExperimentResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeExperimentResponse' {} a -> s {lastModifiedTime = a} :: DescribeExperimentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the source and, optionally, the type.
+describeExperimentResponse_source :: Lens.Lens' DescribeExperimentResponse (Prelude.Maybe ExperimentSource)
+describeExperimentResponse_source = Lens.lens (\DescribeExperimentResponse' {source} -> source) (\s@DescribeExperimentResponse' {} a -> s {source = a} :: DescribeExperimentResponse)
+
+-- | The response's http status code.
+describeExperimentResponse_httpStatus :: Lens.Lens' DescribeExperimentResponse Prelude.Int
+describeExperimentResponse_httpStatus = Lens.lens (\DescribeExperimentResponse' {httpStatus} -> httpStatus) (\s@DescribeExperimentResponse' {} a -> s {httpStatus = a} :: DescribeExperimentResponse)
+
+instance Prelude.NFData DescribeExperimentResponse where
+  rnf DescribeExperimentResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf experimentArn
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeFeatureGroup.hs b/gen/Amazonka/SageMaker/DescribeFeatureGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeFeatureGroup.hs
@@ -0,0 +1,493 @@
+{-# 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.DescribeFeatureGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this operation to describe a @FeatureGroup@. The response includes
+-- information on the creation time, @FeatureGroup@ name, the unique
+-- identifier for each @FeatureGroup@, and more.
+module Amazonka.SageMaker.DescribeFeatureGroup
+  ( -- * Creating a Request
+    DescribeFeatureGroup (..),
+    newDescribeFeatureGroup,
+
+    -- * Request Lenses
+    describeFeatureGroup_nextToken,
+    describeFeatureGroup_featureGroupName,
+
+    -- * Destructuring the Response
+    DescribeFeatureGroupResponse (..),
+    newDescribeFeatureGroupResponse,
+
+    -- * Response Lenses
+    describeFeatureGroupResponse_description,
+    describeFeatureGroupResponse_failureReason,
+    describeFeatureGroupResponse_featureGroupStatus,
+    describeFeatureGroupResponse_lastModifiedTime,
+    describeFeatureGroupResponse_lastUpdateStatus,
+    describeFeatureGroupResponse_offlineStoreConfig,
+    describeFeatureGroupResponse_offlineStoreStatus,
+    describeFeatureGroupResponse_onlineStoreConfig,
+    describeFeatureGroupResponse_onlineStoreTotalSizeBytes,
+    describeFeatureGroupResponse_roleArn,
+    describeFeatureGroupResponse_httpStatus,
+    describeFeatureGroupResponse_featureGroupArn,
+    describeFeatureGroupResponse_featureGroupName,
+    describeFeatureGroupResponse_recordIdentifierFeatureName,
+    describeFeatureGroupResponse_eventTimeFeatureName,
+    describeFeatureGroupResponse_featureDefinitions,
+    describeFeatureGroupResponse_creationTime,
+    describeFeatureGroupResponse_nextToken,
+  )
+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:/ 'newDescribeFeatureGroup' smart constructor.
+data DescribeFeatureGroup = DescribeFeatureGroup'
+  { -- | A token to resume pagination of the list of @Features@
+    -- (@FeatureDefinitions@). 2,500 @Features@ are returned by default.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the @FeatureGroup@ you want described.
+    featureGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFeatureGroup' 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:
+--
+-- 'nextToken', 'describeFeatureGroup_nextToken' - A token to resume pagination of the list of @Features@
+-- (@FeatureDefinitions@). 2,500 @Features@ are returned by default.
+--
+-- 'featureGroupName', 'describeFeatureGroup_featureGroupName' - The name of the @FeatureGroup@ you want described.
+newDescribeFeatureGroup ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  DescribeFeatureGroup
+newDescribeFeatureGroup pFeatureGroupName_ =
+  DescribeFeatureGroup'
+    { nextToken = Prelude.Nothing,
+      featureGroupName = pFeatureGroupName_
+    }
+
+-- | A token to resume pagination of the list of @Features@
+-- (@FeatureDefinitions@). 2,500 @Features@ are returned by default.
+describeFeatureGroup_nextToken :: Lens.Lens' DescribeFeatureGroup (Prelude.Maybe Prelude.Text)
+describeFeatureGroup_nextToken = Lens.lens (\DescribeFeatureGroup' {nextToken} -> nextToken) (\s@DescribeFeatureGroup' {} a -> s {nextToken = a} :: DescribeFeatureGroup)
+
+-- | The name of the @FeatureGroup@ you want described.
+describeFeatureGroup_featureGroupName :: Lens.Lens' DescribeFeatureGroup Prelude.Text
+describeFeatureGroup_featureGroupName = Lens.lens (\DescribeFeatureGroup' {featureGroupName} -> featureGroupName) (\s@DescribeFeatureGroup' {} a -> s {featureGroupName = a} :: DescribeFeatureGroup)
+
+instance Core.AWSRequest DescribeFeatureGroup where
+  type
+    AWSResponse DescribeFeatureGroup =
+      DescribeFeatureGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFeatureGroupResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "FeatureGroupStatus")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LastUpdateStatus")
+            Prelude.<*> (x Data..?> "OfflineStoreConfig")
+            Prelude.<*> (x Data..?> "OfflineStoreStatus")
+            Prelude.<*> (x Data..?> "OnlineStoreConfig")
+            Prelude.<*> (x Data..?> "OnlineStoreTotalSizeBytes")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "FeatureGroupArn")
+            Prelude.<*> (x Data..:> "FeatureGroupName")
+            Prelude.<*> (x Data..:> "RecordIdentifierFeatureName")
+            Prelude.<*> (x Data..:> "EventTimeFeatureName")
+            Prelude.<*> (x Data..:> "FeatureDefinitions")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "NextToken")
+      )
+
+instance Prelude.Hashable DescribeFeatureGroup where
+  hashWithSalt _salt DescribeFeatureGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` featureGroupName
+
+instance Prelude.NFData DescribeFeatureGroup where
+  rnf DescribeFeatureGroup' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf featureGroupName
+
+instance Data.ToHeaders DescribeFeatureGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeFeatureGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFeatureGroup where
+  toJSON DescribeFeatureGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName)
+          ]
+      )
+
+instance Data.ToPath DescribeFeatureGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFeatureGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFeatureGroupResponse' smart constructor.
+data DescribeFeatureGroupResponse = DescribeFeatureGroupResponse'
+  { -- | A free form description of the feature group.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The reason that the @FeatureGroup@ failed to be replicated in the
+    -- @OfflineStore@. This is failure can occur because:
+    --
+    -- -   The @FeatureGroup@ could not be created in the @OfflineStore@.
+    --
+    -- -   The @FeatureGroup@ could not be deleted from the @OfflineStore@.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The status of the feature group.
+    featureGroupStatus :: Prelude.Maybe FeatureGroupStatus,
+    -- | A timestamp indicating when the feature group was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | A value indicating whether the update made to the feature group was
+    -- successful.
+    lastUpdateStatus :: Prelude.Maybe LastUpdateStatus,
+    -- | The configuration of the offline store. It includes the following
+    -- configurations:
+    --
+    -- -   Amazon S3 location of the offline store.
+    --
+    -- -   Configuration of the Glue data catalog.
+    --
+    -- -   Table format of the offline store.
+    --
+    -- -   Option to disable the automatic creation of a Glue table for the
+    --     offline store.
+    --
+    -- -   Encryption configuration.
+    offlineStoreConfig :: Prelude.Maybe OfflineStoreConfig,
+    -- | The status of the @OfflineStore@. Notifies you if replicating data into
+    -- the @OfflineStore@ has failed. Returns either: @Active@ or @Blocked@
+    offlineStoreStatus :: Prelude.Maybe OfflineStoreStatus,
+    -- | The configuration for the @OnlineStore@.
+    onlineStoreConfig :: Prelude.Maybe OnlineStoreConfig,
+    -- | The size of the @OnlineStore@ in bytes.
+    onlineStoreTotalSizeBytes :: Prelude.Maybe Prelude.Integer,
+    -- | The Amazon Resource Name (ARN) of the IAM execution role used to persist
+    -- data into the OfflineStore if an OfflineStoreConfig is provided.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the @FeatureGroup@.
+    featureGroupArn :: Prelude.Text,
+    -- | he name of the @FeatureGroup@.
+    featureGroupName :: Prelude.Text,
+    -- | The name of the @Feature@ used for @RecordIdentifier@, whose value
+    -- uniquely identifies a record stored in the feature store.
+    recordIdentifierFeatureName :: Prelude.Text,
+    -- | The name of the feature that stores the @EventTime@ of a Record in a
+    -- @FeatureGroup@.
+    --
+    -- An @EventTime@ is a point in time when a new event occurs that
+    -- corresponds to the creation or update of a @Record@ in a @FeatureGroup@.
+    -- All @Records@ in the @FeatureGroup@ have a corresponding @EventTime@.
+    eventTimeFeatureName :: Prelude.Text,
+    -- | A list of the @Features@ in the @FeatureGroup@. Each feature is defined
+    -- by a @FeatureName@ and @FeatureType@.
+    featureDefinitions :: Prelude.NonEmpty FeatureDefinition,
+    -- | A timestamp indicating when SageMaker created the @FeatureGroup@.
+    creationTime :: Data.POSIX,
+    -- | A token to resume pagination of the list of @Features@
+    -- (@FeatureDefinitions@).
+    nextToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFeatureGroupResponse' 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:
+--
+-- 'description', 'describeFeatureGroupResponse_description' - A free form description of the feature group.
+--
+-- 'failureReason', 'describeFeatureGroupResponse_failureReason' - The reason that the @FeatureGroup@ failed to be replicated in the
+-- @OfflineStore@. This is failure can occur because:
+--
+-- -   The @FeatureGroup@ could not be created in the @OfflineStore@.
+--
+-- -   The @FeatureGroup@ could not be deleted from the @OfflineStore@.
+--
+-- 'featureGroupStatus', 'describeFeatureGroupResponse_featureGroupStatus' - The status of the feature group.
+--
+-- 'lastModifiedTime', 'describeFeatureGroupResponse_lastModifiedTime' - A timestamp indicating when the feature group was last updated.
+--
+-- 'lastUpdateStatus', 'describeFeatureGroupResponse_lastUpdateStatus' - A value indicating whether the update made to the feature group was
+-- successful.
+--
+-- 'offlineStoreConfig', 'describeFeatureGroupResponse_offlineStoreConfig' - The configuration of the offline store. It includes the following
+-- configurations:
+--
+-- -   Amazon S3 location of the offline store.
+--
+-- -   Configuration of the Glue data catalog.
+--
+-- -   Table format of the offline store.
+--
+-- -   Option to disable the automatic creation of a Glue table for the
+--     offline store.
+--
+-- -   Encryption configuration.
+--
+-- 'offlineStoreStatus', 'describeFeatureGroupResponse_offlineStoreStatus' - The status of the @OfflineStore@. Notifies you if replicating data into
+-- the @OfflineStore@ has failed. Returns either: @Active@ or @Blocked@
+--
+-- 'onlineStoreConfig', 'describeFeatureGroupResponse_onlineStoreConfig' - The configuration for the @OnlineStore@.
+--
+-- 'onlineStoreTotalSizeBytes', 'describeFeatureGroupResponse_onlineStoreTotalSizeBytes' - The size of the @OnlineStore@ in bytes.
+--
+-- 'roleArn', 'describeFeatureGroupResponse_roleArn' - The Amazon Resource Name (ARN) of the IAM execution role used to persist
+-- data into the OfflineStore if an OfflineStoreConfig is provided.
+--
+-- 'httpStatus', 'describeFeatureGroupResponse_httpStatus' - The response's http status code.
+--
+-- 'featureGroupArn', 'describeFeatureGroupResponse_featureGroupArn' - The Amazon Resource Name (ARN) of the @FeatureGroup@.
+--
+-- 'featureGroupName', 'describeFeatureGroupResponse_featureGroupName' - he name of the @FeatureGroup@.
+--
+-- 'recordIdentifierFeatureName', 'describeFeatureGroupResponse_recordIdentifierFeatureName' - The name of the @Feature@ used for @RecordIdentifier@, whose value
+-- uniquely identifies a record stored in the feature store.
+--
+-- 'eventTimeFeatureName', 'describeFeatureGroupResponse_eventTimeFeatureName' - The name of the feature that stores the @EventTime@ of a Record in a
+-- @FeatureGroup@.
+--
+-- An @EventTime@ is a point in time when a new event occurs that
+-- corresponds to the creation or update of a @Record@ in a @FeatureGroup@.
+-- All @Records@ in the @FeatureGroup@ have a corresponding @EventTime@.
+--
+-- 'featureDefinitions', 'describeFeatureGroupResponse_featureDefinitions' - A list of the @Features@ in the @FeatureGroup@. Each feature is defined
+-- by a @FeatureName@ and @FeatureType@.
+--
+-- 'creationTime', 'describeFeatureGroupResponse_creationTime' - A timestamp indicating when SageMaker created the @FeatureGroup@.
+--
+-- 'nextToken', 'describeFeatureGroupResponse_nextToken' - A token to resume pagination of the list of @Features@
+-- (@FeatureDefinitions@).
+newDescribeFeatureGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'featureGroupArn'
+  Prelude.Text ->
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  -- | 'recordIdentifierFeatureName'
+  Prelude.Text ->
+  -- | 'eventTimeFeatureName'
+  Prelude.Text ->
+  -- | 'featureDefinitions'
+  Prelude.NonEmpty FeatureDefinition ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'nextToken'
+  Prelude.Text ->
+  DescribeFeatureGroupResponse
+newDescribeFeatureGroupResponse
+  pHttpStatus_
+  pFeatureGroupArn_
+  pFeatureGroupName_
+  pRecordIdentifierFeatureName_
+  pEventTimeFeatureName_
+  pFeatureDefinitions_
+  pCreationTime_
+  pNextToken_ =
+    DescribeFeatureGroupResponse'
+      { description =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        featureGroupStatus = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        lastUpdateStatus = Prelude.Nothing,
+        offlineStoreConfig = Prelude.Nothing,
+        offlineStoreStatus = Prelude.Nothing,
+        onlineStoreConfig = Prelude.Nothing,
+        onlineStoreTotalSizeBytes = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        featureGroupArn = pFeatureGroupArn_,
+        featureGroupName = pFeatureGroupName_,
+        recordIdentifierFeatureName =
+          pRecordIdentifierFeatureName_,
+        eventTimeFeatureName = pEventTimeFeatureName_,
+        featureDefinitions =
+          Lens.coerced Lens.# pFeatureDefinitions_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        nextToken = pNextToken_
+      }
+
+-- | A free form description of the feature group.
+describeFeatureGroupResponse_description :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe Prelude.Text)
+describeFeatureGroupResponse_description = Lens.lens (\DescribeFeatureGroupResponse' {description} -> description) (\s@DescribeFeatureGroupResponse' {} a -> s {description = a} :: DescribeFeatureGroupResponse)
+
+-- | The reason that the @FeatureGroup@ failed to be replicated in the
+-- @OfflineStore@. This is failure can occur because:
+--
+-- -   The @FeatureGroup@ could not be created in the @OfflineStore@.
+--
+-- -   The @FeatureGroup@ could not be deleted from the @OfflineStore@.
+describeFeatureGroupResponse_failureReason :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe Prelude.Text)
+describeFeatureGroupResponse_failureReason = Lens.lens (\DescribeFeatureGroupResponse' {failureReason} -> failureReason) (\s@DescribeFeatureGroupResponse' {} a -> s {failureReason = a} :: DescribeFeatureGroupResponse)
+
+-- | The status of the feature group.
+describeFeatureGroupResponse_featureGroupStatus :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe FeatureGroupStatus)
+describeFeatureGroupResponse_featureGroupStatus = Lens.lens (\DescribeFeatureGroupResponse' {featureGroupStatus} -> featureGroupStatus) (\s@DescribeFeatureGroupResponse' {} a -> s {featureGroupStatus = a} :: DescribeFeatureGroupResponse)
+
+-- | A timestamp indicating when the feature group was last updated.
+describeFeatureGroupResponse_lastModifiedTime :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe Prelude.UTCTime)
+describeFeatureGroupResponse_lastModifiedTime = Lens.lens (\DescribeFeatureGroupResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeFeatureGroupResponse' {} a -> s {lastModifiedTime = a} :: DescribeFeatureGroupResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A value indicating whether the update made to the feature group was
+-- successful.
+describeFeatureGroupResponse_lastUpdateStatus :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe LastUpdateStatus)
+describeFeatureGroupResponse_lastUpdateStatus = Lens.lens (\DescribeFeatureGroupResponse' {lastUpdateStatus} -> lastUpdateStatus) (\s@DescribeFeatureGroupResponse' {} a -> s {lastUpdateStatus = a} :: DescribeFeatureGroupResponse)
+
+-- | The configuration of the offline store. It includes the following
+-- configurations:
+--
+-- -   Amazon S3 location of the offline store.
+--
+-- -   Configuration of the Glue data catalog.
+--
+-- -   Table format of the offline store.
+--
+-- -   Option to disable the automatic creation of a Glue table for the
+--     offline store.
+--
+-- -   Encryption configuration.
+describeFeatureGroupResponse_offlineStoreConfig :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe OfflineStoreConfig)
+describeFeatureGroupResponse_offlineStoreConfig = Lens.lens (\DescribeFeatureGroupResponse' {offlineStoreConfig} -> offlineStoreConfig) (\s@DescribeFeatureGroupResponse' {} a -> s {offlineStoreConfig = a} :: DescribeFeatureGroupResponse)
+
+-- | The status of the @OfflineStore@. Notifies you if replicating data into
+-- the @OfflineStore@ has failed. Returns either: @Active@ or @Blocked@
+describeFeatureGroupResponse_offlineStoreStatus :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe OfflineStoreStatus)
+describeFeatureGroupResponse_offlineStoreStatus = Lens.lens (\DescribeFeatureGroupResponse' {offlineStoreStatus} -> offlineStoreStatus) (\s@DescribeFeatureGroupResponse' {} a -> s {offlineStoreStatus = a} :: DescribeFeatureGroupResponse)
+
+-- | The configuration for the @OnlineStore@.
+describeFeatureGroupResponse_onlineStoreConfig :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe OnlineStoreConfig)
+describeFeatureGroupResponse_onlineStoreConfig = Lens.lens (\DescribeFeatureGroupResponse' {onlineStoreConfig} -> onlineStoreConfig) (\s@DescribeFeatureGroupResponse' {} a -> s {onlineStoreConfig = a} :: DescribeFeatureGroupResponse)
+
+-- | The size of the @OnlineStore@ in bytes.
+describeFeatureGroupResponse_onlineStoreTotalSizeBytes :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe Prelude.Integer)
+describeFeatureGroupResponse_onlineStoreTotalSizeBytes = Lens.lens (\DescribeFeatureGroupResponse' {onlineStoreTotalSizeBytes} -> onlineStoreTotalSizeBytes) (\s@DescribeFeatureGroupResponse' {} a -> s {onlineStoreTotalSizeBytes = a} :: DescribeFeatureGroupResponse)
+
+-- | The Amazon Resource Name (ARN) of the IAM execution role used to persist
+-- data into the OfflineStore if an OfflineStoreConfig is provided.
+describeFeatureGroupResponse_roleArn :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.Maybe Prelude.Text)
+describeFeatureGroupResponse_roleArn = Lens.lens (\DescribeFeatureGroupResponse' {roleArn} -> roleArn) (\s@DescribeFeatureGroupResponse' {} a -> s {roleArn = a} :: DescribeFeatureGroupResponse)
+
+-- | The response's http status code.
+describeFeatureGroupResponse_httpStatus :: Lens.Lens' DescribeFeatureGroupResponse Prelude.Int
+describeFeatureGroupResponse_httpStatus = Lens.lens (\DescribeFeatureGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeFeatureGroupResponse' {} a -> s {httpStatus = a} :: DescribeFeatureGroupResponse)
+
+-- | The Amazon Resource Name (ARN) of the @FeatureGroup@.
+describeFeatureGroupResponse_featureGroupArn :: Lens.Lens' DescribeFeatureGroupResponse Prelude.Text
+describeFeatureGroupResponse_featureGroupArn = Lens.lens (\DescribeFeatureGroupResponse' {featureGroupArn} -> featureGroupArn) (\s@DescribeFeatureGroupResponse' {} a -> s {featureGroupArn = a} :: DescribeFeatureGroupResponse)
+
+-- | he name of the @FeatureGroup@.
+describeFeatureGroupResponse_featureGroupName :: Lens.Lens' DescribeFeatureGroupResponse Prelude.Text
+describeFeatureGroupResponse_featureGroupName = Lens.lens (\DescribeFeatureGroupResponse' {featureGroupName} -> featureGroupName) (\s@DescribeFeatureGroupResponse' {} a -> s {featureGroupName = a} :: DescribeFeatureGroupResponse)
+
+-- | The name of the @Feature@ used for @RecordIdentifier@, whose value
+-- uniquely identifies a record stored in the feature store.
+describeFeatureGroupResponse_recordIdentifierFeatureName :: Lens.Lens' DescribeFeatureGroupResponse Prelude.Text
+describeFeatureGroupResponse_recordIdentifierFeatureName = Lens.lens (\DescribeFeatureGroupResponse' {recordIdentifierFeatureName} -> recordIdentifierFeatureName) (\s@DescribeFeatureGroupResponse' {} a -> s {recordIdentifierFeatureName = a} :: DescribeFeatureGroupResponse)
+
+-- | The name of the feature that stores the @EventTime@ of a Record in a
+-- @FeatureGroup@.
+--
+-- An @EventTime@ is a point in time when a new event occurs that
+-- corresponds to the creation or update of a @Record@ in a @FeatureGroup@.
+-- All @Records@ in the @FeatureGroup@ have a corresponding @EventTime@.
+describeFeatureGroupResponse_eventTimeFeatureName :: Lens.Lens' DescribeFeatureGroupResponse Prelude.Text
+describeFeatureGroupResponse_eventTimeFeatureName = Lens.lens (\DescribeFeatureGroupResponse' {eventTimeFeatureName} -> eventTimeFeatureName) (\s@DescribeFeatureGroupResponse' {} a -> s {eventTimeFeatureName = a} :: DescribeFeatureGroupResponse)
+
+-- | A list of the @Features@ in the @FeatureGroup@. Each feature is defined
+-- by a @FeatureName@ and @FeatureType@.
+describeFeatureGroupResponse_featureDefinitions :: Lens.Lens' DescribeFeatureGroupResponse (Prelude.NonEmpty FeatureDefinition)
+describeFeatureGroupResponse_featureDefinitions = Lens.lens (\DescribeFeatureGroupResponse' {featureDefinitions} -> featureDefinitions) (\s@DescribeFeatureGroupResponse' {} a -> s {featureDefinitions = a} :: DescribeFeatureGroupResponse) Prelude.. Lens.coerced
+
+-- | A timestamp indicating when SageMaker created the @FeatureGroup@.
+describeFeatureGroupResponse_creationTime :: Lens.Lens' DescribeFeatureGroupResponse Prelude.UTCTime
+describeFeatureGroupResponse_creationTime = Lens.lens (\DescribeFeatureGroupResponse' {creationTime} -> creationTime) (\s@DescribeFeatureGroupResponse' {} a -> s {creationTime = a} :: DescribeFeatureGroupResponse) Prelude.. Data._Time
+
+-- | A token to resume pagination of the list of @Features@
+-- (@FeatureDefinitions@).
+describeFeatureGroupResponse_nextToken :: Lens.Lens' DescribeFeatureGroupResponse Prelude.Text
+describeFeatureGroupResponse_nextToken = Lens.lens (\DescribeFeatureGroupResponse' {nextToken} -> nextToken) (\s@DescribeFeatureGroupResponse' {} a -> s {nextToken = a} :: DescribeFeatureGroupResponse)
+
+instance Prelude.NFData DescribeFeatureGroupResponse where
+  rnf DescribeFeatureGroupResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf featureGroupStatus
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lastUpdateStatus
+      `Prelude.seq` Prelude.rnf offlineStoreConfig
+      `Prelude.seq` Prelude.rnf offlineStoreStatus
+      `Prelude.seq` Prelude.rnf onlineStoreConfig
+      `Prelude.seq` Prelude.rnf onlineStoreTotalSizeBytes
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf featureGroupArn
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf recordIdentifierFeatureName
+      `Prelude.seq` Prelude.rnf eventTimeFeatureName
+      `Prelude.seq` Prelude.rnf featureDefinitions
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf nextToken
diff --git a/gen/Amazonka/SageMaker/DescribeFeatureMetadata.hs b/gen/Amazonka/SageMaker/DescribeFeatureMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeFeatureMetadata.hs
@@ -0,0 +1,309 @@
+{-# 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.DescribeFeatureMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Shows the metadata for a feature within a feature group.
+module Amazonka.SageMaker.DescribeFeatureMetadata
+  ( -- * Creating a Request
+    DescribeFeatureMetadata (..),
+    newDescribeFeatureMetadata,
+
+    -- * Request Lenses
+    describeFeatureMetadata_featureGroupName,
+    describeFeatureMetadata_featureName,
+
+    -- * Destructuring the Response
+    DescribeFeatureMetadataResponse (..),
+    newDescribeFeatureMetadataResponse,
+
+    -- * Response Lenses
+    describeFeatureMetadataResponse_description,
+    describeFeatureMetadataResponse_parameters,
+    describeFeatureMetadataResponse_httpStatus,
+    describeFeatureMetadataResponse_featureGroupArn,
+    describeFeatureMetadataResponse_featureGroupName,
+    describeFeatureMetadataResponse_featureName,
+    describeFeatureMetadataResponse_featureType,
+    describeFeatureMetadataResponse_creationTime,
+    describeFeatureMetadataResponse_lastModifiedTime,
+  )
+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:/ 'newDescribeFeatureMetadata' smart constructor.
+data DescribeFeatureMetadata = DescribeFeatureMetadata'
+  { -- | The name of the feature group containing the feature.
+    featureGroupName :: Prelude.Text,
+    -- | The name of the feature.
+    featureName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFeatureMetadata' 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:
+--
+-- 'featureGroupName', 'describeFeatureMetadata_featureGroupName' - The name of the feature group containing the feature.
+--
+-- 'featureName', 'describeFeatureMetadata_featureName' - The name of the feature.
+newDescribeFeatureMetadata ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  -- | 'featureName'
+  Prelude.Text ->
+  DescribeFeatureMetadata
+newDescribeFeatureMetadata
+  pFeatureGroupName_
+  pFeatureName_ =
+    DescribeFeatureMetadata'
+      { featureGroupName =
+          pFeatureGroupName_,
+        featureName = pFeatureName_
+      }
+
+-- | The name of the feature group containing the feature.
+describeFeatureMetadata_featureGroupName :: Lens.Lens' DescribeFeatureMetadata Prelude.Text
+describeFeatureMetadata_featureGroupName = Lens.lens (\DescribeFeatureMetadata' {featureGroupName} -> featureGroupName) (\s@DescribeFeatureMetadata' {} a -> s {featureGroupName = a} :: DescribeFeatureMetadata)
+
+-- | The name of the feature.
+describeFeatureMetadata_featureName :: Lens.Lens' DescribeFeatureMetadata Prelude.Text
+describeFeatureMetadata_featureName = Lens.lens (\DescribeFeatureMetadata' {featureName} -> featureName) (\s@DescribeFeatureMetadata' {} a -> s {featureName = a} :: DescribeFeatureMetadata)
+
+instance Core.AWSRequest DescribeFeatureMetadata where
+  type
+    AWSResponse DescribeFeatureMetadata =
+      DescribeFeatureMetadataResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFeatureMetadataResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "Parameters" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "FeatureGroupArn")
+            Prelude.<*> (x Data..:> "FeatureGroupName")
+            Prelude.<*> (x Data..:> "FeatureName")
+            Prelude.<*> (x Data..:> "FeatureType")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+      )
+
+instance Prelude.Hashable DescribeFeatureMetadata where
+  hashWithSalt _salt DescribeFeatureMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` featureGroupName
+      `Prelude.hashWithSalt` featureName
+
+instance Prelude.NFData DescribeFeatureMetadata where
+  rnf DescribeFeatureMetadata' {..} =
+    Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf featureName
+
+instance Data.ToHeaders DescribeFeatureMetadata where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeFeatureMetadata" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFeatureMetadata where
+  toJSON DescribeFeatureMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName),
+            Prelude.Just ("FeatureName" Data..= featureName)
+          ]
+      )
+
+instance Data.ToPath DescribeFeatureMetadata where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFeatureMetadata where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFeatureMetadataResponse' smart constructor.
+data DescribeFeatureMetadataResponse = DescribeFeatureMetadataResponse'
+  { -- | The description you added to describe the feature.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The key-value pairs that you added to describe the feature.
+    parameters :: Prelude.Maybe [FeatureParameter],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Number (ARN) of the feature group that contains the
+    -- feature.
+    featureGroupArn :: Prelude.Text,
+    -- | The name of the feature group that you\'ve specified.
+    featureGroupName :: Prelude.Text,
+    -- | The name of the feature that you\'ve specified.
+    featureName :: Prelude.Text,
+    -- | The data type of the feature.
+    featureType :: FeatureType,
+    -- | A timestamp indicating when the feature was created.
+    creationTime :: Data.POSIX,
+    -- | A timestamp indicating when the metadata for the feature group was
+    -- modified. For example, if you add a parameter describing the feature,
+    -- the timestamp changes to reflect the last time you
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFeatureMetadataResponse' 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:
+--
+-- 'description', 'describeFeatureMetadataResponse_description' - The description you added to describe the feature.
+--
+-- 'parameters', 'describeFeatureMetadataResponse_parameters' - The key-value pairs that you added to describe the feature.
+--
+-- 'httpStatus', 'describeFeatureMetadataResponse_httpStatus' - The response's http status code.
+--
+-- 'featureGroupArn', 'describeFeatureMetadataResponse_featureGroupArn' - The Amazon Resource Number (ARN) of the feature group that contains the
+-- feature.
+--
+-- 'featureGroupName', 'describeFeatureMetadataResponse_featureGroupName' - The name of the feature group that you\'ve specified.
+--
+-- 'featureName', 'describeFeatureMetadataResponse_featureName' - The name of the feature that you\'ve specified.
+--
+-- 'featureType', 'describeFeatureMetadataResponse_featureType' - The data type of the feature.
+--
+-- 'creationTime', 'describeFeatureMetadataResponse_creationTime' - A timestamp indicating when the feature was created.
+--
+-- 'lastModifiedTime', 'describeFeatureMetadataResponse_lastModifiedTime' - A timestamp indicating when the metadata for the feature group was
+-- modified. For example, if you add a parameter describing the feature,
+-- the timestamp changes to reflect the last time you
+newDescribeFeatureMetadataResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'featureGroupArn'
+  Prelude.Text ->
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  -- | 'featureName'
+  Prelude.Text ->
+  -- | 'featureType'
+  FeatureType ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  DescribeFeatureMetadataResponse
+newDescribeFeatureMetadataResponse
+  pHttpStatus_
+  pFeatureGroupArn_
+  pFeatureGroupName_
+  pFeatureName_
+  pFeatureType_
+  pCreationTime_
+  pLastModifiedTime_ =
+    DescribeFeatureMetadataResponse'
+      { description =
+          Prelude.Nothing,
+        parameters = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        featureGroupArn = pFeatureGroupArn_,
+        featureGroupName = pFeatureGroupName_,
+        featureName = pFeatureName_,
+        featureType = pFeatureType_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | The description you added to describe the feature.
+describeFeatureMetadataResponse_description :: Lens.Lens' DescribeFeatureMetadataResponse (Prelude.Maybe Prelude.Text)
+describeFeatureMetadataResponse_description = Lens.lens (\DescribeFeatureMetadataResponse' {description} -> description) (\s@DescribeFeatureMetadataResponse' {} a -> s {description = a} :: DescribeFeatureMetadataResponse)
+
+-- | The key-value pairs that you added to describe the feature.
+describeFeatureMetadataResponse_parameters :: Lens.Lens' DescribeFeatureMetadataResponse (Prelude.Maybe [FeatureParameter])
+describeFeatureMetadataResponse_parameters = Lens.lens (\DescribeFeatureMetadataResponse' {parameters} -> parameters) (\s@DescribeFeatureMetadataResponse' {} a -> s {parameters = a} :: DescribeFeatureMetadataResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeFeatureMetadataResponse_httpStatus :: Lens.Lens' DescribeFeatureMetadataResponse Prelude.Int
+describeFeatureMetadataResponse_httpStatus = Lens.lens (\DescribeFeatureMetadataResponse' {httpStatus} -> httpStatus) (\s@DescribeFeatureMetadataResponse' {} a -> s {httpStatus = a} :: DescribeFeatureMetadataResponse)
+
+-- | The Amazon Resource Number (ARN) of the feature group that contains the
+-- feature.
+describeFeatureMetadataResponse_featureGroupArn :: Lens.Lens' DescribeFeatureMetadataResponse Prelude.Text
+describeFeatureMetadataResponse_featureGroupArn = Lens.lens (\DescribeFeatureMetadataResponse' {featureGroupArn} -> featureGroupArn) (\s@DescribeFeatureMetadataResponse' {} a -> s {featureGroupArn = a} :: DescribeFeatureMetadataResponse)
+
+-- | The name of the feature group that you\'ve specified.
+describeFeatureMetadataResponse_featureGroupName :: Lens.Lens' DescribeFeatureMetadataResponse Prelude.Text
+describeFeatureMetadataResponse_featureGroupName = Lens.lens (\DescribeFeatureMetadataResponse' {featureGroupName} -> featureGroupName) (\s@DescribeFeatureMetadataResponse' {} a -> s {featureGroupName = a} :: DescribeFeatureMetadataResponse)
+
+-- | The name of the feature that you\'ve specified.
+describeFeatureMetadataResponse_featureName :: Lens.Lens' DescribeFeatureMetadataResponse Prelude.Text
+describeFeatureMetadataResponse_featureName = Lens.lens (\DescribeFeatureMetadataResponse' {featureName} -> featureName) (\s@DescribeFeatureMetadataResponse' {} a -> s {featureName = a} :: DescribeFeatureMetadataResponse)
+
+-- | The data type of the feature.
+describeFeatureMetadataResponse_featureType :: Lens.Lens' DescribeFeatureMetadataResponse FeatureType
+describeFeatureMetadataResponse_featureType = Lens.lens (\DescribeFeatureMetadataResponse' {featureType} -> featureType) (\s@DescribeFeatureMetadataResponse' {} a -> s {featureType = a} :: DescribeFeatureMetadataResponse)
+
+-- | A timestamp indicating when the feature was created.
+describeFeatureMetadataResponse_creationTime :: Lens.Lens' DescribeFeatureMetadataResponse Prelude.UTCTime
+describeFeatureMetadataResponse_creationTime = Lens.lens (\DescribeFeatureMetadataResponse' {creationTime} -> creationTime) (\s@DescribeFeatureMetadataResponse' {} a -> s {creationTime = a} :: DescribeFeatureMetadataResponse) Prelude.. Data._Time
+
+-- | A timestamp indicating when the metadata for the feature group was
+-- modified. For example, if you add a parameter describing the feature,
+-- the timestamp changes to reflect the last time you
+describeFeatureMetadataResponse_lastModifiedTime :: Lens.Lens' DescribeFeatureMetadataResponse Prelude.UTCTime
+describeFeatureMetadataResponse_lastModifiedTime = Lens.lens (\DescribeFeatureMetadataResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeFeatureMetadataResponse' {} a -> s {lastModifiedTime = a} :: DescribeFeatureMetadataResponse) Prelude.. Data._Time
+
+instance
+  Prelude.NFData
+    DescribeFeatureMetadataResponse
+  where
+  rnf DescribeFeatureMetadataResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf featureGroupArn
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf featureName
+      `Prelude.seq` Prelude.rnf featureType
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/DescribeFlowDefinition.hs b/gen/Amazonka/SageMaker/DescribeFlowDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeFlowDefinition.hs
@@ -0,0 +1,324 @@
+{-# 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.DescribeFlowDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about the specified flow definition.
+module Amazonka.SageMaker.DescribeFlowDefinition
+  ( -- * Creating a Request
+    DescribeFlowDefinition (..),
+    newDescribeFlowDefinition,
+
+    -- * Request Lenses
+    describeFlowDefinition_flowDefinitionName,
+
+    -- * Destructuring the Response
+    DescribeFlowDefinitionResponse (..),
+    newDescribeFlowDefinitionResponse,
+
+    -- * Response Lenses
+    describeFlowDefinitionResponse_failureReason,
+    describeFlowDefinitionResponse_humanLoopActivationConfig,
+    describeFlowDefinitionResponse_humanLoopRequestSource,
+    describeFlowDefinitionResponse_httpStatus,
+    describeFlowDefinitionResponse_flowDefinitionArn,
+    describeFlowDefinitionResponse_flowDefinitionName,
+    describeFlowDefinitionResponse_flowDefinitionStatus,
+    describeFlowDefinitionResponse_creationTime,
+    describeFlowDefinitionResponse_humanLoopConfig,
+    describeFlowDefinitionResponse_outputConfig,
+    describeFlowDefinitionResponse_roleArn,
+  )
+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:/ 'newDescribeFlowDefinition' smart constructor.
+data DescribeFlowDefinition = DescribeFlowDefinition'
+  { -- | The name of the flow definition.
+    flowDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFlowDefinition' 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:
+--
+-- 'flowDefinitionName', 'describeFlowDefinition_flowDefinitionName' - The name of the flow definition.
+newDescribeFlowDefinition ::
+  -- | 'flowDefinitionName'
+  Prelude.Text ->
+  DescribeFlowDefinition
+newDescribeFlowDefinition pFlowDefinitionName_ =
+  DescribeFlowDefinition'
+    { flowDefinitionName =
+        pFlowDefinitionName_
+    }
+
+-- | The name of the flow definition.
+describeFlowDefinition_flowDefinitionName :: Lens.Lens' DescribeFlowDefinition Prelude.Text
+describeFlowDefinition_flowDefinitionName = Lens.lens (\DescribeFlowDefinition' {flowDefinitionName} -> flowDefinitionName) (\s@DescribeFlowDefinition' {} a -> s {flowDefinitionName = a} :: DescribeFlowDefinition)
+
+instance Core.AWSRequest DescribeFlowDefinition where
+  type
+    AWSResponse DescribeFlowDefinition =
+      DescribeFlowDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFlowDefinitionResponse'
+            Prelude.<$> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "HumanLoopActivationConfig")
+            Prelude.<*> (x Data..?> "HumanLoopRequestSource")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "FlowDefinitionArn")
+            Prelude.<*> (x Data..:> "FlowDefinitionName")
+            Prelude.<*> (x Data..:> "FlowDefinitionStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "HumanLoopConfig")
+            Prelude.<*> (x Data..:> "OutputConfig")
+            Prelude.<*> (x Data..:> "RoleArn")
+      )
+
+instance Prelude.Hashable DescribeFlowDefinition where
+  hashWithSalt _salt DescribeFlowDefinition' {..} =
+    _salt `Prelude.hashWithSalt` flowDefinitionName
+
+instance Prelude.NFData DescribeFlowDefinition where
+  rnf DescribeFlowDefinition' {..} =
+    Prelude.rnf flowDefinitionName
+
+instance Data.ToHeaders DescribeFlowDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeFlowDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFlowDefinition where
+  toJSON DescribeFlowDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FlowDefinitionName" Data..= flowDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DescribeFlowDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFlowDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFlowDefinitionResponse' smart constructor.
+data DescribeFlowDefinitionResponse = DescribeFlowDefinitionResponse'
+  { -- | The reason your flow definition failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | An object containing information about what triggers a human review
+    -- workflow.
+    humanLoopActivationConfig :: Prelude.Maybe HumanLoopActivationConfig,
+    -- | Container for configuring the source of human task requests. Used to
+    -- specify if Amazon Rekognition or Amazon Textract is used as an
+    -- integration source.
+    humanLoopRequestSource :: Prelude.Maybe HumanLoopRequestSource,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the flow defintion.
+    flowDefinitionArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the flow definition.
+    flowDefinitionName :: Prelude.Text,
+    -- | The status of the flow definition. Valid values are listed below.
+    flowDefinitionStatus :: FlowDefinitionStatus,
+    -- | The timestamp when the flow definition was created.
+    creationTime :: Data.POSIX,
+    -- | An object containing information about who works on the task, the
+    -- workforce task price, and other task details.
+    humanLoopConfig :: HumanLoopConfig,
+    -- | An object containing information about the output file.
+    outputConfig :: FlowDefinitionOutputConfig,
+    -- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+    -- Access Management (IAM) execution role for the flow definition.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFlowDefinitionResponse' 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:
+--
+-- 'failureReason', 'describeFlowDefinitionResponse_failureReason' - The reason your flow definition failed.
+--
+-- 'humanLoopActivationConfig', 'describeFlowDefinitionResponse_humanLoopActivationConfig' - An object containing information about what triggers a human review
+-- workflow.
+--
+-- 'humanLoopRequestSource', 'describeFlowDefinitionResponse_humanLoopRequestSource' - Container for configuring the source of human task requests. Used to
+-- specify if Amazon Rekognition or Amazon Textract is used as an
+-- integration source.
+--
+-- 'httpStatus', 'describeFlowDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'flowDefinitionArn', 'describeFlowDefinitionResponse_flowDefinitionArn' - The Amazon Resource Name (ARN) of the flow defintion.
+--
+-- 'flowDefinitionName', 'describeFlowDefinitionResponse_flowDefinitionName' - The Amazon Resource Name (ARN) of the flow definition.
+--
+-- 'flowDefinitionStatus', 'describeFlowDefinitionResponse_flowDefinitionStatus' - The status of the flow definition. Valid values are listed below.
+--
+-- 'creationTime', 'describeFlowDefinitionResponse_creationTime' - The timestamp when the flow definition was created.
+--
+-- 'humanLoopConfig', 'describeFlowDefinitionResponse_humanLoopConfig' - An object containing information about who works on the task, the
+-- workforce task price, and other task details.
+--
+-- 'outputConfig', 'describeFlowDefinitionResponse_outputConfig' - An object containing information about the output file.
+--
+-- 'roleArn', 'describeFlowDefinitionResponse_roleArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) execution role for the flow definition.
+newDescribeFlowDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'flowDefinitionArn'
+  Prelude.Text ->
+  -- | 'flowDefinitionName'
+  Prelude.Text ->
+  -- | 'flowDefinitionStatus'
+  FlowDefinitionStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'humanLoopConfig'
+  HumanLoopConfig ->
+  -- | 'outputConfig'
+  FlowDefinitionOutputConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  DescribeFlowDefinitionResponse
+newDescribeFlowDefinitionResponse
+  pHttpStatus_
+  pFlowDefinitionArn_
+  pFlowDefinitionName_
+  pFlowDefinitionStatus_
+  pCreationTime_
+  pHumanLoopConfig_
+  pOutputConfig_
+  pRoleArn_ =
+    DescribeFlowDefinitionResponse'
+      { failureReason =
+          Prelude.Nothing,
+        humanLoopActivationConfig = Prelude.Nothing,
+        humanLoopRequestSource = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        flowDefinitionArn = pFlowDefinitionArn_,
+        flowDefinitionName = pFlowDefinitionName_,
+        flowDefinitionStatus =
+          pFlowDefinitionStatus_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        humanLoopConfig = pHumanLoopConfig_,
+        outputConfig = pOutputConfig_,
+        roleArn = pRoleArn_
+      }
+
+-- | The reason your flow definition failed.
+describeFlowDefinitionResponse_failureReason :: Lens.Lens' DescribeFlowDefinitionResponse (Prelude.Maybe Prelude.Text)
+describeFlowDefinitionResponse_failureReason = Lens.lens (\DescribeFlowDefinitionResponse' {failureReason} -> failureReason) (\s@DescribeFlowDefinitionResponse' {} a -> s {failureReason = a} :: DescribeFlowDefinitionResponse)
+
+-- | An object containing information about what triggers a human review
+-- workflow.
+describeFlowDefinitionResponse_humanLoopActivationConfig :: Lens.Lens' DescribeFlowDefinitionResponse (Prelude.Maybe HumanLoopActivationConfig)
+describeFlowDefinitionResponse_humanLoopActivationConfig = Lens.lens (\DescribeFlowDefinitionResponse' {humanLoopActivationConfig} -> humanLoopActivationConfig) (\s@DescribeFlowDefinitionResponse' {} a -> s {humanLoopActivationConfig = a} :: DescribeFlowDefinitionResponse)
+
+-- | Container for configuring the source of human task requests. Used to
+-- specify if Amazon Rekognition or Amazon Textract is used as an
+-- integration source.
+describeFlowDefinitionResponse_humanLoopRequestSource :: Lens.Lens' DescribeFlowDefinitionResponse (Prelude.Maybe HumanLoopRequestSource)
+describeFlowDefinitionResponse_humanLoopRequestSource = Lens.lens (\DescribeFlowDefinitionResponse' {humanLoopRequestSource} -> humanLoopRequestSource) (\s@DescribeFlowDefinitionResponse' {} a -> s {humanLoopRequestSource = a} :: DescribeFlowDefinitionResponse)
+
+-- | The response's http status code.
+describeFlowDefinitionResponse_httpStatus :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Int
+describeFlowDefinitionResponse_httpStatus = Lens.lens (\DescribeFlowDefinitionResponse' {httpStatus} -> httpStatus) (\s@DescribeFlowDefinitionResponse' {} a -> s {httpStatus = a} :: DescribeFlowDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the flow defintion.
+describeFlowDefinitionResponse_flowDefinitionArn :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Text
+describeFlowDefinitionResponse_flowDefinitionArn = Lens.lens (\DescribeFlowDefinitionResponse' {flowDefinitionArn} -> flowDefinitionArn) (\s@DescribeFlowDefinitionResponse' {} a -> s {flowDefinitionArn = a} :: DescribeFlowDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the flow definition.
+describeFlowDefinitionResponse_flowDefinitionName :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Text
+describeFlowDefinitionResponse_flowDefinitionName = Lens.lens (\DescribeFlowDefinitionResponse' {flowDefinitionName} -> flowDefinitionName) (\s@DescribeFlowDefinitionResponse' {} a -> s {flowDefinitionName = a} :: DescribeFlowDefinitionResponse)
+
+-- | The status of the flow definition. Valid values are listed below.
+describeFlowDefinitionResponse_flowDefinitionStatus :: Lens.Lens' DescribeFlowDefinitionResponse FlowDefinitionStatus
+describeFlowDefinitionResponse_flowDefinitionStatus = Lens.lens (\DescribeFlowDefinitionResponse' {flowDefinitionStatus} -> flowDefinitionStatus) (\s@DescribeFlowDefinitionResponse' {} a -> s {flowDefinitionStatus = a} :: DescribeFlowDefinitionResponse)
+
+-- | The timestamp when the flow definition was created.
+describeFlowDefinitionResponse_creationTime :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.UTCTime
+describeFlowDefinitionResponse_creationTime = Lens.lens (\DescribeFlowDefinitionResponse' {creationTime} -> creationTime) (\s@DescribeFlowDefinitionResponse' {} a -> s {creationTime = a} :: DescribeFlowDefinitionResponse) Prelude.. Data._Time
+
+-- | An object containing information about who works on the task, the
+-- workforce task price, and other task details.
+describeFlowDefinitionResponse_humanLoopConfig :: Lens.Lens' DescribeFlowDefinitionResponse HumanLoopConfig
+describeFlowDefinitionResponse_humanLoopConfig = Lens.lens (\DescribeFlowDefinitionResponse' {humanLoopConfig} -> humanLoopConfig) (\s@DescribeFlowDefinitionResponse' {} a -> s {humanLoopConfig = a} :: DescribeFlowDefinitionResponse)
+
+-- | An object containing information about the output file.
+describeFlowDefinitionResponse_outputConfig :: Lens.Lens' DescribeFlowDefinitionResponse FlowDefinitionOutputConfig
+describeFlowDefinitionResponse_outputConfig = Lens.lens (\DescribeFlowDefinitionResponse' {outputConfig} -> outputConfig) (\s@DescribeFlowDefinitionResponse' {} a -> s {outputConfig = a} :: DescribeFlowDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) execution role for the flow definition.
+describeFlowDefinitionResponse_roleArn :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Text
+describeFlowDefinitionResponse_roleArn = Lens.lens (\DescribeFlowDefinitionResponse' {roleArn} -> roleArn) (\s@DescribeFlowDefinitionResponse' {} a -> s {roleArn = a} :: DescribeFlowDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeFlowDefinitionResponse
+  where
+  rnf DescribeFlowDefinitionResponse' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf humanLoopActivationConfig
+      `Prelude.seq` Prelude.rnf humanLoopRequestSource
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf flowDefinitionArn
+      `Prelude.seq` Prelude.rnf flowDefinitionName
+      `Prelude.seq` Prelude.rnf flowDefinitionStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf humanLoopConfig
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf roleArn
diff --git a/gen/Amazonka/SageMaker/DescribeHub.hs b/gen/Amazonka/SageMaker/DescribeHub.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeHub.hs
@@ -0,0 +1,292 @@
+{-# 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.DescribeHub
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describe a hub.
+module Amazonka.SageMaker.DescribeHub
+  ( -- * Creating a Request
+    DescribeHub (..),
+    newDescribeHub,
+
+    -- * Request Lenses
+    describeHub_hubName,
+
+    -- * Destructuring the Response
+    DescribeHubResponse (..),
+    newDescribeHubResponse,
+
+    -- * Response Lenses
+    describeHubResponse_failureReason,
+    describeHubResponse_hubDescription,
+    describeHubResponse_hubDisplayName,
+    describeHubResponse_hubSearchKeywords,
+    describeHubResponse_s3StorageConfig,
+    describeHubResponse_httpStatus,
+    describeHubResponse_hubName,
+    describeHubResponse_hubArn,
+    describeHubResponse_hubStatus,
+    describeHubResponse_creationTime,
+    describeHubResponse_lastModifiedTime,
+  )
+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:/ 'newDescribeHub' smart constructor.
+data DescribeHub = DescribeHub'
+  { -- | The name of the hub to describe.
+    hubName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHub' 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:
+--
+-- 'hubName', 'describeHub_hubName' - The name of the hub to describe.
+newDescribeHub ::
+  -- | 'hubName'
+  Prelude.Text ->
+  DescribeHub
+newDescribeHub pHubName_ =
+  DescribeHub' {hubName = pHubName_}
+
+-- | The name of the hub to describe.
+describeHub_hubName :: Lens.Lens' DescribeHub Prelude.Text
+describeHub_hubName = Lens.lens (\DescribeHub' {hubName} -> hubName) (\s@DescribeHub' {} a -> s {hubName = a} :: DescribeHub)
+
+instance Core.AWSRequest DescribeHub where
+  type AWSResponse DescribeHub = DescribeHubResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeHubResponse'
+            Prelude.<$> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "HubDescription")
+            Prelude.<*> (x Data..?> "HubDisplayName")
+            Prelude.<*> ( x
+                            Data..?> "HubSearchKeywords"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "S3StorageConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HubName")
+            Prelude.<*> (x Data..:> "HubArn")
+            Prelude.<*> (x Data..:> "HubStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+      )
+
+instance Prelude.Hashable DescribeHub where
+  hashWithSalt _salt DescribeHub' {..} =
+    _salt `Prelude.hashWithSalt` hubName
+
+instance Prelude.NFData DescribeHub where
+  rnf DescribeHub' {..} = Prelude.rnf hubName
+
+instance Data.ToHeaders DescribeHub where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeHub" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeHub where
+  toJSON DescribeHub' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("HubName" Data..= hubName)]
+      )
+
+instance Data.ToPath DescribeHub where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeHub where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeHubResponse' smart constructor.
+data DescribeHubResponse = DescribeHubResponse'
+  { -- | The failure reason if importing hub content failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A description of the hub.
+    hubDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the hub.
+    hubDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords for the hub.
+    hubSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The Amazon S3 storage configuration for the hub.
+    s3StorageConfig :: Prelude.Maybe HubS3StorageConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the hub.
+    hubName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the hub.
+    hubArn :: Prelude.Text,
+    -- | The status of the hub.
+    hubStatus :: HubStatus,
+    -- | The date and time that the hub was created.
+    creationTime :: Data.POSIX,
+    -- | The date and time that the hub was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHubResponse' 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:
+--
+-- 'failureReason', 'describeHubResponse_failureReason' - The failure reason if importing hub content failed.
+--
+-- 'hubDescription', 'describeHubResponse_hubDescription' - A description of the hub.
+--
+-- 'hubDisplayName', 'describeHubResponse_hubDisplayName' - The display name of the hub.
+--
+-- 'hubSearchKeywords', 'describeHubResponse_hubSearchKeywords' - The searchable keywords for the hub.
+--
+-- 's3StorageConfig', 'describeHubResponse_s3StorageConfig' - The Amazon S3 storage configuration for the hub.
+--
+-- 'httpStatus', 'describeHubResponse_httpStatus' - The response's http status code.
+--
+-- 'hubName', 'describeHubResponse_hubName' - The name of the hub.
+--
+-- 'hubArn', 'describeHubResponse_hubArn' - The Amazon Resource Name (ARN) of the hub.
+--
+-- 'hubStatus', 'describeHubResponse_hubStatus' - The status of the hub.
+--
+-- 'creationTime', 'describeHubResponse_creationTime' - The date and time that the hub was created.
+--
+-- 'lastModifiedTime', 'describeHubResponse_lastModifiedTime' - The date and time that the hub was last modified.
+newDescribeHubResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubArn'
+  Prelude.Text ->
+  -- | 'hubStatus'
+  HubStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  DescribeHubResponse
+newDescribeHubResponse
+  pHttpStatus_
+  pHubName_
+  pHubArn_
+  pHubStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    DescribeHubResponse'
+      { failureReason =
+          Prelude.Nothing,
+        hubDescription = Prelude.Nothing,
+        hubDisplayName = Prelude.Nothing,
+        hubSearchKeywords = Prelude.Nothing,
+        s3StorageConfig = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        hubName = pHubName_,
+        hubArn = pHubArn_,
+        hubStatus = pHubStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | The failure reason if importing hub content failed.
+describeHubResponse_failureReason :: Lens.Lens' DescribeHubResponse (Prelude.Maybe Prelude.Text)
+describeHubResponse_failureReason = Lens.lens (\DescribeHubResponse' {failureReason} -> failureReason) (\s@DescribeHubResponse' {} a -> s {failureReason = a} :: DescribeHubResponse)
+
+-- | A description of the hub.
+describeHubResponse_hubDescription :: Lens.Lens' DescribeHubResponse (Prelude.Maybe Prelude.Text)
+describeHubResponse_hubDescription = Lens.lens (\DescribeHubResponse' {hubDescription} -> hubDescription) (\s@DescribeHubResponse' {} a -> s {hubDescription = a} :: DescribeHubResponse)
+
+-- | The display name of the hub.
+describeHubResponse_hubDisplayName :: Lens.Lens' DescribeHubResponse (Prelude.Maybe Prelude.Text)
+describeHubResponse_hubDisplayName = Lens.lens (\DescribeHubResponse' {hubDisplayName} -> hubDisplayName) (\s@DescribeHubResponse' {} a -> s {hubDisplayName = a} :: DescribeHubResponse)
+
+-- | The searchable keywords for the hub.
+describeHubResponse_hubSearchKeywords :: Lens.Lens' DescribeHubResponse (Prelude.Maybe [Prelude.Text])
+describeHubResponse_hubSearchKeywords = Lens.lens (\DescribeHubResponse' {hubSearchKeywords} -> hubSearchKeywords) (\s@DescribeHubResponse' {} a -> s {hubSearchKeywords = a} :: DescribeHubResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon S3 storage configuration for the hub.
+describeHubResponse_s3StorageConfig :: Lens.Lens' DescribeHubResponse (Prelude.Maybe HubS3StorageConfig)
+describeHubResponse_s3StorageConfig = Lens.lens (\DescribeHubResponse' {s3StorageConfig} -> s3StorageConfig) (\s@DescribeHubResponse' {} a -> s {s3StorageConfig = a} :: DescribeHubResponse)
+
+-- | The response's http status code.
+describeHubResponse_httpStatus :: Lens.Lens' DescribeHubResponse Prelude.Int
+describeHubResponse_httpStatus = Lens.lens (\DescribeHubResponse' {httpStatus} -> httpStatus) (\s@DescribeHubResponse' {} a -> s {httpStatus = a} :: DescribeHubResponse)
+
+-- | The name of the hub.
+describeHubResponse_hubName :: Lens.Lens' DescribeHubResponse Prelude.Text
+describeHubResponse_hubName = Lens.lens (\DescribeHubResponse' {hubName} -> hubName) (\s@DescribeHubResponse' {} a -> s {hubName = a} :: DescribeHubResponse)
+
+-- | The Amazon Resource Name (ARN) of the hub.
+describeHubResponse_hubArn :: Lens.Lens' DescribeHubResponse Prelude.Text
+describeHubResponse_hubArn = Lens.lens (\DescribeHubResponse' {hubArn} -> hubArn) (\s@DescribeHubResponse' {} a -> s {hubArn = a} :: DescribeHubResponse)
+
+-- | The status of the hub.
+describeHubResponse_hubStatus :: Lens.Lens' DescribeHubResponse HubStatus
+describeHubResponse_hubStatus = Lens.lens (\DescribeHubResponse' {hubStatus} -> hubStatus) (\s@DescribeHubResponse' {} a -> s {hubStatus = a} :: DescribeHubResponse)
+
+-- | The date and time that the hub was created.
+describeHubResponse_creationTime :: Lens.Lens' DescribeHubResponse Prelude.UTCTime
+describeHubResponse_creationTime = Lens.lens (\DescribeHubResponse' {creationTime} -> creationTime) (\s@DescribeHubResponse' {} a -> s {creationTime = a} :: DescribeHubResponse) Prelude.. Data._Time
+
+-- | The date and time that the hub was last modified.
+describeHubResponse_lastModifiedTime :: Lens.Lens' DescribeHubResponse Prelude.UTCTime
+describeHubResponse_lastModifiedTime = Lens.lens (\DescribeHubResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeHubResponse' {} a -> s {lastModifiedTime = a} :: DescribeHubResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeHubResponse where
+  rnf DescribeHubResponse' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf hubDescription
+      `Prelude.seq` Prelude.rnf hubDisplayName
+      `Prelude.seq` Prelude.rnf hubSearchKeywords
+      `Prelude.seq` Prelude.rnf s3StorageConfig
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubArn
+      `Prelude.seq` Prelude.rnf hubStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/DescribeHubContent.hs b/gen/Amazonka/SageMaker/DescribeHubContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeHubContent.hs
@@ -0,0 +1,446 @@
+{-# 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.DescribeHubContent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describe the content of a hub.
+module Amazonka.SageMaker.DescribeHubContent
+  ( -- * Creating a Request
+    DescribeHubContent (..),
+    newDescribeHubContent,
+
+    -- * Request Lenses
+    describeHubContent_hubContentVersion,
+    describeHubContent_hubName,
+    describeHubContent_hubContentType,
+    describeHubContent_hubContentName,
+
+    -- * Destructuring the Response
+    DescribeHubContentResponse (..),
+    newDescribeHubContentResponse,
+
+    -- * Response Lenses
+    describeHubContentResponse_failureReason,
+    describeHubContentResponse_hubContentDependencies,
+    describeHubContentResponse_hubContentDescription,
+    describeHubContentResponse_hubContentDisplayName,
+    describeHubContentResponse_hubContentMarkdown,
+    describeHubContentResponse_hubContentSearchKeywords,
+    describeHubContentResponse_httpStatus,
+    describeHubContentResponse_hubContentName,
+    describeHubContentResponse_hubContentArn,
+    describeHubContentResponse_hubContentVersion,
+    describeHubContentResponse_hubContentType,
+    describeHubContentResponse_documentSchemaVersion,
+    describeHubContentResponse_hubName,
+    describeHubContentResponse_hubArn,
+    describeHubContentResponse_hubContentDocument,
+    describeHubContentResponse_hubContentStatus,
+    describeHubContentResponse_creationTime,
+  )
+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:/ 'newDescribeHubContent' smart constructor.
+data DescribeHubContent = DescribeHubContent'
+  { -- | The version of the content to describe.
+    hubContentVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the hub that contains the content to describe.
+    hubName :: Prelude.Text,
+    -- | The type of content in the hub.
+    hubContentType :: HubContentType,
+    -- | The name of the content to describe.
+    hubContentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHubContent' 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:
+--
+-- 'hubContentVersion', 'describeHubContent_hubContentVersion' - The version of the content to describe.
+--
+-- 'hubName', 'describeHubContent_hubName' - The name of the hub that contains the content to describe.
+--
+-- 'hubContentType', 'describeHubContent_hubContentType' - The type of content in the hub.
+--
+-- 'hubContentName', 'describeHubContent_hubContentName' - The name of the content to describe.
+newDescribeHubContent ::
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  -- | 'hubContentName'
+  Prelude.Text ->
+  DescribeHubContent
+newDescribeHubContent
+  pHubName_
+  pHubContentType_
+  pHubContentName_ =
+    DescribeHubContent'
+      { hubContentVersion =
+          Prelude.Nothing,
+        hubName = pHubName_,
+        hubContentType = pHubContentType_,
+        hubContentName = pHubContentName_
+      }
+
+-- | The version of the content to describe.
+describeHubContent_hubContentVersion :: Lens.Lens' DescribeHubContent (Prelude.Maybe Prelude.Text)
+describeHubContent_hubContentVersion = Lens.lens (\DescribeHubContent' {hubContentVersion} -> hubContentVersion) (\s@DescribeHubContent' {} a -> s {hubContentVersion = a} :: DescribeHubContent)
+
+-- | The name of the hub that contains the content to describe.
+describeHubContent_hubName :: Lens.Lens' DescribeHubContent Prelude.Text
+describeHubContent_hubName = Lens.lens (\DescribeHubContent' {hubName} -> hubName) (\s@DescribeHubContent' {} a -> s {hubName = a} :: DescribeHubContent)
+
+-- | The type of content in the hub.
+describeHubContent_hubContentType :: Lens.Lens' DescribeHubContent HubContentType
+describeHubContent_hubContentType = Lens.lens (\DescribeHubContent' {hubContentType} -> hubContentType) (\s@DescribeHubContent' {} a -> s {hubContentType = a} :: DescribeHubContent)
+
+-- | The name of the content to describe.
+describeHubContent_hubContentName :: Lens.Lens' DescribeHubContent Prelude.Text
+describeHubContent_hubContentName = Lens.lens (\DescribeHubContent' {hubContentName} -> hubContentName) (\s@DescribeHubContent' {} a -> s {hubContentName = a} :: DescribeHubContent)
+
+instance Core.AWSRequest DescribeHubContent where
+  type
+    AWSResponse DescribeHubContent =
+      DescribeHubContentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeHubContentResponse'
+            Prelude.<$> (x Data..?> "FailureReason")
+            Prelude.<*> ( x
+                            Data..?> "HubContentDependencies"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "HubContentDescription")
+            Prelude.<*> (x Data..?> "HubContentDisplayName")
+            Prelude.<*> (x Data..?> "HubContentMarkdown")
+            Prelude.<*> ( x
+                            Data..?> "HubContentSearchKeywords"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HubContentName")
+            Prelude.<*> (x Data..:> "HubContentArn")
+            Prelude.<*> (x Data..:> "HubContentVersion")
+            Prelude.<*> (x Data..:> "HubContentType")
+            Prelude.<*> (x Data..:> "DocumentSchemaVersion")
+            Prelude.<*> (x Data..:> "HubName")
+            Prelude.<*> (x Data..:> "HubArn")
+            Prelude.<*> (x Data..:> "HubContentDocument")
+            Prelude.<*> (x Data..:> "HubContentStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+      )
+
+instance Prelude.Hashable DescribeHubContent where
+  hashWithSalt _salt DescribeHubContent' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubContentVersion
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubContentType
+      `Prelude.hashWithSalt` hubContentName
+
+instance Prelude.NFData DescribeHubContent where
+  rnf DescribeHubContent' {..} =
+    Prelude.rnf hubContentVersion
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubContentType
+      `Prelude.seq` Prelude.rnf hubContentName
+
+instance Data.ToHeaders DescribeHubContent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeHubContent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeHubContent where
+  toJSON DescribeHubContent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HubContentVersion" Data..=)
+              Prelude.<$> hubContentVersion,
+            Prelude.Just ("HubName" Data..= hubName),
+            Prelude.Just
+              ("HubContentType" Data..= hubContentType),
+            Prelude.Just
+              ("HubContentName" Data..= hubContentName)
+          ]
+      )
+
+instance Data.ToPath DescribeHubContent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeHubContent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeHubContentResponse' smart constructor.
+data DescribeHubContentResponse = DescribeHubContentResponse'
+  { -- | The failure reason if importing hub content failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The location of any dependencies that the hub content has, such as
+    -- scripts, model artifacts, datasets, or notebooks.
+    hubContentDependencies :: Prelude.Maybe [HubContentDependency],
+    -- | A description of the hub content.
+    hubContentDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the hub content.
+    hubContentDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | Markdown files associated with the hub content to import.
+    hubContentMarkdown :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords for the hub content.
+    hubContentSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the hub content.
+    hubContentName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the hub content.
+    hubContentArn :: Prelude.Text,
+    -- | The version of the hub content.
+    hubContentVersion :: Prelude.Text,
+    -- | The type of hub content.
+    hubContentType :: HubContentType,
+    -- | The document schema version for the hub content.
+    documentSchemaVersion :: Prelude.Text,
+    -- | The name of the hub that contains the content.
+    hubName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the hub that contains the content.
+    hubArn :: Prelude.Text,
+    -- | The hub content document that describes information about the hub
+    -- content such as type, associated containers, scripts, and more.
+    hubContentDocument :: Prelude.Text,
+    -- | The status of the hub content.
+    hubContentStatus :: HubContentStatus,
+    -- | The date and time that hub content was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHubContentResponse' 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:
+--
+-- 'failureReason', 'describeHubContentResponse_failureReason' - The failure reason if importing hub content failed.
+--
+-- 'hubContentDependencies', 'describeHubContentResponse_hubContentDependencies' - The location of any dependencies that the hub content has, such as
+-- scripts, model artifacts, datasets, or notebooks.
+--
+-- 'hubContentDescription', 'describeHubContentResponse_hubContentDescription' - A description of the hub content.
+--
+-- 'hubContentDisplayName', 'describeHubContentResponse_hubContentDisplayName' - The display name of the hub content.
+--
+-- 'hubContentMarkdown', 'describeHubContentResponse_hubContentMarkdown' - Markdown files associated with the hub content to import.
+--
+-- 'hubContentSearchKeywords', 'describeHubContentResponse_hubContentSearchKeywords' - The searchable keywords for the hub content.
+--
+-- 'httpStatus', 'describeHubContentResponse_httpStatus' - The response's http status code.
+--
+-- 'hubContentName', 'describeHubContentResponse_hubContentName' - The name of the hub content.
+--
+-- 'hubContentArn', 'describeHubContentResponse_hubContentArn' - The Amazon Resource Name (ARN) of the hub content.
+--
+-- 'hubContentVersion', 'describeHubContentResponse_hubContentVersion' - The version of the hub content.
+--
+-- 'hubContentType', 'describeHubContentResponse_hubContentType' - The type of hub content.
+--
+-- 'documentSchemaVersion', 'describeHubContentResponse_documentSchemaVersion' - The document schema version for the hub content.
+--
+-- 'hubName', 'describeHubContentResponse_hubName' - The name of the hub that contains the content.
+--
+-- 'hubArn', 'describeHubContentResponse_hubArn' - The Amazon Resource Name (ARN) of the hub that contains the content.
+--
+-- 'hubContentDocument', 'describeHubContentResponse_hubContentDocument' - The hub content document that describes information about the hub
+-- content such as type, associated containers, scripts, and more.
+--
+-- 'hubContentStatus', 'describeHubContentResponse_hubContentStatus' - The status of the hub content.
+--
+-- 'creationTime', 'describeHubContentResponse_creationTime' - The date and time that hub content was created.
+newDescribeHubContentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hubContentName'
+  Prelude.Text ->
+  -- | 'hubContentArn'
+  Prelude.Text ->
+  -- | 'hubContentVersion'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  -- | 'documentSchemaVersion'
+  Prelude.Text ->
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubArn'
+  Prelude.Text ->
+  -- | 'hubContentDocument'
+  Prelude.Text ->
+  -- | 'hubContentStatus'
+  HubContentStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DescribeHubContentResponse
+newDescribeHubContentResponse
+  pHttpStatus_
+  pHubContentName_
+  pHubContentArn_
+  pHubContentVersion_
+  pHubContentType_
+  pDocumentSchemaVersion_
+  pHubName_
+  pHubArn_
+  pHubContentDocument_
+  pHubContentStatus_
+  pCreationTime_ =
+    DescribeHubContentResponse'
+      { failureReason =
+          Prelude.Nothing,
+        hubContentDependencies = Prelude.Nothing,
+        hubContentDescription = Prelude.Nothing,
+        hubContentDisplayName = Prelude.Nothing,
+        hubContentMarkdown = Prelude.Nothing,
+        hubContentSearchKeywords = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        hubContentName = pHubContentName_,
+        hubContentArn = pHubContentArn_,
+        hubContentVersion = pHubContentVersion_,
+        hubContentType = pHubContentType_,
+        documentSchemaVersion = pDocumentSchemaVersion_,
+        hubName = pHubName_,
+        hubArn = pHubArn_,
+        hubContentDocument = pHubContentDocument_,
+        hubContentStatus = pHubContentStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The failure reason if importing hub content failed.
+describeHubContentResponse_failureReason :: Lens.Lens' DescribeHubContentResponse (Prelude.Maybe Prelude.Text)
+describeHubContentResponse_failureReason = Lens.lens (\DescribeHubContentResponse' {failureReason} -> failureReason) (\s@DescribeHubContentResponse' {} a -> s {failureReason = a} :: DescribeHubContentResponse)
+
+-- | The location of any dependencies that the hub content has, such as
+-- scripts, model artifacts, datasets, or notebooks.
+describeHubContentResponse_hubContentDependencies :: Lens.Lens' DescribeHubContentResponse (Prelude.Maybe [HubContentDependency])
+describeHubContentResponse_hubContentDependencies = Lens.lens (\DescribeHubContentResponse' {hubContentDependencies} -> hubContentDependencies) (\s@DescribeHubContentResponse' {} a -> s {hubContentDependencies = a} :: DescribeHubContentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description of the hub content.
+describeHubContentResponse_hubContentDescription :: Lens.Lens' DescribeHubContentResponse (Prelude.Maybe Prelude.Text)
+describeHubContentResponse_hubContentDescription = Lens.lens (\DescribeHubContentResponse' {hubContentDescription} -> hubContentDescription) (\s@DescribeHubContentResponse' {} a -> s {hubContentDescription = a} :: DescribeHubContentResponse)
+
+-- | The display name of the hub content.
+describeHubContentResponse_hubContentDisplayName :: Lens.Lens' DescribeHubContentResponse (Prelude.Maybe Prelude.Text)
+describeHubContentResponse_hubContentDisplayName = Lens.lens (\DescribeHubContentResponse' {hubContentDisplayName} -> hubContentDisplayName) (\s@DescribeHubContentResponse' {} a -> s {hubContentDisplayName = a} :: DescribeHubContentResponse)
+
+-- | Markdown files associated with the hub content to import.
+describeHubContentResponse_hubContentMarkdown :: Lens.Lens' DescribeHubContentResponse (Prelude.Maybe Prelude.Text)
+describeHubContentResponse_hubContentMarkdown = Lens.lens (\DescribeHubContentResponse' {hubContentMarkdown} -> hubContentMarkdown) (\s@DescribeHubContentResponse' {} a -> s {hubContentMarkdown = a} :: DescribeHubContentResponse)
+
+-- | The searchable keywords for the hub content.
+describeHubContentResponse_hubContentSearchKeywords :: Lens.Lens' DescribeHubContentResponse (Prelude.Maybe [Prelude.Text])
+describeHubContentResponse_hubContentSearchKeywords = Lens.lens (\DescribeHubContentResponse' {hubContentSearchKeywords} -> hubContentSearchKeywords) (\s@DescribeHubContentResponse' {} a -> s {hubContentSearchKeywords = a} :: DescribeHubContentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeHubContentResponse_httpStatus :: Lens.Lens' DescribeHubContentResponse Prelude.Int
+describeHubContentResponse_httpStatus = Lens.lens (\DescribeHubContentResponse' {httpStatus} -> httpStatus) (\s@DescribeHubContentResponse' {} a -> s {httpStatus = a} :: DescribeHubContentResponse)
+
+-- | The name of the hub content.
+describeHubContentResponse_hubContentName :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_hubContentName = Lens.lens (\DescribeHubContentResponse' {hubContentName} -> hubContentName) (\s@DescribeHubContentResponse' {} a -> s {hubContentName = a} :: DescribeHubContentResponse)
+
+-- | The Amazon Resource Name (ARN) of the hub content.
+describeHubContentResponse_hubContentArn :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_hubContentArn = Lens.lens (\DescribeHubContentResponse' {hubContentArn} -> hubContentArn) (\s@DescribeHubContentResponse' {} a -> s {hubContentArn = a} :: DescribeHubContentResponse)
+
+-- | The version of the hub content.
+describeHubContentResponse_hubContentVersion :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_hubContentVersion = Lens.lens (\DescribeHubContentResponse' {hubContentVersion} -> hubContentVersion) (\s@DescribeHubContentResponse' {} a -> s {hubContentVersion = a} :: DescribeHubContentResponse)
+
+-- | The type of hub content.
+describeHubContentResponse_hubContentType :: Lens.Lens' DescribeHubContentResponse HubContentType
+describeHubContentResponse_hubContentType = Lens.lens (\DescribeHubContentResponse' {hubContentType} -> hubContentType) (\s@DescribeHubContentResponse' {} a -> s {hubContentType = a} :: DescribeHubContentResponse)
+
+-- | The document schema version for the hub content.
+describeHubContentResponse_documentSchemaVersion :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_documentSchemaVersion = Lens.lens (\DescribeHubContentResponse' {documentSchemaVersion} -> documentSchemaVersion) (\s@DescribeHubContentResponse' {} a -> s {documentSchemaVersion = a} :: DescribeHubContentResponse)
+
+-- | The name of the hub that contains the content.
+describeHubContentResponse_hubName :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_hubName = Lens.lens (\DescribeHubContentResponse' {hubName} -> hubName) (\s@DescribeHubContentResponse' {} a -> s {hubName = a} :: DescribeHubContentResponse)
+
+-- | The Amazon Resource Name (ARN) of the hub that contains the content.
+describeHubContentResponse_hubArn :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_hubArn = Lens.lens (\DescribeHubContentResponse' {hubArn} -> hubArn) (\s@DescribeHubContentResponse' {} a -> s {hubArn = a} :: DescribeHubContentResponse)
+
+-- | The hub content document that describes information about the hub
+-- content such as type, associated containers, scripts, and more.
+describeHubContentResponse_hubContentDocument :: Lens.Lens' DescribeHubContentResponse Prelude.Text
+describeHubContentResponse_hubContentDocument = Lens.lens (\DescribeHubContentResponse' {hubContentDocument} -> hubContentDocument) (\s@DescribeHubContentResponse' {} a -> s {hubContentDocument = a} :: DescribeHubContentResponse)
+
+-- | The status of the hub content.
+describeHubContentResponse_hubContentStatus :: Lens.Lens' DescribeHubContentResponse HubContentStatus
+describeHubContentResponse_hubContentStatus = Lens.lens (\DescribeHubContentResponse' {hubContentStatus} -> hubContentStatus) (\s@DescribeHubContentResponse' {} a -> s {hubContentStatus = a} :: DescribeHubContentResponse)
+
+-- | The date and time that hub content was created.
+describeHubContentResponse_creationTime :: Lens.Lens' DescribeHubContentResponse Prelude.UTCTime
+describeHubContentResponse_creationTime = Lens.lens (\DescribeHubContentResponse' {creationTime} -> creationTime) (\s@DescribeHubContentResponse' {} a -> s {creationTime = a} :: DescribeHubContentResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeHubContentResponse where
+  rnf DescribeHubContentResponse' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf hubContentDependencies
+      `Prelude.seq` Prelude.rnf hubContentDescription
+      `Prelude.seq` Prelude.rnf hubContentDisplayName
+      `Prelude.seq` Prelude.rnf hubContentMarkdown
+      `Prelude.seq` Prelude.rnf hubContentSearchKeywords
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubContentName
+      `Prelude.seq` Prelude.rnf hubContentArn
+      `Prelude.seq` Prelude.rnf hubContentVersion
+      `Prelude.seq` Prelude.rnf hubContentType
+      `Prelude.seq` Prelude.rnf documentSchemaVersion
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubArn
+      `Prelude.seq` Prelude.rnf hubContentDocument
+      `Prelude.seq` Prelude.rnf hubContentStatus
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/DescribeHumanTaskUi.hs b/gen/Amazonka/SageMaker/DescribeHumanTaskUi.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeHumanTaskUi.hs
@@ -0,0 +1,245 @@
+{-# 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.DescribeHumanTaskUi
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about the requested human task user interface
+-- (worker task template).
+module Amazonka.SageMaker.DescribeHumanTaskUi
+  ( -- * Creating a Request
+    DescribeHumanTaskUi (..),
+    newDescribeHumanTaskUi,
+
+    -- * Request Lenses
+    describeHumanTaskUi_humanTaskUiName,
+
+    -- * Destructuring the Response
+    DescribeHumanTaskUiResponse (..),
+    newDescribeHumanTaskUiResponse,
+
+    -- * Response Lenses
+    describeHumanTaskUiResponse_humanTaskUiStatus,
+    describeHumanTaskUiResponse_httpStatus,
+    describeHumanTaskUiResponse_humanTaskUiArn,
+    describeHumanTaskUiResponse_humanTaskUiName,
+    describeHumanTaskUiResponse_creationTime,
+    describeHumanTaskUiResponse_uiTemplate,
+  )
+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:/ 'newDescribeHumanTaskUi' smart constructor.
+data DescribeHumanTaskUi = DescribeHumanTaskUi'
+  { -- | The name of the human task user interface (worker task template) you
+    -- want information about.
+    humanTaskUiName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHumanTaskUi' 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:
+--
+-- 'humanTaskUiName', 'describeHumanTaskUi_humanTaskUiName' - The name of the human task user interface (worker task template) you
+-- want information about.
+newDescribeHumanTaskUi ::
+  -- | 'humanTaskUiName'
+  Prelude.Text ->
+  DescribeHumanTaskUi
+newDescribeHumanTaskUi pHumanTaskUiName_ =
+  DescribeHumanTaskUi'
+    { humanTaskUiName =
+        pHumanTaskUiName_
+    }
+
+-- | The name of the human task user interface (worker task template) you
+-- want information about.
+describeHumanTaskUi_humanTaskUiName :: Lens.Lens' DescribeHumanTaskUi Prelude.Text
+describeHumanTaskUi_humanTaskUiName = Lens.lens (\DescribeHumanTaskUi' {humanTaskUiName} -> humanTaskUiName) (\s@DescribeHumanTaskUi' {} a -> s {humanTaskUiName = a} :: DescribeHumanTaskUi)
+
+instance Core.AWSRequest DescribeHumanTaskUi where
+  type
+    AWSResponse DescribeHumanTaskUi =
+      DescribeHumanTaskUiResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeHumanTaskUiResponse'
+            Prelude.<$> (x Data..?> "HumanTaskUiStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HumanTaskUiArn")
+            Prelude.<*> (x Data..:> "HumanTaskUiName")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "UiTemplate")
+      )
+
+instance Prelude.Hashable DescribeHumanTaskUi where
+  hashWithSalt _salt DescribeHumanTaskUi' {..} =
+    _salt `Prelude.hashWithSalt` humanTaskUiName
+
+instance Prelude.NFData DescribeHumanTaskUi where
+  rnf DescribeHumanTaskUi' {..} =
+    Prelude.rnf humanTaskUiName
+
+instance Data.ToHeaders DescribeHumanTaskUi where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeHumanTaskUi" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeHumanTaskUi where
+  toJSON DescribeHumanTaskUi' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("HumanTaskUiName" Data..= humanTaskUiName)
+          ]
+      )
+
+instance Data.ToPath DescribeHumanTaskUi where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeHumanTaskUi where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeHumanTaskUiResponse' smart constructor.
+data DescribeHumanTaskUiResponse = DescribeHumanTaskUiResponse'
+  { -- | The status of the human task user interface (worker task template).
+    -- Valid values are listed below.
+    humanTaskUiStatus :: Prelude.Maybe HumanTaskUiStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the human task user interface (worker
+    -- task template).
+    humanTaskUiArn :: Prelude.Text,
+    -- | The name of the human task user interface (worker task template).
+    humanTaskUiName :: Prelude.Text,
+    -- | The timestamp when the human task user interface was created.
+    creationTime :: Data.POSIX,
+    uiTemplate :: UiTemplateInfo
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHumanTaskUiResponse' 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:
+--
+-- 'humanTaskUiStatus', 'describeHumanTaskUiResponse_humanTaskUiStatus' - The status of the human task user interface (worker task template).
+-- Valid values are listed below.
+--
+-- 'httpStatus', 'describeHumanTaskUiResponse_httpStatus' - The response's http status code.
+--
+-- 'humanTaskUiArn', 'describeHumanTaskUiResponse_humanTaskUiArn' - The Amazon Resource Name (ARN) of the human task user interface (worker
+-- task template).
+--
+-- 'humanTaskUiName', 'describeHumanTaskUiResponse_humanTaskUiName' - The name of the human task user interface (worker task template).
+--
+-- 'creationTime', 'describeHumanTaskUiResponse_creationTime' - The timestamp when the human task user interface was created.
+--
+-- 'uiTemplate', 'describeHumanTaskUiResponse_uiTemplate' - Undocumented member.
+newDescribeHumanTaskUiResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'humanTaskUiArn'
+  Prelude.Text ->
+  -- | 'humanTaskUiName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'uiTemplate'
+  UiTemplateInfo ->
+  DescribeHumanTaskUiResponse
+newDescribeHumanTaskUiResponse
+  pHttpStatus_
+  pHumanTaskUiArn_
+  pHumanTaskUiName_
+  pCreationTime_
+  pUiTemplate_ =
+    DescribeHumanTaskUiResponse'
+      { humanTaskUiStatus =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        humanTaskUiArn = pHumanTaskUiArn_,
+        humanTaskUiName = pHumanTaskUiName_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        uiTemplate = pUiTemplate_
+      }
+
+-- | The status of the human task user interface (worker task template).
+-- Valid values are listed below.
+describeHumanTaskUiResponse_humanTaskUiStatus :: Lens.Lens' DescribeHumanTaskUiResponse (Prelude.Maybe HumanTaskUiStatus)
+describeHumanTaskUiResponse_humanTaskUiStatus = Lens.lens (\DescribeHumanTaskUiResponse' {humanTaskUiStatus} -> humanTaskUiStatus) (\s@DescribeHumanTaskUiResponse' {} a -> s {humanTaskUiStatus = a} :: DescribeHumanTaskUiResponse)
+
+-- | The response's http status code.
+describeHumanTaskUiResponse_httpStatus :: Lens.Lens' DescribeHumanTaskUiResponse Prelude.Int
+describeHumanTaskUiResponse_httpStatus = Lens.lens (\DescribeHumanTaskUiResponse' {httpStatus} -> httpStatus) (\s@DescribeHumanTaskUiResponse' {} a -> s {httpStatus = a} :: DescribeHumanTaskUiResponse)
+
+-- | The Amazon Resource Name (ARN) of the human task user interface (worker
+-- task template).
+describeHumanTaskUiResponse_humanTaskUiArn :: Lens.Lens' DescribeHumanTaskUiResponse Prelude.Text
+describeHumanTaskUiResponse_humanTaskUiArn = Lens.lens (\DescribeHumanTaskUiResponse' {humanTaskUiArn} -> humanTaskUiArn) (\s@DescribeHumanTaskUiResponse' {} a -> s {humanTaskUiArn = a} :: DescribeHumanTaskUiResponse)
+
+-- | The name of the human task user interface (worker task template).
+describeHumanTaskUiResponse_humanTaskUiName :: Lens.Lens' DescribeHumanTaskUiResponse Prelude.Text
+describeHumanTaskUiResponse_humanTaskUiName = Lens.lens (\DescribeHumanTaskUiResponse' {humanTaskUiName} -> humanTaskUiName) (\s@DescribeHumanTaskUiResponse' {} a -> s {humanTaskUiName = a} :: DescribeHumanTaskUiResponse)
+
+-- | The timestamp when the human task user interface was created.
+describeHumanTaskUiResponse_creationTime :: Lens.Lens' DescribeHumanTaskUiResponse Prelude.UTCTime
+describeHumanTaskUiResponse_creationTime = Lens.lens (\DescribeHumanTaskUiResponse' {creationTime} -> creationTime) (\s@DescribeHumanTaskUiResponse' {} a -> s {creationTime = a} :: DescribeHumanTaskUiResponse) Prelude.. Data._Time
+
+-- | Undocumented member.
+describeHumanTaskUiResponse_uiTemplate :: Lens.Lens' DescribeHumanTaskUiResponse UiTemplateInfo
+describeHumanTaskUiResponse_uiTemplate = Lens.lens (\DescribeHumanTaskUiResponse' {uiTemplate} -> uiTemplate) (\s@DescribeHumanTaskUiResponse' {} a -> s {uiTemplate = a} :: DescribeHumanTaskUiResponse)
+
+instance Prelude.NFData DescribeHumanTaskUiResponse where
+  rnf DescribeHumanTaskUiResponse' {..} =
+    Prelude.rnf humanTaskUiStatus
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf humanTaskUiArn
+      `Prelude.seq` Prelude.rnf humanTaskUiName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf uiTemplate
diff --git a/gen/Amazonka/SageMaker/DescribeHyperParameterTuningJob.hs b/gen/Amazonka/SageMaker/DescribeHyperParameterTuningJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeHyperParameterTuningJob.hs
@@ -0,0 +1,441 @@
+{-# 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.DescribeHyperParameterTuningJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a description of a hyperparameter tuning job.
+module Amazonka.SageMaker.DescribeHyperParameterTuningJob
+  ( -- * Creating a Request
+    DescribeHyperParameterTuningJob (..),
+    newDescribeHyperParameterTuningJob,
+
+    -- * Request Lenses
+    describeHyperParameterTuningJob_hyperParameterTuningJobName,
+
+    -- * Destructuring the Response
+    DescribeHyperParameterTuningJobResponse (..),
+    newDescribeHyperParameterTuningJobResponse,
+
+    -- * Response Lenses
+    describeHyperParameterTuningJobResponse_bestTrainingJob,
+    describeHyperParameterTuningJobResponse_failureReason,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningEndTime,
+    describeHyperParameterTuningJobResponse_lastModifiedTime,
+    describeHyperParameterTuningJobResponse_overallBestTrainingJob,
+    describeHyperParameterTuningJobResponse_trainingJobDefinition,
+    describeHyperParameterTuningJobResponse_trainingJobDefinitions,
+    describeHyperParameterTuningJobResponse_warmStartConfig,
+    describeHyperParameterTuningJobResponse_httpStatus,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobName,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobArn,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobConfig,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobStatus,
+    describeHyperParameterTuningJobResponse_creationTime,
+    describeHyperParameterTuningJobResponse_trainingJobStatusCounters,
+    describeHyperParameterTuningJobResponse_objectiveStatusCounters,
+  )
+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:/ 'newDescribeHyperParameterTuningJob' smart constructor.
+data DescribeHyperParameterTuningJob = DescribeHyperParameterTuningJob'
+  { -- | The name of the tuning job.
+    hyperParameterTuningJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHyperParameterTuningJob' 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:
+--
+-- 'hyperParameterTuningJobName', 'describeHyperParameterTuningJob_hyperParameterTuningJobName' - The name of the tuning job.
+newDescribeHyperParameterTuningJob ::
+  -- | 'hyperParameterTuningJobName'
+  Prelude.Text ->
+  DescribeHyperParameterTuningJob
+newDescribeHyperParameterTuningJob
+  pHyperParameterTuningJobName_ =
+    DescribeHyperParameterTuningJob'
+      { hyperParameterTuningJobName =
+          pHyperParameterTuningJobName_
+      }
+
+-- | The name of the tuning job.
+describeHyperParameterTuningJob_hyperParameterTuningJobName :: Lens.Lens' DescribeHyperParameterTuningJob Prelude.Text
+describeHyperParameterTuningJob_hyperParameterTuningJobName = Lens.lens (\DescribeHyperParameterTuningJob' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@DescribeHyperParameterTuningJob' {} a -> s {hyperParameterTuningJobName = a} :: DescribeHyperParameterTuningJob)
+
+instance
+  Core.AWSRequest
+    DescribeHyperParameterTuningJob
+  where
+  type
+    AWSResponse DescribeHyperParameterTuningJob =
+      DescribeHyperParameterTuningJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeHyperParameterTuningJobResponse'
+            Prelude.<$> (x Data..?> "BestTrainingJob")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "HyperParameterTuningEndTime")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "OverallBestTrainingJob")
+            Prelude.<*> (x Data..?> "TrainingJobDefinition")
+            Prelude.<*> (x Data..?> "TrainingJobDefinitions")
+            Prelude.<*> (x Data..?> "WarmStartConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HyperParameterTuningJobName")
+            Prelude.<*> (x Data..:> "HyperParameterTuningJobArn")
+            Prelude.<*> (x Data..:> "HyperParameterTuningJobConfig")
+            Prelude.<*> (x Data..:> "HyperParameterTuningJobStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "TrainingJobStatusCounters")
+            Prelude.<*> (x Data..:> "ObjectiveStatusCounters")
+      )
+
+instance
+  Prelude.Hashable
+    DescribeHyperParameterTuningJob
+  where
+  hashWithSalt
+    _salt
+    DescribeHyperParameterTuningJob' {..} =
+      _salt
+        `Prelude.hashWithSalt` hyperParameterTuningJobName
+
+instance
+  Prelude.NFData
+    DescribeHyperParameterTuningJob
+  where
+  rnf DescribeHyperParameterTuningJob' {..} =
+    Prelude.rnf hyperParameterTuningJobName
+
+instance
+  Data.ToHeaders
+    DescribeHyperParameterTuningJob
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeHyperParameterTuningJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeHyperParameterTuningJob where
+  toJSON DescribeHyperParameterTuningJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "HyperParameterTuningJobName"
+                  Data..= hyperParameterTuningJobName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeHyperParameterTuningJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeHyperParameterTuningJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeHyperParameterTuningJobResponse' smart constructor.
+data DescribeHyperParameterTuningJobResponse = DescribeHyperParameterTuningJobResponse'
+  { -- | A TrainingJobSummary object that describes the training job that
+    -- completed with the best current HyperParameterTuningJobObjective.
+    bestTrainingJob :: Prelude.Maybe HyperParameterTrainingJobSummary,
+    -- | If the tuning job failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the tuning job ended.
+    hyperParameterTuningEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The date and time that the status of the tuning job was modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | If the hyperparameter tuning job is an warm start tuning job with a
+    -- @WarmStartType@ of @IDENTICAL_DATA_AND_ALGORITHM@, this is the
+    -- TrainingJobSummary for the training job with the best objective metric
+    -- value of all training jobs launched by this tuning job and all parent
+    -- jobs specified for the warm start tuning job.
+    overallBestTrainingJob :: Prelude.Maybe HyperParameterTrainingJobSummary,
+    -- | The HyperParameterTrainingJobDefinition object that specifies the
+    -- definition of the training jobs that this tuning job launches.
+    trainingJobDefinition :: Prelude.Maybe HyperParameterTrainingJobDefinition,
+    -- | A list of the HyperParameterTrainingJobDefinition objects launched for
+    -- this tuning job.
+    trainingJobDefinitions :: Prelude.Maybe (Prelude.NonEmpty HyperParameterTrainingJobDefinition),
+    -- | The configuration for starting the hyperparameter parameter tuning job
+    -- using one or more previous tuning jobs as a starting point. The results
+    -- of previous tuning jobs are used to inform which combinations of
+    -- hyperparameters to search over in the new tuning job.
+    warmStartConfig :: Prelude.Maybe HyperParameterTuningJobWarmStartConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the tuning job.
+    hyperParameterTuningJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the tuning job.
+    hyperParameterTuningJobArn :: Prelude.Text,
+    -- | The HyperParameterTuningJobConfig object that specifies the
+    -- configuration of the tuning job.
+    hyperParameterTuningJobConfig :: HyperParameterTuningJobConfig,
+    -- | The status of the tuning job: InProgress, Completed, Failed, Stopping,
+    -- or Stopped.
+    hyperParameterTuningJobStatus :: HyperParameterTuningJobStatus,
+    -- | The date and time that the tuning job started.
+    creationTime :: Data.POSIX,
+    -- | The TrainingJobStatusCounters object that specifies the number of
+    -- training jobs, categorized by status, that this tuning job launched.
+    trainingJobStatusCounters :: TrainingJobStatusCounters,
+    -- | The ObjectiveStatusCounters object that specifies the number of training
+    -- jobs, categorized by the status of their final objective metric, that
+    -- this tuning job launched.
+    objectiveStatusCounters :: ObjectiveStatusCounters
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHyperParameterTuningJobResponse' 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:
+--
+-- 'bestTrainingJob', 'describeHyperParameterTuningJobResponse_bestTrainingJob' - A TrainingJobSummary object that describes the training job that
+-- completed with the best current HyperParameterTuningJobObjective.
+--
+-- 'failureReason', 'describeHyperParameterTuningJobResponse_failureReason' - If the tuning job failed, the reason it failed.
+--
+-- 'hyperParameterTuningEndTime', 'describeHyperParameterTuningJobResponse_hyperParameterTuningEndTime' - The date and time that the tuning job ended.
+--
+-- 'lastModifiedTime', 'describeHyperParameterTuningJobResponse_lastModifiedTime' - The date and time that the status of the tuning job was modified.
+--
+-- 'overallBestTrainingJob', 'describeHyperParameterTuningJobResponse_overallBestTrainingJob' - If the hyperparameter tuning job is an warm start tuning job with a
+-- @WarmStartType@ of @IDENTICAL_DATA_AND_ALGORITHM@, this is the
+-- TrainingJobSummary for the training job with the best objective metric
+-- value of all training jobs launched by this tuning job and all parent
+-- jobs specified for the warm start tuning job.
+--
+-- 'trainingJobDefinition', 'describeHyperParameterTuningJobResponse_trainingJobDefinition' - The HyperParameterTrainingJobDefinition object that specifies the
+-- definition of the training jobs that this tuning job launches.
+--
+-- 'trainingJobDefinitions', 'describeHyperParameterTuningJobResponse_trainingJobDefinitions' - A list of the HyperParameterTrainingJobDefinition objects launched for
+-- this tuning job.
+--
+-- 'warmStartConfig', 'describeHyperParameterTuningJobResponse_warmStartConfig' - The configuration for starting the hyperparameter parameter tuning job
+-- using one or more previous tuning jobs as a starting point. The results
+-- of previous tuning jobs are used to inform which combinations of
+-- hyperparameters to search over in the new tuning job.
+--
+-- 'httpStatus', 'describeHyperParameterTuningJobResponse_httpStatus' - The response's http status code.
+--
+-- 'hyperParameterTuningJobName', 'describeHyperParameterTuningJobResponse_hyperParameterTuningJobName' - The name of the tuning job.
+--
+-- 'hyperParameterTuningJobArn', 'describeHyperParameterTuningJobResponse_hyperParameterTuningJobArn' - The Amazon Resource Name (ARN) of the tuning job.
+--
+-- 'hyperParameterTuningJobConfig', 'describeHyperParameterTuningJobResponse_hyperParameterTuningJobConfig' - The HyperParameterTuningJobConfig object that specifies the
+-- configuration of the tuning job.
+--
+-- 'hyperParameterTuningJobStatus', 'describeHyperParameterTuningJobResponse_hyperParameterTuningJobStatus' - The status of the tuning job: InProgress, Completed, Failed, Stopping,
+-- or Stopped.
+--
+-- 'creationTime', 'describeHyperParameterTuningJobResponse_creationTime' - The date and time that the tuning job started.
+--
+-- 'trainingJobStatusCounters', 'describeHyperParameterTuningJobResponse_trainingJobStatusCounters' - The TrainingJobStatusCounters object that specifies the number of
+-- training jobs, categorized by status, that this tuning job launched.
+--
+-- 'objectiveStatusCounters', 'describeHyperParameterTuningJobResponse_objectiveStatusCounters' - The ObjectiveStatusCounters object that specifies the number of training
+-- jobs, categorized by the status of their final objective metric, that
+-- this tuning job launched.
+newDescribeHyperParameterTuningJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hyperParameterTuningJobName'
+  Prelude.Text ->
+  -- | 'hyperParameterTuningJobArn'
+  Prelude.Text ->
+  -- | 'hyperParameterTuningJobConfig'
+  HyperParameterTuningJobConfig ->
+  -- | 'hyperParameterTuningJobStatus'
+  HyperParameterTuningJobStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'trainingJobStatusCounters'
+  TrainingJobStatusCounters ->
+  -- | 'objectiveStatusCounters'
+  ObjectiveStatusCounters ->
+  DescribeHyperParameterTuningJobResponse
+newDescribeHyperParameterTuningJobResponse
+  pHttpStatus_
+  pHyperParameterTuningJobName_
+  pHyperParameterTuningJobArn_
+  pHyperParameterTuningJobConfig_
+  pHyperParameterTuningJobStatus_
+  pCreationTime_
+  pTrainingJobStatusCounters_
+  pObjectiveStatusCounters_ =
+    DescribeHyperParameterTuningJobResponse'
+      { bestTrainingJob =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        hyperParameterTuningEndTime =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        overallBestTrainingJob =
+          Prelude.Nothing,
+        trainingJobDefinition =
+          Prelude.Nothing,
+        trainingJobDefinitions =
+          Prelude.Nothing,
+        warmStartConfig = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        hyperParameterTuningJobName =
+          pHyperParameterTuningJobName_,
+        hyperParameterTuningJobArn =
+          pHyperParameterTuningJobArn_,
+        hyperParameterTuningJobConfig =
+          pHyperParameterTuningJobConfig_,
+        hyperParameterTuningJobStatus =
+          pHyperParameterTuningJobStatus_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        trainingJobStatusCounters =
+          pTrainingJobStatusCounters_,
+        objectiveStatusCounters =
+          pObjectiveStatusCounters_
+      }
+
+-- | A TrainingJobSummary object that describes the training job that
+-- completed with the best current HyperParameterTuningJobObjective.
+describeHyperParameterTuningJobResponse_bestTrainingJob :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe HyperParameterTrainingJobSummary)
+describeHyperParameterTuningJobResponse_bestTrainingJob = Lens.lens (\DescribeHyperParameterTuningJobResponse' {bestTrainingJob} -> bestTrainingJob) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {bestTrainingJob = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | If the tuning job failed, the reason it failed.
+describeHyperParameterTuningJobResponse_failureReason :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe Prelude.Text)
+describeHyperParameterTuningJobResponse_failureReason = Lens.lens (\DescribeHyperParameterTuningJobResponse' {failureReason} -> failureReason) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {failureReason = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The date and time that the tuning job ended.
+describeHyperParameterTuningJobResponse_hyperParameterTuningEndTime :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeHyperParameterTuningJobResponse_hyperParameterTuningEndTime = Lens.lens (\DescribeHyperParameterTuningJobResponse' {hyperParameterTuningEndTime} -> hyperParameterTuningEndTime) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {hyperParameterTuningEndTime = a} :: DescribeHyperParameterTuningJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that the status of the tuning job was modified.
+describeHyperParameterTuningJobResponse_lastModifiedTime :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeHyperParameterTuningJobResponse_lastModifiedTime = Lens.lens (\DescribeHyperParameterTuningJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeHyperParameterTuningJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | If the hyperparameter tuning job is an warm start tuning job with a
+-- @WarmStartType@ of @IDENTICAL_DATA_AND_ALGORITHM@, this is the
+-- TrainingJobSummary for the training job with the best objective metric
+-- value of all training jobs launched by this tuning job and all parent
+-- jobs specified for the warm start tuning job.
+describeHyperParameterTuningJobResponse_overallBestTrainingJob :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe HyperParameterTrainingJobSummary)
+describeHyperParameterTuningJobResponse_overallBestTrainingJob = Lens.lens (\DescribeHyperParameterTuningJobResponse' {overallBestTrainingJob} -> overallBestTrainingJob) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {overallBestTrainingJob = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The HyperParameterTrainingJobDefinition object that specifies the
+-- definition of the training jobs that this tuning job launches.
+describeHyperParameterTuningJobResponse_trainingJobDefinition :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe HyperParameterTrainingJobDefinition)
+describeHyperParameterTuningJobResponse_trainingJobDefinition = Lens.lens (\DescribeHyperParameterTuningJobResponse' {trainingJobDefinition} -> trainingJobDefinition) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {trainingJobDefinition = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | A list of the HyperParameterTrainingJobDefinition objects launched for
+-- this tuning job.
+describeHyperParameterTuningJobResponse_trainingJobDefinitions :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe (Prelude.NonEmpty HyperParameterTrainingJobDefinition))
+describeHyperParameterTuningJobResponse_trainingJobDefinitions = Lens.lens (\DescribeHyperParameterTuningJobResponse' {trainingJobDefinitions} -> trainingJobDefinitions) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {trainingJobDefinitions = a} :: DescribeHyperParameterTuningJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The configuration for starting the hyperparameter parameter tuning job
+-- using one or more previous tuning jobs as a starting point. The results
+-- of previous tuning jobs are used to inform which combinations of
+-- hyperparameters to search over in the new tuning job.
+describeHyperParameterTuningJobResponse_warmStartConfig :: Lens.Lens' DescribeHyperParameterTuningJobResponse (Prelude.Maybe HyperParameterTuningJobWarmStartConfig)
+describeHyperParameterTuningJobResponse_warmStartConfig = Lens.lens (\DescribeHyperParameterTuningJobResponse' {warmStartConfig} -> warmStartConfig) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {warmStartConfig = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The response's http status code.
+describeHyperParameterTuningJobResponse_httpStatus :: Lens.Lens' DescribeHyperParameterTuningJobResponse Prelude.Int
+describeHyperParameterTuningJobResponse_httpStatus = Lens.lens (\DescribeHyperParameterTuningJobResponse' {httpStatus} -> httpStatus) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {httpStatus = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The name of the tuning job.
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobName :: Lens.Lens' DescribeHyperParameterTuningJobResponse Prelude.Text
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobName = Lens.lens (\DescribeHyperParameterTuningJobResponse' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {hyperParameterTuningJobName = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the tuning job.
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobArn :: Lens.Lens' DescribeHyperParameterTuningJobResponse Prelude.Text
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobArn = Lens.lens (\DescribeHyperParameterTuningJobResponse' {hyperParameterTuningJobArn} -> hyperParameterTuningJobArn) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {hyperParameterTuningJobArn = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The HyperParameterTuningJobConfig object that specifies the
+-- configuration of the tuning job.
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobConfig :: Lens.Lens' DescribeHyperParameterTuningJobResponse HyperParameterTuningJobConfig
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobConfig = Lens.lens (\DescribeHyperParameterTuningJobResponse' {hyperParameterTuningJobConfig} -> hyperParameterTuningJobConfig) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {hyperParameterTuningJobConfig = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The status of the tuning job: InProgress, Completed, Failed, Stopping,
+-- or Stopped.
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobStatus :: Lens.Lens' DescribeHyperParameterTuningJobResponse HyperParameterTuningJobStatus
+describeHyperParameterTuningJobResponse_hyperParameterTuningJobStatus = Lens.lens (\DescribeHyperParameterTuningJobResponse' {hyperParameterTuningJobStatus} -> hyperParameterTuningJobStatus) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {hyperParameterTuningJobStatus = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The date and time that the tuning job started.
+describeHyperParameterTuningJobResponse_creationTime :: Lens.Lens' DescribeHyperParameterTuningJobResponse Prelude.UTCTime
+describeHyperParameterTuningJobResponse_creationTime = Lens.lens (\DescribeHyperParameterTuningJobResponse' {creationTime} -> creationTime) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {creationTime = a} :: DescribeHyperParameterTuningJobResponse) Prelude.. Data._Time
+
+-- | The TrainingJobStatusCounters object that specifies the number of
+-- training jobs, categorized by status, that this tuning job launched.
+describeHyperParameterTuningJobResponse_trainingJobStatusCounters :: Lens.Lens' DescribeHyperParameterTuningJobResponse TrainingJobStatusCounters
+describeHyperParameterTuningJobResponse_trainingJobStatusCounters = Lens.lens (\DescribeHyperParameterTuningJobResponse' {trainingJobStatusCounters} -> trainingJobStatusCounters) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {trainingJobStatusCounters = a} :: DescribeHyperParameterTuningJobResponse)
+
+-- | The ObjectiveStatusCounters object that specifies the number of training
+-- jobs, categorized by the status of their final objective metric, that
+-- this tuning job launched.
+describeHyperParameterTuningJobResponse_objectiveStatusCounters :: Lens.Lens' DescribeHyperParameterTuningJobResponse ObjectiveStatusCounters
+describeHyperParameterTuningJobResponse_objectiveStatusCounters = Lens.lens (\DescribeHyperParameterTuningJobResponse' {objectiveStatusCounters} -> objectiveStatusCounters) (\s@DescribeHyperParameterTuningJobResponse' {} a -> s {objectiveStatusCounters = a} :: DescribeHyperParameterTuningJobResponse)
+
+instance
+  Prelude.NFData
+    DescribeHyperParameterTuningJobResponse
+  where
+  rnf DescribeHyperParameterTuningJobResponse' {..} =
+    Prelude.rnf bestTrainingJob
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf hyperParameterTuningEndTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf overallBestTrainingJob
+      `Prelude.seq` Prelude.rnf trainingJobDefinition
+      `Prelude.seq` Prelude.rnf trainingJobDefinitions
+      `Prelude.seq` Prelude.rnf warmStartConfig
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobName
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobArn
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobConfig
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf trainingJobStatusCounters
+      `Prelude.seq` Prelude.rnf objectiveStatusCounters
diff --git a/gen/Amazonka/SageMaker/DescribeImage.hs b/gen/Amazonka/SageMaker/DescribeImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeImage.hs
@@ -0,0 +1,268 @@
+{-# 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.DescribeImage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a SageMaker image.
+module Amazonka.SageMaker.DescribeImage
+  ( -- * Creating a Request
+    DescribeImage (..),
+    newDescribeImage,
+
+    -- * Request Lenses
+    describeImage_imageName,
+
+    -- * Destructuring the Response
+    DescribeImageResponse (..),
+    newDescribeImageResponse,
+
+    -- * Response Lenses
+    describeImageResponse_creationTime,
+    describeImageResponse_description,
+    describeImageResponse_displayName,
+    describeImageResponse_failureReason,
+    describeImageResponse_imageArn,
+    describeImageResponse_imageName,
+    describeImageResponse_imageStatus,
+    describeImageResponse_lastModifiedTime,
+    describeImageResponse_roleArn,
+    describeImageResponse_httpStatus,
+  )
+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:/ 'newDescribeImage' smart constructor.
+data DescribeImage = DescribeImage'
+  { -- | The name of the image to describe.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeImage' 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:
+--
+-- 'imageName', 'describeImage_imageName' - The name of the image to describe.
+newDescribeImage ::
+  -- | 'imageName'
+  Prelude.Text ->
+  DescribeImage
+newDescribeImage pImageName_ =
+  DescribeImage' {imageName = pImageName_}
+
+-- | The name of the image to describe.
+describeImage_imageName :: Lens.Lens' DescribeImage Prelude.Text
+describeImage_imageName = Lens.lens (\DescribeImage' {imageName} -> imageName) (\s@DescribeImage' {} a -> s {imageName = a} :: DescribeImage)
+
+instance Core.AWSRequest DescribeImage where
+  type
+    AWSResponse DescribeImage =
+      DescribeImageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeImageResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DisplayName")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "ImageArn")
+            Prelude.<*> (x Data..?> "ImageName")
+            Prelude.<*> (x Data..?> "ImageStatus")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeImage where
+  hashWithSalt _salt DescribeImage' {..} =
+    _salt `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData DescribeImage where
+  rnf DescribeImage' {..} = Prelude.rnf imageName
+
+instance Data.ToHeaders DescribeImage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeImage" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeImage where
+  toJSON DescribeImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ImageName" Data..= imageName)]
+      )
+
+instance Data.ToPath DescribeImage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeImage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeImageResponse' smart constructor.
+data DescribeImageResponse = DescribeImageResponse'
+  { -- | When the image was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the image.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the image as displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When a create, update, or delete operation fails, the reason for the
+    -- failure.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the image.
+    imageArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the image.
+    imageName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the image.
+    imageStatus :: Prelude.Maybe ImageStatus,
+    -- | When the image was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the IAM role that enables Amazon SageMaker to perform tasks
+    -- on your behalf.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeImageResponse' 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:
+--
+-- 'creationTime', 'describeImageResponse_creationTime' - When the image was created.
+--
+-- 'description', 'describeImageResponse_description' - The description of the image.
+--
+-- 'displayName', 'describeImageResponse_displayName' - The name of the image as displayed.
+--
+-- 'failureReason', 'describeImageResponse_failureReason' - When a create, update, or delete operation fails, the reason for the
+-- failure.
+--
+-- 'imageArn', 'describeImageResponse_imageArn' - The ARN of the image.
+--
+-- 'imageName', 'describeImageResponse_imageName' - The name of the image.
+--
+-- 'imageStatus', 'describeImageResponse_imageStatus' - The status of the image.
+--
+-- 'lastModifiedTime', 'describeImageResponse_lastModifiedTime' - When the image was last modified.
+--
+-- 'roleArn', 'describeImageResponse_roleArn' - The ARN of the IAM role that enables Amazon SageMaker to perform tasks
+-- on your behalf.
+--
+-- 'httpStatus', 'describeImageResponse_httpStatus' - The response's http status code.
+newDescribeImageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeImageResponse
+newDescribeImageResponse pHttpStatus_ =
+  DescribeImageResponse'
+    { creationTime =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      imageArn = Prelude.Nothing,
+      imageName = Prelude.Nothing,
+      imageStatus = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | When the image was created.
+describeImageResponse_creationTime :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.UTCTime)
+describeImageResponse_creationTime = Lens.lens (\DescribeImageResponse' {creationTime} -> creationTime) (\s@DescribeImageResponse' {} a -> s {creationTime = a} :: DescribeImageResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the image.
+describeImageResponse_description :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.Text)
+describeImageResponse_description = Lens.lens (\DescribeImageResponse' {description} -> description) (\s@DescribeImageResponse' {} a -> s {description = a} :: DescribeImageResponse)
+
+-- | The name of the image as displayed.
+describeImageResponse_displayName :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.Text)
+describeImageResponse_displayName = Lens.lens (\DescribeImageResponse' {displayName} -> displayName) (\s@DescribeImageResponse' {} a -> s {displayName = a} :: DescribeImageResponse)
+
+-- | When a create, update, or delete operation fails, the reason for the
+-- failure.
+describeImageResponse_failureReason :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.Text)
+describeImageResponse_failureReason = Lens.lens (\DescribeImageResponse' {failureReason} -> failureReason) (\s@DescribeImageResponse' {} a -> s {failureReason = a} :: DescribeImageResponse)
+
+-- | The ARN of the image.
+describeImageResponse_imageArn :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.Text)
+describeImageResponse_imageArn = Lens.lens (\DescribeImageResponse' {imageArn} -> imageArn) (\s@DescribeImageResponse' {} a -> s {imageArn = a} :: DescribeImageResponse)
+
+-- | The name of the image.
+describeImageResponse_imageName :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.Text)
+describeImageResponse_imageName = Lens.lens (\DescribeImageResponse' {imageName} -> imageName) (\s@DescribeImageResponse' {} a -> s {imageName = a} :: DescribeImageResponse)
+
+-- | The status of the image.
+describeImageResponse_imageStatus :: Lens.Lens' DescribeImageResponse (Prelude.Maybe ImageStatus)
+describeImageResponse_imageStatus = Lens.lens (\DescribeImageResponse' {imageStatus} -> imageStatus) (\s@DescribeImageResponse' {} a -> s {imageStatus = a} :: DescribeImageResponse)
+
+-- | When the image was last modified.
+describeImageResponse_lastModifiedTime :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.UTCTime)
+describeImageResponse_lastModifiedTime = Lens.lens (\DescribeImageResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeImageResponse' {} a -> s {lastModifiedTime = a} :: DescribeImageResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the IAM role that enables Amazon SageMaker to perform tasks
+-- on your behalf.
+describeImageResponse_roleArn :: Lens.Lens' DescribeImageResponse (Prelude.Maybe Prelude.Text)
+describeImageResponse_roleArn = Lens.lens (\DescribeImageResponse' {roleArn} -> roleArn) (\s@DescribeImageResponse' {} a -> s {roleArn = a} :: DescribeImageResponse)
+
+-- | The response's http status code.
+describeImageResponse_httpStatus :: Lens.Lens' DescribeImageResponse Prelude.Int
+describeImageResponse_httpStatus = Lens.lens (\DescribeImageResponse' {httpStatus} -> httpStatus) (\s@DescribeImageResponse' {} a -> s {httpStatus = a} :: DescribeImageResponse)
+
+instance Prelude.NFData DescribeImageResponse where
+  rnf DescribeImageResponse' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf imageArn
+      `Prelude.seq` Prelude.rnf imageName
+      `Prelude.seq` Prelude.rnf imageStatus
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeImageVersion.hs b/gen/Amazonka/SageMaker/DescribeImageVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeImageVersion.hs
@@ -0,0 +1,463 @@
+{-# 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.DescribeImageVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a version of a SageMaker image.
+module Amazonka.SageMaker.DescribeImageVersion
+  ( -- * Creating a Request
+    DescribeImageVersion (..),
+    newDescribeImageVersion,
+
+    -- * Request Lenses
+    describeImageVersion_alias,
+    describeImageVersion_version,
+    describeImageVersion_imageName,
+
+    -- * Destructuring the Response
+    DescribeImageVersionResponse (..),
+    newDescribeImageVersionResponse,
+
+    -- * Response Lenses
+    describeImageVersionResponse_baseImage,
+    describeImageVersionResponse_containerImage,
+    describeImageVersionResponse_creationTime,
+    describeImageVersionResponse_failureReason,
+    describeImageVersionResponse_horovod,
+    describeImageVersionResponse_imageArn,
+    describeImageVersionResponse_imageVersionArn,
+    describeImageVersionResponse_imageVersionStatus,
+    describeImageVersionResponse_jobType,
+    describeImageVersionResponse_lastModifiedTime,
+    describeImageVersionResponse_mLFramework,
+    describeImageVersionResponse_processor,
+    describeImageVersionResponse_programmingLang,
+    describeImageVersionResponse_releaseNotes,
+    describeImageVersionResponse_vendorGuidance,
+    describeImageVersionResponse_version,
+    describeImageVersionResponse_httpStatus,
+  )
+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:/ 'newDescribeImageVersion' smart constructor.
+data DescribeImageVersion = DescribeImageVersion'
+  { -- | The alias of the image version.
+    alias :: Prelude.Maybe Prelude.Text,
+    -- | The version of the image. If not specified, the latest version is
+    -- described.
+    version :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the image.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeImageVersion' 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:
+--
+-- 'alias', 'describeImageVersion_alias' - The alias of the image version.
+--
+-- 'version', 'describeImageVersion_version' - The version of the image. If not specified, the latest version is
+-- described.
+--
+-- 'imageName', 'describeImageVersion_imageName' - The name of the image.
+newDescribeImageVersion ::
+  -- | 'imageName'
+  Prelude.Text ->
+  DescribeImageVersion
+newDescribeImageVersion pImageName_ =
+  DescribeImageVersion'
+    { alias = Prelude.Nothing,
+      version = Prelude.Nothing,
+      imageName = pImageName_
+    }
+
+-- | The alias of the image version.
+describeImageVersion_alias :: Lens.Lens' DescribeImageVersion (Prelude.Maybe Prelude.Text)
+describeImageVersion_alias = Lens.lens (\DescribeImageVersion' {alias} -> alias) (\s@DescribeImageVersion' {} a -> s {alias = a} :: DescribeImageVersion)
+
+-- | The version of the image. If not specified, the latest version is
+-- described.
+describeImageVersion_version :: Lens.Lens' DescribeImageVersion (Prelude.Maybe Prelude.Natural)
+describeImageVersion_version = Lens.lens (\DescribeImageVersion' {version} -> version) (\s@DescribeImageVersion' {} a -> s {version = a} :: DescribeImageVersion)
+
+-- | The name of the image.
+describeImageVersion_imageName :: Lens.Lens' DescribeImageVersion Prelude.Text
+describeImageVersion_imageName = Lens.lens (\DescribeImageVersion' {imageName} -> imageName) (\s@DescribeImageVersion' {} a -> s {imageName = a} :: DescribeImageVersion)
+
+instance Core.AWSRequest DescribeImageVersion where
+  type
+    AWSResponse DescribeImageVersion =
+      DescribeImageVersionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeImageVersionResponse'
+            Prelude.<$> (x Data..?> "BaseImage")
+            Prelude.<*> (x Data..?> "ContainerImage")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "Horovod")
+            Prelude.<*> (x Data..?> "ImageArn")
+            Prelude.<*> (x Data..?> "ImageVersionArn")
+            Prelude.<*> (x Data..?> "ImageVersionStatus")
+            Prelude.<*> (x Data..?> "JobType")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "MLFramework")
+            Prelude.<*> (x Data..?> "Processor")
+            Prelude.<*> (x Data..?> "ProgrammingLang")
+            Prelude.<*> (x Data..?> "ReleaseNotes")
+            Prelude.<*> (x Data..?> "VendorGuidance")
+            Prelude.<*> (x Data..?> "Version")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeImageVersion where
+  hashWithSalt _salt DescribeImageVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` version
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData DescribeImageVersion where
+  rnf DescribeImageVersion' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf version
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders DescribeImageVersion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeImageVersion" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeImageVersion where
+  toJSON DescribeImageVersion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Alias" Data..=) Prelude.<$> alias,
+            ("Version" Data..=) Prelude.<$> version,
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath DescribeImageVersion where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeImageVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeImageVersionResponse' smart constructor.
+data DescribeImageVersionResponse = DescribeImageVersionResponse'
+  { -- | The registry path of the container image on which this image version is
+    -- based.
+    baseImage :: Prelude.Maybe Prelude.Text,
+    -- | The registry path of the container image that contains this image
+    -- version.
+    containerImage :: Prelude.Maybe Prelude.Text,
+    -- | When the version was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | When a create or delete operation fails, the reason for the failure.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Indicates Horovod compatibility.
+    horovod :: Prelude.Maybe Prelude.Bool,
+    -- | The ARN of the image the version is based on.
+    imageArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the version.
+    imageVersionArn :: Prelude.Maybe Prelude.Text,
+    -- | The status of the version.
+    imageVersionStatus :: Prelude.Maybe ImageVersionStatus,
+    -- | Indicates SageMaker job type compatibility.
+    --
+    -- -   @TRAINING@: The image version is compatible with SageMaker training
+    --     jobs.
+    --
+    -- -   @INFERENCE@: The image version is compatible with SageMaker
+    --     inference jobs.
+    --
+    -- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+    --     notebook kernels.
+    jobType :: Prelude.Maybe JobType,
+    -- | When the version was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The machine learning framework vended in the image version.
+    mLFramework :: Prelude.Maybe Prelude.Text,
+    -- | Indicates CPU or GPU compatibility.
+    --
+    -- -   @CPU@: The image version is compatible with CPU.
+    --
+    -- -   @GPU@: The image version is compatible with GPU.
+    processor :: Prelude.Maybe Processor,
+    -- | The supported programming language and its version.
+    programmingLang :: Prelude.Maybe Prelude.Text,
+    -- | The maintainer description of the image version.
+    releaseNotes :: Prelude.Maybe Prelude.Text,
+    -- | The stability of the image version specified by the maintainer.
+    --
+    -- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+    --     version stability.
+    --
+    -- -   @STABLE@: The image version is stable.
+    --
+    -- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+    --     image versions that are set to be archived are automatically
+    --     archived after three months.
+    --
+    -- -   @ARCHIVED@: The image version is archived. Archived image versions
+    --     are not searchable and are no longer actively supported.
+    vendorGuidance :: Prelude.Maybe VendorGuidance,
+    -- | The version number.
+    version :: Prelude.Maybe Prelude.Natural,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeImageVersionResponse' 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:
+--
+-- 'baseImage', 'describeImageVersionResponse_baseImage' - The registry path of the container image on which this image version is
+-- based.
+--
+-- 'containerImage', 'describeImageVersionResponse_containerImage' - The registry path of the container image that contains this image
+-- version.
+--
+-- 'creationTime', 'describeImageVersionResponse_creationTime' - When the version was created.
+--
+-- 'failureReason', 'describeImageVersionResponse_failureReason' - When a create or delete operation fails, the reason for the failure.
+--
+-- 'horovod', 'describeImageVersionResponse_horovod' - Indicates Horovod compatibility.
+--
+-- 'imageArn', 'describeImageVersionResponse_imageArn' - The ARN of the image the version is based on.
+--
+-- 'imageVersionArn', 'describeImageVersionResponse_imageVersionArn' - The ARN of the version.
+--
+-- 'imageVersionStatus', 'describeImageVersionResponse_imageVersionStatus' - The status of the version.
+--
+-- 'jobType', 'describeImageVersionResponse_jobType' - Indicates SageMaker job type compatibility.
+--
+-- -   @TRAINING@: The image version is compatible with SageMaker training
+--     jobs.
+--
+-- -   @INFERENCE@: The image version is compatible with SageMaker
+--     inference jobs.
+--
+-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+--     notebook kernels.
+--
+-- 'lastModifiedTime', 'describeImageVersionResponse_lastModifiedTime' - When the version was last modified.
+--
+-- 'mLFramework', 'describeImageVersionResponse_mLFramework' - The machine learning framework vended in the image version.
+--
+-- 'processor', 'describeImageVersionResponse_processor' - Indicates CPU or GPU compatibility.
+--
+-- -   @CPU@: The image version is compatible with CPU.
+--
+-- -   @GPU@: The image version is compatible with GPU.
+--
+-- 'programmingLang', 'describeImageVersionResponse_programmingLang' - The supported programming language and its version.
+--
+-- 'releaseNotes', 'describeImageVersionResponse_releaseNotes' - The maintainer description of the image version.
+--
+-- 'vendorGuidance', 'describeImageVersionResponse_vendorGuidance' - The stability of the image version specified by the maintainer.
+--
+-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+--     version stability.
+--
+-- -   @STABLE@: The image version is stable.
+--
+-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+--     image versions that are set to be archived are automatically
+--     archived after three months.
+--
+-- -   @ARCHIVED@: The image version is archived. Archived image versions
+--     are not searchable and are no longer actively supported.
+--
+-- 'version', 'describeImageVersionResponse_version' - The version number.
+--
+-- 'httpStatus', 'describeImageVersionResponse_httpStatus' - The response's http status code.
+newDescribeImageVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeImageVersionResponse
+newDescribeImageVersionResponse pHttpStatus_ =
+  DescribeImageVersionResponse'
+    { baseImage =
+        Prelude.Nothing,
+      containerImage = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      horovod = Prelude.Nothing,
+      imageArn = Prelude.Nothing,
+      imageVersionArn = Prelude.Nothing,
+      imageVersionStatus = Prelude.Nothing,
+      jobType = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      mLFramework = Prelude.Nothing,
+      processor = Prelude.Nothing,
+      programmingLang = Prelude.Nothing,
+      releaseNotes = Prelude.Nothing,
+      vendorGuidance = Prelude.Nothing,
+      version = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The registry path of the container image on which this image version is
+-- based.
+describeImageVersionResponse_baseImage :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_baseImage = Lens.lens (\DescribeImageVersionResponse' {baseImage} -> baseImage) (\s@DescribeImageVersionResponse' {} a -> s {baseImage = a} :: DescribeImageVersionResponse)
+
+-- | The registry path of the container image that contains this image
+-- version.
+describeImageVersionResponse_containerImage :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_containerImage = Lens.lens (\DescribeImageVersionResponse' {containerImage} -> containerImage) (\s@DescribeImageVersionResponse' {} a -> s {containerImage = a} :: DescribeImageVersionResponse)
+
+-- | When the version was created.
+describeImageVersionResponse_creationTime :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.UTCTime)
+describeImageVersionResponse_creationTime = Lens.lens (\DescribeImageVersionResponse' {creationTime} -> creationTime) (\s@DescribeImageVersionResponse' {} a -> s {creationTime = a} :: DescribeImageVersionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | When a create or delete operation fails, the reason for the failure.
+describeImageVersionResponse_failureReason :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_failureReason = Lens.lens (\DescribeImageVersionResponse' {failureReason} -> failureReason) (\s@DescribeImageVersionResponse' {} a -> s {failureReason = a} :: DescribeImageVersionResponse)
+
+-- | Indicates Horovod compatibility.
+describeImageVersionResponse_horovod :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Bool)
+describeImageVersionResponse_horovod = Lens.lens (\DescribeImageVersionResponse' {horovod} -> horovod) (\s@DescribeImageVersionResponse' {} a -> s {horovod = a} :: DescribeImageVersionResponse)
+
+-- | The ARN of the image the version is based on.
+describeImageVersionResponse_imageArn :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_imageArn = Lens.lens (\DescribeImageVersionResponse' {imageArn} -> imageArn) (\s@DescribeImageVersionResponse' {} a -> s {imageArn = a} :: DescribeImageVersionResponse)
+
+-- | The ARN of the version.
+describeImageVersionResponse_imageVersionArn :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_imageVersionArn = Lens.lens (\DescribeImageVersionResponse' {imageVersionArn} -> imageVersionArn) (\s@DescribeImageVersionResponse' {} a -> s {imageVersionArn = a} :: DescribeImageVersionResponse)
+
+-- | The status of the version.
+describeImageVersionResponse_imageVersionStatus :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe ImageVersionStatus)
+describeImageVersionResponse_imageVersionStatus = Lens.lens (\DescribeImageVersionResponse' {imageVersionStatus} -> imageVersionStatus) (\s@DescribeImageVersionResponse' {} a -> s {imageVersionStatus = a} :: DescribeImageVersionResponse)
+
+-- | Indicates SageMaker job type compatibility.
+--
+-- -   @TRAINING@: The image version is compatible with SageMaker training
+--     jobs.
+--
+-- -   @INFERENCE@: The image version is compatible with SageMaker
+--     inference jobs.
+--
+-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+--     notebook kernels.
+describeImageVersionResponse_jobType :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe JobType)
+describeImageVersionResponse_jobType = Lens.lens (\DescribeImageVersionResponse' {jobType} -> jobType) (\s@DescribeImageVersionResponse' {} a -> s {jobType = a} :: DescribeImageVersionResponse)
+
+-- | When the version was last modified.
+describeImageVersionResponse_lastModifiedTime :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.UTCTime)
+describeImageVersionResponse_lastModifiedTime = Lens.lens (\DescribeImageVersionResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeImageVersionResponse' {} a -> s {lastModifiedTime = a} :: DescribeImageVersionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The machine learning framework vended in the image version.
+describeImageVersionResponse_mLFramework :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_mLFramework = Lens.lens (\DescribeImageVersionResponse' {mLFramework} -> mLFramework) (\s@DescribeImageVersionResponse' {} a -> s {mLFramework = a} :: DescribeImageVersionResponse)
+
+-- | Indicates CPU or GPU compatibility.
+--
+-- -   @CPU@: The image version is compatible with CPU.
+--
+-- -   @GPU@: The image version is compatible with GPU.
+describeImageVersionResponse_processor :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Processor)
+describeImageVersionResponse_processor = Lens.lens (\DescribeImageVersionResponse' {processor} -> processor) (\s@DescribeImageVersionResponse' {} a -> s {processor = a} :: DescribeImageVersionResponse)
+
+-- | The supported programming language and its version.
+describeImageVersionResponse_programmingLang :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_programmingLang = Lens.lens (\DescribeImageVersionResponse' {programmingLang} -> programmingLang) (\s@DescribeImageVersionResponse' {} a -> s {programmingLang = a} :: DescribeImageVersionResponse)
+
+-- | The maintainer description of the image version.
+describeImageVersionResponse_releaseNotes :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Text)
+describeImageVersionResponse_releaseNotes = Lens.lens (\DescribeImageVersionResponse' {releaseNotes} -> releaseNotes) (\s@DescribeImageVersionResponse' {} a -> s {releaseNotes = a} :: DescribeImageVersionResponse)
+
+-- | The stability of the image version specified by the maintainer.
+--
+-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+--     version stability.
+--
+-- -   @STABLE@: The image version is stable.
+--
+-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+--     image versions that are set to be archived are automatically
+--     archived after three months.
+--
+-- -   @ARCHIVED@: The image version is archived. Archived image versions
+--     are not searchable and are no longer actively supported.
+describeImageVersionResponse_vendorGuidance :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe VendorGuidance)
+describeImageVersionResponse_vendorGuidance = Lens.lens (\DescribeImageVersionResponse' {vendorGuidance} -> vendorGuidance) (\s@DescribeImageVersionResponse' {} a -> s {vendorGuidance = a} :: DescribeImageVersionResponse)
+
+-- | The version number.
+describeImageVersionResponse_version :: Lens.Lens' DescribeImageVersionResponse (Prelude.Maybe Prelude.Natural)
+describeImageVersionResponse_version = Lens.lens (\DescribeImageVersionResponse' {version} -> version) (\s@DescribeImageVersionResponse' {} a -> s {version = a} :: DescribeImageVersionResponse)
+
+-- | The response's http status code.
+describeImageVersionResponse_httpStatus :: Lens.Lens' DescribeImageVersionResponse Prelude.Int
+describeImageVersionResponse_httpStatus = Lens.lens (\DescribeImageVersionResponse' {httpStatus} -> httpStatus) (\s@DescribeImageVersionResponse' {} a -> s {httpStatus = a} :: DescribeImageVersionResponse)
+
+instance Prelude.NFData DescribeImageVersionResponse where
+  rnf DescribeImageVersionResponse' {..} =
+    Prelude.rnf baseImage
+      `Prelude.seq` Prelude.rnf containerImage
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf horovod
+      `Prelude.seq` Prelude.rnf imageArn
+      `Prelude.seq` Prelude.rnf imageVersionArn
+      `Prelude.seq` Prelude.rnf imageVersionStatus
+      `Prelude.seq` Prelude.rnf jobType
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf mLFramework
+      `Prelude.seq` Prelude.rnf processor
+      `Prelude.seq` Prelude.rnf programmingLang
+      `Prelude.seq` Prelude.rnf releaseNotes
+      `Prelude.seq` Prelude.rnf vendorGuidance
+      `Prelude.seq` Prelude.rnf version
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeInferenceExperiment.hs b/gen/Amazonka/SageMaker/DescribeInferenceExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeInferenceExperiment.hs
@@ -0,0 +1,476 @@
+{-# 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.DescribeInferenceExperiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns details about an inference experiment.
+module Amazonka.SageMaker.DescribeInferenceExperiment
+  ( -- * Creating a Request
+    DescribeInferenceExperiment (..),
+    newDescribeInferenceExperiment,
+
+    -- * Request Lenses
+    describeInferenceExperiment_name,
+
+    -- * Destructuring the Response
+    DescribeInferenceExperimentResponse (..),
+    newDescribeInferenceExperimentResponse,
+
+    -- * Response Lenses
+    describeInferenceExperimentResponse_completionTime,
+    describeInferenceExperimentResponse_creationTime,
+    describeInferenceExperimentResponse_dataStorageConfig,
+    describeInferenceExperimentResponse_description,
+    describeInferenceExperimentResponse_kmsKey,
+    describeInferenceExperimentResponse_lastModifiedTime,
+    describeInferenceExperimentResponse_roleArn,
+    describeInferenceExperimentResponse_schedule,
+    describeInferenceExperimentResponse_shadowModeConfig,
+    describeInferenceExperimentResponse_statusReason,
+    describeInferenceExperimentResponse_httpStatus,
+    describeInferenceExperimentResponse_arn,
+    describeInferenceExperimentResponse_name,
+    describeInferenceExperimentResponse_type,
+    describeInferenceExperimentResponse_status,
+    describeInferenceExperimentResponse_endpointMetadata,
+    describeInferenceExperimentResponse_modelVariants,
+  )
+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:/ 'newDescribeInferenceExperiment' smart constructor.
+data DescribeInferenceExperiment = DescribeInferenceExperiment'
+  { -- | The name of the inference experiment to describe.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeInferenceExperiment' 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:
+--
+-- 'name', 'describeInferenceExperiment_name' - The name of the inference experiment to describe.
+newDescribeInferenceExperiment ::
+  -- | 'name'
+  Prelude.Text ->
+  DescribeInferenceExperiment
+newDescribeInferenceExperiment pName_ =
+  DescribeInferenceExperiment' {name = pName_}
+
+-- | The name of the inference experiment to describe.
+describeInferenceExperiment_name :: Lens.Lens' DescribeInferenceExperiment Prelude.Text
+describeInferenceExperiment_name = Lens.lens (\DescribeInferenceExperiment' {name} -> name) (\s@DescribeInferenceExperiment' {} a -> s {name = a} :: DescribeInferenceExperiment)
+
+instance Core.AWSRequest DescribeInferenceExperiment where
+  type
+    AWSResponse DescribeInferenceExperiment =
+      DescribeInferenceExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeInferenceExperimentResponse'
+            Prelude.<$> (x Data..?> "CompletionTime")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DataStorageConfig")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "KmsKey")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "Schedule")
+            Prelude.<*> (x Data..?> "ShadowModeConfig")
+            Prelude.<*> (x Data..?> "StatusReason")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "Name")
+            Prelude.<*> (x Data..:> "Type")
+            Prelude.<*> (x Data..:> "Status")
+            Prelude.<*> (x Data..:> "EndpointMetadata")
+            Prelude.<*> (x Data..?> "ModelVariants" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable DescribeInferenceExperiment where
+  hashWithSalt _salt DescribeInferenceExperiment' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DescribeInferenceExperiment where
+  rnf DescribeInferenceExperiment' {..} =
+    Prelude.rnf name
+
+instance Data.ToHeaders DescribeInferenceExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeInferenceExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeInferenceExperiment where
+  toJSON DescribeInferenceExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
+
+instance Data.ToPath DescribeInferenceExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeInferenceExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeInferenceExperimentResponse' smart constructor.
+data DescribeInferenceExperimentResponse = DescribeInferenceExperimentResponse'
+  { -- | The timestamp at which the inference experiment was completed.
+    completionTime :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp at which you created the inference experiment.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon S3 location and configuration for storing inference request
+    -- and response data.
+    dataStorageConfig :: Prelude.Maybe InferenceExperimentDataStorageConfig,
+    -- | The description of the inference experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance that hosts the endpoint. For more
+    -- information, see CreateInferenceExperimentRequest$KmsKey.
+    kmsKey :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp at which you last modified the inference experiment.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the IAM role that Amazon SageMaker can assume to access model
+    -- artifacts and container images, and manage Amazon SageMaker Inference
+    -- endpoints for model deployment.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The duration for which the inference experiment ran or will run.
+    schedule :: Prelude.Maybe InferenceExperimentSchedule,
+    -- | The configuration of @ShadowMode@ inference experiment type, which shows
+    -- the production variant that takes all the inference requests, and the
+    -- shadow variant to which Amazon SageMaker replicates a percentage of the
+    -- inference requests. For the shadow variant it also shows the percentage
+    -- of requests that Amazon SageMaker replicates.
+    shadowModeConfig :: Prelude.Maybe ShadowModeConfig,
+    -- | The error message or client-specified @Reason@ from the
+    -- StopInferenceExperiment API, that explains the status of the inference
+    -- experiment.
+    statusReason :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the inference experiment being described.
+    arn :: Prelude.Text,
+    -- | The name of the inference experiment.
+    name :: Prelude.Text,
+    -- | The type of the inference experiment.
+    type' :: InferenceExperimentType,
+    -- | The status of the inference experiment. The following are the possible
+    -- statuses for an inference experiment:
+    --
+    -- -   @Creating@ - Amazon SageMaker is creating your experiment.
+    --
+    -- -   @Created@ - Amazon SageMaker has finished the creation of your
+    --     experiment and will begin the experiment at the scheduled time.
+    --
+    -- -   @Updating@ - When you make changes to your experiment, your
+    --     experiment shows as updating.
+    --
+    -- -   @Starting@ - Amazon SageMaker is beginning your experiment.
+    --
+    -- -   @Running@ - Your experiment is in progress.
+    --
+    -- -   @Stopping@ - Amazon SageMaker is stopping your experiment.
+    --
+    -- -   @Completed@ - Your experiment has completed.
+    --
+    -- -   @Cancelled@ - When you conclude your experiment early using the
+    --     StopInferenceExperiment API, or if any operation fails with an
+    --     unexpected error, it shows as cancelled.
+    status :: InferenceExperimentStatus,
+    -- | The metadata of the endpoint on which the inference experiment ran.
+    endpointMetadata :: EndpointMetadata,
+    -- | An array of @ModelVariantConfigSummary@ objects. There is one for each
+    -- variant in the inference experiment. Each @ModelVariantConfigSummary@
+    -- object in the array describes the infrastructure configuration for
+    -- deploying the corresponding variant.
+    modelVariants :: [ModelVariantConfigSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeInferenceExperimentResponse' 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:
+--
+-- 'completionTime', 'describeInferenceExperimentResponse_completionTime' - The timestamp at which the inference experiment was completed.
+--
+-- 'creationTime', 'describeInferenceExperimentResponse_creationTime' - The timestamp at which you created the inference experiment.
+--
+-- 'dataStorageConfig', 'describeInferenceExperimentResponse_dataStorageConfig' - The Amazon S3 location and configuration for storing inference request
+-- and response data.
+--
+-- 'description', 'describeInferenceExperimentResponse_description' - The description of the inference experiment.
+--
+-- 'kmsKey', 'describeInferenceExperimentResponse_kmsKey' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the endpoint. For more
+-- information, see CreateInferenceExperimentRequest$KmsKey.
+--
+-- 'lastModifiedTime', 'describeInferenceExperimentResponse_lastModifiedTime' - The timestamp at which you last modified the inference experiment.
+--
+-- 'roleArn', 'describeInferenceExperimentResponse_roleArn' - The ARN of the IAM role that Amazon SageMaker can assume to access model
+-- artifacts and container images, and manage Amazon SageMaker Inference
+-- endpoints for model deployment.
+--
+-- 'schedule', 'describeInferenceExperimentResponse_schedule' - The duration for which the inference experiment ran or will run.
+--
+-- 'shadowModeConfig', 'describeInferenceExperimentResponse_shadowModeConfig' - The configuration of @ShadowMode@ inference experiment type, which shows
+-- the production variant that takes all the inference requests, and the
+-- shadow variant to which Amazon SageMaker replicates a percentage of the
+-- inference requests. For the shadow variant it also shows the percentage
+-- of requests that Amazon SageMaker replicates.
+--
+-- 'statusReason', 'describeInferenceExperimentResponse_statusReason' - The error message or client-specified @Reason@ from the
+-- StopInferenceExperiment API, that explains the status of the inference
+-- experiment.
+--
+-- 'httpStatus', 'describeInferenceExperimentResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'describeInferenceExperimentResponse_arn' - The ARN of the inference experiment being described.
+--
+-- 'name', 'describeInferenceExperimentResponse_name' - The name of the inference experiment.
+--
+-- 'type'', 'describeInferenceExperimentResponse_type' - The type of the inference experiment.
+--
+-- 'status', 'describeInferenceExperimentResponse_status' - The status of the inference experiment. The following are the possible
+-- statuses for an inference experiment:
+--
+-- -   @Creating@ - Amazon SageMaker is creating your experiment.
+--
+-- -   @Created@ - Amazon SageMaker has finished the creation of your
+--     experiment and will begin the experiment at the scheduled time.
+--
+-- -   @Updating@ - When you make changes to your experiment, your
+--     experiment shows as updating.
+--
+-- -   @Starting@ - Amazon SageMaker is beginning your experiment.
+--
+-- -   @Running@ - Your experiment is in progress.
+--
+-- -   @Stopping@ - Amazon SageMaker is stopping your experiment.
+--
+-- -   @Completed@ - Your experiment has completed.
+--
+-- -   @Cancelled@ - When you conclude your experiment early using the
+--     StopInferenceExperiment API, or if any operation fails with an
+--     unexpected error, it shows as cancelled.
+--
+-- 'endpointMetadata', 'describeInferenceExperimentResponse_endpointMetadata' - The metadata of the endpoint on which the inference experiment ran.
+--
+-- 'modelVariants', 'describeInferenceExperimentResponse_modelVariants' - An array of @ModelVariantConfigSummary@ objects. There is one for each
+-- variant in the inference experiment. Each @ModelVariantConfigSummary@
+-- object in the array describes the infrastructure configuration for
+-- deploying the corresponding variant.
+newDescribeInferenceExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  InferenceExperimentType ->
+  -- | 'status'
+  InferenceExperimentStatus ->
+  -- | 'endpointMetadata'
+  EndpointMetadata ->
+  DescribeInferenceExperimentResponse
+newDescribeInferenceExperimentResponse
+  pHttpStatus_
+  pArn_
+  pName_
+  pType_
+  pStatus_
+  pEndpointMetadata_ =
+    DescribeInferenceExperimentResponse'
+      { completionTime =
+          Prelude.Nothing,
+        creationTime = Prelude.Nothing,
+        dataStorageConfig = Prelude.Nothing,
+        description = Prelude.Nothing,
+        kmsKey = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        schedule = Prelude.Nothing,
+        shadowModeConfig = Prelude.Nothing,
+        statusReason = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        name = pName_,
+        type' = pType_,
+        status = pStatus_,
+        endpointMetadata = pEndpointMetadata_,
+        modelVariants = Prelude.mempty
+      }
+
+-- | The timestamp at which the inference experiment was completed.
+describeInferenceExperimentResponse_completionTime :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.UTCTime)
+describeInferenceExperimentResponse_completionTime = Lens.lens (\DescribeInferenceExperimentResponse' {completionTime} -> completionTime) (\s@DescribeInferenceExperimentResponse' {} a -> s {completionTime = a} :: DescribeInferenceExperimentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp at which you created the inference experiment.
+describeInferenceExperimentResponse_creationTime :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.UTCTime)
+describeInferenceExperimentResponse_creationTime = Lens.lens (\DescribeInferenceExperimentResponse' {creationTime} -> creationTime) (\s@DescribeInferenceExperimentResponse' {} a -> s {creationTime = a} :: DescribeInferenceExperimentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon S3 location and configuration for storing inference request
+-- and response data.
+describeInferenceExperimentResponse_dataStorageConfig :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe InferenceExperimentDataStorageConfig)
+describeInferenceExperimentResponse_dataStorageConfig = Lens.lens (\DescribeInferenceExperimentResponse' {dataStorageConfig} -> dataStorageConfig) (\s@DescribeInferenceExperimentResponse' {} a -> s {dataStorageConfig = a} :: DescribeInferenceExperimentResponse)
+
+-- | The description of the inference experiment.
+describeInferenceExperimentResponse_description :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.Text)
+describeInferenceExperimentResponse_description = Lens.lens (\DescribeInferenceExperimentResponse' {description} -> description) (\s@DescribeInferenceExperimentResponse' {} a -> s {description = a} :: DescribeInferenceExperimentResponse)
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the endpoint. For more
+-- information, see CreateInferenceExperimentRequest$KmsKey.
+describeInferenceExperimentResponse_kmsKey :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.Text)
+describeInferenceExperimentResponse_kmsKey = Lens.lens (\DescribeInferenceExperimentResponse' {kmsKey} -> kmsKey) (\s@DescribeInferenceExperimentResponse' {} a -> s {kmsKey = a} :: DescribeInferenceExperimentResponse)
+
+-- | The timestamp at which you last modified the inference experiment.
+describeInferenceExperimentResponse_lastModifiedTime :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.UTCTime)
+describeInferenceExperimentResponse_lastModifiedTime = Lens.lens (\DescribeInferenceExperimentResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeInferenceExperimentResponse' {} a -> s {lastModifiedTime = a} :: DescribeInferenceExperimentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the IAM role that Amazon SageMaker can assume to access model
+-- artifacts and container images, and manage Amazon SageMaker Inference
+-- endpoints for model deployment.
+describeInferenceExperimentResponse_roleArn :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.Text)
+describeInferenceExperimentResponse_roleArn = Lens.lens (\DescribeInferenceExperimentResponse' {roleArn} -> roleArn) (\s@DescribeInferenceExperimentResponse' {} a -> s {roleArn = a} :: DescribeInferenceExperimentResponse)
+
+-- | The duration for which the inference experiment ran or will run.
+describeInferenceExperimentResponse_schedule :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe InferenceExperimentSchedule)
+describeInferenceExperimentResponse_schedule = Lens.lens (\DescribeInferenceExperimentResponse' {schedule} -> schedule) (\s@DescribeInferenceExperimentResponse' {} a -> s {schedule = a} :: DescribeInferenceExperimentResponse)
+
+-- | The configuration of @ShadowMode@ inference experiment type, which shows
+-- the production variant that takes all the inference requests, and the
+-- shadow variant to which Amazon SageMaker replicates a percentage of the
+-- inference requests. For the shadow variant it also shows the percentage
+-- of requests that Amazon SageMaker replicates.
+describeInferenceExperimentResponse_shadowModeConfig :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe ShadowModeConfig)
+describeInferenceExperimentResponse_shadowModeConfig = Lens.lens (\DescribeInferenceExperimentResponse' {shadowModeConfig} -> shadowModeConfig) (\s@DescribeInferenceExperimentResponse' {} a -> s {shadowModeConfig = a} :: DescribeInferenceExperimentResponse)
+
+-- | The error message or client-specified @Reason@ from the
+-- StopInferenceExperiment API, that explains the status of the inference
+-- experiment.
+describeInferenceExperimentResponse_statusReason :: Lens.Lens' DescribeInferenceExperimentResponse (Prelude.Maybe Prelude.Text)
+describeInferenceExperimentResponse_statusReason = Lens.lens (\DescribeInferenceExperimentResponse' {statusReason} -> statusReason) (\s@DescribeInferenceExperimentResponse' {} a -> s {statusReason = a} :: DescribeInferenceExperimentResponse)
+
+-- | The response's http status code.
+describeInferenceExperimentResponse_httpStatus :: Lens.Lens' DescribeInferenceExperimentResponse Prelude.Int
+describeInferenceExperimentResponse_httpStatus = Lens.lens (\DescribeInferenceExperimentResponse' {httpStatus} -> httpStatus) (\s@DescribeInferenceExperimentResponse' {} a -> s {httpStatus = a} :: DescribeInferenceExperimentResponse)
+
+-- | The ARN of the inference experiment being described.
+describeInferenceExperimentResponse_arn :: Lens.Lens' DescribeInferenceExperimentResponse Prelude.Text
+describeInferenceExperimentResponse_arn = Lens.lens (\DescribeInferenceExperimentResponse' {arn} -> arn) (\s@DescribeInferenceExperimentResponse' {} a -> s {arn = a} :: DescribeInferenceExperimentResponse)
+
+-- | The name of the inference experiment.
+describeInferenceExperimentResponse_name :: Lens.Lens' DescribeInferenceExperimentResponse Prelude.Text
+describeInferenceExperimentResponse_name = Lens.lens (\DescribeInferenceExperimentResponse' {name} -> name) (\s@DescribeInferenceExperimentResponse' {} a -> s {name = a} :: DescribeInferenceExperimentResponse)
+
+-- | The type of the inference experiment.
+describeInferenceExperimentResponse_type :: Lens.Lens' DescribeInferenceExperimentResponse InferenceExperimentType
+describeInferenceExperimentResponse_type = Lens.lens (\DescribeInferenceExperimentResponse' {type'} -> type') (\s@DescribeInferenceExperimentResponse' {} a -> s {type' = a} :: DescribeInferenceExperimentResponse)
+
+-- | The status of the inference experiment. The following are the possible
+-- statuses for an inference experiment:
+--
+-- -   @Creating@ - Amazon SageMaker is creating your experiment.
+--
+-- -   @Created@ - Amazon SageMaker has finished the creation of your
+--     experiment and will begin the experiment at the scheduled time.
+--
+-- -   @Updating@ - When you make changes to your experiment, your
+--     experiment shows as updating.
+--
+-- -   @Starting@ - Amazon SageMaker is beginning your experiment.
+--
+-- -   @Running@ - Your experiment is in progress.
+--
+-- -   @Stopping@ - Amazon SageMaker is stopping your experiment.
+--
+-- -   @Completed@ - Your experiment has completed.
+--
+-- -   @Cancelled@ - When you conclude your experiment early using the
+--     StopInferenceExperiment API, or if any operation fails with an
+--     unexpected error, it shows as cancelled.
+describeInferenceExperimentResponse_status :: Lens.Lens' DescribeInferenceExperimentResponse InferenceExperimentStatus
+describeInferenceExperimentResponse_status = Lens.lens (\DescribeInferenceExperimentResponse' {status} -> status) (\s@DescribeInferenceExperimentResponse' {} a -> s {status = a} :: DescribeInferenceExperimentResponse)
+
+-- | The metadata of the endpoint on which the inference experiment ran.
+describeInferenceExperimentResponse_endpointMetadata :: Lens.Lens' DescribeInferenceExperimentResponse EndpointMetadata
+describeInferenceExperimentResponse_endpointMetadata = Lens.lens (\DescribeInferenceExperimentResponse' {endpointMetadata} -> endpointMetadata) (\s@DescribeInferenceExperimentResponse' {} a -> s {endpointMetadata = a} :: DescribeInferenceExperimentResponse)
+
+-- | An array of @ModelVariantConfigSummary@ objects. There is one for each
+-- variant in the inference experiment. Each @ModelVariantConfigSummary@
+-- object in the array describes the infrastructure configuration for
+-- deploying the corresponding variant.
+describeInferenceExperimentResponse_modelVariants :: Lens.Lens' DescribeInferenceExperimentResponse [ModelVariantConfigSummary]
+describeInferenceExperimentResponse_modelVariants = Lens.lens (\DescribeInferenceExperimentResponse' {modelVariants} -> modelVariants) (\s@DescribeInferenceExperimentResponse' {} a -> s {modelVariants = a} :: DescribeInferenceExperimentResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    DescribeInferenceExperimentResponse
+  where
+  rnf DescribeInferenceExperimentResponse' {..} =
+    Prelude.rnf completionTime
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dataStorageConfig
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf kmsKey
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf schedule
+      `Prelude.seq` Prelude.rnf shadowModeConfig
+      `Prelude.seq` Prelude.rnf statusReason
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf endpointMetadata
+      `Prelude.seq` Prelude.rnf modelVariants
diff --git a/gen/Amazonka/SageMaker/DescribeInferenceRecommendationsJob.hs b/gen/Amazonka/SageMaker/DescribeInferenceRecommendationsJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeInferenceRecommendationsJob.hs
@@ -0,0 +1,410 @@
+{-# 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.DescribeInferenceRecommendationsJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides the results of the Inference Recommender job. One or more
+-- recommendation jobs are returned.
+module Amazonka.SageMaker.DescribeInferenceRecommendationsJob
+  ( -- * Creating a Request
+    DescribeInferenceRecommendationsJob (..),
+    newDescribeInferenceRecommendationsJob,
+
+    -- * Request Lenses
+    describeInferenceRecommendationsJob_jobName,
+
+    -- * Destructuring the Response
+    DescribeInferenceRecommendationsJobResponse (..),
+    newDescribeInferenceRecommendationsJobResponse,
+
+    -- * Response Lenses
+    describeInferenceRecommendationsJobResponse_completionTime,
+    describeInferenceRecommendationsJobResponse_endpointPerformances,
+    describeInferenceRecommendationsJobResponse_failureReason,
+    describeInferenceRecommendationsJobResponse_inferenceRecommendations,
+    describeInferenceRecommendationsJobResponse_jobDescription,
+    describeInferenceRecommendationsJobResponse_stoppingConditions,
+    describeInferenceRecommendationsJobResponse_httpStatus,
+    describeInferenceRecommendationsJobResponse_jobName,
+    describeInferenceRecommendationsJobResponse_jobType,
+    describeInferenceRecommendationsJobResponse_jobArn,
+    describeInferenceRecommendationsJobResponse_roleArn,
+    describeInferenceRecommendationsJobResponse_status,
+    describeInferenceRecommendationsJobResponse_creationTime,
+    describeInferenceRecommendationsJobResponse_lastModifiedTime,
+    describeInferenceRecommendationsJobResponse_inputConfig,
+  )
+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:/ 'newDescribeInferenceRecommendationsJob' smart constructor.
+data DescribeInferenceRecommendationsJob = DescribeInferenceRecommendationsJob'
+  { -- | The name of the job. The name must be unique within an Amazon Web
+    -- Services Region in the Amazon Web Services account.
+    jobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeInferenceRecommendationsJob' 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:
+--
+-- 'jobName', 'describeInferenceRecommendationsJob_jobName' - The name of the job. The name must be unique within an Amazon Web
+-- Services Region in the Amazon Web Services account.
+newDescribeInferenceRecommendationsJob ::
+  -- | 'jobName'
+  Prelude.Text ->
+  DescribeInferenceRecommendationsJob
+newDescribeInferenceRecommendationsJob pJobName_ =
+  DescribeInferenceRecommendationsJob'
+    { jobName =
+        pJobName_
+    }
+
+-- | The name of the job. The name must be unique within an Amazon Web
+-- Services Region in the Amazon Web Services account.
+describeInferenceRecommendationsJob_jobName :: Lens.Lens' DescribeInferenceRecommendationsJob Prelude.Text
+describeInferenceRecommendationsJob_jobName = Lens.lens (\DescribeInferenceRecommendationsJob' {jobName} -> jobName) (\s@DescribeInferenceRecommendationsJob' {} a -> s {jobName = a} :: DescribeInferenceRecommendationsJob)
+
+instance
+  Core.AWSRequest
+    DescribeInferenceRecommendationsJob
+  where
+  type
+    AWSResponse DescribeInferenceRecommendationsJob =
+      DescribeInferenceRecommendationsJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeInferenceRecommendationsJobResponse'
+            Prelude.<$> (x Data..?> "CompletionTime")
+            Prelude.<*> ( x
+                            Data..?> "EndpointPerformances"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "InferenceRecommendations")
+            Prelude.<*> (x Data..?> "JobDescription")
+            Prelude.<*> (x Data..?> "StoppingConditions")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobName")
+            Prelude.<*> (x Data..:> "JobType")
+            Prelude.<*> (x Data..:> "JobArn")
+            Prelude.<*> (x Data..:> "RoleArn")
+            Prelude.<*> (x Data..:> "Status")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+            Prelude.<*> (x Data..:> "InputConfig")
+      )
+
+instance
+  Prelude.Hashable
+    DescribeInferenceRecommendationsJob
+  where
+  hashWithSalt
+    _salt
+    DescribeInferenceRecommendationsJob' {..} =
+      _salt `Prelude.hashWithSalt` jobName
+
+instance
+  Prelude.NFData
+    DescribeInferenceRecommendationsJob
+  where
+  rnf DescribeInferenceRecommendationsJob' {..} =
+    Prelude.rnf jobName
+
+instance
+  Data.ToHeaders
+    DescribeInferenceRecommendationsJob
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeInferenceRecommendationsJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribeInferenceRecommendationsJob
+  where
+  toJSON DescribeInferenceRecommendationsJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("JobName" Data..= jobName)]
+      )
+
+instance
+  Data.ToPath
+    DescribeInferenceRecommendationsJob
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeInferenceRecommendationsJob
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeInferenceRecommendationsJobResponse' smart constructor.
+data DescribeInferenceRecommendationsJobResponse = DescribeInferenceRecommendationsJobResponse'
+  { -- | A timestamp that shows when the job completed.
+    completionTime :: Prelude.Maybe Data.POSIX,
+    -- | The performance results from running an Inference Recommender job on an
+    -- existing endpoint.
+    endpointPerformances :: Prelude.Maybe [EndpointPerformance],
+    -- | If the job fails, provides information why the job failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The recommendations made by Inference Recommender.
+    inferenceRecommendations :: Prelude.Maybe (Prelude.NonEmpty InferenceRecommendation),
+    -- | The job description that you provided when you initiated the job.
+    jobDescription :: Prelude.Maybe Prelude.Text,
+    -- | The stopping conditions that you provided when you initiated the job.
+    stoppingConditions :: Prelude.Maybe RecommendationJobStoppingConditions,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the job. The name must be unique within an Amazon Web
+    -- Services Region in the Amazon Web Services account.
+    jobName :: Prelude.Text,
+    -- | The job type that you provided when you initiated the job.
+    jobType :: RecommendationJobType,
+    -- | The Amazon Resource Name (ARN) of the job.
+    jobArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+    -- Access Management (IAM) role you provided when you initiated the job.
+    roleArn :: Prelude.Text,
+    -- | The status of the job.
+    status :: RecommendationJobStatus,
+    -- | A timestamp that shows when the job was created.
+    creationTime :: Data.POSIX,
+    -- | A timestamp that shows when the job was last modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | Returns information about the versioned model package Amazon Resource
+    -- Name (ARN), the traffic pattern, and endpoint configurations you
+    -- provided when you initiated the job.
+    inputConfig :: RecommendationJobInputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeInferenceRecommendationsJobResponse' 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:
+--
+-- 'completionTime', 'describeInferenceRecommendationsJobResponse_completionTime' - A timestamp that shows when the job completed.
+--
+-- 'endpointPerformances', 'describeInferenceRecommendationsJobResponse_endpointPerformances' - The performance results from running an Inference Recommender job on an
+-- existing endpoint.
+--
+-- 'failureReason', 'describeInferenceRecommendationsJobResponse_failureReason' - If the job fails, provides information why the job failed.
+--
+-- 'inferenceRecommendations', 'describeInferenceRecommendationsJobResponse_inferenceRecommendations' - The recommendations made by Inference Recommender.
+--
+-- 'jobDescription', 'describeInferenceRecommendationsJobResponse_jobDescription' - The job description that you provided when you initiated the job.
+--
+-- 'stoppingConditions', 'describeInferenceRecommendationsJobResponse_stoppingConditions' - The stopping conditions that you provided when you initiated the job.
+--
+-- 'httpStatus', 'describeInferenceRecommendationsJobResponse_httpStatus' - The response's http status code.
+--
+-- 'jobName', 'describeInferenceRecommendationsJobResponse_jobName' - The name of the job. The name must be unique within an Amazon Web
+-- Services Region in the Amazon Web Services account.
+--
+-- 'jobType', 'describeInferenceRecommendationsJobResponse_jobType' - The job type that you provided when you initiated the job.
+--
+-- 'jobArn', 'describeInferenceRecommendationsJobResponse_jobArn' - The Amazon Resource Name (ARN) of the job.
+--
+-- 'roleArn', 'describeInferenceRecommendationsJobResponse_roleArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) role you provided when you initiated the job.
+--
+-- 'status', 'describeInferenceRecommendationsJobResponse_status' - The status of the job.
+--
+-- 'creationTime', 'describeInferenceRecommendationsJobResponse_creationTime' - A timestamp that shows when the job was created.
+--
+-- 'lastModifiedTime', 'describeInferenceRecommendationsJobResponse_lastModifiedTime' - A timestamp that shows when the job was last modified.
+--
+-- 'inputConfig', 'describeInferenceRecommendationsJobResponse_inputConfig' - Returns information about the versioned model package Amazon Resource
+-- Name (ARN), the traffic pattern, and endpoint configurations you
+-- provided when you initiated the job.
+newDescribeInferenceRecommendationsJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'jobType'
+  RecommendationJobType ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'status'
+  RecommendationJobStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'inputConfig'
+  RecommendationJobInputConfig ->
+  DescribeInferenceRecommendationsJobResponse
+newDescribeInferenceRecommendationsJobResponse
+  pHttpStatus_
+  pJobName_
+  pJobType_
+  pJobArn_
+  pRoleArn_
+  pStatus_
+  pCreationTime_
+  pLastModifiedTime_
+  pInputConfig_ =
+    DescribeInferenceRecommendationsJobResponse'
+      { completionTime =
+          Prelude.Nothing,
+        endpointPerformances =
+          Prelude.Nothing,
+        failureReason =
+          Prelude.Nothing,
+        inferenceRecommendations =
+          Prelude.Nothing,
+        jobDescription =
+          Prelude.Nothing,
+        stoppingConditions =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobName = pJobName_,
+        jobType = pJobType_,
+        jobArn = pJobArn_,
+        roleArn = pRoleArn_,
+        status = pStatus_,
+        creationTime =
+          Data._Time
+            Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time
+            Lens.# pLastModifiedTime_,
+        inputConfig = pInputConfig_
+      }
+
+-- | A timestamp that shows when the job completed.
+describeInferenceRecommendationsJobResponse_completionTime :: Lens.Lens' DescribeInferenceRecommendationsJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeInferenceRecommendationsJobResponse_completionTime = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {completionTime} -> completionTime) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {completionTime = a} :: DescribeInferenceRecommendationsJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The performance results from running an Inference Recommender job on an
+-- existing endpoint.
+describeInferenceRecommendationsJobResponse_endpointPerformances :: Lens.Lens' DescribeInferenceRecommendationsJobResponse (Prelude.Maybe [EndpointPerformance])
+describeInferenceRecommendationsJobResponse_endpointPerformances = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {endpointPerformances} -> endpointPerformances) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {endpointPerformances = a} :: DescribeInferenceRecommendationsJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the job fails, provides information why the job failed.
+describeInferenceRecommendationsJobResponse_failureReason :: Lens.Lens' DescribeInferenceRecommendationsJobResponse (Prelude.Maybe Prelude.Text)
+describeInferenceRecommendationsJobResponse_failureReason = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {failureReason} -> failureReason) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {failureReason = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The recommendations made by Inference Recommender.
+describeInferenceRecommendationsJobResponse_inferenceRecommendations :: Lens.Lens' DescribeInferenceRecommendationsJobResponse (Prelude.Maybe (Prelude.NonEmpty InferenceRecommendation))
+describeInferenceRecommendationsJobResponse_inferenceRecommendations = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {inferenceRecommendations} -> inferenceRecommendations) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {inferenceRecommendations = a} :: DescribeInferenceRecommendationsJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The job description that you provided when you initiated the job.
+describeInferenceRecommendationsJobResponse_jobDescription :: Lens.Lens' DescribeInferenceRecommendationsJobResponse (Prelude.Maybe Prelude.Text)
+describeInferenceRecommendationsJobResponse_jobDescription = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {jobDescription} -> jobDescription) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {jobDescription = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The stopping conditions that you provided when you initiated the job.
+describeInferenceRecommendationsJobResponse_stoppingConditions :: Lens.Lens' DescribeInferenceRecommendationsJobResponse (Prelude.Maybe RecommendationJobStoppingConditions)
+describeInferenceRecommendationsJobResponse_stoppingConditions = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {stoppingConditions} -> stoppingConditions) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {stoppingConditions = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The response's http status code.
+describeInferenceRecommendationsJobResponse_httpStatus :: Lens.Lens' DescribeInferenceRecommendationsJobResponse Prelude.Int
+describeInferenceRecommendationsJobResponse_httpStatus = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {httpStatus} -> httpStatus) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {httpStatus = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The name of the job. The name must be unique within an Amazon Web
+-- Services Region in the Amazon Web Services account.
+describeInferenceRecommendationsJobResponse_jobName :: Lens.Lens' DescribeInferenceRecommendationsJobResponse Prelude.Text
+describeInferenceRecommendationsJobResponse_jobName = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {jobName} -> jobName) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {jobName = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The job type that you provided when you initiated the job.
+describeInferenceRecommendationsJobResponse_jobType :: Lens.Lens' DescribeInferenceRecommendationsJobResponse RecommendationJobType
+describeInferenceRecommendationsJobResponse_jobType = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {jobType} -> jobType) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {jobType = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the job.
+describeInferenceRecommendationsJobResponse_jobArn :: Lens.Lens' DescribeInferenceRecommendationsJobResponse Prelude.Text
+describeInferenceRecommendationsJobResponse_jobArn = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {jobArn} -> jobArn) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {jobArn = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) role you provided when you initiated the job.
+describeInferenceRecommendationsJobResponse_roleArn :: Lens.Lens' DescribeInferenceRecommendationsJobResponse Prelude.Text
+describeInferenceRecommendationsJobResponse_roleArn = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {roleArn} -> roleArn) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {roleArn = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | The status of the job.
+describeInferenceRecommendationsJobResponse_status :: Lens.Lens' DescribeInferenceRecommendationsJobResponse RecommendationJobStatus
+describeInferenceRecommendationsJobResponse_status = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {status} -> status) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {status = a} :: DescribeInferenceRecommendationsJobResponse)
+
+-- | A timestamp that shows when the job was created.
+describeInferenceRecommendationsJobResponse_creationTime :: Lens.Lens' DescribeInferenceRecommendationsJobResponse Prelude.UTCTime
+describeInferenceRecommendationsJobResponse_creationTime = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {creationTime} -> creationTime) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {creationTime = a} :: DescribeInferenceRecommendationsJobResponse) Prelude.. Data._Time
+
+-- | A timestamp that shows when the job was last modified.
+describeInferenceRecommendationsJobResponse_lastModifiedTime :: Lens.Lens' DescribeInferenceRecommendationsJobResponse Prelude.UTCTime
+describeInferenceRecommendationsJobResponse_lastModifiedTime = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeInferenceRecommendationsJobResponse) Prelude.. Data._Time
+
+-- | Returns information about the versioned model package Amazon Resource
+-- Name (ARN), the traffic pattern, and endpoint configurations you
+-- provided when you initiated the job.
+describeInferenceRecommendationsJobResponse_inputConfig :: Lens.Lens' DescribeInferenceRecommendationsJobResponse RecommendationJobInputConfig
+describeInferenceRecommendationsJobResponse_inputConfig = Lens.lens (\DescribeInferenceRecommendationsJobResponse' {inputConfig} -> inputConfig) (\s@DescribeInferenceRecommendationsJobResponse' {} a -> s {inputConfig = a} :: DescribeInferenceRecommendationsJobResponse)
+
+instance
+  Prelude.NFData
+    DescribeInferenceRecommendationsJobResponse
+  where
+  rnf DescribeInferenceRecommendationsJobResponse' {..} =
+    Prelude.rnf completionTime
+      `Prelude.seq` Prelude.rnf endpointPerformances
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf inferenceRecommendations
+      `Prelude.seq` Prelude.rnf jobDescription
+      `Prelude.seq` Prelude.rnf stoppingConditions
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf jobType
+      `Prelude.seq` Prelude.rnf jobArn
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf inputConfig
diff --git a/gen/Amazonka/SageMaker/DescribeLabelingJob.hs b/gen/Amazonka/SageMaker/DescribeLabelingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeLabelingJob.hs
@@ -0,0 +1,564 @@
+{-# 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.DescribeLabelingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a labeling job.
+module Amazonka.SageMaker.DescribeLabelingJob
+  ( -- * Creating a Request
+    DescribeLabelingJob (..),
+    newDescribeLabelingJob,
+
+    -- * Request Lenses
+    describeLabelingJob_labelingJobName,
+
+    -- * Destructuring the Response
+    DescribeLabelingJobResponse (..),
+    newDescribeLabelingJobResponse,
+
+    -- * Response Lenses
+    describeLabelingJobResponse_failureReason,
+    describeLabelingJobResponse_labelAttributeName,
+    describeLabelingJobResponse_labelCategoryConfigS3Uri,
+    describeLabelingJobResponse_labelingJobAlgorithmsConfig,
+    describeLabelingJobResponse_labelingJobOutput,
+    describeLabelingJobResponse_stoppingConditions,
+    describeLabelingJobResponse_tags,
+    describeLabelingJobResponse_httpStatus,
+    describeLabelingJobResponse_labelingJobStatus,
+    describeLabelingJobResponse_labelCounters,
+    describeLabelingJobResponse_creationTime,
+    describeLabelingJobResponse_lastModifiedTime,
+    describeLabelingJobResponse_jobReferenceCode,
+    describeLabelingJobResponse_labelingJobName,
+    describeLabelingJobResponse_labelingJobArn,
+    describeLabelingJobResponse_inputConfig,
+    describeLabelingJobResponse_outputConfig,
+    describeLabelingJobResponse_roleArn,
+    describeLabelingJobResponse_humanTaskConfig,
+  )
+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:/ 'newDescribeLabelingJob' smart constructor.
+data DescribeLabelingJob = DescribeLabelingJob'
+  { -- | The name of the labeling job to return information for.
+    labelingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLabelingJob' 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:
+--
+-- 'labelingJobName', 'describeLabelingJob_labelingJobName' - The name of the labeling job to return information for.
+newDescribeLabelingJob ::
+  -- | 'labelingJobName'
+  Prelude.Text ->
+  DescribeLabelingJob
+newDescribeLabelingJob pLabelingJobName_ =
+  DescribeLabelingJob'
+    { labelingJobName =
+        pLabelingJobName_
+    }
+
+-- | The name of the labeling job to return information for.
+describeLabelingJob_labelingJobName :: Lens.Lens' DescribeLabelingJob Prelude.Text
+describeLabelingJob_labelingJobName = Lens.lens (\DescribeLabelingJob' {labelingJobName} -> labelingJobName) (\s@DescribeLabelingJob' {} a -> s {labelingJobName = a} :: DescribeLabelingJob)
+
+instance Core.AWSRequest DescribeLabelingJob where
+  type
+    AWSResponse DescribeLabelingJob =
+      DescribeLabelingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeLabelingJobResponse'
+            Prelude.<$> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LabelAttributeName")
+            Prelude.<*> (x Data..?> "LabelCategoryConfigS3Uri")
+            Prelude.<*> (x Data..?> "LabelingJobAlgorithmsConfig")
+            Prelude.<*> (x Data..?> "LabelingJobOutput")
+            Prelude.<*> (x Data..?> "StoppingConditions")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "LabelingJobStatus")
+            Prelude.<*> (x Data..:> "LabelCounters")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+            Prelude.<*> (x Data..:> "JobReferenceCode")
+            Prelude.<*> (x Data..:> "LabelingJobName")
+            Prelude.<*> (x Data..:> "LabelingJobArn")
+            Prelude.<*> (x Data..:> "InputConfig")
+            Prelude.<*> (x Data..:> "OutputConfig")
+            Prelude.<*> (x Data..:> "RoleArn")
+            Prelude.<*> (x Data..:> "HumanTaskConfig")
+      )
+
+instance Prelude.Hashable DescribeLabelingJob where
+  hashWithSalt _salt DescribeLabelingJob' {..} =
+    _salt `Prelude.hashWithSalt` labelingJobName
+
+instance Prelude.NFData DescribeLabelingJob where
+  rnf DescribeLabelingJob' {..} =
+    Prelude.rnf labelingJobName
+
+instance Data.ToHeaders DescribeLabelingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeLabelingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeLabelingJob where
+  toJSON DescribeLabelingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LabelingJobName" Data..= labelingJobName)
+          ]
+      )
+
+instance Data.ToPath DescribeLabelingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeLabelingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeLabelingJobResponse' smart constructor.
+data DescribeLabelingJobResponse = DescribeLabelingJobResponse'
+  { -- | If the job failed, the reason that it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The attribute used as the label in the output manifest file.
+    labelAttributeName :: Prelude.Maybe Prelude.Text,
+    -- | The S3 location of the JSON file that defines the categories used to
+    -- label data objects. Please note the following label-category limits:
+    --
+    -- -   Semantic segmentation labeling jobs using automated labeling: 20
+    --     labels
+    --
+    -- -   Box bounding labeling jobs (all): 10 labels
+    --
+    -- The file is a JSON structure in the following format:
+    --
+    -- @{@
+    --
+    -- @ \"document-version\": \"2018-11-28\"@
+    --
+    -- @ \"labels\": [@
+    --
+    -- @ {@
+    --
+    -- @ \"label\": \"@/@label 1@/@\"@
+    --
+    -- @ },@
+    --
+    -- @ {@
+    --
+    -- @ \"label\": \"@/@label 2@/@\"@
+    --
+    -- @ },@
+    --
+    -- @ ...@
+    --
+    -- @ {@
+    --
+    -- @ \"label\": \"@/@label n@/@\"@
+    --
+    -- @ }@
+    --
+    -- @ ]@
+    --
+    -- @}@
+    labelCategoryConfigS3Uri :: Prelude.Maybe Prelude.Text,
+    -- | Configuration information for automated data labeling.
+    labelingJobAlgorithmsConfig :: Prelude.Maybe LabelingJobAlgorithmsConfig,
+    -- | The location of the output produced by the labeling job.
+    labelingJobOutput :: Prelude.Maybe LabelingJobOutput,
+    -- | A set of conditions for stopping a labeling job. If any of the
+    -- conditions are met, the job is automatically stopped.
+    stoppingConditions :: Prelude.Maybe LabelingJobStoppingConditions,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The processing status of the labeling job.
+    labelingJobStatus :: LabelingJobStatus,
+    -- | Provides a breakdown of the number of data objects labeled by humans,
+    -- the number of objects labeled by machine, the number of objects than
+    -- couldn\'t be labeled, and the total number of objects labeled.
+    labelCounters :: LabelCounters,
+    -- | The date and time that the labeling job was created.
+    creationTime :: Data.POSIX,
+    -- | The date and time that the labeling job was last updated.
+    lastModifiedTime :: Data.POSIX,
+    -- | A unique identifier for work done as part of a labeling job.
+    jobReferenceCode :: Prelude.Text,
+    -- | The name assigned to the labeling job when it was created.
+    labelingJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the labeling job.
+    labelingJobArn :: Prelude.Text,
+    -- | Input configuration information for the labeling job, such as the Amazon
+    -- S3 location of the data objects and the location of the manifest file
+    -- that describes the data objects.
+    inputConfig :: LabelingJobInputConfig,
+    -- | The location of the job\'s output data and the Amazon Web Services Key
+    -- Management Service key ID for the key used to encrypt the output data,
+    -- if any.
+    outputConfig :: LabelingJobOutputConfig,
+    -- | The Amazon Resource Name (ARN) that SageMaker assumes to perform tasks
+    -- on your behalf during data labeling.
+    roleArn :: Prelude.Text,
+    -- | Configuration information required for human workers to complete a
+    -- labeling task.
+    humanTaskConfig :: HumanTaskConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLabelingJobResponse' 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:
+--
+-- 'failureReason', 'describeLabelingJobResponse_failureReason' - If the job failed, the reason that it failed.
+--
+-- 'labelAttributeName', 'describeLabelingJobResponse_labelAttributeName' - The attribute used as the label in the output manifest file.
+--
+-- 'labelCategoryConfigS3Uri', 'describeLabelingJobResponse_labelCategoryConfigS3Uri' - The S3 location of the JSON file that defines the categories used to
+-- label data objects. Please note the following label-category limits:
+--
+-- -   Semantic segmentation labeling jobs using automated labeling: 20
+--     labels
+--
+-- -   Box bounding labeling jobs (all): 10 labels
+--
+-- The file is a JSON structure in the following format:
+--
+-- @{@
+--
+-- @ \"document-version\": \"2018-11-28\"@
+--
+-- @ \"labels\": [@
+--
+-- @ {@
+--
+-- @ \"label\": \"@/@label 1@/@\"@
+--
+-- @ },@
+--
+-- @ {@
+--
+-- @ \"label\": \"@/@label 2@/@\"@
+--
+-- @ },@
+--
+-- @ ...@
+--
+-- @ {@
+--
+-- @ \"label\": \"@/@label n@/@\"@
+--
+-- @ }@
+--
+-- @ ]@
+--
+-- @}@
+--
+-- 'labelingJobAlgorithmsConfig', 'describeLabelingJobResponse_labelingJobAlgorithmsConfig' - Configuration information for automated data labeling.
+--
+-- 'labelingJobOutput', 'describeLabelingJobResponse_labelingJobOutput' - The location of the output produced by the labeling job.
+--
+-- 'stoppingConditions', 'describeLabelingJobResponse_stoppingConditions' - A set of conditions for stopping a labeling job. If any of the
+-- conditions are met, the job is automatically stopped.
+--
+-- 'tags', 'describeLabelingJobResponse_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'httpStatus', 'describeLabelingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'labelingJobStatus', 'describeLabelingJobResponse_labelingJobStatus' - The processing status of the labeling job.
+--
+-- 'labelCounters', 'describeLabelingJobResponse_labelCounters' - Provides a breakdown of the number of data objects labeled by humans,
+-- the number of objects labeled by machine, the number of objects than
+-- couldn\'t be labeled, and the total number of objects labeled.
+--
+-- 'creationTime', 'describeLabelingJobResponse_creationTime' - The date and time that the labeling job was created.
+--
+-- 'lastModifiedTime', 'describeLabelingJobResponse_lastModifiedTime' - The date and time that the labeling job was last updated.
+--
+-- 'jobReferenceCode', 'describeLabelingJobResponse_jobReferenceCode' - A unique identifier for work done as part of a labeling job.
+--
+-- 'labelingJobName', 'describeLabelingJobResponse_labelingJobName' - The name assigned to the labeling job when it was created.
+--
+-- 'labelingJobArn', 'describeLabelingJobResponse_labelingJobArn' - The Amazon Resource Name (ARN) of the labeling job.
+--
+-- 'inputConfig', 'describeLabelingJobResponse_inputConfig' - Input configuration information for the labeling job, such as the Amazon
+-- S3 location of the data objects and the location of the manifest file
+-- that describes the data objects.
+--
+-- 'outputConfig', 'describeLabelingJobResponse_outputConfig' - The location of the job\'s output data and the Amazon Web Services Key
+-- Management Service key ID for the key used to encrypt the output data,
+-- if any.
+--
+-- 'roleArn', 'describeLabelingJobResponse_roleArn' - The Amazon Resource Name (ARN) that SageMaker assumes to perform tasks
+-- on your behalf during data labeling.
+--
+-- 'humanTaskConfig', 'describeLabelingJobResponse_humanTaskConfig' - Configuration information required for human workers to complete a
+-- labeling task.
+newDescribeLabelingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'labelingJobStatus'
+  LabelingJobStatus ->
+  -- | 'labelCounters'
+  LabelCounters ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'jobReferenceCode'
+  Prelude.Text ->
+  -- | 'labelingJobName'
+  Prelude.Text ->
+  -- | 'labelingJobArn'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  LabelingJobInputConfig ->
+  -- | 'outputConfig'
+  LabelingJobOutputConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'humanTaskConfig'
+  HumanTaskConfig ->
+  DescribeLabelingJobResponse
+newDescribeLabelingJobResponse
+  pHttpStatus_
+  pLabelingJobStatus_
+  pLabelCounters_
+  pCreationTime_
+  pLastModifiedTime_
+  pJobReferenceCode_
+  pLabelingJobName_
+  pLabelingJobArn_
+  pInputConfig_
+  pOutputConfig_
+  pRoleArn_
+  pHumanTaskConfig_ =
+    DescribeLabelingJobResponse'
+      { failureReason =
+          Prelude.Nothing,
+        labelAttributeName = Prelude.Nothing,
+        labelCategoryConfigS3Uri = Prelude.Nothing,
+        labelingJobAlgorithmsConfig = Prelude.Nothing,
+        labelingJobOutput = Prelude.Nothing,
+        stoppingConditions = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        labelingJobStatus = pLabelingJobStatus_,
+        labelCounters = pLabelCounters_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        jobReferenceCode = pJobReferenceCode_,
+        labelingJobName = pLabelingJobName_,
+        labelingJobArn = pLabelingJobArn_,
+        inputConfig = pInputConfig_,
+        outputConfig = pOutputConfig_,
+        roleArn = pRoleArn_,
+        humanTaskConfig = pHumanTaskConfig_
+      }
+
+-- | If the job failed, the reason that it failed.
+describeLabelingJobResponse_failureReason :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe Prelude.Text)
+describeLabelingJobResponse_failureReason = Lens.lens (\DescribeLabelingJobResponse' {failureReason} -> failureReason) (\s@DescribeLabelingJobResponse' {} a -> s {failureReason = a} :: DescribeLabelingJobResponse)
+
+-- | The attribute used as the label in the output manifest file.
+describeLabelingJobResponse_labelAttributeName :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe Prelude.Text)
+describeLabelingJobResponse_labelAttributeName = Lens.lens (\DescribeLabelingJobResponse' {labelAttributeName} -> labelAttributeName) (\s@DescribeLabelingJobResponse' {} a -> s {labelAttributeName = a} :: DescribeLabelingJobResponse)
+
+-- | The S3 location of the JSON file that defines the categories used to
+-- label data objects. Please note the following label-category limits:
+--
+-- -   Semantic segmentation labeling jobs using automated labeling: 20
+--     labels
+--
+-- -   Box bounding labeling jobs (all): 10 labels
+--
+-- The file is a JSON structure in the following format:
+--
+-- @{@
+--
+-- @ \"document-version\": \"2018-11-28\"@
+--
+-- @ \"labels\": [@
+--
+-- @ {@
+--
+-- @ \"label\": \"@/@label 1@/@\"@
+--
+-- @ },@
+--
+-- @ {@
+--
+-- @ \"label\": \"@/@label 2@/@\"@
+--
+-- @ },@
+--
+-- @ ...@
+--
+-- @ {@
+--
+-- @ \"label\": \"@/@label n@/@\"@
+--
+-- @ }@
+--
+-- @ ]@
+--
+-- @}@
+describeLabelingJobResponse_labelCategoryConfigS3Uri :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe Prelude.Text)
+describeLabelingJobResponse_labelCategoryConfigS3Uri = Lens.lens (\DescribeLabelingJobResponse' {labelCategoryConfigS3Uri} -> labelCategoryConfigS3Uri) (\s@DescribeLabelingJobResponse' {} a -> s {labelCategoryConfigS3Uri = a} :: DescribeLabelingJobResponse)
+
+-- | Configuration information for automated data labeling.
+describeLabelingJobResponse_labelingJobAlgorithmsConfig :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe LabelingJobAlgorithmsConfig)
+describeLabelingJobResponse_labelingJobAlgorithmsConfig = Lens.lens (\DescribeLabelingJobResponse' {labelingJobAlgorithmsConfig} -> labelingJobAlgorithmsConfig) (\s@DescribeLabelingJobResponse' {} a -> s {labelingJobAlgorithmsConfig = a} :: DescribeLabelingJobResponse)
+
+-- | The location of the output produced by the labeling job.
+describeLabelingJobResponse_labelingJobOutput :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe LabelingJobOutput)
+describeLabelingJobResponse_labelingJobOutput = Lens.lens (\DescribeLabelingJobResponse' {labelingJobOutput} -> labelingJobOutput) (\s@DescribeLabelingJobResponse' {} a -> s {labelingJobOutput = a} :: DescribeLabelingJobResponse)
+
+-- | A set of conditions for stopping a labeling job. If any of the
+-- conditions are met, the job is automatically stopped.
+describeLabelingJobResponse_stoppingConditions :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe LabelingJobStoppingConditions)
+describeLabelingJobResponse_stoppingConditions = Lens.lens (\DescribeLabelingJobResponse' {stoppingConditions} -> stoppingConditions) (\s@DescribeLabelingJobResponse' {} a -> s {stoppingConditions = a} :: DescribeLabelingJobResponse)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+describeLabelingJobResponse_tags :: Lens.Lens' DescribeLabelingJobResponse (Prelude.Maybe [Tag])
+describeLabelingJobResponse_tags = Lens.lens (\DescribeLabelingJobResponse' {tags} -> tags) (\s@DescribeLabelingJobResponse' {} a -> s {tags = a} :: DescribeLabelingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeLabelingJobResponse_httpStatus :: Lens.Lens' DescribeLabelingJobResponse Prelude.Int
+describeLabelingJobResponse_httpStatus = Lens.lens (\DescribeLabelingJobResponse' {httpStatus} -> httpStatus) (\s@DescribeLabelingJobResponse' {} a -> s {httpStatus = a} :: DescribeLabelingJobResponse)
+
+-- | The processing status of the labeling job.
+describeLabelingJobResponse_labelingJobStatus :: Lens.Lens' DescribeLabelingJobResponse LabelingJobStatus
+describeLabelingJobResponse_labelingJobStatus = Lens.lens (\DescribeLabelingJobResponse' {labelingJobStatus} -> labelingJobStatus) (\s@DescribeLabelingJobResponse' {} a -> s {labelingJobStatus = a} :: DescribeLabelingJobResponse)
+
+-- | Provides a breakdown of the number of data objects labeled by humans,
+-- the number of objects labeled by machine, the number of objects than
+-- couldn\'t be labeled, and the total number of objects labeled.
+describeLabelingJobResponse_labelCounters :: Lens.Lens' DescribeLabelingJobResponse LabelCounters
+describeLabelingJobResponse_labelCounters = Lens.lens (\DescribeLabelingJobResponse' {labelCounters} -> labelCounters) (\s@DescribeLabelingJobResponse' {} a -> s {labelCounters = a} :: DescribeLabelingJobResponse)
+
+-- | The date and time that the labeling job was created.
+describeLabelingJobResponse_creationTime :: Lens.Lens' DescribeLabelingJobResponse Prelude.UTCTime
+describeLabelingJobResponse_creationTime = Lens.lens (\DescribeLabelingJobResponse' {creationTime} -> creationTime) (\s@DescribeLabelingJobResponse' {} a -> s {creationTime = a} :: DescribeLabelingJobResponse) Prelude.. Data._Time
+
+-- | The date and time that the labeling job was last updated.
+describeLabelingJobResponse_lastModifiedTime :: Lens.Lens' DescribeLabelingJobResponse Prelude.UTCTime
+describeLabelingJobResponse_lastModifiedTime = Lens.lens (\DescribeLabelingJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeLabelingJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeLabelingJobResponse) Prelude.. Data._Time
+
+-- | A unique identifier for work done as part of a labeling job.
+describeLabelingJobResponse_jobReferenceCode :: Lens.Lens' DescribeLabelingJobResponse Prelude.Text
+describeLabelingJobResponse_jobReferenceCode = Lens.lens (\DescribeLabelingJobResponse' {jobReferenceCode} -> jobReferenceCode) (\s@DescribeLabelingJobResponse' {} a -> s {jobReferenceCode = a} :: DescribeLabelingJobResponse)
+
+-- | The name assigned to the labeling job when it was created.
+describeLabelingJobResponse_labelingJobName :: Lens.Lens' DescribeLabelingJobResponse Prelude.Text
+describeLabelingJobResponse_labelingJobName = Lens.lens (\DescribeLabelingJobResponse' {labelingJobName} -> labelingJobName) (\s@DescribeLabelingJobResponse' {} a -> s {labelingJobName = a} :: DescribeLabelingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the labeling job.
+describeLabelingJobResponse_labelingJobArn :: Lens.Lens' DescribeLabelingJobResponse Prelude.Text
+describeLabelingJobResponse_labelingJobArn = Lens.lens (\DescribeLabelingJobResponse' {labelingJobArn} -> labelingJobArn) (\s@DescribeLabelingJobResponse' {} a -> s {labelingJobArn = a} :: DescribeLabelingJobResponse)
+
+-- | Input configuration information for the labeling job, such as the Amazon
+-- S3 location of the data objects and the location of the manifest file
+-- that describes the data objects.
+describeLabelingJobResponse_inputConfig :: Lens.Lens' DescribeLabelingJobResponse LabelingJobInputConfig
+describeLabelingJobResponse_inputConfig = Lens.lens (\DescribeLabelingJobResponse' {inputConfig} -> inputConfig) (\s@DescribeLabelingJobResponse' {} a -> s {inputConfig = a} :: DescribeLabelingJobResponse)
+
+-- | The location of the job\'s output data and the Amazon Web Services Key
+-- Management Service key ID for the key used to encrypt the output data,
+-- if any.
+describeLabelingJobResponse_outputConfig :: Lens.Lens' DescribeLabelingJobResponse LabelingJobOutputConfig
+describeLabelingJobResponse_outputConfig = Lens.lens (\DescribeLabelingJobResponse' {outputConfig} -> outputConfig) (\s@DescribeLabelingJobResponse' {} a -> s {outputConfig = a} :: DescribeLabelingJobResponse)
+
+-- | The Amazon Resource Name (ARN) that SageMaker assumes to perform tasks
+-- on your behalf during data labeling.
+describeLabelingJobResponse_roleArn :: Lens.Lens' DescribeLabelingJobResponse Prelude.Text
+describeLabelingJobResponse_roleArn = Lens.lens (\DescribeLabelingJobResponse' {roleArn} -> roleArn) (\s@DescribeLabelingJobResponse' {} a -> s {roleArn = a} :: DescribeLabelingJobResponse)
+
+-- | Configuration information required for human workers to complete a
+-- labeling task.
+describeLabelingJobResponse_humanTaskConfig :: Lens.Lens' DescribeLabelingJobResponse HumanTaskConfig
+describeLabelingJobResponse_humanTaskConfig = Lens.lens (\DescribeLabelingJobResponse' {humanTaskConfig} -> humanTaskConfig) (\s@DescribeLabelingJobResponse' {} a -> s {humanTaskConfig = a} :: DescribeLabelingJobResponse)
+
+instance Prelude.NFData DescribeLabelingJobResponse where
+  rnf DescribeLabelingJobResponse' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf labelAttributeName
+      `Prelude.seq` Prelude.rnf labelCategoryConfigS3Uri
+      `Prelude.seq` Prelude.rnf labelingJobAlgorithmsConfig
+      `Prelude.seq` Prelude.rnf labelingJobOutput
+      `Prelude.seq` Prelude.rnf stoppingConditions
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf labelingJobStatus
+      `Prelude.seq` Prelude.rnf labelCounters
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf jobReferenceCode
+      `Prelude.seq` Prelude.rnf labelingJobName
+      `Prelude.seq` Prelude.rnf labelingJobArn
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf humanTaskConfig
diff --git a/gen/Amazonka/SageMaker/DescribeLineageGroup.hs b/gen/Amazonka/SageMaker/DescribeLineageGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeLineageGroup.hs
@@ -0,0 +1,259 @@
+{-# 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.DescribeLineageGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of properties for the requested lineage group. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/xaccount-lineage-tracking.html Cross-Account Lineage Tracking>
+-- in the /Amazon SageMaker Developer Guide/.
+module Amazonka.SageMaker.DescribeLineageGroup
+  ( -- * Creating a Request
+    DescribeLineageGroup (..),
+    newDescribeLineageGroup,
+
+    -- * Request Lenses
+    describeLineageGroup_lineageGroupName,
+
+    -- * Destructuring the Response
+    DescribeLineageGroupResponse (..),
+    newDescribeLineageGroupResponse,
+
+    -- * Response Lenses
+    describeLineageGroupResponse_createdBy,
+    describeLineageGroupResponse_creationTime,
+    describeLineageGroupResponse_description,
+    describeLineageGroupResponse_displayName,
+    describeLineageGroupResponse_lastModifiedBy,
+    describeLineageGroupResponse_lastModifiedTime,
+    describeLineageGroupResponse_lineageGroupArn,
+    describeLineageGroupResponse_lineageGroupName,
+    describeLineageGroupResponse_httpStatus,
+  )
+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:/ 'newDescribeLineageGroup' smart constructor.
+data DescribeLineageGroup = DescribeLineageGroup'
+  { -- | The name of the lineage group.
+    lineageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLineageGroup' 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:
+--
+-- 'lineageGroupName', 'describeLineageGroup_lineageGroupName' - The name of the lineage group.
+newDescribeLineageGroup ::
+  -- | 'lineageGroupName'
+  Prelude.Text ->
+  DescribeLineageGroup
+newDescribeLineageGroup pLineageGroupName_ =
+  DescribeLineageGroup'
+    { lineageGroupName =
+        pLineageGroupName_
+    }
+
+-- | The name of the lineage group.
+describeLineageGroup_lineageGroupName :: Lens.Lens' DescribeLineageGroup Prelude.Text
+describeLineageGroup_lineageGroupName = Lens.lens (\DescribeLineageGroup' {lineageGroupName} -> lineageGroupName) (\s@DescribeLineageGroup' {} a -> s {lineageGroupName = a} :: DescribeLineageGroup)
+
+instance Core.AWSRequest DescribeLineageGroup where
+  type
+    AWSResponse DescribeLineageGroup =
+      DescribeLineageGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeLineageGroupResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DisplayName")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LineageGroupArn")
+            Prelude.<*> (x Data..?> "LineageGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeLineageGroup where
+  hashWithSalt _salt DescribeLineageGroup' {..} =
+    _salt `Prelude.hashWithSalt` lineageGroupName
+
+instance Prelude.NFData DescribeLineageGroup where
+  rnf DescribeLineageGroup' {..} =
+    Prelude.rnf lineageGroupName
+
+instance Data.ToHeaders DescribeLineageGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeLineageGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeLineageGroup where
+  toJSON DescribeLineageGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LineageGroupName" Data..= lineageGroupName)
+          ]
+      )
+
+instance Data.ToPath DescribeLineageGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeLineageGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeLineageGroupResponse' smart constructor.
+data DescribeLineageGroupResponse = DescribeLineageGroupResponse'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | The creation time of lineage group.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the lineage group.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the lineage group.
+    displayName :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The last modified time of the lineage group.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the lineage group.
+    lineageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLineageGroupResponse' 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:
+--
+-- 'createdBy', 'describeLineageGroupResponse_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'describeLineageGroupResponse_creationTime' - The creation time of lineage group.
+--
+-- 'description', 'describeLineageGroupResponse_description' - The description of the lineage group.
+--
+-- 'displayName', 'describeLineageGroupResponse_displayName' - The display name of the lineage group.
+--
+-- 'lastModifiedBy', 'describeLineageGroupResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeLineageGroupResponse_lastModifiedTime' - The last modified time of the lineage group.
+--
+-- 'lineageGroupArn', 'describeLineageGroupResponse_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group.
+--
+-- 'lineageGroupName', 'describeLineageGroupResponse_lineageGroupName' - The name of the lineage group.
+--
+-- 'httpStatus', 'describeLineageGroupResponse_httpStatus' - The response's http status code.
+newDescribeLineageGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeLineageGroupResponse
+newDescribeLineageGroupResponse pHttpStatus_ =
+  DescribeLineageGroupResponse'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      lineageGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describeLineageGroupResponse_createdBy :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe UserContext)
+describeLineageGroupResponse_createdBy = Lens.lens (\DescribeLineageGroupResponse' {createdBy} -> createdBy) (\s@DescribeLineageGroupResponse' {} a -> s {createdBy = a} :: DescribeLineageGroupResponse)
+
+-- | The creation time of lineage group.
+describeLineageGroupResponse_creationTime :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe Prelude.UTCTime)
+describeLineageGroupResponse_creationTime = Lens.lens (\DescribeLineageGroupResponse' {creationTime} -> creationTime) (\s@DescribeLineageGroupResponse' {} a -> s {creationTime = a} :: DescribeLineageGroupResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the lineage group.
+describeLineageGroupResponse_description :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe Prelude.Text)
+describeLineageGroupResponse_description = Lens.lens (\DescribeLineageGroupResponse' {description} -> description) (\s@DescribeLineageGroupResponse' {} a -> s {description = a} :: DescribeLineageGroupResponse)
+
+-- | The display name of the lineage group.
+describeLineageGroupResponse_displayName :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe Prelude.Text)
+describeLineageGroupResponse_displayName = Lens.lens (\DescribeLineageGroupResponse' {displayName} -> displayName) (\s@DescribeLineageGroupResponse' {} a -> s {displayName = a} :: DescribeLineageGroupResponse)
+
+-- | Undocumented member.
+describeLineageGroupResponse_lastModifiedBy :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe UserContext)
+describeLineageGroupResponse_lastModifiedBy = Lens.lens (\DescribeLineageGroupResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeLineageGroupResponse' {} a -> s {lastModifiedBy = a} :: DescribeLineageGroupResponse)
+
+-- | The last modified time of the lineage group.
+describeLineageGroupResponse_lastModifiedTime :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe Prelude.UTCTime)
+describeLineageGroupResponse_lastModifiedTime = Lens.lens (\DescribeLineageGroupResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeLineageGroupResponse' {} a -> s {lastModifiedTime = a} :: DescribeLineageGroupResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group.
+describeLineageGroupResponse_lineageGroupArn :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe Prelude.Text)
+describeLineageGroupResponse_lineageGroupArn = Lens.lens (\DescribeLineageGroupResponse' {lineageGroupArn} -> lineageGroupArn) (\s@DescribeLineageGroupResponse' {} a -> s {lineageGroupArn = a} :: DescribeLineageGroupResponse)
+
+-- | The name of the lineage group.
+describeLineageGroupResponse_lineageGroupName :: Lens.Lens' DescribeLineageGroupResponse (Prelude.Maybe Prelude.Text)
+describeLineageGroupResponse_lineageGroupName = Lens.lens (\DescribeLineageGroupResponse' {lineageGroupName} -> lineageGroupName) (\s@DescribeLineageGroupResponse' {} a -> s {lineageGroupName = a} :: DescribeLineageGroupResponse)
+
+-- | The response's http status code.
+describeLineageGroupResponse_httpStatus :: Lens.Lens' DescribeLineageGroupResponse Prelude.Int
+describeLineageGroupResponse_httpStatus = Lens.lens (\DescribeLineageGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeLineageGroupResponse' {} a -> s {httpStatus = a} :: DescribeLineageGroupResponse)
+
+instance Prelude.NFData DescribeLineageGroupResponse where
+  rnf DescribeLineageGroupResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf lineageGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeModel.hs b/gen/Amazonka/SageMaker/DescribeModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModel.hs
@@ -0,0 +1,296 @@
+{-# 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.DescribeModel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a model that you created using the @CreateModel@ API.
+module Amazonka.SageMaker.DescribeModel
+  ( -- * Creating a Request
+    DescribeModel (..),
+    newDescribeModel,
+
+    -- * Request Lenses
+    describeModel_modelName,
+
+    -- * Destructuring the Response
+    DescribeModelResponse (..),
+    newDescribeModelResponse,
+
+    -- * Response Lenses
+    describeModelResponse_containers,
+    describeModelResponse_enableNetworkIsolation,
+    describeModelResponse_inferenceExecutionConfig,
+    describeModelResponse_primaryContainer,
+    describeModelResponse_vpcConfig,
+    describeModelResponse_httpStatus,
+    describeModelResponse_modelName,
+    describeModelResponse_executionRoleArn,
+    describeModelResponse_creationTime,
+    describeModelResponse_modelArn,
+  )
+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:/ 'newDescribeModel' smart constructor.
+data DescribeModel = DescribeModel'
+  { -- | The name of the model.
+    modelName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModel' 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:
+--
+-- 'modelName', 'describeModel_modelName' - The name of the model.
+newDescribeModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  DescribeModel
+newDescribeModel pModelName_ =
+  DescribeModel' {modelName = pModelName_}
+
+-- | The name of the model.
+describeModel_modelName :: Lens.Lens' DescribeModel Prelude.Text
+describeModel_modelName = Lens.lens (\DescribeModel' {modelName} -> modelName) (\s@DescribeModel' {} a -> s {modelName = a} :: DescribeModel)
+
+instance Core.AWSRequest DescribeModel where
+  type
+    AWSResponse DescribeModel =
+      DescribeModelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelResponse'
+            Prelude.<$> (x Data..?> "Containers" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "EnableNetworkIsolation")
+            Prelude.<*> (x Data..?> "InferenceExecutionConfig")
+            Prelude.<*> (x Data..?> "PrimaryContainer")
+            Prelude.<*> (x Data..?> "VpcConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelName")
+            Prelude.<*> (x Data..:> "ExecutionRoleArn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ModelArn")
+      )
+
+instance Prelude.Hashable DescribeModel where
+  hashWithSalt _salt DescribeModel' {..} =
+    _salt `Prelude.hashWithSalt` modelName
+
+instance Prelude.NFData DescribeModel where
+  rnf DescribeModel' {..} = Prelude.rnf modelName
+
+instance Data.ToHeaders DescribeModel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeModel" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModel where
+  toJSON DescribeModel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ModelName" Data..= modelName)]
+      )
+
+instance Data.ToPath DescribeModel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelResponse' smart constructor.
+data DescribeModelResponse = DescribeModelResponse'
+  { -- | The containers in the inference pipeline.
+    containers :: Prelude.Maybe [ContainerDefinition],
+    -- | If @True@, no inbound or outbound network calls can be made to or from
+    -- the model container.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies details of how containers in a multi-container endpoint are
+    -- called.
+    inferenceExecutionConfig :: Prelude.Maybe InferenceExecutionConfig,
+    -- | The location of the primary inference code, associated artifacts, and
+    -- custom environment map that the inference code uses when it is deployed
+    -- in production.
+    primaryContainer :: Prelude.Maybe ContainerDefinition,
+    -- | A VpcConfig object that specifies the VPC that this model has access to.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+    vpcConfig :: Prelude.Maybe VpcConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Name of the SageMaker model.
+    modelName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the model.
+    executionRoleArn :: Prelude.Text,
+    -- | A timestamp that shows when the model was created.
+    creationTime :: Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the model.
+    modelArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelResponse' 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:
+--
+-- 'containers', 'describeModelResponse_containers' - The containers in the inference pipeline.
+--
+-- 'enableNetworkIsolation', 'describeModelResponse_enableNetworkIsolation' - If @True@, no inbound or outbound network calls can be made to or from
+-- the model container.
+--
+-- 'inferenceExecutionConfig', 'describeModelResponse_inferenceExecutionConfig' - Specifies details of how containers in a multi-container endpoint are
+-- called.
+--
+-- 'primaryContainer', 'describeModelResponse_primaryContainer' - The location of the primary inference code, associated artifacts, and
+-- custom environment map that the inference code uses when it is deployed
+-- in production.
+--
+-- 'vpcConfig', 'describeModelResponse_vpcConfig' - A VpcConfig object that specifies the VPC that this model has access to.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+--
+-- 'httpStatus', 'describeModelResponse_httpStatus' - The response's http status code.
+--
+-- 'modelName', 'describeModelResponse_modelName' - Name of the SageMaker model.
+--
+-- 'executionRoleArn', 'describeModelResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the model.
+--
+-- 'creationTime', 'describeModelResponse_creationTime' - A timestamp that shows when the model was created.
+--
+-- 'modelArn', 'describeModelResponse_modelArn' - The Amazon Resource Name (ARN) of the model.
+newDescribeModelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelArn'
+  Prelude.Text ->
+  DescribeModelResponse
+newDescribeModelResponse
+  pHttpStatus_
+  pModelName_
+  pExecutionRoleArn_
+  pCreationTime_
+  pModelArn_ =
+    DescribeModelResponse'
+      { containers =
+          Prelude.Nothing,
+        enableNetworkIsolation = Prelude.Nothing,
+        inferenceExecutionConfig = Prelude.Nothing,
+        primaryContainer = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        modelName = pModelName_,
+        executionRoleArn = pExecutionRoleArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        modelArn = pModelArn_
+      }
+
+-- | The containers in the inference pipeline.
+describeModelResponse_containers :: Lens.Lens' DescribeModelResponse (Prelude.Maybe [ContainerDefinition])
+describeModelResponse_containers = Lens.lens (\DescribeModelResponse' {containers} -> containers) (\s@DescribeModelResponse' {} a -> s {containers = a} :: DescribeModelResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If @True@, no inbound or outbound network calls can be made to or from
+-- the model container.
+describeModelResponse_enableNetworkIsolation :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Bool)
+describeModelResponse_enableNetworkIsolation = Lens.lens (\DescribeModelResponse' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@DescribeModelResponse' {} a -> s {enableNetworkIsolation = a} :: DescribeModelResponse)
+
+-- | Specifies details of how containers in a multi-container endpoint are
+-- called.
+describeModelResponse_inferenceExecutionConfig :: Lens.Lens' DescribeModelResponse (Prelude.Maybe InferenceExecutionConfig)
+describeModelResponse_inferenceExecutionConfig = Lens.lens (\DescribeModelResponse' {inferenceExecutionConfig} -> inferenceExecutionConfig) (\s@DescribeModelResponse' {} a -> s {inferenceExecutionConfig = a} :: DescribeModelResponse)
+
+-- | The location of the primary inference code, associated artifacts, and
+-- custom environment map that the inference code uses when it is deployed
+-- in production.
+describeModelResponse_primaryContainer :: Lens.Lens' DescribeModelResponse (Prelude.Maybe ContainerDefinition)
+describeModelResponse_primaryContainer = Lens.lens (\DescribeModelResponse' {primaryContainer} -> primaryContainer) (\s@DescribeModelResponse' {} a -> s {primaryContainer = a} :: DescribeModelResponse)
+
+-- | A VpcConfig object that specifies the VPC that this model has access to.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+describeModelResponse_vpcConfig :: Lens.Lens' DescribeModelResponse (Prelude.Maybe VpcConfig)
+describeModelResponse_vpcConfig = Lens.lens (\DescribeModelResponse' {vpcConfig} -> vpcConfig) (\s@DescribeModelResponse' {} a -> s {vpcConfig = a} :: DescribeModelResponse)
+
+-- | The response's http status code.
+describeModelResponse_httpStatus :: Lens.Lens' DescribeModelResponse Prelude.Int
+describeModelResponse_httpStatus = Lens.lens (\DescribeModelResponse' {httpStatus} -> httpStatus) (\s@DescribeModelResponse' {} a -> s {httpStatus = a} :: DescribeModelResponse)
+
+-- | Name of the SageMaker model.
+describeModelResponse_modelName :: Lens.Lens' DescribeModelResponse Prelude.Text
+describeModelResponse_modelName = Lens.lens (\DescribeModelResponse' {modelName} -> modelName) (\s@DescribeModelResponse' {} a -> s {modelName = a} :: DescribeModelResponse)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the model.
+describeModelResponse_executionRoleArn :: Lens.Lens' DescribeModelResponse Prelude.Text
+describeModelResponse_executionRoleArn = Lens.lens (\DescribeModelResponse' {executionRoleArn} -> executionRoleArn) (\s@DescribeModelResponse' {} a -> s {executionRoleArn = a} :: DescribeModelResponse)
+
+-- | A timestamp that shows when the model was created.
+describeModelResponse_creationTime :: Lens.Lens' DescribeModelResponse Prelude.UTCTime
+describeModelResponse_creationTime = Lens.lens (\DescribeModelResponse' {creationTime} -> creationTime) (\s@DescribeModelResponse' {} a -> s {creationTime = a} :: DescribeModelResponse) Prelude.. Data._Time
+
+-- | The Amazon Resource Name (ARN) of the model.
+describeModelResponse_modelArn :: Lens.Lens' DescribeModelResponse Prelude.Text
+describeModelResponse_modelArn = Lens.lens (\DescribeModelResponse' {modelArn} -> modelArn) (\s@DescribeModelResponse' {} a -> s {modelArn = a} :: DescribeModelResponse)
+
+instance Prelude.NFData DescribeModelResponse where
+  rnf DescribeModelResponse' {..} =
+    Prelude.rnf containers
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf inferenceExecutionConfig
+      `Prelude.seq` Prelude.rnf primaryContainer
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf modelArn
diff --git a/gen/Amazonka/SageMaker/DescribeModelBiasJobDefinition.hs b/gen/Amazonka/SageMaker/DescribeModelBiasJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelBiasJobDefinition.hs
@@ -0,0 +1,351 @@
+{-# 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.DescribeModelBiasJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of a model bias job definition.
+module Amazonka.SageMaker.DescribeModelBiasJobDefinition
+  ( -- * Creating a Request
+    DescribeModelBiasJobDefinition (..),
+    newDescribeModelBiasJobDefinition,
+
+    -- * Request Lenses
+    describeModelBiasJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DescribeModelBiasJobDefinitionResponse (..),
+    newDescribeModelBiasJobDefinitionResponse,
+
+    -- * Response Lenses
+    describeModelBiasJobDefinitionResponse_modelBiasBaselineConfig,
+    describeModelBiasJobDefinitionResponse_networkConfig,
+    describeModelBiasJobDefinitionResponse_stoppingCondition,
+    describeModelBiasJobDefinitionResponse_httpStatus,
+    describeModelBiasJobDefinitionResponse_jobDefinitionArn,
+    describeModelBiasJobDefinitionResponse_jobDefinitionName,
+    describeModelBiasJobDefinitionResponse_creationTime,
+    describeModelBiasJobDefinitionResponse_modelBiasAppSpecification,
+    describeModelBiasJobDefinitionResponse_modelBiasJobInput,
+    describeModelBiasJobDefinitionResponse_modelBiasJobOutputConfig,
+    describeModelBiasJobDefinitionResponse_jobResources,
+    describeModelBiasJobDefinitionResponse_roleArn,
+  )
+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:/ 'newDescribeModelBiasJobDefinition' smart constructor.
+data DescribeModelBiasJobDefinition = DescribeModelBiasJobDefinition'
+  { -- | The name of the model bias job definition. The name must be unique
+    -- within an Amazon Web Services Region in the Amazon Web Services account.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelBiasJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'describeModelBiasJobDefinition_jobDefinitionName' - The name of the model bias job definition. The name must be unique
+-- within an Amazon Web Services Region in the Amazon Web Services account.
+newDescribeModelBiasJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DescribeModelBiasJobDefinition
+newDescribeModelBiasJobDefinition pJobDefinitionName_ =
+  DescribeModelBiasJobDefinition'
+    { jobDefinitionName =
+        pJobDefinitionName_
+    }
+
+-- | The name of the model bias job definition. The name must be unique
+-- within an Amazon Web Services Region in the Amazon Web Services account.
+describeModelBiasJobDefinition_jobDefinitionName :: Lens.Lens' DescribeModelBiasJobDefinition Prelude.Text
+describeModelBiasJobDefinition_jobDefinitionName = Lens.lens (\DescribeModelBiasJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeModelBiasJobDefinition' {} a -> s {jobDefinitionName = a} :: DescribeModelBiasJobDefinition)
+
+instance
+  Core.AWSRequest
+    DescribeModelBiasJobDefinition
+  where
+  type
+    AWSResponse DescribeModelBiasJobDefinition =
+      DescribeModelBiasJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelBiasJobDefinitionResponse'
+            Prelude.<$> (x Data..?> "ModelBiasBaselineConfig")
+            Prelude.<*> (x Data..?> "NetworkConfig")
+            Prelude.<*> (x Data..?> "StoppingCondition")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+            Prelude.<*> (x Data..:> "JobDefinitionName")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ModelBiasAppSpecification")
+            Prelude.<*> (x Data..:> "ModelBiasJobInput")
+            Prelude.<*> (x Data..:> "ModelBiasJobOutputConfig")
+            Prelude.<*> (x Data..:> "JobResources")
+            Prelude.<*> (x Data..:> "RoleArn")
+      )
+
+instance
+  Prelude.Hashable
+    DescribeModelBiasJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DescribeModelBiasJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DescribeModelBiasJobDefinition
+  where
+  rnf DescribeModelBiasJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DescribeModelBiasJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelBiasJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModelBiasJobDefinition where
+  toJSON DescribeModelBiasJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance Data.ToPath DescribeModelBiasJobDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModelBiasJobDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelBiasJobDefinitionResponse' smart constructor.
+data DescribeModelBiasJobDefinitionResponse = DescribeModelBiasJobDefinitionResponse'
+  { -- | The baseline configuration for a model bias job.
+    modelBiasBaselineConfig :: Prelude.Maybe ModelBiasBaselineConfig,
+    -- | Networking options for a model bias job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model bias job.
+    jobDefinitionArn :: Prelude.Text,
+    -- | The name of the bias job definition. The name must be unique within an
+    -- Amazon Web Services Region in the Amazon Web Services account.
+    jobDefinitionName :: Prelude.Text,
+    -- | The time at which the model bias job was created.
+    creationTime :: Data.POSIX,
+    -- | Configures the model bias job to run a specified Docker container image.
+    modelBiasAppSpecification :: ModelBiasAppSpecification,
+    -- | Inputs for the model bias job.
+    modelBiasJobInput :: ModelBiasJobInput,
+    modelBiasJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+    -- Access Management (IAM) role that has read permission to the input data
+    -- location and write permission to the output data location in Amazon S3.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelBiasJobDefinitionResponse' 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:
+--
+-- 'modelBiasBaselineConfig', 'describeModelBiasJobDefinitionResponse_modelBiasBaselineConfig' - The baseline configuration for a model bias job.
+--
+-- 'networkConfig', 'describeModelBiasJobDefinitionResponse_networkConfig' - Networking options for a model bias job.
+--
+-- 'stoppingCondition', 'describeModelBiasJobDefinitionResponse_stoppingCondition' - Undocumented member.
+--
+-- 'httpStatus', 'describeModelBiasJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'describeModelBiasJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model bias job.
+--
+-- 'jobDefinitionName', 'describeModelBiasJobDefinitionResponse_jobDefinitionName' - The name of the bias job definition. The name must be unique within an
+-- Amazon Web Services Region in the Amazon Web Services account.
+--
+-- 'creationTime', 'describeModelBiasJobDefinitionResponse_creationTime' - The time at which the model bias job was created.
+--
+-- 'modelBiasAppSpecification', 'describeModelBiasJobDefinitionResponse_modelBiasAppSpecification' - Configures the model bias job to run a specified Docker container image.
+--
+-- 'modelBiasJobInput', 'describeModelBiasJobDefinitionResponse_modelBiasJobInput' - Inputs for the model bias job.
+--
+-- 'modelBiasJobOutputConfig', 'describeModelBiasJobDefinitionResponse_modelBiasJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'describeModelBiasJobDefinitionResponse_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'describeModelBiasJobDefinitionResponse_roleArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) role that has read permission to the input data
+-- location and write permission to the output data location in Amazon S3.
+newDescribeModelBiasJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelBiasAppSpecification'
+  ModelBiasAppSpecification ->
+  -- | 'modelBiasJobInput'
+  ModelBiasJobInput ->
+  -- | 'modelBiasJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  DescribeModelBiasJobDefinitionResponse
+newDescribeModelBiasJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_
+  pJobDefinitionName_
+  pCreationTime_
+  pModelBiasAppSpecification_
+  pModelBiasJobInput_
+  pModelBiasJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    DescribeModelBiasJobDefinitionResponse'
+      { modelBiasBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_,
+        jobDefinitionName =
+          pJobDefinitionName_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        modelBiasAppSpecification =
+          pModelBiasAppSpecification_,
+        modelBiasJobInput =
+          pModelBiasJobInput_,
+        modelBiasJobOutputConfig =
+          pModelBiasJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | The baseline configuration for a model bias job.
+describeModelBiasJobDefinitionResponse_modelBiasBaselineConfig :: Lens.Lens' DescribeModelBiasJobDefinitionResponse (Prelude.Maybe ModelBiasBaselineConfig)
+describeModelBiasJobDefinitionResponse_modelBiasBaselineConfig = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {modelBiasBaselineConfig} -> modelBiasBaselineConfig) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {modelBiasBaselineConfig = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | Networking options for a model bias job.
+describeModelBiasJobDefinitionResponse_networkConfig :: Lens.Lens' DescribeModelBiasJobDefinitionResponse (Prelude.Maybe MonitoringNetworkConfig)
+describeModelBiasJobDefinitionResponse_networkConfig = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {networkConfig} -> networkConfig) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {networkConfig = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelBiasJobDefinitionResponse_stoppingCondition :: Lens.Lens' DescribeModelBiasJobDefinitionResponse (Prelude.Maybe MonitoringStoppingCondition)
+describeModelBiasJobDefinitionResponse_stoppingCondition = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {stoppingCondition = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | The response's http status code.
+describeModelBiasJobDefinitionResponse_httpStatus :: Lens.Lens' DescribeModelBiasJobDefinitionResponse Prelude.Int
+describeModelBiasJobDefinitionResponse_httpStatus = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {httpStatus = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the model bias job.
+describeModelBiasJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' DescribeModelBiasJobDefinitionResponse Prelude.Text
+describeModelBiasJobDefinitionResponse_jobDefinitionArn = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | The name of the bias job definition. The name must be unique within an
+-- Amazon Web Services Region in the Amazon Web Services account.
+describeModelBiasJobDefinitionResponse_jobDefinitionName :: Lens.Lens' DescribeModelBiasJobDefinitionResponse Prelude.Text
+describeModelBiasJobDefinitionResponse_jobDefinitionName = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {jobDefinitionName = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | The time at which the model bias job was created.
+describeModelBiasJobDefinitionResponse_creationTime :: Lens.Lens' DescribeModelBiasJobDefinitionResponse Prelude.UTCTime
+describeModelBiasJobDefinitionResponse_creationTime = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {creationTime} -> creationTime) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {creationTime = a} :: DescribeModelBiasJobDefinitionResponse) Prelude.. Data._Time
+
+-- | Configures the model bias job to run a specified Docker container image.
+describeModelBiasJobDefinitionResponse_modelBiasAppSpecification :: Lens.Lens' DescribeModelBiasJobDefinitionResponse ModelBiasAppSpecification
+describeModelBiasJobDefinitionResponse_modelBiasAppSpecification = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {modelBiasAppSpecification} -> modelBiasAppSpecification) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {modelBiasAppSpecification = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | Inputs for the model bias job.
+describeModelBiasJobDefinitionResponse_modelBiasJobInput :: Lens.Lens' DescribeModelBiasJobDefinitionResponse ModelBiasJobInput
+describeModelBiasJobDefinitionResponse_modelBiasJobInput = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {modelBiasJobInput} -> modelBiasJobInput) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {modelBiasJobInput = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelBiasJobDefinitionResponse_modelBiasJobOutputConfig :: Lens.Lens' DescribeModelBiasJobDefinitionResponse MonitoringOutputConfig
+describeModelBiasJobDefinitionResponse_modelBiasJobOutputConfig = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {modelBiasJobOutputConfig} -> modelBiasJobOutputConfig) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {modelBiasJobOutputConfig = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelBiasJobDefinitionResponse_jobResources :: Lens.Lens' DescribeModelBiasJobDefinitionResponse MonitoringResources
+describeModelBiasJobDefinitionResponse_jobResources = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {jobResources} -> jobResources) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {jobResources = a} :: DescribeModelBiasJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) role that has read permission to the input data
+-- location and write permission to the output data location in Amazon S3.
+describeModelBiasJobDefinitionResponse_roleArn :: Lens.Lens' DescribeModelBiasJobDefinitionResponse Prelude.Text
+describeModelBiasJobDefinitionResponse_roleArn = Lens.lens (\DescribeModelBiasJobDefinitionResponse' {roleArn} -> roleArn) (\s@DescribeModelBiasJobDefinitionResponse' {} a -> s {roleArn = a} :: DescribeModelBiasJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeModelBiasJobDefinitionResponse
+  where
+  rnf DescribeModelBiasJobDefinitionResponse' {..} =
+    Prelude.rnf modelBiasBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionArn
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf modelBiasAppSpecification
+      `Prelude.seq` Prelude.rnf modelBiasJobInput
+      `Prelude.seq` Prelude.rnf modelBiasJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
diff --git a/gen/Amazonka/SageMaker/DescribeModelCard.hs b/gen/Amazonka/SageMaker/DescribeModelCard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelCard.hs
@@ -0,0 +1,411 @@
+{-# 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.DescribeModelCard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the content, creation time, and security configuration of an
+-- Amazon SageMaker Model Card.
+module Amazonka.SageMaker.DescribeModelCard
+  ( -- * Creating a Request
+    DescribeModelCard (..),
+    newDescribeModelCard,
+
+    -- * Request Lenses
+    describeModelCard_modelCardVersion,
+    describeModelCard_modelCardName,
+
+    -- * Destructuring the Response
+    DescribeModelCardResponse (..),
+    newDescribeModelCardResponse,
+
+    -- * Response Lenses
+    describeModelCardResponse_lastModifiedBy,
+    describeModelCardResponse_lastModifiedTime,
+    describeModelCardResponse_modelCardProcessingStatus,
+    describeModelCardResponse_securityConfig,
+    describeModelCardResponse_httpStatus,
+    describeModelCardResponse_modelCardArn,
+    describeModelCardResponse_modelCardName,
+    describeModelCardResponse_modelCardVersion,
+    describeModelCardResponse_content,
+    describeModelCardResponse_modelCardStatus,
+    describeModelCardResponse_creationTime,
+    describeModelCardResponse_createdBy,
+  )
+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:/ 'newDescribeModelCard' smart constructor.
+data DescribeModelCard = DescribeModelCard'
+  { -- | The version of the model card to describe. If a version is not provided,
+    -- then the latest version of the model card is described.
+    modelCardVersion :: Prelude.Maybe Prelude.Int,
+    -- | The name of the model card to describe.
+    modelCardName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelCard' 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:
+--
+-- 'modelCardVersion', 'describeModelCard_modelCardVersion' - The version of the model card to describe. If a version is not provided,
+-- then the latest version of the model card is described.
+--
+-- 'modelCardName', 'describeModelCard_modelCardName' - The name of the model card to describe.
+newDescribeModelCard ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  DescribeModelCard
+newDescribeModelCard pModelCardName_ =
+  DescribeModelCard'
+    { modelCardVersion =
+        Prelude.Nothing,
+      modelCardName = pModelCardName_
+    }
+
+-- | The version of the model card to describe. If a version is not provided,
+-- then the latest version of the model card is described.
+describeModelCard_modelCardVersion :: Lens.Lens' DescribeModelCard (Prelude.Maybe Prelude.Int)
+describeModelCard_modelCardVersion = Lens.lens (\DescribeModelCard' {modelCardVersion} -> modelCardVersion) (\s@DescribeModelCard' {} a -> s {modelCardVersion = a} :: DescribeModelCard)
+
+-- | The name of the model card to describe.
+describeModelCard_modelCardName :: Lens.Lens' DescribeModelCard Prelude.Text
+describeModelCard_modelCardName = Lens.lens (\DescribeModelCard' {modelCardName} -> modelCardName) (\s@DescribeModelCard' {} a -> s {modelCardName = a} :: DescribeModelCard)
+
+instance Core.AWSRequest DescribeModelCard where
+  type
+    AWSResponse DescribeModelCard =
+      DescribeModelCardResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelCardResponse'
+            Prelude.<$> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "ModelCardProcessingStatus")
+            Prelude.<*> (x Data..?> "SecurityConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelCardArn")
+            Prelude.<*> (x Data..:> "ModelCardName")
+            Prelude.<*> (x Data..:> "ModelCardVersion")
+            Prelude.<*> (x Data..:> "Content")
+            Prelude.<*> (x Data..:> "ModelCardStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "CreatedBy")
+      )
+
+instance Prelude.Hashable DescribeModelCard where
+  hashWithSalt _salt DescribeModelCard' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` modelCardName
+
+instance Prelude.NFData DescribeModelCard where
+  rnf DescribeModelCard' {..} =
+    Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf modelCardName
+
+instance Data.ToHeaders DescribeModelCard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelCard" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModelCard where
+  toJSON DescribeModelCard' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelCardVersion" Data..=)
+              Prelude.<$> modelCardVersion,
+            Prelude.Just
+              ("ModelCardName" Data..= modelCardName)
+          ]
+      )
+
+instance Data.ToPath DescribeModelCard where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModelCard where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelCardResponse' smart constructor.
+data DescribeModelCardResponse = DescribeModelCardResponse'
+  { lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The date and time the model card was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The processing status of model card deletion. The
+    -- @ModelCardProcessingStatus@ updates throughout the different deletion
+    -- steps.
+    --
+    -- -   @DeletePending@: Model card deletion request received.
+    --
+    -- -   @DeleteInProgress@: Model card deletion is in progress.
+    --
+    -- -   @ContentDeleted@: Deleted model card content.
+    --
+    -- -   @ExportJobsDeleted@: Deleted all export jobs associated with the
+    --     model card.
+    --
+    -- -   @DeleteCompleted@: Successfully deleted the model card.
+    --
+    -- -   @DeleteFailed@: The model card failed to delete.
+    modelCardProcessingStatus :: Prelude.Maybe ModelCardProcessingStatus,
+    -- | The security configuration used to protect model card content.
+    securityConfig :: Prelude.Maybe ModelCardSecurityConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model card.
+    modelCardArn :: Prelude.Text,
+    -- | The name of the model card.
+    modelCardName :: Prelude.Text,
+    -- | The version of the model card.
+    modelCardVersion :: Prelude.Int,
+    -- | The content of the model card.
+    content :: Data.Sensitive Prelude.Text,
+    -- | The approval status of the model card within your organization.
+    -- Different organizations might have different criteria for model card
+    -- review and approval.
+    --
+    -- -   @Draft@: The model card is a work in progress.
+    --
+    -- -   @PendingReview@: The model card is pending review.
+    --
+    -- -   @Approved@: The model card is approved.
+    --
+    -- -   @Archived@: The model card is archived. No more updates should be
+    --     made to the model card, but it can still be exported.
+    modelCardStatus :: ModelCardStatus,
+    -- | The date and time the model card was created.
+    creationTime :: Data.POSIX,
+    createdBy :: UserContext
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelCardResponse' 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:
+--
+-- 'lastModifiedBy', 'describeModelCardResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeModelCardResponse_lastModifiedTime' - The date and time the model card was last modified.
+--
+-- 'modelCardProcessingStatus', 'describeModelCardResponse_modelCardProcessingStatus' - The processing status of model card deletion. The
+-- @ModelCardProcessingStatus@ updates throughout the different deletion
+-- steps.
+--
+-- -   @DeletePending@: Model card deletion request received.
+--
+-- -   @DeleteInProgress@: Model card deletion is in progress.
+--
+-- -   @ContentDeleted@: Deleted model card content.
+--
+-- -   @ExportJobsDeleted@: Deleted all export jobs associated with the
+--     model card.
+--
+-- -   @DeleteCompleted@: Successfully deleted the model card.
+--
+-- -   @DeleteFailed@: The model card failed to delete.
+--
+-- 'securityConfig', 'describeModelCardResponse_securityConfig' - The security configuration used to protect model card content.
+--
+-- 'httpStatus', 'describeModelCardResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardArn', 'describeModelCardResponse_modelCardArn' - The Amazon Resource Name (ARN) of the model card.
+--
+-- 'modelCardName', 'describeModelCardResponse_modelCardName' - The name of the model card.
+--
+-- 'modelCardVersion', 'describeModelCardResponse_modelCardVersion' - The version of the model card.
+--
+-- 'content', 'describeModelCardResponse_content' - The content of the model card.
+--
+-- 'modelCardStatus', 'describeModelCardResponse_modelCardStatus' - The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+--
+-- 'creationTime', 'describeModelCardResponse_creationTime' - The date and time the model card was created.
+--
+-- 'createdBy', 'describeModelCardResponse_createdBy' - Undocumented member.
+newDescribeModelCardResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelCardArn'
+  Prelude.Text ->
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'modelCardVersion'
+  Prelude.Int ->
+  -- | 'content'
+  Prelude.Text ->
+  -- | 'modelCardStatus'
+  ModelCardStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'createdBy'
+  UserContext ->
+  DescribeModelCardResponse
+newDescribeModelCardResponse
+  pHttpStatus_
+  pModelCardArn_
+  pModelCardName_
+  pModelCardVersion_
+  pContent_
+  pModelCardStatus_
+  pCreationTime_
+  pCreatedBy_ =
+    DescribeModelCardResponse'
+      { lastModifiedBy =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        modelCardProcessingStatus = Prelude.Nothing,
+        securityConfig = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        modelCardArn = pModelCardArn_,
+        modelCardName = pModelCardName_,
+        modelCardVersion = pModelCardVersion_,
+        content = Data._Sensitive Lens.# pContent_,
+        modelCardStatus = pModelCardStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        createdBy = pCreatedBy_
+      }
+
+-- | Undocumented member.
+describeModelCardResponse_lastModifiedBy :: Lens.Lens' DescribeModelCardResponse (Prelude.Maybe UserContext)
+describeModelCardResponse_lastModifiedBy = Lens.lens (\DescribeModelCardResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeModelCardResponse' {} a -> s {lastModifiedBy = a} :: DescribeModelCardResponse)
+
+-- | The date and time the model card was last modified.
+describeModelCardResponse_lastModifiedTime :: Lens.Lens' DescribeModelCardResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelCardResponse_lastModifiedTime = Lens.lens (\DescribeModelCardResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeModelCardResponse' {} a -> s {lastModifiedTime = a} :: DescribeModelCardResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The processing status of model card deletion. The
+-- @ModelCardProcessingStatus@ updates throughout the different deletion
+-- steps.
+--
+-- -   @DeletePending@: Model card deletion request received.
+--
+-- -   @DeleteInProgress@: Model card deletion is in progress.
+--
+-- -   @ContentDeleted@: Deleted model card content.
+--
+-- -   @ExportJobsDeleted@: Deleted all export jobs associated with the
+--     model card.
+--
+-- -   @DeleteCompleted@: Successfully deleted the model card.
+--
+-- -   @DeleteFailed@: The model card failed to delete.
+describeModelCardResponse_modelCardProcessingStatus :: Lens.Lens' DescribeModelCardResponse (Prelude.Maybe ModelCardProcessingStatus)
+describeModelCardResponse_modelCardProcessingStatus = Lens.lens (\DescribeModelCardResponse' {modelCardProcessingStatus} -> modelCardProcessingStatus) (\s@DescribeModelCardResponse' {} a -> s {modelCardProcessingStatus = a} :: DescribeModelCardResponse)
+
+-- | The security configuration used to protect model card content.
+describeModelCardResponse_securityConfig :: Lens.Lens' DescribeModelCardResponse (Prelude.Maybe ModelCardSecurityConfig)
+describeModelCardResponse_securityConfig = Lens.lens (\DescribeModelCardResponse' {securityConfig} -> securityConfig) (\s@DescribeModelCardResponse' {} a -> s {securityConfig = a} :: DescribeModelCardResponse)
+
+-- | The response's http status code.
+describeModelCardResponse_httpStatus :: Lens.Lens' DescribeModelCardResponse Prelude.Int
+describeModelCardResponse_httpStatus = Lens.lens (\DescribeModelCardResponse' {httpStatus} -> httpStatus) (\s@DescribeModelCardResponse' {} a -> s {httpStatus = a} :: DescribeModelCardResponse)
+
+-- | The Amazon Resource Name (ARN) of the model card.
+describeModelCardResponse_modelCardArn :: Lens.Lens' DescribeModelCardResponse Prelude.Text
+describeModelCardResponse_modelCardArn = Lens.lens (\DescribeModelCardResponse' {modelCardArn} -> modelCardArn) (\s@DescribeModelCardResponse' {} a -> s {modelCardArn = a} :: DescribeModelCardResponse)
+
+-- | The name of the model card.
+describeModelCardResponse_modelCardName :: Lens.Lens' DescribeModelCardResponse Prelude.Text
+describeModelCardResponse_modelCardName = Lens.lens (\DescribeModelCardResponse' {modelCardName} -> modelCardName) (\s@DescribeModelCardResponse' {} a -> s {modelCardName = a} :: DescribeModelCardResponse)
+
+-- | The version of the model card.
+describeModelCardResponse_modelCardVersion :: Lens.Lens' DescribeModelCardResponse Prelude.Int
+describeModelCardResponse_modelCardVersion = Lens.lens (\DescribeModelCardResponse' {modelCardVersion} -> modelCardVersion) (\s@DescribeModelCardResponse' {} a -> s {modelCardVersion = a} :: DescribeModelCardResponse)
+
+-- | The content of the model card.
+describeModelCardResponse_content :: Lens.Lens' DescribeModelCardResponse Prelude.Text
+describeModelCardResponse_content = Lens.lens (\DescribeModelCardResponse' {content} -> content) (\s@DescribeModelCardResponse' {} a -> s {content = a} :: DescribeModelCardResponse) Prelude.. Data._Sensitive
+
+-- | The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+describeModelCardResponse_modelCardStatus :: Lens.Lens' DescribeModelCardResponse ModelCardStatus
+describeModelCardResponse_modelCardStatus = Lens.lens (\DescribeModelCardResponse' {modelCardStatus} -> modelCardStatus) (\s@DescribeModelCardResponse' {} a -> s {modelCardStatus = a} :: DescribeModelCardResponse)
+
+-- | The date and time the model card was created.
+describeModelCardResponse_creationTime :: Lens.Lens' DescribeModelCardResponse Prelude.UTCTime
+describeModelCardResponse_creationTime = Lens.lens (\DescribeModelCardResponse' {creationTime} -> creationTime) (\s@DescribeModelCardResponse' {} a -> s {creationTime = a} :: DescribeModelCardResponse) Prelude.. Data._Time
+
+-- | Undocumented member.
+describeModelCardResponse_createdBy :: Lens.Lens' DescribeModelCardResponse UserContext
+describeModelCardResponse_createdBy = Lens.lens (\DescribeModelCardResponse' {createdBy} -> createdBy) (\s@DescribeModelCardResponse' {} a -> s {createdBy = a} :: DescribeModelCardResponse)
+
+instance Prelude.NFData DescribeModelCardResponse where
+  rnf DescribeModelCardResponse' {..} =
+    Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelCardProcessingStatus
+      `Prelude.seq` Prelude.rnf securityConfig
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardArn
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf createdBy
diff --git a/gen/Amazonka/SageMaker/DescribeModelCardExportJob.hs b/gen/Amazonka/SageMaker/DescribeModelCardExportJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelCardExportJob.hs
@@ -0,0 +1,340 @@
+{-# 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.DescribeModelCardExportJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an Amazon SageMaker Model Card export job.
+module Amazonka.SageMaker.DescribeModelCardExportJob
+  ( -- * Creating a Request
+    DescribeModelCardExportJob (..),
+    newDescribeModelCardExportJob,
+
+    -- * Request Lenses
+    describeModelCardExportJob_modelCardExportJobArn,
+
+    -- * Destructuring the Response
+    DescribeModelCardExportJobResponse (..),
+    newDescribeModelCardExportJobResponse,
+
+    -- * Response Lenses
+    describeModelCardExportJobResponse_exportArtifacts,
+    describeModelCardExportJobResponse_failureReason,
+    describeModelCardExportJobResponse_httpStatus,
+    describeModelCardExportJobResponse_modelCardExportJobName,
+    describeModelCardExportJobResponse_modelCardExportJobArn,
+    describeModelCardExportJobResponse_status,
+    describeModelCardExportJobResponse_modelCardName,
+    describeModelCardExportJobResponse_modelCardVersion,
+    describeModelCardExportJobResponse_outputConfig,
+    describeModelCardExportJobResponse_createdAt,
+    describeModelCardExportJobResponse_lastModifiedAt,
+  )
+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:/ 'newDescribeModelCardExportJob' smart constructor.
+data DescribeModelCardExportJob = DescribeModelCardExportJob'
+  { -- | The Amazon Resource Name (ARN) of the model card export job to describe.
+    modelCardExportJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelCardExportJob' 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:
+--
+-- 'modelCardExportJobArn', 'describeModelCardExportJob_modelCardExportJobArn' - The Amazon Resource Name (ARN) of the model card export job to describe.
+newDescribeModelCardExportJob ::
+  -- | 'modelCardExportJobArn'
+  Prelude.Text ->
+  DescribeModelCardExportJob
+newDescribeModelCardExportJob pModelCardExportJobArn_ =
+  DescribeModelCardExportJob'
+    { modelCardExportJobArn =
+        pModelCardExportJobArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the model card export job to describe.
+describeModelCardExportJob_modelCardExportJobArn :: Lens.Lens' DescribeModelCardExportJob Prelude.Text
+describeModelCardExportJob_modelCardExportJobArn = Lens.lens (\DescribeModelCardExportJob' {modelCardExportJobArn} -> modelCardExportJobArn) (\s@DescribeModelCardExportJob' {} a -> s {modelCardExportJobArn = a} :: DescribeModelCardExportJob)
+
+instance Core.AWSRequest DescribeModelCardExportJob where
+  type
+    AWSResponse DescribeModelCardExportJob =
+      DescribeModelCardExportJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelCardExportJobResponse'
+            Prelude.<$> (x Data..?> "ExportArtifacts")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelCardExportJobName")
+            Prelude.<*> (x Data..:> "ModelCardExportJobArn")
+            Prelude.<*> (x Data..:> "Status")
+            Prelude.<*> (x Data..:> "ModelCardName")
+            Prelude.<*> (x Data..:> "ModelCardVersion")
+            Prelude.<*> (x Data..:> "OutputConfig")
+            Prelude.<*> (x Data..:> "CreatedAt")
+            Prelude.<*> (x Data..:> "LastModifiedAt")
+      )
+
+instance Prelude.Hashable DescribeModelCardExportJob where
+  hashWithSalt _salt DescribeModelCardExportJob' {..} =
+    _salt `Prelude.hashWithSalt` modelCardExportJobArn
+
+instance Prelude.NFData DescribeModelCardExportJob where
+  rnf DescribeModelCardExportJob' {..} =
+    Prelude.rnf modelCardExportJobArn
+
+instance Data.ToHeaders DescribeModelCardExportJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelCardExportJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModelCardExportJob where
+  toJSON DescribeModelCardExportJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ModelCardExportJobArn"
+                  Data..= modelCardExportJobArn
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeModelCardExportJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModelCardExportJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelCardExportJobResponse' smart constructor.
+data DescribeModelCardExportJobResponse = DescribeModelCardExportJobResponse'
+  { -- | The exported model card artifacts.
+    exportArtifacts :: Prelude.Maybe ModelCardExportArtifacts,
+    -- | The failure reason if the model export job fails.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the model card export job to describe.
+    modelCardExportJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model card export job.
+    modelCardExportJobArn :: Prelude.Text,
+    -- | The completion status of the model card export job.
+    --
+    -- -   @InProgress@: The model card export job is in progress.
+    --
+    -- -   @Completed@: The model card export job is complete.
+    --
+    -- -   @Failed@: The model card export job failed. To see the reason for
+    --     the failure, see the @FailureReason@ field in the response to a
+    --     @DescribeModelCardExportJob@ call.
+    status :: ModelCardExportJobStatus,
+    -- | The name of the model card that the model export job exports.
+    modelCardName :: Prelude.Text,
+    -- | The version of the model card that the model export job exports.
+    modelCardVersion :: Prelude.Int,
+    -- | The export output details for the model card.
+    outputConfig :: ModelCardExportOutputConfig,
+    -- | The date and time that the model export job was created.
+    createdAt :: Data.POSIX,
+    -- | The date and time that the model export job was last modified.
+    lastModifiedAt :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelCardExportJobResponse' 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:
+--
+-- 'exportArtifacts', 'describeModelCardExportJobResponse_exportArtifacts' - The exported model card artifacts.
+--
+-- 'failureReason', 'describeModelCardExportJobResponse_failureReason' - The failure reason if the model export job fails.
+--
+-- 'httpStatus', 'describeModelCardExportJobResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardExportJobName', 'describeModelCardExportJobResponse_modelCardExportJobName' - The name of the model card export job to describe.
+--
+-- 'modelCardExportJobArn', 'describeModelCardExportJobResponse_modelCardExportJobArn' - The Amazon Resource Name (ARN) of the model card export job.
+--
+-- 'status', 'describeModelCardExportJobResponse_status' - The completion status of the model card export job.
+--
+-- -   @InProgress@: The model card export job is in progress.
+--
+-- -   @Completed@: The model card export job is complete.
+--
+-- -   @Failed@: The model card export job failed. To see the reason for
+--     the failure, see the @FailureReason@ field in the response to a
+--     @DescribeModelCardExportJob@ call.
+--
+-- 'modelCardName', 'describeModelCardExportJobResponse_modelCardName' - The name of the model card that the model export job exports.
+--
+-- 'modelCardVersion', 'describeModelCardExportJobResponse_modelCardVersion' - The version of the model card that the model export job exports.
+--
+-- 'outputConfig', 'describeModelCardExportJobResponse_outputConfig' - The export output details for the model card.
+--
+-- 'createdAt', 'describeModelCardExportJobResponse_createdAt' - The date and time that the model export job was created.
+--
+-- 'lastModifiedAt', 'describeModelCardExportJobResponse_lastModifiedAt' - The date and time that the model export job was last modified.
+newDescribeModelCardExportJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelCardExportJobName'
+  Prelude.Text ->
+  -- | 'modelCardExportJobArn'
+  Prelude.Text ->
+  -- | 'status'
+  ModelCardExportJobStatus ->
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'modelCardVersion'
+  Prelude.Int ->
+  -- | 'outputConfig'
+  ModelCardExportOutputConfig ->
+  -- | 'createdAt'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedAt'
+  Prelude.UTCTime ->
+  DescribeModelCardExportJobResponse
+newDescribeModelCardExportJobResponse
+  pHttpStatus_
+  pModelCardExportJobName_
+  pModelCardExportJobArn_
+  pStatus_
+  pModelCardName_
+  pModelCardVersion_
+  pOutputConfig_
+  pCreatedAt_
+  pLastModifiedAt_ =
+    DescribeModelCardExportJobResponse'
+      { exportArtifacts =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        modelCardExportJobName =
+          pModelCardExportJobName_,
+        modelCardExportJobArn =
+          pModelCardExportJobArn_,
+        status = pStatus_,
+        modelCardName = pModelCardName_,
+        modelCardVersion = pModelCardVersion_,
+        outputConfig = pOutputConfig_,
+        createdAt =
+          Data._Time Lens.# pCreatedAt_,
+        lastModifiedAt =
+          Data._Time Lens.# pLastModifiedAt_
+      }
+
+-- | The exported model card artifacts.
+describeModelCardExportJobResponse_exportArtifacts :: Lens.Lens' DescribeModelCardExportJobResponse (Prelude.Maybe ModelCardExportArtifacts)
+describeModelCardExportJobResponse_exportArtifacts = Lens.lens (\DescribeModelCardExportJobResponse' {exportArtifacts} -> exportArtifacts) (\s@DescribeModelCardExportJobResponse' {} a -> s {exportArtifacts = a} :: DescribeModelCardExportJobResponse)
+
+-- | The failure reason if the model export job fails.
+describeModelCardExportJobResponse_failureReason :: Lens.Lens' DescribeModelCardExportJobResponse (Prelude.Maybe Prelude.Text)
+describeModelCardExportJobResponse_failureReason = Lens.lens (\DescribeModelCardExportJobResponse' {failureReason} -> failureReason) (\s@DescribeModelCardExportJobResponse' {} a -> s {failureReason = a} :: DescribeModelCardExportJobResponse)
+
+-- | The response's http status code.
+describeModelCardExportJobResponse_httpStatus :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.Int
+describeModelCardExportJobResponse_httpStatus = Lens.lens (\DescribeModelCardExportJobResponse' {httpStatus} -> httpStatus) (\s@DescribeModelCardExportJobResponse' {} a -> s {httpStatus = a} :: DescribeModelCardExportJobResponse)
+
+-- | The name of the model card export job to describe.
+describeModelCardExportJobResponse_modelCardExportJobName :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.Text
+describeModelCardExportJobResponse_modelCardExportJobName = Lens.lens (\DescribeModelCardExportJobResponse' {modelCardExportJobName} -> modelCardExportJobName) (\s@DescribeModelCardExportJobResponse' {} a -> s {modelCardExportJobName = a} :: DescribeModelCardExportJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the model card export job.
+describeModelCardExportJobResponse_modelCardExportJobArn :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.Text
+describeModelCardExportJobResponse_modelCardExportJobArn = Lens.lens (\DescribeModelCardExportJobResponse' {modelCardExportJobArn} -> modelCardExportJobArn) (\s@DescribeModelCardExportJobResponse' {} a -> s {modelCardExportJobArn = a} :: DescribeModelCardExportJobResponse)
+
+-- | The completion status of the model card export job.
+--
+-- -   @InProgress@: The model card export job is in progress.
+--
+-- -   @Completed@: The model card export job is complete.
+--
+-- -   @Failed@: The model card export job failed. To see the reason for
+--     the failure, see the @FailureReason@ field in the response to a
+--     @DescribeModelCardExportJob@ call.
+describeModelCardExportJobResponse_status :: Lens.Lens' DescribeModelCardExportJobResponse ModelCardExportJobStatus
+describeModelCardExportJobResponse_status = Lens.lens (\DescribeModelCardExportJobResponse' {status} -> status) (\s@DescribeModelCardExportJobResponse' {} a -> s {status = a} :: DescribeModelCardExportJobResponse)
+
+-- | The name of the model card that the model export job exports.
+describeModelCardExportJobResponse_modelCardName :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.Text
+describeModelCardExportJobResponse_modelCardName = Lens.lens (\DescribeModelCardExportJobResponse' {modelCardName} -> modelCardName) (\s@DescribeModelCardExportJobResponse' {} a -> s {modelCardName = a} :: DescribeModelCardExportJobResponse)
+
+-- | The version of the model card that the model export job exports.
+describeModelCardExportJobResponse_modelCardVersion :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.Int
+describeModelCardExportJobResponse_modelCardVersion = Lens.lens (\DescribeModelCardExportJobResponse' {modelCardVersion} -> modelCardVersion) (\s@DescribeModelCardExportJobResponse' {} a -> s {modelCardVersion = a} :: DescribeModelCardExportJobResponse)
+
+-- | The export output details for the model card.
+describeModelCardExportJobResponse_outputConfig :: Lens.Lens' DescribeModelCardExportJobResponse ModelCardExportOutputConfig
+describeModelCardExportJobResponse_outputConfig = Lens.lens (\DescribeModelCardExportJobResponse' {outputConfig} -> outputConfig) (\s@DescribeModelCardExportJobResponse' {} a -> s {outputConfig = a} :: DescribeModelCardExportJobResponse)
+
+-- | The date and time that the model export job was created.
+describeModelCardExportJobResponse_createdAt :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.UTCTime
+describeModelCardExportJobResponse_createdAt = Lens.lens (\DescribeModelCardExportJobResponse' {createdAt} -> createdAt) (\s@DescribeModelCardExportJobResponse' {} a -> s {createdAt = a} :: DescribeModelCardExportJobResponse) Prelude.. Data._Time
+
+-- | The date and time that the model export job was last modified.
+describeModelCardExportJobResponse_lastModifiedAt :: Lens.Lens' DescribeModelCardExportJobResponse Prelude.UTCTime
+describeModelCardExportJobResponse_lastModifiedAt = Lens.lens (\DescribeModelCardExportJobResponse' {lastModifiedAt} -> lastModifiedAt) (\s@DescribeModelCardExportJobResponse' {} a -> s {lastModifiedAt = a} :: DescribeModelCardExportJobResponse) Prelude.. Data._Time
+
+instance
+  Prelude.NFData
+    DescribeModelCardExportJobResponse
+  where
+  rnf DescribeModelCardExportJobResponse' {..} =
+    Prelude.rnf exportArtifacts
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardExportJobName
+      `Prelude.seq` Prelude.rnf modelCardExportJobArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf lastModifiedAt
diff --git a/gen/Amazonka/SageMaker/DescribeModelExplainabilityJobDefinition.hs b/gen/Amazonka/SageMaker/DescribeModelExplainabilityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelExplainabilityJobDefinition.hs
@@ -0,0 +1,373 @@
+{-# 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.DescribeModelExplainabilityJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of a model explainability job definition.
+module Amazonka.SageMaker.DescribeModelExplainabilityJobDefinition
+  ( -- * Creating a Request
+    DescribeModelExplainabilityJobDefinition (..),
+    newDescribeModelExplainabilityJobDefinition,
+
+    -- * Request Lenses
+    describeModelExplainabilityJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DescribeModelExplainabilityJobDefinitionResponse (..),
+    newDescribeModelExplainabilityJobDefinitionResponse,
+
+    -- * Response Lenses
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityBaselineConfig,
+    describeModelExplainabilityJobDefinitionResponse_networkConfig,
+    describeModelExplainabilityJobDefinitionResponse_stoppingCondition,
+    describeModelExplainabilityJobDefinitionResponse_httpStatus,
+    describeModelExplainabilityJobDefinitionResponse_jobDefinitionArn,
+    describeModelExplainabilityJobDefinitionResponse_jobDefinitionName,
+    describeModelExplainabilityJobDefinitionResponse_creationTime,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityAppSpecification,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobInput,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobOutputConfig,
+    describeModelExplainabilityJobDefinitionResponse_jobResources,
+    describeModelExplainabilityJobDefinitionResponse_roleArn,
+  )
+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:/ 'newDescribeModelExplainabilityJobDefinition' smart constructor.
+data DescribeModelExplainabilityJobDefinition = DescribeModelExplainabilityJobDefinition'
+  { -- | The name of the model explainability job definition. The name must be
+    -- unique within an Amazon Web Services Region in the Amazon Web Services
+    -- account.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelExplainabilityJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'describeModelExplainabilityJobDefinition_jobDefinitionName' - The name of the model explainability job definition. The name must be
+-- unique within an Amazon Web Services Region in the Amazon Web Services
+-- account.
+newDescribeModelExplainabilityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DescribeModelExplainabilityJobDefinition
+newDescribeModelExplainabilityJobDefinition
+  pJobDefinitionName_ =
+    DescribeModelExplainabilityJobDefinition'
+      { jobDefinitionName =
+          pJobDefinitionName_
+      }
+
+-- | The name of the model explainability job definition. The name must be
+-- unique within an Amazon Web Services Region in the Amazon Web Services
+-- account.
+describeModelExplainabilityJobDefinition_jobDefinitionName :: Lens.Lens' DescribeModelExplainabilityJobDefinition Prelude.Text
+describeModelExplainabilityJobDefinition_jobDefinitionName = Lens.lens (\DescribeModelExplainabilityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeModelExplainabilityJobDefinition' {} a -> s {jobDefinitionName = a} :: DescribeModelExplainabilityJobDefinition)
+
+instance
+  Core.AWSRequest
+    DescribeModelExplainabilityJobDefinition
+  where
+  type
+    AWSResponse
+      DescribeModelExplainabilityJobDefinition =
+      DescribeModelExplainabilityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelExplainabilityJobDefinitionResponse'
+            Prelude.<$> (x Data..?> "ModelExplainabilityBaselineConfig")
+            Prelude.<*> (x Data..?> "NetworkConfig")
+            Prelude.<*> (x Data..?> "StoppingCondition")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+            Prelude.<*> (x Data..:> "JobDefinitionName")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ModelExplainabilityAppSpecification")
+            Prelude.<*> (x Data..:> "ModelExplainabilityJobInput")
+            Prelude.<*> (x Data..:> "ModelExplainabilityJobOutputConfig")
+            Prelude.<*> (x Data..:> "JobResources")
+            Prelude.<*> (x Data..:> "RoleArn")
+      )
+
+instance
+  Prelude.Hashable
+    DescribeModelExplainabilityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DescribeModelExplainabilityJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DescribeModelExplainabilityJobDefinition
+  where
+  rnf DescribeModelExplainabilityJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DescribeModelExplainabilityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelExplainabilityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribeModelExplainabilityJobDefinition
+  where
+  toJSON DescribeModelExplainabilityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribeModelExplainabilityJobDefinition
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeModelExplainabilityJobDefinition
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelExplainabilityJobDefinitionResponse' smart constructor.
+data DescribeModelExplainabilityJobDefinitionResponse = DescribeModelExplainabilityJobDefinitionResponse'
+  { -- | The baseline configuration for a model explainability job.
+    modelExplainabilityBaselineConfig :: Prelude.Maybe ModelExplainabilityBaselineConfig,
+    -- | Networking options for a model explainability job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model explainability job.
+    jobDefinitionArn :: Prelude.Text,
+    -- | The name of the explainability job definition. The name must be unique
+    -- within an Amazon Web Services Region in the Amazon Web Services account.
+    jobDefinitionName :: Prelude.Text,
+    -- | The time at which the model explainability job was created.
+    creationTime :: Data.POSIX,
+    -- | Configures the model explainability job to run a specified Docker
+    -- container image.
+    modelExplainabilityAppSpecification :: ModelExplainabilityAppSpecification,
+    -- | Inputs for the model explainability job.
+    modelExplainabilityJobInput :: ModelExplainabilityJobInput,
+    modelExplainabilityJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+    -- Access Management (IAM) role that has read permission to the input data
+    -- location and write permission to the output data location in Amazon S3.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelExplainabilityJobDefinitionResponse' 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:
+--
+-- 'modelExplainabilityBaselineConfig', 'describeModelExplainabilityJobDefinitionResponse_modelExplainabilityBaselineConfig' - The baseline configuration for a model explainability job.
+--
+-- 'networkConfig', 'describeModelExplainabilityJobDefinitionResponse_networkConfig' - Networking options for a model explainability job.
+--
+-- 'stoppingCondition', 'describeModelExplainabilityJobDefinitionResponse_stoppingCondition' - Undocumented member.
+--
+-- 'httpStatus', 'describeModelExplainabilityJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'describeModelExplainabilityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model explainability job.
+--
+-- 'jobDefinitionName', 'describeModelExplainabilityJobDefinitionResponse_jobDefinitionName' - The name of the explainability job definition. The name must be unique
+-- within an Amazon Web Services Region in the Amazon Web Services account.
+--
+-- 'creationTime', 'describeModelExplainabilityJobDefinitionResponse_creationTime' - The time at which the model explainability job was created.
+--
+-- 'modelExplainabilityAppSpecification', 'describeModelExplainabilityJobDefinitionResponse_modelExplainabilityAppSpecification' - Configures the model explainability job to run a specified Docker
+-- container image.
+--
+-- 'modelExplainabilityJobInput', 'describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobInput' - Inputs for the model explainability job.
+--
+-- 'modelExplainabilityJobOutputConfig', 'describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'describeModelExplainabilityJobDefinitionResponse_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'describeModelExplainabilityJobDefinitionResponse_roleArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) role that has read permission to the input data
+-- location and write permission to the output data location in Amazon S3.
+newDescribeModelExplainabilityJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelExplainabilityAppSpecification'
+  ModelExplainabilityAppSpecification ->
+  -- | 'modelExplainabilityJobInput'
+  ModelExplainabilityJobInput ->
+  -- | 'modelExplainabilityJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  DescribeModelExplainabilityJobDefinitionResponse
+newDescribeModelExplainabilityJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_
+  pJobDefinitionName_
+  pCreationTime_
+  pModelExplainabilityAppSpecification_
+  pModelExplainabilityJobInput_
+  pModelExplainabilityJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    DescribeModelExplainabilityJobDefinitionResponse'
+      { modelExplainabilityBaselineConfig =
+          Prelude.Nothing,
+        networkConfig =
+          Prelude.Nothing,
+        stoppingCondition =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_,
+        jobDefinitionName =
+          pJobDefinitionName_,
+        creationTime =
+          Data._Time
+            Lens.# pCreationTime_,
+        modelExplainabilityAppSpecification =
+          pModelExplainabilityAppSpecification_,
+        modelExplainabilityJobInput =
+          pModelExplainabilityJobInput_,
+        modelExplainabilityJobOutputConfig =
+          pModelExplainabilityJobOutputConfig_,
+        jobResources =
+          pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | The baseline configuration for a model explainability job.
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityBaselineConfig :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse (Prelude.Maybe ModelExplainabilityBaselineConfig)
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityBaselineConfig = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {modelExplainabilityBaselineConfig} -> modelExplainabilityBaselineConfig) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {modelExplainabilityBaselineConfig = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | Networking options for a model explainability job.
+describeModelExplainabilityJobDefinitionResponse_networkConfig :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse (Prelude.Maybe MonitoringNetworkConfig)
+describeModelExplainabilityJobDefinitionResponse_networkConfig = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {networkConfig} -> networkConfig) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {networkConfig = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelExplainabilityJobDefinitionResponse_stoppingCondition :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse (Prelude.Maybe MonitoringStoppingCondition)
+describeModelExplainabilityJobDefinitionResponse_stoppingCondition = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {stoppingCondition = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | The response's http status code.
+describeModelExplainabilityJobDefinitionResponse_httpStatus :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse Prelude.Int
+describeModelExplainabilityJobDefinitionResponse_httpStatus = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {httpStatus = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the model explainability job.
+describeModelExplainabilityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse Prelude.Text
+describeModelExplainabilityJobDefinitionResponse_jobDefinitionArn = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | The name of the explainability job definition. The name must be unique
+-- within an Amazon Web Services Region in the Amazon Web Services account.
+describeModelExplainabilityJobDefinitionResponse_jobDefinitionName :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse Prelude.Text
+describeModelExplainabilityJobDefinitionResponse_jobDefinitionName = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {jobDefinitionName = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | The time at which the model explainability job was created.
+describeModelExplainabilityJobDefinitionResponse_creationTime :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse Prelude.UTCTime
+describeModelExplainabilityJobDefinitionResponse_creationTime = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {creationTime} -> creationTime) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {creationTime = a} :: DescribeModelExplainabilityJobDefinitionResponse) Prelude.. Data._Time
+
+-- | Configures the model explainability job to run a specified Docker
+-- container image.
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityAppSpecification :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse ModelExplainabilityAppSpecification
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityAppSpecification = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {modelExplainabilityAppSpecification} -> modelExplainabilityAppSpecification) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {modelExplainabilityAppSpecification = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | Inputs for the model explainability job.
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobInput :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse ModelExplainabilityJobInput
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobInput = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {modelExplainabilityJobInput} -> modelExplainabilityJobInput) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {modelExplainabilityJobInput = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobOutputConfig :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse MonitoringOutputConfig
+describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobOutputConfig = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {modelExplainabilityJobOutputConfig} -> modelExplainabilityJobOutputConfig) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {modelExplainabilityJobOutputConfig = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelExplainabilityJobDefinitionResponse_jobResources :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse MonitoringResources
+describeModelExplainabilityJobDefinitionResponse_jobResources = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {jobResources} -> jobResources) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {jobResources = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
+-- Access Management (IAM) role that has read permission to the input data
+-- location and write permission to the output data location in Amazon S3.
+describeModelExplainabilityJobDefinitionResponse_roleArn :: Lens.Lens' DescribeModelExplainabilityJobDefinitionResponse Prelude.Text
+describeModelExplainabilityJobDefinitionResponse_roleArn = Lens.lens (\DescribeModelExplainabilityJobDefinitionResponse' {roleArn} -> roleArn) (\s@DescribeModelExplainabilityJobDefinitionResponse' {} a -> s {roleArn = a} :: DescribeModelExplainabilityJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeModelExplainabilityJobDefinitionResponse
+  where
+  rnf
+    DescribeModelExplainabilityJobDefinitionResponse' {..} =
+      Prelude.rnf modelExplainabilityBaselineConfig
+        `Prelude.seq` Prelude.rnf networkConfig
+        `Prelude.seq` Prelude.rnf stoppingCondition
+        `Prelude.seq` Prelude.rnf httpStatus
+        `Prelude.seq` Prelude.rnf jobDefinitionArn
+        `Prelude.seq` Prelude.rnf jobDefinitionName
+        `Prelude.seq` Prelude.rnf creationTime
+        `Prelude.seq` Prelude.rnf modelExplainabilityAppSpecification
+        `Prelude.seq` Prelude.rnf modelExplainabilityJobInput
+        `Prelude.seq` Prelude.rnf modelExplainabilityJobOutputConfig
+        `Prelude.seq` Prelude.rnf jobResources
+        `Prelude.seq` Prelude.rnf roleArn
diff --git a/gen/Amazonka/SageMaker/DescribeModelPackage.hs b/gen/Amazonka/SageMaker/DescribeModelPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelPackage.hs
@@ -0,0 +1,552 @@
+{-# 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.DescribeModelPackage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of the specified model package, which is used to
+-- create SageMaker models or list them on Amazon Web Services Marketplace.
+--
+-- To create models in SageMaker, buyers can subscribe to model packages
+-- listed on Amazon Web Services Marketplace.
+module Amazonka.SageMaker.DescribeModelPackage
+  ( -- * Creating a Request
+    DescribeModelPackage (..),
+    newDescribeModelPackage,
+
+    -- * Request Lenses
+    describeModelPackage_modelPackageName,
+
+    -- * Destructuring the Response
+    DescribeModelPackageResponse (..),
+    newDescribeModelPackageResponse,
+
+    -- * Response Lenses
+    describeModelPackageResponse_additionalInferenceSpecifications,
+    describeModelPackageResponse_approvalDescription,
+    describeModelPackageResponse_certifyForMarketplace,
+    describeModelPackageResponse_createdBy,
+    describeModelPackageResponse_customerMetadataProperties,
+    describeModelPackageResponse_domain,
+    describeModelPackageResponse_driftCheckBaselines,
+    describeModelPackageResponse_inferenceSpecification,
+    describeModelPackageResponse_lastModifiedBy,
+    describeModelPackageResponse_lastModifiedTime,
+    describeModelPackageResponse_metadataProperties,
+    describeModelPackageResponse_modelApprovalStatus,
+    describeModelPackageResponse_modelMetrics,
+    describeModelPackageResponse_modelPackageDescription,
+    describeModelPackageResponse_modelPackageGroupName,
+    describeModelPackageResponse_modelPackageVersion,
+    describeModelPackageResponse_samplePayloadUrl,
+    describeModelPackageResponse_sourceAlgorithmSpecification,
+    describeModelPackageResponse_task,
+    describeModelPackageResponse_validationSpecification,
+    describeModelPackageResponse_httpStatus,
+    describeModelPackageResponse_modelPackageName,
+    describeModelPackageResponse_modelPackageArn,
+    describeModelPackageResponse_creationTime,
+    describeModelPackageResponse_modelPackageStatus,
+    describeModelPackageResponse_modelPackageStatusDetails,
+  )
+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:/ 'newDescribeModelPackage' smart constructor.
+data DescribeModelPackage = DescribeModelPackage'
+  { -- | The name or Amazon Resource Name (ARN) of the model package to describe.
+    --
+    -- When you specify a name, the name must have 1 to 63 characters. Valid
+    -- characters are a-z, A-Z, 0-9, and - (hyphen).
+    modelPackageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelPackage' 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:
+--
+-- 'modelPackageName', 'describeModelPackage_modelPackageName' - The name or Amazon Resource Name (ARN) of the model package to describe.
+--
+-- When you specify a name, the name must have 1 to 63 characters. Valid
+-- characters are a-z, A-Z, 0-9, and - (hyphen).
+newDescribeModelPackage ::
+  -- | 'modelPackageName'
+  Prelude.Text ->
+  DescribeModelPackage
+newDescribeModelPackage pModelPackageName_ =
+  DescribeModelPackage'
+    { modelPackageName =
+        pModelPackageName_
+    }
+
+-- | The name or Amazon Resource Name (ARN) of the model package to describe.
+--
+-- When you specify a name, the name must have 1 to 63 characters. Valid
+-- characters are a-z, A-Z, 0-9, and - (hyphen).
+describeModelPackage_modelPackageName :: Lens.Lens' DescribeModelPackage Prelude.Text
+describeModelPackage_modelPackageName = Lens.lens (\DescribeModelPackage' {modelPackageName} -> modelPackageName) (\s@DescribeModelPackage' {} a -> s {modelPackageName = a} :: DescribeModelPackage)
+
+instance Core.AWSRequest DescribeModelPackage where
+  type
+    AWSResponse DescribeModelPackage =
+      DescribeModelPackageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelPackageResponse'
+            Prelude.<$> (x Data..?> "AdditionalInferenceSpecifications")
+            Prelude.<*> (x Data..?> "ApprovalDescription")
+            Prelude.<*> (x Data..?> "CertifyForMarketplace")
+            Prelude.<*> (x Data..?> "CreatedBy")
+            Prelude.<*> ( x
+                            Data..?> "CustomerMetadataProperties"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "Domain")
+            Prelude.<*> (x Data..?> "DriftCheckBaselines")
+            Prelude.<*> (x Data..?> "InferenceSpecification")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "MetadataProperties")
+            Prelude.<*> (x Data..?> "ModelApprovalStatus")
+            Prelude.<*> (x Data..?> "ModelMetrics")
+            Prelude.<*> (x Data..?> "ModelPackageDescription")
+            Prelude.<*> (x Data..?> "ModelPackageGroupName")
+            Prelude.<*> (x Data..?> "ModelPackageVersion")
+            Prelude.<*> (x Data..?> "SamplePayloadUrl")
+            Prelude.<*> (x Data..?> "SourceAlgorithmSpecification")
+            Prelude.<*> (x Data..?> "Task")
+            Prelude.<*> (x Data..?> "ValidationSpecification")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelPackageName")
+            Prelude.<*> (x Data..:> "ModelPackageArn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ModelPackageStatus")
+            Prelude.<*> (x Data..:> "ModelPackageStatusDetails")
+      )
+
+instance Prelude.Hashable DescribeModelPackage where
+  hashWithSalt _salt DescribeModelPackage' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageName
+
+instance Prelude.NFData DescribeModelPackage where
+  rnf DescribeModelPackage' {..} =
+    Prelude.rnf modelPackageName
+
+instance Data.ToHeaders DescribeModelPackage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelPackage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModelPackage where
+  toJSON DescribeModelPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ModelPackageName" Data..= modelPackageName)
+          ]
+      )
+
+instance Data.ToPath DescribeModelPackage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModelPackage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelPackageResponse' smart constructor.
+data DescribeModelPackageResponse = DescribeModelPackageResponse'
+  { -- | 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.
+    additionalInferenceSpecifications :: Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition),
+    -- | A description provided for the model approval.
+    approvalDescription :: Prelude.Maybe Prelude.Text,
+    -- | Whether the model package is certified for listing on Amazon Web
+    -- Services Marketplace.
+    certifyForMarketplace :: Prelude.Maybe Prelude.Bool,
+    createdBy :: Prelude.Maybe UserContext,
+    -- | The metadata properties associated with the model package versions.
+    customerMetadataProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The machine learning domain of the model package you specified. Common
+    -- machine learning domains include computer vision and natural language
+    -- processing.
+    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/.
+    driftCheckBaselines :: Prelude.Maybe DriftCheckBaselines,
+    -- | Details about inference jobs that can be run with models based on this
+    -- model package.
+    inferenceSpecification :: Prelude.Maybe InferenceSpecification,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The last time that the model package was modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | The approval status of the model package.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | Metrics for the model.
+    modelMetrics :: Prelude.Maybe ModelMetrics,
+    -- | A brief summary of the model package.
+    modelPackageDescription :: Prelude.Maybe Prelude.Text,
+    -- | If the model is a versioned model, the name of the model group that the
+    -- versioned model belongs to.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The version of the model package.
+    modelPackageVersion :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Simple Storage Service (Amazon S3) path where the sample
+    -- payload are stored. This path points to a single gzip compressed tar
+    -- archive (.tar.gz suffix).
+    samplePayloadUrl :: Prelude.Maybe Prelude.Text,
+    -- | Details about the algorithm that was used to create the model package.
+    sourceAlgorithmSpecification :: Prelude.Maybe SourceAlgorithmSpecification,
+    -- | The machine learning task you specified that your model package
+    -- accomplishes. Common machine learning tasks include object detection and
+    -- image classification.
+    task :: Prelude.Maybe Prelude.Text,
+    -- | Configurations for one or more transform jobs that SageMaker runs to
+    -- test the model package.
+    validationSpecification :: Prelude.Maybe ModelPackageValidationSpecification,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the model package being described.
+    modelPackageName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model package.
+    modelPackageArn :: Prelude.Text,
+    -- | A timestamp specifying when the model package was created.
+    creationTime :: Data.POSIX,
+    -- | The current status of the model package.
+    modelPackageStatus :: ModelPackageStatus,
+    -- | Details about the current status of the model package.
+    modelPackageStatusDetails :: ModelPackageStatusDetails
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelPackageResponse' 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', 'describeModelPackageResponse_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.
+--
+-- 'approvalDescription', 'describeModelPackageResponse_approvalDescription' - A description provided for the model approval.
+--
+-- 'certifyForMarketplace', 'describeModelPackageResponse_certifyForMarketplace' - Whether the model package is certified for listing on Amazon Web
+-- Services Marketplace.
+--
+-- 'createdBy', 'describeModelPackageResponse_createdBy' - Undocumented member.
+--
+-- 'customerMetadataProperties', 'describeModelPackageResponse_customerMetadataProperties' - The metadata properties associated with the model package versions.
+--
+-- 'domain', 'describeModelPackageResponse_domain' - The machine learning domain of the model package you specified. Common
+-- machine learning domains include computer vision and natural language
+-- processing.
+--
+-- 'driftCheckBaselines', 'describeModelPackageResponse_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', 'describeModelPackageResponse_inferenceSpecification' - Details about inference jobs that can be run with models based on this
+-- model package.
+--
+-- 'lastModifiedBy', 'describeModelPackageResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeModelPackageResponse_lastModifiedTime' - The last time that the model package was modified.
+--
+-- 'metadataProperties', 'describeModelPackageResponse_metadataProperties' - Undocumented member.
+--
+-- 'modelApprovalStatus', 'describeModelPackageResponse_modelApprovalStatus' - The approval status of the model package.
+--
+-- 'modelMetrics', 'describeModelPackageResponse_modelMetrics' - Metrics for the model.
+--
+-- 'modelPackageDescription', 'describeModelPackageResponse_modelPackageDescription' - A brief summary of the model package.
+--
+-- 'modelPackageGroupName', 'describeModelPackageResponse_modelPackageGroupName' - If the model is a versioned model, the name of the model group that the
+-- versioned model belongs to.
+--
+-- 'modelPackageVersion', 'describeModelPackageResponse_modelPackageVersion' - The version of the model package.
+--
+-- 'samplePayloadUrl', 'describeModelPackageResponse_samplePayloadUrl' - The Amazon Simple Storage Service (Amazon S3) path where the sample
+-- payload are stored. This path points to a single gzip compressed tar
+-- archive (.tar.gz suffix).
+--
+-- 'sourceAlgorithmSpecification', 'describeModelPackageResponse_sourceAlgorithmSpecification' - Details about the algorithm that was used to create the model package.
+--
+-- 'task', 'describeModelPackageResponse_task' - The machine learning task you specified that your model package
+-- accomplishes. Common machine learning tasks include object detection and
+-- image classification.
+--
+-- 'validationSpecification', 'describeModelPackageResponse_validationSpecification' - Configurations for one or more transform jobs that SageMaker runs to
+-- test the model package.
+--
+-- 'httpStatus', 'describeModelPackageResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageName', 'describeModelPackageResponse_modelPackageName' - The name of the model package being described.
+--
+-- 'modelPackageArn', 'describeModelPackageResponse_modelPackageArn' - The Amazon Resource Name (ARN) of the model package.
+--
+-- 'creationTime', 'describeModelPackageResponse_creationTime' - A timestamp specifying when the model package was created.
+--
+-- 'modelPackageStatus', 'describeModelPackageResponse_modelPackageStatus' - The current status of the model package.
+--
+-- 'modelPackageStatusDetails', 'describeModelPackageResponse_modelPackageStatusDetails' - Details about the current status of the model package.
+newDescribeModelPackageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelPackageName'
+  Prelude.Text ->
+  -- | 'modelPackageArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelPackageStatus'
+  ModelPackageStatus ->
+  -- | 'modelPackageStatusDetails'
+  ModelPackageStatusDetails ->
+  DescribeModelPackageResponse
+newDescribeModelPackageResponse
+  pHttpStatus_
+  pModelPackageName_
+  pModelPackageArn_
+  pCreationTime_
+  pModelPackageStatus_
+  pModelPackageStatusDetails_ =
+    DescribeModelPackageResponse'
+      { additionalInferenceSpecifications =
+          Prelude.Nothing,
+        approvalDescription = Prelude.Nothing,
+        certifyForMarketplace = Prelude.Nothing,
+        createdBy = Prelude.Nothing,
+        customerMetadataProperties = Prelude.Nothing,
+        domain = Prelude.Nothing,
+        driftCheckBaselines = Prelude.Nothing,
+        inferenceSpecification = Prelude.Nothing,
+        lastModifiedBy = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        metadataProperties = Prelude.Nothing,
+        modelApprovalStatus = Prelude.Nothing,
+        modelMetrics = Prelude.Nothing,
+        modelPackageDescription = Prelude.Nothing,
+        modelPackageGroupName = Prelude.Nothing,
+        modelPackageVersion = Prelude.Nothing,
+        samplePayloadUrl = Prelude.Nothing,
+        sourceAlgorithmSpecification =
+          Prelude.Nothing,
+        task = Prelude.Nothing,
+        validationSpecification = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        modelPackageName = pModelPackageName_,
+        modelPackageArn = pModelPackageArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        modelPackageStatus = pModelPackageStatus_,
+        modelPackageStatusDetails =
+          pModelPackageStatusDetails_
+      }
+
+-- | 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.
+describeModelPackageResponse_additionalInferenceSpecifications :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition))
+describeModelPackageResponse_additionalInferenceSpecifications = Lens.lens (\DescribeModelPackageResponse' {additionalInferenceSpecifications} -> additionalInferenceSpecifications) (\s@DescribeModelPackageResponse' {} a -> s {additionalInferenceSpecifications = a} :: DescribeModelPackageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description provided for the model approval.
+describeModelPackageResponse_approvalDescription :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageResponse_approvalDescription = Lens.lens (\DescribeModelPackageResponse' {approvalDescription} -> approvalDescription) (\s@DescribeModelPackageResponse' {} a -> s {approvalDescription = a} :: DescribeModelPackageResponse)
+
+-- | Whether the model package is certified for listing on Amazon Web
+-- Services Marketplace.
+describeModelPackageResponse_certifyForMarketplace :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Bool)
+describeModelPackageResponse_certifyForMarketplace = Lens.lens (\DescribeModelPackageResponse' {certifyForMarketplace} -> certifyForMarketplace) (\s@DescribeModelPackageResponse' {} a -> s {certifyForMarketplace = a} :: DescribeModelPackageResponse)
+
+-- | Undocumented member.
+describeModelPackageResponse_createdBy :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe UserContext)
+describeModelPackageResponse_createdBy = Lens.lens (\DescribeModelPackageResponse' {createdBy} -> createdBy) (\s@DescribeModelPackageResponse' {} a -> s {createdBy = a} :: DescribeModelPackageResponse)
+
+-- | The metadata properties associated with the model package versions.
+describeModelPackageResponse_customerMetadataProperties :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeModelPackageResponse_customerMetadataProperties = Lens.lens (\DescribeModelPackageResponse' {customerMetadataProperties} -> customerMetadataProperties) (\s@DescribeModelPackageResponse' {} a -> s {customerMetadataProperties = a} :: DescribeModelPackageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The machine learning domain of the model package you specified. Common
+-- machine learning domains include computer vision and natural language
+-- processing.
+describeModelPackageResponse_domain :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageResponse_domain = Lens.lens (\DescribeModelPackageResponse' {domain} -> domain) (\s@DescribeModelPackageResponse' {} a -> s {domain = a} :: DescribeModelPackageResponse)
+
+-- | 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/.
+describeModelPackageResponse_driftCheckBaselines :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe DriftCheckBaselines)
+describeModelPackageResponse_driftCheckBaselines = Lens.lens (\DescribeModelPackageResponse' {driftCheckBaselines} -> driftCheckBaselines) (\s@DescribeModelPackageResponse' {} a -> s {driftCheckBaselines = a} :: DescribeModelPackageResponse)
+
+-- | Details about inference jobs that can be run with models based on this
+-- model package.
+describeModelPackageResponse_inferenceSpecification :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe InferenceSpecification)
+describeModelPackageResponse_inferenceSpecification = Lens.lens (\DescribeModelPackageResponse' {inferenceSpecification} -> inferenceSpecification) (\s@DescribeModelPackageResponse' {} a -> s {inferenceSpecification = a} :: DescribeModelPackageResponse)
+
+-- | Undocumented member.
+describeModelPackageResponse_lastModifiedBy :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe UserContext)
+describeModelPackageResponse_lastModifiedBy = Lens.lens (\DescribeModelPackageResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeModelPackageResponse' {} a -> s {lastModifiedBy = a} :: DescribeModelPackageResponse)
+
+-- | The last time that the model package was modified.
+describeModelPackageResponse_lastModifiedTime :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelPackageResponse_lastModifiedTime = Lens.lens (\DescribeModelPackageResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeModelPackageResponse' {} a -> s {lastModifiedTime = a} :: DescribeModelPackageResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+describeModelPackageResponse_metadataProperties :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe MetadataProperties)
+describeModelPackageResponse_metadataProperties = Lens.lens (\DescribeModelPackageResponse' {metadataProperties} -> metadataProperties) (\s@DescribeModelPackageResponse' {} a -> s {metadataProperties = a} :: DescribeModelPackageResponse)
+
+-- | The approval status of the model package.
+describeModelPackageResponse_modelApprovalStatus :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe ModelApprovalStatus)
+describeModelPackageResponse_modelApprovalStatus = Lens.lens (\DescribeModelPackageResponse' {modelApprovalStatus} -> modelApprovalStatus) (\s@DescribeModelPackageResponse' {} a -> s {modelApprovalStatus = a} :: DescribeModelPackageResponse)
+
+-- | Metrics for the model.
+describeModelPackageResponse_modelMetrics :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe ModelMetrics)
+describeModelPackageResponse_modelMetrics = Lens.lens (\DescribeModelPackageResponse' {modelMetrics} -> modelMetrics) (\s@DescribeModelPackageResponse' {} a -> s {modelMetrics = a} :: DescribeModelPackageResponse)
+
+-- | A brief summary of the model package.
+describeModelPackageResponse_modelPackageDescription :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageResponse_modelPackageDescription = Lens.lens (\DescribeModelPackageResponse' {modelPackageDescription} -> modelPackageDescription) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageDescription = a} :: DescribeModelPackageResponse)
+
+-- | If the model is a versioned model, the name of the model group that the
+-- versioned model belongs to.
+describeModelPackageResponse_modelPackageGroupName :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageResponse_modelPackageGroupName = Lens.lens (\DescribeModelPackageResponse' {modelPackageGroupName} -> modelPackageGroupName) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageGroupName = a} :: DescribeModelPackageResponse)
+
+-- | The version of the model package.
+describeModelPackageResponse_modelPackageVersion :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Natural)
+describeModelPackageResponse_modelPackageVersion = Lens.lens (\DescribeModelPackageResponse' {modelPackageVersion} -> modelPackageVersion) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageVersion = a} :: DescribeModelPackageResponse)
+
+-- | The Amazon Simple Storage Service (Amazon S3) path where the sample
+-- payload are stored. This path points to a single gzip compressed tar
+-- archive (.tar.gz suffix).
+describeModelPackageResponse_samplePayloadUrl :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageResponse_samplePayloadUrl = Lens.lens (\DescribeModelPackageResponse' {samplePayloadUrl} -> samplePayloadUrl) (\s@DescribeModelPackageResponse' {} a -> s {samplePayloadUrl = a} :: DescribeModelPackageResponse)
+
+-- | Details about the algorithm that was used to create the model package.
+describeModelPackageResponse_sourceAlgorithmSpecification :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe SourceAlgorithmSpecification)
+describeModelPackageResponse_sourceAlgorithmSpecification = Lens.lens (\DescribeModelPackageResponse' {sourceAlgorithmSpecification} -> sourceAlgorithmSpecification) (\s@DescribeModelPackageResponse' {} a -> s {sourceAlgorithmSpecification = a} :: DescribeModelPackageResponse)
+
+-- | The machine learning task you specified that your model package
+-- accomplishes. Common machine learning tasks include object detection and
+-- image classification.
+describeModelPackageResponse_task :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageResponse_task = Lens.lens (\DescribeModelPackageResponse' {task} -> task) (\s@DescribeModelPackageResponse' {} a -> s {task = a} :: DescribeModelPackageResponse)
+
+-- | Configurations for one or more transform jobs that SageMaker runs to
+-- test the model package.
+describeModelPackageResponse_validationSpecification :: Lens.Lens' DescribeModelPackageResponse (Prelude.Maybe ModelPackageValidationSpecification)
+describeModelPackageResponse_validationSpecification = Lens.lens (\DescribeModelPackageResponse' {validationSpecification} -> validationSpecification) (\s@DescribeModelPackageResponse' {} a -> s {validationSpecification = a} :: DescribeModelPackageResponse)
+
+-- | The response's http status code.
+describeModelPackageResponse_httpStatus :: Lens.Lens' DescribeModelPackageResponse Prelude.Int
+describeModelPackageResponse_httpStatus = Lens.lens (\DescribeModelPackageResponse' {httpStatus} -> httpStatus) (\s@DescribeModelPackageResponse' {} a -> s {httpStatus = a} :: DescribeModelPackageResponse)
+
+-- | The name of the model package being described.
+describeModelPackageResponse_modelPackageName :: Lens.Lens' DescribeModelPackageResponse Prelude.Text
+describeModelPackageResponse_modelPackageName = Lens.lens (\DescribeModelPackageResponse' {modelPackageName} -> modelPackageName) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageName = a} :: DescribeModelPackageResponse)
+
+-- | The Amazon Resource Name (ARN) of the model package.
+describeModelPackageResponse_modelPackageArn :: Lens.Lens' DescribeModelPackageResponse Prelude.Text
+describeModelPackageResponse_modelPackageArn = Lens.lens (\DescribeModelPackageResponse' {modelPackageArn} -> modelPackageArn) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageArn = a} :: DescribeModelPackageResponse)
+
+-- | A timestamp specifying when the model package was created.
+describeModelPackageResponse_creationTime :: Lens.Lens' DescribeModelPackageResponse Prelude.UTCTime
+describeModelPackageResponse_creationTime = Lens.lens (\DescribeModelPackageResponse' {creationTime} -> creationTime) (\s@DescribeModelPackageResponse' {} a -> s {creationTime = a} :: DescribeModelPackageResponse) Prelude.. Data._Time
+
+-- | The current status of the model package.
+describeModelPackageResponse_modelPackageStatus :: Lens.Lens' DescribeModelPackageResponse ModelPackageStatus
+describeModelPackageResponse_modelPackageStatus = Lens.lens (\DescribeModelPackageResponse' {modelPackageStatus} -> modelPackageStatus) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageStatus = a} :: DescribeModelPackageResponse)
+
+-- | Details about the current status of the model package.
+describeModelPackageResponse_modelPackageStatusDetails :: Lens.Lens' DescribeModelPackageResponse ModelPackageStatusDetails
+describeModelPackageResponse_modelPackageStatusDetails = Lens.lens (\DescribeModelPackageResponse' {modelPackageStatusDetails} -> modelPackageStatusDetails) (\s@DescribeModelPackageResponse' {} a -> s {modelPackageStatusDetails = a} :: DescribeModelPackageResponse)
+
+instance Prelude.NFData DescribeModelPackageResponse where
+  rnf DescribeModelPackageResponse' {..} =
+    Prelude.rnf additionalInferenceSpecifications
+      `Prelude.seq` Prelude.rnf approvalDescription
+      `Prelude.seq` Prelude.rnf certifyForMarketplace
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf customerMetadataProperties
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf driftCheckBaselines
+      `Prelude.seq` Prelude.rnf inferenceSpecification
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelMetrics
+      `Prelude.seq` Prelude.rnf modelPackageDescription
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageVersion
+      `Prelude.seq` Prelude.rnf samplePayloadUrl
+      `Prelude.seq` Prelude.rnf
+        sourceAlgorithmSpecification
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf
+        validationSpecification
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf
+        modelPackageName
+      `Prelude.seq` Prelude.rnf
+        modelPackageArn
+      `Prelude.seq` Prelude.rnf
+        creationTime
+      `Prelude.seq` Prelude.rnf
+        modelPackageStatus
+      `Prelude.seq` Prelude.rnf
+        modelPackageStatusDetails
diff --git a/gen/Amazonka/SageMaker/DescribeModelPackageGroup.hs b/gen/Amazonka/SageMaker/DescribeModelPackageGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelPackageGroup.hs
@@ -0,0 +1,258 @@
+{-# 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.DescribeModelPackageGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a description for the specified model group.
+module Amazonka.SageMaker.DescribeModelPackageGroup
+  ( -- * Creating a Request
+    DescribeModelPackageGroup (..),
+    newDescribeModelPackageGroup,
+
+    -- * Request Lenses
+    describeModelPackageGroup_modelPackageGroupName,
+
+    -- * Destructuring the Response
+    DescribeModelPackageGroupResponse (..),
+    newDescribeModelPackageGroupResponse,
+
+    -- * Response Lenses
+    describeModelPackageGroupResponse_modelPackageGroupDescription,
+    describeModelPackageGroupResponse_httpStatus,
+    describeModelPackageGroupResponse_modelPackageGroupName,
+    describeModelPackageGroupResponse_modelPackageGroupArn,
+    describeModelPackageGroupResponse_creationTime,
+    describeModelPackageGroupResponse_createdBy,
+    describeModelPackageGroupResponse_modelPackageGroupStatus,
+  )
+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:/ 'newDescribeModelPackageGroup' smart constructor.
+data DescribeModelPackageGroup = DescribeModelPackageGroup'
+  { -- | The name of gthe model group to describe.
+    modelPackageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelPackageGroup' 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:
+--
+-- 'modelPackageGroupName', 'describeModelPackageGroup_modelPackageGroupName' - The name of gthe model group to describe.
+newDescribeModelPackageGroup ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  DescribeModelPackageGroup
+newDescribeModelPackageGroup pModelPackageGroupName_ =
+  DescribeModelPackageGroup'
+    { modelPackageGroupName =
+        pModelPackageGroupName_
+    }
+
+-- | The name of gthe model group to describe.
+describeModelPackageGroup_modelPackageGroupName :: Lens.Lens' DescribeModelPackageGroup Prelude.Text
+describeModelPackageGroup_modelPackageGroupName = Lens.lens (\DescribeModelPackageGroup' {modelPackageGroupName} -> modelPackageGroupName) (\s@DescribeModelPackageGroup' {} a -> s {modelPackageGroupName = a} :: DescribeModelPackageGroup)
+
+instance Core.AWSRequest DescribeModelPackageGroup where
+  type
+    AWSResponse DescribeModelPackageGroup =
+      DescribeModelPackageGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelPackageGroupResponse'
+            Prelude.<$> (x Data..?> "ModelPackageGroupDescription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelPackageGroupName")
+            Prelude.<*> (x Data..:> "ModelPackageGroupArn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "CreatedBy")
+            Prelude.<*> (x Data..:> "ModelPackageGroupStatus")
+      )
+
+instance Prelude.Hashable DescribeModelPackageGroup where
+  hashWithSalt _salt DescribeModelPackageGroup' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageGroupName
+
+instance Prelude.NFData DescribeModelPackageGroup where
+  rnf DescribeModelPackageGroup' {..} =
+    Prelude.rnf modelPackageGroupName
+
+instance Data.ToHeaders DescribeModelPackageGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelPackageGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModelPackageGroup where
+  toJSON DescribeModelPackageGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ModelPackageGroupName"
+                  Data..= modelPackageGroupName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeModelPackageGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModelPackageGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelPackageGroupResponse' smart constructor.
+data DescribeModelPackageGroupResponse = DescribeModelPackageGroupResponse'
+  { -- | A description of the model group.
+    modelPackageGroupDescription :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the model group.
+    modelPackageGroupName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model group.
+    modelPackageGroupArn :: Prelude.Text,
+    -- | The time that the model group was created.
+    creationTime :: Data.POSIX,
+    createdBy :: UserContext,
+    -- | The status of the model group.
+    modelPackageGroupStatus :: ModelPackageGroupStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelPackageGroupResponse' 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:
+--
+-- 'modelPackageGroupDescription', 'describeModelPackageGroupResponse_modelPackageGroupDescription' - A description of the model group.
+--
+-- 'httpStatus', 'describeModelPackageGroupResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageGroupName', 'describeModelPackageGroupResponse_modelPackageGroupName' - The name of the model group.
+--
+-- 'modelPackageGroupArn', 'describeModelPackageGroupResponse_modelPackageGroupArn' - The Amazon Resource Name (ARN) of the model group.
+--
+-- 'creationTime', 'describeModelPackageGroupResponse_creationTime' - The time that the model group was created.
+--
+-- 'createdBy', 'describeModelPackageGroupResponse_createdBy' - Undocumented member.
+--
+-- 'modelPackageGroupStatus', 'describeModelPackageGroupResponse_modelPackageGroupStatus' - The status of the model group.
+newDescribeModelPackageGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  -- | 'modelPackageGroupArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'createdBy'
+  UserContext ->
+  -- | 'modelPackageGroupStatus'
+  ModelPackageGroupStatus ->
+  DescribeModelPackageGroupResponse
+newDescribeModelPackageGroupResponse
+  pHttpStatus_
+  pModelPackageGroupName_
+  pModelPackageGroupArn_
+  pCreationTime_
+  pCreatedBy_
+  pModelPackageGroupStatus_ =
+    DescribeModelPackageGroupResponse'
+      { modelPackageGroupDescription =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        modelPackageGroupName =
+          pModelPackageGroupName_,
+        modelPackageGroupArn =
+          pModelPackageGroupArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        createdBy = pCreatedBy_,
+        modelPackageGroupStatus =
+          pModelPackageGroupStatus_
+      }
+
+-- | A description of the model group.
+describeModelPackageGroupResponse_modelPackageGroupDescription :: Lens.Lens' DescribeModelPackageGroupResponse (Prelude.Maybe Prelude.Text)
+describeModelPackageGroupResponse_modelPackageGroupDescription = Lens.lens (\DescribeModelPackageGroupResponse' {modelPackageGroupDescription} -> modelPackageGroupDescription) (\s@DescribeModelPackageGroupResponse' {} a -> s {modelPackageGroupDescription = a} :: DescribeModelPackageGroupResponse)
+
+-- | The response's http status code.
+describeModelPackageGroupResponse_httpStatus :: Lens.Lens' DescribeModelPackageGroupResponse Prelude.Int
+describeModelPackageGroupResponse_httpStatus = Lens.lens (\DescribeModelPackageGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeModelPackageGroupResponse' {} a -> s {httpStatus = a} :: DescribeModelPackageGroupResponse)
+
+-- | The name of the model group.
+describeModelPackageGroupResponse_modelPackageGroupName :: Lens.Lens' DescribeModelPackageGroupResponse Prelude.Text
+describeModelPackageGroupResponse_modelPackageGroupName = Lens.lens (\DescribeModelPackageGroupResponse' {modelPackageGroupName} -> modelPackageGroupName) (\s@DescribeModelPackageGroupResponse' {} a -> s {modelPackageGroupName = a} :: DescribeModelPackageGroupResponse)
+
+-- | The Amazon Resource Name (ARN) of the model group.
+describeModelPackageGroupResponse_modelPackageGroupArn :: Lens.Lens' DescribeModelPackageGroupResponse Prelude.Text
+describeModelPackageGroupResponse_modelPackageGroupArn = Lens.lens (\DescribeModelPackageGroupResponse' {modelPackageGroupArn} -> modelPackageGroupArn) (\s@DescribeModelPackageGroupResponse' {} a -> s {modelPackageGroupArn = a} :: DescribeModelPackageGroupResponse)
+
+-- | The time that the model group was created.
+describeModelPackageGroupResponse_creationTime :: Lens.Lens' DescribeModelPackageGroupResponse Prelude.UTCTime
+describeModelPackageGroupResponse_creationTime = Lens.lens (\DescribeModelPackageGroupResponse' {creationTime} -> creationTime) (\s@DescribeModelPackageGroupResponse' {} a -> s {creationTime = a} :: DescribeModelPackageGroupResponse) Prelude.. Data._Time
+
+-- | Undocumented member.
+describeModelPackageGroupResponse_createdBy :: Lens.Lens' DescribeModelPackageGroupResponse UserContext
+describeModelPackageGroupResponse_createdBy = Lens.lens (\DescribeModelPackageGroupResponse' {createdBy} -> createdBy) (\s@DescribeModelPackageGroupResponse' {} a -> s {createdBy = a} :: DescribeModelPackageGroupResponse)
+
+-- | The status of the model group.
+describeModelPackageGroupResponse_modelPackageGroupStatus :: Lens.Lens' DescribeModelPackageGroupResponse ModelPackageGroupStatus
+describeModelPackageGroupResponse_modelPackageGroupStatus = Lens.lens (\DescribeModelPackageGroupResponse' {modelPackageGroupStatus} -> modelPackageGroupStatus) (\s@DescribeModelPackageGroupResponse' {} a -> s {modelPackageGroupStatus = a} :: DescribeModelPackageGroupResponse)
+
+instance
+  Prelude.NFData
+    DescribeModelPackageGroupResponse
+  where
+  rnf DescribeModelPackageGroupResponse' {..} =
+    Prelude.rnf modelPackageGroupDescription
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageGroupArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf modelPackageGroupStatus
diff --git a/gen/Amazonka/SageMaker/DescribeModelQualityJobDefinition.hs b/gen/Amazonka/SageMaker/DescribeModelQualityJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeModelQualityJobDefinition.hs
@@ -0,0 +1,363 @@
+{-# 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.DescribeModelQualityJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of a model quality job definition.
+module Amazonka.SageMaker.DescribeModelQualityJobDefinition
+  ( -- * Creating a Request
+    DescribeModelQualityJobDefinition (..),
+    newDescribeModelQualityJobDefinition,
+
+    -- * Request Lenses
+    describeModelQualityJobDefinition_jobDefinitionName,
+
+    -- * Destructuring the Response
+    DescribeModelQualityJobDefinitionResponse (..),
+    newDescribeModelQualityJobDefinitionResponse,
+
+    -- * Response Lenses
+    describeModelQualityJobDefinitionResponse_modelQualityBaselineConfig,
+    describeModelQualityJobDefinitionResponse_networkConfig,
+    describeModelQualityJobDefinitionResponse_stoppingCondition,
+    describeModelQualityJobDefinitionResponse_httpStatus,
+    describeModelQualityJobDefinitionResponse_jobDefinitionArn,
+    describeModelQualityJobDefinitionResponse_jobDefinitionName,
+    describeModelQualityJobDefinitionResponse_creationTime,
+    describeModelQualityJobDefinitionResponse_modelQualityAppSpecification,
+    describeModelQualityJobDefinitionResponse_modelQualityJobInput,
+    describeModelQualityJobDefinitionResponse_modelQualityJobOutputConfig,
+    describeModelQualityJobDefinitionResponse_jobResources,
+    describeModelQualityJobDefinitionResponse_roleArn,
+  )
+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:/ 'newDescribeModelQualityJobDefinition' smart constructor.
+data DescribeModelQualityJobDefinition = DescribeModelQualityJobDefinition'
+  { -- | The name of the model quality job. The name must be unique within an
+    -- Amazon Web Services Region in the Amazon Web Services account.
+    jobDefinitionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelQualityJobDefinition' 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:
+--
+-- 'jobDefinitionName', 'describeModelQualityJobDefinition_jobDefinitionName' - The name of the model quality job. The name must be unique within an
+-- Amazon Web Services Region in the Amazon Web Services account.
+newDescribeModelQualityJobDefinition ::
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  DescribeModelQualityJobDefinition
+newDescribeModelQualityJobDefinition
+  pJobDefinitionName_ =
+    DescribeModelQualityJobDefinition'
+      { jobDefinitionName =
+          pJobDefinitionName_
+      }
+
+-- | The name of the model quality job. The name must be unique within an
+-- Amazon Web Services Region in the Amazon Web Services account.
+describeModelQualityJobDefinition_jobDefinitionName :: Lens.Lens' DescribeModelQualityJobDefinition Prelude.Text
+describeModelQualityJobDefinition_jobDefinitionName = Lens.lens (\DescribeModelQualityJobDefinition' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeModelQualityJobDefinition' {} a -> s {jobDefinitionName = a} :: DescribeModelQualityJobDefinition)
+
+instance
+  Core.AWSRequest
+    DescribeModelQualityJobDefinition
+  where
+  type
+    AWSResponse DescribeModelQualityJobDefinition =
+      DescribeModelQualityJobDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelQualityJobDefinitionResponse'
+            Prelude.<$> (x Data..?> "ModelQualityBaselineConfig")
+            Prelude.<*> (x Data..?> "NetworkConfig")
+            Prelude.<*> (x Data..?> "StoppingCondition")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobDefinitionArn")
+            Prelude.<*> (x Data..:> "JobDefinitionName")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ModelQualityAppSpecification")
+            Prelude.<*> (x Data..:> "ModelQualityJobInput")
+            Prelude.<*> (x Data..:> "ModelQualityJobOutputConfig")
+            Prelude.<*> (x Data..:> "JobResources")
+            Prelude.<*> (x Data..:> "RoleArn")
+      )
+
+instance
+  Prelude.Hashable
+    DescribeModelQualityJobDefinition
+  where
+  hashWithSalt
+    _salt
+    DescribeModelQualityJobDefinition' {..} =
+      _salt `Prelude.hashWithSalt` jobDefinitionName
+
+instance
+  Prelude.NFData
+    DescribeModelQualityJobDefinition
+  where
+  rnf DescribeModelQualityJobDefinition' {..} =
+    Prelude.rnf jobDefinitionName
+
+instance
+  Data.ToHeaders
+    DescribeModelQualityJobDefinition
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeModelQualityJobDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribeModelQualityJobDefinition
+  where
+  toJSON DescribeModelQualityJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("JobDefinitionName" Data..= jobDefinitionName)
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribeModelQualityJobDefinition
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeModelQualityJobDefinition
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelQualityJobDefinitionResponse' smart constructor.
+data DescribeModelQualityJobDefinitionResponse = DescribeModelQualityJobDefinitionResponse'
+  { -- | The baseline configuration for a model quality job.
+    modelQualityBaselineConfig :: Prelude.Maybe ModelQualityBaselineConfig,
+    -- | Networking options for a model quality job.
+    networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model quality job.
+    jobDefinitionArn :: Prelude.Text,
+    -- | The name of the quality job definition. The name must be unique within
+    -- an Amazon Web Services Region in the Amazon Web Services account.
+    jobDefinitionName :: Prelude.Text,
+    -- | The time at which the model quality job was created.
+    creationTime :: Data.POSIX,
+    -- | Configures the model quality job to run a specified Docker container
+    -- image.
+    modelQualityAppSpecification :: ModelQualityAppSpecification,
+    -- | Inputs for the model quality job.
+    modelQualityJobInput :: ModelQualityJobInput,
+    modelQualityJobOutputConfig :: MonitoringOutputConfig,
+    jobResources :: MonitoringResources,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelQualityJobDefinitionResponse' 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:
+--
+-- 'modelQualityBaselineConfig', 'describeModelQualityJobDefinitionResponse_modelQualityBaselineConfig' - The baseline configuration for a model quality job.
+--
+-- 'networkConfig', 'describeModelQualityJobDefinitionResponse_networkConfig' - Networking options for a model quality job.
+--
+-- 'stoppingCondition', 'describeModelQualityJobDefinitionResponse_stoppingCondition' - Undocumented member.
+--
+-- 'httpStatus', 'describeModelQualityJobDefinitionResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionArn', 'describeModelQualityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model quality job.
+--
+-- 'jobDefinitionName', 'describeModelQualityJobDefinitionResponse_jobDefinitionName' - The name of the quality job definition. The name must be unique within
+-- an Amazon Web Services Region in the Amazon Web Services account.
+--
+-- 'creationTime', 'describeModelQualityJobDefinitionResponse_creationTime' - The time at which the model quality job was created.
+--
+-- 'modelQualityAppSpecification', 'describeModelQualityJobDefinitionResponse_modelQualityAppSpecification' - Configures the model quality job to run a specified Docker container
+-- image.
+--
+-- 'modelQualityJobInput', 'describeModelQualityJobDefinitionResponse_modelQualityJobInput' - Inputs for the model quality job.
+--
+-- 'modelQualityJobOutputConfig', 'describeModelQualityJobDefinitionResponse_modelQualityJobOutputConfig' - Undocumented member.
+--
+-- 'jobResources', 'describeModelQualityJobDefinitionResponse_jobResources' - Undocumented member.
+--
+-- 'roleArn', 'describeModelQualityJobDefinitionResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newDescribeModelQualityJobDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobDefinitionArn'
+  Prelude.Text ->
+  -- | 'jobDefinitionName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelQualityAppSpecification'
+  ModelQualityAppSpecification ->
+  -- | 'modelQualityJobInput'
+  ModelQualityJobInput ->
+  -- | 'modelQualityJobOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'jobResources'
+  MonitoringResources ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  DescribeModelQualityJobDefinitionResponse
+newDescribeModelQualityJobDefinitionResponse
+  pHttpStatus_
+  pJobDefinitionArn_
+  pJobDefinitionName_
+  pCreationTime_
+  pModelQualityAppSpecification_
+  pModelQualityJobInput_
+  pModelQualityJobOutputConfig_
+  pJobResources_
+  pRoleArn_ =
+    DescribeModelQualityJobDefinitionResponse'
+      { modelQualityBaselineConfig =
+          Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobDefinitionArn =
+          pJobDefinitionArn_,
+        jobDefinitionName =
+          pJobDefinitionName_,
+        creationTime =
+          Data._Time
+            Lens.# pCreationTime_,
+        modelQualityAppSpecification =
+          pModelQualityAppSpecification_,
+        modelQualityJobInput =
+          pModelQualityJobInput_,
+        modelQualityJobOutputConfig =
+          pModelQualityJobOutputConfig_,
+        jobResources = pJobResources_,
+        roleArn = pRoleArn_
+      }
+
+-- | The baseline configuration for a model quality job.
+describeModelQualityJobDefinitionResponse_modelQualityBaselineConfig :: Lens.Lens' DescribeModelQualityJobDefinitionResponse (Prelude.Maybe ModelQualityBaselineConfig)
+describeModelQualityJobDefinitionResponse_modelQualityBaselineConfig = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {modelQualityBaselineConfig} -> modelQualityBaselineConfig) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {modelQualityBaselineConfig = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | Networking options for a model quality job.
+describeModelQualityJobDefinitionResponse_networkConfig :: Lens.Lens' DescribeModelQualityJobDefinitionResponse (Prelude.Maybe MonitoringNetworkConfig)
+describeModelQualityJobDefinitionResponse_networkConfig = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {networkConfig} -> networkConfig) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {networkConfig = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelQualityJobDefinitionResponse_stoppingCondition :: Lens.Lens' DescribeModelQualityJobDefinitionResponse (Prelude.Maybe MonitoringStoppingCondition)
+describeModelQualityJobDefinitionResponse_stoppingCondition = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {stoppingCondition = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | The response's http status code.
+describeModelQualityJobDefinitionResponse_httpStatus :: Lens.Lens' DescribeModelQualityJobDefinitionResponse Prelude.Int
+describeModelQualityJobDefinitionResponse_httpStatus = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {httpStatus} -> httpStatus) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {httpStatus = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of the model quality job.
+describeModelQualityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' DescribeModelQualityJobDefinitionResponse Prelude.Text
+describeModelQualityJobDefinitionResponse_jobDefinitionArn = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {jobDefinitionArn} -> jobDefinitionArn) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {jobDefinitionArn = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | The name of the quality job definition. The name must be unique within
+-- an Amazon Web Services Region in the Amazon Web Services account.
+describeModelQualityJobDefinitionResponse_jobDefinitionName :: Lens.Lens' DescribeModelQualityJobDefinitionResponse Prelude.Text
+describeModelQualityJobDefinitionResponse_jobDefinitionName = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {jobDefinitionName} -> jobDefinitionName) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {jobDefinitionName = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | The time at which the model quality job was created.
+describeModelQualityJobDefinitionResponse_creationTime :: Lens.Lens' DescribeModelQualityJobDefinitionResponse Prelude.UTCTime
+describeModelQualityJobDefinitionResponse_creationTime = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {creationTime} -> creationTime) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {creationTime = a} :: DescribeModelQualityJobDefinitionResponse) Prelude.. Data._Time
+
+-- | Configures the model quality job to run a specified Docker container
+-- image.
+describeModelQualityJobDefinitionResponse_modelQualityAppSpecification :: Lens.Lens' DescribeModelQualityJobDefinitionResponse ModelQualityAppSpecification
+describeModelQualityJobDefinitionResponse_modelQualityAppSpecification = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {modelQualityAppSpecification} -> modelQualityAppSpecification) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {modelQualityAppSpecification = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | Inputs for the model quality job.
+describeModelQualityJobDefinitionResponse_modelQualityJobInput :: Lens.Lens' DescribeModelQualityJobDefinitionResponse ModelQualityJobInput
+describeModelQualityJobDefinitionResponse_modelQualityJobInput = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {modelQualityJobInput} -> modelQualityJobInput) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {modelQualityJobInput = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelQualityJobDefinitionResponse_modelQualityJobOutputConfig :: Lens.Lens' DescribeModelQualityJobDefinitionResponse MonitoringOutputConfig
+describeModelQualityJobDefinitionResponse_modelQualityJobOutputConfig = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {modelQualityJobOutputConfig} -> modelQualityJobOutputConfig) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {modelQualityJobOutputConfig = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | Undocumented member.
+describeModelQualityJobDefinitionResponse_jobResources :: Lens.Lens' DescribeModelQualityJobDefinitionResponse MonitoringResources
+describeModelQualityJobDefinitionResponse_jobResources = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {jobResources} -> jobResources) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {jobResources = a} :: DescribeModelQualityJobDefinitionResponse)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+describeModelQualityJobDefinitionResponse_roleArn :: Lens.Lens' DescribeModelQualityJobDefinitionResponse Prelude.Text
+describeModelQualityJobDefinitionResponse_roleArn = Lens.lens (\DescribeModelQualityJobDefinitionResponse' {roleArn} -> roleArn) (\s@DescribeModelQualityJobDefinitionResponse' {} a -> s {roleArn = a} :: DescribeModelQualityJobDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DescribeModelQualityJobDefinitionResponse
+  where
+  rnf DescribeModelQualityJobDefinitionResponse' {..} =
+    Prelude.rnf modelQualityBaselineConfig
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionArn
+      `Prelude.seq` Prelude.rnf jobDefinitionName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf modelQualityAppSpecification
+      `Prelude.seq` Prelude.rnf modelQualityJobInput
+      `Prelude.seq` Prelude.rnf modelQualityJobOutputConfig
+      `Prelude.seq` Prelude.rnf jobResources
+      `Prelude.seq` Prelude.rnf roleArn
diff --git a/gen/Amazonka/SageMaker/DescribeMonitoringSchedule.hs b/gen/Amazonka/SageMaker/DescribeMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeMonitoringSchedule.hs
@@ -0,0 +1,353 @@
+{-# 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.DescribeMonitoringSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the schedule for a monitoring job.
+module Amazonka.SageMaker.DescribeMonitoringSchedule
+  ( -- * Creating a Request
+    DescribeMonitoringSchedule (..),
+    newDescribeMonitoringSchedule,
+
+    -- * Request Lenses
+    describeMonitoringSchedule_monitoringScheduleName,
+
+    -- * Destructuring the Response
+    DescribeMonitoringScheduleResponse (..),
+    newDescribeMonitoringScheduleResponse,
+
+    -- * Response Lenses
+    describeMonitoringScheduleResponse_endpointName,
+    describeMonitoringScheduleResponse_failureReason,
+    describeMonitoringScheduleResponse_lastMonitoringExecutionSummary,
+    describeMonitoringScheduleResponse_monitoringType,
+    describeMonitoringScheduleResponse_httpStatus,
+    describeMonitoringScheduleResponse_monitoringScheduleArn,
+    describeMonitoringScheduleResponse_monitoringScheduleName,
+    describeMonitoringScheduleResponse_monitoringScheduleStatus,
+    describeMonitoringScheduleResponse_creationTime,
+    describeMonitoringScheduleResponse_lastModifiedTime,
+    describeMonitoringScheduleResponse_monitoringScheduleConfig,
+  )
+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:/ 'newDescribeMonitoringSchedule' smart constructor.
+data DescribeMonitoringSchedule = DescribeMonitoringSchedule'
+  { -- | Name of a previously created monitoring schedule.
+    monitoringScheduleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeMonitoringSchedule' 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:
+--
+-- 'monitoringScheduleName', 'describeMonitoringSchedule_monitoringScheduleName' - Name of a previously created monitoring schedule.
+newDescribeMonitoringSchedule ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  DescribeMonitoringSchedule
+newDescribeMonitoringSchedule
+  pMonitoringScheduleName_ =
+    DescribeMonitoringSchedule'
+      { monitoringScheduleName =
+          pMonitoringScheduleName_
+      }
+
+-- | Name of a previously created monitoring schedule.
+describeMonitoringSchedule_monitoringScheduleName :: Lens.Lens' DescribeMonitoringSchedule Prelude.Text
+describeMonitoringSchedule_monitoringScheduleName = Lens.lens (\DescribeMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@DescribeMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: DescribeMonitoringSchedule)
+
+instance Core.AWSRequest DescribeMonitoringSchedule where
+  type
+    AWSResponse DescribeMonitoringSchedule =
+      DescribeMonitoringScheduleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeMonitoringScheduleResponse'
+            Prelude.<$> (x Data..?> "EndpointName")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LastMonitoringExecutionSummary")
+            Prelude.<*> (x Data..?> "MonitoringType")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "MonitoringScheduleArn")
+            Prelude.<*> (x Data..:> "MonitoringScheduleName")
+            Prelude.<*> (x Data..:> "MonitoringScheduleStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "LastModifiedTime")
+            Prelude.<*> (x Data..:> "MonitoringScheduleConfig")
+      )
+
+instance Prelude.Hashable DescribeMonitoringSchedule where
+  hashWithSalt _salt DescribeMonitoringSchedule' {..} =
+    _salt `Prelude.hashWithSalt` monitoringScheduleName
+
+instance Prelude.NFData DescribeMonitoringSchedule where
+  rnf DescribeMonitoringSchedule' {..} =
+    Prelude.rnf monitoringScheduleName
+
+instance Data.ToHeaders DescribeMonitoringSchedule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeMonitoringSchedule" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeMonitoringSchedule where
+  toJSON DescribeMonitoringSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeMonitoringSchedule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeMonitoringSchedule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeMonitoringScheduleResponse' smart constructor.
+data DescribeMonitoringScheduleResponse = DescribeMonitoringScheduleResponse'
+  { -- | The name of the endpoint for the monitoring job.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | A string, up to one KB in size, that contains the reason a monitoring
+    -- job failed, if it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Describes metadata on the last execution to run, if there was one.
+    lastMonitoringExecutionSummary :: Prelude.Maybe MonitoringExecutionSummary,
+    -- | The type of the monitoring job that this schedule runs. This is one of
+    -- the following values.
+    --
+    -- -   @DATA_QUALITY@ - The schedule is for a data quality monitoring job.
+    --
+    -- -   @MODEL_QUALITY@ - The schedule is for a model quality monitoring
+    --     job.
+    --
+    -- -   @MODEL_BIAS@ - The schedule is for a bias monitoring job.
+    --
+    -- -   @MODEL_EXPLAINABILITY@ - The schedule is for an explainability
+    --     monitoring job.
+    monitoringType :: Prelude.Maybe MonitoringType,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the monitoring schedule.
+    monitoringScheduleArn :: Prelude.Text,
+    -- | Name of the monitoring schedule.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The status of an monitoring job.
+    monitoringScheduleStatus :: ScheduleStatus,
+    -- | The time at which the monitoring job was created.
+    creationTime :: Data.POSIX,
+    -- | The time at which the monitoring job was last modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The configuration object that specifies the monitoring schedule and
+    -- defines the monitoring job.
+    monitoringScheduleConfig :: MonitoringScheduleConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeMonitoringScheduleResponse' 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:
+--
+-- 'endpointName', 'describeMonitoringScheduleResponse_endpointName' - The name of the endpoint for the monitoring job.
+--
+-- 'failureReason', 'describeMonitoringScheduleResponse_failureReason' - A string, up to one KB in size, that contains the reason a monitoring
+-- job failed, if it failed.
+--
+-- 'lastMonitoringExecutionSummary', 'describeMonitoringScheduleResponse_lastMonitoringExecutionSummary' - Describes metadata on the last execution to run, if there was one.
+--
+-- 'monitoringType', 'describeMonitoringScheduleResponse_monitoringType' - The type of the monitoring job that this schedule runs. This is one of
+-- the following values.
+--
+-- -   @DATA_QUALITY@ - The schedule is for a data quality monitoring job.
+--
+-- -   @MODEL_QUALITY@ - The schedule is for a model quality monitoring
+--     job.
+--
+-- -   @MODEL_BIAS@ - The schedule is for a bias monitoring job.
+--
+-- -   @MODEL_EXPLAINABILITY@ - The schedule is for an explainability
+--     monitoring job.
+--
+-- 'httpStatus', 'describeMonitoringScheduleResponse_httpStatus' - The response's http status code.
+--
+-- 'monitoringScheduleArn', 'describeMonitoringScheduleResponse_monitoringScheduleArn' - The Amazon Resource Name (ARN) of the monitoring schedule.
+--
+-- 'monitoringScheduleName', 'describeMonitoringScheduleResponse_monitoringScheduleName' - Name of the monitoring schedule.
+--
+-- 'monitoringScheduleStatus', 'describeMonitoringScheduleResponse_monitoringScheduleStatus' - The status of an monitoring job.
+--
+-- 'creationTime', 'describeMonitoringScheduleResponse_creationTime' - The time at which the monitoring job was created.
+--
+-- 'lastModifiedTime', 'describeMonitoringScheduleResponse_lastModifiedTime' - The time at which the monitoring job was last modified.
+--
+-- 'monitoringScheduleConfig', 'describeMonitoringScheduleResponse_monitoringScheduleConfig' - The configuration object that specifies the monitoring schedule and
+-- defines the monitoring job.
+newDescribeMonitoringScheduleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'monitoringScheduleArn'
+  Prelude.Text ->
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'monitoringScheduleStatus'
+  ScheduleStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'monitoringScheduleConfig'
+  MonitoringScheduleConfig ->
+  DescribeMonitoringScheduleResponse
+newDescribeMonitoringScheduleResponse
+  pHttpStatus_
+  pMonitoringScheduleArn_
+  pMonitoringScheduleName_
+  pMonitoringScheduleStatus_
+  pCreationTime_
+  pLastModifiedTime_
+  pMonitoringScheduleConfig_ =
+    DescribeMonitoringScheduleResponse'
+      { endpointName =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        lastMonitoringExecutionSummary =
+          Prelude.Nothing,
+        monitoringType = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        monitoringScheduleArn =
+          pMonitoringScheduleArn_,
+        monitoringScheduleName =
+          pMonitoringScheduleName_,
+        monitoringScheduleStatus =
+          pMonitoringScheduleStatus_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        monitoringScheduleConfig =
+          pMonitoringScheduleConfig_
+      }
+
+-- | The name of the endpoint for the monitoring job.
+describeMonitoringScheduleResponse_endpointName :: Lens.Lens' DescribeMonitoringScheduleResponse (Prelude.Maybe Prelude.Text)
+describeMonitoringScheduleResponse_endpointName = Lens.lens (\DescribeMonitoringScheduleResponse' {endpointName} -> endpointName) (\s@DescribeMonitoringScheduleResponse' {} a -> s {endpointName = a} :: DescribeMonitoringScheduleResponse)
+
+-- | A string, up to one KB in size, that contains the reason a monitoring
+-- job failed, if it failed.
+describeMonitoringScheduleResponse_failureReason :: Lens.Lens' DescribeMonitoringScheduleResponse (Prelude.Maybe Prelude.Text)
+describeMonitoringScheduleResponse_failureReason = Lens.lens (\DescribeMonitoringScheduleResponse' {failureReason} -> failureReason) (\s@DescribeMonitoringScheduleResponse' {} a -> s {failureReason = a} :: DescribeMonitoringScheduleResponse)
+
+-- | Describes metadata on the last execution to run, if there was one.
+describeMonitoringScheduleResponse_lastMonitoringExecutionSummary :: Lens.Lens' DescribeMonitoringScheduleResponse (Prelude.Maybe MonitoringExecutionSummary)
+describeMonitoringScheduleResponse_lastMonitoringExecutionSummary = Lens.lens (\DescribeMonitoringScheduleResponse' {lastMonitoringExecutionSummary} -> lastMonitoringExecutionSummary) (\s@DescribeMonitoringScheduleResponse' {} a -> s {lastMonitoringExecutionSummary = a} :: DescribeMonitoringScheduleResponse)
+
+-- | The type of the monitoring job that this schedule runs. This is one of
+-- the following values.
+--
+-- -   @DATA_QUALITY@ - The schedule is for a data quality monitoring job.
+--
+-- -   @MODEL_QUALITY@ - The schedule is for a model quality monitoring
+--     job.
+--
+-- -   @MODEL_BIAS@ - The schedule is for a bias monitoring job.
+--
+-- -   @MODEL_EXPLAINABILITY@ - The schedule is for an explainability
+--     monitoring job.
+describeMonitoringScheduleResponse_monitoringType :: Lens.Lens' DescribeMonitoringScheduleResponse (Prelude.Maybe MonitoringType)
+describeMonitoringScheduleResponse_monitoringType = Lens.lens (\DescribeMonitoringScheduleResponse' {monitoringType} -> monitoringType) (\s@DescribeMonitoringScheduleResponse' {} a -> s {monitoringType = a} :: DescribeMonitoringScheduleResponse)
+
+-- | The response's http status code.
+describeMonitoringScheduleResponse_httpStatus :: Lens.Lens' DescribeMonitoringScheduleResponse Prelude.Int
+describeMonitoringScheduleResponse_httpStatus = Lens.lens (\DescribeMonitoringScheduleResponse' {httpStatus} -> httpStatus) (\s@DescribeMonitoringScheduleResponse' {} a -> s {httpStatus = a} :: DescribeMonitoringScheduleResponse)
+
+-- | The Amazon Resource Name (ARN) of the monitoring schedule.
+describeMonitoringScheduleResponse_monitoringScheduleArn :: Lens.Lens' DescribeMonitoringScheduleResponse Prelude.Text
+describeMonitoringScheduleResponse_monitoringScheduleArn = Lens.lens (\DescribeMonitoringScheduleResponse' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@DescribeMonitoringScheduleResponse' {} a -> s {monitoringScheduleArn = a} :: DescribeMonitoringScheduleResponse)
+
+-- | Name of the monitoring schedule.
+describeMonitoringScheduleResponse_monitoringScheduleName :: Lens.Lens' DescribeMonitoringScheduleResponse Prelude.Text
+describeMonitoringScheduleResponse_monitoringScheduleName = Lens.lens (\DescribeMonitoringScheduleResponse' {monitoringScheduleName} -> monitoringScheduleName) (\s@DescribeMonitoringScheduleResponse' {} a -> s {monitoringScheduleName = a} :: DescribeMonitoringScheduleResponse)
+
+-- | The status of an monitoring job.
+describeMonitoringScheduleResponse_monitoringScheduleStatus :: Lens.Lens' DescribeMonitoringScheduleResponse ScheduleStatus
+describeMonitoringScheduleResponse_monitoringScheduleStatus = Lens.lens (\DescribeMonitoringScheduleResponse' {monitoringScheduleStatus} -> monitoringScheduleStatus) (\s@DescribeMonitoringScheduleResponse' {} a -> s {monitoringScheduleStatus = a} :: DescribeMonitoringScheduleResponse)
+
+-- | The time at which the monitoring job was created.
+describeMonitoringScheduleResponse_creationTime :: Lens.Lens' DescribeMonitoringScheduleResponse Prelude.UTCTime
+describeMonitoringScheduleResponse_creationTime = Lens.lens (\DescribeMonitoringScheduleResponse' {creationTime} -> creationTime) (\s@DescribeMonitoringScheduleResponse' {} a -> s {creationTime = a} :: DescribeMonitoringScheduleResponse) Prelude.. Data._Time
+
+-- | The time at which the monitoring job was last modified.
+describeMonitoringScheduleResponse_lastModifiedTime :: Lens.Lens' DescribeMonitoringScheduleResponse Prelude.UTCTime
+describeMonitoringScheduleResponse_lastModifiedTime = Lens.lens (\DescribeMonitoringScheduleResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeMonitoringScheduleResponse' {} a -> s {lastModifiedTime = a} :: DescribeMonitoringScheduleResponse) Prelude.. Data._Time
+
+-- | The configuration object that specifies the monitoring schedule and
+-- defines the monitoring job.
+describeMonitoringScheduleResponse_monitoringScheduleConfig :: Lens.Lens' DescribeMonitoringScheduleResponse MonitoringScheduleConfig
+describeMonitoringScheduleResponse_monitoringScheduleConfig = Lens.lens (\DescribeMonitoringScheduleResponse' {monitoringScheduleConfig} -> monitoringScheduleConfig) (\s@DescribeMonitoringScheduleResponse' {} a -> s {monitoringScheduleConfig = a} :: DescribeMonitoringScheduleResponse)
+
+instance
+  Prelude.NFData
+    DescribeMonitoringScheduleResponse
+  where
+  rnf DescribeMonitoringScheduleResponse' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastMonitoringExecutionSummary
+      `Prelude.seq` Prelude.rnf monitoringType
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringScheduleStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf monitoringScheduleConfig
diff --git a/gen/Amazonka/SageMaker/DescribeNotebookInstance.hs b/gen/Amazonka/SageMaker/DescribeNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeNotebookInstance.hs
@@ -0,0 +1,558 @@
+{-# 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.DescribeNotebookInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a notebook instance.
+module Amazonka.SageMaker.DescribeNotebookInstance
+  ( -- * Creating a Request
+    DescribeNotebookInstance (..),
+    newDescribeNotebookInstance,
+
+    -- * Request Lenses
+    describeNotebookInstance_notebookInstanceName,
+
+    -- * Destructuring the Response
+    DescribeNotebookInstanceResponse (..),
+    newDescribeNotebookInstanceResponse,
+
+    -- * Response Lenses
+    describeNotebookInstanceResponse_acceleratorTypes,
+    describeNotebookInstanceResponse_additionalCodeRepositories,
+    describeNotebookInstanceResponse_creationTime,
+    describeNotebookInstanceResponse_defaultCodeRepository,
+    describeNotebookInstanceResponse_directInternetAccess,
+    describeNotebookInstanceResponse_failureReason,
+    describeNotebookInstanceResponse_instanceMetadataServiceConfiguration,
+    describeNotebookInstanceResponse_instanceType,
+    describeNotebookInstanceResponse_kmsKeyId,
+    describeNotebookInstanceResponse_lastModifiedTime,
+    describeNotebookInstanceResponse_networkInterfaceId,
+    describeNotebookInstanceResponse_notebookInstanceArn,
+    describeNotebookInstanceResponse_notebookInstanceLifecycleConfigName,
+    describeNotebookInstanceResponse_notebookInstanceName,
+    describeNotebookInstanceResponse_notebookInstanceStatus,
+    describeNotebookInstanceResponse_platformIdentifier,
+    describeNotebookInstanceResponse_roleArn,
+    describeNotebookInstanceResponse_rootAccess,
+    describeNotebookInstanceResponse_securityGroups,
+    describeNotebookInstanceResponse_subnetId,
+    describeNotebookInstanceResponse_url,
+    describeNotebookInstanceResponse_volumeSizeInGB,
+    describeNotebookInstanceResponse_httpStatus,
+  )
+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:/ 'newDescribeNotebookInstance' smart constructor.
+data DescribeNotebookInstance = DescribeNotebookInstance'
+  { -- | The name of the notebook instance that you want information about.
+    notebookInstanceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNotebookInstance' 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:
+--
+-- 'notebookInstanceName', 'describeNotebookInstance_notebookInstanceName' - The name of the notebook instance that you want information about.
+newDescribeNotebookInstance ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  DescribeNotebookInstance
+newDescribeNotebookInstance pNotebookInstanceName_ =
+  DescribeNotebookInstance'
+    { notebookInstanceName =
+        pNotebookInstanceName_
+    }
+
+-- | The name of the notebook instance that you want information about.
+describeNotebookInstance_notebookInstanceName :: Lens.Lens' DescribeNotebookInstance Prelude.Text
+describeNotebookInstance_notebookInstanceName = Lens.lens (\DescribeNotebookInstance' {notebookInstanceName} -> notebookInstanceName) (\s@DescribeNotebookInstance' {} a -> s {notebookInstanceName = a} :: DescribeNotebookInstance)
+
+instance Core.AWSRequest DescribeNotebookInstance where
+  type
+    AWSResponse DescribeNotebookInstance =
+      DescribeNotebookInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeNotebookInstanceResponse'
+            Prelude.<$> ( x
+                            Data..?> "AcceleratorTypes"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "AdditionalCodeRepositories"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DefaultCodeRepository")
+            Prelude.<*> (x Data..?> "DirectInternetAccess")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "InstanceMetadataServiceConfiguration")
+            Prelude.<*> (x Data..?> "InstanceType")
+            Prelude.<*> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "NetworkInterfaceId")
+            Prelude.<*> (x Data..?> "NotebookInstanceArn")
+            Prelude.<*> (x Data..?> "NotebookInstanceLifecycleConfigName")
+            Prelude.<*> (x Data..?> "NotebookInstanceName")
+            Prelude.<*> (x Data..?> "NotebookInstanceStatus")
+            Prelude.<*> (x Data..?> "PlatformIdentifier")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "RootAccess")
+            Prelude.<*> (x Data..?> "SecurityGroups" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "SubnetId")
+            Prelude.<*> (x Data..?> "Url")
+            Prelude.<*> (x Data..?> "VolumeSizeInGB")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeNotebookInstance where
+  hashWithSalt _salt DescribeNotebookInstance' {..} =
+    _salt `Prelude.hashWithSalt` notebookInstanceName
+
+instance Prelude.NFData DescribeNotebookInstance where
+  rnf DescribeNotebookInstance' {..} =
+    Prelude.rnf notebookInstanceName
+
+instance Data.ToHeaders DescribeNotebookInstance where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeNotebookInstance" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeNotebookInstance where
+  toJSON DescribeNotebookInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeNotebookInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeNotebookInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeNotebookInstanceResponse' smart constructor.
+data DescribeNotebookInstanceResponse = DescribeNotebookInstanceResponse'
+  { -- | A list of the Elastic Inference (EI) instance types associated with this
+    -- notebook instance. Currently only one EI instance type can be associated
+    -- with a notebook instance. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+    acceleratorTypes :: Prelude.Maybe [NotebookInstanceAcceleratorType],
+    -- | An array of up to three Git repositories associated with the notebook
+    -- instance. These can be either the names of Git repositories stored as
+    -- resources in your account, or the URL of Git repositories in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. These repositories are cloned at the
+    -- same level as the default repository of your notebook instance. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    additionalCodeRepositories :: Prelude.Maybe [Prelude.Text],
+    -- | A timestamp. Use this parameter to return the time when the notebook
+    -- instance was created
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Git repository associated with the notebook instance as its default
+    -- code repository. This can be either the name of a Git repository stored
+    -- as a resource in your account, or the URL of a Git repository in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. When you open a notebook instance, it
+    -- opens in the directory that contains this repository. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    defaultCodeRepository :: Prelude.Maybe Prelude.Text,
+    -- | Describes whether SageMaker provides internet access to the notebook
+    -- instance. If this value is set to /Disabled/, the notebook instance does
+    -- not have internet access, and cannot connect to SageMaker training and
+    -- endpoint services.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access Notebook Instances Are Internet-Enabled by Default>.
+    directInternetAccess :: Prelude.Maybe DirectInternetAccess,
+    -- | If status is @Failed@, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Information on the IMDS configuration of the notebook instance
+    instanceMetadataServiceConfiguration :: Prelude.Maybe InstanceMetadataServiceConfiguration,
+    -- | The type of ML compute instance running on the notebook instance.
+    instanceType :: Prelude.Maybe InstanceType,
+    -- | The Amazon Web Services KMS key ID SageMaker uses to encrypt data when
+    -- storing it on the ML storage volume attached to the instance.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp. Use this parameter to retrieve the time when the notebook
+    -- instance was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The network interface IDs that SageMaker created at the time of creating
+    -- the instance.
+    networkInterfaceId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the notebook instance.
+    notebookInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | Returns the name of a notebook instance lifecycle configuration.
+    --
+    -- For information about notebook instance lifestyle configurations, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>
+    notebookInstanceLifecycleConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the SageMaker notebook instance.
+    notebookInstanceName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the notebook instance.
+    notebookInstanceStatus :: Prelude.Maybe NotebookInstanceStatus,
+    -- | The platform identifier of the notebook instance runtime environment.
+    platformIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role associated with the
+    -- instance.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Whether root access is enabled or disabled for users of the notebook
+    -- instance.
+    --
+    -- Lifecycle configurations need root access to be able to set up a
+    -- notebook instance. Because of this, lifecycle configurations associated
+    -- with a notebook instance always run with root access even if you disable
+    -- root access for users.
+    rootAccess :: Prelude.Maybe RootAccess,
+    -- | The IDs of the VPC security groups.
+    securityGroups :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the VPC subnet.
+    subnetId :: Prelude.Maybe Prelude.Text,
+    -- | The URL that you use to connect to the Jupyter notebook that is running
+    -- in your notebook instance.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | The size, in GB, of the ML storage volume attached to the notebook
+    -- instance.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNotebookInstanceResponse' 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:
+--
+-- 'acceleratorTypes', 'describeNotebookInstanceResponse_acceleratorTypes' - A list of the Elastic Inference (EI) instance types associated with this
+-- notebook instance. Currently only one EI instance type can be associated
+-- with a notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+--
+-- 'additionalCodeRepositories', 'describeNotebookInstanceResponse_additionalCodeRepositories' - An array of up to three Git repositories associated with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'creationTime', 'describeNotebookInstanceResponse_creationTime' - A timestamp. Use this parameter to return the time when the notebook
+-- instance was created
+--
+-- 'defaultCodeRepository', 'describeNotebookInstanceResponse_defaultCodeRepository' - The Git repository associated with the notebook instance as its default
+-- code repository. This can be either the name of a Git repository stored
+-- as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'directInternetAccess', 'describeNotebookInstanceResponse_directInternetAccess' - Describes whether SageMaker provides internet access to the notebook
+-- instance. If this value is set to /Disabled/, the notebook instance does
+-- not have internet access, and cannot connect to SageMaker training and
+-- endpoint services.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access Notebook Instances Are Internet-Enabled by Default>.
+--
+-- 'failureReason', 'describeNotebookInstanceResponse_failureReason' - If status is @Failed@, the reason it failed.
+--
+-- 'instanceMetadataServiceConfiguration', 'describeNotebookInstanceResponse_instanceMetadataServiceConfiguration' - Information on the IMDS configuration of the notebook instance
+--
+-- 'instanceType', 'describeNotebookInstanceResponse_instanceType' - The type of ML compute instance running on the notebook instance.
+--
+-- 'kmsKeyId', 'describeNotebookInstanceResponse_kmsKeyId' - The Amazon Web Services KMS key ID SageMaker uses to encrypt data when
+-- storing it on the ML storage volume attached to the instance.
+--
+-- 'lastModifiedTime', 'describeNotebookInstanceResponse_lastModifiedTime' - A timestamp. Use this parameter to retrieve the time when the notebook
+-- instance was last modified.
+--
+-- 'networkInterfaceId', 'describeNotebookInstanceResponse_networkInterfaceId' - The network interface IDs that SageMaker created at the time of creating
+-- the instance.
+--
+-- 'notebookInstanceArn', 'describeNotebookInstanceResponse_notebookInstanceArn' - The Amazon Resource Name (ARN) of the notebook instance.
+--
+-- 'notebookInstanceLifecycleConfigName', 'describeNotebookInstanceResponse_notebookInstanceLifecycleConfigName' - Returns the name of a notebook instance lifecycle configuration.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>
+--
+-- 'notebookInstanceName', 'describeNotebookInstanceResponse_notebookInstanceName' - The name of the SageMaker notebook instance.
+--
+-- 'notebookInstanceStatus', 'describeNotebookInstanceResponse_notebookInstanceStatus' - The status of the notebook instance.
+--
+-- 'platformIdentifier', 'describeNotebookInstanceResponse_platformIdentifier' - The platform identifier of the notebook instance runtime environment.
+--
+-- 'roleArn', 'describeNotebookInstanceResponse_roleArn' - The Amazon Resource Name (ARN) of the IAM role associated with the
+-- instance.
+--
+-- 'rootAccess', 'describeNotebookInstanceResponse_rootAccess' - Whether root access is enabled or disabled for users of the notebook
+-- instance.
+--
+-- Lifecycle configurations need root access to be able to set up a
+-- notebook instance. Because of this, lifecycle configurations associated
+-- with a notebook instance always run with root access even if you disable
+-- root access for users.
+--
+-- 'securityGroups', 'describeNotebookInstanceResponse_securityGroups' - The IDs of the VPC security groups.
+--
+-- 'subnetId', 'describeNotebookInstanceResponse_subnetId' - The ID of the VPC subnet.
+--
+-- 'url', 'describeNotebookInstanceResponse_url' - The URL that you use to connect to the Jupyter notebook that is running
+-- in your notebook instance.
+--
+-- 'volumeSizeInGB', 'describeNotebookInstanceResponse_volumeSizeInGB' - The size, in GB, of the ML storage volume attached to the notebook
+-- instance.
+--
+-- 'httpStatus', 'describeNotebookInstanceResponse_httpStatus' - The response's http status code.
+newDescribeNotebookInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeNotebookInstanceResponse
+newDescribeNotebookInstanceResponse pHttpStatus_ =
+  DescribeNotebookInstanceResponse'
+    { acceleratorTypes =
+        Prelude.Nothing,
+      additionalCodeRepositories =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      defaultCodeRepository = Prelude.Nothing,
+      directInternetAccess = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      instanceMetadataServiceConfiguration =
+        Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      networkInterfaceId = Prelude.Nothing,
+      notebookInstanceArn = Prelude.Nothing,
+      notebookInstanceLifecycleConfigName =
+        Prelude.Nothing,
+      notebookInstanceName = Prelude.Nothing,
+      notebookInstanceStatus = Prelude.Nothing,
+      platformIdentifier = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      rootAccess = Prelude.Nothing,
+      securityGroups = Prelude.Nothing,
+      subnetId = Prelude.Nothing,
+      url = Prelude.Nothing,
+      volumeSizeInGB = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of the Elastic Inference (EI) instance types associated with this
+-- notebook instance. Currently only one EI instance type can be associated
+-- with a notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+describeNotebookInstanceResponse_acceleratorTypes :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe [NotebookInstanceAcceleratorType])
+describeNotebookInstanceResponse_acceleratorTypes = Lens.lens (\DescribeNotebookInstanceResponse' {acceleratorTypes} -> acceleratorTypes) (\s@DescribeNotebookInstanceResponse' {} a -> s {acceleratorTypes = a} :: DescribeNotebookInstanceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of up to three Git repositories associated with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+describeNotebookInstanceResponse_additionalCodeRepositories :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe [Prelude.Text])
+describeNotebookInstanceResponse_additionalCodeRepositories = Lens.lens (\DescribeNotebookInstanceResponse' {additionalCodeRepositories} -> additionalCodeRepositories) (\s@DescribeNotebookInstanceResponse' {} a -> s {additionalCodeRepositories = a} :: DescribeNotebookInstanceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A timestamp. Use this parameter to return the time when the notebook
+-- instance was created
+describeNotebookInstanceResponse_creationTime :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.UTCTime)
+describeNotebookInstanceResponse_creationTime = Lens.lens (\DescribeNotebookInstanceResponse' {creationTime} -> creationTime) (\s@DescribeNotebookInstanceResponse' {} a -> s {creationTime = a} :: DescribeNotebookInstanceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Git repository associated with the notebook instance as its default
+-- code repository. This can be either the name of a Git repository stored
+-- as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+describeNotebookInstanceResponse_defaultCodeRepository :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_defaultCodeRepository = Lens.lens (\DescribeNotebookInstanceResponse' {defaultCodeRepository} -> defaultCodeRepository) (\s@DescribeNotebookInstanceResponse' {} a -> s {defaultCodeRepository = a} :: DescribeNotebookInstanceResponse)
+
+-- | Describes whether SageMaker provides internet access to the notebook
+-- instance. If this value is set to /Disabled/, the notebook instance does
+-- not have internet access, and cannot connect to SageMaker training and
+-- endpoint services.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access Notebook Instances Are Internet-Enabled by Default>.
+describeNotebookInstanceResponse_directInternetAccess :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe DirectInternetAccess)
+describeNotebookInstanceResponse_directInternetAccess = Lens.lens (\DescribeNotebookInstanceResponse' {directInternetAccess} -> directInternetAccess) (\s@DescribeNotebookInstanceResponse' {} a -> s {directInternetAccess = a} :: DescribeNotebookInstanceResponse)
+
+-- | If status is @Failed@, the reason it failed.
+describeNotebookInstanceResponse_failureReason :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_failureReason = Lens.lens (\DescribeNotebookInstanceResponse' {failureReason} -> failureReason) (\s@DescribeNotebookInstanceResponse' {} a -> s {failureReason = a} :: DescribeNotebookInstanceResponse)
+
+-- | Information on the IMDS configuration of the notebook instance
+describeNotebookInstanceResponse_instanceMetadataServiceConfiguration :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe InstanceMetadataServiceConfiguration)
+describeNotebookInstanceResponse_instanceMetadataServiceConfiguration = Lens.lens (\DescribeNotebookInstanceResponse' {instanceMetadataServiceConfiguration} -> instanceMetadataServiceConfiguration) (\s@DescribeNotebookInstanceResponse' {} a -> s {instanceMetadataServiceConfiguration = a} :: DescribeNotebookInstanceResponse)
+
+-- | The type of ML compute instance running on the notebook instance.
+describeNotebookInstanceResponse_instanceType :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe InstanceType)
+describeNotebookInstanceResponse_instanceType = Lens.lens (\DescribeNotebookInstanceResponse' {instanceType} -> instanceType) (\s@DescribeNotebookInstanceResponse' {} a -> s {instanceType = a} :: DescribeNotebookInstanceResponse)
+
+-- | The Amazon Web Services KMS key ID SageMaker uses to encrypt data when
+-- storing it on the ML storage volume attached to the instance.
+describeNotebookInstanceResponse_kmsKeyId :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_kmsKeyId = Lens.lens (\DescribeNotebookInstanceResponse' {kmsKeyId} -> kmsKeyId) (\s@DescribeNotebookInstanceResponse' {} a -> s {kmsKeyId = a} :: DescribeNotebookInstanceResponse)
+
+-- | A timestamp. Use this parameter to retrieve the time when the notebook
+-- instance was last modified.
+describeNotebookInstanceResponse_lastModifiedTime :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.UTCTime)
+describeNotebookInstanceResponse_lastModifiedTime = Lens.lens (\DescribeNotebookInstanceResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeNotebookInstanceResponse' {} a -> s {lastModifiedTime = a} :: DescribeNotebookInstanceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The network interface IDs that SageMaker created at the time of creating
+-- the instance.
+describeNotebookInstanceResponse_networkInterfaceId :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_networkInterfaceId = Lens.lens (\DescribeNotebookInstanceResponse' {networkInterfaceId} -> networkInterfaceId) (\s@DescribeNotebookInstanceResponse' {} a -> s {networkInterfaceId = a} :: DescribeNotebookInstanceResponse)
+
+-- | The Amazon Resource Name (ARN) of the notebook instance.
+describeNotebookInstanceResponse_notebookInstanceArn :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_notebookInstanceArn = Lens.lens (\DescribeNotebookInstanceResponse' {notebookInstanceArn} -> notebookInstanceArn) (\s@DescribeNotebookInstanceResponse' {} a -> s {notebookInstanceArn = a} :: DescribeNotebookInstanceResponse)
+
+-- | Returns the name of a notebook instance lifecycle configuration.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>
+describeNotebookInstanceResponse_notebookInstanceLifecycleConfigName :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_notebookInstanceLifecycleConfigName = Lens.lens (\DescribeNotebookInstanceResponse' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@DescribeNotebookInstanceResponse' {} a -> s {notebookInstanceLifecycleConfigName = a} :: DescribeNotebookInstanceResponse)
+
+-- | The name of the SageMaker notebook instance.
+describeNotebookInstanceResponse_notebookInstanceName :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_notebookInstanceName = Lens.lens (\DescribeNotebookInstanceResponse' {notebookInstanceName} -> notebookInstanceName) (\s@DescribeNotebookInstanceResponse' {} a -> s {notebookInstanceName = a} :: DescribeNotebookInstanceResponse)
+
+-- | The status of the notebook instance.
+describeNotebookInstanceResponse_notebookInstanceStatus :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe NotebookInstanceStatus)
+describeNotebookInstanceResponse_notebookInstanceStatus = Lens.lens (\DescribeNotebookInstanceResponse' {notebookInstanceStatus} -> notebookInstanceStatus) (\s@DescribeNotebookInstanceResponse' {} a -> s {notebookInstanceStatus = a} :: DescribeNotebookInstanceResponse)
+
+-- | The platform identifier of the notebook instance runtime environment.
+describeNotebookInstanceResponse_platformIdentifier :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_platformIdentifier = Lens.lens (\DescribeNotebookInstanceResponse' {platformIdentifier} -> platformIdentifier) (\s@DescribeNotebookInstanceResponse' {} a -> s {platformIdentifier = a} :: DescribeNotebookInstanceResponse)
+
+-- | The Amazon Resource Name (ARN) of the IAM role associated with the
+-- instance.
+describeNotebookInstanceResponse_roleArn :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_roleArn = Lens.lens (\DescribeNotebookInstanceResponse' {roleArn} -> roleArn) (\s@DescribeNotebookInstanceResponse' {} a -> s {roleArn = a} :: DescribeNotebookInstanceResponse)
+
+-- | Whether root access is enabled or disabled for users of the notebook
+-- instance.
+--
+-- Lifecycle configurations need root access to be able to set up a
+-- notebook instance. Because of this, lifecycle configurations associated
+-- with a notebook instance always run with root access even if you disable
+-- root access for users.
+describeNotebookInstanceResponse_rootAccess :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe RootAccess)
+describeNotebookInstanceResponse_rootAccess = Lens.lens (\DescribeNotebookInstanceResponse' {rootAccess} -> rootAccess) (\s@DescribeNotebookInstanceResponse' {} a -> s {rootAccess = a} :: DescribeNotebookInstanceResponse)
+
+-- | The IDs of the VPC security groups.
+describeNotebookInstanceResponse_securityGroups :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe [Prelude.Text])
+describeNotebookInstanceResponse_securityGroups = Lens.lens (\DescribeNotebookInstanceResponse' {securityGroups} -> securityGroups) (\s@DescribeNotebookInstanceResponse' {} a -> s {securityGroups = a} :: DescribeNotebookInstanceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the VPC subnet.
+describeNotebookInstanceResponse_subnetId :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_subnetId = Lens.lens (\DescribeNotebookInstanceResponse' {subnetId} -> subnetId) (\s@DescribeNotebookInstanceResponse' {} a -> s {subnetId = a} :: DescribeNotebookInstanceResponse)
+
+-- | The URL that you use to connect to the Jupyter notebook that is running
+-- in your notebook instance.
+describeNotebookInstanceResponse_url :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceResponse_url = Lens.lens (\DescribeNotebookInstanceResponse' {url} -> url) (\s@DescribeNotebookInstanceResponse' {} a -> s {url = a} :: DescribeNotebookInstanceResponse)
+
+-- | The size, in GB, of the ML storage volume attached to the notebook
+-- instance.
+describeNotebookInstanceResponse_volumeSizeInGB :: Lens.Lens' DescribeNotebookInstanceResponse (Prelude.Maybe Prelude.Natural)
+describeNotebookInstanceResponse_volumeSizeInGB = Lens.lens (\DescribeNotebookInstanceResponse' {volumeSizeInGB} -> volumeSizeInGB) (\s@DescribeNotebookInstanceResponse' {} a -> s {volumeSizeInGB = a} :: DescribeNotebookInstanceResponse)
+
+-- | The response's http status code.
+describeNotebookInstanceResponse_httpStatus :: Lens.Lens' DescribeNotebookInstanceResponse Prelude.Int
+describeNotebookInstanceResponse_httpStatus = Lens.lens (\DescribeNotebookInstanceResponse' {httpStatus} -> httpStatus) (\s@DescribeNotebookInstanceResponse' {} a -> s {httpStatus = a} :: DescribeNotebookInstanceResponse)
+
+instance
+  Prelude.NFData
+    DescribeNotebookInstanceResponse
+  where
+  rnf DescribeNotebookInstanceResponse' {..} =
+    Prelude.rnf acceleratorTypes
+      `Prelude.seq` Prelude.rnf additionalCodeRepositories
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf defaultCodeRepository
+      `Prelude.seq` Prelude.rnf directInternetAccess
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf instanceMetadataServiceConfiguration
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf networkInterfaceId
+      `Prelude.seq` Prelude.rnf notebookInstanceArn
+      `Prelude.seq` Prelude.rnf
+        notebookInstanceLifecycleConfigName
+      `Prelude.seq` Prelude.rnf notebookInstanceName
+      `Prelude.seq` Prelude.rnf notebookInstanceStatus
+      `Prelude.seq` Prelude.rnf platformIdentifier
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf rootAccess
+      `Prelude.seq` Prelude.rnf securityGroups
+      `Prelude.seq` Prelude.rnf subnetId
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeNotebookInstanceLifecycleConfig.hs b/gen/Amazonka/SageMaker/DescribeNotebookInstanceLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeNotebookInstanceLifecycleConfig.hs
@@ -0,0 +1,282 @@
+{-# 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.DescribeNotebookInstanceLifecycleConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of a notebook instance lifecycle configuration.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+module Amazonka.SageMaker.DescribeNotebookInstanceLifecycleConfig
+  ( -- * Creating a Request
+    DescribeNotebookInstanceLifecycleConfig (..),
+    newDescribeNotebookInstanceLifecycleConfig,
+
+    -- * Request Lenses
+    describeNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+
+    -- * Destructuring the Response
+    DescribeNotebookInstanceLifecycleConfigResponse (..),
+    newDescribeNotebookInstanceLifecycleConfigResponse,
+
+    -- * Response Lenses
+    describeNotebookInstanceLifecycleConfigResponse_creationTime,
+    describeNotebookInstanceLifecycleConfigResponse_lastModifiedTime,
+    describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn,
+    describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigName,
+    describeNotebookInstanceLifecycleConfigResponse_onCreate,
+    describeNotebookInstanceLifecycleConfigResponse_onStart,
+    describeNotebookInstanceLifecycleConfigResponse_httpStatus,
+  )
+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:/ 'newDescribeNotebookInstanceLifecycleConfig' smart constructor.
+data DescribeNotebookInstanceLifecycleConfig = DescribeNotebookInstanceLifecycleConfig'
+  { -- | The name of the lifecycle configuration to describe.
+    notebookInstanceLifecycleConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNotebookInstanceLifecycleConfig' 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:
+--
+-- 'notebookInstanceLifecycleConfigName', 'describeNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName' - The name of the lifecycle configuration to describe.
+newDescribeNotebookInstanceLifecycleConfig ::
+  -- | 'notebookInstanceLifecycleConfigName'
+  Prelude.Text ->
+  DescribeNotebookInstanceLifecycleConfig
+newDescribeNotebookInstanceLifecycleConfig
+  pNotebookInstanceLifecycleConfigName_ =
+    DescribeNotebookInstanceLifecycleConfig'
+      { notebookInstanceLifecycleConfigName =
+          pNotebookInstanceLifecycleConfigName_
+      }
+
+-- | The name of the lifecycle configuration to describe.
+describeNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName :: Lens.Lens' DescribeNotebookInstanceLifecycleConfig Prelude.Text
+describeNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName = Lens.lens (\DescribeNotebookInstanceLifecycleConfig' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@DescribeNotebookInstanceLifecycleConfig' {} a -> s {notebookInstanceLifecycleConfigName = a} :: DescribeNotebookInstanceLifecycleConfig)
+
+instance
+  Core.AWSRequest
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  type
+    AWSResponse
+      DescribeNotebookInstanceLifecycleConfig =
+      DescribeNotebookInstanceLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeNotebookInstanceLifecycleConfigResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "NotebookInstanceLifecycleConfigArn")
+            Prelude.<*> (x Data..?> "NotebookInstanceLifecycleConfigName")
+            Prelude.<*> (x Data..?> "OnCreate" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "OnStart" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  hashWithSalt
+    _salt
+    DescribeNotebookInstanceLifecycleConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` notebookInstanceLifecycleConfigName
+
+instance
+  Prelude.NFData
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  rnf DescribeNotebookInstanceLifecycleConfig' {..} =
+    Prelude.rnf notebookInstanceLifecycleConfigName
+
+instance
+  Data.ToHeaders
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeNotebookInstanceLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  toJSON DescribeNotebookInstanceLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "NotebookInstanceLifecycleConfigName"
+                  Data..= notebookInstanceLifecycleConfigName
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeNotebookInstanceLifecycleConfig
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeNotebookInstanceLifecycleConfigResponse' smart constructor.
+data DescribeNotebookInstanceLifecycleConfigResponse = DescribeNotebookInstanceLifecycleConfigResponse'
+  { -- | A timestamp that tells when the lifecycle configuration was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | A timestamp that tells when the lifecycle configuration was last
+    -- modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lifecycle configuration.
+    notebookInstanceLifecycleConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the lifecycle configuration.
+    notebookInstanceLifecycleConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The shell script that runs only once, when you create a notebook
+    -- instance.
+    onCreate :: Prelude.Maybe [NotebookInstanceLifecycleHook],
+    -- | The shell script that runs every time you start a notebook instance,
+    -- including when you create the notebook instance.
+    onStart :: Prelude.Maybe [NotebookInstanceLifecycleHook],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNotebookInstanceLifecycleConfigResponse' 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:
+--
+-- 'creationTime', 'describeNotebookInstanceLifecycleConfigResponse_creationTime' - A timestamp that tells when the lifecycle configuration was created.
+--
+-- 'lastModifiedTime', 'describeNotebookInstanceLifecycleConfigResponse_lastModifiedTime' - A timestamp that tells when the lifecycle configuration was last
+-- modified.
+--
+-- 'notebookInstanceLifecycleConfigArn', 'describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn' - The Amazon Resource Name (ARN) of the lifecycle configuration.
+--
+-- 'notebookInstanceLifecycleConfigName', 'describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
+--
+-- 'onCreate', 'describeNotebookInstanceLifecycleConfigResponse_onCreate' - The shell script that runs only once, when you create a notebook
+-- instance.
+--
+-- 'onStart', 'describeNotebookInstanceLifecycleConfigResponse_onStart' - The shell script that runs every time you start a notebook instance,
+-- including when you create the notebook instance.
+--
+-- 'httpStatus', 'describeNotebookInstanceLifecycleConfigResponse_httpStatus' - The response's http status code.
+newDescribeNotebookInstanceLifecycleConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeNotebookInstanceLifecycleConfigResponse
+newDescribeNotebookInstanceLifecycleConfigResponse
+  pHttpStatus_ =
+    DescribeNotebookInstanceLifecycleConfigResponse'
+      { creationTime =
+          Prelude.Nothing,
+        lastModifiedTime =
+          Prelude.Nothing,
+        notebookInstanceLifecycleConfigArn =
+          Prelude.Nothing,
+        notebookInstanceLifecycleConfigName =
+          Prelude.Nothing,
+        onCreate = Prelude.Nothing,
+        onStart = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A timestamp that tells when the lifecycle configuration was created.
+describeNotebookInstanceLifecycleConfigResponse_creationTime :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse (Prelude.Maybe Prelude.UTCTime)
+describeNotebookInstanceLifecycleConfigResponse_creationTime = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {creationTime} -> creationTime) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {creationTime = a} :: DescribeNotebookInstanceLifecycleConfigResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A timestamp that tells when the lifecycle configuration was last
+-- modified.
+describeNotebookInstanceLifecycleConfigResponse_lastModifiedTime :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse (Prelude.Maybe Prelude.UTCTime)
+describeNotebookInstanceLifecycleConfigResponse_lastModifiedTime = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {lastModifiedTime = a} :: DescribeNotebookInstanceLifecycleConfigResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lifecycle configuration.
+describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {notebookInstanceLifecycleConfigArn} -> notebookInstanceLifecycleConfigArn) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {notebookInstanceLifecycleConfigArn = a} :: DescribeNotebookInstanceLifecycleConfigResponse)
+
+-- | The name of the lifecycle configuration.
+describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigName :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigName = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {notebookInstanceLifecycleConfigName = a} :: DescribeNotebookInstanceLifecycleConfigResponse)
+
+-- | The shell script that runs only once, when you create a notebook
+-- instance.
+describeNotebookInstanceLifecycleConfigResponse_onCreate :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse (Prelude.Maybe [NotebookInstanceLifecycleHook])
+describeNotebookInstanceLifecycleConfigResponse_onCreate = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {onCreate} -> onCreate) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {onCreate = a} :: DescribeNotebookInstanceLifecycleConfigResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The shell script that runs every time you start a notebook instance,
+-- including when you create the notebook instance.
+describeNotebookInstanceLifecycleConfigResponse_onStart :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse (Prelude.Maybe [NotebookInstanceLifecycleHook])
+describeNotebookInstanceLifecycleConfigResponse_onStart = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {onStart} -> onStart) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {onStart = a} :: DescribeNotebookInstanceLifecycleConfigResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeNotebookInstanceLifecycleConfigResponse_httpStatus :: Lens.Lens' DescribeNotebookInstanceLifecycleConfigResponse Prelude.Int
+describeNotebookInstanceLifecycleConfigResponse_httpStatus = Lens.lens (\DescribeNotebookInstanceLifecycleConfigResponse' {httpStatus} -> httpStatus) (\s@DescribeNotebookInstanceLifecycleConfigResponse' {} a -> s {httpStatus = a} :: DescribeNotebookInstanceLifecycleConfigResponse)
+
+instance
+  Prelude.NFData
+    DescribeNotebookInstanceLifecycleConfigResponse
+  where
+  rnf
+    DescribeNotebookInstanceLifecycleConfigResponse' {..} =
+      Prelude.rnf creationTime
+        `Prelude.seq` Prelude.rnf lastModifiedTime
+        `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigArn
+        `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigName
+        `Prelude.seq` Prelude.rnf onCreate
+        `Prelude.seq` Prelude.rnf onStart
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribePipeline.hs b/gen/Amazonka/SageMaker/DescribePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribePipeline.hs
@@ -0,0 +1,308 @@
+{-# 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.DescribePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the details of a pipeline.
+module Amazonka.SageMaker.DescribePipeline
+  ( -- * Creating a Request
+    DescribePipeline (..),
+    newDescribePipeline,
+
+    -- * Request Lenses
+    describePipeline_pipelineName,
+
+    -- * Destructuring the Response
+    DescribePipelineResponse (..),
+    newDescribePipelineResponse,
+
+    -- * Response Lenses
+    describePipelineResponse_createdBy,
+    describePipelineResponse_creationTime,
+    describePipelineResponse_lastModifiedBy,
+    describePipelineResponse_lastModifiedTime,
+    describePipelineResponse_lastRunTime,
+    describePipelineResponse_parallelismConfiguration,
+    describePipelineResponse_pipelineArn,
+    describePipelineResponse_pipelineDefinition,
+    describePipelineResponse_pipelineDescription,
+    describePipelineResponse_pipelineDisplayName,
+    describePipelineResponse_pipelineName,
+    describePipelineResponse_pipelineStatus,
+    describePipelineResponse_roleArn,
+    describePipelineResponse_httpStatus,
+  )
+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:/ 'newDescribePipeline' smart constructor.
+data DescribePipeline = DescribePipeline'
+  { -- | The name of the pipeline to describe.
+    pipelineName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipeline' 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:
+--
+-- 'pipelineName', 'describePipeline_pipelineName' - The name of the pipeline to describe.
+newDescribePipeline ::
+  -- | 'pipelineName'
+  Prelude.Text ->
+  DescribePipeline
+newDescribePipeline pPipelineName_ =
+  DescribePipeline' {pipelineName = pPipelineName_}
+
+-- | The name of the pipeline to describe.
+describePipeline_pipelineName :: Lens.Lens' DescribePipeline Prelude.Text
+describePipeline_pipelineName = Lens.lens (\DescribePipeline' {pipelineName} -> pipelineName) (\s@DescribePipeline' {} a -> s {pipelineName = a} :: DescribePipeline)
+
+instance Core.AWSRequest DescribePipeline where
+  type
+    AWSResponse DescribePipeline =
+      DescribePipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribePipelineResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LastRunTime")
+            Prelude.<*> (x Data..?> "ParallelismConfiguration")
+            Prelude.<*> (x Data..?> "PipelineArn")
+            Prelude.<*> (x Data..?> "PipelineDefinition")
+            Prelude.<*> (x Data..?> "PipelineDescription")
+            Prelude.<*> (x Data..?> "PipelineDisplayName")
+            Prelude.<*> (x Data..?> "PipelineName")
+            Prelude.<*> (x Data..?> "PipelineStatus")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribePipeline where
+  hashWithSalt _salt DescribePipeline' {..} =
+    _salt `Prelude.hashWithSalt` pipelineName
+
+instance Prelude.NFData DescribePipeline where
+  rnf DescribePipeline' {..} = Prelude.rnf pipelineName
+
+instance Data.ToHeaders DescribePipeline where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribePipeline" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribePipeline where
+  toJSON DescribePipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("PipelineName" Data..= pipelineName)]
+      )
+
+instance Data.ToPath DescribePipeline where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribePipelineResponse' smart constructor.
+data DescribePipelineResponse = DescribePipelineResponse'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | The time when the pipeline was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The time when the pipeline was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The time when the pipeline was last run.
+    lastRunTime :: Prelude.Maybe Data.POSIX,
+    -- | Lists the parallelism configuration applied to the pipeline.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The Amazon Resource Name (ARN) of the pipeline.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The JSON pipeline definition.
+    pipelineDefinition :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pipeline.
+    pipelineDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline.
+    pipelineDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the pipeline.
+    pipelineName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the pipeline execution.
+    pipelineStatus :: Prelude.Maybe PipelineStatus,
+    -- | The Amazon Resource Name (ARN) that the pipeline uses to execute.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipelineResponse' 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:
+--
+-- 'createdBy', 'describePipelineResponse_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'describePipelineResponse_creationTime' - The time when the pipeline was created.
+--
+-- 'lastModifiedBy', 'describePipelineResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describePipelineResponse_lastModifiedTime' - The time when the pipeline was last modified.
+--
+-- 'lastRunTime', 'describePipelineResponse_lastRunTime' - The time when the pipeline was last run.
+--
+-- 'parallelismConfiguration', 'describePipelineResponse_parallelismConfiguration' - Lists the parallelism configuration applied to the pipeline.
+--
+-- 'pipelineArn', 'describePipelineResponse_pipelineArn' - The Amazon Resource Name (ARN) of the pipeline.
+--
+-- 'pipelineDefinition', 'describePipelineResponse_pipelineDefinition' - The JSON pipeline definition.
+--
+-- 'pipelineDescription', 'describePipelineResponse_pipelineDescription' - The description of the pipeline.
+--
+-- 'pipelineDisplayName', 'describePipelineResponse_pipelineDisplayName' - The display name of the pipeline.
+--
+-- 'pipelineName', 'describePipelineResponse_pipelineName' - The name of the pipeline.
+--
+-- 'pipelineStatus', 'describePipelineResponse_pipelineStatus' - The status of the pipeline execution.
+--
+-- 'roleArn', 'describePipelineResponse_roleArn' - The Amazon Resource Name (ARN) that the pipeline uses to execute.
+--
+-- 'httpStatus', 'describePipelineResponse_httpStatus' - The response's http status code.
+newDescribePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribePipelineResponse
+newDescribePipelineResponse pHttpStatus_ =
+  DescribePipelineResponse'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lastRunTime = Prelude.Nothing,
+      parallelismConfiguration = Prelude.Nothing,
+      pipelineArn = Prelude.Nothing,
+      pipelineDefinition = Prelude.Nothing,
+      pipelineDescription = Prelude.Nothing,
+      pipelineDisplayName = Prelude.Nothing,
+      pipelineName = Prelude.Nothing,
+      pipelineStatus = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describePipelineResponse_createdBy :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe UserContext)
+describePipelineResponse_createdBy = Lens.lens (\DescribePipelineResponse' {createdBy} -> createdBy) (\s@DescribePipelineResponse' {} a -> s {createdBy = a} :: DescribePipelineResponse)
+
+-- | The time when the pipeline was created.
+describePipelineResponse_creationTime :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.UTCTime)
+describePipelineResponse_creationTime = Lens.lens (\DescribePipelineResponse' {creationTime} -> creationTime) (\s@DescribePipelineResponse' {} a -> s {creationTime = a} :: DescribePipelineResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+describePipelineResponse_lastModifiedBy :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe UserContext)
+describePipelineResponse_lastModifiedBy = Lens.lens (\DescribePipelineResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribePipelineResponse' {} a -> s {lastModifiedBy = a} :: DescribePipelineResponse)
+
+-- | The time when the pipeline was last modified.
+describePipelineResponse_lastModifiedTime :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.UTCTime)
+describePipelineResponse_lastModifiedTime = Lens.lens (\DescribePipelineResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribePipelineResponse' {} a -> s {lastModifiedTime = a} :: DescribePipelineResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The time when the pipeline was last run.
+describePipelineResponse_lastRunTime :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.UTCTime)
+describePipelineResponse_lastRunTime = Lens.lens (\DescribePipelineResponse' {lastRunTime} -> lastRunTime) (\s@DescribePipelineResponse' {} a -> s {lastRunTime = a} :: DescribePipelineResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Lists the parallelism configuration applied to the pipeline.
+describePipelineResponse_parallelismConfiguration :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe ParallelismConfiguration)
+describePipelineResponse_parallelismConfiguration = Lens.lens (\DescribePipelineResponse' {parallelismConfiguration} -> parallelismConfiguration) (\s@DescribePipelineResponse' {} a -> s {parallelismConfiguration = a} :: DescribePipelineResponse)
+
+-- | The Amazon Resource Name (ARN) of the pipeline.
+describePipelineResponse_pipelineArn :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.Text)
+describePipelineResponse_pipelineArn = Lens.lens (\DescribePipelineResponse' {pipelineArn} -> pipelineArn) (\s@DescribePipelineResponse' {} a -> s {pipelineArn = a} :: DescribePipelineResponse)
+
+-- | The JSON pipeline definition.
+describePipelineResponse_pipelineDefinition :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.Text)
+describePipelineResponse_pipelineDefinition = Lens.lens (\DescribePipelineResponse' {pipelineDefinition} -> pipelineDefinition) (\s@DescribePipelineResponse' {} a -> s {pipelineDefinition = a} :: DescribePipelineResponse)
+
+-- | The description of the pipeline.
+describePipelineResponse_pipelineDescription :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.Text)
+describePipelineResponse_pipelineDescription = Lens.lens (\DescribePipelineResponse' {pipelineDescription} -> pipelineDescription) (\s@DescribePipelineResponse' {} a -> s {pipelineDescription = a} :: DescribePipelineResponse)
+
+-- | The display name of the pipeline.
+describePipelineResponse_pipelineDisplayName :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.Text)
+describePipelineResponse_pipelineDisplayName = Lens.lens (\DescribePipelineResponse' {pipelineDisplayName} -> pipelineDisplayName) (\s@DescribePipelineResponse' {} a -> s {pipelineDisplayName = a} :: DescribePipelineResponse)
+
+-- | The name of the pipeline.
+describePipelineResponse_pipelineName :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.Text)
+describePipelineResponse_pipelineName = Lens.lens (\DescribePipelineResponse' {pipelineName} -> pipelineName) (\s@DescribePipelineResponse' {} a -> s {pipelineName = a} :: DescribePipelineResponse)
+
+-- | The status of the pipeline execution.
+describePipelineResponse_pipelineStatus :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe PipelineStatus)
+describePipelineResponse_pipelineStatus = Lens.lens (\DescribePipelineResponse' {pipelineStatus} -> pipelineStatus) (\s@DescribePipelineResponse' {} a -> s {pipelineStatus = a} :: DescribePipelineResponse)
+
+-- | The Amazon Resource Name (ARN) that the pipeline uses to execute.
+describePipelineResponse_roleArn :: Lens.Lens' DescribePipelineResponse (Prelude.Maybe Prelude.Text)
+describePipelineResponse_roleArn = Lens.lens (\DescribePipelineResponse' {roleArn} -> roleArn) (\s@DescribePipelineResponse' {} a -> s {roleArn = a} :: DescribePipelineResponse)
+
+-- | The response's http status code.
+describePipelineResponse_httpStatus :: Lens.Lens' DescribePipelineResponse Prelude.Int
+describePipelineResponse_httpStatus = Lens.lens (\DescribePipelineResponse' {httpStatus} -> httpStatus) (\s@DescribePipelineResponse' {} a -> s {httpStatus = a} :: DescribePipelineResponse)
+
+instance Prelude.NFData DescribePipelineResponse where
+  rnf DescribePipelineResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lastRunTime
+      `Prelude.seq` Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf pipelineDefinition
+      `Prelude.seq` Prelude.rnf pipelineDescription
+      `Prelude.seq` Prelude.rnf pipelineDisplayName
+      `Prelude.seq` Prelude.rnf pipelineName
+      `Prelude.seq` Prelude.rnf pipelineStatus
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribePipelineDefinitionForExecution.hs b/gen/Amazonka/SageMaker/DescribePipelineDefinitionForExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribePipelineDefinitionForExecution.hs
@@ -0,0 +1,219 @@
+{-# 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.DescribePipelineDefinitionForExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the details of an execution\'s pipeline definition.
+module Amazonka.SageMaker.DescribePipelineDefinitionForExecution
+  ( -- * Creating a Request
+    DescribePipelineDefinitionForExecution (..),
+    newDescribePipelineDefinitionForExecution,
+
+    -- * Request Lenses
+    describePipelineDefinitionForExecution_pipelineExecutionArn,
+
+    -- * Destructuring the Response
+    DescribePipelineDefinitionForExecutionResponse (..),
+    newDescribePipelineDefinitionForExecutionResponse,
+
+    -- * Response Lenses
+    describePipelineDefinitionForExecutionResponse_creationTime,
+    describePipelineDefinitionForExecutionResponse_pipelineDefinition,
+    describePipelineDefinitionForExecutionResponse_httpStatus,
+  )
+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:/ 'newDescribePipelineDefinitionForExecution' smart constructor.
+data DescribePipelineDefinitionForExecution = DescribePipelineDefinitionForExecution'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipelineDefinitionForExecution' 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:
+--
+-- 'pipelineExecutionArn', 'describePipelineDefinitionForExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+newDescribePipelineDefinitionForExecution ::
+  -- | 'pipelineExecutionArn'
+  Prelude.Text ->
+  DescribePipelineDefinitionForExecution
+newDescribePipelineDefinitionForExecution
+  pPipelineExecutionArn_ =
+    DescribePipelineDefinitionForExecution'
+      { pipelineExecutionArn =
+          pPipelineExecutionArn_
+      }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+describePipelineDefinitionForExecution_pipelineExecutionArn :: Lens.Lens' DescribePipelineDefinitionForExecution Prelude.Text
+describePipelineDefinitionForExecution_pipelineExecutionArn = Lens.lens (\DescribePipelineDefinitionForExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@DescribePipelineDefinitionForExecution' {} a -> s {pipelineExecutionArn = a} :: DescribePipelineDefinitionForExecution)
+
+instance
+  Core.AWSRequest
+    DescribePipelineDefinitionForExecution
+  where
+  type
+    AWSResponse
+      DescribePipelineDefinitionForExecution =
+      DescribePipelineDefinitionForExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribePipelineDefinitionForExecutionResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "PipelineDefinition")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribePipelineDefinitionForExecution
+  where
+  hashWithSalt
+    _salt
+    DescribePipelineDefinitionForExecution' {..} =
+      _salt `Prelude.hashWithSalt` pipelineExecutionArn
+
+instance
+  Prelude.NFData
+    DescribePipelineDefinitionForExecution
+  where
+  rnf DescribePipelineDefinitionForExecution' {..} =
+    Prelude.rnf pipelineExecutionArn
+
+instance
+  Data.ToHeaders
+    DescribePipelineDefinitionForExecution
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribePipelineDefinitionForExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribePipelineDefinitionForExecution
+  where
+  toJSON DescribePipelineDefinitionForExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "PipelineExecutionArn"
+                  Data..= pipelineExecutionArn
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribePipelineDefinitionForExecution
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribePipelineDefinitionForExecution
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribePipelineDefinitionForExecutionResponse' smart constructor.
+data DescribePipelineDefinitionForExecutionResponse = DescribePipelineDefinitionForExecutionResponse'
+  { -- | The time when the pipeline was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The JSON pipeline definition.
+    pipelineDefinition :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipelineDefinitionForExecutionResponse' 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:
+--
+-- 'creationTime', 'describePipelineDefinitionForExecutionResponse_creationTime' - The time when the pipeline was created.
+--
+-- 'pipelineDefinition', 'describePipelineDefinitionForExecutionResponse_pipelineDefinition' - The JSON pipeline definition.
+--
+-- 'httpStatus', 'describePipelineDefinitionForExecutionResponse_httpStatus' - The response's http status code.
+newDescribePipelineDefinitionForExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribePipelineDefinitionForExecutionResponse
+newDescribePipelineDefinitionForExecutionResponse
+  pHttpStatus_ =
+    DescribePipelineDefinitionForExecutionResponse'
+      { creationTime =
+          Prelude.Nothing,
+        pipelineDefinition =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The time when the pipeline was created.
+describePipelineDefinitionForExecutionResponse_creationTime :: Lens.Lens' DescribePipelineDefinitionForExecutionResponse (Prelude.Maybe Prelude.UTCTime)
+describePipelineDefinitionForExecutionResponse_creationTime = Lens.lens (\DescribePipelineDefinitionForExecutionResponse' {creationTime} -> creationTime) (\s@DescribePipelineDefinitionForExecutionResponse' {} a -> s {creationTime = a} :: DescribePipelineDefinitionForExecutionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The JSON pipeline definition.
+describePipelineDefinitionForExecutionResponse_pipelineDefinition :: Lens.Lens' DescribePipelineDefinitionForExecutionResponse (Prelude.Maybe Prelude.Text)
+describePipelineDefinitionForExecutionResponse_pipelineDefinition = Lens.lens (\DescribePipelineDefinitionForExecutionResponse' {pipelineDefinition} -> pipelineDefinition) (\s@DescribePipelineDefinitionForExecutionResponse' {} a -> s {pipelineDefinition = a} :: DescribePipelineDefinitionForExecutionResponse)
+
+-- | The response's http status code.
+describePipelineDefinitionForExecutionResponse_httpStatus :: Lens.Lens' DescribePipelineDefinitionForExecutionResponse Prelude.Int
+describePipelineDefinitionForExecutionResponse_httpStatus = Lens.lens (\DescribePipelineDefinitionForExecutionResponse' {httpStatus} -> httpStatus) (\s@DescribePipelineDefinitionForExecutionResponse' {} a -> s {httpStatus = a} :: DescribePipelineDefinitionForExecutionResponse)
+
+instance
+  Prelude.NFData
+    DescribePipelineDefinitionForExecutionResponse
+  where
+  rnf
+    DescribePipelineDefinitionForExecutionResponse' {..} =
+      Prelude.rnf creationTime
+        `Prelude.seq` Prelude.rnf pipelineDefinition
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribePipelineExecution.hs b/gen/Amazonka/SageMaker/DescribePipelineExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribePipelineExecution.hs
@@ -0,0 +1,313 @@
+{-# 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.DescribePipelineExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the details of a pipeline execution.
+module Amazonka.SageMaker.DescribePipelineExecution
+  ( -- * Creating a Request
+    DescribePipelineExecution (..),
+    newDescribePipelineExecution,
+
+    -- * Request Lenses
+    describePipelineExecution_pipelineExecutionArn,
+
+    -- * Destructuring the Response
+    DescribePipelineExecutionResponse (..),
+    newDescribePipelineExecutionResponse,
+
+    -- * Response Lenses
+    describePipelineExecutionResponse_createdBy,
+    describePipelineExecutionResponse_creationTime,
+    describePipelineExecutionResponse_failureReason,
+    describePipelineExecutionResponse_lastModifiedBy,
+    describePipelineExecutionResponse_lastModifiedTime,
+    describePipelineExecutionResponse_parallelismConfiguration,
+    describePipelineExecutionResponse_pipelineArn,
+    describePipelineExecutionResponse_pipelineExecutionArn,
+    describePipelineExecutionResponse_pipelineExecutionDescription,
+    describePipelineExecutionResponse_pipelineExecutionDisplayName,
+    describePipelineExecutionResponse_pipelineExecutionStatus,
+    describePipelineExecutionResponse_pipelineExperimentConfig,
+    describePipelineExecutionResponse_httpStatus,
+  )
+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:/ 'newDescribePipelineExecution' smart constructor.
+data DescribePipelineExecution = DescribePipelineExecution'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipelineExecution' 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:
+--
+-- 'pipelineExecutionArn', 'describePipelineExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+newDescribePipelineExecution ::
+  -- | 'pipelineExecutionArn'
+  Prelude.Text ->
+  DescribePipelineExecution
+newDescribePipelineExecution pPipelineExecutionArn_ =
+  DescribePipelineExecution'
+    { pipelineExecutionArn =
+        pPipelineExecutionArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+describePipelineExecution_pipelineExecutionArn :: Lens.Lens' DescribePipelineExecution Prelude.Text
+describePipelineExecution_pipelineExecutionArn = Lens.lens (\DescribePipelineExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@DescribePipelineExecution' {} a -> s {pipelineExecutionArn = a} :: DescribePipelineExecution)
+
+instance Core.AWSRequest DescribePipelineExecution where
+  type
+    AWSResponse DescribePipelineExecution =
+      DescribePipelineExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribePipelineExecutionResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "ParallelismConfiguration")
+            Prelude.<*> (x Data..?> "PipelineArn")
+            Prelude.<*> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (x Data..?> "PipelineExecutionDescription")
+            Prelude.<*> (x Data..?> "PipelineExecutionDisplayName")
+            Prelude.<*> (x Data..?> "PipelineExecutionStatus")
+            Prelude.<*> (x Data..?> "PipelineExperimentConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribePipelineExecution where
+  hashWithSalt _salt DescribePipelineExecution' {..} =
+    _salt `Prelude.hashWithSalt` pipelineExecutionArn
+
+instance Prelude.NFData DescribePipelineExecution where
+  rnf DescribePipelineExecution' {..} =
+    Prelude.rnf pipelineExecutionArn
+
+instance Data.ToHeaders DescribePipelineExecution where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribePipelineExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribePipelineExecution where
+  toJSON DescribePipelineExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "PipelineExecutionArn"
+                  Data..= pipelineExecutionArn
+              )
+          ]
+      )
+
+instance Data.ToPath DescribePipelineExecution where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribePipelineExecution where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribePipelineExecutionResponse' smart constructor.
+data DescribePipelineExecutionResponse = DescribePipelineExecutionResponse'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | The time when the pipeline execution was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | If the execution failed, a message describing why.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The time when the pipeline execution was modified last.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The parallelism configuration applied to the pipeline.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The Amazon Resource Name (ARN) of the pipeline.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pipeline execution.
+    pipelineExecutionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline execution.
+    pipelineExecutionDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the pipeline execution.
+    pipelineExecutionStatus :: Prelude.Maybe PipelineExecutionStatus,
+    pipelineExperimentConfig :: Prelude.Maybe PipelineExperimentConfig,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipelineExecutionResponse' 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:
+--
+-- 'createdBy', 'describePipelineExecutionResponse_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'describePipelineExecutionResponse_creationTime' - The time when the pipeline execution was created.
+--
+-- 'failureReason', 'describePipelineExecutionResponse_failureReason' - If the execution failed, a message describing why.
+--
+-- 'lastModifiedBy', 'describePipelineExecutionResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describePipelineExecutionResponse_lastModifiedTime' - The time when the pipeline execution was modified last.
+--
+-- 'parallelismConfiguration', 'describePipelineExecutionResponse_parallelismConfiguration' - The parallelism configuration applied to the pipeline.
+--
+-- 'pipelineArn', 'describePipelineExecutionResponse_pipelineArn' - The Amazon Resource Name (ARN) of the pipeline.
+--
+-- 'pipelineExecutionArn', 'describePipelineExecutionResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'pipelineExecutionDescription', 'describePipelineExecutionResponse_pipelineExecutionDescription' - The description of the pipeline execution.
+--
+-- 'pipelineExecutionDisplayName', 'describePipelineExecutionResponse_pipelineExecutionDisplayName' - The display name of the pipeline execution.
+--
+-- 'pipelineExecutionStatus', 'describePipelineExecutionResponse_pipelineExecutionStatus' - The status of the pipeline execution.
+--
+-- 'pipelineExperimentConfig', 'describePipelineExecutionResponse_pipelineExperimentConfig' - Undocumented member.
+--
+-- 'httpStatus', 'describePipelineExecutionResponse_httpStatus' - The response's http status code.
+newDescribePipelineExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribePipelineExecutionResponse
+newDescribePipelineExecutionResponse pHttpStatus_ =
+  DescribePipelineExecutionResponse'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      parallelismConfiguration =
+        Prelude.Nothing,
+      pipelineArn = Prelude.Nothing,
+      pipelineExecutionArn = Prelude.Nothing,
+      pipelineExecutionDescription =
+        Prelude.Nothing,
+      pipelineExecutionDisplayName =
+        Prelude.Nothing,
+      pipelineExecutionStatus =
+        Prelude.Nothing,
+      pipelineExperimentConfig =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describePipelineExecutionResponse_createdBy :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe UserContext)
+describePipelineExecutionResponse_createdBy = Lens.lens (\DescribePipelineExecutionResponse' {createdBy} -> createdBy) (\s@DescribePipelineExecutionResponse' {} a -> s {createdBy = a} :: DescribePipelineExecutionResponse)
+
+-- | The time when the pipeline execution was created.
+describePipelineExecutionResponse_creationTime :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.UTCTime)
+describePipelineExecutionResponse_creationTime = Lens.lens (\DescribePipelineExecutionResponse' {creationTime} -> creationTime) (\s@DescribePipelineExecutionResponse' {} a -> s {creationTime = a} :: DescribePipelineExecutionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | If the execution failed, a message describing why.
+describePipelineExecutionResponse_failureReason :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+describePipelineExecutionResponse_failureReason = Lens.lens (\DescribePipelineExecutionResponse' {failureReason} -> failureReason) (\s@DescribePipelineExecutionResponse' {} a -> s {failureReason = a} :: DescribePipelineExecutionResponse)
+
+-- | Undocumented member.
+describePipelineExecutionResponse_lastModifiedBy :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe UserContext)
+describePipelineExecutionResponse_lastModifiedBy = Lens.lens (\DescribePipelineExecutionResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribePipelineExecutionResponse' {} a -> s {lastModifiedBy = a} :: DescribePipelineExecutionResponse)
+
+-- | The time when the pipeline execution was modified last.
+describePipelineExecutionResponse_lastModifiedTime :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.UTCTime)
+describePipelineExecutionResponse_lastModifiedTime = Lens.lens (\DescribePipelineExecutionResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribePipelineExecutionResponse' {} a -> s {lastModifiedTime = a} :: DescribePipelineExecutionResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The parallelism configuration applied to the pipeline.
+describePipelineExecutionResponse_parallelismConfiguration :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe ParallelismConfiguration)
+describePipelineExecutionResponse_parallelismConfiguration = Lens.lens (\DescribePipelineExecutionResponse' {parallelismConfiguration} -> parallelismConfiguration) (\s@DescribePipelineExecutionResponse' {} a -> s {parallelismConfiguration = a} :: DescribePipelineExecutionResponse)
+
+-- | The Amazon Resource Name (ARN) of the pipeline.
+describePipelineExecutionResponse_pipelineArn :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+describePipelineExecutionResponse_pipelineArn = Lens.lens (\DescribePipelineExecutionResponse' {pipelineArn} -> pipelineArn) (\s@DescribePipelineExecutionResponse' {} a -> s {pipelineArn = a} :: DescribePipelineExecutionResponse)
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+describePipelineExecutionResponse_pipelineExecutionArn :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+describePipelineExecutionResponse_pipelineExecutionArn = Lens.lens (\DescribePipelineExecutionResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@DescribePipelineExecutionResponse' {} a -> s {pipelineExecutionArn = a} :: DescribePipelineExecutionResponse)
+
+-- | The description of the pipeline execution.
+describePipelineExecutionResponse_pipelineExecutionDescription :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+describePipelineExecutionResponse_pipelineExecutionDescription = Lens.lens (\DescribePipelineExecutionResponse' {pipelineExecutionDescription} -> pipelineExecutionDescription) (\s@DescribePipelineExecutionResponse' {} a -> s {pipelineExecutionDescription = a} :: DescribePipelineExecutionResponse)
+
+-- | The display name of the pipeline execution.
+describePipelineExecutionResponse_pipelineExecutionDisplayName :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+describePipelineExecutionResponse_pipelineExecutionDisplayName = Lens.lens (\DescribePipelineExecutionResponse' {pipelineExecutionDisplayName} -> pipelineExecutionDisplayName) (\s@DescribePipelineExecutionResponse' {} a -> s {pipelineExecutionDisplayName = a} :: DescribePipelineExecutionResponse)
+
+-- | The status of the pipeline execution.
+describePipelineExecutionResponse_pipelineExecutionStatus :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe PipelineExecutionStatus)
+describePipelineExecutionResponse_pipelineExecutionStatus = Lens.lens (\DescribePipelineExecutionResponse' {pipelineExecutionStatus} -> pipelineExecutionStatus) (\s@DescribePipelineExecutionResponse' {} a -> s {pipelineExecutionStatus = a} :: DescribePipelineExecutionResponse)
+
+-- | Undocumented member.
+describePipelineExecutionResponse_pipelineExperimentConfig :: Lens.Lens' DescribePipelineExecutionResponse (Prelude.Maybe PipelineExperimentConfig)
+describePipelineExecutionResponse_pipelineExperimentConfig = Lens.lens (\DescribePipelineExecutionResponse' {pipelineExperimentConfig} -> pipelineExperimentConfig) (\s@DescribePipelineExecutionResponse' {} a -> s {pipelineExperimentConfig = a} :: DescribePipelineExecutionResponse)
+
+-- | The response's http status code.
+describePipelineExecutionResponse_httpStatus :: Lens.Lens' DescribePipelineExecutionResponse Prelude.Int
+describePipelineExecutionResponse_httpStatus = Lens.lens (\DescribePipelineExecutionResponse' {httpStatus} -> httpStatus) (\s@DescribePipelineExecutionResponse' {} a -> s {httpStatus = a} :: DescribePipelineExecutionResponse)
+
+instance
+  Prelude.NFData
+    DescribePipelineExecutionResponse
+  where
+  rnf DescribePipelineExecutionResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf pipelineExecutionDescription
+      `Prelude.seq` Prelude.rnf pipelineExecutionDisplayName
+      `Prelude.seq` Prelude.rnf pipelineExecutionStatus
+      `Prelude.seq` Prelude.rnf pipelineExperimentConfig
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeProcessingJob.hs b/gen/Amazonka/SageMaker/DescribeProcessingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeProcessingJob.hs
@@ -0,0 +1,462 @@
+{-# 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.DescribeProcessingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a description of a processing job.
+module Amazonka.SageMaker.DescribeProcessingJob
+  ( -- * Creating a Request
+    DescribeProcessingJob (..),
+    newDescribeProcessingJob,
+
+    -- * Request Lenses
+    describeProcessingJob_processingJobName,
+
+    -- * Destructuring the Response
+    DescribeProcessingJobResponse (..),
+    newDescribeProcessingJobResponse,
+
+    -- * Response Lenses
+    describeProcessingJobResponse_autoMLJobArn,
+    describeProcessingJobResponse_environment,
+    describeProcessingJobResponse_exitMessage,
+    describeProcessingJobResponse_experimentConfig,
+    describeProcessingJobResponse_failureReason,
+    describeProcessingJobResponse_lastModifiedTime,
+    describeProcessingJobResponse_monitoringScheduleArn,
+    describeProcessingJobResponse_networkConfig,
+    describeProcessingJobResponse_processingEndTime,
+    describeProcessingJobResponse_processingInputs,
+    describeProcessingJobResponse_processingOutputConfig,
+    describeProcessingJobResponse_processingStartTime,
+    describeProcessingJobResponse_roleArn,
+    describeProcessingJobResponse_stoppingCondition,
+    describeProcessingJobResponse_trainingJobArn,
+    describeProcessingJobResponse_httpStatus,
+    describeProcessingJobResponse_processingJobName,
+    describeProcessingJobResponse_processingResources,
+    describeProcessingJobResponse_appSpecification,
+    describeProcessingJobResponse_processingJobArn,
+    describeProcessingJobResponse_processingJobStatus,
+    describeProcessingJobResponse_creationTime,
+  )
+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:/ 'newDescribeProcessingJob' smart constructor.
+data DescribeProcessingJob = DescribeProcessingJob'
+  { -- | The name of the processing job. The name must be unique within an Amazon
+    -- Web Services Region in the Amazon Web Services account.
+    processingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProcessingJob' 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:
+--
+-- 'processingJobName', 'describeProcessingJob_processingJobName' - The name of the processing job. The name must be unique within an Amazon
+-- Web Services Region in the Amazon Web Services account.
+newDescribeProcessingJob ::
+  -- | 'processingJobName'
+  Prelude.Text ->
+  DescribeProcessingJob
+newDescribeProcessingJob pProcessingJobName_ =
+  DescribeProcessingJob'
+    { processingJobName =
+        pProcessingJobName_
+    }
+
+-- | The name of the processing job. The name must be unique within an Amazon
+-- Web Services Region in the Amazon Web Services account.
+describeProcessingJob_processingJobName :: Lens.Lens' DescribeProcessingJob Prelude.Text
+describeProcessingJob_processingJobName = Lens.lens (\DescribeProcessingJob' {processingJobName} -> processingJobName) (\s@DescribeProcessingJob' {} a -> s {processingJobName = a} :: DescribeProcessingJob)
+
+instance Core.AWSRequest DescribeProcessingJob where
+  type
+    AWSResponse DescribeProcessingJob =
+      DescribeProcessingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeProcessingJobResponse'
+            Prelude.<$> (x Data..?> "AutoMLJobArn")
+            Prelude.<*> (x Data..?> "Environment" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "ExitMessage")
+            Prelude.<*> (x Data..?> "ExperimentConfig")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "MonitoringScheduleArn")
+            Prelude.<*> (x Data..?> "NetworkConfig")
+            Prelude.<*> (x Data..?> "ProcessingEndTime")
+            Prelude.<*> ( x
+                            Data..?> "ProcessingInputs"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "ProcessingOutputConfig")
+            Prelude.<*> (x Data..?> "ProcessingStartTime")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "StoppingCondition")
+            Prelude.<*> (x Data..?> "TrainingJobArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProcessingJobName")
+            Prelude.<*> (x Data..:> "ProcessingResources")
+            Prelude.<*> (x Data..:> "AppSpecification")
+            Prelude.<*> (x Data..:> "ProcessingJobArn")
+            Prelude.<*> (x Data..:> "ProcessingJobStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+      )
+
+instance Prelude.Hashable DescribeProcessingJob where
+  hashWithSalt _salt DescribeProcessingJob' {..} =
+    _salt `Prelude.hashWithSalt` processingJobName
+
+instance Prelude.NFData DescribeProcessingJob where
+  rnf DescribeProcessingJob' {..} =
+    Prelude.rnf processingJobName
+
+instance Data.ToHeaders DescribeProcessingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeProcessingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeProcessingJob where
+  toJSON DescribeProcessingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ProcessingJobName" Data..= processingJobName)
+          ]
+      )
+
+instance Data.ToPath DescribeProcessingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeProcessingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeProcessingJobResponse' smart constructor.
+data DescribeProcessingJobResponse = DescribeProcessingJobResponse'
+  { -- | The ARN of an AutoML job associated with this processing job.
+    autoMLJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The environment variables set in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | An optional string, up to one KB in size, that contains metadata from
+    -- the processing container when the processing job exits.
+    exitMessage :: Prelude.Maybe Prelude.Text,
+    -- | The configuration information used to create an experiment.
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | A string, up to one KB in size, that contains the reason a processing
+    -- job failed, if it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the processing job was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of a monitoring schedule for an endpoint associated with this
+    -- processing job.
+    monitoringScheduleArn :: Prelude.Maybe Prelude.Text,
+    -- | Networking options for a processing job.
+    networkConfig :: Prelude.Maybe NetworkConfig,
+    -- | The time at which the processing job completed.
+    processingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The inputs for a processing job.
+    processingInputs :: Prelude.Maybe [ProcessingInput],
+    -- | Output configuration for the processing job.
+    processingOutputConfig :: Prelude.Maybe ProcessingOutputConfig,
+    -- | The time at which the processing job started.
+    processingStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The time limit for how long the processing job is allowed to run.
+    stoppingCondition :: Prelude.Maybe ProcessingStoppingCondition,
+    -- | The ARN of a training job associated with this processing job.
+    trainingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the processing job. The name must be unique within an Amazon
+    -- Web Services Region in the Amazon Web Services account.
+    processingJobName :: Prelude.Text,
+    -- | Identifies the resources, ML compute instances, and ML storage volumes
+    -- to deploy for a processing job. In distributed training, you specify
+    -- more than one instance.
+    processingResources :: ProcessingResources,
+    -- | Configures the processing job to run a specified container image.
+    appSpecification :: AppSpecification,
+    -- | The Amazon Resource Name (ARN) of the processing job.
+    processingJobArn :: Prelude.Text,
+    -- | Provides the status of a processing job.
+    processingJobStatus :: ProcessingJobStatus,
+    -- | The time at which the processing job was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProcessingJobResponse' 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:
+--
+-- 'autoMLJobArn', 'describeProcessingJobResponse_autoMLJobArn' - The ARN of an AutoML job associated with this processing job.
+--
+-- 'environment', 'describeProcessingJobResponse_environment' - The environment variables set in the Docker container.
+--
+-- 'exitMessage', 'describeProcessingJobResponse_exitMessage' - An optional string, up to one KB in size, that contains metadata from
+-- the processing container when the processing job exits.
+--
+-- 'experimentConfig', 'describeProcessingJobResponse_experimentConfig' - The configuration information used to create an experiment.
+--
+-- 'failureReason', 'describeProcessingJobResponse_failureReason' - A string, up to one KB in size, that contains the reason a processing
+-- job failed, if it failed.
+--
+-- 'lastModifiedTime', 'describeProcessingJobResponse_lastModifiedTime' - The time at which the processing job was last modified.
+--
+-- 'monitoringScheduleArn', 'describeProcessingJobResponse_monitoringScheduleArn' - The ARN of a monitoring schedule for an endpoint associated with this
+-- processing job.
+--
+-- 'networkConfig', 'describeProcessingJobResponse_networkConfig' - Networking options for a processing job.
+--
+-- 'processingEndTime', 'describeProcessingJobResponse_processingEndTime' - The time at which the processing job completed.
+--
+-- 'processingInputs', 'describeProcessingJobResponse_processingInputs' - The inputs for a processing job.
+--
+-- 'processingOutputConfig', 'describeProcessingJobResponse_processingOutputConfig' - Output configuration for the processing job.
+--
+-- 'processingStartTime', 'describeProcessingJobResponse_processingStartTime' - The time at which the processing job started.
+--
+-- 'roleArn', 'describeProcessingJobResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+--
+-- 'stoppingCondition', 'describeProcessingJobResponse_stoppingCondition' - The time limit for how long the processing job is allowed to run.
+--
+-- 'trainingJobArn', 'describeProcessingJobResponse_trainingJobArn' - The ARN of a training job associated with this processing job.
+--
+-- 'httpStatus', 'describeProcessingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'processingJobName', 'describeProcessingJobResponse_processingJobName' - The name of the processing job. The name must be unique within an Amazon
+-- Web Services Region in the Amazon Web Services account.
+--
+-- 'processingResources', 'describeProcessingJobResponse_processingResources' - Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a processing job. In distributed training, you specify
+-- more than one instance.
+--
+-- 'appSpecification', 'describeProcessingJobResponse_appSpecification' - Configures the processing job to run a specified container image.
+--
+-- 'processingJobArn', 'describeProcessingJobResponse_processingJobArn' - The Amazon Resource Name (ARN) of the processing job.
+--
+-- 'processingJobStatus', 'describeProcessingJobResponse_processingJobStatus' - Provides the status of a processing job.
+--
+-- 'creationTime', 'describeProcessingJobResponse_creationTime' - The time at which the processing job was created.
+newDescribeProcessingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'processingJobName'
+  Prelude.Text ->
+  -- | 'processingResources'
+  ProcessingResources ->
+  -- | 'appSpecification'
+  AppSpecification ->
+  -- | 'processingJobArn'
+  Prelude.Text ->
+  -- | 'processingJobStatus'
+  ProcessingJobStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DescribeProcessingJobResponse
+newDescribeProcessingJobResponse
+  pHttpStatus_
+  pProcessingJobName_
+  pProcessingResources_
+  pAppSpecification_
+  pProcessingJobArn_
+  pProcessingJobStatus_
+  pCreationTime_ =
+    DescribeProcessingJobResponse'
+      { autoMLJobArn =
+          Prelude.Nothing,
+        environment = Prelude.Nothing,
+        exitMessage = Prelude.Nothing,
+        experimentConfig = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        monitoringScheduleArn = Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        processingEndTime = Prelude.Nothing,
+        processingInputs = Prelude.Nothing,
+        processingOutputConfig = Prelude.Nothing,
+        processingStartTime = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        trainingJobArn = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        processingJobName = pProcessingJobName_,
+        processingResources = pProcessingResources_,
+        appSpecification = pAppSpecification_,
+        processingJobArn = pProcessingJobArn_,
+        processingJobStatus = pProcessingJobStatus_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_
+      }
+
+-- | The ARN of an AutoML job associated with this processing job.
+describeProcessingJobResponse_autoMLJobArn :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.Text)
+describeProcessingJobResponse_autoMLJobArn = Lens.lens (\DescribeProcessingJobResponse' {autoMLJobArn} -> autoMLJobArn) (\s@DescribeProcessingJobResponse' {} a -> s {autoMLJobArn = a} :: DescribeProcessingJobResponse)
+
+-- | The environment variables set in the Docker container.
+describeProcessingJobResponse_environment :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeProcessingJobResponse_environment = Lens.lens (\DescribeProcessingJobResponse' {environment} -> environment) (\s@DescribeProcessingJobResponse' {} a -> s {environment = a} :: DescribeProcessingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional string, up to one KB in size, that contains metadata from
+-- the processing container when the processing job exits.
+describeProcessingJobResponse_exitMessage :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.Text)
+describeProcessingJobResponse_exitMessage = Lens.lens (\DescribeProcessingJobResponse' {exitMessage} -> exitMessage) (\s@DescribeProcessingJobResponse' {} a -> s {exitMessage = a} :: DescribeProcessingJobResponse)
+
+-- | The configuration information used to create an experiment.
+describeProcessingJobResponse_experimentConfig :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe ExperimentConfig)
+describeProcessingJobResponse_experimentConfig = Lens.lens (\DescribeProcessingJobResponse' {experimentConfig} -> experimentConfig) (\s@DescribeProcessingJobResponse' {} a -> s {experimentConfig = a} :: DescribeProcessingJobResponse)
+
+-- | A string, up to one KB in size, that contains the reason a processing
+-- job failed, if it failed.
+describeProcessingJobResponse_failureReason :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.Text)
+describeProcessingJobResponse_failureReason = Lens.lens (\DescribeProcessingJobResponse' {failureReason} -> failureReason) (\s@DescribeProcessingJobResponse' {} a -> s {failureReason = a} :: DescribeProcessingJobResponse)
+
+-- | The time at which the processing job was last modified.
+describeProcessingJobResponse_lastModifiedTime :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeProcessingJobResponse_lastModifiedTime = Lens.lens (\DescribeProcessingJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeProcessingJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeProcessingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of a monitoring schedule for an endpoint associated with this
+-- processing job.
+describeProcessingJobResponse_monitoringScheduleArn :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.Text)
+describeProcessingJobResponse_monitoringScheduleArn = Lens.lens (\DescribeProcessingJobResponse' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@DescribeProcessingJobResponse' {} a -> s {monitoringScheduleArn = a} :: DescribeProcessingJobResponse)
+
+-- | Networking options for a processing job.
+describeProcessingJobResponse_networkConfig :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe NetworkConfig)
+describeProcessingJobResponse_networkConfig = Lens.lens (\DescribeProcessingJobResponse' {networkConfig} -> networkConfig) (\s@DescribeProcessingJobResponse' {} a -> s {networkConfig = a} :: DescribeProcessingJobResponse)
+
+-- | The time at which the processing job completed.
+describeProcessingJobResponse_processingEndTime :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeProcessingJobResponse_processingEndTime = Lens.lens (\DescribeProcessingJobResponse' {processingEndTime} -> processingEndTime) (\s@DescribeProcessingJobResponse' {} a -> s {processingEndTime = a} :: DescribeProcessingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The inputs for a processing job.
+describeProcessingJobResponse_processingInputs :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe [ProcessingInput])
+describeProcessingJobResponse_processingInputs = Lens.lens (\DescribeProcessingJobResponse' {processingInputs} -> processingInputs) (\s@DescribeProcessingJobResponse' {} a -> s {processingInputs = a} :: DescribeProcessingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Output configuration for the processing job.
+describeProcessingJobResponse_processingOutputConfig :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe ProcessingOutputConfig)
+describeProcessingJobResponse_processingOutputConfig = Lens.lens (\DescribeProcessingJobResponse' {processingOutputConfig} -> processingOutputConfig) (\s@DescribeProcessingJobResponse' {} a -> s {processingOutputConfig = a} :: DescribeProcessingJobResponse)
+
+-- | The time at which the processing job started.
+describeProcessingJobResponse_processingStartTime :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeProcessingJobResponse_processingStartTime = Lens.lens (\DescribeProcessingJobResponse' {processingStartTime} -> processingStartTime) (\s@DescribeProcessingJobResponse' {} a -> s {processingStartTime = a} :: DescribeProcessingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+describeProcessingJobResponse_roleArn :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.Text)
+describeProcessingJobResponse_roleArn = Lens.lens (\DescribeProcessingJobResponse' {roleArn} -> roleArn) (\s@DescribeProcessingJobResponse' {} a -> s {roleArn = a} :: DescribeProcessingJobResponse)
+
+-- | The time limit for how long the processing job is allowed to run.
+describeProcessingJobResponse_stoppingCondition :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe ProcessingStoppingCondition)
+describeProcessingJobResponse_stoppingCondition = Lens.lens (\DescribeProcessingJobResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeProcessingJobResponse' {} a -> s {stoppingCondition = a} :: DescribeProcessingJobResponse)
+
+-- | The ARN of a training job associated with this processing job.
+describeProcessingJobResponse_trainingJobArn :: Lens.Lens' DescribeProcessingJobResponse (Prelude.Maybe Prelude.Text)
+describeProcessingJobResponse_trainingJobArn = Lens.lens (\DescribeProcessingJobResponse' {trainingJobArn} -> trainingJobArn) (\s@DescribeProcessingJobResponse' {} a -> s {trainingJobArn = a} :: DescribeProcessingJobResponse)
+
+-- | The response's http status code.
+describeProcessingJobResponse_httpStatus :: Lens.Lens' DescribeProcessingJobResponse Prelude.Int
+describeProcessingJobResponse_httpStatus = Lens.lens (\DescribeProcessingJobResponse' {httpStatus} -> httpStatus) (\s@DescribeProcessingJobResponse' {} a -> s {httpStatus = a} :: DescribeProcessingJobResponse)
+
+-- | The name of the processing job. The name must be unique within an Amazon
+-- Web Services Region in the Amazon Web Services account.
+describeProcessingJobResponse_processingJobName :: Lens.Lens' DescribeProcessingJobResponse Prelude.Text
+describeProcessingJobResponse_processingJobName = Lens.lens (\DescribeProcessingJobResponse' {processingJobName} -> processingJobName) (\s@DescribeProcessingJobResponse' {} a -> s {processingJobName = a} :: DescribeProcessingJobResponse)
+
+-- | Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a processing job. In distributed training, you specify
+-- more than one instance.
+describeProcessingJobResponse_processingResources :: Lens.Lens' DescribeProcessingJobResponse ProcessingResources
+describeProcessingJobResponse_processingResources = Lens.lens (\DescribeProcessingJobResponse' {processingResources} -> processingResources) (\s@DescribeProcessingJobResponse' {} a -> s {processingResources = a} :: DescribeProcessingJobResponse)
+
+-- | Configures the processing job to run a specified container image.
+describeProcessingJobResponse_appSpecification :: Lens.Lens' DescribeProcessingJobResponse AppSpecification
+describeProcessingJobResponse_appSpecification = Lens.lens (\DescribeProcessingJobResponse' {appSpecification} -> appSpecification) (\s@DescribeProcessingJobResponse' {} a -> s {appSpecification = a} :: DescribeProcessingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the processing job.
+describeProcessingJobResponse_processingJobArn :: Lens.Lens' DescribeProcessingJobResponse Prelude.Text
+describeProcessingJobResponse_processingJobArn = Lens.lens (\DescribeProcessingJobResponse' {processingJobArn} -> processingJobArn) (\s@DescribeProcessingJobResponse' {} a -> s {processingJobArn = a} :: DescribeProcessingJobResponse)
+
+-- | Provides the status of a processing job.
+describeProcessingJobResponse_processingJobStatus :: Lens.Lens' DescribeProcessingJobResponse ProcessingJobStatus
+describeProcessingJobResponse_processingJobStatus = Lens.lens (\DescribeProcessingJobResponse' {processingJobStatus} -> processingJobStatus) (\s@DescribeProcessingJobResponse' {} a -> s {processingJobStatus = a} :: DescribeProcessingJobResponse)
+
+-- | The time at which the processing job was created.
+describeProcessingJobResponse_creationTime :: Lens.Lens' DescribeProcessingJobResponse Prelude.UTCTime
+describeProcessingJobResponse_creationTime = Lens.lens (\DescribeProcessingJobResponse' {creationTime} -> creationTime) (\s@DescribeProcessingJobResponse' {} a -> s {creationTime = a} :: DescribeProcessingJobResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeProcessingJobResponse where
+  rnf DescribeProcessingJobResponse' {..} =
+    Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf exitMessage
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf processingEndTime
+      `Prelude.seq` Prelude.rnf processingInputs
+      `Prelude.seq` Prelude.rnf processingOutputConfig
+      `Prelude.seq` Prelude.rnf processingStartTime
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf trainingJobArn
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf processingJobName
+      `Prelude.seq` Prelude.rnf processingResources
+      `Prelude.seq` Prelude.rnf appSpecification
+      `Prelude.seq` Prelude.rnf processingJobArn
+      `Prelude.seq` Prelude.rnf
+        processingJobStatus
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/DescribeProject.hs b/gen/Amazonka/SageMaker/DescribeProject.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeProject.hs
@@ -0,0 +1,313 @@
+{-# 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.DescribeProject
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the details of a project.
+module Amazonka.SageMaker.DescribeProject
+  ( -- * Creating a Request
+    DescribeProject (..),
+    newDescribeProject,
+
+    -- * Request Lenses
+    describeProject_projectName,
+
+    -- * Destructuring the Response
+    DescribeProjectResponse (..),
+    newDescribeProjectResponse,
+
+    -- * Response Lenses
+    describeProjectResponse_createdBy,
+    describeProjectResponse_lastModifiedBy,
+    describeProjectResponse_lastModifiedTime,
+    describeProjectResponse_projectDescription,
+    describeProjectResponse_serviceCatalogProvisionedProductDetails,
+    describeProjectResponse_httpStatus,
+    describeProjectResponse_projectArn,
+    describeProjectResponse_projectName,
+    describeProjectResponse_projectId,
+    describeProjectResponse_serviceCatalogProvisioningDetails,
+    describeProjectResponse_projectStatus,
+    describeProjectResponse_creationTime,
+  )
+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:/ 'newDescribeProject' smart constructor.
+data DescribeProject = DescribeProject'
+  { -- | The name of the project to describe.
+    projectName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProject' 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:
+--
+-- 'projectName', 'describeProject_projectName' - The name of the project to describe.
+newDescribeProject ::
+  -- | 'projectName'
+  Prelude.Text ->
+  DescribeProject
+newDescribeProject pProjectName_ =
+  DescribeProject' {projectName = pProjectName_}
+
+-- | The name of the project to describe.
+describeProject_projectName :: Lens.Lens' DescribeProject Prelude.Text
+describeProject_projectName = Lens.lens (\DescribeProject' {projectName} -> projectName) (\s@DescribeProject' {} a -> s {projectName = a} :: DescribeProject)
+
+instance Core.AWSRequest DescribeProject where
+  type
+    AWSResponse DescribeProject =
+      DescribeProjectResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeProjectResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "ProjectDescription")
+            Prelude.<*> ( x
+                            Data..?> "ServiceCatalogProvisionedProductDetails"
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProjectArn")
+            Prelude.<*> (x Data..:> "ProjectName")
+            Prelude.<*> (x Data..:> "ProjectId")
+            Prelude.<*> (x Data..:> "ServiceCatalogProvisioningDetails")
+            Prelude.<*> (x Data..:> "ProjectStatus")
+            Prelude.<*> (x Data..:> "CreationTime")
+      )
+
+instance Prelude.Hashable DescribeProject where
+  hashWithSalt _salt DescribeProject' {..} =
+    _salt `Prelude.hashWithSalt` projectName
+
+instance Prelude.NFData DescribeProject where
+  rnf DescribeProject' {..} = Prelude.rnf projectName
+
+instance Data.ToHeaders DescribeProject where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeProject" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeProject where
+  toJSON DescribeProject' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ProjectName" Data..= projectName)]
+      )
+
+instance Data.ToPath DescribeProject where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeProject where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeProjectResponse' smart constructor.
+data DescribeProjectResponse = DescribeProjectResponse'
+  { createdBy :: Prelude.Maybe UserContext,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The timestamp when project was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the project.
+    projectDescription :: Prelude.Maybe Prelude.Text,
+    -- | Information about a provisioned service catalog product.
+    serviceCatalogProvisionedProductDetails :: Prelude.Maybe ServiceCatalogProvisionedProductDetails,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the project.
+    projectArn :: Prelude.Text,
+    -- | The name of the project.
+    projectName :: Prelude.Text,
+    -- | The ID of the project.
+    projectId :: Prelude.Text,
+    -- | Information used to provision a service catalog product. For
+    -- information, see
+    -- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+    serviceCatalogProvisioningDetails :: ServiceCatalogProvisioningDetails,
+    -- | The status of the project.
+    projectStatus :: ProjectStatus,
+    -- | The time when the project was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProjectResponse' 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:
+--
+-- 'createdBy', 'describeProjectResponse_createdBy' - Undocumented member.
+--
+-- 'lastModifiedBy', 'describeProjectResponse_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'describeProjectResponse_lastModifiedTime' - The timestamp when project was last modified.
+--
+-- 'projectDescription', 'describeProjectResponse_projectDescription' - The description of the project.
+--
+-- 'serviceCatalogProvisionedProductDetails', 'describeProjectResponse_serviceCatalogProvisionedProductDetails' - Information about a provisioned service catalog product.
+--
+-- 'httpStatus', 'describeProjectResponse_httpStatus' - The response's http status code.
+--
+-- 'projectArn', 'describeProjectResponse_projectArn' - The Amazon Resource Name (ARN) of the project.
+--
+-- 'projectName', 'describeProjectResponse_projectName' - The name of the project.
+--
+-- 'projectId', 'describeProjectResponse_projectId' - The ID of the project.
+--
+-- 'serviceCatalogProvisioningDetails', 'describeProjectResponse_serviceCatalogProvisioningDetails' - Information used to provision a service catalog product. For
+-- information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+--
+-- 'projectStatus', 'describeProjectResponse_projectStatus' - The status of the project.
+--
+-- 'creationTime', 'describeProjectResponse_creationTime' - The time when the project was created.
+newDescribeProjectResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'projectArn'
+  Prelude.Text ->
+  -- | 'projectName'
+  Prelude.Text ->
+  -- | 'projectId'
+  Prelude.Text ->
+  -- | 'serviceCatalogProvisioningDetails'
+  ServiceCatalogProvisioningDetails ->
+  -- | 'projectStatus'
+  ProjectStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DescribeProjectResponse
+newDescribeProjectResponse
+  pHttpStatus_
+  pProjectArn_
+  pProjectName_
+  pProjectId_
+  pServiceCatalogProvisioningDetails_
+  pProjectStatus_
+  pCreationTime_ =
+    DescribeProjectResponse'
+      { createdBy =
+          Prelude.Nothing,
+        lastModifiedBy = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        projectDescription = Prelude.Nothing,
+        serviceCatalogProvisionedProductDetails =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        projectArn = pProjectArn_,
+        projectName = pProjectName_,
+        projectId = pProjectId_,
+        serviceCatalogProvisioningDetails =
+          pServiceCatalogProvisioningDetails_,
+        projectStatus = pProjectStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | Undocumented member.
+describeProjectResponse_createdBy :: Lens.Lens' DescribeProjectResponse (Prelude.Maybe UserContext)
+describeProjectResponse_createdBy = Lens.lens (\DescribeProjectResponse' {createdBy} -> createdBy) (\s@DescribeProjectResponse' {} a -> s {createdBy = a} :: DescribeProjectResponse)
+
+-- | Undocumented member.
+describeProjectResponse_lastModifiedBy :: Lens.Lens' DescribeProjectResponse (Prelude.Maybe UserContext)
+describeProjectResponse_lastModifiedBy = Lens.lens (\DescribeProjectResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeProjectResponse' {} a -> s {lastModifiedBy = a} :: DescribeProjectResponse)
+
+-- | The timestamp when project was last modified.
+describeProjectResponse_lastModifiedTime :: Lens.Lens' DescribeProjectResponse (Prelude.Maybe Prelude.UTCTime)
+describeProjectResponse_lastModifiedTime = Lens.lens (\DescribeProjectResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeProjectResponse' {} a -> s {lastModifiedTime = a} :: DescribeProjectResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the project.
+describeProjectResponse_projectDescription :: Lens.Lens' DescribeProjectResponse (Prelude.Maybe Prelude.Text)
+describeProjectResponse_projectDescription = Lens.lens (\DescribeProjectResponse' {projectDescription} -> projectDescription) (\s@DescribeProjectResponse' {} a -> s {projectDescription = a} :: DescribeProjectResponse)
+
+-- | Information about a provisioned service catalog product.
+describeProjectResponse_serviceCatalogProvisionedProductDetails :: Lens.Lens' DescribeProjectResponse (Prelude.Maybe ServiceCatalogProvisionedProductDetails)
+describeProjectResponse_serviceCatalogProvisionedProductDetails = Lens.lens (\DescribeProjectResponse' {serviceCatalogProvisionedProductDetails} -> serviceCatalogProvisionedProductDetails) (\s@DescribeProjectResponse' {} a -> s {serviceCatalogProvisionedProductDetails = a} :: DescribeProjectResponse)
+
+-- | The response's http status code.
+describeProjectResponse_httpStatus :: Lens.Lens' DescribeProjectResponse Prelude.Int
+describeProjectResponse_httpStatus = Lens.lens (\DescribeProjectResponse' {httpStatus} -> httpStatus) (\s@DescribeProjectResponse' {} a -> s {httpStatus = a} :: DescribeProjectResponse)
+
+-- | The Amazon Resource Name (ARN) of the project.
+describeProjectResponse_projectArn :: Lens.Lens' DescribeProjectResponse Prelude.Text
+describeProjectResponse_projectArn = Lens.lens (\DescribeProjectResponse' {projectArn} -> projectArn) (\s@DescribeProjectResponse' {} a -> s {projectArn = a} :: DescribeProjectResponse)
+
+-- | The name of the project.
+describeProjectResponse_projectName :: Lens.Lens' DescribeProjectResponse Prelude.Text
+describeProjectResponse_projectName = Lens.lens (\DescribeProjectResponse' {projectName} -> projectName) (\s@DescribeProjectResponse' {} a -> s {projectName = a} :: DescribeProjectResponse)
+
+-- | The ID of the project.
+describeProjectResponse_projectId :: Lens.Lens' DescribeProjectResponse Prelude.Text
+describeProjectResponse_projectId = Lens.lens (\DescribeProjectResponse' {projectId} -> projectId) (\s@DescribeProjectResponse' {} a -> s {projectId = a} :: DescribeProjectResponse)
+
+-- | Information used to provision a service catalog product. For
+-- information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+describeProjectResponse_serviceCatalogProvisioningDetails :: Lens.Lens' DescribeProjectResponse ServiceCatalogProvisioningDetails
+describeProjectResponse_serviceCatalogProvisioningDetails = Lens.lens (\DescribeProjectResponse' {serviceCatalogProvisioningDetails} -> serviceCatalogProvisioningDetails) (\s@DescribeProjectResponse' {} a -> s {serviceCatalogProvisioningDetails = a} :: DescribeProjectResponse)
+
+-- | The status of the project.
+describeProjectResponse_projectStatus :: Lens.Lens' DescribeProjectResponse ProjectStatus
+describeProjectResponse_projectStatus = Lens.lens (\DescribeProjectResponse' {projectStatus} -> projectStatus) (\s@DescribeProjectResponse' {} a -> s {projectStatus = a} :: DescribeProjectResponse)
+
+-- | The time when the project was created.
+describeProjectResponse_creationTime :: Lens.Lens' DescribeProjectResponse Prelude.UTCTime
+describeProjectResponse_creationTime = Lens.lens (\DescribeProjectResponse' {creationTime} -> creationTime) (\s@DescribeProjectResponse' {} a -> s {creationTime = a} :: DescribeProjectResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeProjectResponse where
+  rnf DescribeProjectResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf projectDescription
+      `Prelude.seq` Prelude.rnf serviceCatalogProvisionedProductDetails
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf projectArn
+      `Prelude.seq` Prelude.rnf projectName
+      `Prelude.seq` Prelude.rnf projectId
+      `Prelude.seq` Prelude.rnf serviceCatalogProvisioningDetails
+      `Prelude.seq` Prelude.rnf projectStatus
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/DescribeSpace.hs b/gen/Amazonka/SageMaker/DescribeSpace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeSpace.hs
@@ -0,0 +1,282 @@
+{-# 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.DescribeSpace
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the space.
+module Amazonka.SageMaker.DescribeSpace
+  ( -- * Creating a Request
+    DescribeSpace (..),
+    newDescribeSpace,
+
+    -- * Request Lenses
+    describeSpace_domainId,
+    describeSpace_spaceName,
+
+    -- * Destructuring the Response
+    DescribeSpaceResponse (..),
+    newDescribeSpaceResponse,
+
+    -- * Response Lenses
+    describeSpaceResponse_creationTime,
+    describeSpaceResponse_domainId,
+    describeSpaceResponse_failureReason,
+    describeSpaceResponse_homeEfsFileSystemUid,
+    describeSpaceResponse_lastModifiedTime,
+    describeSpaceResponse_spaceArn,
+    describeSpaceResponse_spaceName,
+    describeSpaceResponse_spaceSettings,
+    describeSpaceResponse_status,
+    describeSpaceResponse_httpStatus,
+  )
+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:/ 'newDescribeSpace' smart constructor.
+data DescribeSpace = DescribeSpace'
+  { -- | The ID of the associated Domain.
+    domainId :: Prelude.Text,
+    -- | The name of the space.
+    spaceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSpace' 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:
+--
+-- 'domainId', 'describeSpace_domainId' - The ID of the associated Domain.
+--
+-- 'spaceName', 'describeSpace_spaceName' - The name of the space.
+newDescribeSpace ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'spaceName'
+  Prelude.Text ->
+  DescribeSpace
+newDescribeSpace pDomainId_ pSpaceName_ =
+  DescribeSpace'
+    { domainId = pDomainId_,
+      spaceName = pSpaceName_
+    }
+
+-- | The ID of the associated Domain.
+describeSpace_domainId :: Lens.Lens' DescribeSpace Prelude.Text
+describeSpace_domainId = Lens.lens (\DescribeSpace' {domainId} -> domainId) (\s@DescribeSpace' {} a -> s {domainId = a} :: DescribeSpace)
+
+-- | The name of the space.
+describeSpace_spaceName :: Lens.Lens' DescribeSpace Prelude.Text
+describeSpace_spaceName = Lens.lens (\DescribeSpace' {spaceName} -> spaceName) (\s@DescribeSpace' {} a -> s {spaceName = a} :: DescribeSpace)
+
+instance Core.AWSRequest DescribeSpace where
+  type
+    AWSResponse DescribeSpace =
+      DescribeSpaceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeSpaceResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DomainId")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "HomeEfsFileSystemUid")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "SpaceArn")
+            Prelude.<*> (x Data..?> "SpaceName")
+            Prelude.<*> (x Data..?> "SpaceSettings")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeSpace where
+  hashWithSalt _salt DescribeSpace' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` spaceName
+
+instance Prelude.NFData DescribeSpace where
+  rnf DescribeSpace' {..} =
+    Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf spaceName
+
+instance Data.ToHeaders DescribeSpace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeSpace" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeSpace where
+  toJSON DescribeSpace' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("SpaceName" Data..= spaceName)
+          ]
+      )
+
+instance Data.ToPath DescribeSpace where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeSpace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeSpaceResponse' smart constructor.
+data DescribeSpaceResponse = DescribeSpaceResponse'
+  { -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the associated Domain.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The failure reason.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the space\'s profile in the Amazon Elastic File System volume.
+    homeEfsFileSystemUid :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The space\'s Amazon Resource Name (ARN).
+    spaceArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the space.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | A collection of space settings.
+    spaceSettings :: Prelude.Maybe SpaceSettings,
+    -- | The status.
+    status :: Prelude.Maybe SpaceStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSpaceResponse' 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:
+--
+-- 'creationTime', 'describeSpaceResponse_creationTime' - The creation time.
+--
+-- 'domainId', 'describeSpaceResponse_domainId' - The ID of the associated Domain.
+--
+-- 'failureReason', 'describeSpaceResponse_failureReason' - The failure reason.
+--
+-- 'homeEfsFileSystemUid', 'describeSpaceResponse_homeEfsFileSystemUid' - The ID of the space\'s profile in the Amazon Elastic File System volume.
+--
+-- 'lastModifiedTime', 'describeSpaceResponse_lastModifiedTime' - The last modified time.
+--
+-- 'spaceArn', 'describeSpaceResponse_spaceArn' - The space\'s Amazon Resource Name (ARN).
+--
+-- 'spaceName', 'describeSpaceResponse_spaceName' - The name of the space.
+--
+-- 'spaceSettings', 'describeSpaceResponse_spaceSettings' - A collection of space settings.
+--
+-- 'status', 'describeSpaceResponse_status' - The status.
+--
+-- 'httpStatus', 'describeSpaceResponse_httpStatus' - The response's http status code.
+newDescribeSpaceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeSpaceResponse
+newDescribeSpaceResponse pHttpStatus_ =
+  DescribeSpaceResponse'
+    { creationTime =
+        Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      homeEfsFileSystemUid = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      spaceArn = Prelude.Nothing,
+      spaceName = Prelude.Nothing,
+      spaceSettings = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The creation time.
+describeSpaceResponse_creationTime :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.UTCTime)
+describeSpaceResponse_creationTime = Lens.lens (\DescribeSpaceResponse' {creationTime} -> creationTime) (\s@DescribeSpaceResponse' {} a -> s {creationTime = a} :: DescribeSpaceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the associated Domain.
+describeSpaceResponse_domainId :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.Text)
+describeSpaceResponse_domainId = Lens.lens (\DescribeSpaceResponse' {domainId} -> domainId) (\s@DescribeSpaceResponse' {} a -> s {domainId = a} :: DescribeSpaceResponse)
+
+-- | The failure reason.
+describeSpaceResponse_failureReason :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.Text)
+describeSpaceResponse_failureReason = Lens.lens (\DescribeSpaceResponse' {failureReason} -> failureReason) (\s@DescribeSpaceResponse' {} a -> s {failureReason = a} :: DescribeSpaceResponse)
+
+-- | The ID of the space\'s profile in the Amazon Elastic File System volume.
+describeSpaceResponse_homeEfsFileSystemUid :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.Text)
+describeSpaceResponse_homeEfsFileSystemUid = Lens.lens (\DescribeSpaceResponse' {homeEfsFileSystemUid} -> homeEfsFileSystemUid) (\s@DescribeSpaceResponse' {} a -> s {homeEfsFileSystemUid = a} :: DescribeSpaceResponse)
+
+-- | The last modified time.
+describeSpaceResponse_lastModifiedTime :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.UTCTime)
+describeSpaceResponse_lastModifiedTime = Lens.lens (\DescribeSpaceResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeSpaceResponse' {} a -> s {lastModifiedTime = a} :: DescribeSpaceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The space\'s Amazon Resource Name (ARN).
+describeSpaceResponse_spaceArn :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.Text)
+describeSpaceResponse_spaceArn = Lens.lens (\DescribeSpaceResponse' {spaceArn} -> spaceArn) (\s@DescribeSpaceResponse' {} a -> s {spaceArn = a} :: DescribeSpaceResponse)
+
+-- | The name of the space.
+describeSpaceResponse_spaceName :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe Prelude.Text)
+describeSpaceResponse_spaceName = Lens.lens (\DescribeSpaceResponse' {spaceName} -> spaceName) (\s@DescribeSpaceResponse' {} a -> s {spaceName = a} :: DescribeSpaceResponse)
+
+-- | A collection of space settings.
+describeSpaceResponse_spaceSettings :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe SpaceSettings)
+describeSpaceResponse_spaceSettings = Lens.lens (\DescribeSpaceResponse' {spaceSettings} -> spaceSettings) (\s@DescribeSpaceResponse' {} a -> s {spaceSettings = a} :: DescribeSpaceResponse)
+
+-- | The status.
+describeSpaceResponse_status :: Lens.Lens' DescribeSpaceResponse (Prelude.Maybe SpaceStatus)
+describeSpaceResponse_status = Lens.lens (\DescribeSpaceResponse' {status} -> status) (\s@DescribeSpaceResponse' {} a -> s {status = a} :: DescribeSpaceResponse)
+
+-- | The response's http status code.
+describeSpaceResponse_httpStatus :: Lens.Lens' DescribeSpaceResponse Prelude.Int
+describeSpaceResponse_httpStatus = Lens.lens (\DescribeSpaceResponse' {httpStatus} -> httpStatus) (\s@DescribeSpaceResponse' {} a -> s {httpStatus = a} :: DescribeSpaceResponse)
+
+instance Prelude.NFData DescribeSpaceResponse where
+  rnf DescribeSpaceResponse' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf homeEfsFileSystemUid
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf spaceArn
+      `Prelude.seq` Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf spaceSettings
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeStudioLifecycleConfig.hs b/gen/Amazonka/SageMaker/DescribeStudioLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeStudioLifecycleConfig.hs
@@ -0,0 +1,254 @@
+{-# 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.DescribeStudioLifecycleConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the Studio Lifecycle Configuration.
+module Amazonka.SageMaker.DescribeStudioLifecycleConfig
+  ( -- * Creating a Request
+    DescribeStudioLifecycleConfig (..),
+    newDescribeStudioLifecycleConfig,
+
+    -- * Request Lenses
+    describeStudioLifecycleConfig_studioLifecycleConfigName,
+
+    -- * Destructuring the Response
+    DescribeStudioLifecycleConfigResponse (..),
+    newDescribeStudioLifecycleConfigResponse,
+
+    -- * Response Lenses
+    describeStudioLifecycleConfigResponse_creationTime,
+    describeStudioLifecycleConfigResponse_lastModifiedTime,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigAppType,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigArn,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigContent,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigName,
+    describeStudioLifecycleConfigResponse_httpStatus,
+  )
+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:/ 'newDescribeStudioLifecycleConfig' smart constructor.
+data DescribeStudioLifecycleConfig = DescribeStudioLifecycleConfig'
+  { -- | The name of the Studio Lifecycle Configuration to describe.
+    studioLifecycleConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeStudioLifecycleConfig' 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:
+--
+-- 'studioLifecycleConfigName', 'describeStudioLifecycleConfig_studioLifecycleConfigName' - The name of the Studio Lifecycle Configuration to describe.
+newDescribeStudioLifecycleConfig ::
+  -- | 'studioLifecycleConfigName'
+  Prelude.Text ->
+  DescribeStudioLifecycleConfig
+newDescribeStudioLifecycleConfig
+  pStudioLifecycleConfigName_ =
+    DescribeStudioLifecycleConfig'
+      { studioLifecycleConfigName =
+          pStudioLifecycleConfigName_
+      }
+
+-- | The name of the Studio Lifecycle Configuration to describe.
+describeStudioLifecycleConfig_studioLifecycleConfigName :: Lens.Lens' DescribeStudioLifecycleConfig Prelude.Text
+describeStudioLifecycleConfig_studioLifecycleConfigName = Lens.lens (\DescribeStudioLifecycleConfig' {studioLifecycleConfigName} -> studioLifecycleConfigName) (\s@DescribeStudioLifecycleConfig' {} a -> s {studioLifecycleConfigName = a} :: DescribeStudioLifecycleConfig)
+
+instance
+  Core.AWSRequest
+    DescribeStudioLifecycleConfig
+  where
+  type
+    AWSResponse DescribeStudioLifecycleConfig =
+      DescribeStudioLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeStudioLifecycleConfigResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "StudioLifecycleConfigAppType")
+            Prelude.<*> (x Data..?> "StudioLifecycleConfigArn")
+            Prelude.<*> (x Data..?> "StudioLifecycleConfigContent")
+            Prelude.<*> (x Data..?> "StudioLifecycleConfigName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeStudioLifecycleConfig
+  where
+  hashWithSalt _salt DescribeStudioLifecycleConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` studioLifecycleConfigName
+
+instance Prelude.NFData DescribeStudioLifecycleConfig where
+  rnf DescribeStudioLifecycleConfig' {..} =
+    Prelude.rnf studioLifecycleConfigName
+
+instance Data.ToHeaders DescribeStudioLifecycleConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeStudioLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeStudioLifecycleConfig where
+  toJSON DescribeStudioLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "StudioLifecycleConfigName"
+                  Data..= studioLifecycleConfigName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeStudioLifecycleConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeStudioLifecycleConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeStudioLifecycleConfigResponse' smart constructor.
+data DescribeStudioLifecycleConfigResponse = DescribeStudioLifecycleConfigResponse'
+  { -- | The creation time of the Studio Lifecycle Configuration.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | This value is equivalent to CreationTime because Studio Lifecycle
+    -- Configurations are immutable.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The App type that the Lifecycle Configuration is attached to.
+    studioLifecycleConfigAppType :: Prelude.Maybe StudioLifecycleConfigAppType,
+    -- | The ARN of the Lifecycle Configuration to describe.
+    studioLifecycleConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The content of your Studio Lifecycle Configuration script.
+    studioLifecycleConfigContent :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Studio Lifecycle Configuration that is described.
+    studioLifecycleConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeStudioLifecycleConfigResponse' 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:
+--
+-- 'creationTime', 'describeStudioLifecycleConfigResponse_creationTime' - The creation time of the Studio Lifecycle Configuration.
+--
+-- 'lastModifiedTime', 'describeStudioLifecycleConfigResponse_lastModifiedTime' - This value is equivalent to CreationTime because Studio Lifecycle
+-- Configurations are immutable.
+--
+-- 'studioLifecycleConfigAppType', 'describeStudioLifecycleConfigResponse_studioLifecycleConfigAppType' - The App type that the Lifecycle Configuration is attached to.
+--
+-- 'studioLifecycleConfigArn', 'describeStudioLifecycleConfigResponse_studioLifecycleConfigArn' - The ARN of the Lifecycle Configuration to describe.
+--
+-- 'studioLifecycleConfigContent', 'describeStudioLifecycleConfigResponse_studioLifecycleConfigContent' - The content of your Studio Lifecycle Configuration script.
+--
+-- 'studioLifecycleConfigName', 'describeStudioLifecycleConfigResponse_studioLifecycleConfigName' - The name of the Studio Lifecycle Configuration that is described.
+--
+-- 'httpStatus', 'describeStudioLifecycleConfigResponse_httpStatus' - The response's http status code.
+newDescribeStudioLifecycleConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeStudioLifecycleConfigResponse
+newDescribeStudioLifecycleConfigResponse pHttpStatus_ =
+  DescribeStudioLifecycleConfigResponse'
+    { creationTime =
+        Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      studioLifecycleConfigAppType =
+        Prelude.Nothing,
+      studioLifecycleConfigArn =
+        Prelude.Nothing,
+      studioLifecycleConfigContent =
+        Prelude.Nothing,
+      studioLifecycleConfigName =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The creation time of the Studio Lifecycle Configuration.
+describeStudioLifecycleConfigResponse_creationTime :: Lens.Lens' DescribeStudioLifecycleConfigResponse (Prelude.Maybe Prelude.UTCTime)
+describeStudioLifecycleConfigResponse_creationTime = Lens.lens (\DescribeStudioLifecycleConfigResponse' {creationTime} -> creationTime) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {creationTime = a} :: DescribeStudioLifecycleConfigResponse) Prelude.. Lens.mapping Data._Time
+
+-- | This value is equivalent to CreationTime because Studio Lifecycle
+-- Configurations are immutable.
+describeStudioLifecycleConfigResponse_lastModifiedTime :: Lens.Lens' DescribeStudioLifecycleConfigResponse (Prelude.Maybe Prelude.UTCTime)
+describeStudioLifecycleConfigResponse_lastModifiedTime = Lens.lens (\DescribeStudioLifecycleConfigResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {lastModifiedTime = a} :: DescribeStudioLifecycleConfigResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The App type that the Lifecycle Configuration is attached to.
+describeStudioLifecycleConfigResponse_studioLifecycleConfigAppType :: Lens.Lens' DescribeStudioLifecycleConfigResponse (Prelude.Maybe StudioLifecycleConfigAppType)
+describeStudioLifecycleConfigResponse_studioLifecycleConfigAppType = Lens.lens (\DescribeStudioLifecycleConfigResponse' {studioLifecycleConfigAppType} -> studioLifecycleConfigAppType) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {studioLifecycleConfigAppType = a} :: DescribeStudioLifecycleConfigResponse)
+
+-- | The ARN of the Lifecycle Configuration to describe.
+describeStudioLifecycleConfigResponse_studioLifecycleConfigArn :: Lens.Lens' DescribeStudioLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+describeStudioLifecycleConfigResponse_studioLifecycleConfigArn = Lens.lens (\DescribeStudioLifecycleConfigResponse' {studioLifecycleConfigArn} -> studioLifecycleConfigArn) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {studioLifecycleConfigArn = a} :: DescribeStudioLifecycleConfigResponse)
+
+-- | The content of your Studio Lifecycle Configuration script.
+describeStudioLifecycleConfigResponse_studioLifecycleConfigContent :: Lens.Lens' DescribeStudioLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+describeStudioLifecycleConfigResponse_studioLifecycleConfigContent = Lens.lens (\DescribeStudioLifecycleConfigResponse' {studioLifecycleConfigContent} -> studioLifecycleConfigContent) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {studioLifecycleConfigContent = a} :: DescribeStudioLifecycleConfigResponse)
+
+-- | The name of the Studio Lifecycle Configuration that is described.
+describeStudioLifecycleConfigResponse_studioLifecycleConfigName :: Lens.Lens' DescribeStudioLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
+describeStudioLifecycleConfigResponse_studioLifecycleConfigName = Lens.lens (\DescribeStudioLifecycleConfigResponse' {studioLifecycleConfigName} -> studioLifecycleConfigName) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {studioLifecycleConfigName = a} :: DescribeStudioLifecycleConfigResponse)
+
+-- | The response's http status code.
+describeStudioLifecycleConfigResponse_httpStatus :: Lens.Lens' DescribeStudioLifecycleConfigResponse Prelude.Int
+describeStudioLifecycleConfigResponse_httpStatus = Lens.lens (\DescribeStudioLifecycleConfigResponse' {httpStatus} -> httpStatus) (\s@DescribeStudioLifecycleConfigResponse' {} a -> s {httpStatus = a} :: DescribeStudioLifecycleConfigResponse)
+
+instance
+  Prelude.NFData
+    DescribeStudioLifecycleConfigResponse
+  where
+  rnf DescribeStudioLifecycleConfigResponse' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigAppType
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigArn
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigContent
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeSubscribedWorkteam.hs b/gen/Amazonka/SageMaker/DescribeSubscribedWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeSubscribedWorkteam.hs
@@ -0,0 +1,182 @@
+{-# 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.DescribeSubscribedWorkteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a work team provided by a vendor. It returns
+-- details about the subscription with a vendor in the Amazon Web Services
+-- Marketplace.
+module Amazonka.SageMaker.DescribeSubscribedWorkteam
+  ( -- * Creating a Request
+    DescribeSubscribedWorkteam (..),
+    newDescribeSubscribedWorkteam,
+
+    -- * Request Lenses
+    describeSubscribedWorkteam_workteamArn,
+
+    -- * Destructuring the Response
+    DescribeSubscribedWorkteamResponse (..),
+    newDescribeSubscribedWorkteamResponse,
+
+    -- * Response Lenses
+    describeSubscribedWorkteamResponse_httpStatus,
+    describeSubscribedWorkteamResponse_subscribedWorkteam,
+  )
+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:/ 'newDescribeSubscribedWorkteam' smart constructor.
+data DescribeSubscribedWorkteam = DescribeSubscribedWorkteam'
+  { -- | The Amazon Resource Name (ARN) of the subscribed work team to describe.
+    workteamArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSubscribedWorkteam' 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:
+--
+-- 'workteamArn', 'describeSubscribedWorkteam_workteamArn' - The Amazon Resource Name (ARN) of the subscribed work team to describe.
+newDescribeSubscribedWorkteam ::
+  -- | 'workteamArn'
+  Prelude.Text ->
+  DescribeSubscribedWorkteam
+newDescribeSubscribedWorkteam pWorkteamArn_ =
+  DescribeSubscribedWorkteam'
+    { workteamArn =
+        pWorkteamArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the subscribed work team to describe.
+describeSubscribedWorkteam_workteamArn :: Lens.Lens' DescribeSubscribedWorkteam Prelude.Text
+describeSubscribedWorkteam_workteamArn = Lens.lens (\DescribeSubscribedWorkteam' {workteamArn} -> workteamArn) (\s@DescribeSubscribedWorkteam' {} a -> s {workteamArn = a} :: DescribeSubscribedWorkteam)
+
+instance Core.AWSRequest DescribeSubscribedWorkteam where
+  type
+    AWSResponse DescribeSubscribedWorkteam =
+      DescribeSubscribedWorkteamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeSubscribedWorkteamResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "SubscribedWorkteam")
+      )
+
+instance Prelude.Hashable DescribeSubscribedWorkteam where
+  hashWithSalt _salt DescribeSubscribedWorkteam' {..} =
+    _salt `Prelude.hashWithSalt` workteamArn
+
+instance Prelude.NFData DescribeSubscribedWorkteam where
+  rnf DescribeSubscribedWorkteam' {..} =
+    Prelude.rnf workteamArn
+
+instance Data.ToHeaders DescribeSubscribedWorkteam where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeSubscribedWorkteam" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeSubscribedWorkteam where
+  toJSON DescribeSubscribedWorkteam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("WorkteamArn" Data..= workteamArn)]
+      )
+
+instance Data.ToPath DescribeSubscribedWorkteam where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeSubscribedWorkteam where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeSubscribedWorkteamResponse' smart constructor.
+data DescribeSubscribedWorkteamResponse = DescribeSubscribedWorkteamResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A @Workteam@ instance that contains information about the work team.
+    subscribedWorkteam :: SubscribedWorkteam
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSubscribedWorkteamResponse' 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', 'describeSubscribedWorkteamResponse_httpStatus' - The response's http status code.
+--
+-- 'subscribedWorkteam', 'describeSubscribedWorkteamResponse_subscribedWorkteam' - A @Workteam@ instance that contains information about the work team.
+newDescribeSubscribedWorkteamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'subscribedWorkteam'
+  SubscribedWorkteam ->
+  DescribeSubscribedWorkteamResponse
+newDescribeSubscribedWorkteamResponse
+  pHttpStatus_
+  pSubscribedWorkteam_ =
+    DescribeSubscribedWorkteamResponse'
+      { httpStatus =
+          pHttpStatus_,
+        subscribedWorkteam =
+          pSubscribedWorkteam_
+      }
+
+-- | The response's http status code.
+describeSubscribedWorkteamResponse_httpStatus :: Lens.Lens' DescribeSubscribedWorkteamResponse Prelude.Int
+describeSubscribedWorkteamResponse_httpStatus = Lens.lens (\DescribeSubscribedWorkteamResponse' {httpStatus} -> httpStatus) (\s@DescribeSubscribedWorkteamResponse' {} a -> s {httpStatus = a} :: DescribeSubscribedWorkteamResponse)
+
+-- | A @Workteam@ instance that contains information about the work team.
+describeSubscribedWorkteamResponse_subscribedWorkteam :: Lens.Lens' DescribeSubscribedWorkteamResponse SubscribedWorkteam
+describeSubscribedWorkteamResponse_subscribedWorkteam = Lens.lens (\DescribeSubscribedWorkteamResponse' {subscribedWorkteam} -> subscribedWorkteam) (\s@DescribeSubscribedWorkteamResponse' {} a -> s {subscribedWorkteam = a} :: DescribeSubscribedWorkteamResponse)
+
+instance
+  Prelude.NFData
+    DescribeSubscribedWorkteamResponse
+  where
+  rnf DescribeSubscribedWorkteamResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf subscribedWorkteam
diff --git a/gen/Amazonka/SageMaker/DescribeTrainingJob.hs b/gen/Amazonka/SageMaker/DescribeTrainingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeTrainingJob.hs
@@ -0,0 +1,1096 @@
+{-# 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.DescribeTrainingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a training job.
+--
+-- Some of the attributes below only appear if the training job
+-- successfully starts. If the training job fails, @TrainingJobStatus@ is
+-- @Failed@ and, depending on the @FailureReason@, attributes like
+-- @TrainingStartTime@, @TrainingTimeInSeconds@, @TrainingEndTime@, and
+-- @BillableTimeInSeconds@ may not be present in the response.
+module Amazonka.SageMaker.DescribeTrainingJob
+  ( -- * Creating a Request
+    DescribeTrainingJob (..),
+    newDescribeTrainingJob,
+
+    -- * Request Lenses
+    describeTrainingJob_trainingJobName,
+
+    -- * Destructuring the Response
+    DescribeTrainingJobResponse (..),
+    newDescribeTrainingJobResponse,
+
+    -- * Response Lenses
+    describeTrainingJobResponse_autoMLJobArn,
+    describeTrainingJobResponse_billableTimeInSeconds,
+    describeTrainingJobResponse_checkpointConfig,
+    describeTrainingJobResponse_debugHookConfig,
+    describeTrainingJobResponse_debugRuleConfigurations,
+    describeTrainingJobResponse_debugRuleEvaluationStatuses,
+    describeTrainingJobResponse_enableInterContainerTrafficEncryption,
+    describeTrainingJobResponse_enableManagedSpotTraining,
+    describeTrainingJobResponse_enableNetworkIsolation,
+    describeTrainingJobResponse_environment,
+    describeTrainingJobResponse_experimentConfig,
+    describeTrainingJobResponse_failureReason,
+    describeTrainingJobResponse_finalMetricDataList,
+    describeTrainingJobResponse_hyperParameters,
+    describeTrainingJobResponse_inputDataConfig,
+    describeTrainingJobResponse_labelingJobArn,
+    describeTrainingJobResponse_lastModifiedTime,
+    describeTrainingJobResponse_outputDataConfig,
+    describeTrainingJobResponse_profilerConfig,
+    describeTrainingJobResponse_profilerRuleConfigurations,
+    describeTrainingJobResponse_profilerRuleEvaluationStatuses,
+    describeTrainingJobResponse_profilingStatus,
+    describeTrainingJobResponse_retryStrategy,
+    describeTrainingJobResponse_roleArn,
+    describeTrainingJobResponse_secondaryStatusTransitions,
+    describeTrainingJobResponse_tensorBoardOutputConfig,
+    describeTrainingJobResponse_trainingEndTime,
+    describeTrainingJobResponse_trainingStartTime,
+    describeTrainingJobResponse_trainingTimeInSeconds,
+    describeTrainingJobResponse_tuningJobArn,
+    describeTrainingJobResponse_vpcConfig,
+    describeTrainingJobResponse_warmPoolStatus,
+    describeTrainingJobResponse_httpStatus,
+    describeTrainingJobResponse_trainingJobName,
+    describeTrainingJobResponse_trainingJobArn,
+    describeTrainingJobResponse_modelArtifacts,
+    describeTrainingJobResponse_trainingJobStatus,
+    describeTrainingJobResponse_secondaryStatus,
+    describeTrainingJobResponse_algorithmSpecification,
+    describeTrainingJobResponse_resourceConfig,
+    describeTrainingJobResponse_stoppingCondition,
+    describeTrainingJobResponse_creationTime,
+  )
+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:/ 'newDescribeTrainingJob' smart constructor.
+data DescribeTrainingJob = DescribeTrainingJob'
+  { -- | The name of the training job.
+    trainingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTrainingJob' 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:
+--
+-- 'trainingJobName', 'describeTrainingJob_trainingJobName' - The name of the training job.
+newDescribeTrainingJob ::
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  DescribeTrainingJob
+newDescribeTrainingJob pTrainingJobName_ =
+  DescribeTrainingJob'
+    { trainingJobName =
+        pTrainingJobName_
+    }
+
+-- | The name of the training job.
+describeTrainingJob_trainingJobName :: Lens.Lens' DescribeTrainingJob Prelude.Text
+describeTrainingJob_trainingJobName = Lens.lens (\DescribeTrainingJob' {trainingJobName} -> trainingJobName) (\s@DescribeTrainingJob' {} a -> s {trainingJobName = a} :: DescribeTrainingJob)
+
+instance Core.AWSRequest DescribeTrainingJob where
+  type
+    AWSResponse DescribeTrainingJob =
+      DescribeTrainingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTrainingJobResponse'
+            Prelude.<$> (x Data..?> "AutoMLJobArn")
+            Prelude.<*> (x Data..?> "BillableTimeInSeconds")
+            Prelude.<*> (x Data..?> "CheckpointConfig")
+            Prelude.<*> (x Data..?> "DebugHookConfig")
+            Prelude.<*> ( x
+                            Data..?> "DebugRuleConfigurations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "DebugRuleEvaluationStatuses"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "EnableInterContainerTrafficEncryption")
+            Prelude.<*> (x Data..?> "EnableManagedSpotTraining")
+            Prelude.<*> (x Data..?> "EnableNetworkIsolation")
+            Prelude.<*> (x Data..?> "Environment" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "ExperimentConfig")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> ( x
+                            Data..?> "FinalMetricDataList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "HyperParameters"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "InputDataConfig")
+            Prelude.<*> (x Data..?> "LabelingJobArn")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "OutputDataConfig")
+            Prelude.<*> (x Data..?> "ProfilerConfig")
+            Prelude.<*> ( x
+                            Data..?> "ProfilerRuleConfigurations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "ProfilerRuleEvaluationStatuses"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "ProfilingStatus")
+            Prelude.<*> (x Data..?> "RetryStrategy")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> ( x
+                            Data..?> "SecondaryStatusTransitions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "TensorBoardOutputConfig")
+            Prelude.<*> (x Data..?> "TrainingEndTime")
+            Prelude.<*> (x Data..?> "TrainingStartTime")
+            Prelude.<*> (x Data..?> "TrainingTimeInSeconds")
+            Prelude.<*> (x Data..?> "TuningJobArn")
+            Prelude.<*> (x Data..?> "VpcConfig")
+            Prelude.<*> (x Data..?> "WarmPoolStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "TrainingJobName")
+            Prelude.<*> (x Data..:> "TrainingJobArn")
+            Prelude.<*> (x Data..:> "ModelArtifacts")
+            Prelude.<*> (x Data..:> "TrainingJobStatus")
+            Prelude.<*> (x Data..:> "SecondaryStatus")
+            Prelude.<*> (x Data..:> "AlgorithmSpecification")
+            Prelude.<*> (x Data..:> "ResourceConfig")
+            Prelude.<*> (x Data..:> "StoppingCondition")
+            Prelude.<*> (x Data..:> "CreationTime")
+      )
+
+instance Prelude.Hashable DescribeTrainingJob where
+  hashWithSalt _salt DescribeTrainingJob' {..} =
+    _salt `Prelude.hashWithSalt` trainingJobName
+
+instance Prelude.NFData DescribeTrainingJob where
+  rnf DescribeTrainingJob' {..} =
+    Prelude.rnf trainingJobName
+
+instance Data.ToHeaders DescribeTrainingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeTrainingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeTrainingJob where
+  toJSON DescribeTrainingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TrainingJobName" Data..= trainingJobName)
+          ]
+      )
+
+instance Data.ToPath DescribeTrainingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeTrainingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTrainingJobResponse' smart constructor.
+data DescribeTrainingJobResponse = DescribeTrainingJobResponse'
+  { -- | The Amazon Resource Name (ARN) of an AutoML job.
+    autoMLJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The billable time in seconds. Billable time refers to the absolute
+    -- wall-clock time.
+    --
+    -- Multiply @BillableTimeInSeconds@ by the number of instances
+    -- (@InstanceCount@) in your training cluster to get the total compute time
+    -- SageMaker bills you if you run distributed training. The formula is as
+    -- follows: @BillableTimeInSeconds * InstanceCount@ .
+    --
+    -- You can calculate the savings from using managed spot training using the
+    -- formula @(1 - BillableTimeInSeconds \/ TrainingTimeInSeconds) * 100@.
+    -- For example, if @BillableTimeInSeconds@ is 100 and
+    -- @TrainingTimeInSeconds@ is 500, the savings is 80%.
+    billableTimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    checkpointConfig :: Prelude.Maybe CheckpointConfig,
+    debugHookConfig :: Prelude.Maybe DebugHookConfig,
+    -- | Configuration information for Amazon SageMaker Debugger rules for
+    -- debugging output tensors.
+    debugRuleConfigurations :: Prelude.Maybe [DebugRuleConfiguration],
+    -- | Evaluation status of Amazon SageMaker Debugger rules for debugging on a
+    -- training job.
+    debugRuleEvaluationStatuses :: Prelude.Maybe [DebugRuleEvaluationStatus],
+    -- | To encrypt all communications between ML compute instances in
+    -- distributed training, choose @True@. Encryption provides greater
+    -- security for distributed training, but training might take longer. How
+    -- long it takes depends on the amount of communication between compute
+    -- instances, especially if you use a deep learning algorithms in
+    -- distributed training.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | A Boolean indicating whether managed spot training is enabled (@True@)
+    -- or not (@False@).
+    enableManagedSpotTraining :: Prelude.Maybe Prelude.Bool,
+    -- | If you want to allow inbound or outbound network calls, except for calls
+    -- between peers within a training cluster for distributed training, choose
+    -- @True@. If you enable network isolation for training jobs that are
+    -- configured to use a VPC, SageMaker downloads and uploads customer data
+    -- and model artifacts through the specified VPC, but the training
+    -- container does not have network access.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    -- | The environment variables to set in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | If the training job failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A collection of @MetricData@ objects that specify the names, values, and
+    -- dates and times that the training algorithm emitted to Amazon
+    -- CloudWatch.
+    finalMetricDataList :: Prelude.Maybe [MetricData],
+    -- | Algorithm-specific parameters.
+    hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | An array of @Channel@ objects that describes each data input channel.
+    inputDataConfig :: Prelude.Maybe (Prelude.NonEmpty Channel),
+    -- | The Amazon Resource Name (ARN) of the SageMaker Ground Truth labeling
+    -- job that created the transform or training job.
+    labelingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the status of the training job was last
+    -- modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The S3 path where model artifacts that you configured when creating the
+    -- job are stored. SageMaker creates subfolders for model artifacts.
+    outputDataConfig :: Prelude.Maybe OutputDataConfig,
+    profilerConfig :: Prelude.Maybe ProfilerConfig,
+    -- | Configuration information for Amazon SageMaker Debugger rules for
+    -- profiling system and framework metrics.
+    profilerRuleConfigurations :: Prelude.Maybe [ProfilerRuleConfiguration],
+    -- | Evaluation status of Amazon SageMaker Debugger rules for profiling on a
+    -- training job.
+    profilerRuleEvaluationStatuses :: Prelude.Maybe [ProfilerRuleEvaluationStatus],
+    -- | Profiling status of a training job.
+    profilingStatus :: Prelude.Maybe ProfilingStatus,
+    -- | The number of times to retry the job when the job fails due to an
+    -- @InternalServerError@.
+    retryStrategy :: Prelude.Maybe RetryStrategy,
+    -- | The Amazon Web Services Identity and Access Management (IAM) role
+    -- configured for the training job.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | A history of all of the secondary statuses that the training job has
+    -- transitioned through.
+    secondaryStatusTransitions :: Prelude.Maybe [SecondaryStatusTransition],
+    tensorBoardOutputConfig :: Prelude.Maybe TensorBoardOutputConfig,
+    -- | Indicates the time when the training job ends on training instances. You
+    -- are billed for the time interval between the value of
+    -- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+    -- this is the time after model artifacts are uploaded. For failed jobs,
+    -- this is the time when SageMaker detects a job failure.
+    trainingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time when the training job starts on training instances.
+    -- You are billed for the time interval between this time and the value of
+    -- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
+    -- this time. The difference is due to the time it takes to download the
+    -- training data and to the size of the training container.
+    trainingStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The training time in seconds.
+    trainingTimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Resource Name (ARN) of the associated hyperparameter tuning
+    -- job if the training job was launched by a hyperparameter tuning job.
+    tuningJobArn :: Prelude.Maybe Prelude.Text,
+    -- | A VpcConfig object that specifies the VPC that this training job has
+    -- access to. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe VpcConfig,
+    -- | The status of the warm pool associated with the training job.
+    warmPoolStatus :: Prelude.Maybe WarmPoolStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Name of the model training job.
+    trainingJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the training job.
+    trainingJobArn :: Prelude.Text,
+    -- | Information about the Amazon S3 location that is configured for storing
+    -- model artifacts.
+    modelArtifacts :: ModelArtifacts,
+    -- | The status of the training job.
+    --
+    -- SageMaker provides the following training job statuses:
+    --
+    -- -   @InProgress@ - The training is in progress.
+    --
+    -- -   @Completed@ - The training job has completed.
+    --
+    -- -   @Failed@ - The training job has failed. To see the reason for the
+    --     failure, see the @FailureReason@ field in the response to a
+    --     @DescribeTrainingJobResponse@ call.
+    --
+    -- -   @Stopping@ - The training job is stopping.
+    --
+    -- -   @Stopped@ - The training job has stopped.
+    --
+    -- For more detailed information, see @SecondaryStatus@.
+    trainingJobStatus :: TrainingJobStatus,
+    -- | Provides detailed information about the state of the training job. For
+    -- detailed information on the secondary status of the training job, see
+    -- @StatusMessage@ under SecondaryStatusTransition.
+    --
+    -- SageMaker provides primary statuses and secondary statuses that apply to
+    -- each of them:
+    --
+    -- [InProgress]
+    --     -   @Starting@ - Starting the training job.
+    --
+    --     -   @Downloading@ - An optional stage for algorithms that support
+    --         @File@ training input mode. It indicates that data is being
+    --         downloaded to the ML storage volumes.
+    --
+    --     -   @Training@ - Training is in progress.
+    --
+    --     -   @Interrupted@ - The job stopped because the managed spot
+    --         training instances were interrupted.
+    --
+    --     -   @Uploading@ - Training is complete and the model artifacts are
+    --         being uploaded to the S3 location.
+    --
+    -- [Completed]
+    --     -   @Completed@ - The training job has completed.
+    --
+    -- [Failed]
+    --     -   @Failed@ - The training job has failed. The reason for the
+    --         failure is returned in the @FailureReason@ field of
+    --         @DescribeTrainingJobResponse@.
+    --
+    -- [Stopped]
+    --     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+    --         maximum allowed runtime.
+    --
+    --     -   @MaxWaitTimeExceeded@ - The job stopped because it exceeded the
+    --         maximum allowed wait time.
+    --
+    --     -   @Stopped@ - The training job has stopped.
+    --
+    -- [Stopping]
+    --     -   @Stopping@ - Stopping the training job.
+    --
+    -- Valid values for @SecondaryStatus@ are subject to change.
+    --
+    -- We no longer support the following secondary statuses:
+    --
+    -- -   @LaunchingMLInstances@
+    --
+    -- -   @PreparingTraining@
+    --
+    -- -   @DownloadingTrainingImage@
+    secondaryStatus :: SecondaryStatus,
+    -- | Information about the algorithm used for training, and algorithm
+    -- metadata.
+    algorithmSpecification :: AlgorithmSpecification,
+    -- | Resources, including ML compute instances and ML storage volumes, that
+    -- are configured for model training.
+    resourceConfig :: ResourceConfig,
+    -- | Specifies a limit to how long a model training job can run. It also
+    -- specifies how long a managed Spot training job has to complete. When the
+    -- job reaches the time limit, SageMaker ends the training job. Use this
+    -- API to cap model training costs.
+    --
+    -- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+    -- delays job termination for 120 seconds. Algorithms can use this
+    -- 120-second window to save the model artifacts, so the results of
+    -- training are not lost.
+    stoppingCondition :: StoppingCondition,
+    -- | A timestamp that indicates when the training job was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTrainingJobResponse' 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:
+--
+-- 'autoMLJobArn', 'describeTrainingJobResponse_autoMLJobArn' - The Amazon Resource Name (ARN) of an AutoML job.
+--
+-- 'billableTimeInSeconds', 'describeTrainingJobResponse_billableTimeInSeconds' - The billable time in seconds. Billable time refers to the absolute
+-- wall-clock time.
+--
+-- Multiply @BillableTimeInSeconds@ by the number of instances
+-- (@InstanceCount@) in your training cluster to get the total compute time
+-- SageMaker bills you if you run distributed training. The formula is as
+-- follows: @BillableTimeInSeconds * InstanceCount@ .
+--
+-- You can calculate the savings from using managed spot training using the
+-- formula @(1 - BillableTimeInSeconds \/ TrainingTimeInSeconds) * 100@.
+-- For example, if @BillableTimeInSeconds@ is 100 and
+-- @TrainingTimeInSeconds@ is 500, the savings is 80%.
+--
+-- 'checkpointConfig', 'describeTrainingJobResponse_checkpointConfig' - Undocumented member.
+--
+-- 'debugHookConfig', 'describeTrainingJobResponse_debugHookConfig' - Undocumented member.
+--
+-- 'debugRuleConfigurations', 'describeTrainingJobResponse_debugRuleConfigurations' - Configuration information for Amazon SageMaker Debugger rules for
+-- debugging output tensors.
+--
+-- 'debugRuleEvaluationStatuses', 'describeTrainingJobResponse_debugRuleEvaluationStatuses' - Evaluation status of Amazon SageMaker Debugger rules for debugging on a
+-- training job.
+--
+-- 'enableInterContainerTrafficEncryption', 'describeTrainingJobResponse_enableInterContainerTrafficEncryption' - To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithms in
+-- distributed training.
+--
+-- 'enableManagedSpotTraining', 'describeTrainingJobResponse_enableManagedSpotTraining' - A Boolean indicating whether managed spot training is enabled (@True@)
+-- or not (@False@).
+--
+-- 'enableNetworkIsolation', 'describeTrainingJobResponse_enableNetworkIsolation' - If you want to allow inbound or outbound network calls, except for calls
+-- between peers within a training cluster for distributed training, choose
+-- @True@. If you enable network isolation for training jobs that are
+-- configured to use a VPC, SageMaker downloads and uploads customer data
+-- and model artifacts through the specified VPC, but the training
+-- container does not have network access.
+--
+-- 'environment', 'describeTrainingJobResponse_environment' - The environment variables to set in the Docker container.
+--
+-- 'experimentConfig', 'describeTrainingJobResponse_experimentConfig' - Undocumented member.
+--
+-- 'failureReason', 'describeTrainingJobResponse_failureReason' - If the training job failed, the reason it failed.
+--
+-- 'finalMetricDataList', 'describeTrainingJobResponse_finalMetricDataList' - A collection of @MetricData@ objects that specify the names, values, and
+-- dates and times that the training algorithm emitted to Amazon
+-- CloudWatch.
+--
+-- 'hyperParameters', 'describeTrainingJobResponse_hyperParameters' - Algorithm-specific parameters.
+--
+-- 'inputDataConfig', 'describeTrainingJobResponse_inputDataConfig' - An array of @Channel@ objects that describes each data input channel.
+--
+-- 'labelingJobArn', 'describeTrainingJobResponse_labelingJobArn' - The Amazon Resource Name (ARN) of the SageMaker Ground Truth labeling
+-- job that created the transform or training job.
+--
+-- 'lastModifiedTime', 'describeTrainingJobResponse_lastModifiedTime' - A timestamp that indicates when the status of the training job was last
+-- modified.
+--
+-- 'outputDataConfig', 'describeTrainingJobResponse_outputDataConfig' - The S3 path where model artifacts that you configured when creating the
+-- job are stored. SageMaker creates subfolders for model artifacts.
+--
+-- 'profilerConfig', 'describeTrainingJobResponse_profilerConfig' - Undocumented member.
+--
+-- 'profilerRuleConfigurations', 'describeTrainingJobResponse_profilerRuleConfigurations' - Configuration information for Amazon SageMaker Debugger rules for
+-- profiling system and framework metrics.
+--
+-- 'profilerRuleEvaluationStatuses', 'describeTrainingJobResponse_profilerRuleEvaluationStatuses' - Evaluation status of Amazon SageMaker Debugger rules for profiling on a
+-- training job.
+--
+-- 'profilingStatus', 'describeTrainingJobResponse_profilingStatus' - Profiling status of a training job.
+--
+-- 'retryStrategy', 'describeTrainingJobResponse_retryStrategy' - The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+--
+-- 'roleArn', 'describeTrainingJobResponse_roleArn' - The Amazon Web Services Identity and Access Management (IAM) role
+-- configured for the training job.
+--
+-- 'secondaryStatusTransitions', 'describeTrainingJobResponse_secondaryStatusTransitions' - A history of all of the secondary statuses that the training job has
+-- transitioned through.
+--
+-- 'tensorBoardOutputConfig', 'describeTrainingJobResponse_tensorBoardOutputConfig' - Undocumented member.
+--
+-- 'trainingEndTime', 'describeTrainingJobResponse_trainingEndTime' - Indicates the time when the training job ends on training instances. You
+-- are billed for the time interval between the value of
+-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+-- this is the time after model artifacts are uploaded. For failed jobs,
+-- this is the time when SageMaker detects a job failure.
+--
+-- 'trainingStartTime', 'describeTrainingJobResponse_trainingStartTime' - Indicates the time when the training job starts on training instances.
+-- You are billed for the time interval between this time and the value of
+-- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
+-- this time. The difference is due to the time it takes to download the
+-- training data and to the size of the training container.
+--
+-- 'trainingTimeInSeconds', 'describeTrainingJobResponse_trainingTimeInSeconds' - The training time in seconds.
+--
+-- 'tuningJobArn', 'describeTrainingJobResponse_tuningJobArn' - The Amazon Resource Name (ARN) of the associated hyperparameter tuning
+-- job if the training job was launched by a hyperparameter tuning job.
+--
+-- 'vpcConfig', 'describeTrainingJobResponse_vpcConfig' - A VpcConfig object that specifies the VPC that this training job has
+-- access to. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- 'warmPoolStatus', 'describeTrainingJobResponse_warmPoolStatus' - The status of the warm pool associated with the training job.
+--
+-- 'httpStatus', 'describeTrainingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'trainingJobName', 'describeTrainingJobResponse_trainingJobName' - Name of the model training job.
+--
+-- 'trainingJobArn', 'describeTrainingJobResponse_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
+--
+-- 'modelArtifacts', 'describeTrainingJobResponse_modelArtifacts' - Information about the Amazon S3 location that is configured for storing
+-- model artifacts.
+--
+-- 'trainingJobStatus', 'describeTrainingJobResponse_trainingJobStatus' - The status of the training job.
+--
+-- SageMaker provides the following training job statuses:
+--
+-- -   @InProgress@ - The training is in progress.
+--
+-- -   @Completed@ - The training job has completed.
+--
+-- -   @Failed@ - The training job has failed. To see the reason for the
+--     failure, see the @FailureReason@ field in the response to a
+--     @DescribeTrainingJobResponse@ call.
+--
+-- -   @Stopping@ - The training job is stopping.
+--
+-- -   @Stopped@ - The training job has stopped.
+--
+-- For more detailed information, see @SecondaryStatus@.
+--
+-- 'secondaryStatus', 'describeTrainingJobResponse_secondaryStatus' - Provides detailed information about the state of the training job. For
+-- detailed information on the secondary status of the training job, see
+-- @StatusMessage@ under SecondaryStatusTransition.
+--
+-- SageMaker provides primary statuses and secondary statuses that apply to
+-- each of them:
+--
+-- [InProgress]
+--     -   @Starting@ - Starting the training job.
+--
+--     -   @Downloading@ - An optional stage for algorithms that support
+--         @File@ training input mode. It indicates that data is being
+--         downloaded to the ML storage volumes.
+--
+--     -   @Training@ - Training is in progress.
+--
+--     -   @Interrupted@ - The job stopped because the managed spot
+--         training instances were interrupted.
+--
+--     -   @Uploading@ - Training is complete and the model artifacts are
+--         being uploaded to the S3 location.
+--
+-- [Completed]
+--     -   @Completed@ - The training job has completed.
+--
+-- [Failed]
+--     -   @Failed@ - The training job has failed. The reason for the
+--         failure is returned in the @FailureReason@ field of
+--         @DescribeTrainingJobResponse@.
+--
+-- [Stopped]
+--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed runtime.
+--
+--     -   @MaxWaitTimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed wait time.
+--
+--     -   @Stopped@ - The training job has stopped.
+--
+-- [Stopping]
+--     -   @Stopping@ - Stopping the training job.
+--
+-- Valid values for @SecondaryStatus@ are subject to change.
+--
+-- We no longer support the following secondary statuses:
+--
+-- -   @LaunchingMLInstances@
+--
+-- -   @PreparingTraining@
+--
+-- -   @DownloadingTrainingImage@
+--
+-- 'algorithmSpecification', 'describeTrainingJobResponse_algorithmSpecification' - Information about the algorithm used for training, and algorithm
+-- metadata.
+--
+-- 'resourceConfig', 'describeTrainingJobResponse_resourceConfig' - Resources, including ML compute instances and ML storage volumes, that
+-- are configured for model training.
+--
+-- 'stoppingCondition', 'describeTrainingJobResponse_stoppingCondition' - Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+--
+-- 'creationTime', 'describeTrainingJobResponse_creationTime' - A timestamp that indicates when the training job was created.
+newDescribeTrainingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  -- | 'trainingJobArn'
+  Prelude.Text ->
+  -- | 'modelArtifacts'
+  ModelArtifacts ->
+  -- | 'trainingJobStatus'
+  TrainingJobStatus ->
+  -- | 'secondaryStatus'
+  SecondaryStatus ->
+  -- | 'algorithmSpecification'
+  AlgorithmSpecification ->
+  -- | 'resourceConfig'
+  ResourceConfig ->
+  -- | 'stoppingCondition'
+  StoppingCondition ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DescribeTrainingJobResponse
+newDescribeTrainingJobResponse
+  pHttpStatus_
+  pTrainingJobName_
+  pTrainingJobArn_
+  pModelArtifacts_
+  pTrainingJobStatus_
+  pSecondaryStatus_
+  pAlgorithmSpecification_
+  pResourceConfig_
+  pStoppingCondition_
+  pCreationTime_ =
+    DescribeTrainingJobResponse'
+      { autoMLJobArn =
+          Prelude.Nothing,
+        billableTimeInSeconds = Prelude.Nothing,
+        checkpointConfig = Prelude.Nothing,
+        debugHookConfig = Prelude.Nothing,
+        debugRuleConfigurations = Prelude.Nothing,
+        debugRuleEvaluationStatuses = Prelude.Nothing,
+        enableInterContainerTrafficEncryption =
+          Prelude.Nothing,
+        enableManagedSpotTraining = Prelude.Nothing,
+        enableNetworkIsolation = Prelude.Nothing,
+        environment = Prelude.Nothing,
+        experimentConfig = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        finalMetricDataList = Prelude.Nothing,
+        hyperParameters = Prelude.Nothing,
+        inputDataConfig = Prelude.Nothing,
+        labelingJobArn = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        outputDataConfig = Prelude.Nothing,
+        profilerConfig = Prelude.Nothing,
+        profilerRuleConfigurations = Prelude.Nothing,
+        profilerRuleEvaluationStatuses =
+          Prelude.Nothing,
+        profilingStatus = Prelude.Nothing,
+        retryStrategy = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        secondaryStatusTransitions = Prelude.Nothing,
+        tensorBoardOutputConfig = Prelude.Nothing,
+        trainingEndTime = Prelude.Nothing,
+        trainingStartTime = Prelude.Nothing,
+        trainingTimeInSeconds = Prelude.Nothing,
+        tuningJobArn = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        warmPoolStatus = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        trainingJobName = pTrainingJobName_,
+        trainingJobArn = pTrainingJobArn_,
+        modelArtifacts = pModelArtifacts_,
+        trainingJobStatus = pTrainingJobStatus_,
+        secondaryStatus = pSecondaryStatus_,
+        algorithmSpecification =
+          pAlgorithmSpecification_,
+        resourceConfig = pResourceConfig_,
+        stoppingCondition = pStoppingCondition_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_
+      }
+
+-- | The Amazon Resource Name (ARN) of an AutoML job.
+describeTrainingJobResponse_autoMLJobArn :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Text)
+describeTrainingJobResponse_autoMLJobArn = Lens.lens (\DescribeTrainingJobResponse' {autoMLJobArn} -> autoMLJobArn) (\s@DescribeTrainingJobResponse' {} a -> s {autoMLJobArn = a} :: DescribeTrainingJobResponse)
+
+-- | The billable time in seconds. Billable time refers to the absolute
+-- wall-clock time.
+--
+-- Multiply @BillableTimeInSeconds@ by the number of instances
+-- (@InstanceCount@) in your training cluster to get the total compute time
+-- SageMaker bills you if you run distributed training. The formula is as
+-- follows: @BillableTimeInSeconds * InstanceCount@ .
+--
+-- You can calculate the savings from using managed spot training using the
+-- formula @(1 - BillableTimeInSeconds \/ TrainingTimeInSeconds) * 100@.
+-- For example, if @BillableTimeInSeconds@ is 100 and
+-- @TrainingTimeInSeconds@ is 500, the savings is 80%.
+describeTrainingJobResponse_billableTimeInSeconds :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Natural)
+describeTrainingJobResponse_billableTimeInSeconds = Lens.lens (\DescribeTrainingJobResponse' {billableTimeInSeconds} -> billableTimeInSeconds) (\s@DescribeTrainingJobResponse' {} a -> s {billableTimeInSeconds = a} :: DescribeTrainingJobResponse)
+
+-- | Undocumented member.
+describeTrainingJobResponse_checkpointConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe CheckpointConfig)
+describeTrainingJobResponse_checkpointConfig = Lens.lens (\DescribeTrainingJobResponse' {checkpointConfig} -> checkpointConfig) (\s@DescribeTrainingJobResponse' {} a -> s {checkpointConfig = a} :: DescribeTrainingJobResponse)
+
+-- | Undocumented member.
+describeTrainingJobResponse_debugHookConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe DebugHookConfig)
+describeTrainingJobResponse_debugHookConfig = Lens.lens (\DescribeTrainingJobResponse' {debugHookConfig} -> debugHookConfig) (\s@DescribeTrainingJobResponse' {} a -> s {debugHookConfig = a} :: DescribeTrainingJobResponse)
+
+-- | Configuration information for Amazon SageMaker Debugger rules for
+-- debugging output tensors.
+describeTrainingJobResponse_debugRuleConfigurations :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe [DebugRuleConfiguration])
+describeTrainingJobResponse_debugRuleConfigurations = Lens.lens (\DescribeTrainingJobResponse' {debugRuleConfigurations} -> debugRuleConfigurations) (\s@DescribeTrainingJobResponse' {} a -> s {debugRuleConfigurations = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Evaluation status of Amazon SageMaker Debugger rules for debugging on a
+-- training job.
+describeTrainingJobResponse_debugRuleEvaluationStatuses :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe [DebugRuleEvaluationStatus])
+describeTrainingJobResponse_debugRuleEvaluationStatuses = Lens.lens (\DescribeTrainingJobResponse' {debugRuleEvaluationStatuses} -> debugRuleEvaluationStatuses) (\s@DescribeTrainingJobResponse' {} a -> s {debugRuleEvaluationStatuses = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithms in
+-- distributed training.
+describeTrainingJobResponse_enableInterContainerTrafficEncryption :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Bool)
+describeTrainingJobResponse_enableInterContainerTrafficEncryption = Lens.lens (\DescribeTrainingJobResponse' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@DescribeTrainingJobResponse' {} a -> s {enableInterContainerTrafficEncryption = a} :: DescribeTrainingJobResponse)
+
+-- | A Boolean indicating whether managed spot training is enabled (@True@)
+-- or not (@False@).
+describeTrainingJobResponse_enableManagedSpotTraining :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Bool)
+describeTrainingJobResponse_enableManagedSpotTraining = Lens.lens (\DescribeTrainingJobResponse' {enableManagedSpotTraining} -> enableManagedSpotTraining) (\s@DescribeTrainingJobResponse' {} a -> s {enableManagedSpotTraining = a} :: DescribeTrainingJobResponse)
+
+-- | If you want to allow inbound or outbound network calls, except for calls
+-- between peers within a training cluster for distributed training, choose
+-- @True@. If you enable network isolation for training jobs that are
+-- configured to use a VPC, SageMaker downloads and uploads customer data
+-- and model artifacts through the specified VPC, but the training
+-- container does not have network access.
+describeTrainingJobResponse_enableNetworkIsolation :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Bool)
+describeTrainingJobResponse_enableNetworkIsolation = Lens.lens (\DescribeTrainingJobResponse' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@DescribeTrainingJobResponse' {} a -> s {enableNetworkIsolation = a} :: DescribeTrainingJobResponse)
+
+-- | The environment variables to set in the Docker container.
+describeTrainingJobResponse_environment :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeTrainingJobResponse_environment = Lens.lens (\DescribeTrainingJobResponse' {environment} -> environment) (\s@DescribeTrainingJobResponse' {} a -> s {environment = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeTrainingJobResponse_experimentConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe ExperimentConfig)
+describeTrainingJobResponse_experimentConfig = Lens.lens (\DescribeTrainingJobResponse' {experimentConfig} -> experimentConfig) (\s@DescribeTrainingJobResponse' {} a -> s {experimentConfig = a} :: DescribeTrainingJobResponse)
+
+-- | If the training job failed, the reason it failed.
+describeTrainingJobResponse_failureReason :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Text)
+describeTrainingJobResponse_failureReason = Lens.lens (\DescribeTrainingJobResponse' {failureReason} -> failureReason) (\s@DescribeTrainingJobResponse' {} a -> s {failureReason = a} :: DescribeTrainingJobResponse)
+
+-- | A collection of @MetricData@ objects that specify the names, values, and
+-- dates and times that the training algorithm emitted to Amazon
+-- CloudWatch.
+describeTrainingJobResponse_finalMetricDataList :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe [MetricData])
+describeTrainingJobResponse_finalMetricDataList = Lens.lens (\DescribeTrainingJobResponse' {finalMetricDataList} -> finalMetricDataList) (\s@DescribeTrainingJobResponse' {} a -> s {finalMetricDataList = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Algorithm-specific parameters.
+describeTrainingJobResponse_hyperParameters :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeTrainingJobResponse_hyperParameters = Lens.lens (\DescribeTrainingJobResponse' {hyperParameters} -> hyperParameters) (\s@DescribeTrainingJobResponse' {} a -> s {hyperParameters = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of @Channel@ objects that describes each data input channel.
+describeTrainingJobResponse_inputDataConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe (Prelude.NonEmpty Channel))
+describeTrainingJobResponse_inputDataConfig = Lens.lens (\DescribeTrainingJobResponse' {inputDataConfig} -> inputDataConfig) (\s@DescribeTrainingJobResponse' {} a -> s {inputDataConfig = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the SageMaker Ground Truth labeling
+-- job that created the transform or training job.
+describeTrainingJobResponse_labelingJobArn :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Text)
+describeTrainingJobResponse_labelingJobArn = Lens.lens (\DescribeTrainingJobResponse' {labelingJobArn} -> labelingJobArn) (\s@DescribeTrainingJobResponse' {} a -> s {labelingJobArn = a} :: DescribeTrainingJobResponse)
+
+-- | A timestamp that indicates when the status of the training job was last
+-- modified.
+describeTrainingJobResponse_lastModifiedTime :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrainingJobResponse_lastModifiedTime = Lens.lens (\DescribeTrainingJobResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeTrainingJobResponse' {} a -> s {lastModifiedTime = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The S3 path where model artifacts that you configured when creating the
+-- job are stored. SageMaker creates subfolders for model artifacts.
+describeTrainingJobResponse_outputDataConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe OutputDataConfig)
+describeTrainingJobResponse_outputDataConfig = Lens.lens (\DescribeTrainingJobResponse' {outputDataConfig} -> outputDataConfig) (\s@DescribeTrainingJobResponse' {} a -> s {outputDataConfig = a} :: DescribeTrainingJobResponse)
+
+-- | Undocumented member.
+describeTrainingJobResponse_profilerConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe ProfilerConfig)
+describeTrainingJobResponse_profilerConfig = Lens.lens (\DescribeTrainingJobResponse' {profilerConfig} -> profilerConfig) (\s@DescribeTrainingJobResponse' {} a -> s {profilerConfig = a} :: DescribeTrainingJobResponse)
+
+-- | Configuration information for Amazon SageMaker Debugger rules for
+-- profiling system and framework metrics.
+describeTrainingJobResponse_profilerRuleConfigurations :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe [ProfilerRuleConfiguration])
+describeTrainingJobResponse_profilerRuleConfigurations = Lens.lens (\DescribeTrainingJobResponse' {profilerRuleConfigurations} -> profilerRuleConfigurations) (\s@DescribeTrainingJobResponse' {} a -> s {profilerRuleConfigurations = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Evaluation status of Amazon SageMaker Debugger rules for profiling on a
+-- training job.
+describeTrainingJobResponse_profilerRuleEvaluationStatuses :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe [ProfilerRuleEvaluationStatus])
+describeTrainingJobResponse_profilerRuleEvaluationStatuses = Lens.lens (\DescribeTrainingJobResponse' {profilerRuleEvaluationStatuses} -> profilerRuleEvaluationStatuses) (\s@DescribeTrainingJobResponse' {} a -> s {profilerRuleEvaluationStatuses = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Profiling status of a training job.
+describeTrainingJobResponse_profilingStatus :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe ProfilingStatus)
+describeTrainingJobResponse_profilingStatus = Lens.lens (\DescribeTrainingJobResponse' {profilingStatus} -> profilingStatus) (\s@DescribeTrainingJobResponse' {} a -> s {profilingStatus = a} :: DescribeTrainingJobResponse)
+
+-- | The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+describeTrainingJobResponse_retryStrategy :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe RetryStrategy)
+describeTrainingJobResponse_retryStrategy = Lens.lens (\DescribeTrainingJobResponse' {retryStrategy} -> retryStrategy) (\s@DescribeTrainingJobResponse' {} a -> s {retryStrategy = a} :: DescribeTrainingJobResponse)
+
+-- | The Amazon Web Services Identity and Access Management (IAM) role
+-- configured for the training job.
+describeTrainingJobResponse_roleArn :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Text)
+describeTrainingJobResponse_roleArn = Lens.lens (\DescribeTrainingJobResponse' {roleArn} -> roleArn) (\s@DescribeTrainingJobResponse' {} a -> s {roleArn = a} :: DescribeTrainingJobResponse)
+
+-- | A history of all of the secondary statuses that the training job has
+-- transitioned through.
+describeTrainingJobResponse_secondaryStatusTransitions :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe [SecondaryStatusTransition])
+describeTrainingJobResponse_secondaryStatusTransitions = Lens.lens (\DescribeTrainingJobResponse' {secondaryStatusTransitions} -> secondaryStatusTransitions) (\s@DescribeTrainingJobResponse' {} a -> s {secondaryStatusTransitions = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeTrainingJobResponse_tensorBoardOutputConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe TensorBoardOutputConfig)
+describeTrainingJobResponse_tensorBoardOutputConfig = Lens.lens (\DescribeTrainingJobResponse' {tensorBoardOutputConfig} -> tensorBoardOutputConfig) (\s@DescribeTrainingJobResponse' {} a -> s {tensorBoardOutputConfig = a} :: DescribeTrainingJobResponse)
+
+-- | Indicates the time when the training job ends on training instances. You
+-- are billed for the time interval between the value of
+-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+-- this is the time after model artifacts are uploaded. For failed jobs,
+-- this is the time when SageMaker detects a job failure.
+describeTrainingJobResponse_trainingEndTime :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrainingJobResponse_trainingEndTime = Lens.lens (\DescribeTrainingJobResponse' {trainingEndTime} -> trainingEndTime) (\s@DescribeTrainingJobResponse' {} a -> s {trainingEndTime = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time when the training job starts on training instances.
+-- You are billed for the time interval between this time and the value of
+-- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
+-- this time. The difference is due to the time it takes to download the
+-- training data and to the size of the training container.
+describeTrainingJobResponse_trainingStartTime :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrainingJobResponse_trainingStartTime = Lens.lens (\DescribeTrainingJobResponse' {trainingStartTime} -> trainingStartTime) (\s@DescribeTrainingJobResponse' {} a -> s {trainingStartTime = a} :: DescribeTrainingJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The training time in seconds.
+describeTrainingJobResponse_trainingTimeInSeconds :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Natural)
+describeTrainingJobResponse_trainingTimeInSeconds = Lens.lens (\DescribeTrainingJobResponse' {trainingTimeInSeconds} -> trainingTimeInSeconds) (\s@DescribeTrainingJobResponse' {} a -> s {trainingTimeInSeconds = a} :: DescribeTrainingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the associated hyperparameter tuning
+-- job if the training job was launched by a hyperparameter tuning job.
+describeTrainingJobResponse_tuningJobArn :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe Prelude.Text)
+describeTrainingJobResponse_tuningJobArn = Lens.lens (\DescribeTrainingJobResponse' {tuningJobArn} -> tuningJobArn) (\s@DescribeTrainingJobResponse' {} a -> s {tuningJobArn = a} :: DescribeTrainingJobResponse)
+
+-- | A VpcConfig object that specifies the VPC that this training job has
+-- access to. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+describeTrainingJobResponse_vpcConfig :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe VpcConfig)
+describeTrainingJobResponse_vpcConfig = Lens.lens (\DescribeTrainingJobResponse' {vpcConfig} -> vpcConfig) (\s@DescribeTrainingJobResponse' {} a -> s {vpcConfig = a} :: DescribeTrainingJobResponse)
+
+-- | The status of the warm pool associated with the training job.
+describeTrainingJobResponse_warmPoolStatus :: Lens.Lens' DescribeTrainingJobResponse (Prelude.Maybe WarmPoolStatus)
+describeTrainingJobResponse_warmPoolStatus = Lens.lens (\DescribeTrainingJobResponse' {warmPoolStatus} -> warmPoolStatus) (\s@DescribeTrainingJobResponse' {} a -> s {warmPoolStatus = a} :: DescribeTrainingJobResponse)
+
+-- | The response's http status code.
+describeTrainingJobResponse_httpStatus :: Lens.Lens' DescribeTrainingJobResponse Prelude.Int
+describeTrainingJobResponse_httpStatus = Lens.lens (\DescribeTrainingJobResponse' {httpStatus} -> httpStatus) (\s@DescribeTrainingJobResponse' {} a -> s {httpStatus = a} :: DescribeTrainingJobResponse)
+
+-- | Name of the model training job.
+describeTrainingJobResponse_trainingJobName :: Lens.Lens' DescribeTrainingJobResponse Prelude.Text
+describeTrainingJobResponse_trainingJobName = Lens.lens (\DescribeTrainingJobResponse' {trainingJobName} -> trainingJobName) (\s@DescribeTrainingJobResponse' {} a -> s {trainingJobName = a} :: DescribeTrainingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the training job.
+describeTrainingJobResponse_trainingJobArn :: Lens.Lens' DescribeTrainingJobResponse Prelude.Text
+describeTrainingJobResponse_trainingJobArn = Lens.lens (\DescribeTrainingJobResponse' {trainingJobArn} -> trainingJobArn) (\s@DescribeTrainingJobResponse' {} a -> s {trainingJobArn = a} :: DescribeTrainingJobResponse)
+
+-- | Information about the Amazon S3 location that is configured for storing
+-- model artifacts.
+describeTrainingJobResponse_modelArtifacts :: Lens.Lens' DescribeTrainingJobResponse ModelArtifacts
+describeTrainingJobResponse_modelArtifacts = Lens.lens (\DescribeTrainingJobResponse' {modelArtifacts} -> modelArtifacts) (\s@DescribeTrainingJobResponse' {} a -> s {modelArtifacts = a} :: DescribeTrainingJobResponse)
+
+-- | The status of the training job.
+--
+-- SageMaker provides the following training job statuses:
+--
+-- -   @InProgress@ - The training is in progress.
+--
+-- -   @Completed@ - The training job has completed.
+--
+-- -   @Failed@ - The training job has failed. To see the reason for the
+--     failure, see the @FailureReason@ field in the response to a
+--     @DescribeTrainingJobResponse@ call.
+--
+-- -   @Stopping@ - The training job is stopping.
+--
+-- -   @Stopped@ - The training job has stopped.
+--
+-- For more detailed information, see @SecondaryStatus@.
+describeTrainingJobResponse_trainingJobStatus :: Lens.Lens' DescribeTrainingJobResponse TrainingJobStatus
+describeTrainingJobResponse_trainingJobStatus = Lens.lens (\DescribeTrainingJobResponse' {trainingJobStatus} -> trainingJobStatus) (\s@DescribeTrainingJobResponse' {} a -> s {trainingJobStatus = a} :: DescribeTrainingJobResponse)
+
+-- | Provides detailed information about the state of the training job. For
+-- detailed information on the secondary status of the training job, see
+-- @StatusMessage@ under SecondaryStatusTransition.
+--
+-- SageMaker provides primary statuses and secondary statuses that apply to
+-- each of them:
+--
+-- [InProgress]
+--     -   @Starting@ - Starting the training job.
+--
+--     -   @Downloading@ - An optional stage for algorithms that support
+--         @File@ training input mode. It indicates that data is being
+--         downloaded to the ML storage volumes.
+--
+--     -   @Training@ - Training is in progress.
+--
+--     -   @Interrupted@ - The job stopped because the managed spot
+--         training instances were interrupted.
+--
+--     -   @Uploading@ - Training is complete and the model artifacts are
+--         being uploaded to the S3 location.
+--
+-- [Completed]
+--     -   @Completed@ - The training job has completed.
+--
+-- [Failed]
+--     -   @Failed@ - The training job has failed. The reason for the
+--         failure is returned in the @FailureReason@ field of
+--         @DescribeTrainingJobResponse@.
+--
+-- [Stopped]
+--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed runtime.
+--
+--     -   @MaxWaitTimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed wait time.
+--
+--     -   @Stopped@ - The training job has stopped.
+--
+-- [Stopping]
+--     -   @Stopping@ - Stopping the training job.
+--
+-- Valid values for @SecondaryStatus@ are subject to change.
+--
+-- We no longer support the following secondary statuses:
+--
+-- -   @LaunchingMLInstances@
+--
+-- -   @PreparingTraining@
+--
+-- -   @DownloadingTrainingImage@
+describeTrainingJobResponse_secondaryStatus :: Lens.Lens' DescribeTrainingJobResponse SecondaryStatus
+describeTrainingJobResponse_secondaryStatus = Lens.lens (\DescribeTrainingJobResponse' {secondaryStatus} -> secondaryStatus) (\s@DescribeTrainingJobResponse' {} a -> s {secondaryStatus = a} :: DescribeTrainingJobResponse)
+
+-- | Information about the algorithm used for training, and algorithm
+-- metadata.
+describeTrainingJobResponse_algorithmSpecification :: Lens.Lens' DescribeTrainingJobResponse AlgorithmSpecification
+describeTrainingJobResponse_algorithmSpecification = Lens.lens (\DescribeTrainingJobResponse' {algorithmSpecification} -> algorithmSpecification) (\s@DescribeTrainingJobResponse' {} a -> s {algorithmSpecification = a} :: DescribeTrainingJobResponse)
+
+-- | Resources, including ML compute instances and ML storage volumes, that
+-- are configured for model training.
+describeTrainingJobResponse_resourceConfig :: Lens.Lens' DescribeTrainingJobResponse ResourceConfig
+describeTrainingJobResponse_resourceConfig = Lens.lens (\DescribeTrainingJobResponse' {resourceConfig} -> resourceConfig) (\s@DescribeTrainingJobResponse' {} a -> s {resourceConfig = a} :: DescribeTrainingJobResponse)
+
+-- | Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+describeTrainingJobResponse_stoppingCondition :: Lens.Lens' DescribeTrainingJobResponse StoppingCondition
+describeTrainingJobResponse_stoppingCondition = Lens.lens (\DescribeTrainingJobResponse' {stoppingCondition} -> stoppingCondition) (\s@DescribeTrainingJobResponse' {} a -> s {stoppingCondition = a} :: DescribeTrainingJobResponse)
+
+-- | A timestamp that indicates when the training job was created.
+describeTrainingJobResponse_creationTime :: Lens.Lens' DescribeTrainingJobResponse Prelude.UTCTime
+describeTrainingJobResponse_creationTime = Lens.lens (\DescribeTrainingJobResponse' {creationTime} -> creationTime) (\s@DescribeTrainingJobResponse' {} a -> s {creationTime = a} :: DescribeTrainingJobResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeTrainingJobResponse where
+  rnf DescribeTrainingJobResponse' {..} =
+    Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf billableTimeInSeconds
+      `Prelude.seq` Prelude.rnf checkpointConfig
+      `Prelude.seq` Prelude.rnf debugHookConfig
+      `Prelude.seq` Prelude.rnf debugRuleConfigurations
+      `Prelude.seq` Prelude.rnf debugRuleEvaluationStatuses
+      `Prelude.seq` Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf enableManagedSpotTraining
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf finalMetricDataList
+      `Prelude.seq` Prelude.rnf hyperParameters
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf labelingJobArn
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf profilerConfig
+      `Prelude.seq` Prelude.rnf
+        profilerRuleConfigurations
+      `Prelude.seq` Prelude.rnf
+        profilerRuleEvaluationStatuses
+      `Prelude.seq` Prelude.rnf
+        profilingStatus
+      `Prelude.seq` Prelude.rnf
+        retryStrategy
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf
+        secondaryStatusTransitions
+      `Prelude.seq` Prelude.rnf
+        tensorBoardOutputConfig
+      `Prelude.seq` Prelude.rnf
+        trainingEndTime
+      `Prelude.seq` Prelude.rnf
+        trainingStartTime
+      `Prelude.seq` Prelude.rnf
+        trainingTimeInSeconds
+      `Prelude.seq` Prelude.rnf
+        tuningJobArn
+      `Prelude.seq` Prelude.rnf
+        vpcConfig
+      `Prelude.seq` Prelude.rnf
+        warmPoolStatus
+      `Prelude.seq` Prelude.rnf
+        httpStatus
+      `Prelude.seq` Prelude.rnf
+        trainingJobName
+      `Prelude.seq` Prelude.rnf
+        trainingJobArn
+      `Prelude.seq` Prelude.rnf
+        modelArtifacts
+      `Prelude.seq` Prelude.rnf
+        trainingJobStatus
+      `Prelude.seq` Prelude.rnf
+        secondaryStatus
+      `Prelude.seq` Prelude.rnf
+        algorithmSpecification
+      `Prelude.seq` Prelude.rnf
+        resourceConfig
+      `Prelude.seq` Prelude.rnf
+        stoppingCondition
+      `Prelude.seq` Prelude.rnf
+        creationTime
diff --git a/gen/Amazonka/SageMaker/DescribeTransformJob.hs b/gen/Amazonka/SageMaker/DescribeTransformJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeTransformJob.hs
@@ -0,0 +1,499 @@
+{-# 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.DescribeTransformJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a transform job.
+module Amazonka.SageMaker.DescribeTransformJob
+  ( -- * Creating a Request
+    DescribeTransformJob (..),
+    newDescribeTransformJob,
+
+    -- * Request Lenses
+    describeTransformJob_transformJobName,
+
+    -- * Destructuring the Response
+    DescribeTransformJobResponse (..),
+    newDescribeTransformJobResponse,
+
+    -- * Response Lenses
+    describeTransformJobResponse_autoMLJobArn,
+    describeTransformJobResponse_batchStrategy,
+    describeTransformJobResponse_dataCaptureConfig,
+    describeTransformJobResponse_dataProcessing,
+    describeTransformJobResponse_environment,
+    describeTransformJobResponse_experimentConfig,
+    describeTransformJobResponse_failureReason,
+    describeTransformJobResponse_labelingJobArn,
+    describeTransformJobResponse_maxConcurrentTransforms,
+    describeTransformJobResponse_maxPayloadInMB,
+    describeTransformJobResponse_modelClientConfig,
+    describeTransformJobResponse_transformEndTime,
+    describeTransformJobResponse_transformOutput,
+    describeTransformJobResponse_transformStartTime,
+    describeTransformJobResponse_httpStatus,
+    describeTransformJobResponse_transformJobName,
+    describeTransformJobResponse_transformJobArn,
+    describeTransformJobResponse_transformJobStatus,
+    describeTransformJobResponse_modelName,
+    describeTransformJobResponse_transformInput,
+    describeTransformJobResponse_transformResources,
+    describeTransformJobResponse_creationTime,
+  )
+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:/ 'newDescribeTransformJob' smart constructor.
+data DescribeTransformJob = DescribeTransformJob'
+  { -- | The name of the transform job that you want to view details of.
+    transformJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTransformJob' 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:
+--
+-- 'transformJobName', 'describeTransformJob_transformJobName' - The name of the transform job that you want to view details of.
+newDescribeTransformJob ::
+  -- | 'transformJobName'
+  Prelude.Text ->
+  DescribeTransformJob
+newDescribeTransformJob pTransformJobName_ =
+  DescribeTransformJob'
+    { transformJobName =
+        pTransformJobName_
+    }
+
+-- | The name of the transform job that you want to view details of.
+describeTransformJob_transformJobName :: Lens.Lens' DescribeTransformJob Prelude.Text
+describeTransformJob_transformJobName = Lens.lens (\DescribeTransformJob' {transformJobName} -> transformJobName) (\s@DescribeTransformJob' {} a -> s {transformJobName = a} :: DescribeTransformJob)
+
+instance Core.AWSRequest DescribeTransformJob where
+  type
+    AWSResponse DescribeTransformJob =
+      DescribeTransformJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTransformJobResponse'
+            Prelude.<$> (x Data..?> "AutoMLJobArn")
+            Prelude.<*> (x Data..?> "BatchStrategy")
+            Prelude.<*> (x Data..?> "DataCaptureConfig")
+            Prelude.<*> (x Data..?> "DataProcessing")
+            Prelude.<*> (x Data..?> "Environment" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "ExperimentConfig")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "LabelingJobArn")
+            Prelude.<*> (x Data..?> "MaxConcurrentTransforms")
+            Prelude.<*> (x Data..?> "MaxPayloadInMB")
+            Prelude.<*> (x Data..?> "ModelClientConfig")
+            Prelude.<*> (x Data..?> "TransformEndTime")
+            Prelude.<*> (x Data..?> "TransformOutput")
+            Prelude.<*> (x Data..?> "TransformStartTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "TransformJobName")
+            Prelude.<*> (x Data..:> "TransformJobArn")
+            Prelude.<*> (x Data..:> "TransformJobStatus")
+            Prelude.<*> (x Data..:> "ModelName")
+            Prelude.<*> (x Data..:> "TransformInput")
+            Prelude.<*> (x Data..:> "TransformResources")
+            Prelude.<*> (x Data..:> "CreationTime")
+      )
+
+instance Prelude.Hashable DescribeTransformJob where
+  hashWithSalt _salt DescribeTransformJob' {..} =
+    _salt `Prelude.hashWithSalt` transformJobName
+
+instance Prelude.NFData DescribeTransformJob where
+  rnf DescribeTransformJob' {..} =
+    Prelude.rnf transformJobName
+
+instance Data.ToHeaders DescribeTransformJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeTransformJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeTransformJob where
+  toJSON DescribeTransformJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TransformJobName" Data..= transformJobName)
+          ]
+      )
+
+instance Data.ToPath DescribeTransformJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeTransformJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTransformJobResponse' smart constructor.
+data DescribeTransformJobResponse = DescribeTransformJobResponse'
+  { -- | The Amazon Resource Name (ARN) of the AutoML transform job.
+    autoMLJobArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the number of records to include in a mini-batch for an HTTP
+    -- inference request. A /record/ // is a single unit of input data that
+    -- inference can be made on. For example, a single line in a CSV file is a
+    -- record.
+    --
+    -- To enable the batch strategy, you must set @SplitType@ to @Line@,
+    -- @RecordIO@, or @TFRecord@.
+    batchStrategy :: Prelude.Maybe BatchStrategy,
+    -- | Configuration to control how SageMaker captures inference data.
+    dataCaptureConfig :: Prelude.Maybe BatchDataCaptureConfig,
+    dataProcessing :: Prelude.Maybe DataProcessing,
+    -- | The environment variables to set in the Docker container. We support up
+    -- to 16 key and values entries in the map.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | If the transform job failed, @FailureReason@ describes why it failed. A
+    -- transform job creates a log file, which includes error messages, and
+    -- stores it as an Amazon S3 object. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html Log Amazon SageMaker Events with Amazon CloudWatch>.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Amazon SageMaker Ground Truth
+    -- labeling job that created the transform or training job.
+    labelingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of parallel requests on each instance node that can
+    -- be launched in a transform job. The default value is 1.
+    maxConcurrentTransforms :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum payload size, in MB, used in the transform job.
+    maxPayloadInMB :: Prelude.Maybe Prelude.Natural,
+    -- | The timeout and maximum number of retries for processing a transform job
+    -- invocation.
+    modelClientConfig :: Prelude.Maybe ModelClientConfig,
+    -- | Indicates when the transform job has been completed, or has stopped or
+    -- failed. You are billed for the time interval between this time and the
+    -- value of @TransformStartTime@.
+    transformEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Identifies the Amazon S3 location where you want Amazon SageMaker to
+    -- save the results from the transform job.
+    transformOutput :: Prelude.Maybe TransformOutput,
+    -- | Indicates when the transform job starts on ML instances. You are billed
+    -- for the time interval between this time and the value of
+    -- @TransformEndTime@.
+    transformStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The name of the transform job.
+    transformJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the transform job.
+    transformJobArn :: Prelude.Text,
+    -- | The status of the transform job. If the transform job failed, the reason
+    -- is returned in the @FailureReason@ field.
+    transformJobStatus :: TransformJobStatus,
+    -- | The name of the model used in the transform job.
+    modelName :: Prelude.Text,
+    -- | Describes the dataset to be transformed and the Amazon S3 location where
+    -- it is stored.
+    transformInput :: TransformInput,
+    -- | Describes the resources, including ML instance types and ML instance
+    -- count, to use for the transform job.
+    transformResources :: TransformResources,
+    -- | A timestamp that shows when the transform Job was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTransformJobResponse' 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:
+--
+-- 'autoMLJobArn', 'describeTransformJobResponse_autoMLJobArn' - The Amazon Resource Name (ARN) of the AutoML transform job.
+--
+-- 'batchStrategy', 'describeTransformJobResponse_batchStrategy' - Specifies the number of records to include in a mini-batch for an HTTP
+-- inference request. A /record/ // is a single unit of input data that
+-- inference can be made on. For example, a single line in a CSV file is a
+-- record.
+--
+-- To enable the batch strategy, you must set @SplitType@ to @Line@,
+-- @RecordIO@, or @TFRecord@.
+--
+-- 'dataCaptureConfig', 'describeTransformJobResponse_dataCaptureConfig' - Configuration to control how SageMaker captures inference data.
+--
+-- 'dataProcessing', 'describeTransformJobResponse_dataProcessing' - Undocumented member.
+--
+-- 'environment', 'describeTransformJobResponse_environment' - The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+--
+-- 'experimentConfig', 'describeTransformJobResponse_experimentConfig' - Undocumented member.
+--
+-- 'failureReason', 'describeTransformJobResponse_failureReason' - If the transform job failed, @FailureReason@ describes why it failed. A
+-- transform job creates a log file, which includes error messages, and
+-- stores it as an Amazon S3 object. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html Log Amazon SageMaker Events with Amazon CloudWatch>.
+--
+-- 'labelingJobArn', 'describeTransformJobResponse_labelingJobArn' - The Amazon Resource Name (ARN) of the Amazon SageMaker Ground Truth
+-- labeling job that created the transform or training job.
+--
+-- 'maxConcurrentTransforms', 'describeTransformJobResponse_maxConcurrentTransforms' - The maximum number of parallel requests on each instance node that can
+-- be launched in a transform job. The default value is 1.
+--
+-- 'maxPayloadInMB', 'describeTransformJobResponse_maxPayloadInMB' - The maximum payload size, in MB, used in the transform job.
+--
+-- 'modelClientConfig', 'describeTransformJobResponse_modelClientConfig' - The timeout and maximum number of retries for processing a transform job
+-- invocation.
+--
+-- 'transformEndTime', 'describeTransformJobResponse_transformEndTime' - Indicates when the transform job has been completed, or has stopped or
+-- failed. You are billed for the time interval between this time and the
+-- value of @TransformStartTime@.
+--
+-- 'transformOutput', 'describeTransformJobResponse_transformOutput' - Identifies the Amazon S3 location where you want Amazon SageMaker to
+-- save the results from the transform job.
+--
+-- 'transformStartTime', 'describeTransformJobResponse_transformStartTime' - Indicates when the transform job starts on ML instances. You are billed
+-- for the time interval between this time and the value of
+-- @TransformEndTime@.
+--
+-- 'httpStatus', 'describeTransformJobResponse_httpStatus' - The response's http status code.
+--
+-- 'transformJobName', 'describeTransformJobResponse_transformJobName' - The name of the transform job.
+--
+-- 'transformJobArn', 'describeTransformJobResponse_transformJobArn' - The Amazon Resource Name (ARN) of the transform job.
+--
+-- 'transformJobStatus', 'describeTransformJobResponse_transformJobStatus' - The status of the transform job. If the transform job failed, the reason
+-- is returned in the @FailureReason@ field.
+--
+-- 'modelName', 'describeTransformJobResponse_modelName' - The name of the model used in the transform job.
+--
+-- 'transformInput', 'describeTransformJobResponse_transformInput' - Describes the dataset to be transformed and the Amazon S3 location where
+-- it is stored.
+--
+-- 'transformResources', 'describeTransformJobResponse_transformResources' - Describes the resources, including ML instance types and ML instance
+-- count, to use for the transform job.
+--
+-- 'creationTime', 'describeTransformJobResponse_creationTime' - A timestamp that shows when the transform Job was created.
+newDescribeTransformJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'transformJobName'
+  Prelude.Text ->
+  -- | 'transformJobArn'
+  Prelude.Text ->
+  -- | 'transformJobStatus'
+  TransformJobStatus ->
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'transformInput'
+  TransformInput ->
+  -- | 'transformResources'
+  TransformResources ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  DescribeTransformJobResponse
+newDescribeTransformJobResponse
+  pHttpStatus_
+  pTransformJobName_
+  pTransformJobArn_
+  pTransformJobStatus_
+  pModelName_
+  pTransformInput_
+  pTransformResources_
+  pCreationTime_ =
+    DescribeTransformJobResponse'
+      { autoMLJobArn =
+          Prelude.Nothing,
+        batchStrategy = Prelude.Nothing,
+        dataCaptureConfig = Prelude.Nothing,
+        dataProcessing = Prelude.Nothing,
+        environment = Prelude.Nothing,
+        experimentConfig = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        labelingJobArn = Prelude.Nothing,
+        maxConcurrentTransforms = Prelude.Nothing,
+        maxPayloadInMB = Prelude.Nothing,
+        modelClientConfig = Prelude.Nothing,
+        transformEndTime = Prelude.Nothing,
+        transformOutput = Prelude.Nothing,
+        transformStartTime = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        transformJobName = pTransformJobName_,
+        transformJobArn = pTransformJobArn_,
+        transformJobStatus = pTransformJobStatus_,
+        modelName = pModelName_,
+        transformInput = pTransformInput_,
+        transformResources = pTransformResources_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_
+      }
+
+-- | The Amazon Resource Name (ARN) of the AutoML transform job.
+describeTransformJobResponse_autoMLJobArn :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.Text)
+describeTransformJobResponse_autoMLJobArn = Lens.lens (\DescribeTransformJobResponse' {autoMLJobArn} -> autoMLJobArn) (\s@DescribeTransformJobResponse' {} a -> s {autoMLJobArn = a} :: DescribeTransformJobResponse)
+
+-- | Specifies the number of records to include in a mini-batch for an HTTP
+-- inference request. A /record/ // is a single unit of input data that
+-- inference can be made on. For example, a single line in a CSV file is a
+-- record.
+--
+-- To enable the batch strategy, you must set @SplitType@ to @Line@,
+-- @RecordIO@, or @TFRecord@.
+describeTransformJobResponse_batchStrategy :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe BatchStrategy)
+describeTransformJobResponse_batchStrategy = Lens.lens (\DescribeTransformJobResponse' {batchStrategy} -> batchStrategy) (\s@DescribeTransformJobResponse' {} a -> s {batchStrategy = a} :: DescribeTransformJobResponse)
+
+-- | Configuration to control how SageMaker captures inference data.
+describeTransformJobResponse_dataCaptureConfig :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe BatchDataCaptureConfig)
+describeTransformJobResponse_dataCaptureConfig = Lens.lens (\DescribeTransformJobResponse' {dataCaptureConfig} -> dataCaptureConfig) (\s@DescribeTransformJobResponse' {} a -> s {dataCaptureConfig = a} :: DescribeTransformJobResponse)
+
+-- | Undocumented member.
+describeTransformJobResponse_dataProcessing :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe DataProcessing)
+describeTransformJobResponse_dataProcessing = Lens.lens (\DescribeTransformJobResponse' {dataProcessing} -> dataProcessing) (\s@DescribeTransformJobResponse' {} a -> s {dataProcessing = a} :: DescribeTransformJobResponse)
+
+-- | The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+describeTransformJobResponse_environment :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeTransformJobResponse_environment = Lens.lens (\DescribeTransformJobResponse' {environment} -> environment) (\s@DescribeTransformJobResponse' {} a -> s {environment = a} :: DescribeTransformJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+describeTransformJobResponse_experimentConfig :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe ExperimentConfig)
+describeTransformJobResponse_experimentConfig = Lens.lens (\DescribeTransformJobResponse' {experimentConfig} -> experimentConfig) (\s@DescribeTransformJobResponse' {} a -> s {experimentConfig = a} :: DescribeTransformJobResponse)
+
+-- | If the transform job failed, @FailureReason@ describes why it failed. A
+-- transform job creates a log file, which includes error messages, and
+-- stores it as an Amazon S3 object. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html Log Amazon SageMaker Events with Amazon CloudWatch>.
+describeTransformJobResponse_failureReason :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.Text)
+describeTransformJobResponse_failureReason = Lens.lens (\DescribeTransformJobResponse' {failureReason} -> failureReason) (\s@DescribeTransformJobResponse' {} a -> s {failureReason = a} :: DescribeTransformJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Amazon SageMaker Ground Truth
+-- labeling job that created the transform or training job.
+describeTransformJobResponse_labelingJobArn :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.Text)
+describeTransformJobResponse_labelingJobArn = Lens.lens (\DescribeTransformJobResponse' {labelingJobArn} -> labelingJobArn) (\s@DescribeTransformJobResponse' {} a -> s {labelingJobArn = a} :: DescribeTransformJobResponse)
+
+-- | The maximum number of parallel requests on each instance node that can
+-- be launched in a transform job. The default value is 1.
+describeTransformJobResponse_maxConcurrentTransforms :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.Natural)
+describeTransformJobResponse_maxConcurrentTransforms = Lens.lens (\DescribeTransformJobResponse' {maxConcurrentTransforms} -> maxConcurrentTransforms) (\s@DescribeTransformJobResponse' {} a -> s {maxConcurrentTransforms = a} :: DescribeTransformJobResponse)
+
+-- | The maximum payload size, in MB, used in the transform job.
+describeTransformJobResponse_maxPayloadInMB :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.Natural)
+describeTransformJobResponse_maxPayloadInMB = Lens.lens (\DescribeTransformJobResponse' {maxPayloadInMB} -> maxPayloadInMB) (\s@DescribeTransformJobResponse' {} a -> s {maxPayloadInMB = a} :: DescribeTransformJobResponse)
+
+-- | The timeout and maximum number of retries for processing a transform job
+-- invocation.
+describeTransformJobResponse_modelClientConfig :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe ModelClientConfig)
+describeTransformJobResponse_modelClientConfig = Lens.lens (\DescribeTransformJobResponse' {modelClientConfig} -> modelClientConfig) (\s@DescribeTransformJobResponse' {} a -> s {modelClientConfig = a} :: DescribeTransformJobResponse)
+
+-- | Indicates when the transform job has been completed, or has stopped or
+-- failed. You are billed for the time interval between this time and the
+-- value of @TransformStartTime@.
+describeTransformJobResponse_transformEndTime :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeTransformJobResponse_transformEndTime = Lens.lens (\DescribeTransformJobResponse' {transformEndTime} -> transformEndTime) (\s@DescribeTransformJobResponse' {} a -> s {transformEndTime = a} :: DescribeTransformJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Identifies the Amazon S3 location where you want Amazon SageMaker to
+-- save the results from the transform job.
+describeTransformJobResponse_transformOutput :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe TransformOutput)
+describeTransformJobResponse_transformOutput = Lens.lens (\DescribeTransformJobResponse' {transformOutput} -> transformOutput) (\s@DescribeTransformJobResponse' {} a -> s {transformOutput = a} :: DescribeTransformJobResponse)
+
+-- | Indicates when the transform job starts on ML instances. You are billed
+-- for the time interval between this time and the value of
+-- @TransformEndTime@.
+describeTransformJobResponse_transformStartTime :: Lens.Lens' DescribeTransformJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeTransformJobResponse_transformStartTime = Lens.lens (\DescribeTransformJobResponse' {transformStartTime} -> transformStartTime) (\s@DescribeTransformJobResponse' {} a -> s {transformStartTime = a} :: DescribeTransformJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeTransformJobResponse_httpStatus :: Lens.Lens' DescribeTransformJobResponse Prelude.Int
+describeTransformJobResponse_httpStatus = Lens.lens (\DescribeTransformJobResponse' {httpStatus} -> httpStatus) (\s@DescribeTransformJobResponse' {} a -> s {httpStatus = a} :: DescribeTransformJobResponse)
+
+-- | The name of the transform job.
+describeTransformJobResponse_transformJobName :: Lens.Lens' DescribeTransformJobResponse Prelude.Text
+describeTransformJobResponse_transformJobName = Lens.lens (\DescribeTransformJobResponse' {transformJobName} -> transformJobName) (\s@DescribeTransformJobResponse' {} a -> s {transformJobName = a} :: DescribeTransformJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the transform job.
+describeTransformJobResponse_transformJobArn :: Lens.Lens' DescribeTransformJobResponse Prelude.Text
+describeTransformJobResponse_transformJobArn = Lens.lens (\DescribeTransformJobResponse' {transformJobArn} -> transformJobArn) (\s@DescribeTransformJobResponse' {} a -> s {transformJobArn = a} :: DescribeTransformJobResponse)
+
+-- | The status of the transform job. If the transform job failed, the reason
+-- is returned in the @FailureReason@ field.
+describeTransformJobResponse_transformJobStatus :: Lens.Lens' DescribeTransformJobResponse TransformJobStatus
+describeTransformJobResponse_transformJobStatus = Lens.lens (\DescribeTransformJobResponse' {transformJobStatus} -> transformJobStatus) (\s@DescribeTransformJobResponse' {} a -> s {transformJobStatus = a} :: DescribeTransformJobResponse)
+
+-- | The name of the model used in the transform job.
+describeTransformJobResponse_modelName :: Lens.Lens' DescribeTransformJobResponse Prelude.Text
+describeTransformJobResponse_modelName = Lens.lens (\DescribeTransformJobResponse' {modelName} -> modelName) (\s@DescribeTransformJobResponse' {} a -> s {modelName = a} :: DescribeTransformJobResponse)
+
+-- | Describes the dataset to be transformed and the Amazon S3 location where
+-- it is stored.
+describeTransformJobResponse_transformInput :: Lens.Lens' DescribeTransformJobResponse TransformInput
+describeTransformJobResponse_transformInput = Lens.lens (\DescribeTransformJobResponse' {transformInput} -> transformInput) (\s@DescribeTransformJobResponse' {} a -> s {transformInput = a} :: DescribeTransformJobResponse)
+
+-- | Describes the resources, including ML instance types and ML instance
+-- count, to use for the transform job.
+describeTransformJobResponse_transformResources :: Lens.Lens' DescribeTransformJobResponse TransformResources
+describeTransformJobResponse_transformResources = Lens.lens (\DescribeTransformJobResponse' {transformResources} -> transformResources) (\s@DescribeTransformJobResponse' {} a -> s {transformResources = a} :: DescribeTransformJobResponse)
+
+-- | A timestamp that shows when the transform Job was created.
+describeTransformJobResponse_creationTime :: Lens.Lens' DescribeTransformJobResponse Prelude.UTCTime
+describeTransformJobResponse_creationTime = Lens.lens (\DescribeTransformJobResponse' {creationTime} -> creationTime) (\s@DescribeTransformJobResponse' {} a -> s {creationTime = a} :: DescribeTransformJobResponse) Prelude.. Data._Time
+
+instance Prelude.NFData DescribeTransformJobResponse where
+  rnf DescribeTransformJobResponse' {..} =
+    Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf batchStrategy
+      `Prelude.seq` Prelude.rnf dataCaptureConfig
+      `Prelude.seq` Prelude.rnf dataProcessing
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf labelingJobArn
+      `Prelude.seq` Prelude.rnf maxConcurrentTransforms
+      `Prelude.seq` Prelude.rnf maxPayloadInMB
+      `Prelude.seq` Prelude.rnf modelClientConfig
+      `Prelude.seq` Prelude.rnf transformEndTime
+      `Prelude.seq` Prelude.rnf transformOutput
+      `Prelude.seq` Prelude.rnf transformStartTime
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf transformJobName
+      `Prelude.seq` Prelude.rnf transformJobArn
+      `Prelude.seq` Prelude.rnf transformJobStatus
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf transformInput
+      `Prelude.seq` Prelude.rnf
+        transformResources
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/DescribeTrial.hs b/gen/Amazonka/SageMaker/DescribeTrial.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeTrial.hs
@@ -0,0 +1,278 @@
+{-# 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.DescribeTrial
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of a trial\'s properties.
+module Amazonka.SageMaker.DescribeTrial
+  ( -- * Creating a Request
+    DescribeTrial (..),
+    newDescribeTrial,
+
+    -- * Request Lenses
+    describeTrial_trialName,
+
+    -- * Destructuring the Response
+    DescribeTrialResponse (..),
+    newDescribeTrialResponse,
+
+    -- * Response Lenses
+    describeTrialResponse_createdBy,
+    describeTrialResponse_creationTime,
+    describeTrialResponse_displayName,
+    describeTrialResponse_experimentName,
+    describeTrialResponse_lastModifiedBy,
+    describeTrialResponse_lastModifiedTime,
+    describeTrialResponse_metadataProperties,
+    describeTrialResponse_source,
+    describeTrialResponse_trialArn,
+    describeTrialResponse_trialName,
+    describeTrialResponse_httpStatus,
+  )
+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:/ 'newDescribeTrial' smart constructor.
+data DescribeTrial = DescribeTrial'
+  { -- | The name of the trial to describe.
+    trialName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTrial' 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:
+--
+-- 'trialName', 'describeTrial_trialName' - The name of the trial to describe.
+newDescribeTrial ::
+  -- | 'trialName'
+  Prelude.Text ->
+  DescribeTrial
+newDescribeTrial pTrialName_ =
+  DescribeTrial' {trialName = pTrialName_}
+
+-- | The name of the trial to describe.
+describeTrial_trialName :: Lens.Lens' DescribeTrial Prelude.Text
+describeTrial_trialName = Lens.lens (\DescribeTrial' {trialName} -> trialName) (\s@DescribeTrial' {} a -> s {trialName = a} :: DescribeTrial)
+
+instance Core.AWSRequest DescribeTrial where
+  type
+    AWSResponse DescribeTrial =
+      DescribeTrialResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTrialResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DisplayName")
+            Prelude.<*> (x Data..?> "ExperimentName")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "MetadataProperties")
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (x Data..?> "TrialArn")
+            Prelude.<*> (x Data..?> "TrialName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTrial where
+  hashWithSalt _salt DescribeTrial' {..} =
+    _salt `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData DescribeTrial where
+  rnf DescribeTrial' {..} = Prelude.rnf trialName
+
+instance Data.ToHeaders DescribeTrial where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeTrial" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeTrial where
+  toJSON DescribeTrial' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("TrialName" Data..= trialName)]
+      )
+
+instance Data.ToPath DescribeTrial where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeTrial where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTrialResponse' smart constructor.
+data DescribeTrialResponse = DescribeTrialResponse'
+  { -- | Who created the trial.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the trial was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+    -- @TrialName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment the trial is part of.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | Who last modified the trial.
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the trial was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | The Amazon Resource Name (ARN) of the source and, optionally, the job
+    -- type.
+    source :: Prelude.Maybe TrialSource,
+    -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial.
+    trialName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTrialResponse' 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:
+--
+-- 'createdBy', 'describeTrialResponse_createdBy' - Who created the trial.
+--
+-- 'creationTime', 'describeTrialResponse_creationTime' - When the trial was created.
+--
+-- 'displayName', 'describeTrialResponse_displayName' - The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+-- @TrialName@ is displayed.
+--
+-- 'experimentName', 'describeTrialResponse_experimentName' - The name of the experiment the trial is part of.
+--
+-- 'lastModifiedBy', 'describeTrialResponse_lastModifiedBy' - Who last modified the trial.
+--
+-- 'lastModifiedTime', 'describeTrialResponse_lastModifiedTime' - When the trial was last modified.
+--
+-- 'metadataProperties', 'describeTrialResponse_metadataProperties' - Undocumented member.
+--
+-- 'source', 'describeTrialResponse_source' - The Amazon Resource Name (ARN) of the source and, optionally, the job
+-- type.
+--
+-- 'trialArn', 'describeTrialResponse_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'trialName', 'describeTrialResponse_trialName' - The name of the trial.
+--
+-- 'httpStatus', 'describeTrialResponse_httpStatus' - The response's http status code.
+newDescribeTrialResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeTrialResponse
+newDescribeTrialResponse pHttpStatus_ =
+  DescribeTrialResponse'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      source = Prelude.Nothing,
+      trialArn = Prelude.Nothing,
+      trialName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Who created the trial.
+describeTrialResponse_createdBy :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe UserContext)
+describeTrialResponse_createdBy = Lens.lens (\DescribeTrialResponse' {createdBy} -> createdBy) (\s@DescribeTrialResponse' {} a -> s {createdBy = a} :: DescribeTrialResponse)
+
+-- | When the trial was created.
+describeTrialResponse_creationTime :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrialResponse_creationTime = Lens.lens (\DescribeTrialResponse' {creationTime} -> creationTime) (\s@DescribeTrialResponse' {} a -> s {creationTime = a} :: DescribeTrialResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+-- @TrialName@ is displayed.
+describeTrialResponse_displayName :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe Prelude.Text)
+describeTrialResponse_displayName = Lens.lens (\DescribeTrialResponse' {displayName} -> displayName) (\s@DescribeTrialResponse' {} a -> s {displayName = a} :: DescribeTrialResponse)
+
+-- | The name of the experiment the trial is part of.
+describeTrialResponse_experimentName :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe Prelude.Text)
+describeTrialResponse_experimentName = Lens.lens (\DescribeTrialResponse' {experimentName} -> experimentName) (\s@DescribeTrialResponse' {} a -> s {experimentName = a} :: DescribeTrialResponse)
+
+-- | Who last modified the trial.
+describeTrialResponse_lastModifiedBy :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe UserContext)
+describeTrialResponse_lastModifiedBy = Lens.lens (\DescribeTrialResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeTrialResponse' {} a -> s {lastModifiedBy = a} :: DescribeTrialResponse)
+
+-- | When the trial was last modified.
+describeTrialResponse_lastModifiedTime :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrialResponse_lastModifiedTime = Lens.lens (\DescribeTrialResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeTrialResponse' {} a -> s {lastModifiedTime = a} :: DescribeTrialResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+describeTrialResponse_metadataProperties :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe MetadataProperties)
+describeTrialResponse_metadataProperties = Lens.lens (\DescribeTrialResponse' {metadataProperties} -> metadataProperties) (\s@DescribeTrialResponse' {} a -> s {metadataProperties = a} :: DescribeTrialResponse)
+
+-- | The Amazon Resource Name (ARN) of the source and, optionally, the job
+-- type.
+describeTrialResponse_source :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe TrialSource)
+describeTrialResponse_source = Lens.lens (\DescribeTrialResponse' {source} -> source) (\s@DescribeTrialResponse' {} a -> s {source = a} :: DescribeTrialResponse)
+
+-- | The Amazon Resource Name (ARN) of the trial.
+describeTrialResponse_trialArn :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe Prelude.Text)
+describeTrialResponse_trialArn = Lens.lens (\DescribeTrialResponse' {trialArn} -> trialArn) (\s@DescribeTrialResponse' {} a -> s {trialArn = a} :: DescribeTrialResponse)
+
+-- | The name of the trial.
+describeTrialResponse_trialName :: Lens.Lens' DescribeTrialResponse (Prelude.Maybe Prelude.Text)
+describeTrialResponse_trialName = Lens.lens (\DescribeTrialResponse' {trialName} -> trialName) (\s@DescribeTrialResponse' {} a -> s {trialName = a} :: DescribeTrialResponse)
+
+-- | The response's http status code.
+describeTrialResponse_httpStatus :: Lens.Lens' DescribeTrialResponse Prelude.Int
+describeTrialResponse_httpStatus = Lens.lens (\DescribeTrialResponse' {httpStatus} -> httpStatus) (\s@DescribeTrialResponse' {} a -> s {httpStatus = a} :: DescribeTrialResponse)
+
+instance Prelude.NFData DescribeTrialResponse where
+  rnf DescribeTrialResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf trialName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeTrialComponent.hs b/gen/Amazonka/SageMaker/DescribeTrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeTrialComponent.hs
@@ -0,0 +1,410 @@
+{-# 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.DescribeTrialComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of a trials component\'s properties.
+module Amazonka.SageMaker.DescribeTrialComponent
+  ( -- * Creating a Request
+    DescribeTrialComponent (..),
+    newDescribeTrialComponent,
+
+    -- * Request Lenses
+    describeTrialComponent_trialComponentName,
+
+    -- * Destructuring the Response
+    DescribeTrialComponentResponse (..),
+    newDescribeTrialComponentResponse,
+
+    -- * Response Lenses
+    describeTrialComponentResponse_createdBy,
+    describeTrialComponentResponse_creationTime,
+    describeTrialComponentResponse_displayName,
+    describeTrialComponentResponse_endTime,
+    describeTrialComponentResponse_inputArtifacts,
+    describeTrialComponentResponse_lastModifiedBy,
+    describeTrialComponentResponse_lastModifiedTime,
+    describeTrialComponentResponse_lineageGroupArn,
+    describeTrialComponentResponse_metadataProperties,
+    describeTrialComponentResponse_metrics,
+    describeTrialComponentResponse_outputArtifacts,
+    describeTrialComponentResponse_parameters,
+    describeTrialComponentResponse_source,
+    describeTrialComponentResponse_sources,
+    describeTrialComponentResponse_startTime,
+    describeTrialComponentResponse_status,
+    describeTrialComponentResponse_trialComponentArn,
+    describeTrialComponentResponse_trialComponentName,
+    describeTrialComponentResponse_httpStatus,
+  )
+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:/ 'newDescribeTrialComponent' smart constructor.
+data DescribeTrialComponent = DescribeTrialComponent'
+  { -- | The name of the trial component to describe.
+    trialComponentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTrialComponent' 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:
+--
+-- 'trialComponentName', 'describeTrialComponent_trialComponentName' - The name of the trial component to describe.
+newDescribeTrialComponent ::
+  -- | 'trialComponentName'
+  Prelude.Text ->
+  DescribeTrialComponent
+newDescribeTrialComponent pTrialComponentName_ =
+  DescribeTrialComponent'
+    { trialComponentName =
+        pTrialComponentName_
+    }
+
+-- | The name of the trial component to describe.
+describeTrialComponent_trialComponentName :: Lens.Lens' DescribeTrialComponent Prelude.Text
+describeTrialComponent_trialComponentName = Lens.lens (\DescribeTrialComponent' {trialComponentName} -> trialComponentName) (\s@DescribeTrialComponent' {} a -> s {trialComponentName = a} :: DescribeTrialComponent)
+
+instance Core.AWSRequest DescribeTrialComponent where
+  type
+    AWSResponse DescribeTrialComponent =
+      DescribeTrialComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTrialComponentResponse'
+            Prelude.<$> (x Data..?> "CreatedBy")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DisplayName")
+            Prelude.<*> (x Data..?> "EndTime")
+            Prelude.<*> (x Data..?> "InputArtifacts" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "LineageGroupArn")
+            Prelude.<*> (x Data..?> "MetadataProperties")
+            Prelude.<*> (x Data..?> "Metrics" Core..!@ Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..?> "OutputArtifacts"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "Parameters" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (x Data..?> "Sources" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "StartTime")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "TrialComponentArn")
+            Prelude.<*> (x Data..?> "TrialComponentName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTrialComponent where
+  hashWithSalt _salt DescribeTrialComponent' {..} =
+    _salt `Prelude.hashWithSalt` trialComponentName
+
+instance Prelude.NFData DescribeTrialComponent where
+  rnf DescribeTrialComponent' {..} =
+    Prelude.rnf trialComponentName
+
+instance Data.ToHeaders DescribeTrialComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeTrialComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeTrialComponent where
+  toJSON DescribeTrialComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TrialComponentName" Data..= trialComponentName)
+          ]
+      )
+
+instance Data.ToPath DescribeTrialComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeTrialComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTrialComponentResponse' smart constructor.
+data DescribeTrialComponentResponse = DescribeTrialComponentResponse'
+  { -- | Who created the trial component.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the component was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the component as displayed. If @DisplayName@ isn\'t
+    -- specified, @TrialComponentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When the component ended.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The input artifacts of the component.
+    inputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    -- | Who last modified the component.
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the component was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | The metrics for the component.
+    metrics :: Prelude.Maybe [TrialComponentMetricSummary],
+    -- | The output artifacts of the component.
+    outputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    -- | The hyperparameters of the component.
+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue),
+    -- | The Amazon Resource Name (ARN) of the source and, optionally, the job
+    -- type.
+    source :: Prelude.Maybe TrialComponentSource,
+    -- | A list of ARNs and, if applicable, job types for multiple sources of an
+    -- experiment run.
+    sources :: Prelude.Maybe [TrialComponentSource],
+    -- | When the component started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The status of the component. States include:
+    --
+    -- -   InProgress
+    --
+    -- -   Completed
+    --
+    -- -   Failed
+    status :: Prelude.Maybe TrialComponentStatus,
+    -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial component.
+    trialComponentName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTrialComponentResponse' 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:
+--
+-- 'createdBy', 'describeTrialComponentResponse_createdBy' - Who created the trial component.
+--
+-- 'creationTime', 'describeTrialComponentResponse_creationTime' - When the component was created.
+--
+-- 'displayName', 'describeTrialComponentResponse_displayName' - The name of the component as displayed. If @DisplayName@ isn\'t
+-- specified, @TrialComponentName@ is displayed.
+--
+-- 'endTime', 'describeTrialComponentResponse_endTime' - When the component ended.
+--
+-- 'inputArtifacts', 'describeTrialComponentResponse_inputArtifacts' - The input artifacts of the component.
+--
+-- 'lastModifiedBy', 'describeTrialComponentResponse_lastModifiedBy' - Who last modified the component.
+--
+-- 'lastModifiedTime', 'describeTrialComponentResponse_lastModifiedTime' - When the component was last modified.
+--
+-- 'lineageGroupArn', 'describeTrialComponentResponse_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group.
+--
+-- 'metadataProperties', 'describeTrialComponentResponse_metadataProperties' - Undocumented member.
+--
+-- 'metrics', 'describeTrialComponentResponse_metrics' - The metrics for the component.
+--
+-- 'outputArtifacts', 'describeTrialComponentResponse_outputArtifacts' - The output artifacts of the component.
+--
+-- 'parameters', 'describeTrialComponentResponse_parameters' - The hyperparameters of the component.
+--
+-- 'source', 'describeTrialComponentResponse_source' - The Amazon Resource Name (ARN) of the source and, optionally, the job
+-- type.
+--
+-- 'sources', 'describeTrialComponentResponse_sources' - A list of ARNs and, if applicable, job types for multiple sources of an
+-- experiment run.
+--
+-- 'startTime', 'describeTrialComponentResponse_startTime' - When the component started.
+--
+-- 'status', 'describeTrialComponentResponse_status' - The status of the component. States include:
+--
+-- -   InProgress
+--
+-- -   Completed
+--
+-- -   Failed
+--
+-- 'trialComponentArn', 'describeTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'trialComponentName', 'describeTrialComponentResponse_trialComponentName' - The name of the trial component.
+--
+-- 'httpStatus', 'describeTrialComponentResponse_httpStatus' - The response's http status code.
+newDescribeTrialComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeTrialComponentResponse
+newDescribeTrialComponentResponse pHttpStatus_ =
+  DescribeTrialComponentResponse'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      inputArtifacts = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      metrics = Prelude.Nothing,
+      outputArtifacts = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      source = Prelude.Nothing,
+      sources = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      trialComponentArn = Prelude.Nothing,
+      trialComponentName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Who created the trial component.
+describeTrialComponentResponse_createdBy :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe UserContext)
+describeTrialComponentResponse_createdBy = Lens.lens (\DescribeTrialComponentResponse' {createdBy} -> createdBy) (\s@DescribeTrialComponentResponse' {} a -> s {createdBy = a} :: DescribeTrialComponentResponse)
+
+-- | When the component was created.
+describeTrialComponentResponse_creationTime :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrialComponentResponse_creationTime = Lens.lens (\DescribeTrialComponentResponse' {creationTime} -> creationTime) (\s@DescribeTrialComponentResponse' {} a -> s {creationTime = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the component as displayed. If @DisplayName@ isn\'t
+-- specified, @TrialComponentName@ is displayed.
+describeTrialComponentResponse_displayName :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.Text)
+describeTrialComponentResponse_displayName = Lens.lens (\DescribeTrialComponentResponse' {displayName} -> displayName) (\s@DescribeTrialComponentResponse' {} a -> s {displayName = a} :: DescribeTrialComponentResponse)
+
+-- | When the component ended.
+describeTrialComponentResponse_endTime :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrialComponentResponse_endTime = Lens.lens (\DescribeTrialComponentResponse' {endTime} -> endTime) (\s@DescribeTrialComponentResponse' {} a -> s {endTime = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The input artifacts of the component.
+describeTrialComponentResponse_inputArtifacts :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+describeTrialComponentResponse_inputArtifacts = Lens.lens (\DescribeTrialComponentResponse' {inputArtifacts} -> inputArtifacts) (\s@DescribeTrialComponentResponse' {} a -> s {inputArtifacts = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Who last modified the component.
+describeTrialComponentResponse_lastModifiedBy :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe UserContext)
+describeTrialComponentResponse_lastModifiedBy = Lens.lens (\DescribeTrialComponentResponse' {lastModifiedBy} -> lastModifiedBy) (\s@DescribeTrialComponentResponse' {} a -> s {lastModifiedBy = a} :: DescribeTrialComponentResponse)
+
+-- | When the component was last modified.
+describeTrialComponentResponse_lastModifiedTime :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrialComponentResponse_lastModifiedTime = Lens.lens (\DescribeTrialComponentResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeTrialComponentResponse' {} a -> s {lastModifiedTime = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group.
+describeTrialComponentResponse_lineageGroupArn :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.Text)
+describeTrialComponentResponse_lineageGroupArn = Lens.lens (\DescribeTrialComponentResponse' {lineageGroupArn} -> lineageGroupArn) (\s@DescribeTrialComponentResponse' {} a -> s {lineageGroupArn = a} :: DescribeTrialComponentResponse)
+
+-- | Undocumented member.
+describeTrialComponentResponse_metadataProperties :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe MetadataProperties)
+describeTrialComponentResponse_metadataProperties = Lens.lens (\DescribeTrialComponentResponse' {metadataProperties} -> metadataProperties) (\s@DescribeTrialComponentResponse' {} a -> s {metadataProperties = a} :: DescribeTrialComponentResponse)
+
+-- | The metrics for the component.
+describeTrialComponentResponse_metrics :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe [TrialComponentMetricSummary])
+describeTrialComponentResponse_metrics = Lens.lens (\DescribeTrialComponentResponse' {metrics} -> metrics) (\s@DescribeTrialComponentResponse' {} a -> s {metrics = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The output artifacts of the component.
+describeTrialComponentResponse_outputArtifacts :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+describeTrialComponentResponse_outputArtifacts = Lens.lens (\DescribeTrialComponentResponse' {outputArtifacts} -> outputArtifacts) (\s@DescribeTrialComponentResponse' {} a -> s {outputArtifacts = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hyperparameters of the component.
+describeTrialComponentResponse_parameters :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue))
+describeTrialComponentResponse_parameters = Lens.lens (\DescribeTrialComponentResponse' {parameters} -> parameters) (\s@DescribeTrialComponentResponse' {} a -> s {parameters = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the source and, optionally, the job
+-- type.
+describeTrialComponentResponse_source :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe TrialComponentSource)
+describeTrialComponentResponse_source = Lens.lens (\DescribeTrialComponentResponse' {source} -> source) (\s@DescribeTrialComponentResponse' {} a -> s {source = a} :: DescribeTrialComponentResponse)
+
+-- | A list of ARNs and, if applicable, job types for multiple sources of an
+-- experiment run.
+describeTrialComponentResponse_sources :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe [TrialComponentSource])
+describeTrialComponentResponse_sources = Lens.lens (\DescribeTrialComponentResponse' {sources} -> sources) (\s@DescribeTrialComponentResponse' {} a -> s {sources = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | When the component started.
+describeTrialComponentResponse_startTime :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.UTCTime)
+describeTrialComponentResponse_startTime = Lens.lens (\DescribeTrialComponentResponse' {startTime} -> startTime) (\s@DescribeTrialComponentResponse' {} a -> s {startTime = a} :: DescribeTrialComponentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the component. States include:
+--
+-- -   InProgress
+--
+-- -   Completed
+--
+-- -   Failed
+describeTrialComponentResponse_status :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe TrialComponentStatus)
+describeTrialComponentResponse_status = Lens.lens (\DescribeTrialComponentResponse' {status} -> status) (\s@DescribeTrialComponentResponse' {} a -> s {status = a} :: DescribeTrialComponentResponse)
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+describeTrialComponentResponse_trialComponentArn :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.Text)
+describeTrialComponentResponse_trialComponentArn = Lens.lens (\DescribeTrialComponentResponse' {trialComponentArn} -> trialComponentArn) (\s@DescribeTrialComponentResponse' {} a -> s {trialComponentArn = a} :: DescribeTrialComponentResponse)
+
+-- | The name of the trial component.
+describeTrialComponentResponse_trialComponentName :: Lens.Lens' DescribeTrialComponentResponse (Prelude.Maybe Prelude.Text)
+describeTrialComponentResponse_trialComponentName = Lens.lens (\DescribeTrialComponentResponse' {trialComponentName} -> trialComponentName) (\s@DescribeTrialComponentResponse' {} a -> s {trialComponentName = a} :: DescribeTrialComponentResponse)
+
+-- | The response's http status code.
+describeTrialComponentResponse_httpStatus :: Lens.Lens' DescribeTrialComponentResponse Prelude.Int
+describeTrialComponentResponse_httpStatus = Lens.lens (\DescribeTrialComponentResponse' {httpStatus} -> httpStatus) (\s@DescribeTrialComponentResponse' {} a -> s {httpStatus = a} :: DescribeTrialComponentResponse)
+
+instance
+  Prelude.NFData
+    DescribeTrialComponentResponse
+  where
+  rnf DescribeTrialComponentResponse' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf inputArtifacts
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf metrics
+      `Prelude.seq` Prelude.rnf outputArtifacts
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf sources
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf trialComponentName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeUserProfile.hs b/gen/Amazonka/SageMaker/DescribeUserProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeUserProfile.hs
@@ -0,0 +1,312 @@
+{-# 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.DescribeUserProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a user profile. For more information, see @CreateUserProfile@.
+module Amazonka.SageMaker.DescribeUserProfile
+  ( -- * Creating a Request
+    DescribeUserProfile (..),
+    newDescribeUserProfile,
+
+    -- * Request Lenses
+    describeUserProfile_domainId,
+    describeUserProfile_userProfileName,
+
+    -- * Destructuring the Response
+    DescribeUserProfileResponse (..),
+    newDescribeUserProfileResponse,
+
+    -- * Response Lenses
+    describeUserProfileResponse_creationTime,
+    describeUserProfileResponse_domainId,
+    describeUserProfileResponse_failureReason,
+    describeUserProfileResponse_homeEfsFileSystemUid,
+    describeUserProfileResponse_lastModifiedTime,
+    describeUserProfileResponse_singleSignOnUserIdentifier,
+    describeUserProfileResponse_singleSignOnUserValue,
+    describeUserProfileResponse_status,
+    describeUserProfileResponse_userProfileArn,
+    describeUserProfileResponse_userProfileName,
+    describeUserProfileResponse_userSettings,
+    describeUserProfileResponse_httpStatus,
+  )
+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:/ 'newDescribeUserProfile' smart constructor.
+data DescribeUserProfile = DescribeUserProfile'
+  { -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The user profile name. This value is not case sensitive.
+    userProfileName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeUserProfile' 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:
+--
+-- 'domainId', 'describeUserProfile_domainId' - The domain ID.
+--
+-- 'userProfileName', 'describeUserProfile_userProfileName' - The user profile name. This value is not case sensitive.
+newDescribeUserProfile ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'userProfileName'
+  Prelude.Text ->
+  DescribeUserProfile
+newDescribeUserProfile pDomainId_ pUserProfileName_ =
+  DescribeUserProfile'
+    { domainId = pDomainId_,
+      userProfileName = pUserProfileName_
+    }
+
+-- | The domain ID.
+describeUserProfile_domainId :: Lens.Lens' DescribeUserProfile Prelude.Text
+describeUserProfile_domainId = Lens.lens (\DescribeUserProfile' {domainId} -> domainId) (\s@DescribeUserProfile' {} a -> s {domainId = a} :: DescribeUserProfile)
+
+-- | The user profile name. This value is not case sensitive.
+describeUserProfile_userProfileName :: Lens.Lens' DescribeUserProfile Prelude.Text
+describeUserProfile_userProfileName = Lens.lens (\DescribeUserProfile' {userProfileName} -> userProfileName) (\s@DescribeUserProfile' {} a -> s {userProfileName = a} :: DescribeUserProfile)
+
+instance Core.AWSRequest DescribeUserProfile where
+  type
+    AWSResponse DescribeUserProfile =
+      DescribeUserProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeUserProfileResponse'
+            Prelude.<$> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "DomainId")
+            Prelude.<*> (x Data..?> "FailureReason")
+            Prelude.<*> (x Data..?> "HomeEfsFileSystemUid")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "SingleSignOnUserIdentifier")
+            Prelude.<*> (x Data..?> "SingleSignOnUserValue")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "UserProfileArn")
+            Prelude.<*> (x Data..?> "UserProfileName")
+            Prelude.<*> (x Data..?> "UserSettings")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeUserProfile where
+  hashWithSalt _salt DescribeUserProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData DescribeUserProfile where
+  rnf DescribeUserProfile' {..} =
+    Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf userProfileName
+
+instance Data.ToHeaders DescribeUserProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeUserProfile" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeUserProfile where
+  toJSON DescribeUserProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just
+              ("UserProfileName" Data..= userProfileName)
+          ]
+      )
+
+instance Data.ToPath DescribeUserProfile where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeUserProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeUserProfileResponse' smart constructor.
+data DescribeUserProfileResponse = DescribeUserProfileResponse'
+  { -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the domain that contains the profile.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The failure reason.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the user\'s profile in the Amazon Elastic File System (EFS)
+    -- volume.
+    homeEfsFileSystemUid :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The IAM Identity Center user identifier.
+    singleSignOnUserIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The IAM Identity Center user value.
+    singleSignOnUserValue :: Prelude.Maybe Prelude.Text,
+    -- | The status.
+    status :: Prelude.Maybe UserProfileStatus,
+    -- | The user profile Amazon Resource Name (ARN).
+    userProfileArn :: Prelude.Maybe Prelude.Text,
+    -- | The user profile name.
+    userProfileName :: Prelude.Maybe Prelude.Text,
+    -- | A collection of settings.
+    userSettings :: Prelude.Maybe UserSettings,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeUserProfileResponse' 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:
+--
+-- 'creationTime', 'describeUserProfileResponse_creationTime' - The creation time.
+--
+-- 'domainId', 'describeUserProfileResponse_domainId' - The ID of the domain that contains the profile.
+--
+-- 'failureReason', 'describeUserProfileResponse_failureReason' - The failure reason.
+--
+-- 'homeEfsFileSystemUid', 'describeUserProfileResponse_homeEfsFileSystemUid' - The ID of the user\'s profile in the Amazon Elastic File System (EFS)
+-- volume.
+--
+-- 'lastModifiedTime', 'describeUserProfileResponse_lastModifiedTime' - The last modified time.
+--
+-- 'singleSignOnUserIdentifier', 'describeUserProfileResponse_singleSignOnUserIdentifier' - The IAM Identity Center user identifier.
+--
+-- 'singleSignOnUserValue', 'describeUserProfileResponse_singleSignOnUserValue' - The IAM Identity Center user value.
+--
+-- 'status', 'describeUserProfileResponse_status' - The status.
+--
+-- 'userProfileArn', 'describeUserProfileResponse_userProfileArn' - The user profile Amazon Resource Name (ARN).
+--
+-- 'userProfileName', 'describeUserProfileResponse_userProfileName' - The user profile name.
+--
+-- 'userSettings', 'describeUserProfileResponse_userSettings' - A collection of settings.
+--
+-- 'httpStatus', 'describeUserProfileResponse_httpStatus' - The response's http status code.
+newDescribeUserProfileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeUserProfileResponse
+newDescribeUserProfileResponse pHttpStatus_ =
+  DescribeUserProfileResponse'
+    { creationTime =
+        Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      homeEfsFileSystemUid = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      singleSignOnUserIdentifier = Prelude.Nothing,
+      singleSignOnUserValue = Prelude.Nothing,
+      status = Prelude.Nothing,
+      userProfileArn = Prelude.Nothing,
+      userProfileName = Prelude.Nothing,
+      userSettings = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The creation time.
+describeUserProfileResponse_creationTime :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.UTCTime)
+describeUserProfileResponse_creationTime = Lens.lens (\DescribeUserProfileResponse' {creationTime} -> creationTime) (\s@DescribeUserProfileResponse' {} a -> s {creationTime = a} :: DescribeUserProfileResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the domain that contains the profile.
+describeUserProfileResponse_domainId :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_domainId = Lens.lens (\DescribeUserProfileResponse' {domainId} -> domainId) (\s@DescribeUserProfileResponse' {} a -> s {domainId = a} :: DescribeUserProfileResponse)
+
+-- | The failure reason.
+describeUserProfileResponse_failureReason :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_failureReason = Lens.lens (\DescribeUserProfileResponse' {failureReason} -> failureReason) (\s@DescribeUserProfileResponse' {} a -> s {failureReason = a} :: DescribeUserProfileResponse)
+
+-- | The ID of the user\'s profile in the Amazon Elastic File System (EFS)
+-- volume.
+describeUserProfileResponse_homeEfsFileSystemUid :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_homeEfsFileSystemUid = Lens.lens (\DescribeUserProfileResponse' {homeEfsFileSystemUid} -> homeEfsFileSystemUid) (\s@DescribeUserProfileResponse' {} a -> s {homeEfsFileSystemUid = a} :: DescribeUserProfileResponse)
+
+-- | The last modified time.
+describeUserProfileResponse_lastModifiedTime :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.UTCTime)
+describeUserProfileResponse_lastModifiedTime = Lens.lens (\DescribeUserProfileResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribeUserProfileResponse' {} a -> s {lastModifiedTime = a} :: DescribeUserProfileResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The IAM Identity Center user identifier.
+describeUserProfileResponse_singleSignOnUserIdentifier :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_singleSignOnUserIdentifier = Lens.lens (\DescribeUserProfileResponse' {singleSignOnUserIdentifier} -> singleSignOnUserIdentifier) (\s@DescribeUserProfileResponse' {} a -> s {singleSignOnUserIdentifier = a} :: DescribeUserProfileResponse)
+
+-- | The IAM Identity Center user value.
+describeUserProfileResponse_singleSignOnUserValue :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_singleSignOnUserValue = Lens.lens (\DescribeUserProfileResponse' {singleSignOnUserValue} -> singleSignOnUserValue) (\s@DescribeUserProfileResponse' {} a -> s {singleSignOnUserValue = a} :: DescribeUserProfileResponse)
+
+-- | The status.
+describeUserProfileResponse_status :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe UserProfileStatus)
+describeUserProfileResponse_status = Lens.lens (\DescribeUserProfileResponse' {status} -> status) (\s@DescribeUserProfileResponse' {} a -> s {status = a} :: DescribeUserProfileResponse)
+
+-- | The user profile Amazon Resource Name (ARN).
+describeUserProfileResponse_userProfileArn :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_userProfileArn = Lens.lens (\DescribeUserProfileResponse' {userProfileArn} -> userProfileArn) (\s@DescribeUserProfileResponse' {} a -> s {userProfileArn = a} :: DescribeUserProfileResponse)
+
+-- | The user profile name.
+describeUserProfileResponse_userProfileName :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe Prelude.Text)
+describeUserProfileResponse_userProfileName = Lens.lens (\DescribeUserProfileResponse' {userProfileName} -> userProfileName) (\s@DescribeUserProfileResponse' {} a -> s {userProfileName = a} :: DescribeUserProfileResponse)
+
+-- | A collection of settings.
+describeUserProfileResponse_userSettings :: Lens.Lens' DescribeUserProfileResponse (Prelude.Maybe UserSettings)
+describeUserProfileResponse_userSettings = Lens.lens (\DescribeUserProfileResponse' {userSettings} -> userSettings) (\s@DescribeUserProfileResponse' {} a -> s {userSettings = a} :: DescribeUserProfileResponse)
+
+-- | The response's http status code.
+describeUserProfileResponse_httpStatus :: Lens.Lens' DescribeUserProfileResponse Prelude.Int
+describeUserProfileResponse_httpStatus = Lens.lens (\DescribeUserProfileResponse' {httpStatus} -> httpStatus) (\s@DescribeUserProfileResponse' {} a -> s {httpStatus = a} :: DescribeUserProfileResponse)
+
+instance Prelude.NFData DescribeUserProfileResponse where
+  rnf DescribeUserProfileResponse' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf homeEfsFileSystemUid
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf singleSignOnUserIdentifier
+      `Prelude.seq` Prelude.rnf singleSignOnUserValue
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf userProfileArn
+      `Prelude.seq` Prelude.rnf userProfileName
+      `Prelude.seq` Prelude.rnf userSettings
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DescribeWorkforce.hs b/gen/Amazonka/SageMaker/DescribeWorkforce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeWorkforce.hs
@@ -0,0 +1,203 @@
+{-# 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.DescribeWorkforce
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists private workforce information, including workforce name, Amazon
+-- Resource Name (ARN), and, if applicable, allowed IP address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>).
+-- Allowable IP address ranges are the IP addresses that workers can use to
+-- access tasks.
+--
+-- This operation applies only to private workforces.
+module Amazonka.SageMaker.DescribeWorkforce
+  ( -- * Creating a Request
+    DescribeWorkforce (..),
+    newDescribeWorkforce,
+
+    -- * Request Lenses
+    describeWorkforce_workforceName,
+
+    -- * Destructuring the Response
+    DescribeWorkforceResponse (..),
+    newDescribeWorkforceResponse,
+
+    -- * Response Lenses
+    describeWorkforceResponse_httpStatus,
+    describeWorkforceResponse_workforce,
+  )
+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:/ 'newDescribeWorkforce' smart constructor.
+data DescribeWorkforce = DescribeWorkforce'
+  { -- | The name of the private workforce whose access you want to restrict.
+    -- @WorkforceName@ is automatically set to @default@ when a workforce is
+    -- created and cannot be modified.
+    workforceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeWorkforce' 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:
+--
+-- 'workforceName', 'describeWorkforce_workforceName' - The name of the private workforce whose access you want to restrict.
+-- @WorkforceName@ is automatically set to @default@ when a workforce is
+-- created and cannot be modified.
+newDescribeWorkforce ::
+  -- | 'workforceName'
+  Prelude.Text ->
+  DescribeWorkforce
+newDescribeWorkforce pWorkforceName_ =
+  DescribeWorkforce' {workforceName = pWorkforceName_}
+
+-- | The name of the private workforce whose access you want to restrict.
+-- @WorkforceName@ is automatically set to @default@ when a workforce is
+-- created and cannot be modified.
+describeWorkforce_workforceName :: Lens.Lens' DescribeWorkforce Prelude.Text
+describeWorkforce_workforceName = Lens.lens (\DescribeWorkforce' {workforceName} -> workforceName) (\s@DescribeWorkforce' {} a -> s {workforceName = a} :: DescribeWorkforce)
+
+instance Core.AWSRequest DescribeWorkforce where
+  type
+    AWSResponse DescribeWorkforce =
+      DescribeWorkforceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeWorkforceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Workforce")
+      )
+
+instance Prelude.Hashable DescribeWorkforce where
+  hashWithSalt _salt DescribeWorkforce' {..} =
+    _salt `Prelude.hashWithSalt` workforceName
+
+instance Prelude.NFData DescribeWorkforce where
+  rnf DescribeWorkforce' {..} =
+    Prelude.rnf workforceName
+
+instance Data.ToHeaders DescribeWorkforce where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DescribeWorkforce" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeWorkforce where
+  toJSON DescribeWorkforce' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("WorkforceName" Data..= workforceName)
+          ]
+      )
+
+instance Data.ToPath DescribeWorkforce where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeWorkforce where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeWorkforceResponse' smart constructor.
+data DescribeWorkforceResponse = DescribeWorkforceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A single private workforce, which is automatically created when you
+    -- create your first private work team. You can create one private work
+    -- force in each Amazon Web Services Region. By default, any
+    -- workforce-related API operation used in a specific region will apply to
+    -- the workforce created in that region. To learn how to create a private
+    -- workforce, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+    workforce :: Workforce
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeWorkforceResponse' 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', 'describeWorkforceResponse_httpStatus' - The response's http status code.
+--
+-- 'workforce', 'describeWorkforceResponse_workforce' - A single private workforce, which is automatically created when you
+-- create your first private work team. You can create one private work
+-- force in each Amazon Web Services Region. By default, any
+-- workforce-related API operation used in a specific region will apply to
+-- the workforce created in that region. To learn how to create a private
+-- workforce, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+newDescribeWorkforceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'workforce'
+  Workforce ->
+  DescribeWorkforceResponse
+newDescribeWorkforceResponse pHttpStatus_ pWorkforce_ =
+  DescribeWorkforceResponse'
+    { httpStatus =
+        pHttpStatus_,
+      workforce = pWorkforce_
+    }
+
+-- | The response's http status code.
+describeWorkforceResponse_httpStatus :: Lens.Lens' DescribeWorkforceResponse Prelude.Int
+describeWorkforceResponse_httpStatus = Lens.lens (\DescribeWorkforceResponse' {httpStatus} -> httpStatus) (\s@DescribeWorkforceResponse' {} a -> s {httpStatus = a} :: DescribeWorkforceResponse)
+
+-- | A single private workforce, which is automatically created when you
+-- create your first private work team. You can create one private work
+-- force in each Amazon Web Services Region. By default, any
+-- workforce-related API operation used in a specific region will apply to
+-- the workforce created in that region. To learn how to create a private
+-- workforce, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+describeWorkforceResponse_workforce :: Lens.Lens' DescribeWorkforceResponse Workforce
+describeWorkforceResponse_workforce = Lens.lens (\DescribeWorkforceResponse' {workforce} -> workforce) (\s@DescribeWorkforceResponse' {} a -> s {workforce = a} :: DescribeWorkforceResponse)
+
+instance Prelude.NFData DescribeWorkforceResponse where
+  rnf DescribeWorkforceResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workforce
diff --git a/gen/Amazonka/SageMaker/DescribeWorkteam.hs b/gen/Amazonka/SageMaker/DescribeWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DescribeWorkteam.hs
@@ -0,0 +1,170 @@
+{-# 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.DescribeWorkteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a specific work team. You can see information
+-- such as the create date, the last updated date, membership information,
+-- and the work team\'s Amazon Resource Name (ARN).
+module Amazonka.SageMaker.DescribeWorkteam
+  ( -- * Creating a Request
+    DescribeWorkteam (..),
+    newDescribeWorkteam,
+
+    -- * Request Lenses
+    describeWorkteam_workteamName,
+
+    -- * Destructuring the Response
+    DescribeWorkteamResponse (..),
+    newDescribeWorkteamResponse,
+
+    -- * Response Lenses
+    describeWorkteamResponse_httpStatus,
+    describeWorkteamResponse_workteam,
+  )
+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:/ 'newDescribeWorkteam' smart constructor.
+data DescribeWorkteam = DescribeWorkteam'
+  { -- | The name of the work team to return a description of.
+    workteamName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeWorkteam' 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:
+--
+-- 'workteamName', 'describeWorkteam_workteamName' - The name of the work team to return a description of.
+newDescribeWorkteam ::
+  -- | 'workteamName'
+  Prelude.Text ->
+  DescribeWorkteam
+newDescribeWorkteam pWorkteamName_ =
+  DescribeWorkteam' {workteamName = pWorkteamName_}
+
+-- | The name of the work team to return a description of.
+describeWorkteam_workteamName :: Lens.Lens' DescribeWorkteam Prelude.Text
+describeWorkteam_workteamName = Lens.lens (\DescribeWorkteam' {workteamName} -> workteamName) (\s@DescribeWorkteam' {} a -> s {workteamName = a} :: DescribeWorkteam)
+
+instance Core.AWSRequest DescribeWorkteam where
+  type
+    AWSResponse DescribeWorkteam =
+      DescribeWorkteamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeWorkteamResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Workteam")
+      )
+
+instance Prelude.Hashable DescribeWorkteam where
+  hashWithSalt _salt DescribeWorkteam' {..} =
+    _salt `Prelude.hashWithSalt` workteamName
+
+instance Prelude.NFData DescribeWorkteam where
+  rnf DescribeWorkteam' {..} = Prelude.rnf workteamName
+
+instance Data.ToHeaders DescribeWorkteam where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.DescribeWorkteam" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeWorkteam where
+  toJSON DescribeWorkteam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("WorkteamName" Data..= workteamName)]
+      )
+
+instance Data.ToPath DescribeWorkteam where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeWorkteam where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeWorkteamResponse' smart constructor.
+data DescribeWorkteamResponse = DescribeWorkteamResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A @Workteam@ instance that contains information about the work team.
+    workteam :: Workteam
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeWorkteamResponse' 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', 'describeWorkteamResponse_httpStatus' - The response's http status code.
+--
+-- 'workteam', 'describeWorkteamResponse_workteam' - A @Workteam@ instance that contains information about the work team.
+newDescribeWorkteamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'workteam'
+  Workteam ->
+  DescribeWorkteamResponse
+newDescribeWorkteamResponse pHttpStatus_ pWorkteam_ =
+  DescribeWorkteamResponse'
+    { httpStatus =
+        pHttpStatus_,
+      workteam = pWorkteam_
+    }
+
+-- | The response's http status code.
+describeWorkteamResponse_httpStatus :: Lens.Lens' DescribeWorkteamResponse Prelude.Int
+describeWorkteamResponse_httpStatus = Lens.lens (\DescribeWorkteamResponse' {httpStatus} -> httpStatus) (\s@DescribeWorkteamResponse' {} a -> s {httpStatus = a} :: DescribeWorkteamResponse)
+
+-- | A @Workteam@ instance that contains information about the work team.
+describeWorkteamResponse_workteam :: Lens.Lens' DescribeWorkteamResponse Workteam
+describeWorkteamResponse_workteam = Lens.lens (\DescribeWorkteamResponse' {workteam} -> workteam) (\s@DescribeWorkteamResponse' {} a -> s {workteam = a} :: DescribeWorkteamResponse)
+
+instance Prelude.NFData DescribeWorkteamResponse where
+  rnf DescribeWorkteamResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workteam
diff --git a/gen/Amazonka/SageMaker/DisableSagemakerServicecatalogPortfolio.hs b/gen/Amazonka/SageMaker/DisableSagemakerServicecatalogPortfolio.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DisableSagemakerServicecatalogPortfolio.hs
@@ -0,0 +1,165 @@
+{-# 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.DisableSagemakerServicecatalogPortfolio
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disables using Service Catalog in SageMaker. Service Catalog is used to
+-- create SageMaker projects.
+module Amazonka.SageMaker.DisableSagemakerServicecatalogPortfolio
+  ( -- * Creating a Request
+    DisableSagemakerServicecatalogPortfolio (..),
+    newDisableSagemakerServicecatalogPortfolio,
+
+    -- * Destructuring the Response
+    DisableSagemakerServicecatalogPortfolioResponse (..),
+    newDisableSagemakerServicecatalogPortfolioResponse,
+
+    -- * Response Lenses
+    disableSagemakerServicecatalogPortfolioResponse_httpStatus,
+  )
+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:/ 'newDisableSagemakerServicecatalogPortfolio' smart constructor.
+data DisableSagemakerServicecatalogPortfolio = DisableSagemakerServicecatalogPortfolio'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisableSagemakerServicecatalogPortfolio' 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.
+newDisableSagemakerServicecatalogPortfolio ::
+  DisableSagemakerServicecatalogPortfolio
+newDisableSagemakerServicecatalogPortfolio =
+  DisableSagemakerServicecatalogPortfolio'
+
+instance
+  Core.AWSRequest
+    DisableSagemakerServicecatalogPortfolio
+  where
+  type
+    AWSResponse
+      DisableSagemakerServicecatalogPortfolio =
+      DisableSagemakerServicecatalogPortfolioResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisableSagemakerServicecatalogPortfolioResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisableSagemakerServicecatalogPortfolio
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    DisableSagemakerServicecatalogPortfolio
+  where
+  rnf _ = ()
+
+instance
+  Data.ToHeaders
+    DisableSagemakerServicecatalogPortfolio
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DisableSagemakerServicecatalogPortfolio" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DisableSagemakerServicecatalogPortfolio
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance
+  Data.ToPath
+    DisableSagemakerServicecatalogPortfolio
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DisableSagemakerServicecatalogPortfolio
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisableSagemakerServicecatalogPortfolioResponse' smart constructor.
+data DisableSagemakerServicecatalogPortfolioResponse = DisableSagemakerServicecatalogPortfolioResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisableSagemakerServicecatalogPortfolioResponse' 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', 'disableSagemakerServicecatalogPortfolioResponse_httpStatus' - The response's http status code.
+newDisableSagemakerServicecatalogPortfolioResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisableSagemakerServicecatalogPortfolioResponse
+newDisableSagemakerServicecatalogPortfolioResponse
+  pHttpStatus_ =
+    DisableSagemakerServicecatalogPortfolioResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+disableSagemakerServicecatalogPortfolioResponse_httpStatus :: Lens.Lens' DisableSagemakerServicecatalogPortfolioResponse Prelude.Int
+disableSagemakerServicecatalogPortfolioResponse_httpStatus = Lens.lens (\DisableSagemakerServicecatalogPortfolioResponse' {httpStatus} -> httpStatus) (\s@DisableSagemakerServicecatalogPortfolioResponse' {} a -> s {httpStatus = a} :: DisableSagemakerServicecatalogPortfolioResponse)
+
+instance
+  Prelude.NFData
+    DisableSagemakerServicecatalogPortfolioResponse
+  where
+  rnf
+    DisableSagemakerServicecatalogPortfolioResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/DisassociateTrialComponent.hs b/gen/Amazonka/SageMaker/DisassociateTrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/DisassociateTrialComponent.hs
@@ -0,0 +1,216 @@
+{-# 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.DisassociateTrialComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates a trial component from a trial. This doesn\'t effect other
+-- trials the component is associated with. Before you can delete a
+-- component, you must disassociate the component from all trials it is
+-- associated with. To associate a trial component with a trial, call the
+-- AssociateTrialComponent API.
+--
+-- To get a list of the trials a component is associated with, use the
+-- Search API. Specify @ExperimentTrialComponent@ for the @Resource@
+-- parameter. The list appears in the response under
+-- @Results.TrialComponent.Parents@.
+module Amazonka.SageMaker.DisassociateTrialComponent
+  ( -- * Creating a Request
+    DisassociateTrialComponent (..),
+    newDisassociateTrialComponent,
+
+    -- * Request Lenses
+    disassociateTrialComponent_trialComponentName,
+    disassociateTrialComponent_trialName,
+
+    -- * Destructuring the Response
+    DisassociateTrialComponentResponse (..),
+    newDisassociateTrialComponentResponse,
+
+    -- * Response Lenses
+    disassociateTrialComponentResponse_trialArn,
+    disassociateTrialComponentResponse_trialComponentArn,
+    disassociateTrialComponentResponse_httpStatus,
+  )
+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:/ 'newDisassociateTrialComponent' smart constructor.
+data DisassociateTrialComponent = DisassociateTrialComponent'
+  { -- | The name of the component to disassociate from the trial.
+    trialComponentName :: Prelude.Text,
+    -- | The name of the trial to disassociate from.
+    trialName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateTrialComponent' 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:
+--
+-- 'trialComponentName', 'disassociateTrialComponent_trialComponentName' - The name of the component to disassociate from the trial.
+--
+-- 'trialName', 'disassociateTrialComponent_trialName' - The name of the trial to disassociate from.
+newDisassociateTrialComponent ::
+  -- | 'trialComponentName'
+  Prelude.Text ->
+  -- | 'trialName'
+  Prelude.Text ->
+  DisassociateTrialComponent
+newDisassociateTrialComponent
+  pTrialComponentName_
+  pTrialName_ =
+    DisassociateTrialComponent'
+      { trialComponentName =
+          pTrialComponentName_,
+        trialName = pTrialName_
+      }
+
+-- | The name of the component to disassociate from the trial.
+disassociateTrialComponent_trialComponentName :: Lens.Lens' DisassociateTrialComponent Prelude.Text
+disassociateTrialComponent_trialComponentName = Lens.lens (\DisassociateTrialComponent' {trialComponentName} -> trialComponentName) (\s@DisassociateTrialComponent' {} a -> s {trialComponentName = a} :: DisassociateTrialComponent)
+
+-- | The name of the trial to disassociate from.
+disassociateTrialComponent_trialName :: Lens.Lens' DisassociateTrialComponent Prelude.Text
+disassociateTrialComponent_trialName = Lens.lens (\DisassociateTrialComponent' {trialName} -> trialName) (\s@DisassociateTrialComponent' {} a -> s {trialName = a} :: DisassociateTrialComponent)
+
+instance Core.AWSRequest DisassociateTrialComponent where
+  type
+    AWSResponse DisassociateTrialComponent =
+      DisassociateTrialComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateTrialComponentResponse'
+            Prelude.<$> (x Data..?> "TrialArn")
+            Prelude.<*> (x Data..?> "TrialComponentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateTrialComponent where
+  hashWithSalt _salt DisassociateTrialComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` trialComponentName
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData DisassociateTrialComponent where
+  rnf DisassociateTrialComponent' {..} =
+    Prelude.rnf trialComponentName
+      `Prelude.seq` Prelude.rnf trialName
+
+instance Data.ToHeaders DisassociateTrialComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.DisassociateTrialComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateTrialComponent where
+  toJSON DisassociateTrialComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TrialComponentName" Data..= trialComponentName),
+            Prelude.Just ("TrialName" Data..= trialName)
+          ]
+      )
+
+instance Data.ToPath DisassociateTrialComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DisassociateTrialComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateTrialComponentResponse' smart constructor.
+data DisassociateTrialComponentResponse = DisassociateTrialComponentResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateTrialComponentResponse' 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:
+--
+-- 'trialArn', 'disassociateTrialComponentResponse_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'trialComponentArn', 'disassociateTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'httpStatus', 'disassociateTrialComponentResponse_httpStatus' - The response's http status code.
+newDisassociateTrialComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateTrialComponentResponse
+newDisassociateTrialComponentResponse pHttpStatus_ =
+  DisassociateTrialComponentResponse'
+    { trialArn =
+        Prelude.Nothing,
+      trialComponentArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial.
+disassociateTrialComponentResponse_trialArn :: Lens.Lens' DisassociateTrialComponentResponse (Prelude.Maybe Prelude.Text)
+disassociateTrialComponentResponse_trialArn = Lens.lens (\DisassociateTrialComponentResponse' {trialArn} -> trialArn) (\s@DisassociateTrialComponentResponse' {} a -> s {trialArn = a} :: DisassociateTrialComponentResponse)
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+disassociateTrialComponentResponse_trialComponentArn :: Lens.Lens' DisassociateTrialComponentResponse (Prelude.Maybe Prelude.Text)
+disassociateTrialComponentResponse_trialComponentArn = Lens.lens (\DisassociateTrialComponentResponse' {trialComponentArn} -> trialComponentArn) (\s@DisassociateTrialComponentResponse' {} a -> s {trialComponentArn = a} :: DisassociateTrialComponentResponse)
+
+-- | The response's http status code.
+disassociateTrialComponentResponse_httpStatus :: Lens.Lens' DisassociateTrialComponentResponse Prelude.Int
+disassociateTrialComponentResponse_httpStatus = Lens.lens (\DisassociateTrialComponentResponse' {httpStatus} -> httpStatus) (\s@DisassociateTrialComponentResponse' {} a -> s {httpStatus = a} :: DisassociateTrialComponentResponse)
+
+instance
+  Prelude.NFData
+    DisassociateTrialComponentResponse
+  where
+  rnf DisassociateTrialComponentResponse' {..} =
+    Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/EnableSagemakerServicecatalogPortfolio.hs b/gen/Amazonka/SageMaker/EnableSagemakerServicecatalogPortfolio.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/EnableSagemakerServicecatalogPortfolio.hs
@@ -0,0 +1,165 @@
+{-# 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.EnableSagemakerServicecatalogPortfolio
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables using Service Catalog in SageMaker. Service Catalog is used to
+-- create SageMaker projects.
+module Amazonka.SageMaker.EnableSagemakerServicecatalogPortfolio
+  ( -- * Creating a Request
+    EnableSagemakerServicecatalogPortfolio (..),
+    newEnableSagemakerServicecatalogPortfolio,
+
+    -- * Destructuring the Response
+    EnableSagemakerServicecatalogPortfolioResponse (..),
+    newEnableSagemakerServicecatalogPortfolioResponse,
+
+    -- * Response Lenses
+    enableSagemakerServicecatalogPortfolioResponse_httpStatus,
+  )
+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:/ 'newEnableSagemakerServicecatalogPortfolio' smart constructor.
+data EnableSagemakerServicecatalogPortfolio = EnableSagemakerServicecatalogPortfolio'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EnableSagemakerServicecatalogPortfolio' 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.
+newEnableSagemakerServicecatalogPortfolio ::
+  EnableSagemakerServicecatalogPortfolio
+newEnableSagemakerServicecatalogPortfolio =
+  EnableSagemakerServicecatalogPortfolio'
+
+instance
+  Core.AWSRequest
+    EnableSagemakerServicecatalogPortfolio
+  where
+  type
+    AWSResponse
+      EnableSagemakerServicecatalogPortfolio =
+      EnableSagemakerServicecatalogPortfolioResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          EnableSagemakerServicecatalogPortfolioResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    EnableSagemakerServicecatalogPortfolio
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    EnableSagemakerServicecatalogPortfolio
+  where
+  rnf _ = ()
+
+instance
+  Data.ToHeaders
+    EnableSagemakerServicecatalogPortfolio
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.EnableSagemakerServicecatalogPortfolio" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    EnableSagemakerServicecatalogPortfolio
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance
+  Data.ToPath
+    EnableSagemakerServicecatalogPortfolio
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    EnableSagemakerServicecatalogPortfolio
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newEnableSagemakerServicecatalogPortfolioResponse' smart constructor.
+data EnableSagemakerServicecatalogPortfolioResponse = EnableSagemakerServicecatalogPortfolioResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EnableSagemakerServicecatalogPortfolioResponse' 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', 'enableSagemakerServicecatalogPortfolioResponse_httpStatus' - The response's http status code.
+newEnableSagemakerServicecatalogPortfolioResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  EnableSagemakerServicecatalogPortfolioResponse
+newEnableSagemakerServicecatalogPortfolioResponse
+  pHttpStatus_ =
+    EnableSagemakerServicecatalogPortfolioResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+enableSagemakerServicecatalogPortfolioResponse_httpStatus :: Lens.Lens' EnableSagemakerServicecatalogPortfolioResponse Prelude.Int
+enableSagemakerServicecatalogPortfolioResponse_httpStatus = Lens.lens (\EnableSagemakerServicecatalogPortfolioResponse' {httpStatus} -> httpStatus) (\s@EnableSagemakerServicecatalogPortfolioResponse' {} a -> s {httpStatus = a} :: EnableSagemakerServicecatalogPortfolioResponse)
+
+instance
+  Prelude.NFData
+    EnableSagemakerServicecatalogPortfolioResponse
+  where
+  rnf
+    EnableSagemakerServicecatalogPortfolioResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/GetDeviceFleetReport.hs b/gen/Amazonka/SageMaker/GetDeviceFleetReport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/GetDeviceFleetReport.hs
@@ -0,0 +1,265 @@
+{-# 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.GetDeviceFleetReport
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a fleet.
+module Amazonka.SageMaker.GetDeviceFleetReport
+  ( -- * Creating a Request
+    GetDeviceFleetReport (..),
+    newGetDeviceFleetReport,
+
+    -- * Request Lenses
+    getDeviceFleetReport_deviceFleetName,
+
+    -- * Destructuring the Response
+    GetDeviceFleetReportResponse (..),
+    newGetDeviceFleetReportResponse,
+
+    -- * Response Lenses
+    getDeviceFleetReportResponse_agentVersions,
+    getDeviceFleetReportResponse_description,
+    getDeviceFleetReportResponse_deviceStats,
+    getDeviceFleetReportResponse_modelStats,
+    getDeviceFleetReportResponse_outputConfig,
+    getDeviceFleetReportResponse_reportGenerated,
+    getDeviceFleetReportResponse_httpStatus,
+    getDeviceFleetReportResponse_deviceFleetArn,
+    getDeviceFleetReportResponse_deviceFleetName,
+  )
+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:/ 'newGetDeviceFleetReport' smart constructor.
+data GetDeviceFleetReport = GetDeviceFleetReport'
+  { -- | The name of the fleet.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDeviceFleetReport' 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:
+--
+-- 'deviceFleetName', 'getDeviceFleetReport_deviceFleetName' - The name of the fleet.
+newGetDeviceFleetReport ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  GetDeviceFleetReport
+newGetDeviceFleetReport pDeviceFleetName_ =
+  GetDeviceFleetReport'
+    { deviceFleetName =
+        pDeviceFleetName_
+    }
+
+-- | The name of the fleet.
+getDeviceFleetReport_deviceFleetName :: Lens.Lens' GetDeviceFleetReport Prelude.Text
+getDeviceFleetReport_deviceFleetName = Lens.lens (\GetDeviceFleetReport' {deviceFleetName} -> deviceFleetName) (\s@GetDeviceFleetReport' {} a -> s {deviceFleetName = a} :: GetDeviceFleetReport)
+
+instance Core.AWSRequest GetDeviceFleetReport where
+  type
+    AWSResponse GetDeviceFleetReport =
+      GetDeviceFleetReportResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDeviceFleetReportResponse'
+            Prelude.<$> (x Data..?> "AgentVersions" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DeviceStats")
+            Prelude.<*> (x Data..?> "ModelStats" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "OutputConfig")
+            Prelude.<*> (x Data..?> "ReportGenerated")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "DeviceFleetArn")
+            Prelude.<*> (x Data..:> "DeviceFleetName")
+      )
+
+instance Prelude.Hashable GetDeviceFleetReport where
+  hashWithSalt _salt GetDeviceFleetReport' {..} =
+    _salt `Prelude.hashWithSalt` deviceFleetName
+
+instance Prelude.NFData GetDeviceFleetReport where
+  rnf GetDeviceFleetReport' {..} =
+    Prelude.rnf deviceFleetName
+
+instance Data.ToHeaders GetDeviceFleetReport where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.GetDeviceFleetReport" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetDeviceFleetReport where
+  toJSON GetDeviceFleetReport' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName)
+          ]
+      )
+
+instance Data.ToPath GetDeviceFleetReport where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetDeviceFleetReport where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetDeviceFleetReportResponse' smart constructor.
+data GetDeviceFleetReportResponse = GetDeviceFleetReportResponse'
+  { -- | The versions of Edge Manager agent deployed on the fleet.
+    agentVersions :: Prelude.Maybe [AgentVersion],
+    -- | Description of the fleet.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Status of devices.
+    deviceStats :: Prelude.Maybe DeviceStats,
+    -- | Status of model on device.
+    modelStats :: Prelude.Maybe [EdgeModelStat],
+    -- | The output configuration for storing sample data collected by the fleet.
+    outputConfig :: Prelude.Maybe EdgeOutputConfig,
+    -- | Timestamp of when the report was generated.
+    reportGenerated :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the device.
+    deviceFleetArn :: Prelude.Text,
+    -- | The name of the fleet.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDeviceFleetReportResponse' 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:
+--
+-- 'agentVersions', 'getDeviceFleetReportResponse_agentVersions' - The versions of Edge Manager agent deployed on the fleet.
+--
+-- 'description', 'getDeviceFleetReportResponse_description' - Description of the fleet.
+--
+-- 'deviceStats', 'getDeviceFleetReportResponse_deviceStats' - Status of devices.
+--
+-- 'modelStats', 'getDeviceFleetReportResponse_modelStats' - Status of model on device.
+--
+-- 'outputConfig', 'getDeviceFleetReportResponse_outputConfig' - The output configuration for storing sample data collected by the fleet.
+--
+-- 'reportGenerated', 'getDeviceFleetReportResponse_reportGenerated' - Timestamp of when the report was generated.
+--
+-- 'httpStatus', 'getDeviceFleetReportResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceFleetArn', 'getDeviceFleetReportResponse_deviceFleetArn' - The Amazon Resource Name (ARN) of the device.
+--
+-- 'deviceFleetName', 'getDeviceFleetReportResponse_deviceFleetName' - The name of the fleet.
+newGetDeviceFleetReportResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'deviceFleetArn'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  GetDeviceFleetReportResponse
+newGetDeviceFleetReportResponse
+  pHttpStatus_
+  pDeviceFleetArn_
+  pDeviceFleetName_ =
+    GetDeviceFleetReportResponse'
+      { agentVersions =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        deviceStats = Prelude.Nothing,
+        modelStats = Prelude.Nothing,
+        outputConfig = Prelude.Nothing,
+        reportGenerated = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        deviceFleetArn = pDeviceFleetArn_,
+        deviceFleetName = pDeviceFleetName_
+      }
+
+-- | The versions of Edge Manager agent deployed on the fleet.
+getDeviceFleetReportResponse_agentVersions :: Lens.Lens' GetDeviceFleetReportResponse (Prelude.Maybe [AgentVersion])
+getDeviceFleetReportResponse_agentVersions = Lens.lens (\GetDeviceFleetReportResponse' {agentVersions} -> agentVersions) (\s@GetDeviceFleetReportResponse' {} a -> s {agentVersions = a} :: GetDeviceFleetReportResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Description of the fleet.
+getDeviceFleetReportResponse_description :: Lens.Lens' GetDeviceFleetReportResponse (Prelude.Maybe Prelude.Text)
+getDeviceFleetReportResponse_description = Lens.lens (\GetDeviceFleetReportResponse' {description} -> description) (\s@GetDeviceFleetReportResponse' {} a -> s {description = a} :: GetDeviceFleetReportResponse)
+
+-- | Status of devices.
+getDeviceFleetReportResponse_deviceStats :: Lens.Lens' GetDeviceFleetReportResponse (Prelude.Maybe DeviceStats)
+getDeviceFleetReportResponse_deviceStats = Lens.lens (\GetDeviceFleetReportResponse' {deviceStats} -> deviceStats) (\s@GetDeviceFleetReportResponse' {} a -> s {deviceStats = a} :: GetDeviceFleetReportResponse)
+
+-- | Status of model on device.
+getDeviceFleetReportResponse_modelStats :: Lens.Lens' GetDeviceFleetReportResponse (Prelude.Maybe [EdgeModelStat])
+getDeviceFleetReportResponse_modelStats = Lens.lens (\GetDeviceFleetReportResponse' {modelStats} -> modelStats) (\s@GetDeviceFleetReportResponse' {} a -> s {modelStats = a} :: GetDeviceFleetReportResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The output configuration for storing sample data collected by the fleet.
+getDeviceFleetReportResponse_outputConfig :: Lens.Lens' GetDeviceFleetReportResponse (Prelude.Maybe EdgeOutputConfig)
+getDeviceFleetReportResponse_outputConfig = Lens.lens (\GetDeviceFleetReportResponse' {outputConfig} -> outputConfig) (\s@GetDeviceFleetReportResponse' {} a -> s {outputConfig = a} :: GetDeviceFleetReportResponse)
+
+-- | Timestamp of when the report was generated.
+getDeviceFleetReportResponse_reportGenerated :: Lens.Lens' GetDeviceFleetReportResponse (Prelude.Maybe Prelude.UTCTime)
+getDeviceFleetReportResponse_reportGenerated = Lens.lens (\GetDeviceFleetReportResponse' {reportGenerated} -> reportGenerated) (\s@GetDeviceFleetReportResponse' {} a -> s {reportGenerated = a} :: GetDeviceFleetReportResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+getDeviceFleetReportResponse_httpStatus :: Lens.Lens' GetDeviceFleetReportResponse Prelude.Int
+getDeviceFleetReportResponse_httpStatus = Lens.lens (\GetDeviceFleetReportResponse' {httpStatus} -> httpStatus) (\s@GetDeviceFleetReportResponse' {} a -> s {httpStatus = a} :: GetDeviceFleetReportResponse)
+
+-- | The Amazon Resource Name (ARN) of the device.
+getDeviceFleetReportResponse_deviceFleetArn :: Lens.Lens' GetDeviceFleetReportResponse Prelude.Text
+getDeviceFleetReportResponse_deviceFleetArn = Lens.lens (\GetDeviceFleetReportResponse' {deviceFleetArn} -> deviceFleetArn) (\s@GetDeviceFleetReportResponse' {} a -> s {deviceFleetArn = a} :: GetDeviceFleetReportResponse)
+
+-- | The name of the fleet.
+getDeviceFleetReportResponse_deviceFleetName :: Lens.Lens' GetDeviceFleetReportResponse Prelude.Text
+getDeviceFleetReportResponse_deviceFleetName = Lens.lens (\GetDeviceFleetReportResponse' {deviceFleetName} -> deviceFleetName) (\s@GetDeviceFleetReportResponse' {} a -> s {deviceFleetName = a} :: GetDeviceFleetReportResponse)
+
+instance Prelude.NFData GetDeviceFleetReportResponse where
+  rnf GetDeviceFleetReportResponse' {..} =
+    Prelude.rnf agentVersions
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf deviceStats
+      `Prelude.seq` Prelude.rnf modelStats
+      `Prelude.seq` Prelude.rnf outputConfig
+      `Prelude.seq` Prelude.rnf reportGenerated
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceFleetArn
+      `Prelude.seq` Prelude.rnf deviceFleetName
diff --git a/gen/Amazonka/SageMaker/GetLineageGroupPolicy.hs b/gen/Amazonka/SageMaker/GetLineageGroupPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/GetLineageGroupPolicy.hs
@@ -0,0 +1,189 @@
+{-# 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.GetLineageGroupPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The resource policy for the lineage group.
+module Amazonka.SageMaker.GetLineageGroupPolicy
+  ( -- * Creating a Request
+    GetLineageGroupPolicy (..),
+    newGetLineageGroupPolicy,
+
+    -- * Request Lenses
+    getLineageGroupPolicy_lineageGroupName,
+
+    -- * Destructuring the Response
+    GetLineageGroupPolicyResponse (..),
+    newGetLineageGroupPolicyResponse,
+
+    -- * Response Lenses
+    getLineageGroupPolicyResponse_lineageGroupArn,
+    getLineageGroupPolicyResponse_resourcePolicy,
+    getLineageGroupPolicyResponse_httpStatus,
+  )
+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:/ 'newGetLineageGroupPolicy' smart constructor.
+data GetLineageGroupPolicy = GetLineageGroupPolicy'
+  { -- | The name or Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLineageGroupPolicy' 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:
+--
+-- 'lineageGroupName', 'getLineageGroupPolicy_lineageGroupName' - The name or Amazon Resource Name (ARN) of the lineage group.
+newGetLineageGroupPolicy ::
+  -- | 'lineageGroupName'
+  Prelude.Text ->
+  GetLineageGroupPolicy
+newGetLineageGroupPolicy pLineageGroupName_ =
+  GetLineageGroupPolicy'
+    { lineageGroupName =
+        pLineageGroupName_
+    }
+
+-- | The name or Amazon Resource Name (ARN) of the lineage group.
+getLineageGroupPolicy_lineageGroupName :: Lens.Lens' GetLineageGroupPolicy Prelude.Text
+getLineageGroupPolicy_lineageGroupName = Lens.lens (\GetLineageGroupPolicy' {lineageGroupName} -> lineageGroupName) (\s@GetLineageGroupPolicy' {} a -> s {lineageGroupName = a} :: GetLineageGroupPolicy)
+
+instance Core.AWSRequest GetLineageGroupPolicy where
+  type
+    AWSResponse GetLineageGroupPolicy =
+      GetLineageGroupPolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLineageGroupPolicyResponse'
+            Prelude.<$> (x Data..?> "LineageGroupArn")
+            Prelude.<*> (x Data..?> "ResourcePolicy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLineageGroupPolicy where
+  hashWithSalt _salt GetLineageGroupPolicy' {..} =
+    _salt `Prelude.hashWithSalt` lineageGroupName
+
+instance Prelude.NFData GetLineageGroupPolicy where
+  rnf GetLineageGroupPolicy' {..} =
+    Prelude.rnf lineageGroupName
+
+instance Data.ToHeaders GetLineageGroupPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.GetLineageGroupPolicy" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetLineageGroupPolicy where
+  toJSON GetLineageGroupPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LineageGroupName" Data..= lineageGroupName)
+          ]
+      )
+
+instance Data.ToPath GetLineageGroupPolicy where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetLineageGroupPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetLineageGroupPolicyResponse' smart constructor.
+data GetLineageGroupPolicyResponse = GetLineageGroupPolicyResponse'
+  { -- | The Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The resource policy that gives access to the lineage group in another
+    -- account.
+    resourcePolicy :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLineageGroupPolicyResponse' 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:
+--
+-- 'lineageGroupArn', 'getLineageGroupPolicyResponse_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group.
+--
+-- 'resourcePolicy', 'getLineageGroupPolicyResponse_resourcePolicy' - The resource policy that gives access to the lineage group in another
+-- account.
+--
+-- 'httpStatus', 'getLineageGroupPolicyResponse_httpStatus' - The response's http status code.
+newGetLineageGroupPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLineageGroupPolicyResponse
+newGetLineageGroupPolicyResponse pHttpStatus_ =
+  GetLineageGroupPolicyResponse'
+    { lineageGroupArn =
+        Prelude.Nothing,
+      resourcePolicy = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the lineage group.
+getLineageGroupPolicyResponse_lineageGroupArn :: Lens.Lens' GetLineageGroupPolicyResponse (Prelude.Maybe Prelude.Text)
+getLineageGroupPolicyResponse_lineageGroupArn = Lens.lens (\GetLineageGroupPolicyResponse' {lineageGroupArn} -> lineageGroupArn) (\s@GetLineageGroupPolicyResponse' {} a -> s {lineageGroupArn = a} :: GetLineageGroupPolicyResponse)
+
+-- | The resource policy that gives access to the lineage group in another
+-- account.
+getLineageGroupPolicyResponse_resourcePolicy :: Lens.Lens' GetLineageGroupPolicyResponse (Prelude.Maybe Prelude.Text)
+getLineageGroupPolicyResponse_resourcePolicy = Lens.lens (\GetLineageGroupPolicyResponse' {resourcePolicy} -> resourcePolicy) (\s@GetLineageGroupPolicyResponse' {} a -> s {resourcePolicy = a} :: GetLineageGroupPolicyResponse)
+
+-- | The response's http status code.
+getLineageGroupPolicyResponse_httpStatus :: Lens.Lens' GetLineageGroupPolicyResponse Prelude.Int
+getLineageGroupPolicyResponse_httpStatus = Lens.lens (\GetLineageGroupPolicyResponse' {httpStatus} -> httpStatus) (\s@GetLineageGroupPolicyResponse' {} a -> s {httpStatus = a} :: GetLineageGroupPolicyResponse)
+
+instance Prelude.NFData GetLineageGroupPolicyResponse where
+  rnf GetLineageGroupPolicyResponse' {..} =
+    Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf resourcePolicy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/GetModelPackageGroupPolicy.hs b/gen/Amazonka/SageMaker/GetModelPackageGroupPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/GetModelPackageGroupPolicy.hs
@@ -0,0 +1,186 @@
+{-# 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.GetModelPackageGroupPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a resource policy that manages access for a model group. For
+-- information about resource policies, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html Identity-based policies and resource-based policies>
+-- in the /Amazon Web Services Identity and Access Management User Guide./.
+module Amazonka.SageMaker.GetModelPackageGroupPolicy
+  ( -- * Creating a Request
+    GetModelPackageGroupPolicy (..),
+    newGetModelPackageGroupPolicy,
+
+    -- * Request Lenses
+    getModelPackageGroupPolicy_modelPackageGroupName,
+
+    -- * Destructuring the Response
+    GetModelPackageGroupPolicyResponse (..),
+    newGetModelPackageGroupPolicyResponse,
+
+    -- * Response Lenses
+    getModelPackageGroupPolicyResponse_httpStatus,
+    getModelPackageGroupPolicyResponse_resourcePolicy,
+  )
+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:/ 'newGetModelPackageGroupPolicy' smart constructor.
+data GetModelPackageGroupPolicy = GetModelPackageGroupPolicy'
+  { -- | The name of the model group for which to get the resource policy.
+    modelPackageGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetModelPackageGroupPolicy' 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:
+--
+-- 'modelPackageGroupName', 'getModelPackageGroupPolicy_modelPackageGroupName' - The name of the model group for which to get the resource policy.
+newGetModelPackageGroupPolicy ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  GetModelPackageGroupPolicy
+newGetModelPackageGroupPolicy pModelPackageGroupName_ =
+  GetModelPackageGroupPolicy'
+    { modelPackageGroupName =
+        pModelPackageGroupName_
+    }
+
+-- | The name of the model group for which to get the resource policy.
+getModelPackageGroupPolicy_modelPackageGroupName :: Lens.Lens' GetModelPackageGroupPolicy Prelude.Text
+getModelPackageGroupPolicy_modelPackageGroupName = Lens.lens (\GetModelPackageGroupPolicy' {modelPackageGroupName} -> modelPackageGroupName) (\s@GetModelPackageGroupPolicy' {} a -> s {modelPackageGroupName = a} :: GetModelPackageGroupPolicy)
+
+instance Core.AWSRequest GetModelPackageGroupPolicy where
+  type
+    AWSResponse GetModelPackageGroupPolicy =
+      GetModelPackageGroupPolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetModelPackageGroupPolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ResourcePolicy")
+      )
+
+instance Prelude.Hashable GetModelPackageGroupPolicy where
+  hashWithSalt _salt GetModelPackageGroupPolicy' {..} =
+    _salt `Prelude.hashWithSalt` modelPackageGroupName
+
+instance Prelude.NFData GetModelPackageGroupPolicy where
+  rnf GetModelPackageGroupPolicy' {..} =
+    Prelude.rnf modelPackageGroupName
+
+instance Data.ToHeaders GetModelPackageGroupPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.GetModelPackageGroupPolicy" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetModelPackageGroupPolicy where
+  toJSON GetModelPackageGroupPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ModelPackageGroupName"
+                  Data..= modelPackageGroupName
+              )
+          ]
+      )
+
+instance Data.ToPath GetModelPackageGroupPolicy where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetModelPackageGroupPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetModelPackageGroupPolicyResponse' smart constructor.
+data GetModelPackageGroupPolicyResponse = GetModelPackageGroupPolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The resource policy for the model group.
+    resourcePolicy :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetModelPackageGroupPolicyResponse' 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', 'getModelPackageGroupPolicyResponse_httpStatus' - The response's http status code.
+--
+-- 'resourcePolicy', 'getModelPackageGroupPolicyResponse_resourcePolicy' - The resource policy for the model group.
+newGetModelPackageGroupPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'resourcePolicy'
+  Prelude.Text ->
+  GetModelPackageGroupPolicyResponse
+newGetModelPackageGroupPolicyResponse
+  pHttpStatus_
+  pResourcePolicy_ =
+    GetModelPackageGroupPolicyResponse'
+      { httpStatus =
+          pHttpStatus_,
+        resourcePolicy = pResourcePolicy_
+      }
+
+-- | The response's http status code.
+getModelPackageGroupPolicyResponse_httpStatus :: Lens.Lens' GetModelPackageGroupPolicyResponse Prelude.Int
+getModelPackageGroupPolicyResponse_httpStatus = Lens.lens (\GetModelPackageGroupPolicyResponse' {httpStatus} -> httpStatus) (\s@GetModelPackageGroupPolicyResponse' {} a -> s {httpStatus = a} :: GetModelPackageGroupPolicyResponse)
+
+-- | The resource policy for the model group.
+getModelPackageGroupPolicyResponse_resourcePolicy :: Lens.Lens' GetModelPackageGroupPolicyResponse Prelude.Text
+getModelPackageGroupPolicyResponse_resourcePolicy = Lens.lens (\GetModelPackageGroupPolicyResponse' {resourcePolicy} -> resourcePolicy) (\s@GetModelPackageGroupPolicyResponse' {} a -> s {resourcePolicy = a} :: GetModelPackageGroupPolicyResponse)
+
+instance
+  Prelude.NFData
+    GetModelPackageGroupPolicyResponse
+  where
+  rnf GetModelPackageGroupPolicyResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf resourcePolicy
diff --git a/gen/Amazonka/SageMaker/GetSagemakerServicecatalogPortfolioStatus.hs b/gen/Amazonka/SageMaker/GetSagemakerServicecatalogPortfolioStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/GetSagemakerServicecatalogPortfolioStatus.hs
@@ -0,0 +1,178 @@
+{-# 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.GetSagemakerServicecatalogPortfolioStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the status of Service Catalog in SageMaker. Service Catalog is used
+-- to create SageMaker projects.
+module Amazonka.SageMaker.GetSagemakerServicecatalogPortfolioStatus
+  ( -- * Creating a Request
+    GetSagemakerServicecatalogPortfolioStatus (..),
+    newGetSagemakerServicecatalogPortfolioStatus,
+
+    -- * Destructuring the Response
+    GetSagemakerServicecatalogPortfolioStatusResponse (..),
+    newGetSagemakerServicecatalogPortfolioStatusResponse,
+
+    -- * Response Lenses
+    getSagemakerServicecatalogPortfolioStatusResponse_status,
+    getSagemakerServicecatalogPortfolioStatusResponse_httpStatus,
+  )
+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:/ 'newGetSagemakerServicecatalogPortfolioStatus' smart constructor.
+data GetSagemakerServicecatalogPortfolioStatus = GetSagemakerServicecatalogPortfolioStatus'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSagemakerServicecatalogPortfolioStatus' 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.
+newGetSagemakerServicecatalogPortfolioStatus ::
+  GetSagemakerServicecatalogPortfolioStatus
+newGetSagemakerServicecatalogPortfolioStatus =
+  GetSagemakerServicecatalogPortfolioStatus'
+
+instance
+  Core.AWSRequest
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  type
+    AWSResponse
+      GetSagemakerServicecatalogPortfolioStatus =
+      GetSagemakerServicecatalogPortfolioStatusResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSagemakerServicecatalogPortfolioStatusResponse'
+            Prelude.<$> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  rnf _ = ()
+
+instance
+  Data.ToHeaders
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.GetSagemakerServicecatalogPortfolioStatus" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance
+  Data.ToPath
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetSagemakerServicecatalogPortfolioStatus
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSagemakerServicecatalogPortfolioStatusResponse' smart constructor.
+data GetSagemakerServicecatalogPortfolioStatusResponse = GetSagemakerServicecatalogPortfolioStatusResponse'
+  { -- | Whether Service Catalog is enabled or disabled in SageMaker.
+    status :: Prelude.Maybe SagemakerServicecatalogStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSagemakerServicecatalogPortfolioStatusResponse' 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:
+--
+-- 'status', 'getSagemakerServicecatalogPortfolioStatusResponse_status' - Whether Service Catalog is enabled or disabled in SageMaker.
+--
+-- 'httpStatus', 'getSagemakerServicecatalogPortfolioStatusResponse_httpStatus' - The response's http status code.
+newGetSagemakerServicecatalogPortfolioStatusResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSagemakerServicecatalogPortfolioStatusResponse
+newGetSagemakerServicecatalogPortfolioStatusResponse
+  pHttpStatus_ =
+    GetSagemakerServicecatalogPortfolioStatusResponse'
+      { status =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Whether Service Catalog is enabled or disabled in SageMaker.
+getSagemakerServicecatalogPortfolioStatusResponse_status :: Lens.Lens' GetSagemakerServicecatalogPortfolioStatusResponse (Prelude.Maybe SagemakerServicecatalogStatus)
+getSagemakerServicecatalogPortfolioStatusResponse_status = Lens.lens (\GetSagemakerServicecatalogPortfolioStatusResponse' {status} -> status) (\s@GetSagemakerServicecatalogPortfolioStatusResponse' {} a -> s {status = a} :: GetSagemakerServicecatalogPortfolioStatusResponse)
+
+-- | The response's http status code.
+getSagemakerServicecatalogPortfolioStatusResponse_httpStatus :: Lens.Lens' GetSagemakerServicecatalogPortfolioStatusResponse Prelude.Int
+getSagemakerServicecatalogPortfolioStatusResponse_httpStatus = Lens.lens (\GetSagemakerServicecatalogPortfolioStatusResponse' {httpStatus} -> httpStatus) (\s@GetSagemakerServicecatalogPortfolioStatusResponse' {} a -> s {httpStatus = a} :: GetSagemakerServicecatalogPortfolioStatusResponse)
+
+instance
+  Prelude.NFData
+    GetSagemakerServicecatalogPortfolioStatusResponse
+  where
+  rnf
+    GetSagemakerServicecatalogPortfolioStatusResponse' {..} =
+      Prelude.rnf status
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/GetSearchSuggestions.hs b/gen/Amazonka/SageMaker/GetSearchSuggestions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/GetSearchSuggestions.hs
@@ -0,0 +1,197 @@
+{-# 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.GetSearchSuggestions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- An auto-complete API for the search functionality in the Amazon
+-- SageMaker console. It returns suggestions of possible matches for the
+-- property name to use in @Search@ queries. Provides suggestions for
+-- @HyperParameters@, @Tags@, and @Metrics@.
+module Amazonka.SageMaker.GetSearchSuggestions
+  ( -- * Creating a Request
+    GetSearchSuggestions (..),
+    newGetSearchSuggestions,
+
+    -- * Request Lenses
+    getSearchSuggestions_suggestionQuery,
+    getSearchSuggestions_resource,
+
+    -- * Destructuring the Response
+    GetSearchSuggestionsResponse (..),
+    newGetSearchSuggestionsResponse,
+
+    -- * Response Lenses
+    getSearchSuggestionsResponse_propertyNameSuggestions,
+    getSearchSuggestionsResponse_httpStatus,
+  )
+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:/ 'newGetSearchSuggestions' smart constructor.
+data GetSearchSuggestions = GetSearchSuggestions'
+  { -- | Limits the property names that are included in the response.
+    suggestionQuery :: Prelude.Maybe SuggestionQuery,
+    -- | The name of the Amazon SageMaker resource to search for.
+    resource :: ResourceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSearchSuggestions' 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:
+--
+-- 'suggestionQuery', 'getSearchSuggestions_suggestionQuery' - Limits the property names that are included in the response.
+--
+-- 'resource', 'getSearchSuggestions_resource' - The name of the Amazon SageMaker resource to search for.
+newGetSearchSuggestions ::
+  -- | 'resource'
+  ResourceType ->
+  GetSearchSuggestions
+newGetSearchSuggestions pResource_ =
+  GetSearchSuggestions'
+    { suggestionQuery =
+        Prelude.Nothing,
+      resource = pResource_
+    }
+
+-- | Limits the property names that are included in the response.
+getSearchSuggestions_suggestionQuery :: Lens.Lens' GetSearchSuggestions (Prelude.Maybe SuggestionQuery)
+getSearchSuggestions_suggestionQuery = Lens.lens (\GetSearchSuggestions' {suggestionQuery} -> suggestionQuery) (\s@GetSearchSuggestions' {} a -> s {suggestionQuery = a} :: GetSearchSuggestions)
+
+-- | The name of the Amazon SageMaker resource to search for.
+getSearchSuggestions_resource :: Lens.Lens' GetSearchSuggestions ResourceType
+getSearchSuggestions_resource = Lens.lens (\GetSearchSuggestions' {resource} -> resource) (\s@GetSearchSuggestions' {} a -> s {resource = a} :: GetSearchSuggestions)
+
+instance Core.AWSRequest GetSearchSuggestions where
+  type
+    AWSResponse GetSearchSuggestions =
+      GetSearchSuggestionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSearchSuggestionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "PropertyNameSuggestions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSearchSuggestions where
+  hashWithSalt _salt GetSearchSuggestions' {..} =
+    _salt
+      `Prelude.hashWithSalt` suggestionQuery
+      `Prelude.hashWithSalt` resource
+
+instance Prelude.NFData GetSearchSuggestions where
+  rnf GetSearchSuggestions' {..} =
+    Prelude.rnf suggestionQuery
+      `Prelude.seq` Prelude.rnf resource
+
+instance Data.ToHeaders GetSearchSuggestions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.GetSearchSuggestions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetSearchSuggestions where
+  toJSON GetSearchSuggestions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SuggestionQuery" Data..=)
+              Prelude.<$> suggestionQuery,
+            Prelude.Just ("Resource" Data..= resource)
+          ]
+      )
+
+instance Data.ToPath GetSearchSuggestions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetSearchSuggestions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSearchSuggestionsResponse' smart constructor.
+data GetSearchSuggestionsResponse = GetSearchSuggestionsResponse'
+  { -- | A list of property names for a @Resource@ that match a
+    -- @SuggestionQuery@.
+    propertyNameSuggestions :: Prelude.Maybe [PropertyNameSuggestion],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSearchSuggestionsResponse' 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:
+--
+-- 'propertyNameSuggestions', 'getSearchSuggestionsResponse_propertyNameSuggestions' - A list of property names for a @Resource@ that match a
+-- @SuggestionQuery@.
+--
+-- 'httpStatus', 'getSearchSuggestionsResponse_httpStatus' - The response's http status code.
+newGetSearchSuggestionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSearchSuggestionsResponse
+newGetSearchSuggestionsResponse pHttpStatus_ =
+  GetSearchSuggestionsResponse'
+    { propertyNameSuggestions =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of property names for a @Resource@ that match a
+-- @SuggestionQuery@.
+getSearchSuggestionsResponse_propertyNameSuggestions :: Lens.Lens' GetSearchSuggestionsResponse (Prelude.Maybe [PropertyNameSuggestion])
+getSearchSuggestionsResponse_propertyNameSuggestions = Lens.lens (\GetSearchSuggestionsResponse' {propertyNameSuggestions} -> propertyNameSuggestions) (\s@GetSearchSuggestionsResponse' {} a -> s {propertyNameSuggestions = a} :: GetSearchSuggestionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getSearchSuggestionsResponse_httpStatus :: Lens.Lens' GetSearchSuggestionsResponse Prelude.Int
+getSearchSuggestionsResponse_httpStatus = Lens.lens (\GetSearchSuggestionsResponse' {httpStatus} -> httpStatus) (\s@GetSearchSuggestionsResponse' {} a -> s {httpStatus = a} :: GetSearchSuggestionsResponse)
+
+instance Prelude.NFData GetSearchSuggestionsResponse where
+  rnf GetSearchSuggestionsResponse' {..} =
+    Prelude.rnf propertyNameSuggestions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ImportHubContent.hs b/gen/Amazonka/SageMaker/ImportHubContent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ImportHubContent.hs
@@ -0,0 +1,348 @@
+{-# 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.ImportHubContent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Import hub content.
+module Amazonka.SageMaker.ImportHubContent
+  ( -- * Creating a Request
+    ImportHubContent (..),
+    newImportHubContent,
+
+    -- * Request Lenses
+    importHubContent_hubContentDescription,
+    importHubContent_hubContentDisplayName,
+    importHubContent_hubContentMarkdown,
+    importHubContent_hubContentSearchKeywords,
+    importHubContent_hubContentVersion,
+    importHubContent_tags,
+    importHubContent_hubContentName,
+    importHubContent_hubContentType,
+    importHubContent_documentSchemaVersion,
+    importHubContent_hubName,
+    importHubContent_hubContentDocument,
+
+    -- * Destructuring the Response
+    ImportHubContentResponse (..),
+    newImportHubContentResponse,
+
+    -- * Response Lenses
+    importHubContentResponse_httpStatus,
+    importHubContentResponse_hubArn,
+    importHubContentResponse_hubContentArn,
+  )
+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:/ 'newImportHubContent' smart constructor.
+data ImportHubContent = ImportHubContent'
+  { -- | A description of the hub content to import.
+    hubContentDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the hub content to import.
+    hubContentDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | Markdown files associated with the hub content to import.
+    hubContentMarkdown :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords of the hub content.
+    hubContentSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The version of the hub content to import.
+    hubContentVersion :: Prelude.Maybe Prelude.Text,
+    -- | Any tags associated with the hub content.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the hub content to import.
+    hubContentName :: Prelude.Text,
+    -- | The type of hub content to import.
+    hubContentType :: HubContentType,
+    -- | The version of the hub content schema to import.
+    documentSchemaVersion :: Prelude.Text,
+    -- | The name of the hub to import content into.
+    hubName :: Prelude.Text,
+    -- | The hub content document that describes information about the hub
+    -- content such as type, associated containers, scripts, and more.
+    hubContentDocument :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportHubContent' 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:
+--
+-- 'hubContentDescription', 'importHubContent_hubContentDescription' - A description of the hub content to import.
+--
+-- 'hubContentDisplayName', 'importHubContent_hubContentDisplayName' - The display name of the hub content to import.
+--
+-- 'hubContentMarkdown', 'importHubContent_hubContentMarkdown' - Markdown files associated with the hub content to import.
+--
+-- 'hubContentSearchKeywords', 'importHubContent_hubContentSearchKeywords' - The searchable keywords of the hub content.
+--
+-- 'hubContentVersion', 'importHubContent_hubContentVersion' - The version of the hub content to import.
+--
+-- 'tags', 'importHubContent_tags' - Any tags associated with the hub content.
+--
+-- 'hubContentName', 'importHubContent_hubContentName' - The name of the hub content to import.
+--
+-- 'hubContentType', 'importHubContent_hubContentType' - The type of hub content to import.
+--
+-- 'documentSchemaVersion', 'importHubContent_documentSchemaVersion' - The version of the hub content schema to import.
+--
+-- 'hubName', 'importHubContent_hubName' - The name of the hub to import content into.
+--
+-- 'hubContentDocument', 'importHubContent_hubContentDocument' - The hub content document that describes information about the hub
+-- content such as type, associated containers, scripts, and more.
+newImportHubContent ::
+  -- | 'hubContentName'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  -- | 'documentSchemaVersion'
+  Prelude.Text ->
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubContentDocument'
+  Prelude.Text ->
+  ImportHubContent
+newImportHubContent
+  pHubContentName_
+  pHubContentType_
+  pDocumentSchemaVersion_
+  pHubName_
+  pHubContentDocument_ =
+    ImportHubContent'
+      { hubContentDescription =
+          Prelude.Nothing,
+        hubContentDisplayName = Prelude.Nothing,
+        hubContentMarkdown = Prelude.Nothing,
+        hubContentSearchKeywords = Prelude.Nothing,
+        hubContentVersion = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        hubContentName = pHubContentName_,
+        hubContentType = pHubContentType_,
+        documentSchemaVersion = pDocumentSchemaVersion_,
+        hubName = pHubName_,
+        hubContentDocument = pHubContentDocument_
+      }
+
+-- | A description of the hub content to import.
+importHubContent_hubContentDescription :: Lens.Lens' ImportHubContent (Prelude.Maybe Prelude.Text)
+importHubContent_hubContentDescription = Lens.lens (\ImportHubContent' {hubContentDescription} -> hubContentDescription) (\s@ImportHubContent' {} a -> s {hubContentDescription = a} :: ImportHubContent)
+
+-- | The display name of the hub content to import.
+importHubContent_hubContentDisplayName :: Lens.Lens' ImportHubContent (Prelude.Maybe Prelude.Text)
+importHubContent_hubContentDisplayName = Lens.lens (\ImportHubContent' {hubContentDisplayName} -> hubContentDisplayName) (\s@ImportHubContent' {} a -> s {hubContentDisplayName = a} :: ImportHubContent)
+
+-- | Markdown files associated with the hub content to import.
+importHubContent_hubContentMarkdown :: Lens.Lens' ImportHubContent (Prelude.Maybe Prelude.Text)
+importHubContent_hubContentMarkdown = Lens.lens (\ImportHubContent' {hubContentMarkdown} -> hubContentMarkdown) (\s@ImportHubContent' {} a -> s {hubContentMarkdown = a} :: ImportHubContent)
+
+-- | The searchable keywords of the hub content.
+importHubContent_hubContentSearchKeywords :: Lens.Lens' ImportHubContent (Prelude.Maybe [Prelude.Text])
+importHubContent_hubContentSearchKeywords = Lens.lens (\ImportHubContent' {hubContentSearchKeywords} -> hubContentSearchKeywords) (\s@ImportHubContent' {} a -> s {hubContentSearchKeywords = a} :: ImportHubContent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The version of the hub content to import.
+importHubContent_hubContentVersion :: Lens.Lens' ImportHubContent (Prelude.Maybe Prelude.Text)
+importHubContent_hubContentVersion = Lens.lens (\ImportHubContent' {hubContentVersion} -> hubContentVersion) (\s@ImportHubContent' {} a -> s {hubContentVersion = a} :: ImportHubContent)
+
+-- | Any tags associated with the hub content.
+importHubContent_tags :: Lens.Lens' ImportHubContent (Prelude.Maybe [Tag])
+importHubContent_tags = Lens.lens (\ImportHubContent' {tags} -> tags) (\s@ImportHubContent' {} a -> s {tags = a} :: ImportHubContent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the hub content to import.
+importHubContent_hubContentName :: Lens.Lens' ImportHubContent Prelude.Text
+importHubContent_hubContentName = Lens.lens (\ImportHubContent' {hubContentName} -> hubContentName) (\s@ImportHubContent' {} a -> s {hubContentName = a} :: ImportHubContent)
+
+-- | The type of hub content to import.
+importHubContent_hubContentType :: Lens.Lens' ImportHubContent HubContentType
+importHubContent_hubContentType = Lens.lens (\ImportHubContent' {hubContentType} -> hubContentType) (\s@ImportHubContent' {} a -> s {hubContentType = a} :: ImportHubContent)
+
+-- | The version of the hub content schema to import.
+importHubContent_documentSchemaVersion :: Lens.Lens' ImportHubContent Prelude.Text
+importHubContent_documentSchemaVersion = Lens.lens (\ImportHubContent' {documentSchemaVersion} -> documentSchemaVersion) (\s@ImportHubContent' {} a -> s {documentSchemaVersion = a} :: ImportHubContent)
+
+-- | The name of the hub to import content into.
+importHubContent_hubName :: Lens.Lens' ImportHubContent Prelude.Text
+importHubContent_hubName = Lens.lens (\ImportHubContent' {hubName} -> hubName) (\s@ImportHubContent' {} a -> s {hubName = a} :: ImportHubContent)
+
+-- | The hub content document that describes information about the hub
+-- content such as type, associated containers, scripts, and more.
+importHubContent_hubContentDocument :: Lens.Lens' ImportHubContent Prelude.Text
+importHubContent_hubContentDocument = Lens.lens (\ImportHubContent' {hubContentDocument} -> hubContentDocument) (\s@ImportHubContent' {} a -> s {hubContentDocument = a} :: ImportHubContent)
+
+instance Core.AWSRequest ImportHubContent where
+  type
+    AWSResponse ImportHubContent =
+      ImportHubContentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ImportHubContentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HubArn")
+            Prelude.<*> (x Data..:> "HubContentArn")
+      )
+
+instance Prelude.Hashable ImportHubContent where
+  hashWithSalt _salt ImportHubContent' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubContentDescription
+      `Prelude.hashWithSalt` hubContentDisplayName
+      `Prelude.hashWithSalt` hubContentMarkdown
+      `Prelude.hashWithSalt` hubContentSearchKeywords
+      `Prelude.hashWithSalt` hubContentVersion
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` hubContentName
+      `Prelude.hashWithSalt` hubContentType
+      `Prelude.hashWithSalt` documentSchemaVersion
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubContentDocument
+
+instance Prelude.NFData ImportHubContent where
+  rnf ImportHubContent' {..} =
+    Prelude.rnf hubContentDescription
+      `Prelude.seq` Prelude.rnf hubContentDisplayName
+      `Prelude.seq` Prelude.rnf hubContentMarkdown
+      `Prelude.seq` Prelude.rnf hubContentSearchKeywords
+      `Prelude.seq` Prelude.rnf hubContentVersion
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf hubContentName
+      `Prelude.seq` Prelude.rnf hubContentType
+      `Prelude.seq` Prelude.rnf documentSchemaVersion
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubContentDocument
+
+instance Data.ToHeaders ImportHubContent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ImportHubContent" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ImportHubContent where
+  toJSON ImportHubContent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HubContentDescription" Data..=)
+              Prelude.<$> hubContentDescription,
+            ("HubContentDisplayName" Data..=)
+              Prelude.<$> hubContentDisplayName,
+            ("HubContentMarkdown" Data..=)
+              Prelude.<$> hubContentMarkdown,
+            ("HubContentSearchKeywords" Data..=)
+              Prelude.<$> hubContentSearchKeywords,
+            ("HubContentVersion" Data..=)
+              Prelude.<$> hubContentVersion,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("HubContentName" Data..= hubContentName),
+            Prelude.Just
+              ("HubContentType" Data..= hubContentType),
+            Prelude.Just
+              ( "DocumentSchemaVersion"
+                  Data..= documentSchemaVersion
+              ),
+            Prelude.Just ("HubName" Data..= hubName),
+            Prelude.Just
+              ("HubContentDocument" Data..= hubContentDocument)
+          ]
+      )
+
+instance Data.ToPath ImportHubContent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ImportHubContent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newImportHubContentResponse' smart constructor.
+data ImportHubContentResponse = ImportHubContentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the hub that the content was imported into.
+    hubArn :: Prelude.Text,
+    -- | The ARN of the hub content that was imported.
+    hubContentArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportHubContentResponse' 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', 'importHubContentResponse_httpStatus' - The response's http status code.
+--
+-- 'hubArn', 'importHubContentResponse_hubArn' - The ARN of the hub that the content was imported into.
+--
+-- 'hubContentArn', 'importHubContentResponse_hubContentArn' - The ARN of the hub content that was imported.
+newImportHubContentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hubArn'
+  Prelude.Text ->
+  -- | 'hubContentArn'
+  Prelude.Text ->
+  ImportHubContentResponse
+newImportHubContentResponse
+  pHttpStatus_
+  pHubArn_
+  pHubContentArn_ =
+    ImportHubContentResponse'
+      { httpStatus =
+          pHttpStatus_,
+        hubArn = pHubArn_,
+        hubContentArn = pHubContentArn_
+      }
+
+-- | The response's http status code.
+importHubContentResponse_httpStatus :: Lens.Lens' ImportHubContentResponse Prelude.Int
+importHubContentResponse_httpStatus = Lens.lens (\ImportHubContentResponse' {httpStatus} -> httpStatus) (\s@ImportHubContentResponse' {} a -> s {httpStatus = a} :: ImportHubContentResponse)
+
+-- | The ARN of the hub that the content was imported into.
+importHubContentResponse_hubArn :: Lens.Lens' ImportHubContentResponse Prelude.Text
+importHubContentResponse_hubArn = Lens.lens (\ImportHubContentResponse' {hubArn} -> hubArn) (\s@ImportHubContentResponse' {} a -> s {hubArn = a} :: ImportHubContentResponse)
+
+-- | The ARN of the hub content that was imported.
+importHubContentResponse_hubContentArn :: Lens.Lens' ImportHubContentResponse Prelude.Text
+importHubContentResponse_hubContentArn = Lens.lens (\ImportHubContentResponse' {hubContentArn} -> hubContentArn) (\s@ImportHubContentResponse' {} a -> s {hubContentArn = a} :: ImportHubContentResponse)
+
+instance Prelude.NFData ImportHubContentResponse where
+  rnf ImportHubContentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubArn
+      `Prelude.seq` Prelude.rnf hubContentArn
diff --git a/gen/Amazonka/SageMaker/Lens.hs b/gen/Amazonka/SageMaker/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Lens.hs
@@ -0,0 +1,6789 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Lens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Lens
+  ( -- * Operations
+
+    -- ** AddAssociation
+    addAssociation_associationType,
+    addAssociation_sourceArn,
+    addAssociation_destinationArn,
+    addAssociationResponse_destinationArn,
+    addAssociationResponse_sourceArn,
+    addAssociationResponse_httpStatus,
+
+    -- ** AddTags
+    addTags_resourceArn,
+    addTags_tags,
+    addTagsResponse_tags,
+    addTagsResponse_httpStatus,
+
+    -- ** AssociateTrialComponent
+    associateTrialComponent_trialComponentName,
+    associateTrialComponent_trialName,
+    associateTrialComponentResponse_trialArn,
+    associateTrialComponentResponse_trialComponentArn,
+    associateTrialComponentResponse_httpStatus,
+
+    -- ** BatchDescribeModelPackage
+    batchDescribeModelPackage_modelPackageArnList,
+    batchDescribeModelPackageResponse_batchDescribeModelPackageErrorMap,
+    batchDescribeModelPackageResponse_modelPackageSummaries,
+    batchDescribeModelPackageResponse_httpStatus,
+
+    -- ** CreateAction
+    createAction_description,
+    createAction_metadataProperties,
+    createAction_properties,
+    createAction_status,
+    createAction_tags,
+    createAction_actionName,
+    createAction_source,
+    createAction_actionType,
+    createActionResponse_actionArn,
+    createActionResponse_httpStatus,
+
+    -- ** CreateAlgorithm
+    createAlgorithm_algorithmDescription,
+    createAlgorithm_certifyForMarketplace,
+    createAlgorithm_inferenceSpecification,
+    createAlgorithm_tags,
+    createAlgorithm_validationSpecification,
+    createAlgorithm_algorithmName,
+    createAlgorithm_trainingSpecification,
+    createAlgorithmResponse_httpStatus,
+    createAlgorithmResponse_algorithmArn,
+
+    -- ** CreateApp
+    createApp_resourceSpec,
+    createApp_spaceName,
+    createApp_tags,
+    createApp_userProfileName,
+    createApp_domainId,
+    createApp_appType,
+    createApp_appName,
+    createAppResponse_appArn,
+    createAppResponse_httpStatus,
+
+    -- ** CreateAppImageConfig
+    createAppImageConfig_kernelGatewayImageConfig,
+    createAppImageConfig_tags,
+    createAppImageConfig_appImageConfigName,
+    createAppImageConfigResponse_appImageConfigArn,
+    createAppImageConfigResponse_httpStatus,
+
+    -- ** CreateArtifact
+    createArtifact_artifactName,
+    createArtifact_metadataProperties,
+    createArtifact_properties,
+    createArtifact_tags,
+    createArtifact_source,
+    createArtifact_artifactType,
+    createArtifactResponse_artifactArn,
+    createArtifactResponse_httpStatus,
+
+    -- ** CreateAutoMLJob
+    createAutoMLJob_autoMLJobConfig,
+    createAutoMLJob_autoMLJobObjective,
+    createAutoMLJob_generateCandidateDefinitionsOnly,
+    createAutoMLJob_modelDeployConfig,
+    createAutoMLJob_problemType,
+    createAutoMLJob_tags,
+    createAutoMLJob_autoMLJobName,
+    createAutoMLJob_inputDataConfig,
+    createAutoMLJob_outputDataConfig,
+    createAutoMLJob_roleArn,
+    createAutoMLJobResponse_httpStatus,
+    createAutoMLJobResponse_autoMLJobArn,
+
+    -- ** CreateCodeRepository
+    createCodeRepository_tags,
+    createCodeRepository_codeRepositoryName,
+    createCodeRepository_gitConfig,
+    createCodeRepositoryResponse_httpStatus,
+    createCodeRepositoryResponse_codeRepositoryArn,
+
+    -- ** CreateCompilationJob
+    createCompilationJob_inputConfig,
+    createCompilationJob_modelPackageVersionArn,
+    createCompilationJob_tags,
+    createCompilationJob_vpcConfig,
+    createCompilationJob_compilationJobName,
+    createCompilationJob_roleArn,
+    createCompilationJob_outputConfig,
+    createCompilationJob_stoppingCondition,
+    createCompilationJobResponse_httpStatus,
+    createCompilationJobResponse_compilationJobArn,
+
+    -- ** CreateContext
+    createContext_description,
+    createContext_properties,
+    createContext_tags,
+    createContext_contextName,
+    createContext_source,
+    createContext_contextType,
+    createContextResponse_contextArn,
+    createContextResponse_httpStatus,
+
+    -- ** CreateDataQualityJobDefinition
+    createDataQualityJobDefinition_dataQualityBaselineConfig,
+    createDataQualityJobDefinition_networkConfig,
+    createDataQualityJobDefinition_stoppingCondition,
+    createDataQualityJobDefinition_tags,
+    createDataQualityJobDefinition_jobDefinitionName,
+    createDataQualityJobDefinition_dataQualityAppSpecification,
+    createDataQualityJobDefinition_dataQualityJobInput,
+    createDataQualityJobDefinition_dataQualityJobOutputConfig,
+    createDataQualityJobDefinition_jobResources,
+    createDataQualityJobDefinition_roleArn,
+    createDataQualityJobDefinitionResponse_httpStatus,
+    createDataQualityJobDefinitionResponse_jobDefinitionArn,
+
+    -- ** CreateDeviceFleet
+    createDeviceFleet_description,
+    createDeviceFleet_enableIotRoleAlias,
+    createDeviceFleet_roleArn,
+    createDeviceFleet_tags,
+    createDeviceFleet_deviceFleetName,
+    createDeviceFleet_outputConfig,
+
+    -- ** CreateDomain
+    createDomain_appNetworkAccessType,
+    createDomain_appSecurityGroupManagement,
+    createDomain_defaultSpaceSettings,
+    createDomain_domainSettings,
+    createDomain_homeEfsFileSystemKmsKeyId,
+    createDomain_kmsKeyId,
+    createDomain_tags,
+    createDomain_domainName,
+    createDomain_authMode,
+    createDomain_defaultUserSettings,
+    createDomain_subnetIds,
+    createDomain_vpcId,
+    createDomainResponse_domainArn,
+    createDomainResponse_url,
+    createDomainResponse_httpStatus,
+
+    -- ** CreateEdgeDeploymentPlan
+    createEdgeDeploymentPlan_stages,
+    createEdgeDeploymentPlan_tags,
+    createEdgeDeploymentPlan_edgeDeploymentPlanName,
+    createEdgeDeploymentPlan_modelConfigs,
+    createEdgeDeploymentPlan_deviceFleetName,
+    createEdgeDeploymentPlanResponse_httpStatus,
+    createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn,
+
+    -- ** CreateEdgeDeploymentStage
+    createEdgeDeploymentStage_edgeDeploymentPlanName,
+    createEdgeDeploymentStage_stages,
+
+    -- ** CreateEdgePackagingJob
+    createEdgePackagingJob_resourceKey,
+    createEdgePackagingJob_tags,
+    createEdgePackagingJob_edgePackagingJobName,
+    createEdgePackagingJob_compilationJobName,
+    createEdgePackagingJob_modelName,
+    createEdgePackagingJob_modelVersion,
+    createEdgePackagingJob_roleArn,
+    createEdgePackagingJob_outputConfig,
+
+    -- ** CreateEndpoint
+    createEndpoint_deploymentConfig,
+    createEndpoint_tags,
+    createEndpoint_endpointName,
+    createEndpoint_endpointConfigName,
+    createEndpointResponse_httpStatus,
+    createEndpointResponse_endpointArn,
+
+    -- ** CreateEndpointConfig
+    createEndpointConfig_asyncInferenceConfig,
+    createEndpointConfig_dataCaptureConfig,
+    createEndpointConfig_explainerConfig,
+    createEndpointConfig_kmsKeyId,
+    createEndpointConfig_shadowProductionVariants,
+    createEndpointConfig_tags,
+    createEndpointConfig_endpointConfigName,
+    createEndpointConfig_productionVariants,
+    createEndpointConfigResponse_httpStatus,
+    createEndpointConfigResponse_endpointConfigArn,
+
+    -- ** CreateExperiment
+    createExperiment_description,
+    createExperiment_displayName,
+    createExperiment_tags,
+    createExperiment_experimentName,
+    createExperimentResponse_experimentArn,
+    createExperimentResponse_httpStatus,
+
+    -- ** CreateFeatureGroup
+    createFeatureGroup_description,
+    createFeatureGroup_offlineStoreConfig,
+    createFeatureGroup_onlineStoreConfig,
+    createFeatureGroup_roleArn,
+    createFeatureGroup_tags,
+    createFeatureGroup_featureGroupName,
+    createFeatureGroup_recordIdentifierFeatureName,
+    createFeatureGroup_eventTimeFeatureName,
+    createFeatureGroup_featureDefinitions,
+    createFeatureGroupResponse_httpStatus,
+    createFeatureGroupResponse_featureGroupArn,
+
+    -- ** CreateFlowDefinition
+    createFlowDefinition_humanLoopActivationConfig,
+    createFlowDefinition_humanLoopRequestSource,
+    createFlowDefinition_tags,
+    createFlowDefinition_flowDefinitionName,
+    createFlowDefinition_humanLoopConfig,
+    createFlowDefinition_outputConfig,
+    createFlowDefinition_roleArn,
+    createFlowDefinitionResponse_httpStatus,
+    createFlowDefinitionResponse_flowDefinitionArn,
+
+    -- ** CreateHub
+    createHub_hubDisplayName,
+    createHub_hubSearchKeywords,
+    createHub_s3StorageConfig,
+    createHub_tags,
+    createHub_hubName,
+    createHub_hubDescription,
+    createHubResponse_httpStatus,
+    createHubResponse_hubArn,
+
+    -- ** CreateHumanTaskUi
+    createHumanTaskUi_tags,
+    createHumanTaskUi_humanTaskUiName,
+    createHumanTaskUi_uiTemplate,
+    createHumanTaskUiResponse_httpStatus,
+    createHumanTaskUiResponse_humanTaskUiArn,
+
+    -- ** CreateHyperParameterTuningJob
+    createHyperParameterTuningJob_tags,
+    createHyperParameterTuningJob_trainingJobDefinition,
+    createHyperParameterTuningJob_trainingJobDefinitions,
+    createHyperParameterTuningJob_warmStartConfig,
+    createHyperParameterTuningJob_hyperParameterTuningJobName,
+    createHyperParameterTuningJob_hyperParameterTuningJobConfig,
+    createHyperParameterTuningJobResponse_httpStatus,
+    createHyperParameterTuningJobResponse_hyperParameterTuningJobArn,
+
+    -- ** CreateImage
+    createImage_description,
+    createImage_displayName,
+    createImage_tags,
+    createImage_imageName,
+    createImage_roleArn,
+    createImageResponse_imageArn,
+    createImageResponse_httpStatus,
+
+    -- ** CreateImageVersion
+    createImageVersion_aliases,
+    createImageVersion_horovod,
+    createImageVersion_jobType,
+    createImageVersion_mLFramework,
+    createImageVersion_processor,
+    createImageVersion_programmingLang,
+    createImageVersion_releaseNotes,
+    createImageVersion_vendorGuidance,
+    createImageVersion_baseImage,
+    createImageVersion_clientToken,
+    createImageVersion_imageName,
+    createImageVersionResponse_imageVersionArn,
+    createImageVersionResponse_httpStatus,
+
+    -- ** CreateInferenceExperiment
+    createInferenceExperiment_dataStorageConfig,
+    createInferenceExperiment_description,
+    createInferenceExperiment_kmsKey,
+    createInferenceExperiment_schedule,
+    createInferenceExperiment_tags,
+    createInferenceExperiment_name,
+    createInferenceExperiment_type,
+    createInferenceExperiment_roleArn,
+    createInferenceExperiment_endpointName,
+    createInferenceExperiment_modelVariants,
+    createInferenceExperiment_shadowModeConfig,
+    createInferenceExperimentResponse_httpStatus,
+    createInferenceExperimentResponse_inferenceExperimentArn,
+
+    -- ** CreateInferenceRecommendationsJob
+    createInferenceRecommendationsJob_jobDescription,
+    createInferenceRecommendationsJob_outputConfig,
+    createInferenceRecommendationsJob_stoppingConditions,
+    createInferenceRecommendationsJob_tags,
+    createInferenceRecommendationsJob_jobName,
+    createInferenceRecommendationsJob_jobType,
+    createInferenceRecommendationsJob_roleArn,
+    createInferenceRecommendationsJob_inputConfig,
+    createInferenceRecommendationsJobResponse_httpStatus,
+    createInferenceRecommendationsJobResponse_jobArn,
+
+    -- ** CreateLabelingJob
+    createLabelingJob_labelCategoryConfigS3Uri,
+    createLabelingJob_labelingJobAlgorithmsConfig,
+    createLabelingJob_stoppingConditions,
+    createLabelingJob_tags,
+    createLabelingJob_labelingJobName,
+    createLabelingJob_labelAttributeName,
+    createLabelingJob_inputConfig,
+    createLabelingJob_outputConfig,
+    createLabelingJob_roleArn,
+    createLabelingJob_humanTaskConfig,
+    createLabelingJobResponse_httpStatus,
+    createLabelingJobResponse_labelingJobArn,
+
+    -- ** CreateModel
+    createModel_containers,
+    createModel_enableNetworkIsolation,
+    createModel_inferenceExecutionConfig,
+    createModel_primaryContainer,
+    createModel_tags,
+    createModel_vpcConfig,
+    createModel_modelName,
+    createModel_executionRoleArn,
+    createModelResponse_httpStatus,
+    createModelResponse_modelArn,
+
+    -- ** CreateModelBiasJobDefinition
+    createModelBiasJobDefinition_modelBiasBaselineConfig,
+    createModelBiasJobDefinition_networkConfig,
+    createModelBiasJobDefinition_stoppingCondition,
+    createModelBiasJobDefinition_tags,
+    createModelBiasJobDefinition_jobDefinitionName,
+    createModelBiasJobDefinition_modelBiasAppSpecification,
+    createModelBiasJobDefinition_modelBiasJobInput,
+    createModelBiasJobDefinition_modelBiasJobOutputConfig,
+    createModelBiasJobDefinition_jobResources,
+    createModelBiasJobDefinition_roleArn,
+    createModelBiasJobDefinitionResponse_httpStatus,
+    createModelBiasJobDefinitionResponse_jobDefinitionArn,
+
+    -- ** CreateModelCard
+    createModelCard_securityConfig,
+    createModelCard_tags,
+    createModelCard_modelCardName,
+    createModelCard_content,
+    createModelCard_modelCardStatus,
+    createModelCardResponse_httpStatus,
+    createModelCardResponse_modelCardArn,
+
+    -- ** CreateModelCardExportJob
+    createModelCardExportJob_modelCardVersion,
+    createModelCardExportJob_modelCardName,
+    createModelCardExportJob_modelCardExportJobName,
+    createModelCardExportJob_outputConfig,
+    createModelCardExportJobResponse_httpStatus,
+    createModelCardExportJobResponse_modelCardExportJobArn,
+
+    -- ** CreateModelExplainabilityJobDefinition
+    createModelExplainabilityJobDefinition_modelExplainabilityBaselineConfig,
+    createModelExplainabilityJobDefinition_networkConfig,
+    createModelExplainabilityJobDefinition_stoppingCondition,
+    createModelExplainabilityJobDefinition_tags,
+    createModelExplainabilityJobDefinition_jobDefinitionName,
+    createModelExplainabilityJobDefinition_modelExplainabilityAppSpecification,
+    createModelExplainabilityJobDefinition_modelExplainabilityJobInput,
+    createModelExplainabilityJobDefinition_modelExplainabilityJobOutputConfig,
+    createModelExplainabilityJobDefinition_jobResources,
+    createModelExplainabilityJobDefinition_roleArn,
+    createModelExplainabilityJobDefinitionResponse_httpStatus,
+    createModelExplainabilityJobDefinitionResponse_jobDefinitionArn,
+
+    -- ** CreateModelPackage
+    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,
+    createModelPackageResponse_httpStatus,
+    createModelPackageResponse_modelPackageArn,
+
+    -- ** CreateModelPackageGroup
+    createModelPackageGroup_modelPackageGroupDescription,
+    createModelPackageGroup_tags,
+    createModelPackageGroup_modelPackageGroupName,
+    createModelPackageGroupResponse_httpStatus,
+    createModelPackageGroupResponse_modelPackageGroupArn,
+
+    -- ** CreateModelQualityJobDefinition
+    createModelQualityJobDefinition_modelQualityBaselineConfig,
+    createModelQualityJobDefinition_networkConfig,
+    createModelQualityJobDefinition_stoppingCondition,
+    createModelQualityJobDefinition_tags,
+    createModelQualityJobDefinition_jobDefinitionName,
+    createModelQualityJobDefinition_modelQualityAppSpecification,
+    createModelQualityJobDefinition_modelQualityJobInput,
+    createModelQualityJobDefinition_modelQualityJobOutputConfig,
+    createModelQualityJobDefinition_jobResources,
+    createModelQualityJobDefinition_roleArn,
+    createModelQualityJobDefinitionResponse_httpStatus,
+    createModelQualityJobDefinitionResponse_jobDefinitionArn,
+
+    -- ** CreateMonitoringSchedule
+    createMonitoringSchedule_tags,
+    createMonitoringSchedule_monitoringScheduleName,
+    createMonitoringSchedule_monitoringScheduleConfig,
+    createMonitoringScheduleResponse_httpStatus,
+    createMonitoringScheduleResponse_monitoringScheduleArn,
+
+    -- ** CreateNotebookInstance
+    createNotebookInstance_acceleratorTypes,
+    createNotebookInstance_additionalCodeRepositories,
+    createNotebookInstance_defaultCodeRepository,
+    createNotebookInstance_directInternetAccess,
+    createNotebookInstance_instanceMetadataServiceConfiguration,
+    createNotebookInstance_kmsKeyId,
+    createNotebookInstance_lifecycleConfigName,
+    createNotebookInstance_platformIdentifier,
+    createNotebookInstance_rootAccess,
+    createNotebookInstance_securityGroupIds,
+    createNotebookInstance_subnetId,
+    createNotebookInstance_tags,
+    createNotebookInstance_volumeSizeInGB,
+    createNotebookInstance_notebookInstanceName,
+    createNotebookInstance_instanceType,
+    createNotebookInstance_roleArn,
+    createNotebookInstanceResponse_notebookInstanceArn,
+    createNotebookInstanceResponse_httpStatus,
+
+    -- ** CreateNotebookInstanceLifecycleConfig
+    createNotebookInstanceLifecycleConfig_onCreate,
+    createNotebookInstanceLifecycleConfig_onStart,
+    createNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+    createNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn,
+    createNotebookInstanceLifecycleConfigResponse_httpStatus,
+
+    -- ** CreatePipeline
+    createPipeline_parallelismConfiguration,
+    createPipeline_pipelineDefinition,
+    createPipeline_pipelineDefinitionS3Location,
+    createPipeline_pipelineDescription,
+    createPipeline_pipelineDisplayName,
+    createPipeline_tags,
+    createPipeline_pipelineName,
+    createPipeline_clientRequestToken,
+    createPipeline_roleArn,
+    createPipelineResponse_pipelineArn,
+    createPipelineResponse_httpStatus,
+
+    -- ** CreatePresignedDomainUrl
+    createPresignedDomainUrl_expiresInSeconds,
+    createPresignedDomainUrl_sessionExpirationDurationInSeconds,
+    createPresignedDomainUrl_spaceName,
+    createPresignedDomainUrl_domainId,
+    createPresignedDomainUrl_userProfileName,
+    createPresignedDomainUrlResponse_authorizedUrl,
+    createPresignedDomainUrlResponse_httpStatus,
+
+    -- ** CreatePresignedNotebookInstanceUrl
+    createPresignedNotebookInstanceUrl_sessionExpirationDurationInSeconds,
+    createPresignedNotebookInstanceUrl_notebookInstanceName,
+    createPresignedNotebookInstanceUrlResponse_authorizedUrl,
+    createPresignedNotebookInstanceUrlResponse_httpStatus,
+
+    -- ** CreateProcessingJob
+    createProcessingJob_environment,
+    createProcessingJob_experimentConfig,
+    createProcessingJob_networkConfig,
+    createProcessingJob_processingInputs,
+    createProcessingJob_processingOutputConfig,
+    createProcessingJob_stoppingCondition,
+    createProcessingJob_tags,
+    createProcessingJob_processingJobName,
+    createProcessingJob_processingResources,
+    createProcessingJob_appSpecification,
+    createProcessingJob_roleArn,
+    createProcessingJobResponse_httpStatus,
+    createProcessingJobResponse_processingJobArn,
+
+    -- ** CreateProject
+    createProject_projectDescription,
+    createProject_tags,
+    createProject_projectName,
+    createProject_serviceCatalogProvisioningDetails,
+    createProjectResponse_httpStatus,
+    createProjectResponse_projectArn,
+    createProjectResponse_projectId,
+
+    -- ** CreateSpace
+    createSpace_spaceSettings,
+    createSpace_tags,
+    createSpace_domainId,
+    createSpace_spaceName,
+    createSpaceResponse_spaceArn,
+    createSpaceResponse_httpStatus,
+
+    -- ** CreateStudioLifecycleConfig
+    createStudioLifecycleConfig_tags,
+    createStudioLifecycleConfig_studioLifecycleConfigName,
+    createStudioLifecycleConfig_studioLifecycleConfigContent,
+    createStudioLifecycleConfig_studioLifecycleConfigAppType,
+    createStudioLifecycleConfigResponse_studioLifecycleConfigArn,
+    createStudioLifecycleConfigResponse_httpStatus,
+
+    -- ** CreateTrainingJob
+    createTrainingJob_checkpointConfig,
+    createTrainingJob_debugHookConfig,
+    createTrainingJob_debugRuleConfigurations,
+    createTrainingJob_enableInterContainerTrafficEncryption,
+    createTrainingJob_enableManagedSpotTraining,
+    createTrainingJob_enableNetworkIsolation,
+    createTrainingJob_environment,
+    createTrainingJob_experimentConfig,
+    createTrainingJob_hyperParameters,
+    createTrainingJob_inputDataConfig,
+    createTrainingJob_profilerConfig,
+    createTrainingJob_profilerRuleConfigurations,
+    createTrainingJob_retryStrategy,
+    createTrainingJob_tags,
+    createTrainingJob_tensorBoardOutputConfig,
+    createTrainingJob_vpcConfig,
+    createTrainingJob_trainingJobName,
+    createTrainingJob_algorithmSpecification,
+    createTrainingJob_roleArn,
+    createTrainingJob_outputDataConfig,
+    createTrainingJob_resourceConfig,
+    createTrainingJob_stoppingCondition,
+    createTrainingJobResponse_httpStatus,
+    createTrainingJobResponse_trainingJobArn,
+
+    -- ** CreateTransformJob
+    createTransformJob_batchStrategy,
+    createTransformJob_dataCaptureConfig,
+    createTransformJob_dataProcessing,
+    createTransformJob_environment,
+    createTransformJob_experimentConfig,
+    createTransformJob_maxConcurrentTransforms,
+    createTransformJob_maxPayloadInMB,
+    createTransformJob_modelClientConfig,
+    createTransformJob_tags,
+    createTransformJob_transformJobName,
+    createTransformJob_modelName,
+    createTransformJob_transformInput,
+    createTransformJob_transformOutput,
+    createTransformJob_transformResources,
+    createTransformJobResponse_httpStatus,
+    createTransformJobResponse_transformJobArn,
+
+    -- ** CreateTrial
+    createTrial_displayName,
+    createTrial_metadataProperties,
+    createTrial_tags,
+    createTrial_trialName,
+    createTrial_experimentName,
+    createTrialResponse_trialArn,
+    createTrialResponse_httpStatus,
+
+    -- ** CreateTrialComponent
+    createTrialComponent_displayName,
+    createTrialComponent_endTime,
+    createTrialComponent_inputArtifacts,
+    createTrialComponent_metadataProperties,
+    createTrialComponent_outputArtifacts,
+    createTrialComponent_parameters,
+    createTrialComponent_startTime,
+    createTrialComponent_status,
+    createTrialComponent_tags,
+    createTrialComponent_trialComponentName,
+    createTrialComponentResponse_trialComponentArn,
+    createTrialComponentResponse_httpStatus,
+
+    -- ** CreateUserProfile
+    createUserProfile_singleSignOnUserIdentifier,
+    createUserProfile_singleSignOnUserValue,
+    createUserProfile_tags,
+    createUserProfile_userSettings,
+    createUserProfile_domainId,
+    createUserProfile_userProfileName,
+    createUserProfileResponse_userProfileArn,
+    createUserProfileResponse_httpStatus,
+
+    -- ** CreateWorkforce
+    createWorkforce_cognitoConfig,
+    createWorkforce_oidcConfig,
+    createWorkforce_sourceIpConfig,
+    createWorkforce_tags,
+    createWorkforce_workforceVpcConfig,
+    createWorkforce_workforceName,
+    createWorkforceResponse_httpStatus,
+    createWorkforceResponse_workforceArn,
+
+    -- ** CreateWorkteam
+    createWorkteam_notificationConfiguration,
+    createWorkteam_tags,
+    createWorkteam_workforceName,
+    createWorkteam_workteamName,
+    createWorkteam_memberDefinitions,
+    createWorkteam_description,
+    createWorkteamResponse_workteamArn,
+    createWorkteamResponse_httpStatus,
+
+    -- ** DeleteAction
+    deleteAction_actionName,
+    deleteActionResponse_actionArn,
+    deleteActionResponse_httpStatus,
+
+    -- ** DeleteAlgorithm
+    deleteAlgorithm_algorithmName,
+
+    -- ** DeleteApp
+    deleteApp_spaceName,
+    deleteApp_userProfileName,
+    deleteApp_domainId,
+    deleteApp_appType,
+    deleteApp_appName,
+
+    -- ** DeleteAppImageConfig
+    deleteAppImageConfig_appImageConfigName,
+
+    -- ** DeleteArtifact
+    deleteArtifact_artifactArn,
+    deleteArtifact_source,
+    deleteArtifactResponse_artifactArn,
+    deleteArtifactResponse_httpStatus,
+
+    -- ** DeleteAssociation
+    deleteAssociation_sourceArn,
+    deleteAssociation_destinationArn,
+    deleteAssociationResponse_destinationArn,
+    deleteAssociationResponse_sourceArn,
+    deleteAssociationResponse_httpStatus,
+
+    -- ** DeleteCodeRepository
+    deleteCodeRepository_codeRepositoryName,
+
+    -- ** DeleteContext
+    deleteContext_contextName,
+    deleteContextResponse_contextArn,
+    deleteContextResponse_httpStatus,
+
+    -- ** DeleteDataQualityJobDefinition
+    deleteDataQualityJobDefinition_jobDefinitionName,
+
+    -- ** DeleteDeviceFleet
+    deleteDeviceFleet_deviceFleetName,
+
+    -- ** DeleteDomain
+    deleteDomain_retentionPolicy,
+    deleteDomain_domainId,
+
+    -- ** DeleteEdgeDeploymentPlan
+    deleteEdgeDeploymentPlan_edgeDeploymentPlanName,
+
+    -- ** DeleteEdgeDeploymentStage
+    deleteEdgeDeploymentStage_edgeDeploymentPlanName,
+    deleteEdgeDeploymentStage_stageName,
+
+    -- ** DeleteEndpoint
+    deleteEndpoint_endpointName,
+
+    -- ** DeleteEndpointConfig
+    deleteEndpointConfig_endpointConfigName,
+
+    -- ** DeleteExperiment
+    deleteExperiment_experimentName,
+    deleteExperimentResponse_experimentArn,
+    deleteExperimentResponse_httpStatus,
+
+    -- ** DeleteFeatureGroup
+    deleteFeatureGroup_featureGroupName,
+
+    -- ** DeleteFlowDefinition
+    deleteFlowDefinition_flowDefinitionName,
+    deleteFlowDefinitionResponse_httpStatus,
+
+    -- ** DeleteHub
+    deleteHub_hubName,
+
+    -- ** DeleteHubContent
+    deleteHubContent_hubName,
+    deleteHubContent_hubContentType,
+    deleteHubContent_hubContentName,
+    deleteHubContent_hubContentVersion,
+
+    -- ** DeleteHumanTaskUi
+    deleteHumanTaskUi_humanTaskUiName,
+    deleteHumanTaskUiResponse_httpStatus,
+
+    -- ** DeleteImage
+    deleteImage_imageName,
+    deleteImageResponse_httpStatus,
+
+    -- ** DeleteImageVersion
+    deleteImageVersion_alias,
+    deleteImageVersion_version,
+    deleteImageVersion_imageName,
+    deleteImageVersionResponse_httpStatus,
+
+    -- ** DeleteInferenceExperiment
+    deleteInferenceExperiment_name,
+    deleteInferenceExperimentResponse_httpStatus,
+    deleteInferenceExperimentResponse_inferenceExperimentArn,
+
+    -- ** DeleteModel
+    deleteModel_modelName,
+
+    -- ** DeleteModelBiasJobDefinition
+    deleteModelBiasJobDefinition_jobDefinitionName,
+
+    -- ** DeleteModelCard
+    deleteModelCard_modelCardName,
+
+    -- ** DeleteModelExplainabilityJobDefinition
+    deleteModelExplainabilityJobDefinition_jobDefinitionName,
+
+    -- ** DeleteModelPackage
+    deleteModelPackage_modelPackageName,
+
+    -- ** DeleteModelPackageGroup
+    deleteModelPackageGroup_modelPackageGroupName,
+
+    -- ** DeleteModelPackageGroupPolicy
+    deleteModelPackageGroupPolicy_modelPackageGroupName,
+
+    -- ** DeleteModelQualityJobDefinition
+    deleteModelQualityJobDefinition_jobDefinitionName,
+
+    -- ** DeleteMonitoringSchedule
+    deleteMonitoringSchedule_monitoringScheduleName,
+
+    -- ** DeleteNotebookInstance
+    deleteNotebookInstance_notebookInstanceName,
+
+    -- ** DeleteNotebookInstanceLifecycleConfig
+    deleteNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+
+    -- ** DeletePipeline
+    deletePipeline_pipelineName,
+    deletePipeline_clientRequestToken,
+    deletePipelineResponse_pipelineArn,
+    deletePipelineResponse_httpStatus,
+
+    -- ** DeleteProject
+    deleteProject_projectName,
+
+    -- ** DeleteSpace
+    deleteSpace_domainId,
+    deleteSpace_spaceName,
+
+    -- ** DeleteStudioLifecycleConfig
+    deleteStudioLifecycleConfig_studioLifecycleConfigName,
+
+    -- ** DeleteTags
+    deleteTags_resourceArn,
+    deleteTags_tagKeys,
+    deleteTagsResponse_httpStatus,
+
+    -- ** DeleteTrial
+    deleteTrial_trialName,
+    deleteTrialResponse_trialArn,
+    deleteTrialResponse_httpStatus,
+
+    -- ** DeleteTrialComponent
+    deleteTrialComponent_trialComponentName,
+    deleteTrialComponentResponse_trialComponentArn,
+    deleteTrialComponentResponse_httpStatus,
+
+    -- ** DeleteUserProfile
+    deleteUserProfile_domainId,
+    deleteUserProfile_userProfileName,
+
+    -- ** DeleteWorkforce
+    deleteWorkforce_workforceName,
+    deleteWorkforceResponse_httpStatus,
+
+    -- ** DeleteWorkteam
+    deleteWorkteam_workteamName,
+    deleteWorkteamResponse_httpStatus,
+    deleteWorkteamResponse_success,
+
+    -- ** DeregisterDevices
+    deregisterDevices_deviceFleetName,
+    deregisterDevices_deviceNames,
+
+    -- ** DescribeAction
+    describeAction_actionName,
+    describeActionResponse_actionArn,
+    describeActionResponse_actionName,
+    describeActionResponse_actionType,
+    describeActionResponse_createdBy,
+    describeActionResponse_creationTime,
+    describeActionResponse_description,
+    describeActionResponse_lastModifiedBy,
+    describeActionResponse_lastModifiedTime,
+    describeActionResponse_lineageGroupArn,
+    describeActionResponse_metadataProperties,
+    describeActionResponse_properties,
+    describeActionResponse_source,
+    describeActionResponse_status,
+    describeActionResponse_httpStatus,
+
+    -- ** DescribeAlgorithm
+    describeAlgorithm_algorithmName,
+    describeAlgorithmResponse_algorithmDescription,
+    describeAlgorithmResponse_certifyForMarketplace,
+    describeAlgorithmResponse_inferenceSpecification,
+    describeAlgorithmResponse_productId,
+    describeAlgorithmResponse_validationSpecification,
+    describeAlgorithmResponse_httpStatus,
+    describeAlgorithmResponse_algorithmName,
+    describeAlgorithmResponse_algorithmArn,
+    describeAlgorithmResponse_creationTime,
+    describeAlgorithmResponse_trainingSpecification,
+    describeAlgorithmResponse_algorithmStatus,
+    describeAlgorithmResponse_algorithmStatusDetails,
+
+    -- ** DescribeApp
+    describeApp_spaceName,
+    describeApp_userProfileName,
+    describeApp_domainId,
+    describeApp_appType,
+    describeApp_appName,
+    describeAppResponse_appArn,
+    describeAppResponse_appName,
+    describeAppResponse_appType,
+    describeAppResponse_creationTime,
+    describeAppResponse_domainId,
+    describeAppResponse_failureReason,
+    describeAppResponse_lastHealthCheckTimestamp,
+    describeAppResponse_lastUserActivityTimestamp,
+    describeAppResponse_resourceSpec,
+    describeAppResponse_spaceName,
+    describeAppResponse_status,
+    describeAppResponse_userProfileName,
+    describeAppResponse_httpStatus,
+
+    -- ** DescribeAppImageConfig
+    describeAppImageConfig_appImageConfigName,
+    describeAppImageConfigResponse_appImageConfigArn,
+    describeAppImageConfigResponse_appImageConfigName,
+    describeAppImageConfigResponse_creationTime,
+    describeAppImageConfigResponse_kernelGatewayImageConfig,
+    describeAppImageConfigResponse_lastModifiedTime,
+    describeAppImageConfigResponse_httpStatus,
+
+    -- ** DescribeArtifact
+    describeArtifact_artifactArn,
+    describeArtifactResponse_artifactArn,
+    describeArtifactResponse_artifactName,
+    describeArtifactResponse_artifactType,
+    describeArtifactResponse_createdBy,
+    describeArtifactResponse_creationTime,
+    describeArtifactResponse_lastModifiedBy,
+    describeArtifactResponse_lastModifiedTime,
+    describeArtifactResponse_lineageGroupArn,
+    describeArtifactResponse_metadataProperties,
+    describeArtifactResponse_properties,
+    describeArtifactResponse_source,
+    describeArtifactResponse_httpStatus,
+
+    -- ** DescribeAutoMLJob
+    describeAutoMLJob_autoMLJobName,
+    describeAutoMLJobResponse_autoMLJobArtifacts,
+    describeAutoMLJobResponse_autoMLJobConfig,
+    describeAutoMLJobResponse_autoMLJobObjective,
+    describeAutoMLJobResponse_bestCandidate,
+    describeAutoMLJobResponse_endTime,
+    describeAutoMLJobResponse_failureReason,
+    describeAutoMLJobResponse_generateCandidateDefinitionsOnly,
+    describeAutoMLJobResponse_modelDeployConfig,
+    describeAutoMLJobResponse_modelDeployResult,
+    describeAutoMLJobResponse_partialFailureReasons,
+    describeAutoMLJobResponse_problemType,
+    describeAutoMLJobResponse_resolvedAttributes,
+    describeAutoMLJobResponse_httpStatus,
+    describeAutoMLJobResponse_autoMLJobName,
+    describeAutoMLJobResponse_autoMLJobArn,
+    describeAutoMLJobResponse_inputDataConfig,
+    describeAutoMLJobResponse_outputDataConfig,
+    describeAutoMLJobResponse_roleArn,
+    describeAutoMLJobResponse_creationTime,
+    describeAutoMLJobResponse_lastModifiedTime,
+    describeAutoMLJobResponse_autoMLJobStatus,
+    describeAutoMLJobResponse_autoMLJobSecondaryStatus,
+
+    -- ** DescribeCodeRepository
+    describeCodeRepository_codeRepositoryName,
+    describeCodeRepositoryResponse_gitConfig,
+    describeCodeRepositoryResponse_httpStatus,
+    describeCodeRepositoryResponse_codeRepositoryName,
+    describeCodeRepositoryResponse_codeRepositoryArn,
+    describeCodeRepositoryResponse_creationTime,
+    describeCodeRepositoryResponse_lastModifiedTime,
+
+    -- ** DescribeCompilationJob
+    describeCompilationJob_compilationJobName,
+    describeCompilationJobResponse_compilationEndTime,
+    describeCompilationJobResponse_compilationStartTime,
+    describeCompilationJobResponse_inferenceImage,
+    describeCompilationJobResponse_modelDigests,
+    describeCompilationJobResponse_modelPackageVersionArn,
+    describeCompilationJobResponse_vpcConfig,
+    describeCompilationJobResponse_httpStatus,
+    describeCompilationJobResponse_compilationJobName,
+    describeCompilationJobResponse_compilationJobArn,
+    describeCompilationJobResponse_compilationJobStatus,
+    describeCompilationJobResponse_stoppingCondition,
+    describeCompilationJobResponse_creationTime,
+    describeCompilationJobResponse_lastModifiedTime,
+    describeCompilationJobResponse_failureReason,
+    describeCompilationJobResponse_modelArtifacts,
+    describeCompilationJobResponse_roleArn,
+    describeCompilationJobResponse_inputConfig,
+    describeCompilationJobResponse_outputConfig,
+
+    -- ** DescribeContext
+    describeContext_contextName,
+    describeContextResponse_contextArn,
+    describeContextResponse_contextName,
+    describeContextResponse_contextType,
+    describeContextResponse_createdBy,
+    describeContextResponse_creationTime,
+    describeContextResponse_description,
+    describeContextResponse_lastModifiedBy,
+    describeContextResponse_lastModifiedTime,
+    describeContextResponse_lineageGroupArn,
+    describeContextResponse_properties,
+    describeContextResponse_source,
+    describeContextResponse_httpStatus,
+
+    -- ** DescribeDataQualityJobDefinition
+    describeDataQualityJobDefinition_jobDefinitionName,
+    describeDataQualityJobDefinitionResponse_dataQualityBaselineConfig,
+    describeDataQualityJobDefinitionResponse_networkConfig,
+    describeDataQualityJobDefinitionResponse_stoppingCondition,
+    describeDataQualityJobDefinitionResponse_httpStatus,
+    describeDataQualityJobDefinitionResponse_jobDefinitionArn,
+    describeDataQualityJobDefinitionResponse_jobDefinitionName,
+    describeDataQualityJobDefinitionResponse_creationTime,
+    describeDataQualityJobDefinitionResponse_dataQualityAppSpecification,
+    describeDataQualityJobDefinitionResponse_dataQualityJobInput,
+    describeDataQualityJobDefinitionResponse_dataQualityJobOutputConfig,
+    describeDataQualityJobDefinitionResponse_jobResources,
+    describeDataQualityJobDefinitionResponse_roleArn,
+
+    -- ** DescribeDevice
+    describeDevice_nextToken,
+    describeDevice_deviceName,
+    describeDevice_deviceFleetName,
+    describeDeviceResponse_agentVersion,
+    describeDeviceResponse_description,
+    describeDeviceResponse_deviceArn,
+    describeDeviceResponse_iotThingName,
+    describeDeviceResponse_latestHeartbeat,
+    describeDeviceResponse_maxModels,
+    describeDeviceResponse_models,
+    describeDeviceResponse_nextToken,
+    describeDeviceResponse_httpStatus,
+    describeDeviceResponse_deviceName,
+    describeDeviceResponse_deviceFleetName,
+    describeDeviceResponse_registrationTime,
+
+    -- ** DescribeDeviceFleet
+    describeDeviceFleet_deviceFleetName,
+    describeDeviceFleetResponse_description,
+    describeDeviceFleetResponse_iotRoleAlias,
+    describeDeviceFleetResponse_roleArn,
+    describeDeviceFleetResponse_httpStatus,
+    describeDeviceFleetResponse_deviceFleetName,
+    describeDeviceFleetResponse_deviceFleetArn,
+    describeDeviceFleetResponse_outputConfig,
+    describeDeviceFleetResponse_creationTime,
+    describeDeviceFleetResponse_lastModifiedTime,
+
+    -- ** DescribeDomain
+    describeDomain_domainId,
+    describeDomainResponse_appNetworkAccessType,
+    describeDomainResponse_appSecurityGroupManagement,
+    describeDomainResponse_authMode,
+    describeDomainResponse_creationTime,
+    describeDomainResponse_defaultSpaceSettings,
+    describeDomainResponse_defaultUserSettings,
+    describeDomainResponse_domainArn,
+    describeDomainResponse_domainId,
+    describeDomainResponse_domainName,
+    describeDomainResponse_domainSettings,
+    describeDomainResponse_failureReason,
+    describeDomainResponse_homeEfsFileSystemId,
+    describeDomainResponse_homeEfsFileSystemKmsKeyId,
+    describeDomainResponse_kmsKeyId,
+    describeDomainResponse_lastModifiedTime,
+    describeDomainResponse_securityGroupIdForDomainBoundary,
+    describeDomainResponse_singleSignOnManagedApplicationInstanceId,
+    describeDomainResponse_status,
+    describeDomainResponse_subnetIds,
+    describeDomainResponse_url,
+    describeDomainResponse_vpcId,
+    describeDomainResponse_httpStatus,
+
+    -- ** DescribeEdgeDeploymentPlan
+    describeEdgeDeploymentPlan_maxResults,
+    describeEdgeDeploymentPlan_nextToken,
+    describeEdgeDeploymentPlan_edgeDeploymentPlanName,
+    describeEdgeDeploymentPlanResponse_creationTime,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentFailed,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentPending,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentSuccess,
+    describeEdgeDeploymentPlanResponse_lastModifiedTime,
+    describeEdgeDeploymentPlanResponse_nextToken,
+    describeEdgeDeploymentPlanResponse_httpStatus,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentPlanArn,
+    describeEdgeDeploymentPlanResponse_edgeDeploymentPlanName,
+    describeEdgeDeploymentPlanResponse_modelConfigs,
+    describeEdgeDeploymentPlanResponse_deviceFleetName,
+    describeEdgeDeploymentPlanResponse_stages,
+
+    -- ** DescribeEdgePackagingJob
+    describeEdgePackagingJob_edgePackagingJobName,
+    describeEdgePackagingJobResponse_compilationJobName,
+    describeEdgePackagingJobResponse_creationTime,
+    describeEdgePackagingJobResponse_edgePackagingJobStatusMessage,
+    describeEdgePackagingJobResponse_lastModifiedTime,
+    describeEdgePackagingJobResponse_modelArtifact,
+    describeEdgePackagingJobResponse_modelName,
+    describeEdgePackagingJobResponse_modelSignature,
+    describeEdgePackagingJobResponse_modelVersion,
+    describeEdgePackagingJobResponse_outputConfig,
+    describeEdgePackagingJobResponse_presetDeploymentOutput,
+    describeEdgePackagingJobResponse_resourceKey,
+    describeEdgePackagingJobResponse_roleArn,
+    describeEdgePackagingJobResponse_httpStatus,
+    describeEdgePackagingJobResponse_edgePackagingJobArn,
+    describeEdgePackagingJobResponse_edgePackagingJobName,
+    describeEdgePackagingJobResponse_edgePackagingJobStatus,
+
+    -- ** DescribeEndpoint
+    describeEndpoint_endpointName,
+    describeEndpointResponse_asyncInferenceConfig,
+    describeEndpointResponse_dataCaptureConfig,
+    describeEndpointResponse_explainerConfig,
+    describeEndpointResponse_failureReason,
+    describeEndpointResponse_lastDeploymentConfig,
+    describeEndpointResponse_pendingDeploymentSummary,
+    describeEndpointResponse_productionVariants,
+    describeEndpointResponse_shadowProductionVariants,
+    describeEndpointResponse_httpStatus,
+    describeEndpointResponse_endpointName,
+    describeEndpointResponse_endpointArn,
+    describeEndpointResponse_endpointConfigName,
+    describeEndpointResponse_endpointStatus,
+    describeEndpointResponse_creationTime,
+    describeEndpointResponse_lastModifiedTime,
+
+    -- ** DescribeEndpointConfig
+    describeEndpointConfig_endpointConfigName,
+    describeEndpointConfigResponse_asyncInferenceConfig,
+    describeEndpointConfigResponse_dataCaptureConfig,
+    describeEndpointConfigResponse_explainerConfig,
+    describeEndpointConfigResponse_kmsKeyId,
+    describeEndpointConfigResponse_shadowProductionVariants,
+    describeEndpointConfigResponse_httpStatus,
+    describeEndpointConfigResponse_endpointConfigName,
+    describeEndpointConfigResponse_endpointConfigArn,
+    describeEndpointConfigResponse_productionVariants,
+    describeEndpointConfigResponse_creationTime,
+
+    -- ** DescribeExperiment
+    describeExperiment_experimentName,
+    describeExperimentResponse_createdBy,
+    describeExperimentResponse_creationTime,
+    describeExperimentResponse_description,
+    describeExperimentResponse_displayName,
+    describeExperimentResponse_experimentArn,
+    describeExperimentResponse_experimentName,
+    describeExperimentResponse_lastModifiedBy,
+    describeExperimentResponse_lastModifiedTime,
+    describeExperimentResponse_source,
+    describeExperimentResponse_httpStatus,
+
+    -- ** DescribeFeatureGroup
+    describeFeatureGroup_nextToken,
+    describeFeatureGroup_featureGroupName,
+    describeFeatureGroupResponse_description,
+    describeFeatureGroupResponse_failureReason,
+    describeFeatureGroupResponse_featureGroupStatus,
+    describeFeatureGroupResponse_lastModifiedTime,
+    describeFeatureGroupResponse_lastUpdateStatus,
+    describeFeatureGroupResponse_offlineStoreConfig,
+    describeFeatureGroupResponse_offlineStoreStatus,
+    describeFeatureGroupResponse_onlineStoreConfig,
+    describeFeatureGroupResponse_onlineStoreTotalSizeBytes,
+    describeFeatureGroupResponse_roleArn,
+    describeFeatureGroupResponse_httpStatus,
+    describeFeatureGroupResponse_featureGroupArn,
+    describeFeatureGroupResponse_featureGroupName,
+    describeFeatureGroupResponse_recordIdentifierFeatureName,
+    describeFeatureGroupResponse_eventTimeFeatureName,
+    describeFeatureGroupResponse_featureDefinitions,
+    describeFeatureGroupResponse_creationTime,
+    describeFeatureGroupResponse_nextToken,
+
+    -- ** DescribeFeatureMetadata
+    describeFeatureMetadata_featureGroupName,
+    describeFeatureMetadata_featureName,
+    describeFeatureMetadataResponse_description,
+    describeFeatureMetadataResponse_parameters,
+    describeFeatureMetadataResponse_httpStatus,
+    describeFeatureMetadataResponse_featureGroupArn,
+    describeFeatureMetadataResponse_featureGroupName,
+    describeFeatureMetadataResponse_featureName,
+    describeFeatureMetadataResponse_featureType,
+    describeFeatureMetadataResponse_creationTime,
+    describeFeatureMetadataResponse_lastModifiedTime,
+
+    -- ** DescribeFlowDefinition
+    describeFlowDefinition_flowDefinitionName,
+    describeFlowDefinitionResponse_failureReason,
+    describeFlowDefinitionResponse_humanLoopActivationConfig,
+    describeFlowDefinitionResponse_humanLoopRequestSource,
+    describeFlowDefinitionResponse_httpStatus,
+    describeFlowDefinitionResponse_flowDefinitionArn,
+    describeFlowDefinitionResponse_flowDefinitionName,
+    describeFlowDefinitionResponse_flowDefinitionStatus,
+    describeFlowDefinitionResponse_creationTime,
+    describeFlowDefinitionResponse_humanLoopConfig,
+    describeFlowDefinitionResponse_outputConfig,
+    describeFlowDefinitionResponse_roleArn,
+
+    -- ** DescribeHub
+    describeHub_hubName,
+    describeHubResponse_failureReason,
+    describeHubResponse_hubDescription,
+    describeHubResponse_hubDisplayName,
+    describeHubResponse_hubSearchKeywords,
+    describeHubResponse_s3StorageConfig,
+    describeHubResponse_httpStatus,
+    describeHubResponse_hubName,
+    describeHubResponse_hubArn,
+    describeHubResponse_hubStatus,
+    describeHubResponse_creationTime,
+    describeHubResponse_lastModifiedTime,
+
+    -- ** DescribeHubContent
+    describeHubContent_hubContentVersion,
+    describeHubContent_hubName,
+    describeHubContent_hubContentType,
+    describeHubContent_hubContentName,
+    describeHubContentResponse_failureReason,
+    describeHubContentResponse_hubContentDependencies,
+    describeHubContentResponse_hubContentDescription,
+    describeHubContentResponse_hubContentDisplayName,
+    describeHubContentResponse_hubContentMarkdown,
+    describeHubContentResponse_hubContentSearchKeywords,
+    describeHubContentResponse_httpStatus,
+    describeHubContentResponse_hubContentName,
+    describeHubContentResponse_hubContentArn,
+    describeHubContentResponse_hubContentVersion,
+    describeHubContentResponse_hubContentType,
+    describeHubContentResponse_documentSchemaVersion,
+    describeHubContentResponse_hubName,
+    describeHubContentResponse_hubArn,
+    describeHubContentResponse_hubContentDocument,
+    describeHubContentResponse_hubContentStatus,
+    describeHubContentResponse_creationTime,
+
+    -- ** DescribeHumanTaskUi
+    describeHumanTaskUi_humanTaskUiName,
+    describeHumanTaskUiResponse_humanTaskUiStatus,
+    describeHumanTaskUiResponse_httpStatus,
+    describeHumanTaskUiResponse_humanTaskUiArn,
+    describeHumanTaskUiResponse_humanTaskUiName,
+    describeHumanTaskUiResponse_creationTime,
+    describeHumanTaskUiResponse_uiTemplate,
+
+    -- ** DescribeHyperParameterTuningJob
+    describeHyperParameterTuningJob_hyperParameterTuningJobName,
+    describeHyperParameterTuningJobResponse_bestTrainingJob,
+    describeHyperParameterTuningJobResponse_failureReason,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningEndTime,
+    describeHyperParameterTuningJobResponse_lastModifiedTime,
+    describeHyperParameterTuningJobResponse_overallBestTrainingJob,
+    describeHyperParameterTuningJobResponse_trainingJobDefinition,
+    describeHyperParameterTuningJobResponse_trainingJobDefinitions,
+    describeHyperParameterTuningJobResponse_warmStartConfig,
+    describeHyperParameterTuningJobResponse_httpStatus,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobName,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobArn,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobConfig,
+    describeHyperParameterTuningJobResponse_hyperParameterTuningJobStatus,
+    describeHyperParameterTuningJobResponse_creationTime,
+    describeHyperParameterTuningJobResponse_trainingJobStatusCounters,
+    describeHyperParameterTuningJobResponse_objectiveStatusCounters,
+
+    -- ** DescribeImage
+    describeImage_imageName,
+    describeImageResponse_creationTime,
+    describeImageResponse_description,
+    describeImageResponse_displayName,
+    describeImageResponse_failureReason,
+    describeImageResponse_imageArn,
+    describeImageResponse_imageName,
+    describeImageResponse_imageStatus,
+    describeImageResponse_lastModifiedTime,
+    describeImageResponse_roleArn,
+    describeImageResponse_httpStatus,
+
+    -- ** DescribeImageVersion
+    describeImageVersion_alias,
+    describeImageVersion_version,
+    describeImageVersion_imageName,
+    describeImageVersionResponse_baseImage,
+    describeImageVersionResponse_containerImage,
+    describeImageVersionResponse_creationTime,
+    describeImageVersionResponse_failureReason,
+    describeImageVersionResponse_horovod,
+    describeImageVersionResponse_imageArn,
+    describeImageVersionResponse_imageVersionArn,
+    describeImageVersionResponse_imageVersionStatus,
+    describeImageVersionResponse_jobType,
+    describeImageVersionResponse_lastModifiedTime,
+    describeImageVersionResponse_mLFramework,
+    describeImageVersionResponse_processor,
+    describeImageVersionResponse_programmingLang,
+    describeImageVersionResponse_releaseNotes,
+    describeImageVersionResponse_vendorGuidance,
+    describeImageVersionResponse_version,
+    describeImageVersionResponse_httpStatus,
+
+    -- ** DescribeInferenceExperiment
+    describeInferenceExperiment_name,
+    describeInferenceExperimentResponse_completionTime,
+    describeInferenceExperimentResponse_creationTime,
+    describeInferenceExperimentResponse_dataStorageConfig,
+    describeInferenceExperimentResponse_description,
+    describeInferenceExperimentResponse_kmsKey,
+    describeInferenceExperimentResponse_lastModifiedTime,
+    describeInferenceExperimentResponse_roleArn,
+    describeInferenceExperimentResponse_schedule,
+    describeInferenceExperimentResponse_shadowModeConfig,
+    describeInferenceExperimentResponse_statusReason,
+    describeInferenceExperimentResponse_httpStatus,
+    describeInferenceExperimentResponse_arn,
+    describeInferenceExperimentResponse_name,
+    describeInferenceExperimentResponse_type,
+    describeInferenceExperimentResponse_status,
+    describeInferenceExperimentResponse_endpointMetadata,
+    describeInferenceExperimentResponse_modelVariants,
+
+    -- ** DescribeInferenceRecommendationsJob
+    describeInferenceRecommendationsJob_jobName,
+    describeInferenceRecommendationsJobResponse_completionTime,
+    describeInferenceRecommendationsJobResponse_endpointPerformances,
+    describeInferenceRecommendationsJobResponse_failureReason,
+    describeInferenceRecommendationsJobResponse_inferenceRecommendations,
+    describeInferenceRecommendationsJobResponse_jobDescription,
+    describeInferenceRecommendationsJobResponse_stoppingConditions,
+    describeInferenceRecommendationsJobResponse_httpStatus,
+    describeInferenceRecommendationsJobResponse_jobName,
+    describeInferenceRecommendationsJobResponse_jobType,
+    describeInferenceRecommendationsJobResponse_jobArn,
+    describeInferenceRecommendationsJobResponse_roleArn,
+    describeInferenceRecommendationsJobResponse_status,
+    describeInferenceRecommendationsJobResponse_creationTime,
+    describeInferenceRecommendationsJobResponse_lastModifiedTime,
+    describeInferenceRecommendationsJobResponse_inputConfig,
+
+    -- ** DescribeLabelingJob
+    describeLabelingJob_labelingJobName,
+    describeLabelingJobResponse_failureReason,
+    describeLabelingJobResponse_labelAttributeName,
+    describeLabelingJobResponse_labelCategoryConfigS3Uri,
+    describeLabelingJobResponse_labelingJobAlgorithmsConfig,
+    describeLabelingJobResponse_labelingJobOutput,
+    describeLabelingJobResponse_stoppingConditions,
+    describeLabelingJobResponse_tags,
+    describeLabelingJobResponse_httpStatus,
+    describeLabelingJobResponse_labelingJobStatus,
+    describeLabelingJobResponse_labelCounters,
+    describeLabelingJobResponse_creationTime,
+    describeLabelingJobResponse_lastModifiedTime,
+    describeLabelingJobResponse_jobReferenceCode,
+    describeLabelingJobResponse_labelingJobName,
+    describeLabelingJobResponse_labelingJobArn,
+    describeLabelingJobResponse_inputConfig,
+    describeLabelingJobResponse_outputConfig,
+    describeLabelingJobResponse_roleArn,
+    describeLabelingJobResponse_humanTaskConfig,
+
+    -- ** DescribeLineageGroup
+    describeLineageGroup_lineageGroupName,
+    describeLineageGroupResponse_createdBy,
+    describeLineageGroupResponse_creationTime,
+    describeLineageGroupResponse_description,
+    describeLineageGroupResponse_displayName,
+    describeLineageGroupResponse_lastModifiedBy,
+    describeLineageGroupResponse_lastModifiedTime,
+    describeLineageGroupResponse_lineageGroupArn,
+    describeLineageGroupResponse_lineageGroupName,
+    describeLineageGroupResponse_httpStatus,
+
+    -- ** DescribeModel
+    describeModel_modelName,
+    describeModelResponse_containers,
+    describeModelResponse_enableNetworkIsolation,
+    describeModelResponse_inferenceExecutionConfig,
+    describeModelResponse_primaryContainer,
+    describeModelResponse_vpcConfig,
+    describeModelResponse_httpStatus,
+    describeModelResponse_modelName,
+    describeModelResponse_executionRoleArn,
+    describeModelResponse_creationTime,
+    describeModelResponse_modelArn,
+
+    -- ** DescribeModelBiasJobDefinition
+    describeModelBiasJobDefinition_jobDefinitionName,
+    describeModelBiasJobDefinitionResponse_modelBiasBaselineConfig,
+    describeModelBiasJobDefinitionResponse_networkConfig,
+    describeModelBiasJobDefinitionResponse_stoppingCondition,
+    describeModelBiasJobDefinitionResponse_httpStatus,
+    describeModelBiasJobDefinitionResponse_jobDefinitionArn,
+    describeModelBiasJobDefinitionResponse_jobDefinitionName,
+    describeModelBiasJobDefinitionResponse_creationTime,
+    describeModelBiasJobDefinitionResponse_modelBiasAppSpecification,
+    describeModelBiasJobDefinitionResponse_modelBiasJobInput,
+    describeModelBiasJobDefinitionResponse_modelBiasJobOutputConfig,
+    describeModelBiasJobDefinitionResponse_jobResources,
+    describeModelBiasJobDefinitionResponse_roleArn,
+
+    -- ** DescribeModelCard
+    describeModelCard_modelCardVersion,
+    describeModelCard_modelCardName,
+    describeModelCardResponse_lastModifiedBy,
+    describeModelCardResponse_lastModifiedTime,
+    describeModelCardResponse_modelCardProcessingStatus,
+    describeModelCardResponse_securityConfig,
+    describeModelCardResponse_httpStatus,
+    describeModelCardResponse_modelCardArn,
+    describeModelCardResponse_modelCardName,
+    describeModelCardResponse_modelCardVersion,
+    describeModelCardResponse_content,
+    describeModelCardResponse_modelCardStatus,
+    describeModelCardResponse_creationTime,
+    describeModelCardResponse_createdBy,
+
+    -- ** DescribeModelCardExportJob
+    describeModelCardExportJob_modelCardExportJobArn,
+    describeModelCardExportJobResponse_exportArtifacts,
+    describeModelCardExportJobResponse_failureReason,
+    describeModelCardExportJobResponse_httpStatus,
+    describeModelCardExportJobResponse_modelCardExportJobName,
+    describeModelCardExportJobResponse_modelCardExportJobArn,
+    describeModelCardExportJobResponse_status,
+    describeModelCardExportJobResponse_modelCardName,
+    describeModelCardExportJobResponse_modelCardVersion,
+    describeModelCardExportJobResponse_outputConfig,
+    describeModelCardExportJobResponse_createdAt,
+    describeModelCardExportJobResponse_lastModifiedAt,
+
+    -- ** DescribeModelExplainabilityJobDefinition
+    describeModelExplainabilityJobDefinition_jobDefinitionName,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityBaselineConfig,
+    describeModelExplainabilityJobDefinitionResponse_networkConfig,
+    describeModelExplainabilityJobDefinitionResponse_stoppingCondition,
+    describeModelExplainabilityJobDefinitionResponse_httpStatus,
+    describeModelExplainabilityJobDefinitionResponse_jobDefinitionArn,
+    describeModelExplainabilityJobDefinitionResponse_jobDefinitionName,
+    describeModelExplainabilityJobDefinitionResponse_creationTime,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityAppSpecification,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobInput,
+    describeModelExplainabilityJobDefinitionResponse_modelExplainabilityJobOutputConfig,
+    describeModelExplainabilityJobDefinitionResponse_jobResources,
+    describeModelExplainabilityJobDefinitionResponse_roleArn,
+
+    -- ** DescribeModelPackage
+    describeModelPackage_modelPackageName,
+    describeModelPackageResponse_additionalInferenceSpecifications,
+    describeModelPackageResponse_approvalDescription,
+    describeModelPackageResponse_certifyForMarketplace,
+    describeModelPackageResponse_createdBy,
+    describeModelPackageResponse_customerMetadataProperties,
+    describeModelPackageResponse_domain,
+    describeModelPackageResponse_driftCheckBaselines,
+    describeModelPackageResponse_inferenceSpecification,
+    describeModelPackageResponse_lastModifiedBy,
+    describeModelPackageResponse_lastModifiedTime,
+    describeModelPackageResponse_metadataProperties,
+    describeModelPackageResponse_modelApprovalStatus,
+    describeModelPackageResponse_modelMetrics,
+    describeModelPackageResponse_modelPackageDescription,
+    describeModelPackageResponse_modelPackageGroupName,
+    describeModelPackageResponse_modelPackageVersion,
+    describeModelPackageResponse_samplePayloadUrl,
+    describeModelPackageResponse_sourceAlgorithmSpecification,
+    describeModelPackageResponse_task,
+    describeModelPackageResponse_validationSpecification,
+    describeModelPackageResponse_httpStatus,
+    describeModelPackageResponse_modelPackageName,
+    describeModelPackageResponse_modelPackageArn,
+    describeModelPackageResponse_creationTime,
+    describeModelPackageResponse_modelPackageStatus,
+    describeModelPackageResponse_modelPackageStatusDetails,
+
+    -- ** DescribeModelPackageGroup
+    describeModelPackageGroup_modelPackageGroupName,
+    describeModelPackageGroupResponse_modelPackageGroupDescription,
+    describeModelPackageGroupResponse_httpStatus,
+    describeModelPackageGroupResponse_modelPackageGroupName,
+    describeModelPackageGroupResponse_modelPackageGroupArn,
+    describeModelPackageGroupResponse_creationTime,
+    describeModelPackageGroupResponse_createdBy,
+    describeModelPackageGroupResponse_modelPackageGroupStatus,
+
+    -- ** DescribeModelQualityJobDefinition
+    describeModelQualityJobDefinition_jobDefinitionName,
+    describeModelQualityJobDefinitionResponse_modelQualityBaselineConfig,
+    describeModelQualityJobDefinitionResponse_networkConfig,
+    describeModelQualityJobDefinitionResponse_stoppingCondition,
+    describeModelQualityJobDefinitionResponse_httpStatus,
+    describeModelQualityJobDefinitionResponse_jobDefinitionArn,
+    describeModelQualityJobDefinitionResponse_jobDefinitionName,
+    describeModelQualityJobDefinitionResponse_creationTime,
+    describeModelQualityJobDefinitionResponse_modelQualityAppSpecification,
+    describeModelQualityJobDefinitionResponse_modelQualityJobInput,
+    describeModelQualityJobDefinitionResponse_modelQualityJobOutputConfig,
+    describeModelQualityJobDefinitionResponse_jobResources,
+    describeModelQualityJobDefinitionResponse_roleArn,
+
+    -- ** DescribeMonitoringSchedule
+    describeMonitoringSchedule_monitoringScheduleName,
+    describeMonitoringScheduleResponse_endpointName,
+    describeMonitoringScheduleResponse_failureReason,
+    describeMonitoringScheduleResponse_lastMonitoringExecutionSummary,
+    describeMonitoringScheduleResponse_monitoringType,
+    describeMonitoringScheduleResponse_httpStatus,
+    describeMonitoringScheduleResponse_monitoringScheduleArn,
+    describeMonitoringScheduleResponse_monitoringScheduleName,
+    describeMonitoringScheduleResponse_monitoringScheduleStatus,
+    describeMonitoringScheduleResponse_creationTime,
+    describeMonitoringScheduleResponse_lastModifiedTime,
+    describeMonitoringScheduleResponse_monitoringScheduleConfig,
+
+    -- ** DescribeNotebookInstance
+    describeNotebookInstance_notebookInstanceName,
+    describeNotebookInstanceResponse_acceleratorTypes,
+    describeNotebookInstanceResponse_additionalCodeRepositories,
+    describeNotebookInstanceResponse_creationTime,
+    describeNotebookInstanceResponse_defaultCodeRepository,
+    describeNotebookInstanceResponse_directInternetAccess,
+    describeNotebookInstanceResponse_failureReason,
+    describeNotebookInstanceResponse_instanceMetadataServiceConfiguration,
+    describeNotebookInstanceResponse_instanceType,
+    describeNotebookInstanceResponse_kmsKeyId,
+    describeNotebookInstanceResponse_lastModifiedTime,
+    describeNotebookInstanceResponse_networkInterfaceId,
+    describeNotebookInstanceResponse_notebookInstanceArn,
+    describeNotebookInstanceResponse_notebookInstanceLifecycleConfigName,
+    describeNotebookInstanceResponse_notebookInstanceName,
+    describeNotebookInstanceResponse_notebookInstanceStatus,
+    describeNotebookInstanceResponse_platformIdentifier,
+    describeNotebookInstanceResponse_roleArn,
+    describeNotebookInstanceResponse_rootAccess,
+    describeNotebookInstanceResponse_securityGroups,
+    describeNotebookInstanceResponse_subnetId,
+    describeNotebookInstanceResponse_url,
+    describeNotebookInstanceResponse_volumeSizeInGB,
+    describeNotebookInstanceResponse_httpStatus,
+
+    -- ** DescribeNotebookInstanceLifecycleConfig
+    describeNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+    describeNotebookInstanceLifecycleConfigResponse_creationTime,
+    describeNotebookInstanceLifecycleConfigResponse_lastModifiedTime,
+    describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigArn,
+    describeNotebookInstanceLifecycleConfigResponse_notebookInstanceLifecycleConfigName,
+    describeNotebookInstanceLifecycleConfigResponse_onCreate,
+    describeNotebookInstanceLifecycleConfigResponse_onStart,
+    describeNotebookInstanceLifecycleConfigResponse_httpStatus,
+
+    -- ** DescribePipeline
+    describePipeline_pipelineName,
+    describePipelineResponse_createdBy,
+    describePipelineResponse_creationTime,
+    describePipelineResponse_lastModifiedBy,
+    describePipelineResponse_lastModifiedTime,
+    describePipelineResponse_lastRunTime,
+    describePipelineResponse_parallelismConfiguration,
+    describePipelineResponse_pipelineArn,
+    describePipelineResponse_pipelineDefinition,
+    describePipelineResponse_pipelineDescription,
+    describePipelineResponse_pipelineDisplayName,
+    describePipelineResponse_pipelineName,
+    describePipelineResponse_pipelineStatus,
+    describePipelineResponse_roleArn,
+    describePipelineResponse_httpStatus,
+
+    -- ** DescribePipelineDefinitionForExecution
+    describePipelineDefinitionForExecution_pipelineExecutionArn,
+    describePipelineDefinitionForExecutionResponse_creationTime,
+    describePipelineDefinitionForExecutionResponse_pipelineDefinition,
+    describePipelineDefinitionForExecutionResponse_httpStatus,
+
+    -- ** DescribePipelineExecution
+    describePipelineExecution_pipelineExecutionArn,
+    describePipelineExecutionResponse_createdBy,
+    describePipelineExecutionResponse_creationTime,
+    describePipelineExecutionResponse_failureReason,
+    describePipelineExecutionResponse_lastModifiedBy,
+    describePipelineExecutionResponse_lastModifiedTime,
+    describePipelineExecutionResponse_parallelismConfiguration,
+    describePipelineExecutionResponse_pipelineArn,
+    describePipelineExecutionResponse_pipelineExecutionArn,
+    describePipelineExecutionResponse_pipelineExecutionDescription,
+    describePipelineExecutionResponse_pipelineExecutionDisplayName,
+    describePipelineExecutionResponse_pipelineExecutionStatus,
+    describePipelineExecutionResponse_pipelineExperimentConfig,
+    describePipelineExecutionResponse_httpStatus,
+
+    -- ** DescribeProcessingJob
+    describeProcessingJob_processingJobName,
+    describeProcessingJobResponse_autoMLJobArn,
+    describeProcessingJobResponse_environment,
+    describeProcessingJobResponse_exitMessage,
+    describeProcessingJobResponse_experimentConfig,
+    describeProcessingJobResponse_failureReason,
+    describeProcessingJobResponse_lastModifiedTime,
+    describeProcessingJobResponse_monitoringScheduleArn,
+    describeProcessingJobResponse_networkConfig,
+    describeProcessingJobResponse_processingEndTime,
+    describeProcessingJobResponse_processingInputs,
+    describeProcessingJobResponse_processingOutputConfig,
+    describeProcessingJobResponse_processingStartTime,
+    describeProcessingJobResponse_roleArn,
+    describeProcessingJobResponse_stoppingCondition,
+    describeProcessingJobResponse_trainingJobArn,
+    describeProcessingJobResponse_httpStatus,
+    describeProcessingJobResponse_processingJobName,
+    describeProcessingJobResponse_processingResources,
+    describeProcessingJobResponse_appSpecification,
+    describeProcessingJobResponse_processingJobArn,
+    describeProcessingJobResponse_processingJobStatus,
+    describeProcessingJobResponse_creationTime,
+
+    -- ** DescribeProject
+    describeProject_projectName,
+    describeProjectResponse_createdBy,
+    describeProjectResponse_lastModifiedBy,
+    describeProjectResponse_lastModifiedTime,
+    describeProjectResponse_projectDescription,
+    describeProjectResponse_serviceCatalogProvisionedProductDetails,
+    describeProjectResponse_httpStatus,
+    describeProjectResponse_projectArn,
+    describeProjectResponse_projectName,
+    describeProjectResponse_projectId,
+    describeProjectResponse_serviceCatalogProvisioningDetails,
+    describeProjectResponse_projectStatus,
+    describeProjectResponse_creationTime,
+
+    -- ** DescribeSpace
+    describeSpace_domainId,
+    describeSpace_spaceName,
+    describeSpaceResponse_creationTime,
+    describeSpaceResponse_domainId,
+    describeSpaceResponse_failureReason,
+    describeSpaceResponse_homeEfsFileSystemUid,
+    describeSpaceResponse_lastModifiedTime,
+    describeSpaceResponse_spaceArn,
+    describeSpaceResponse_spaceName,
+    describeSpaceResponse_spaceSettings,
+    describeSpaceResponse_status,
+    describeSpaceResponse_httpStatus,
+
+    -- ** DescribeStudioLifecycleConfig
+    describeStudioLifecycleConfig_studioLifecycleConfigName,
+    describeStudioLifecycleConfigResponse_creationTime,
+    describeStudioLifecycleConfigResponse_lastModifiedTime,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigAppType,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigArn,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigContent,
+    describeStudioLifecycleConfigResponse_studioLifecycleConfigName,
+    describeStudioLifecycleConfigResponse_httpStatus,
+
+    -- ** DescribeSubscribedWorkteam
+    describeSubscribedWorkteam_workteamArn,
+    describeSubscribedWorkteamResponse_httpStatus,
+    describeSubscribedWorkteamResponse_subscribedWorkteam,
+
+    -- ** DescribeTrainingJob
+    describeTrainingJob_trainingJobName,
+    describeTrainingJobResponse_autoMLJobArn,
+    describeTrainingJobResponse_billableTimeInSeconds,
+    describeTrainingJobResponse_checkpointConfig,
+    describeTrainingJobResponse_debugHookConfig,
+    describeTrainingJobResponse_debugRuleConfigurations,
+    describeTrainingJobResponse_debugRuleEvaluationStatuses,
+    describeTrainingJobResponse_enableInterContainerTrafficEncryption,
+    describeTrainingJobResponse_enableManagedSpotTraining,
+    describeTrainingJobResponse_enableNetworkIsolation,
+    describeTrainingJobResponse_environment,
+    describeTrainingJobResponse_experimentConfig,
+    describeTrainingJobResponse_failureReason,
+    describeTrainingJobResponse_finalMetricDataList,
+    describeTrainingJobResponse_hyperParameters,
+    describeTrainingJobResponse_inputDataConfig,
+    describeTrainingJobResponse_labelingJobArn,
+    describeTrainingJobResponse_lastModifiedTime,
+    describeTrainingJobResponse_outputDataConfig,
+    describeTrainingJobResponse_profilerConfig,
+    describeTrainingJobResponse_profilerRuleConfigurations,
+    describeTrainingJobResponse_profilerRuleEvaluationStatuses,
+    describeTrainingJobResponse_profilingStatus,
+    describeTrainingJobResponse_retryStrategy,
+    describeTrainingJobResponse_roleArn,
+    describeTrainingJobResponse_secondaryStatusTransitions,
+    describeTrainingJobResponse_tensorBoardOutputConfig,
+    describeTrainingJobResponse_trainingEndTime,
+    describeTrainingJobResponse_trainingStartTime,
+    describeTrainingJobResponse_trainingTimeInSeconds,
+    describeTrainingJobResponse_tuningJobArn,
+    describeTrainingJobResponse_vpcConfig,
+    describeTrainingJobResponse_warmPoolStatus,
+    describeTrainingJobResponse_httpStatus,
+    describeTrainingJobResponse_trainingJobName,
+    describeTrainingJobResponse_trainingJobArn,
+    describeTrainingJobResponse_modelArtifacts,
+    describeTrainingJobResponse_trainingJobStatus,
+    describeTrainingJobResponse_secondaryStatus,
+    describeTrainingJobResponse_algorithmSpecification,
+    describeTrainingJobResponse_resourceConfig,
+    describeTrainingJobResponse_stoppingCondition,
+    describeTrainingJobResponse_creationTime,
+
+    -- ** DescribeTransformJob
+    describeTransformJob_transformJobName,
+    describeTransformJobResponse_autoMLJobArn,
+    describeTransformJobResponse_batchStrategy,
+    describeTransformJobResponse_dataCaptureConfig,
+    describeTransformJobResponse_dataProcessing,
+    describeTransformJobResponse_environment,
+    describeTransformJobResponse_experimentConfig,
+    describeTransformJobResponse_failureReason,
+    describeTransformJobResponse_labelingJobArn,
+    describeTransformJobResponse_maxConcurrentTransforms,
+    describeTransformJobResponse_maxPayloadInMB,
+    describeTransformJobResponse_modelClientConfig,
+    describeTransformJobResponse_transformEndTime,
+    describeTransformJobResponse_transformOutput,
+    describeTransformJobResponse_transformStartTime,
+    describeTransformJobResponse_httpStatus,
+    describeTransformJobResponse_transformJobName,
+    describeTransformJobResponse_transformJobArn,
+    describeTransformJobResponse_transformJobStatus,
+    describeTransformJobResponse_modelName,
+    describeTransformJobResponse_transformInput,
+    describeTransformJobResponse_transformResources,
+    describeTransformJobResponse_creationTime,
+
+    -- ** DescribeTrial
+    describeTrial_trialName,
+    describeTrialResponse_createdBy,
+    describeTrialResponse_creationTime,
+    describeTrialResponse_displayName,
+    describeTrialResponse_experimentName,
+    describeTrialResponse_lastModifiedBy,
+    describeTrialResponse_lastModifiedTime,
+    describeTrialResponse_metadataProperties,
+    describeTrialResponse_source,
+    describeTrialResponse_trialArn,
+    describeTrialResponse_trialName,
+    describeTrialResponse_httpStatus,
+
+    -- ** DescribeTrialComponent
+    describeTrialComponent_trialComponentName,
+    describeTrialComponentResponse_createdBy,
+    describeTrialComponentResponse_creationTime,
+    describeTrialComponentResponse_displayName,
+    describeTrialComponentResponse_endTime,
+    describeTrialComponentResponse_inputArtifacts,
+    describeTrialComponentResponse_lastModifiedBy,
+    describeTrialComponentResponse_lastModifiedTime,
+    describeTrialComponentResponse_lineageGroupArn,
+    describeTrialComponentResponse_metadataProperties,
+    describeTrialComponentResponse_metrics,
+    describeTrialComponentResponse_outputArtifacts,
+    describeTrialComponentResponse_parameters,
+    describeTrialComponentResponse_source,
+    describeTrialComponentResponse_sources,
+    describeTrialComponentResponse_startTime,
+    describeTrialComponentResponse_status,
+    describeTrialComponentResponse_trialComponentArn,
+    describeTrialComponentResponse_trialComponentName,
+    describeTrialComponentResponse_httpStatus,
+
+    -- ** DescribeUserProfile
+    describeUserProfile_domainId,
+    describeUserProfile_userProfileName,
+    describeUserProfileResponse_creationTime,
+    describeUserProfileResponse_domainId,
+    describeUserProfileResponse_failureReason,
+    describeUserProfileResponse_homeEfsFileSystemUid,
+    describeUserProfileResponse_lastModifiedTime,
+    describeUserProfileResponse_singleSignOnUserIdentifier,
+    describeUserProfileResponse_singleSignOnUserValue,
+    describeUserProfileResponse_status,
+    describeUserProfileResponse_userProfileArn,
+    describeUserProfileResponse_userProfileName,
+    describeUserProfileResponse_userSettings,
+    describeUserProfileResponse_httpStatus,
+
+    -- ** DescribeWorkforce
+    describeWorkforce_workforceName,
+    describeWorkforceResponse_httpStatus,
+    describeWorkforceResponse_workforce,
+
+    -- ** DescribeWorkteam
+    describeWorkteam_workteamName,
+    describeWorkteamResponse_httpStatus,
+    describeWorkteamResponse_workteam,
+
+    -- ** DisableSagemakerServicecatalogPortfolio
+    disableSagemakerServicecatalogPortfolioResponse_httpStatus,
+
+    -- ** DisassociateTrialComponent
+    disassociateTrialComponent_trialComponentName,
+    disassociateTrialComponent_trialName,
+    disassociateTrialComponentResponse_trialArn,
+    disassociateTrialComponentResponse_trialComponentArn,
+    disassociateTrialComponentResponse_httpStatus,
+
+    -- ** EnableSagemakerServicecatalogPortfolio
+    enableSagemakerServicecatalogPortfolioResponse_httpStatus,
+
+    -- ** GetDeviceFleetReport
+    getDeviceFleetReport_deviceFleetName,
+    getDeviceFleetReportResponse_agentVersions,
+    getDeviceFleetReportResponse_description,
+    getDeviceFleetReportResponse_deviceStats,
+    getDeviceFleetReportResponse_modelStats,
+    getDeviceFleetReportResponse_outputConfig,
+    getDeviceFleetReportResponse_reportGenerated,
+    getDeviceFleetReportResponse_httpStatus,
+    getDeviceFleetReportResponse_deviceFleetArn,
+    getDeviceFleetReportResponse_deviceFleetName,
+
+    -- ** GetLineageGroupPolicy
+    getLineageGroupPolicy_lineageGroupName,
+    getLineageGroupPolicyResponse_lineageGroupArn,
+    getLineageGroupPolicyResponse_resourcePolicy,
+    getLineageGroupPolicyResponse_httpStatus,
+
+    -- ** GetModelPackageGroupPolicy
+    getModelPackageGroupPolicy_modelPackageGroupName,
+    getModelPackageGroupPolicyResponse_httpStatus,
+    getModelPackageGroupPolicyResponse_resourcePolicy,
+
+    -- ** GetSagemakerServicecatalogPortfolioStatus
+    getSagemakerServicecatalogPortfolioStatusResponse_status,
+    getSagemakerServicecatalogPortfolioStatusResponse_httpStatus,
+
+    -- ** GetSearchSuggestions
+    getSearchSuggestions_suggestionQuery,
+    getSearchSuggestions_resource,
+    getSearchSuggestionsResponse_propertyNameSuggestions,
+    getSearchSuggestionsResponse_httpStatus,
+
+    -- ** ImportHubContent
+    importHubContent_hubContentDescription,
+    importHubContent_hubContentDisplayName,
+    importHubContent_hubContentMarkdown,
+    importHubContent_hubContentSearchKeywords,
+    importHubContent_hubContentVersion,
+    importHubContent_tags,
+    importHubContent_hubContentName,
+    importHubContent_hubContentType,
+    importHubContent_documentSchemaVersion,
+    importHubContent_hubName,
+    importHubContent_hubContentDocument,
+    importHubContentResponse_httpStatus,
+    importHubContentResponse_hubArn,
+    importHubContentResponse_hubContentArn,
+
+    -- ** ListActions
+    listActions_actionType,
+    listActions_createdAfter,
+    listActions_createdBefore,
+    listActions_maxResults,
+    listActions_nextToken,
+    listActions_sortBy,
+    listActions_sortOrder,
+    listActions_sourceUri,
+    listActionsResponse_actionSummaries,
+    listActionsResponse_nextToken,
+    listActionsResponse_httpStatus,
+
+    -- ** ListAlgorithms
+    listAlgorithms_creationTimeAfter,
+    listAlgorithms_creationTimeBefore,
+    listAlgorithms_maxResults,
+    listAlgorithms_nameContains,
+    listAlgorithms_nextToken,
+    listAlgorithms_sortBy,
+    listAlgorithms_sortOrder,
+    listAlgorithmsResponse_nextToken,
+    listAlgorithmsResponse_httpStatus,
+    listAlgorithmsResponse_algorithmSummaryList,
+
+    -- ** ListAliases
+    listAliases_alias,
+    listAliases_maxResults,
+    listAliases_nextToken,
+    listAliases_version,
+    listAliases_imageName,
+    listAliasesResponse_nextToken,
+    listAliasesResponse_sageMakerImageVersionAliases,
+    listAliasesResponse_httpStatus,
+
+    -- ** ListAppImageConfigs
+    listAppImageConfigs_creationTimeAfter,
+    listAppImageConfigs_creationTimeBefore,
+    listAppImageConfigs_maxResults,
+    listAppImageConfigs_modifiedTimeAfter,
+    listAppImageConfigs_modifiedTimeBefore,
+    listAppImageConfigs_nameContains,
+    listAppImageConfigs_nextToken,
+    listAppImageConfigs_sortBy,
+    listAppImageConfigs_sortOrder,
+    listAppImageConfigsResponse_appImageConfigs,
+    listAppImageConfigsResponse_nextToken,
+    listAppImageConfigsResponse_httpStatus,
+
+    -- ** ListApps
+    listApps_domainIdEquals,
+    listApps_maxResults,
+    listApps_nextToken,
+    listApps_sortBy,
+    listApps_sortOrder,
+    listApps_spaceNameEquals,
+    listApps_userProfileNameEquals,
+    listAppsResponse_apps,
+    listAppsResponse_nextToken,
+    listAppsResponse_httpStatus,
+
+    -- ** ListArtifacts
+    listArtifacts_artifactType,
+    listArtifacts_createdAfter,
+    listArtifacts_createdBefore,
+    listArtifacts_maxResults,
+    listArtifacts_nextToken,
+    listArtifacts_sortBy,
+    listArtifacts_sortOrder,
+    listArtifacts_sourceUri,
+    listArtifactsResponse_artifactSummaries,
+    listArtifactsResponse_nextToken,
+    listArtifactsResponse_httpStatus,
+
+    -- ** ListAssociations
+    listAssociations_associationType,
+    listAssociations_createdAfter,
+    listAssociations_createdBefore,
+    listAssociations_destinationArn,
+    listAssociations_destinationType,
+    listAssociations_maxResults,
+    listAssociations_nextToken,
+    listAssociations_sortBy,
+    listAssociations_sortOrder,
+    listAssociations_sourceArn,
+    listAssociations_sourceType,
+    listAssociationsResponse_associationSummaries,
+    listAssociationsResponse_nextToken,
+    listAssociationsResponse_httpStatus,
+
+    -- ** ListAutoMLJobs
+    listAutoMLJobs_creationTimeAfter,
+    listAutoMLJobs_creationTimeBefore,
+    listAutoMLJobs_lastModifiedTimeAfter,
+    listAutoMLJobs_lastModifiedTimeBefore,
+    listAutoMLJobs_maxResults,
+    listAutoMLJobs_nameContains,
+    listAutoMLJobs_nextToken,
+    listAutoMLJobs_sortBy,
+    listAutoMLJobs_sortOrder,
+    listAutoMLJobs_statusEquals,
+    listAutoMLJobsResponse_nextToken,
+    listAutoMLJobsResponse_httpStatus,
+    listAutoMLJobsResponse_autoMLJobSummaries,
+
+    -- ** ListCandidatesForAutoMLJob
+    listCandidatesForAutoMLJob_candidateNameEquals,
+    listCandidatesForAutoMLJob_maxResults,
+    listCandidatesForAutoMLJob_nextToken,
+    listCandidatesForAutoMLJob_sortBy,
+    listCandidatesForAutoMLJob_sortOrder,
+    listCandidatesForAutoMLJob_statusEquals,
+    listCandidatesForAutoMLJob_autoMLJobName,
+    listCandidatesForAutoMLJobResponse_nextToken,
+    listCandidatesForAutoMLJobResponse_httpStatus,
+    listCandidatesForAutoMLJobResponse_candidates,
+
+    -- ** ListCodeRepositories
+    listCodeRepositories_creationTimeAfter,
+    listCodeRepositories_creationTimeBefore,
+    listCodeRepositories_lastModifiedTimeAfter,
+    listCodeRepositories_lastModifiedTimeBefore,
+    listCodeRepositories_maxResults,
+    listCodeRepositories_nameContains,
+    listCodeRepositories_nextToken,
+    listCodeRepositories_sortBy,
+    listCodeRepositories_sortOrder,
+    listCodeRepositoriesResponse_nextToken,
+    listCodeRepositoriesResponse_httpStatus,
+    listCodeRepositoriesResponse_codeRepositorySummaryList,
+
+    -- ** ListCompilationJobs
+    listCompilationJobs_creationTimeAfter,
+    listCompilationJobs_creationTimeBefore,
+    listCompilationJobs_lastModifiedTimeAfter,
+    listCompilationJobs_lastModifiedTimeBefore,
+    listCompilationJobs_maxResults,
+    listCompilationJobs_nameContains,
+    listCompilationJobs_nextToken,
+    listCompilationJobs_sortBy,
+    listCompilationJobs_sortOrder,
+    listCompilationJobs_statusEquals,
+    listCompilationJobsResponse_nextToken,
+    listCompilationJobsResponse_httpStatus,
+    listCompilationJobsResponse_compilationJobSummaries,
+
+    -- ** ListContexts
+    listContexts_contextType,
+    listContexts_createdAfter,
+    listContexts_createdBefore,
+    listContexts_maxResults,
+    listContexts_nextToken,
+    listContexts_sortBy,
+    listContexts_sortOrder,
+    listContexts_sourceUri,
+    listContextsResponse_contextSummaries,
+    listContextsResponse_nextToken,
+    listContextsResponse_httpStatus,
+
+    -- ** ListDataQualityJobDefinitions
+    listDataQualityJobDefinitions_creationTimeAfter,
+    listDataQualityJobDefinitions_creationTimeBefore,
+    listDataQualityJobDefinitions_endpointName,
+    listDataQualityJobDefinitions_maxResults,
+    listDataQualityJobDefinitions_nameContains,
+    listDataQualityJobDefinitions_nextToken,
+    listDataQualityJobDefinitions_sortBy,
+    listDataQualityJobDefinitions_sortOrder,
+    listDataQualityJobDefinitionsResponse_nextToken,
+    listDataQualityJobDefinitionsResponse_httpStatus,
+    listDataQualityJobDefinitionsResponse_jobDefinitionSummaries,
+
+    -- ** ListDeviceFleets
+    listDeviceFleets_creationTimeAfter,
+    listDeviceFleets_creationTimeBefore,
+    listDeviceFleets_lastModifiedTimeAfter,
+    listDeviceFleets_lastModifiedTimeBefore,
+    listDeviceFleets_maxResults,
+    listDeviceFleets_nameContains,
+    listDeviceFleets_nextToken,
+    listDeviceFleets_sortBy,
+    listDeviceFleets_sortOrder,
+    listDeviceFleetsResponse_nextToken,
+    listDeviceFleetsResponse_httpStatus,
+    listDeviceFleetsResponse_deviceFleetSummaries,
+
+    -- ** ListDevices
+    listDevices_deviceFleetName,
+    listDevices_latestHeartbeatAfter,
+    listDevices_maxResults,
+    listDevices_modelName,
+    listDevices_nextToken,
+    listDevicesResponse_nextToken,
+    listDevicesResponse_httpStatus,
+    listDevicesResponse_deviceSummaries,
+
+    -- ** ListDomains
+    listDomains_maxResults,
+    listDomains_nextToken,
+    listDomainsResponse_domains,
+    listDomainsResponse_nextToken,
+    listDomainsResponse_httpStatus,
+
+    -- ** ListEdgeDeploymentPlans
+    listEdgeDeploymentPlans_creationTimeAfter,
+    listEdgeDeploymentPlans_creationTimeBefore,
+    listEdgeDeploymentPlans_deviceFleetNameContains,
+    listEdgeDeploymentPlans_lastModifiedTimeAfter,
+    listEdgeDeploymentPlans_lastModifiedTimeBefore,
+    listEdgeDeploymentPlans_maxResults,
+    listEdgeDeploymentPlans_nameContains,
+    listEdgeDeploymentPlans_nextToken,
+    listEdgeDeploymentPlans_sortBy,
+    listEdgeDeploymentPlans_sortOrder,
+    listEdgeDeploymentPlansResponse_nextToken,
+    listEdgeDeploymentPlansResponse_httpStatus,
+    listEdgeDeploymentPlansResponse_edgeDeploymentPlanSummaries,
+
+    -- ** ListEdgePackagingJobs
+    listEdgePackagingJobs_creationTimeAfter,
+    listEdgePackagingJobs_creationTimeBefore,
+    listEdgePackagingJobs_lastModifiedTimeAfter,
+    listEdgePackagingJobs_lastModifiedTimeBefore,
+    listEdgePackagingJobs_maxResults,
+    listEdgePackagingJobs_modelNameContains,
+    listEdgePackagingJobs_nameContains,
+    listEdgePackagingJobs_nextToken,
+    listEdgePackagingJobs_sortBy,
+    listEdgePackagingJobs_sortOrder,
+    listEdgePackagingJobs_statusEquals,
+    listEdgePackagingJobsResponse_nextToken,
+    listEdgePackagingJobsResponse_httpStatus,
+    listEdgePackagingJobsResponse_edgePackagingJobSummaries,
+
+    -- ** ListEndpointConfigs
+    listEndpointConfigs_creationTimeAfter,
+    listEndpointConfigs_creationTimeBefore,
+    listEndpointConfigs_maxResults,
+    listEndpointConfigs_nameContains,
+    listEndpointConfigs_nextToken,
+    listEndpointConfigs_sortBy,
+    listEndpointConfigs_sortOrder,
+    listEndpointConfigsResponse_nextToken,
+    listEndpointConfigsResponse_httpStatus,
+    listEndpointConfigsResponse_endpointConfigs,
+
+    -- ** ListEndpoints
+    listEndpoints_creationTimeAfter,
+    listEndpoints_creationTimeBefore,
+    listEndpoints_lastModifiedTimeAfter,
+    listEndpoints_lastModifiedTimeBefore,
+    listEndpoints_maxResults,
+    listEndpoints_nameContains,
+    listEndpoints_nextToken,
+    listEndpoints_sortBy,
+    listEndpoints_sortOrder,
+    listEndpoints_statusEquals,
+    listEndpointsResponse_nextToken,
+    listEndpointsResponse_httpStatus,
+    listEndpointsResponse_endpoints,
+
+    -- ** ListExperiments
+    listExperiments_createdAfter,
+    listExperiments_createdBefore,
+    listExperiments_maxResults,
+    listExperiments_nextToken,
+    listExperiments_sortBy,
+    listExperiments_sortOrder,
+    listExperimentsResponse_experimentSummaries,
+    listExperimentsResponse_nextToken,
+    listExperimentsResponse_httpStatus,
+
+    -- ** ListFeatureGroups
+    listFeatureGroups_creationTimeAfter,
+    listFeatureGroups_creationTimeBefore,
+    listFeatureGroups_featureGroupStatusEquals,
+    listFeatureGroups_maxResults,
+    listFeatureGroups_nameContains,
+    listFeatureGroups_nextToken,
+    listFeatureGroups_offlineStoreStatusEquals,
+    listFeatureGroups_sortBy,
+    listFeatureGroups_sortOrder,
+    listFeatureGroupsResponse_nextToken,
+    listFeatureGroupsResponse_httpStatus,
+    listFeatureGroupsResponse_featureGroupSummaries,
+
+    -- ** ListFlowDefinitions
+    listFlowDefinitions_creationTimeAfter,
+    listFlowDefinitions_creationTimeBefore,
+    listFlowDefinitions_maxResults,
+    listFlowDefinitions_nextToken,
+    listFlowDefinitions_sortOrder,
+    listFlowDefinitionsResponse_nextToken,
+    listFlowDefinitionsResponse_httpStatus,
+    listFlowDefinitionsResponse_flowDefinitionSummaries,
+
+    -- ** ListHubContentVersions
+    listHubContentVersions_creationTimeAfter,
+    listHubContentVersions_creationTimeBefore,
+    listHubContentVersions_maxResults,
+    listHubContentVersions_maxSchemaVersion,
+    listHubContentVersions_minVersion,
+    listHubContentVersions_nextToken,
+    listHubContentVersions_sortBy,
+    listHubContentVersions_sortOrder,
+    listHubContentVersions_hubName,
+    listHubContentVersions_hubContentType,
+    listHubContentVersions_hubContentName,
+    listHubContentVersionsResponse_nextToken,
+    listHubContentVersionsResponse_httpStatus,
+    listHubContentVersionsResponse_hubContentSummaries,
+
+    -- ** ListHubContents
+    listHubContents_creationTimeAfter,
+    listHubContents_creationTimeBefore,
+    listHubContents_maxResults,
+    listHubContents_maxSchemaVersion,
+    listHubContents_nameContains,
+    listHubContents_nextToken,
+    listHubContents_sortBy,
+    listHubContents_sortOrder,
+    listHubContents_hubName,
+    listHubContents_hubContentType,
+    listHubContentsResponse_nextToken,
+    listHubContentsResponse_httpStatus,
+    listHubContentsResponse_hubContentSummaries,
+
+    -- ** ListHubs
+    listHubs_creationTimeAfter,
+    listHubs_creationTimeBefore,
+    listHubs_lastModifiedTimeAfter,
+    listHubs_lastModifiedTimeBefore,
+    listHubs_maxResults,
+    listHubs_nameContains,
+    listHubs_nextToken,
+    listHubs_sortBy,
+    listHubs_sortOrder,
+    listHubsResponse_nextToken,
+    listHubsResponse_httpStatus,
+    listHubsResponse_hubSummaries,
+
+    -- ** ListHumanTaskUis
+    listHumanTaskUis_creationTimeAfter,
+    listHumanTaskUis_creationTimeBefore,
+    listHumanTaskUis_maxResults,
+    listHumanTaskUis_nextToken,
+    listHumanTaskUis_sortOrder,
+    listHumanTaskUisResponse_nextToken,
+    listHumanTaskUisResponse_httpStatus,
+    listHumanTaskUisResponse_humanTaskUiSummaries,
+
+    -- ** ListHyperParameterTuningJobs
+    listHyperParameterTuningJobs_creationTimeAfter,
+    listHyperParameterTuningJobs_creationTimeBefore,
+    listHyperParameterTuningJobs_lastModifiedTimeAfter,
+    listHyperParameterTuningJobs_lastModifiedTimeBefore,
+    listHyperParameterTuningJobs_maxResults,
+    listHyperParameterTuningJobs_nameContains,
+    listHyperParameterTuningJobs_nextToken,
+    listHyperParameterTuningJobs_sortBy,
+    listHyperParameterTuningJobs_sortOrder,
+    listHyperParameterTuningJobs_statusEquals,
+    listHyperParameterTuningJobsResponse_nextToken,
+    listHyperParameterTuningJobsResponse_httpStatus,
+    listHyperParameterTuningJobsResponse_hyperParameterTuningJobSummaries,
+
+    -- ** ListImageVersions
+    listImageVersions_creationTimeAfter,
+    listImageVersions_creationTimeBefore,
+    listImageVersions_lastModifiedTimeAfter,
+    listImageVersions_lastModifiedTimeBefore,
+    listImageVersions_maxResults,
+    listImageVersions_nextToken,
+    listImageVersions_sortBy,
+    listImageVersions_sortOrder,
+    listImageVersions_imageName,
+    listImageVersionsResponse_imageVersions,
+    listImageVersionsResponse_nextToken,
+    listImageVersionsResponse_httpStatus,
+
+    -- ** ListImages
+    listImages_creationTimeAfter,
+    listImages_creationTimeBefore,
+    listImages_lastModifiedTimeAfter,
+    listImages_lastModifiedTimeBefore,
+    listImages_maxResults,
+    listImages_nameContains,
+    listImages_nextToken,
+    listImages_sortBy,
+    listImages_sortOrder,
+    listImagesResponse_images,
+    listImagesResponse_nextToken,
+    listImagesResponse_httpStatus,
+
+    -- ** ListInferenceExperiments
+    listInferenceExperiments_creationTimeAfter,
+    listInferenceExperiments_creationTimeBefore,
+    listInferenceExperiments_lastModifiedTimeAfter,
+    listInferenceExperiments_lastModifiedTimeBefore,
+    listInferenceExperiments_maxResults,
+    listInferenceExperiments_nameContains,
+    listInferenceExperiments_nextToken,
+    listInferenceExperiments_sortBy,
+    listInferenceExperiments_sortOrder,
+    listInferenceExperiments_statusEquals,
+    listInferenceExperiments_type,
+    listInferenceExperimentsResponse_inferenceExperiments,
+    listInferenceExperimentsResponse_nextToken,
+    listInferenceExperimentsResponse_httpStatus,
+
+    -- ** ListInferenceRecommendationsJobSteps
+    listInferenceRecommendationsJobSteps_maxResults,
+    listInferenceRecommendationsJobSteps_nextToken,
+    listInferenceRecommendationsJobSteps_status,
+    listInferenceRecommendationsJobSteps_stepType,
+    listInferenceRecommendationsJobSteps_jobName,
+    listInferenceRecommendationsJobStepsResponse_nextToken,
+    listInferenceRecommendationsJobStepsResponse_steps,
+    listInferenceRecommendationsJobStepsResponse_httpStatus,
+
+    -- ** ListInferenceRecommendationsJobs
+    listInferenceRecommendationsJobs_creationTimeAfter,
+    listInferenceRecommendationsJobs_creationTimeBefore,
+    listInferenceRecommendationsJobs_lastModifiedTimeAfter,
+    listInferenceRecommendationsJobs_lastModifiedTimeBefore,
+    listInferenceRecommendationsJobs_maxResults,
+    listInferenceRecommendationsJobs_nameContains,
+    listInferenceRecommendationsJobs_nextToken,
+    listInferenceRecommendationsJobs_sortBy,
+    listInferenceRecommendationsJobs_sortOrder,
+    listInferenceRecommendationsJobs_statusEquals,
+    listInferenceRecommendationsJobsResponse_nextToken,
+    listInferenceRecommendationsJobsResponse_httpStatus,
+    listInferenceRecommendationsJobsResponse_inferenceRecommendationsJobs,
+
+    -- ** ListLabelingJobs
+    listLabelingJobs_creationTimeAfter,
+    listLabelingJobs_creationTimeBefore,
+    listLabelingJobs_lastModifiedTimeAfter,
+    listLabelingJobs_lastModifiedTimeBefore,
+    listLabelingJobs_maxResults,
+    listLabelingJobs_nameContains,
+    listLabelingJobs_nextToken,
+    listLabelingJobs_sortBy,
+    listLabelingJobs_sortOrder,
+    listLabelingJobs_statusEquals,
+    listLabelingJobsResponse_labelingJobSummaryList,
+    listLabelingJobsResponse_nextToken,
+    listLabelingJobsResponse_httpStatus,
+
+    -- ** ListLabelingJobsForWorkteam
+    listLabelingJobsForWorkteam_creationTimeAfter,
+    listLabelingJobsForWorkteam_creationTimeBefore,
+    listLabelingJobsForWorkteam_jobReferenceCodeContains,
+    listLabelingJobsForWorkteam_maxResults,
+    listLabelingJobsForWorkteam_nextToken,
+    listLabelingJobsForWorkteam_sortBy,
+    listLabelingJobsForWorkteam_sortOrder,
+    listLabelingJobsForWorkteam_workteamArn,
+    listLabelingJobsForWorkteamResponse_nextToken,
+    listLabelingJobsForWorkteamResponse_httpStatus,
+    listLabelingJobsForWorkteamResponse_labelingJobSummaryList,
+
+    -- ** ListLineageGroups
+    listLineageGroups_createdAfter,
+    listLineageGroups_createdBefore,
+    listLineageGroups_maxResults,
+    listLineageGroups_nextToken,
+    listLineageGroups_sortBy,
+    listLineageGroups_sortOrder,
+    listLineageGroupsResponse_lineageGroupSummaries,
+    listLineageGroupsResponse_nextToken,
+    listLineageGroupsResponse_httpStatus,
+
+    -- ** ListModelBiasJobDefinitions
+    listModelBiasJobDefinitions_creationTimeAfter,
+    listModelBiasJobDefinitions_creationTimeBefore,
+    listModelBiasJobDefinitions_endpointName,
+    listModelBiasJobDefinitions_maxResults,
+    listModelBiasJobDefinitions_nameContains,
+    listModelBiasJobDefinitions_nextToken,
+    listModelBiasJobDefinitions_sortBy,
+    listModelBiasJobDefinitions_sortOrder,
+    listModelBiasJobDefinitionsResponse_nextToken,
+    listModelBiasJobDefinitionsResponse_httpStatus,
+    listModelBiasJobDefinitionsResponse_jobDefinitionSummaries,
+
+    -- ** ListModelCardExportJobs
+    listModelCardExportJobs_creationTimeAfter,
+    listModelCardExportJobs_creationTimeBefore,
+    listModelCardExportJobs_maxResults,
+    listModelCardExportJobs_modelCardExportJobNameContains,
+    listModelCardExportJobs_modelCardVersion,
+    listModelCardExportJobs_nextToken,
+    listModelCardExportJobs_sortBy,
+    listModelCardExportJobs_sortOrder,
+    listModelCardExportJobs_statusEquals,
+    listModelCardExportJobs_modelCardName,
+    listModelCardExportJobsResponse_nextToken,
+    listModelCardExportJobsResponse_httpStatus,
+    listModelCardExportJobsResponse_modelCardExportJobSummaries,
+
+    -- ** ListModelCardVersions
+    listModelCardVersions_creationTimeAfter,
+    listModelCardVersions_creationTimeBefore,
+    listModelCardVersions_maxResults,
+    listModelCardVersions_modelCardStatus,
+    listModelCardVersions_nextToken,
+    listModelCardVersions_sortBy,
+    listModelCardVersions_sortOrder,
+    listModelCardVersions_modelCardName,
+    listModelCardVersionsResponse_nextToken,
+    listModelCardVersionsResponse_httpStatus,
+    listModelCardVersionsResponse_modelCardVersionSummaryList,
+
+    -- ** ListModelCards
+    listModelCards_creationTimeAfter,
+    listModelCards_creationTimeBefore,
+    listModelCards_maxResults,
+    listModelCards_modelCardStatus,
+    listModelCards_nameContains,
+    listModelCards_nextToken,
+    listModelCards_sortBy,
+    listModelCards_sortOrder,
+    listModelCardsResponse_nextToken,
+    listModelCardsResponse_httpStatus,
+    listModelCardsResponse_modelCardSummaries,
+
+    -- ** ListModelExplainabilityJobDefinitions
+    listModelExplainabilityJobDefinitions_creationTimeAfter,
+    listModelExplainabilityJobDefinitions_creationTimeBefore,
+    listModelExplainabilityJobDefinitions_endpointName,
+    listModelExplainabilityJobDefinitions_maxResults,
+    listModelExplainabilityJobDefinitions_nameContains,
+    listModelExplainabilityJobDefinitions_nextToken,
+    listModelExplainabilityJobDefinitions_sortBy,
+    listModelExplainabilityJobDefinitions_sortOrder,
+    listModelExplainabilityJobDefinitionsResponse_nextToken,
+    listModelExplainabilityJobDefinitionsResponse_httpStatus,
+    listModelExplainabilityJobDefinitionsResponse_jobDefinitionSummaries,
+
+    -- ** ListModelMetadata
+    listModelMetadata_maxResults,
+    listModelMetadata_nextToken,
+    listModelMetadata_searchExpression,
+    listModelMetadataResponse_nextToken,
+    listModelMetadataResponse_httpStatus,
+    listModelMetadataResponse_modelMetadataSummaries,
+
+    -- ** ListModelPackageGroups
+    listModelPackageGroups_creationTimeAfter,
+    listModelPackageGroups_creationTimeBefore,
+    listModelPackageGroups_maxResults,
+    listModelPackageGroups_nameContains,
+    listModelPackageGroups_nextToken,
+    listModelPackageGroups_sortBy,
+    listModelPackageGroups_sortOrder,
+    listModelPackageGroupsResponse_nextToken,
+    listModelPackageGroupsResponse_httpStatus,
+    listModelPackageGroupsResponse_modelPackageGroupSummaryList,
+
+    -- ** ListModelPackages
+    listModelPackages_creationTimeAfter,
+    listModelPackages_creationTimeBefore,
+    listModelPackages_maxResults,
+    listModelPackages_modelApprovalStatus,
+    listModelPackages_modelPackageGroupName,
+    listModelPackages_modelPackageType,
+    listModelPackages_nameContains,
+    listModelPackages_nextToken,
+    listModelPackages_sortBy,
+    listModelPackages_sortOrder,
+    listModelPackagesResponse_nextToken,
+    listModelPackagesResponse_httpStatus,
+    listModelPackagesResponse_modelPackageSummaryList,
+
+    -- ** ListModelQualityJobDefinitions
+    listModelQualityJobDefinitions_creationTimeAfter,
+    listModelQualityJobDefinitions_creationTimeBefore,
+    listModelQualityJobDefinitions_endpointName,
+    listModelQualityJobDefinitions_maxResults,
+    listModelQualityJobDefinitions_nameContains,
+    listModelQualityJobDefinitions_nextToken,
+    listModelQualityJobDefinitions_sortBy,
+    listModelQualityJobDefinitions_sortOrder,
+    listModelQualityJobDefinitionsResponse_nextToken,
+    listModelQualityJobDefinitionsResponse_httpStatus,
+    listModelQualityJobDefinitionsResponse_jobDefinitionSummaries,
+
+    -- ** ListModels
+    listModels_creationTimeAfter,
+    listModels_creationTimeBefore,
+    listModels_maxResults,
+    listModels_nameContains,
+    listModels_nextToken,
+    listModels_sortBy,
+    listModels_sortOrder,
+    listModelsResponse_nextToken,
+    listModelsResponse_httpStatus,
+    listModelsResponse_models,
+
+    -- ** ListMonitoringAlertHistory
+    listMonitoringAlertHistory_creationTimeAfter,
+    listMonitoringAlertHistory_creationTimeBefore,
+    listMonitoringAlertHistory_maxResults,
+    listMonitoringAlertHistory_monitoringAlertName,
+    listMonitoringAlertHistory_monitoringScheduleName,
+    listMonitoringAlertHistory_nextToken,
+    listMonitoringAlertHistory_sortBy,
+    listMonitoringAlertHistory_sortOrder,
+    listMonitoringAlertHistory_statusEquals,
+    listMonitoringAlertHistoryResponse_monitoringAlertHistory,
+    listMonitoringAlertHistoryResponse_nextToken,
+    listMonitoringAlertHistoryResponse_httpStatus,
+
+    -- ** ListMonitoringAlerts
+    listMonitoringAlerts_maxResults,
+    listMonitoringAlerts_nextToken,
+    listMonitoringAlerts_monitoringScheduleName,
+    listMonitoringAlertsResponse_monitoringAlertSummaries,
+    listMonitoringAlertsResponse_nextToken,
+    listMonitoringAlertsResponse_httpStatus,
+
+    -- ** ListMonitoringExecutions
+    listMonitoringExecutions_creationTimeAfter,
+    listMonitoringExecutions_creationTimeBefore,
+    listMonitoringExecutions_endpointName,
+    listMonitoringExecutions_lastModifiedTimeAfter,
+    listMonitoringExecutions_lastModifiedTimeBefore,
+    listMonitoringExecutions_maxResults,
+    listMonitoringExecutions_monitoringJobDefinitionName,
+    listMonitoringExecutions_monitoringScheduleName,
+    listMonitoringExecutions_monitoringTypeEquals,
+    listMonitoringExecutions_nextToken,
+    listMonitoringExecutions_scheduledTimeAfter,
+    listMonitoringExecutions_scheduledTimeBefore,
+    listMonitoringExecutions_sortBy,
+    listMonitoringExecutions_sortOrder,
+    listMonitoringExecutions_statusEquals,
+    listMonitoringExecutionsResponse_nextToken,
+    listMonitoringExecutionsResponse_httpStatus,
+    listMonitoringExecutionsResponse_monitoringExecutionSummaries,
+
+    -- ** ListMonitoringSchedules
+    listMonitoringSchedules_creationTimeAfter,
+    listMonitoringSchedules_creationTimeBefore,
+    listMonitoringSchedules_endpointName,
+    listMonitoringSchedules_lastModifiedTimeAfter,
+    listMonitoringSchedules_lastModifiedTimeBefore,
+    listMonitoringSchedules_maxResults,
+    listMonitoringSchedules_monitoringJobDefinitionName,
+    listMonitoringSchedules_monitoringTypeEquals,
+    listMonitoringSchedules_nameContains,
+    listMonitoringSchedules_nextToken,
+    listMonitoringSchedules_sortBy,
+    listMonitoringSchedules_sortOrder,
+    listMonitoringSchedules_statusEquals,
+    listMonitoringSchedulesResponse_nextToken,
+    listMonitoringSchedulesResponse_httpStatus,
+    listMonitoringSchedulesResponse_monitoringScheduleSummaries,
+
+    -- ** ListNotebookInstanceLifecycleConfigs
+    listNotebookInstanceLifecycleConfigs_creationTimeAfter,
+    listNotebookInstanceLifecycleConfigs_creationTimeBefore,
+    listNotebookInstanceLifecycleConfigs_lastModifiedTimeAfter,
+    listNotebookInstanceLifecycleConfigs_lastModifiedTimeBefore,
+    listNotebookInstanceLifecycleConfigs_maxResults,
+    listNotebookInstanceLifecycleConfigs_nameContains,
+    listNotebookInstanceLifecycleConfigs_nextToken,
+    listNotebookInstanceLifecycleConfigs_sortBy,
+    listNotebookInstanceLifecycleConfigs_sortOrder,
+    listNotebookInstanceLifecycleConfigsResponse_nextToken,
+    listNotebookInstanceLifecycleConfigsResponse_notebookInstanceLifecycleConfigs,
+    listNotebookInstanceLifecycleConfigsResponse_httpStatus,
+
+    -- ** ListNotebookInstances
+    listNotebookInstances_additionalCodeRepositoryEquals,
+    listNotebookInstances_creationTimeAfter,
+    listNotebookInstances_creationTimeBefore,
+    listNotebookInstances_defaultCodeRepositoryContains,
+    listNotebookInstances_lastModifiedTimeAfter,
+    listNotebookInstances_lastModifiedTimeBefore,
+    listNotebookInstances_maxResults,
+    listNotebookInstances_nameContains,
+    listNotebookInstances_nextToken,
+    listNotebookInstances_notebookInstanceLifecycleConfigNameContains,
+    listNotebookInstances_sortBy,
+    listNotebookInstances_sortOrder,
+    listNotebookInstances_statusEquals,
+    listNotebookInstancesResponse_nextToken,
+    listNotebookInstancesResponse_notebookInstances,
+    listNotebookInstancesResponse_httpStatus,
+
+    -- ** ListPipelineExecutionSteps
+    listPipelineExecutionSteps_maxResults,
+    listPipelineExecutionSteps_nextToken,
+    listPipelineExecutionSteps_pipelineExecutionArn,
+    listPipelineExecutionSteps_sortOrder,
+    listPipelineExecutionStepsResponse_nextToken,
+    listPipelineExecutionStepsResponse_pipelineExecutionSteps,
+    listPipelineExecutionStepsResponse_httpStatus,
+
+    -- ** ListPipelineExecutions
+    listPipelineExecutions_createdAfter,
+    listPipelineExecutions_createdBefore,
+    listPipelineExecutions_maxResults,
+    listPipelineExecutions_nextToken,
+    listPipelineExecutions_sortBy,
+    listPipelineExecutions_sortOrder,
+    listPipelineExecutions_pipelineName,
+    listPipelineExecutionsResponse_nextToken,
+    listPipelineExecutionsResponse_pipelineExecutionSummaries,
+    listPipelineExecutionsResponse_httpStatus,
+
+    -- ** ListPipelineParametersForExecution
+    listPipelineParametersForExecution_maxResults,
+    listPipelineParametersForExecution_nextToken,
+    listPipelineParametersForExecution_pipelineExecutionArn,
+    listPipelineParametersForExecutionResponse_nextToken,
+    listPipelineParametersForExecutionResponse_pipelineParameters,
+    listPipelineParametersForExecutionResponse_httpStatus,
+
+    -- ** ListPipelines
+    listPipelines_createdAfter,
+    listPipelines_createdBefore,
+    listPipelines_maxResults,
+    listPipelines_nextToken,
+    listPipelines_pipelineNamePrefix,
+    listPipelines_sortBy,
+    listPipelines_sortOrder,
+    listPipelinesResponse_nextToken,
+    listPipelinesResponse_pipelineSummaries,
+    listPipelinesResponse_httpStatus,
+
+    -- ** ListProcessingJobs
+    listProcessingJobs_creationTimeAfter,
+    listProcessingJobs_creationTimeBefore,
+    listProcessingJobs_lastModifiedTimeAfter,
+    listProcessingJobs_lastModifiedTimeBefore,
+    listProcessingJobs_maxResults,
+    listProcessingJobs_nameContains,
+    listProcessingJobs_nextToken,
+    listProcessingJobs_sortBy,
+    listProcessingJobs_sortOrder,
+    listProcessingJobs_statusEquals,
+    listProcessingJobsResponse_nextToken,
+    listProcessingJobsResponse_httpStatus,
+    listProcessingJobsResponse_processingJobSummaries,
+
+    -- ** ListProjects
+    listProjects_creationTimeAfter,
+    listProjects_creationTimeBefore,
+    listProjects_maxResults,
+    listProjects_nameContains,
+    listProjects_nextToken,
+    listProjects_sortBy,
+    listProjects_sortOrder,
+    listProjectsResponse_nextToken,
+    listProjectsResponse_httpStatus,
+    listProjectsResponse_projectSummaryList,
+
+    -- ** ListSpaces
+    listSpaces_domainIdEquals,
+    listSpaces_maxResults,
+    listSpaces_nextToken,
+    listSpaces_sortBy,
+    listSpaces_sortOrder,
+    listSpaces_spaceNameContains,
+    listSpacesResponse_nextToken,
+    listSpacesResponse_spaces,
+    listSpacesResponse_httpStatus,
+
+    -- ** ListStageDevices
+    listStageDevices_excludeDevicesDeployedInOtherStage,
+    listStageDevices_maxResults,
+    listStageDevices_nextToken,
+    listStageDevices_edgeDeploymentPlanName,
+    listStageDevices_stageName,
+    listStageDevicesResponse_nextToken,
+    listStageDevicesResponse_httpStatus,
+    listStageDevicesResponse_deviceDeploymentSummaries,
+
+    -- ** ListStudioLifecycleConfigs
+    listStudioLifecycleConfigs_appTypeEquals,
+    listStudioLifecycleConfigs_creationTimeAfter,
+    listStudioLifecycleConfigs_creationTimeBefore,
+    listStudioLifecycleConfigs_maxResults,
+    listStudioLifecycleConfigs_modifiedTimeAfter,
+    listStudioLifecycleConfigs_modifiedTimeBefore,
+    listStudioLifecycleConfigs_nameContains,
+    listStudioLifecycleConfigs_nextToken,
+    listStudioLifecycleConfigs_sortBy,
+    listStudioLifecycleConfigs_sortOrder,
+    listStudioLifecycleConfigsResponse_nextToken,
+    listStudioLifecycleConfigsResponse_studioLifecycleConfigs,
+    listStudioLifecycleConfigsResponse_httpStatus,
+
+    -- ** ListSubscribedWorkteams
+    listSubscribedWorkteams_maxResults,
+    listSubscribedWorkteams_nameContains,
+    listSubscribedWorkteams_nextToken,
+    listSubscribedWorkteamsResponse_nextToken,
+    listSubscribedWorkteamsResponse_httpStatus,
+    listSubscribedWorkteamsResponse_subscribedWorkteams,
+
+    -- ** ListTags
+    listTags_maxResults,
+    listTags_nextToken,
+    listTags_resourceArn,
+    listTagsResponse_nextToken,
+    listTagsResponse_tags,
+    listTagsResponse_httpStatus,
+
+    -- ** ListTrainingJobs
+    listTrainingJobs_creationTimeAfter,
+    listTrainingJobs_creationTimeBefore,
+    listTrainingJobs_lastModifiedTimeAfter,
+    listTrainingJobs_lastModifiedTimeBefore,
+    listTrainingJobs_maxResults,
+    listTrainingJobs_nameContains,
+    listTrainingJobs_nextToken,
+    listTrainingJobs_sortBy,
+    listTrainingJobs_sortOrder,
+    listTrainingJobs_statusEquals,
+    listTrainingJobs_warmPoolStatusEquals,
+    listTrainingJobsResponse_nextToken,
+    listTrainingJobsResponse_httpStatus,
+    listTrainingJobsResponse_trainingJobSummaries,
+
+    -- ** ListTrainingJobsForHyperParameterTuningJob
+    listTrainingJobsForHyperParameterTuningJob_maxResults,
+    listTrainingJobsForHyperParameterTuningJob_nextToken,
+    listTrainingJobsForHyperParameterTuningJob_sortBy,
+    listTrainingJobsForHyperParameterTuningJob_sortOrder,
+    listTrainingJobsForHyperParameterTuningJob_statusEquals,
+    listTrainingJobsForHyperParameterTuningJob_hyperParameterTuningJobName,
+    listTrainingJobsForHyperParameterTuningJobResponse_nextToken,
+    listTrainingJobsForHyperParameterTuningJobResponse_httpStatus,
+    listTrainingJobsForHyperParameterTuningJobResponse_trainingJobSummaries,
+
+    -- ** ListTransformJobs
+    listTransformJobs_creationTimeAfter,
+    listTransformJobs_creationTimeBefore,
+    listTransformJobs_lastModifiedTimeAfter,
+    listTransformJobs_lastModifiedTimeBefore,
+    listTransformJobs_maxResults,
+    listTransformJobs_nameContains,
+    listTransformJobs_nextToken,
+    listTransformJobs_sortBy,
+    listTransformJobs_sortOrder,
+    listTransformJobs_statusEquals,
+    listTransformJobsResponse_nextToken,
+    listTransformJobsResponse_httpStatus,
+    listTransformJobsResponse_transformJobSummaries,
+
+    -- ** ListTrialComponents
+    listTrialComponents_createdAfter,
+    listTrialComponents_createdBefore,
+    listTrialComponents_experimentName,
+    listTrialComponents_maxResults,
+    listTrialComponents_nextToken,
+    listTrialComponents_sortBy,
+    listTrialComponents_sortOrder,
+    listTrialComponents_sourceArn,
+    listTrialComponents_trialName,
+    listTrialComponentsResponse_nextToken,
+    listTrialComponentsResponse_trialComponentSummaries,
+    listTrialComponentsResponse_httpStatus,
+
+    -- ** ListTrials
+    listTrials_createdAfter,
+    listTrials_createdBefore,
+    listTrials_experimentName,
+    listTrials_maxResults,
+    listTrials_nextToken,
+    listTrials_sortBy,
+    listTrials_sortOrder,
+    listTrials_trialComponentName,
+    listTrialsResponse_nextToken,
+    listTrialsResponse_trialSummaries,
+    listTrialsResponse_httpStatus,
+
+    -- ** ListUserProfiles
+    listUserProfiles_domainIdEquals,
+    listUserProfiles_maxResults,
+    listUserProfiles_nextToken,
+    listUserProfiles_sortBy,
+    listUserProfiles_sortOrder,
+    listUserProfiles_userProfileNameContains,
+    listUserProfilesResponse_nextToken,
+    listUserProfilesResponse_userProfiles,
+    listUserProfilesResponse_httpStatus,
+
+    -- ** ListWorkforces
+    listWorkforces_maxResults,
+    listWorkforces_nameContains,
+    listWorkforces_nextToken,
+    listWorkforces_sortBy,
+    listWorkforces_sortOrder,
+    listWorkforcesResponse_nextToken,
+    listWorkforcesResponse_httpStatus,
+    listWorkforcesResponse_workforces,
+
+    -- ** ListWorkteams
+    listWorkteams_maxResults,
+    listWorkteams_nameContains,
+    listWorkteams_nextToken,
+    listWorkteams_sortBy,
+    listWorkteams_sortOrder,
+    listWorkteamsResponse_nextToken,
+    listWorkteamsResponse_httpStatus,
+    listWorkteamsResponse_workteams,
+
+    -- ** PutModelPackageGroupPolicy
+    putModelPackageGroupPolicy_modelPackageGroupName,
+    putModelPackageGroupPolicy_resourcePolicy,
+    putModelPackageGroupPolicyResponse_httpStatus,
+    putModelPackageGroupPolicyResponse_modelPackageGroupArn,
+
+    -- ** QueryLineage
+    queryLineage_direction,
+    queryLineage_filters,
+    queryLineage_includeEdges,
+    queryLineage_maxDepth,
+    queryLineage_maxResults,
+    queryLineage_nextToken,
+    queryLineage_startArns,
+    queryLineageResponse_edges,
+    queryLineageResponse_nextToken,
+    queryLineageResponse_vertices,
+    queryLineageResponse_httpStatus,
+
+    -- ** RegisterDevices
+    registerDevices_tags,
+    registerDevices_deviceFleetName,
+    registerDevices_devices,
+
+    -- ** RenderUiTemplate
+    renderUiTemplate_humanTaskUiArn,
+    renderUiTemplate_uiTemplate,
+    renderUiTemplate_task,
+    renderUiTemplate_roleArn,
+    renderUiTemplateResponse_httpStatus,
+    renderUiTemplateResponse_renderedContent,
+    renderUiTemplateResponse_errors,
+
+    -- ** RetryPipelineExecution
+    retryPipelineExecution_parallelismConfiguration,
+    retryPipelineExecution_pipelineExecutionArn,
+    retryPipelineExecution_clientRequestToken,
+    retryPipelineExecutionResponse_pipelineExecutionArn,
+    retryPipelineExecutionResponse_httpStatus,
+
+    -- ** Search
+    search_maxResults,
+    search_nextToken,
+    search_searchExpression,
+    search_sortBy,
+    search_sortOrder,
+    search_resource,
+    searchResponse_nextToken,
+    searchResponse_results,
+    searchResponse_httpStatus,
+
+    -- ** SendPipelineExecutionStepFailure
+    sendPipelineExecutionStepFailure_clientRequestToken,
+    sendPipelineExecutionStepFailure_failureReason,
+    sendPipelineExecutionStepFailure_callbackToken,
+    sendPipelineExecutionStepFailureResponse_pipelineExecutionArn,
+    sendPipelineExecutionStepFailureResponse_httpStatus,
+
+    -- ** SendPipelineExecutionStepSuccess
+    sendPipelineExecutionStepSuccess_clientRequestToken,
+    sendPipelineExecutionStepSuccess_outputParameters,
+    sendPipelineExecutionStepSuccess_callbackToken,
+    sendPipelineExecutionStepSuccessResponse_pipelineExecutionArn,
+    sendPipelineExecutionStepSuccessResponse_httpStatus,
+
+    -- ** StartEdgeDeploymentStage
+    startEdgeDeploymentStage_edgeDeploymentPlanName,
+    startEdgeDeploymentStage_stageName,
+
+    -- ** StartInferenceExperiment
+    startInferenceExperiment_name,
+    startInferenceExperimentResponse_httpStatus,
+    startInferenceExperimentResponse_inferenceExperimentArn,
+
+    -- ** StartMonitoringSchedule
+    startMonitoringSchedule_monitoringScheduleName,
+
+    -- ** StartNotebookInstance
+    startNotebookInstance_notebookInstanceName,
+
+    -- ** StartPipelineExecution
+    startPipelineExecution_parallelismConfiguration,
+    startPipelineExecution_pipelineExecutionDescription,
+    startPipelineExecution_pipelineExecutionDisplayName,
+    startPipelineExecution_pipelineParameters,
+    startPipelineExecution_pipelineName,
+    startPipelineExecution_clientRequestToken,
+    startPipelineExecutionResponse_pipelineExecutionArn,
+    startPipelineExecutionResponse_httpStatus,
+
+    -- ** StopAutoMLJob
+    stopAutoMLJob_autoMLJobName,
+
+    -- ** StopCompilationJob
+    stopCompilationJob_compilationJobName,
+
+    -- ** StopEdgeDeploymentStage
+    stopEdgeDeploymentStage_edgeDeploymentPlanName,
+    stopEdgeDeploymentStage_stageName,
+
+    -- ** StopEdgePackagingJob
+    stopEdgePackagingJob_edgePackagingJobName,
+
+    -- ** StopHyperParameterTuningJob
+    stopHyperParameterTuningJob_hyperParameterTuningJobName,
+
+    -- ** StopInferenceExperiment
+    stopInferenceExperiment_desiredModelVariants,
+    stopInferenceExperiment_desiredState,
+    stopInferenceExperiment_reason,
+    stopInferenceExperiment_name,
+    stopInferenceExperiment_modelVariantActions,
+    stopInferenceExperimentResponse_httpStatus,
+    stopInferenceExperimentResponse_inferenceExperimentArn,
+
+    -- ** StopInferenceRecommendationsJob
+    stopInferenceRecommendationsJob_jobName,
+
+    -- ** StopLabelingJob
+    stopLabelingJob_labelingJobName,
+
+    -- ** StopMonitoringSchedule
+    stopMonitoringSchedule_monitoringScheduleName,
+
+    -- ** StopNotebookInstance
+    stopNotebookInstance_notebookInstanceName,
+
+    -- ** StopPipelineExecution
+    stopPipelineExecution_pipelineExecutionArn,
+    stopPipelineExecution_clientRequestToken,
+    stopPipelineExecutionResponse_pipelineExecutionArn,
+    stopPipelineExecutionResponse_httpStatus,
+
+    -- ** StopProcessingJob
+    stopProcessingJob_processingJobName,
+
+    -- ** StopTrainingJob
+    stopTrainingJob_trainingJobName,
+
+    -- ** StopTransformJob
+    stopTransformJob_transformJobName,
+
+    -- ** UpdateAction
+    updateAction_description,
+    updateAction_properties,
+    updateAction_propertiesToRemove,
+    updateAction_status,
+    updateAction_actionName,
+    updateActionResponse_actionArn,
+    updateActionResponse_httpStatus,
+
+    -- ** UpdateAppImageConfig
+    updateAppImageConfig_kernelGatewayImageConfig,
+    updateAppImageConfig_appImageConfigName,
+    updateAppImageConfigResponse_appImageConfigArn,
+    updateAppImageConfigResponse_httpStatus,
+
+    -- ** UpdateArtifact
+    updateArtifact_artifactName,
+    updateArtifact_properties,
+    updateArtifact_propertiesToRemove,
+    updateArtifact_artifactArn,
+    updateArtifactResponse_artifactArn,
+    updateArtifactResponse_httpStatus,
+
+    -- ** UpdateCodeRepository
+    updateCodeRepository_gitConfig,
+    updateCodeRepository_codeRepositoryName,
+    updateCodeRepositoryResponse_httpStatus,
+    updateCodeRepositoryResponse_codeRepositoryArn,
+
+    -- ** UpdateContext
+    updateContext_description,
+    updateContext_properties,
+    updateContext_propertiesToRemove,
+    updateContext_contextName,
+    updateContextResponse_contextArn,
+    updateContextResponse_httpStatus,
+
+    -- ** UpdateDeviceFleet
+    updateDeviceFleet_description,
+    updateDeviceFleet_enableIotRoleAlias,
+    updateDeviceFleet_roleArn,
+    updateDeviceFleet_deviceFleetName,
+    updateDeviceFleet_outputConfig,
+
+    -- ** UpdateDevices
+    updateDevices_deviceFleetName,
+    updateDevices_devices,
+
+    -- ** UpdateDomain
+    updateDomain_appSecurityGroupManagement,
+    updateDomain_defaultSpaceSettings,
+    updateDomain_defaultUserSettings,
+    updateDomain_domainSettingsForUpdate,
+    updateDomain_domainId,
+    updateDomainResponse_domainArn,
+    updateDomainResponse_httpStatus,
+
+    -- ** UpdateEndpoint
+    updateEndpoint_deploymentConfig,
+    updateEndpoint_excludeRetainedVariantProperties,
+    updateEndpoint_retainAllVariantProperties,
+    updateEndpoint_retainDeploymentConfig,
+    updateEndpoint_endpointName,
+    updateEndpoint_endpointConfigName,
+    updateEndpointResponse_httpStatus,
+    updateEndpointResponse_endpointArn,
+
+    -- ** UpdateEndpointWeightsAndCapacities
+    updateEndpointWeightsAndCapacities_endpointName,
+    updateEndpointWeightsAndCapacities_desiredWeightsAndCapacities,
+    updateEndpointWeightsAndCapacitiesResponse_httpStatus,
+    updateEndpointWeightsAndCapacitiesResponse_endpointArn,
+
+    -- ** UpdateExperiment
+    updateExperiment_description,
+    updateExperiment_displayName,
+    updateExperiment_experimentName,
+    updateExperimentResponse_experimentArn,
+    updateExperimentResponse_httpStatus,
+
+    -- ** UpdateFeatureGroup
+    updateFeatureGroup_featureAdditions,
+    updateFeatureGroup_featureGroupName,
+    updateFeatureGroupResponse_httpStatus,
+    updateFeatureGroupResponse_featureGroupArn,
+
+    -- ** UpdateFeatureMetadata
+    updateFeatureMetadata_description,
+    updateFeatureMetadata_parameterAdditions,
+    updateFeatureMetadata_parameterRemovals,
+    updateFeatureMetadata_featureGroupName,
+    updateFeatureMetadata_featureName,
+
+    -- ** UpdateHub
+    updateHub_hubDescription,
+    updateHub_hubDisplayName,
+    updateHub_hubSearchKeywords,
+    updateHub_hubName,
+    updateHubResponse_httpStatus,
+    updateHubResponse_hubArn,
+
+    -- ** UpdateImage
+    updateImage_deleteProperties,
+    updateImage_description,
+    updateImage_displayName,
+    updateImage_roleArn,
+    updateImage_imageName,
+    updateImageResponse_imageArn,
+    updateImageResponse_httpStatus,
+
+    -- ** UpdateImageVersion
+    updateImageVersion_alias,
+    updateImageVersion_aliasesToAdd,
+    updateImageVersion_aliasesToDelete,
+    updateImageVersion_horovod,
+    updateImageVersion_jobType,
+    updateImageVersion_mLFramework,
+    updateImageVersion_processor,
+    updateImageVersion_programmingLang,
+    updateImageVersion_releaseNotes,
+    updateImageVersion_vendorGuidance,
+    updateImageVersion_version,
+    updateImageVersion_imageName,
+    updateImageVersionResponse_imageVersionArn,
+    updateImageVersionResponse_httpStatus,
+
+    -- ** UpdateInferenceExperiment
+    updateInferenceExperiment_dataStorageConfig,
+    updateInferenceExperiment_description,
+    updateInferenceExperiment_modelVariants,
+    updateInferenceExperiment_schedule,
+    updateInferenceExperiment_shadowModeConfig,
+    updateInferenceExperiment_name,
+    updateInferenceExperimentResponse_httpStatus,
+    updateInferenceExperimentResponse_inferenceExperimentArn,
+
+    -- ** UpdateModelCard
+    updateModelCard_content,
+    updateModelCard_modelCardStatus,
+    updateModelCard_modelCardName,
+    updateModelCardResponse_httpStatus,
+    updateModelCardResponse_modelCardArn,
+
+    -- ** UpdateModelPackage
+    updateModelPackage_additionalInferenceSpecificationsToAdd,
+    updateModelPackage_approvalDescription,
+    updateModelPackage_customerMetadataProperties,
+    updateModelPackage_customerMetadataPropertiesToRemove,
+    updateModelPackage_modelApprovalStatus,
+    updateModelPackage_modelPackageArn,
+    updateModelPackageResponse_httpStatus,
+    updateModelPackageResponse_modelPackageArn,
+
+    -- ** UpdateMonitoringAlert
+    updateMonitoringAlert_monitoringScheduleName,
+    updateMonitoringAlert_monitoringAlertName,
+    updateMonitoringAlert_datapointsToAlert,
+    updateMonitoringAlert_evaluationPeriod,
+    updateMonitoringAlertResponse_monitoringAlertName,
+    updateMonitoringAlertResponse_httpStatus,
+    updateMonitoringAlertResponse_monitoringScheduleArn,
+
+    -- ** UpdateMonitoringSchedule
+    updateMonitoringSchedule_monitoringScheduleName,
+    updateMonitoringSchedule_monitoringScheduleConfig,
+    updateMonitoringScheduleResponse_httpStatus,
+    updateMonitoringScheduleResponse_monitoringScheduleArn,
+
+    -- ** UpdateNotebookInstance
+    updateNotebookInstance_acceleratorTypes,
+    updateNotebookInstance_additionalCodeRepositories,
+    updateNotebookInstance_defaultCodeRepository,
+    updateNotebookInstance_disassociateAcceleratorTypes,
+    updateNotebookInstance_disassociateAdditionalCodeRepositories,
+    updateNotebookInstance_disassociateDefaultCodeRepository,
+    updateNotebookInstance_disassociateLifecycleConfig,
+    updateNotebookInstance_instanceMetadataServiceConfiguration,
+    updateNotebookInstance_instanceType,
+    updateNotebookInstance_lifecycleConfigName,
+    updateNotebookInstance_roleArn,
+    updateNotebookInstance_rootAccess,
+    updateNotebookInstance_volumeSizeInGB,
+    updateNotebookInstance_notebookInstanceName,
+    updateNotebookInstanceResponse_httpStatus,
+
+    -- ** UpdateNotebookInstanceLifecycleConfig
+    updateNotebookInstanceLifecycleConfig_onCreate,
+    updateNotebookInstanceLifecycleConfig_onStart,
+    updateNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+    updateNotebookInstanceLifecycleConfigResponse_httpStatus,
+
+    -- ** UpdatePipeline
+    updatePipeline_parallelismConfiguration,
+    updatePipeline_pipelineDefinition,
+    updatePipeline_pipelineDefinitionS3Location,
+    updatePipeline_pipelineDescription,
+    updatePipeline_pipelineDisplayName,
+    updatePipeline_roleArn,
+    updatePipeline_pipelineName,
+    updatePipelineResponse_pipelineArn,
+    updatePipelineResponse_httpStatus,
+
+    -- ** UpdatePipelineExecution
+    updatePipelineExecution_parallelismConfiguration,
+    updatePipelineExecution_pipelineExecutionDescription,
+    updatePipelineExecution_pipelineExecutionDisplayName,
+    updatePipelineExecution_pipelineExecutionArn,
+    updatePipelineExecutionResponse_pipelineExecutionArn,
+    updatePipelineExecutionResponse_httpStatus,
+
+    -- ** UpdateProject
+    updateProject_projectDescription,
+    updateProject_serviceCatalogProvisioningUpdateDetails,
+    updateProject_tags,
+    updateProject_projectName,
+    updateProjectResponse_httpStatus,
+    updateProjectResponse_projectArn,
+
+    -- ** UpdateSpace
+    updateSpace_spaceSettings,
+    updateSpace_domainId,
+    updateSpace_spaceName,
+    updateSpaceResponse_spaceArn,
+    updateSpaceResponse_httpStatus,
+
+    -- ** UpdateTrainingJob
+    updateTrainingJob_profilerConfig,
+    updateTrainingJob_profilerRuleConfigurations,
+    updateTrainingJob_resourceConfig,
+    updateTrainingJob_trainingJobName,
+    updateTrainingJobResponse_httpStatus,
+    updateTrainingJobResponse_trainingJobArn,
+
+    -- ** UpdateTrial
+    updateTrial_displayName,
+    updateTrial_trialName,
+    updateTrialResponse_trialArn,
+    updateTrialResponse_httpStatus,
+
+    -- ** UpdateTrialComponent
+    updateTrialComponent_displayName,
+    updateTrialComponent_endTime,
+    updateTrialComponent_inputArtifacts,
+    updateTrialComponent_inputArtifactsToRemove,
+    updateTrialComponent_outputArtifacts,
+    updateTrialComponent_outputArtifactsToRemove,
+    updateTrialComponent_parameters,
+    updateTrialComponent_parametersToRemove,
+    updateTrialComponent_startTime,
+    updateTrialComponent_status,
+    updateTrialComponent_trialComponentName,
+    updateTrialComponentResponse_trialComponentArn,
+    updateTrialComponentResponse_httpStatus,
+
+    -- ** UpdateUserProfile
+    updateUserProfile_userSettings,
+    updateUserProfile_domainId,
+    updateUserProfile_userProfileName,
+    updateUserProfileResponse_userProfileArn,
+    updateUserProfileResponse_httpStatus,
+
+    -- ** UpdateWorkforce
+    updateWorkforce_oidcConfig,
+    updateWorkforce_sourceIpConfig,
+    updateWorkforce_workforceVpcConfig,
+    updateWorkforce_workforceName,
+    updateWorkforceResponse_httpStatus,
+    updateWorkforceResponse_workforce,
+
+    -- ** UpdateWorkteam
+    updateWorkteam_description,
+    updateWorkteam_memberDefinitions,
+    updateWorkteam_notificationConfiguration,
+    updateWorkteam_workteamName,
+    updateWorkteamResponse_httpStatus,
+    updateWorkteamResponse_workteam,
+
+    -- * Types
+
+    -- ** ActionSource
+    actionSource_sourceId,
+    actionSource_sourceType,
+    actionSource_sourceUri,
+
+    -- ** ActionSummary
+    actionSummary_actionArn,
+    actionSummary_actionName,
+    actionSummary_actionType,
+    actionSummary_creationTime,
+    actionSummary_lastModifiedTime,
+    actionSummary_source,
+    actionSummary_status,
+
+    -- ** AdditionalInferenceSpecificationDefinition
+    additionalInferenceSpecificationDefinition_description,
+    additionalInferenceSpecificationDefinition_supportedContentTypes,
+    additionalInferenceSpecificationDefinition_supportedRealtimeInferenceInstanceTypes,
+    additionalInferenceSpecificationDefinition_supportedResponseMIMETypes,
+    additionalInferenceSpecificationDefinition_supportedTransformInstanceTypes,
+    additionalInferenceSpecificationDefinition_name,
+    additionalInferenceSpecificationDefinition_containers,
+
+    -- ** AgentVersion
+    agentVersion_version,
+    agentVersion_agentCount,
+
+    -- ** Alarm
+    alarm_alarmName,
+
+    -- ** AlgorithmSpecification
+    algorithmSpecification_algorithmName,
+    algorithmSpecification_containerArguments,
+    algorithmSpecification_containerEntrypoint,
+    algorithmSpecification_enableSageMakerMetricsTimeSeries,
+    algorithmSpecification_metricDefinitions,
+    algorithmSpecification_trainingImage,
+    algorithmSpecification_trainingInputMode,
+
+    -- ** AlgorithmStatusDetails
+    algorithmStatusDetails_imageScanStatuses,
+    algorithmStatusDetails_validationStatuses,
+
+    -- ** AlgorithmStatusItem
+    algorithmStatusItem_failureReason,
+    algorithmStatusItem_name,
+    algorithmStatusItem_status,
+
+    -- ** AlgorithmSummary
+    algorithmSummary_algorithmDescription,
+    algorithmSummary_algorithmName,
+    algorithmSummary_algorithmArn,
+    algorithmSummary_creationTime,
+    algorithmSummary_algorithmStatus,
+
+    -- ** AlgorithmValidationProfile
+    algorithmValidationProfile_transformJobDefinition,
+    algorithmValidationProfile_profileName,
+    algorithmValidationProfile_trainingJobDefinition,
+
+    -- ** AlgorithmValidationSpecification
+    algorithmValidationSpecification_validationRole,
+    algorithmValidationSpecification_validationProfiles,
+
+    -- ** AnnotationConsolidationConfig
+    annotationConsolidationConfig_annotationConsolidationLambdaArn,
+
+    -- ** AppDetails
+    appDetails_appName,
+    appDetails_appType,
+    appDetails_creationTime,
+    appDetails_domainId,
+    appDetails_spaceName,
+    appDetails_status,
+    appDetails_userProfileName,
+
+    -- ** AppImageConfigDetails
+    appImageConfigDetails_appImageConfigArn,
+    appImageConfigDetails_appImageConfigName,
+    appImageConfigDetails_creationTime,
+    appImageConfigDetails_kernelGatewayImageConfig,
+    appImageConfigDetails_lastModifiedTime,
+
+    -- ** AppSpecification
+    appSpecification_containerArguments,
+    appSpecification_containerEntrypoint,
+    appSpecification_imageUri,
+
+    -- ** ArtifactSource
+    artifactSource_sourceTypes,
+    artifactSource_sourceUri,
+
+    -- ** ArtifactSourceType
+    artifactSourceType_sourceIdType,
+    artifactSourceType_value,
+
+    -- ** ArtifactSummary
+    artifactSummary_artifactArn,
+    artifactSummary_artifactName,
+    artifactSummary_artifactType,
+    artifactSummary_creationTime,
+    artifactSummary_lastModifiedTime,
+    artifactSummary_source,
+
+    -- ** AssociationSummary
+    associationSummary_associationType,
+    associationSummary_createdBy,
+    associationSummary_creationTime,
+    associationSummary_destinationArn,
+    associationSummary_destinationName,
+    associationSummary_destinationType,
+    associationSummary_sourceArn,
+    associationSummary_sourceName,
+    associationSummary_sourceType,
+
+    -- ** AsyncInferenceClientConfig
+    asyncInferenceClientConfig_maxConcurrentInvocationsPerInstance,
+
+    -- ** AsyncInferenceConfig
+    asyncInferenceConfig_clientConfig,
+    asyncInferenceConfig_outputConfig,
+
+    -- ** AsyncInferenceNotificationConfig
+    asyncInferenceNotificationConfig_errorTopic,
+    asyncInferenceNotificationConfig_successTopic,
+
+    -- ** AsyncInferenceOutputConfig
+    asyncInferenceOutputConfig_kmsKeyId,
+    asyncInferenceOutputConfig_notificationConfig,
+    asyncInferenceOutputConfig_s3OutputPath,
+
+    -- ** AthenaDatasetDefinition
+    athenaDatasetDefinition_kmsKeyId,
+    athenaDatasetDefinition_outputCompression,
+    athenaDatasetDefinition_workGroup,
+    athenaDatasetDefinition_catalog,
+    athenaDatasetDefinition_database,
+    athenaDatasetDefinition_queryString,
+    athenaDatasetDefinition_outputS3Uri,
+    athenaDatasetDefinition_outputFormat,
+
+    -- ** AutoMLCandidate
+    autoMLCandidate_candidateProperties,
+    autoMLCandidate_endTime,
+    autoMLCandidate_failureReason,
+    autoMLCandidate_finalAutoMLJobObjectiveMetric,
+    autoMLCandidate_inferenceContainers,
+    autoMLCandidate_candidateName,
+    autoMLCandidate_objectiveStatus,
+    autoMLCandidate_candidateSteps,
+    autoMLCandidate_candidateStatus,
+    autoMLCandidate_creationTime,
+    autoMLCandidate_lastModifiedTime,
+
+    -- ** AutoMLCandidateGenerationConfig
+    autoMLCandidateGenerationConfig_featureSpecificationS3Uri,
+
+    -- ** AutoMLCandidateStep
+    autoMLCandidateStep_candidateStepType,
+    autoMLCandidateStep_candidateStepArn,
+    autoMLCandidateStep_candidateStepName,
+
+    -- ** AutoMLChannel
+    autoMLChannel_channelType,
+    autoMLChannel_compressionType,
+    autoMLChannel_contentType,
+    autoMLChannel_dataSource,
+    autoMLChannel_targetAttributeName,
+
+    -- ** AutoMLContainerDefinition
+    autoMLContainerDefinition_environment,
+    autoMLContainerDefinition_image,
+    autoMLContainerDefinition_modelDataUrl,
+
+    -- ** AutoMLDataSource
+    autoMLDataSource_s3DataSource,
+
+    -- ** AutoMLDataSplitConfig
+    autoMLDataSplitConfig_validationFraction,
+
+    -- ** AutoMLJobArtifacts
+    autoMLJobArtifacts_candidateDefinitionNotebookLocation,
+    autoMLJobArtifacts_dataExplorationNotebookLocation,
+
+    -- ** AutoMLJobCompletionCriteria
+    autoMLJobCompletionCriteria_maxAutoMLJobRuntimeInSeconds,
+    autoMLJobCompletionCriteria_maxCandidates,
+    autoMLJobCompletionCriteria_maxRuntimePerTrainingJobInSeconds,
+
+    -- ** AutoMLJobConfig
+    autoMLJobConfig_candidateGenerationConfig,
+    autoMLJobConfig_completionCriteria,
+    autoMLJobConfig_dataSplitConfig,
+    autoMLJobConfig_mode,
+    autoMLJobConfig_securityConfig,
+
+    -- ** AutoMLJobObjective
+    autoMLJobObjective_metricName,
+
+    -- ** AutoMLJobStepMetadata
+    autoMLJobStepMetadata_arn,
+
+    -- ** AutoMLJobSummary
+    autoMLJobSummary_endTime,
+    autoMLJobSummary_failureReason,
+    autoMLJobSummary_partialFailureReasons,
+    autoMLJobSummary_autoMLJobName,
+    autoMLJobSummary_autoMLJobArn,
+    autoMLJobSummary_autoMLJobStatus,
+    autoMLJobSummary_autoMLJobSecondaryStatus,
+    autoMLJobSummary_creationTime,
+    autoMLJobSummary_lastModifiedTime,
+
+    -- ** AutoMLOutputDataConfig
+    autoMLOutputDataConfig_kmsKeyId,
+    autoMLOutputDataConfig_s3OutputPath,
+
+    -- ** AutoMLPartialFailureReason
+    autoMLPartialFailureReason_partialFailureMessage,
+
+    -- ** AutoMLS3DataSource
+    autoMLS3DataSource_s3DataType,
+    autoMLS3DataSource_s3Uri,
+
+    -- ** AutoMLSecurityConfig
+    autoMLSecurityConfig_enableInterContainerTrafficEncryption,
+    autoMLSecurityConfig_volumeKmsKeyId,
+    autoMLSecurityConfig_vpcConfig,
+
+    -- ** AutoRollbackConfig
+    autoRollbackConfig_alarms,
+
+    -- ** BatchDataCaptureConfig
+    batchDataCaptureConfig_generateInferenceId,
+    batchDataCaptureConfig_kmsKeyId,
+    batchDataCaptureConfig_destinationS3Uri,
+
+    -- ** BatchDescribeModelPackageError
+    batchDescribeModelPackageError_errorCode,
+    batchDescribeModelPackageError_errorResponse,
+
+    -- ** BatchDescribeModelPackageSummary
+    batchDescribeModelPackageSummary_modelApprovalStatus,
+    batchDescribeModelPackageSummary_modelPackageDescription,
+    batchDescribeModelPackageSummary_modelPackageVersion,
+    batchDescribeModelPackageSummary_modelPackageGroupName,
+    batchDescribeModelPackageSummary_modelPackageArn,
+    batchDescribeModelPackageSummary_creationTime,
+    batchDescribeModelPackageSummary_inferenceSpecification,
+    batchDescribeModelPackageSummary_modelPackageStatus,
+
+    -- ** BatchTransformInput
+    batchTransformInput_endTimeOffset,
+    batchTransformInput_featuresAttribute,
+    batchTransformInput_inferenceAttribute,
+    batchTransformInput_probabilityAttribute,
+    batchTransformInput_probabilityThresholdAttribute,
+    batchTransformInput_s3DataDistributionType,
+    batchTransformInput_s3InputMode,
+    batchTransformInput_startTimeOffset,
+    batchTransformInput_dataCapturedDestinationS3Uri,
+    batchTransformInput_datasetFormat,
+    batchTransformInput_localPath,
+
+    -- ** Bias
+    bias_postTrainingReport,
+    bias_preTrainingReport,
+    bias_report,
+
+    -- ** BlueGreenUpdatePolicy
+    blueGreenUpdatePolicy_maximumExecutionTimeoutInSeconds,
+    blueGreenUpdatePolicy_terminationWaitInSeconds,
+    blueGreenUpdatePolicy_trafficRoutingConfiguration,
+
+    -- ** CacheHitResult
+    cacheHitResult_sourcePipelineExecutionArn,
+
+    -- ** CallbackStepMetadata
+    callbackStepMetadata_callbackToken,
+    callbackStepMetadata_outputParameters,
+    callbackStepMetadata_sqsQueueUrl,
+
+    -- ** CandidateArtifactLocations
+    candidateArtifactLocations_modelInsights,
+    candidateArtifactLocations_explainability,
+
+    -- ** CandidateProperties
+    candidateProperties_candidateArtifactLocations,
+    candidateProperties_candidateMetrics,
+
+    -- ** CanvasAppSettings
+    canvasAppSettings_timeSeriesForecastingSettings,
+
+    -- ** CapacitySize
+    capacitySize_type,
+    capacitySize_value,
+
+    -- ** CaptureContentTypeHeader
+    captureContentTypeHeader_csvContentTypes,
+    captureContentTypeHeader_jsonContentTypes,
+
+    -- ** CaptureOption
+    captureOption_captureMode,
+
+    -- ** CategoricalParameter
+    categoricalParameter_name,
+    categoricalParameter_value,
+
+    -- ** CategoricalParameterRange
+    categoricalParameterRange_name,
+    categoricalParameterRange_values,
+
+    -- ** CategoricalParameterRangeSpecification
+    categoricalParameterRangeSpecification_values,
+
+    -- ** Channel
+    channel_compressionType,
+    channel_contentType,
+    channel_inputMode,
+    channel_recordWrapperType,
+    channel_shuffleConfig,
+    channel_channelName,
+    channel_dataSource,
+
+    -- ** ChannelSpecification
+    channelSpecification_description,
+    channelSpecification_isRequired,
+    channelSpecification_supportedCompressionTypes,
+    channelSpecification_name,
+    channelSpecification_supportedContentTypes,
+    channelSpecification_supportedInputModes,
+
+    -- ** CheckpointConfig
+    checkpointConfig_localPath,
+    checkpointConfig_s3Uri,
+
+    -- ** ClarifyCheckStepMetadata
+    clarifyCheckStepMetadata_baselineUsedForDriftCheckConstraints,
+    clarifyCheckStepMetadata_calculatedBaselineConstraints,
+    clarifyCheckStepMetadata_checkJobArn,
+    clarifyCheckStepMetadata_checkType,
+    clarifyCheckStepMetadata_modelPackageGroupName,
+    clarifyCheckStepMetadata_registerNewBaseline,
+    clarifyCheckStepMetadata_skipCheck,
+    clarifyCheckStepMetadata_violationReport,
+
+    -- ** ClarifyExplainerConfig
+    clarifyExplainerConfig_enableExplanations,
+    clarifyExplainerConfig_inferenceConfig,
+    clarifyExplainerConfig_shapConfig,
+
+    -- ** ClarifyInferenceConfig
+    clarifyInferenceConfig_contentTemplate,
+    clarifyInferenceConfig_featureHeaders,
+    clarifyInferenceConfig_featureTypes,
+    clarifyInferenceConfig_featuresAttribute,
+    clarifyInferenceConfig_labelAttribute,
+    clarifyInferenceConfig_labelHeaders,
+    clarifyInferenceConfig_labelIndex,
+    clarifyInferenceConfig_maxPayloadInMB,
+    clarifyInferenceConfig_maxRecordCount,
+    clarifyInferenceConfig_probabilityAttribute,
+    clarifyInferenceConfig_probabilityIndex,
+
+    -- ** ClarifyShapBaselineConfig
+    clarifyShapBaselineConfig_mimeType,
+    clarifyShapBaselineConfig_shapBaseline,
+    clarifyShapBaselineConfig_shapBaselineUri,
+
+    -- ** ClarifyShapConfig
+    clarifyShapConfig_numberOfSamples,
+    clarifyShapConfig_seed,
+    clarifyShapConfig_textConfig,
+    clarifyShapConfig_useLogit,
+    clarifyShapConfig_shapBaselineConfig,
+
+    -- ** ClarifyTextConfig
+    clarifyTextConfig_language,
+    clarifyTextConfig_granularity,
+
+    -- ** CodeRepository
+    codeRepository_repositoryUrl,
+
+    -- ** CodeRepositorySummary
+    codeRepositorySummary_gitConfig,
+    codeRepositorySummary_codeRepositoryName,
+    codeRepositorySummary_codeRepositoryArn,
+    codeRepositorySummary_creationTime,
+    codeRepositorySummary_lastModifiedTime,
+
+    -- ** CognitoConfig
+    cognitoConfig_userPool,
+    cognitoConfig_clientId,
+
+    -- ** CognitoMemberDefinition
+    cognitoMemberDefinition_userPool,
+    cognitoMemberDefinition_userGroup,
+    cognitoMemberDefinition_clientId,
+
+    -- ** CollectionConfiguration
+    collectionConfiguration_collectionName,
+    collectionConfiguration_collectionParameters,
+
+    -- ** CompilationJobSummary
+    compilationJobSummary_compilationEndTime,
+    compilationJobSummary_compilationStartTime,
+    compilationJobSummary_compilationTargetDevice,
+    compilationJobSummary_compilationTargetPlatformAccelerator,
+    compilationJobSummary_compilationTargetPlatformArch,
+    compilationJobSummary_compilationTargetPlatformOs,
+    compilationJobSummary_lastModifiedTime,
+    compilationJobSummary_compilationJobName,
+    compilationJobSummary_compilationJobArn,
+    compilationJobSummary_creationTime,
+    compilationJobSummary_compilationJobStatus,
+
+    -- ** ConditionStepMetadata
+    conditionStepMetadata_outcome,
+
+    -- ** ContainerDefinition
+    containerDefinition_containerHostname,
+    containerDefinition_environment,
+    containerDefinition_image,
+    containerDefinition_imageConfig,
+    containerDefinition_inferenceSpecificationName,
+    containerDefinition_mode,
+    containerDefinition_modelDataUrl,
+    containerDefinition_modelPackageName,
+    containerDefinition_multiModelConfig,
+
+    -- ** ContextSource
+    contextSource_sourceId,
+    contextSource_sourceType,
+    contextSource_sourceUri,
+
+    -- ** ContextSummary
+    contextSummary_contextArn,
+    contextSummary_contextName,
+    contextSummary_contextType,
+    contextSummary_creationTime,
+    contextSummary_lastModifiedTime,
+    contextSummary_source,
+
+    -- ** ContinuousParameterRange
+    continuousParameterRange_scalingType,
+    continuousParameterRange_name,
+    continuousParameterRange_minValue,
+    continuousParameterRange_maxValue,
+
+    -- ** ContinuousParameterRangeSpecification
+    continuousParameterRangeSpecification_minValue,
+    continuousParameterRangeSpecification_maxValue,
+
+    -- ** CustomImage
+    customImage_imageVersionNumber,
+    customImage_imageName,
+    customImage_appImageConfigName,
+
+    -- ** DataCaptureConfig
+    dataCaptureConfig_captureContentTypeHeader,
+    dataCaptureConfig_enableCapture,
+    dataCaptureConfig_kmsKeyId,
+    dataCaptureConfig_initialSamplingPercentage,
+    dataCaptureConfig_destinationS3Uri,
+    dataCaptureConfig_captureOptions,
+
+    -- ** DataCaptureConfigSummary
+    dataCaptureConfigSummary_enableCapture,
+    dataCaptureConfigSummary_captureStatus,
+    dataCaptureConfigSummary_currentSamplingPercentage,
+    dataCaptureConfigSummary_destinationS3Uri,
+    dataCaptureConfigSummary_kmsKeyId,
+
+    -- ** DataCatalogConfig
+    dataCatalogConfig_tableName,
+    dataCatalogConfig_catalog,
+    dataCatalogConfig_database,
+
+    -- ** DataProcessing
+    dataProcessing_inputFilter,
+    dataProcessing_joinSource,
+    dataProcessing_outputFilter,
+
+    -- ** DataQualityAppSpecification
+    dataQualityAppSpecification_containerArguments,
+    dataQualityAppSpecification_containerEntrypoint,
+    dataQualityAppSpecification_environment,
+    dataQualityAppSpecification_postAnalyticsProcessorSourceUri,
+    dataQualityAppSpecification_recordPreprocessorSourceUri,
+    dataQualityAppSpecification_imageUri,
+
+    -- ** DataQualityBaselineConfig
+    dataQualityBaselineConfig_baseliningJobName,
+    dataQualityBaselineConfig_constraintsResource,
+    dataQualityBaselineConfig_statisticsResource,
+
+    -- ** DataQualityJobInput
+    dataQualityJobInput_batchTransformInput,
+    dataQualityJobInput_endpointInput,
+
+    -- ** DataSource
+    dataSource_fileSystemDataSource,
+    dataSource_s3DataSource,
+
+    -- ** DatasetDefinition
+    datasetDefinition_athenaDatasetDefinition,
+    datasetDefinition_dataDistributionType,
+    datasetDefinition_inputMode,
+    datasetDefinition_localPath,
+    datasetDefinition_redshiftDatasetDefinition,
+
+    -- ** DebugHookConfig
+    debugHookConfig_collectionConfigurations,
+    debugHookConfig_hookParameters,
+    debugHookConfig_localPath,
+    debugHookConfig_s3OutputPath,
+
+    -- ** DebugRuleConfiguration
+    debugRuleConfiguration_instanceType,
+    debugRuleConfiguration_localPath,
+    debugRuleConfiguration_ruleParameters,
+    debugRuleConfiguration_s3OutputPath,
+    debugRuleConfiguration_volumeSizeInGB,
+    debugRuleConfiguration_ruleConfigurationName,
+    debugRuleConfiguration_ruleEvaluatorImage,
+
+    -- ** DebugRuleEvaluationStatus
+    debugRuleEvaluationStatus_lastModifiedTime,
+    debugRuleEvaluationStatus_ruleConfigurationName,
+    debugRuleEvaluationStatus_ruleEvaluationJobArn,
+    debugRuleEvaluationStatus_ruleEvaluationStatus,
+    debugRuleEvaluationStatus_statusDetails,
+
+    -- ** DefaultSpaceSettings
+    defaultSpaceSettings_executionRole,
+    defaultSpaceSettings_jupyterServerAppSettings,
+    defaultSpaceSettings_kernelGatewayAppSettings,
+    defaultSpaceSettings_securityGroups,
+
+    -- ** DeployedImage
+    deployedImage_resolutionTime,
+    deployedImage_resolvedImage,
+    deployedImage_specifiedImage,
+
+    -- ** DeploymentConfig
+    deploymentConfig_autoRollbackConfiguration,
+    deploymentConfig_blueGreenUpdatePolicy,
+
+    -- ** DeploymentStage
+    deploymentStage_deploymentConfig,
+    deploymentStage_stageName,
+    deploymentStage_deviceSelectionConfig,
+
+    -- ** DeploymentStageStatusSummary
+    deploymentStageStatusSummary_stageName,
+    deploymentStageStatusSummary_deviceSelectionConfig,
+    deploymentStageStatusSummary_deploymentConfig,
+    deploymentStageStatusSummary_deploymentStatus,
+
+    -- ** DesiredWeightAndCapacity
+    desiredWeightAndCapacity_desiredInstanceCount,
+    desiredWeightAndCapacity_desiredWeight,
+    desiredWeightAndCapacity_variantName,
+
+    -- ** Device
+    device_description,
+    device_iotThingName,
+    device_deviceName,
+
+    -- ** DeviceDeploymentSummary
+    deviceDeploymentSummary_deployedStageName,
+    deviceDeploymentSummary_deploymentStartTime,
+    deviceDeploymentSummary_description,
+    deviceDeploymentSummary_deviceDeploymentStatus,
+    deviceDeploymentSummary_deviceDeploymentStatusMessage,
+    deviceDeploymentSummary_deviceFleetName,
+    deviceDeploymentSummary_edgeDeploymentPlanArn,
+    deviceDeploymentSummary_edgeDeploymentPlanName,
+    deviceDeploymentSummary_stageName,
+    deviceDeploymentSummary_deviceName,
+    deviceDeploymentSummary_deviceArn,
+
+    -- ** DeviceFleetSummary
+    deviceFleetSummary_creationTime,
+    deviceFleetSummary_lastModifiedTime,
+    deviceFleetSummary_deviceFleetArn,
+    deviceFleetSummary_deviceFleetName,
+
+    -- ** DeviceSelectionConfig
+    deviceSelectionConfig_deviceNameContains,
+    deviceSelectionConfig_deviceNames,
+    deviceSelectionConfig_percentage,
+    deviceSelectionConfig_deviceSubsetType,
+
+    -- ** DeviceStats
+    deviceStats_connectedDeviceCount,
+    deviceStats_registeredDeviceCount,
+
+    -- ** DeviceSummary
+    deviceSummary_agentVersion,
+    deviceSummary_description,
+    deviceSummary_deviceFleetName,
+    deviceSummary_iotThingName,
+    deviceSummary_latestHeartbeat,
+    deviceSummary_models,
+    deviceSummary_registrationTime,
+    deviceSummary_deviceName,
+    deviceSummary_deviceArn,
+
+    -- ** DomainDetails
+    domainDetails_creationTime,
+    domainDetails_domainArn,
+    domainDetails_domainId,
+    domainDetails_domainName,
+    domainDetails_lastModifiedTime,
+    domainDetails_status,
+    domainDetails_url,
+
+    -- ** DomainSettings
+    domainSettings_executionRoleIdentityConfig,
+    domainSettings_rStudioServerProDomainSettings,
+    domainSettings_securityGroupIds,
+
+    -- ** DomainSettingsForUpdate
+    domainSettingsForUpdate_executionRoleIdentityConfig,
+    domainSettingsForUpdate_rStudioServerProDomainSettingsForUpdate,
+    domainSettingsForUpdate_securityGroupIds,
+
+    -- ** DriftCheckBaselines
+    driftCheckBaselines_bias,
+    driftCheckBaselines_explainability,
+    driftCheckBaselines_modelDataQuality,
+    driftCheckBaselines_modelQuality,
+
+    -- ** DriftCheckBias
+    driftCheckBias_configFile,
+    driftCheckBias_postTrainingConstraints,
+    driftCheckBias_preTrainingConstraints,
+
+    -- ** DriftCheckExplainability
+    driftCheckExplainability_configFile,
+    driftCheckExplainability_constraints,
+
+    -- ** DriftCheckModelDataQuality
+    driftCheckModelDataQuality_constraints,
+    driftCheckModelDataQuality_statistics,
+
+    -- ** DriftCheckModelQuality
+    driftCheckModelQuality_constraints,
+    driftCheckModelQuality_statistics,
+
+    -- ** EMRStepMetadata
+    eMRStepMetadata_clusterId,
+    eMRStepMetadata_logFilePath,
+    eMRStepMetadata_stepId,
+    eMRStepMetadata_stepName,
+
+    -- ** Edge
+    edge_associationType,
+    edge_destinationArn,
+    edge_sourceArn,
+
+    -- ** EdgeDeploymentConfig
+    edgeDeploymentConfig_failureHandlingPolicy,
+
+    -- ** EdgeDeploymentModelConfig
+    edgeDeploymentModelConfig_modelHandle,
+    edgeDeploymentModelConfig_edgePackagingJobName,
+
+    -- ** EdgeDeploymentPlanSummary
+    edgeDeploymentPlanSummary_creationTime,
+    edgeDeploymentPlanSummary_lastModifiedTime,
+    edgeDeploymentPlanSummary_edgeDeploymentPlanArn,
+    edgeDeploymentPlanSummary_edgeDeploymentPlanName,
+    edgeDeploymentPlanSummary_deviceFleetName,
+    edgeDeploymentPlanSummary_edgeDeploymentSuccess,
+    edgeDeploymentPlanSummary_edgeDeploymentPending,
+    edgeDeploymentPlanSummary_edgeDeploymentFailed,
+
+    -- ** EdgeDeploymentStatus
+    edgeDeploymentStatus_edgeDeploymentStageStartTime,
+    edgeDeploymentStatus_edgeDeploymentStatusMessage,
+    edgeDeploymentStatus_stageStatus,
+    edgeDeploymentStatus_edgeDeploymentSuccessInStage,
+    edgeDeploymentStatus_edgeDeploymentPendingInStage,
+    edgeDeploymentStatus_edgeDeploymentFailedInStage,
+
+    -- ** EdgeModel
+    edgeModel_latestInference,
+    edgeModel_latestSampleTime,
+    edgeModel_modelName,
+    edgeModel_modelVersion,
+
+    -- ** EdgeModelStat
+    edgeModelStat_modelName,
+    edgeModelStat_modelVersion,
+    edgeModelStat_offlineDeviceCount,
+    edgeModelStat_connectedDeviceCount,
+    edgeModelStat_activeDeviceCount,
+    edgeModelStat_samplingDeviceCount,
+
+    -- ** EdgeModelSummary
+    edgeModelSummary_modelName,
+    edgeModelSummary_modelVersion,
+
+    -- ** EdgeOutputConfig
+    edgeOutputConfig_kmsKeyId,
+    edgeOutputConfig_presetDeploymentConfig,
+    edgeOutputConfig_presetDeploymentType,
+    edgeOutputConfig_s3OutputLocation,
+
+    -- ** EdgePackagingJobSummary
+    edgePackagingJobSummary_compilationJobName,
+    edgePackagingJobSummary_creationTime,
+    edgePackagingJobSummary_lastModifiedTime,
+    edgePackagingJobSummary_modelName,
+    edgePackagingJobSummary_modelVersion,
+    edgePackagingJobSummary_edgePackagingJobArn,
+    edgePackagingJobSummary_edgePackagingJobName,
+    edgePackagingJobSummary_edgePackagingJobStatus,
+
+    -- ** EdgePresetDeploymentOutput
+    edgePresetDeploymentOutput_artifact,
+    edgePresetDeploymentOutput_status,
+    edgePresetDeploymentOutput_statusMessage,
+    edgePresetDeploymentOutput_type,
+
+    -- ** Endpoint
+    endpoint_dataCaptureConfig,
+    endpoint_failureReason,
+    endpoint_monitoringSchedules,
+    endpoint_productionVariants,
+    endpoint_shadowProductionVariants,
+    endpoint_tags,
+    endpoint_endpointName,
+    endpoint_endpointArn,
+    endpoint_endpointConfigName,
+    endpoint_endpointStatus,
+    endpoint_creationTime,
+    endpoint_lastModifiedTime,
+
+    -- ** EndpointConfigSummary
+    endpointConfigSummary_endpointConfigName,
+    endpointConfigSummary_endpointConfigArn,
+    endpointConfigSummary_creationTime,
+
+    -- ** EndpointInfo
+    endpointInfo_endpointName,
+
+    -- ** EndpointInput
+    endpointInput_endTimeOffset,
+    endpointInput_featuresAttribute,
+    endpointInput_inferenceAttribute,
+    endpointInput_probabilityAttribute,
+    endpointInput_probabilityThresholdAttribute,
+    endpointInput_s3DataDistributionType,
+    endpointInput_s3InputMode,
+    endpointInput_startTimeOffset,
+    endpointInput_endpointName,
+    endpointInput_localPath,
+
+    -- ** EndpointInputConfiguration
+    endpointInputConfiguration_environmentParameterRanges,
+    endpointInputConfiguration_inferenceSpecificationName,
+    endpointInputConfiguration_instanceType,
+
+    -- ** EndpointMetadata
+    endpointMetadata_endpointConfigName,
+    endpointMetadata_endpointStatus,
+    endpointMetadata_failureReason,
+    endpointMetadata_endpointName,
+
+    -- ** EndpointOutputConfiguration
+    endpointOutputConfiguration_endpointName,
+    endpointOutputConfiguration_variantName,
+    endpointOutputConfiguration_instanceType,
+    endpointOutputConfiguration_initialInstanceCount,
+
+    -- ** EndpointPerformance
+    endpointPerformance_metrics,
+    endpointPerformance_endpointInfo,
+
+    -- ** EndpointSummary
+    endpointSummary_endpointName,
+    endpointSummary_endpointArn,
+    endpointSummary_creationTime,
+    endpointSummary_lastModifiedTime,
+    endpointSummary_endpointStatus,
+
+    -- ** EnvironmentParameter
+    environmentParameter_key,
+    environmentParameter_valueType,
+    environmentParameter_value,
+
+    -- ** EnvironmentParameterRanges
+    environmentParameterRanges_categoricalParameterRanges,
+
+    -- ** Experiment
+    experiment_createdBy,
+    experiment_creationTime,
+    experiment_description,
+    experiment_displayName,
+    experiment_experimentArn,
+    experiment_experimentName,
+    experiment_lastModifiedBy,
+    experiment_lastModifiedTime,
+    experiment_source,
+    experiment_tags,
+
+    -- ** ExperimentConfig
+    experimentConfig_experimentName,
+    experimentConfig_runName,
+    experimentConfig_trialComponentDisplayName,
+    experimentConfig_trialName,
+
+    -- ** ExperimentSource
+    experimentSource_sourceType,
+    experimentSource_sourceArn,
+
+    -- ** ExperimentSummary
+    experimentSummary_creationTime,
+    experimentSummary_displayName,
+    experimentSummary_experimentArn,
+    experimentSummary_experimentName,
+    experimentSummary_experimentSource,
+    experimentSummary_lastModifiedTime,
+
+    -- ** Explainability
+    explainability_report,
+
+    -- ** ExplainerConfig
+    explainerConfig_clarifyExplainerConfig,
+
+    -- ** FailStepMetadata
+    failStepMetadata_errorMessage,
+
+    -- ** FeatureDefinition
+    featureDefinition_featureName,
+    featureDefinition_featureType,
+
+    -- ** FeatureGroup
+    featureGroup_creationTime,
+    featureGroup_description,
+    featureGroup_eventTimeFeatureName,
+    featureGroup_failureReason,
+    featureGroup_featureDefinitions,
+    featureGroup_featureGroupArn,
+    featureGroup_featureGroupName,
+    featureGroup_featureGroupStatus,
+    featureGroup_lastModifiedTime,
+    featureGroup_lastUpdateStatus,
+    featureGroup_offlineStoreConfig,
+    featureGroup_offlineStoreStatus,
+    featureGroup_onlineStoreConfig,
+    featureGroup_recordIdentifierFeatureName,
+    featureGroup_roleArn,
+    featureGroup_tags,
+
+    -- ** FeatureGroupSummary
+    featureGroupSummary_featureGroupStatus,
+    featureGroupSummary_offlineStoreStatus,
+    featureGroupSummary_featureGroupName,
+    featureGroupSummary_featureGroupArn,
+    featureGroupSummary_creationTime,
+
+    -- ** FeatureMetadata
+    featureMetadata_creationTime,
+    featureMetadata_description,
+    featureMetadata_featureGroupArn,
+    featureMetadata_featureGroupName,
+    featureMetadata_featureName,
+    featureMetadata_featureType,
+    featureMetadata_lastModifiedTime,
+    featureMetadata_parameters,
+
+    -- ** FeatureParameter
+    featureParameter_key,
+    featureParameter_value,
+
+    -- ** FileSource
+    fileSource_contentDigest,
+    fileSource_contentType,
+    fileSource_s3Uri,
+
+    -- ** FileSystemConfig
+    fileSystemConfig_defaultGid,
+    fileSystemConfig_defaultUid,
+    fileSystemConfig_mountPath,
+
+    -- ** FileSystemDataSource
+    fileSystemDataSource_fileSystemId,
+    fileSystemDataSource_fileSystemAccessMode,
+    fileSystemDataSource_fileSystemType,
+    fileSystemDataSource_directoryPath,
+
+    -- ** Filter
+    filter_operator,
+    filter_value,
+    filter_name,
+
+    -- ** FinalAutoMLJobObjectiveMetric
+    finalAutoMLJobObjectiveMetric_type,
+    finalAutoMLJobObjectiveMetric_metricName,
+    finalAutoMLJobObjectiveMetric_value,
+
+    -- ** FinalHyperParameterTuningJobObjectiveMetric
+    finalHyperParameterTuningJobObjectiveMetric_type,
+    finalHyperParameterTuningJobObjectiveMetric_metricName,
+    finalHyperParameterTuningJobObjectiveMetric_value,
+
+    -- ** FlowDefinitionOutputConfig
+    flowDefinitionOutputConfig_kmsKeyId,
+    flowDefinitionOutputConfig_s3OutputPath,
+
+    -- ** FlowDefinitionSummary
+    flowDefinitionSummary_failureReason,
+    flowDefinitionSummary_flowDefinitionName,
+    flowDefinitionSummary_flowDefinitionArn,
+    flowDefinitionSummary_flowDefinitionStatus,
+    flowDefinitionSummary_creationTime,
+
+    -- ** GitConfig
+    gitConfig_branch,
+    gitConfig_secretArn,
+    gitConfig_repositoryUrl,
+
+    -- ** GitConfigForUpdate
+    gitConfigForUpdate_secretArn,
+
+    -- ** HubContentDependency
+    hubContentDependency_dependencyCopyPath,
+    hubContentDependency_dependencyOriginPath,
+
+    -- ** HubContentInfo
+    hubContentInfo_hubContentDescription,
+    hubContentInfo_hubContentDisplayName,
+    hubContentInfo_hubContentSearchKeywords,
+    hubContentInfo_hubContentName,
+    hubContentInfo_hubContentArn,
+    hubContentInfo_hubContentVersion,
+    hubContentInfo_hubContentType,
+    hubContentInfo_documentSchemaVersion,
+    hubContentInfo_hubContentStatus,
+    hubContentInfo_creationTime,
+
+    -- ** HubInfo
+    hubInfo_hubDescription,
+    hubInfo_hubDisplayName,
+    hubInfo_hubSearchKeywords,
+    hubInfo_hubName,
+    hubInfo_hubArn,
+    hubInfo_hubStatus,
+    hubInfo_creationTime,
+    hubInfo_lastModifiedTime,
+
+    -- ** HubS3StorageConfig
+    hubS3StorageConfig_s3OutputPath,
+
+    -- ** HumanLoopActivationConditionsConfig
+    humanLoopActivationConditionsConfig_humanLoopActivationConditions,
+
+    -- ** HumanLoopActivationConfig
+    humanLoopActivationConfig_humanLoopActivationConditionsConfig,
+
+    -- ** HumanLoopConfig
+    humanLoopConfig_publicWorkforceTaskPrice,
+    humanLoopConfig_taskAvailabilityLifetimeInSeconds,
+    humanLoopConfig_taskKeywords,
+    humanLoopConfig_taskTimeLimitInSeconds,
+    humanLoopConfig_workteamArn,
+    humanLoopConfig_humanTaskUiArn,
+    humanLoopConfig_taskTitle,
+    humanLoopConfig_taskDescription,
+    humanLoopConfig_taskCount,
+
+    -- ** HumanLoopRequestSource
+    humanLoopRequestSource_awsManagedHumanLoopRequestSource,
+
+    -- ** HumanTaskConfig
+    humanTaskConfig_maxConcurrentTaskCount,
+    humanTaskConfig_publicWorkforceTaskPrice,
+    humanTaskConfig_taskAvailabilityLifetimeInSeconds,
+    humanTaskConfig_taskKeywords,
+    humanTaskConfig_workteamArn,
+    humanTaskConfig_uiConfig,
+    humanTaskConfig_preHumanTaskLambdaArn,
+    humanTaskConfig_taskTitle,
+    humanTaskConfig_taskDescription,
+    humanTaskConfig_numberOfHumanWorkersPerDataObject,
+    humanTaskConfig_taskTimeLimitInSeconds,
+    humanTaskConfig_annotationConsolidationConfig,
+
+    -- ** HumanTaskUiSummary
+    humanTaskUiSummary_humanTaskUiName,
+    humanTaskUiSummary_humanTaskUiArn,
+    humanTaskUiSummary_creationTime,
+
+    -- ** HyperParameterAlgorithmSpecification
+    hyperParameterAlgorithmSpecification_algorithmName,
+    hyperParameterAlgorithmSpecification_metricDefinitions,
+    hyperParameterAlgorithmSpecification_trainingImage,
+    hyperParameterAlgorithmSpecification_trainingInputMode,
+
+    -- ** HyperParameterSpecification
+    hyperParameterSpecification_defaultValue,
+    hyperParameterSpecification_description,
+    hyperParameterSpecification_isRequired,
+    hyperParameterSpecification_isTunable,
+    hyperParameterSpecification_range,
+    hyperParameterSpecification_name,
+    hyperParameterSpecification_type,
+
+    -- ** HyperParameterTrainingJobDefinition
+    hyperParameterTrainingJobDefinition_checkpointConfig,
+    hyperParameterTrainingJobDefinition_definitionName,
+    hyperParameterTrainingJobDefinition_enableInterContainerTrafficEncryption,
+    hyperParameterTrainingJobDefinition_enableManagedSpotTraining,
+    hyperParameterTrainingJobDefinition_enableNetworkIsolation,
+    hyperParameterTrainingJobDefinition_hyperParameterRanges,
+    hyperParameterTrainingJobDefinition_hyperParameterTuningResourceConfig,
+    hyperParameterTrainingJobDefinition_inputDataConfig,
+    hyperParameterTrainingJobDefinition_resourceConfig,
+    hyperParameterTrainingJobDefinition_retryStrategy,
+    hyperParameterTrainingJobDefinition_staticHyperParameters,
+    hyperParameterTrainingJobDefinition_tuningObjective,
+    hyperParameterTrainingJobDefinition_vpcConfig,
+    hyperParameterTrainingJobDefinition_algorithmSpecification,
+    hyperParameterTrainingJobDefinition_roleArn,
+    hyperParameterTrainingJobDefinition_outputDataConfig,
+    hyperParameterTrainingJobDefinition_stoppingCondition,
+
+    -- ** HyperParameterTrainingJobSummary
+    hyperParameterTrainingJobSummary_failureReason,
+    hyperParameterTrainingJobSummary_finalHyperParameterTuningJobObjectiveMetric,
+    hyperParameterTrainingJobSummary_objectiveStatus,
+    hyperParameterTrainingJobSummary_trainingEndTime,
+    hyperParameterTrainingJobSummary_trainingJobDefinitionName,
+    hyperParameterTrainingJobSummary_trainingStartTime,
+    hyperParameterTrainingJobSummary_tuningJobName,
+    hyperParameterTrainingJobSummary_trainingJobName,
+    hyperParameterTrainingJobSummary_trainingJobArn,
+    hyperParameterTrainingJobSummary_creationTime,
+    hyperParameterTrainingJobSummary_trainingJobStatus,
+    hyperParameterTrainingJobSummary_tunedHyperParameters,
+
+    -- ** HyperParameterTuningInstanceConfig
+    hyperParameterTuningInstanceConfig_instanceType,
+    hyperParameterTuningInstanceConfig_instanceCount,
+    hyperParameterTuningInstanceConfig_volumeSizeInGB,
+
+    -- ** HyperParameterTuningJobConfig
+    hyperParameterTuningJobConfig_hyperParameterTuningJobObjective,
+    hyperParameterTuningJobConfig_parameterRanges,
+    hyperParameterTuningJobConfig_randomSeed,
+    hyperParameterTuningJobConfig_strategyConfig,
+    hyperParameterTuningJobConfig_trainingJobEarlyStoppingType,
+    hyperParameterTuningJobConfig_tuningJobCompletionCriteria,
+    hyperParameterTuningJobConfig_strategy,
+    hyperParameterTuningJobConfig_resourceLimits,
+
+    -- ** HyperParameterTuningJobObjective
+    hyperParameterTuningJobObjective_type,
+    hyperParameterTuningJobObjective_metricName,
+
+    -- ** HyperParameterTuningJobSearchEntity
+    hyperParameterTuningJobSearchEntity_bestTrainingJob,
+    hyperParameterTuningJobSearchEntity_creationTime,
+    hyperParameterTuningJobSearchEntity_failureReason,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningEndTime,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobArn,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobConfig,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobName,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobStatus,
+    hyperParameterTuningJobSearchEntity_lastModifiedTime,
+    hyperParameterTuningJobSearchEntity_objectiveStatusCounters,
+    hyperParameterTuningJobSearchEntity_overallBestTrainingJob,
+    hyperParameterTuningJobSearchEntity_tags,
+    hyperParameterTuningJobSearchEntity_trainingJobDefinition,
+    hyperParameterTuningJobSearchEntity_trainingJobDefinitions,
+    hyperParameterTuningJobSearchEntity_trainingJobStatusCounters,
+    hyperParameterTuningJobSearchEntity_warmStartConfig,
+
+    -- ** HyperParameterTuningJobStrategyConfig
+    hyperParameterTuningJobStrategyConfig_hyperbandStrategyConfig,
+
+    -- ** HyperParameterTuningJobSummary
+    hyperParameterTuningJobSummary_hyperParameterTuningEndTime,
+    hyperParameterTuningJobSummary_lastModifiedTime,
+    hyperParameterTuningJobSummary_resourceLimits,
+    hyperParameterTuningJobSummary_hyperParameterTuningJobName,
+    hyperParameterTuningJobSummary_hyperParameterTuningJobArn,
+    hyperParameterTuningJobSummary_hyperParameterTuningJobStatus,
+    hyperParameterTuningJobSummary_strategy,
+    hyperParameterTuningJobSummary_creationTime,
+    hyperParameterTuningJobSummary_trainingJobStatusCounters,
+    hyperParameterTuningJobSummary_objectiveStatusCounters,
+
+    -- ** HyperParameterTuningJobWarmStartConfig
+    hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs,
+    hyperParameterTuningJobWarmStartConfig_warmStartType,
+
+    -- ** HyperParameterTuningResourceConfig
+    hyperParameterTuningResourceConfig_allocationStrategy,
+    hyperParameterTuningResourceConfig_instanceConfigs,
+    hyperParameterTuningResourceConfig_instanceCount,
+    hyperParameterTuningResourceConfig_instanceType,
+    hyperParameterTuningResourceConfig_volumeKmsKeyId,
+    hyperParameterTuningResourceConfig_volumeSizeInGB,
+
+    -- ** HyperbandStrategyConfig
+    hyperbandStrategyConfig_maxResource,
+    hyperbandStrategyConfig_minResource,
+
+    -- ** Image
+    image_description,
+    image_displayName,
+    image_failureReason,
+    image_creationTime,
+    image_imageArn,
+    image_imageName,
+    image_imageStatus,
+    image_lastModifiedTime,
+
+    -- ** ImageConfig
+    imageConfig_repositoryAuthConfig,
+    imageConfig_repositoryAccessMode,
+
+    -- ** ImageVersion
+    imageVersion_failureReason,
+    imageVersion_creationTime,
+    imageVersion_imageArn,
+    imageVersion_imageVersionArn,
+    imageVersion_imageVersionStatus,
+    imageVersion_lastModifiedTime,
+    imageVersion_version,
+
+    -- ** InferenceExecutionConfig
+    inferenceExecutionConfig_mode,
+
+    -- ** InferenceExperimentDataStorageConfig
+    inferenceExperimentDataStorageConfig_contentType,
+    inferenceExperimentDataStorageConfig_kmsKey,
+    inferenceExperimentDataStorageConfig_destination,
+
+    -- ** InferenceExperimentSchedule
+    inferenceExperimentSchedule_endTime,
+    inferenceExperimentSchedule_startTime,
+
+    -- ** InferenceExperimentSummary
+    inferenceExperimentSummary_completionTime,
+    inferenceExperimentSummary_description,
+    inferenceExperimentSummary_roleArn,
+    inferenceExperimentSummary_schedule,
+    inferenceExperimentSummary_statusReason,
+    inferenceExperimentSummary_name,
+    inferenceExperimentSummary_type,
+    inferenceExperimentSummary_status,
+    inferenceExperimentSummary_creationTime,
+    inferenceExperimentSummary_lastModifiedTime,
+
+    -- ** InferenceMetrics
+    inferenceMetrics_maxInvocations,
+    inferenceMetrics_modelLatency,
+
+    -- ** InferenceRecommendation
+    inferenceRecommendation_metrics,
+    inferenceRecommendation_endpointConfiguration,
+    inferenceRecommendation_modelConfiguration,
+
+    -- ** InferenceRecommendationsJob
+    inferenceRecommendationsJob_completionTime,
+    inferenceRecommendationsJob_failureReason,
+    inferenceRecommendationsJob_jobName,
+    inferenceRecommendationsJob_jobDescription,
+    inferenceRecommendationsJob_jobType,
+    inferenceRecommendationsJob_jobArn,
+    inferenceRecommendationsJob_status,
+    inferenceRecommendationsJob_creationTime,
+    inferenceRecommendationsJob_roleArn,
+    inferenceRecommendationsJob_lastModifiedTime,
+
+    -- ** InferenceRecommendationsJobStep
+    inferenceRecommendationsJobStep_inferenceBenchmark,
+    inferenceRecommendationsJobStep_stepType,
+    inferenceRecommendationsJobStep_jobName,
+    inferenceRecommendationsJobStep_status,
+
+    -- ** InferenceSpecification
+    inferenceSpecification_supportedRealtimeInferenceInstanceTypes,
+    inferenceSpecification_supportedTransformInstanceTypes,
+    inferenceSpecification_containers,
+    inferenceSpecification_supportedContentTypes,
+    inferenceSpecification_supportedResponseMIMETypes,
+
+    -- ** InputConfig
+    inputConfig_frameworkVersion,
+    inputConfig_s3Uri,
+    inputConfig_dataInputConfig,
+    inputConfig_framework,
+
+    -- ** InstanceGroup
+    instanceGroup_instanceType,
+    instanceGroup_instanceCount,
+    instanceGroup_instanceGroupName,
+
+    -- ** InstanceMetadataServiceConfiguration
+    instanceMetadataServiceConfiguration_minimumInstanceMetadataServiceVersion,
+
+    -- ** IntegerParameterRange
+    integerParameterRange_scalingType,
+    integerParameterRange_name,
+    integerParameterRange_minValue,
+    integerParameterRange_maxValue,
+
+    -- ** IntegerParameterRangeSpecification
+    integerParameterRangeSpecification_minValue,
+    integerParameterRangeSpecification_maxValue,
+
+    -- ** JupyterServerAppSettings
+    jupyterServerAppSettings_codeRepositories,
+    jupyterServerAppSettings_defaultResourceSpec,
+    jupyterServerAppSettings_lifecycleConfigArns,
+
+    -- ** KernelGatewayAppSettings
+    kernelGatewayAppSettings_customImages,
+    kernelGatewayAppSettings_defaultResourceSpec,
+    kernelGatewayAppSettings_lifecycleConfigArns,
+
+    -- ** KernelGatewayImageConfig
+    kernelGatewayImageConfig_fileSystemConfig,
+    kernelGatewayImageConfig_kernelSpecs,
+
+    -- ** KernelSpec
+    kernelSpec_displayName,
+    kernelSpec_name,
+
+    -- ** LabelCounters
+    labelCounters_failedNonRetryableError,
+    labelCounters_humanLabeled,
+    labelCounters_machineLabeled,
+    labelCounters_totalLabeled,
+    labelCounters_unlabeled,
+
+    -- ** LabelCountersForWorkteam
+    labelCountersForWorkteam_humanLabeled,
+    labelCountersForWorkteam_pendingHuman,
+    labelCountersForWorkteam_total,
+
+    -- ** LabelingJobAlgorithmsConfig
+    labelingJobAlgorithmsConfig_initialActiveLearningModelArn,
+    labelingJobAlgorithmsConfig_labelingJobResourceConfig,
+    labelingJobAlgorithmsConfig_labelingJobAlgorithmSpecificationArn,
+
+    -- ** LabelingJobDataAttributes
+    labelingJobDataAttributes_contentClassifiers,
+
+    -- ** LabelingJobDataSource
+    labelingJobDataSource_s3DataSource,
+    labelingJobDataSource_snsDataSource,
+
+    -- ** LabelingJobForWorkteamSummary
+    labelingJobForWorkteamSummary_labelCounters,
+    labelingJobForWorkteamSummary_labelingJobName,
+    labelingJobForWorkteamSummary_numberOfHumanWorkersPerDataObject,
+    labelingJobForWorkteamSummary_jobReferenceCode,
+    labelingJobForWorkteamSummary_workRequesterAccountId,
+    labelingJobForWorkteamSummary_creationTime,
+
+    -- ** LabelingJobInputConfig
+    labelingJobInputConfig_dataAttributes,
+    labelingJobInputConfig_dataSource,
+
+    -- ** LabelingJobOutput
+    labelingJobOutput_finalActiveLearningModelArn,
+    labelingJobOutput_outputDatasetS3Uri,
+
+    -- ** LabelingJobOutputConfig
+    labelingJobOutputConfig_kmsKeyId,
+    labelingJobOutputConfig_snsTopicArn,
+    labelingJobOutputConfig_s3OutputPath,
+
+    -- ** LabelingJobResourceConfig
+    labelingJobResourceConfig_volumeKmsKeyId,
+    labelingJobResourceConfig_vpcConfig,
+
+    -- ** LabelingJobS3DataSource
+    labelingJobS3DataSource_manifestS3Uri,
+
+    -- ** LabelingJobSnsDataSource
+    labelingJobSnsDataSource_snsTopicArn,
+
+    -- ** LabelingJobStoppingConditions
+    labelingJobStoppingConditions_maxHumanLabeledObjectCount,
+    labelingJobStoppingConditions_maxPercentageOfInputDatasetLabeled,
+
+    -- ** LabelingJobSummary
+    labelingJobSummary_annotationConsolidationLambdaArn,
+    labelingJobSummary_failureReason,
+    labelingJobSummary_inputConfig,
+    labelingJobSummary_labelingJobOutput,
+    labelingJobSummary_labelingJobName,
+    labelingJobSummary_labelingJobArn,
+    labelingJobSummary_creationTime,
+    labelingJobSummary_lastModifiedTime,
+    labelingJobSummary_labelingJobStatus,
+    labelingJobSummary_labelCounters,
+    labelingJobSummary_workteamArn,
+    labelingJobSummary_preHumanTaskLambdaArn,
+
+    -- ** LambdaStepMetadata
+    lambdaStepMetadata_arn,
+    lambdaStepMetadata_outputParameters,
+
+    -- ** LastUpdateStatus
+    lastUpdateStatus_failureReason,
+    lastUpdateStatus_status,
+
+    -- ** LineageGroupSummary
+    lineageGroupSummary_creationTime,
+    lineageGroupSummary_displayName,
+    lineageGroupSummary_lastModifiedTime,
+    lineageGroupSummary_lineageGroupArn,
+    lineageGroupSummary_lineageGroupName,
+
+    -- ** MemberDefinition
+    memberDefinition_cognitoMemberDefinition,
+    memberDefinition_oidcMemberDefinition,
+
+    -- ** MetadataProperties
+    metadataProperties_commitId,
+    metadataProperties_generatedBy,
+    metadataProperties_projectId,
+    metadataProperties_repository,
+
+    -- ** MetricData
+    metricData_metricName,
+    metricData_timestamp,
+    metricData_value,
+
+    -- ** MetricDatum
+    metricDatum_metricName,
+    metricDatum_set,
+    metricDatum_standardMetricName,
+    metricDatum_value,
+
+    -- ** MetricDefinition
+    metricDefinition_name,
+    metricDefinition_regex,
+
+    -- ** MetricsSource
+    metricsSource_contentDigest,
+    metricsSource_contentType,
+    metricsSource_s3Uri,
+
+    -- ** Model
+    model_containers,
+    model_creationTime,
+    model_enableNetworkIsolation,
+    model_executionRoleArn,
+    model_inferenceExecutionConfig,
+    model_modelArn,
+    model_modelName,
+    model_primaryContainer,
+    model_tags,
+    model_vpcConfig,
+
+    -- ** ModelArtifacts
+    modelArtifacts_s3ModelArtifacts,
+
+    -- ** ModelBiasAppSpecification
+    modelBiasAppSpecification_environment,
+    modelBiasAppSpecification_imageUri,
+    modelBiasAppSpecification_configUri,
+
+    -- ** ModelBiasBaselineConfig
+    modelBiasBaselineConfig_baseliningJobName,
+    modelBiasBaselineConfig_constraintsResource,
+
+    -- ** ModelBiasJobInput
+    modelBiasJobInput_batchTransformInput,
+    modelBiasJobInput_endpointInput,
+    modelBiasJobInput_groundTruthS3Input,
+
+    -- ** ModelCard
+    modelCard_content,
+    modelCard_createdBy,
+    modelCard_creationTime,
+    modelCard_lastModifiedBy,
+    modelCard_lastModifiedTime,
+    modelCard_modelCardArn,
+    modelCard_modelCardName,
+    modelCard_modelCardStatus,
+    modelCard_modelCardVersion,
+    modelCard_modelId,
+    modelCard_riskRating,
+    modelCard_securityConfig,
+    modelCard_tags,
+
+    -- ** ModelCardExportArtifacts
+    modelCardExportArtifacts_s3ExportArtifacts,
+
+    -- ** ModelCardExportJobSummary
+    modelCardExportJobSummary_modelCardExportJobName,
+    modelCardExportJobSummary_modelCardExportJobArn,
+    modelCardExportJobSummary_status,
+    modelCardExportJobSummary_modelCardName,
+    modelCardExportJobSummary_modelCardVersion,
+    modelCardExportJobSummary_createdAt,
+    modelCardExportJobSummary_lastModifiedAt,
+
+    -- ** ModelCardExportOutputConfig
+    modelCardExportOutputConfig_s3OutputPath,
+
+    -- ** ModelCardSecurityConfig
+    modelCardSecurityConfig_kmsKeyId,
+
+    -- ** ModelCardSummary
+    modelCardSummary_lastModifiedTime,
+    modelCardSummary_modelCardName,
+    modelCardSummary_modelCardArn,
+    modelCardSummary_modelCardStatus,
+    modelCardSummary_creationTime,
+
+    -- ** ModelCardVersionSummary
+    modelCardVersionSummary_lastModifiedTime,
+    modelCardVersionSummary_modelCardName,
+    modelCardVersionSummary_modelCardArn,
+    modelCardVersionSummary_modelCardStatus,
+    modelCardVersionSummary_modelCardVersion,
+    modelCardVersionSummary_creationTime,
+
+    -- ** ModelClientConfig
+    modelClientConfig_invocationsMaxRetries,
+    modelClientConfig_invocationsTimeoutInSeconds,
+
+    -- ** ModelConfiguration
+    modelConfiguration_environmentParameters,
+    modelConfiguration_inferenceSpecificationName,
+
+    -- ** ModelDashboardEndpoint
+    modelDashboardEndpoint_endpointName,
+    modelDashboardEndpoint_endpointArn,
+    modelDashboardEndpoint_creationTime,
+    modelDashboardEndpoint_lastModifiedTime,
+    modelDashboardEndpoint_endpointStatus,
+
+    -- ** ModelDashboardIndicatorAction
+    modelDashboardIndicatorAction_enabled,
+
+    -- ** ModelDashboardModel
+    modelDashboardModel_endpoints,
+    modelDashboardModel_lastBatchTransformJob,
+    modelDashboardModel_model,
+    modelDashboardModel_modelCard,
+    modelDashboardModel_monitoringSchedules,
+
+    -- ** ModelDashboardModelCard
+    modelDashboardModelCard_createdBy,
+    modelDashboardModelCard_creationTime,
+    modelDashboardModelCard_lastModifiedBy,
+    modelDashboardModelCard_lastModifiedTime,
+    modelDashboardModelCard_modelCardArn,
+    modelDashboardModelCard_modelCardName,
+    modelDashboardModelCard_modelCardStatus,
+    modelDashboardModelCard_modelCardVersion,
+    modelDashboardModelCard_modelId,
+    modelDashboardModelCard_riskRating,
+    modelDashboardModelCard_securityConfig,
+    modelDashboardModelCard_tags,
+
+    -- ** ModelDashboardMonitoringSchedule
+    modelDashboardMonitoringSchedule_creationTime,
+    modelDashboardMonitoringSchedule_endpointName,
+    modelDashboardMonitoringSchedule_failureReason,
+    modelDashboardMonitoringSchedule_lastModifiedTime,
+    modelDashboardMonitoringSchedule_lastMonitoringExecutionSummary,
+    modelDashboardMonitoringSchedule_monitoringAlertSummaries,
+    modelDashboardMonitoringSchedule_monitoringScheduleArn,
+    modelDashboardMonitoringSchedule_monitoringScheduleConfig,
+    modelDashboardMonitoringSchedule_monitoringScheduleName,
+    modelDashboardMonitoringSchedule_monitoringScheduleStatus,
+    modelDashboardMonitoringSchedule_monitoringType,
+
+    -- ** ModelDataQuality
+    modelDataQuality_constraints,
+    modelDataQuality_statistics,
+
+    -- ** ModelDeployConfig
+    modelDeployConfig_autoGenerateEndpointName,
+    modelDeployConfig_endpointName,
+
+    -- ** ModelDeployResult
+    modelDeployResult_endpointName,
+
+    -- ** ModelDigests
+    modelDigests_artifactDigest,
+
+    -- ** ModelExplainabilityAppSpecification
+    modelExplainabilityAppSpecification_environment,
+    modelExplainabilityAppSpecification_imageUri,
+    modelExplainabilityAppSpecification_configUri,
+
+    -- ** ModelExplainabilityBaselineConfig
+    modelExplainabilityBaselineConfig_baseliningJobName,
+    modelExplainabilityBaselineConfig_constraintsResource,
+
+    -- ** ModelExplainabilityJobInput
+    modelExplainabilityJobInput_batchTransformInput,
+    modelExplainabilityJobInput_endpointInput,
+
+    -- ** ModelInfrastructureConfig
+    modelInfrastructureConfig_infrastructureType,
+    modelInfrastructureConfig_realTimeInferenceConfig,
+
+    -- ** ModelInput
+    modelInput_dataInputConfig,
+
+    -- ** ModelLatencyThreshold
+    modelLatencyThreshold_percentile,
+    modelLatencyThreshold_valueInMilliseconds,
+
+    -- ** ModelMetadataFilter
+    modelMetadataFilter_name,
+    modelMetadataFilter_value,
+
+    -- ** ModelMetadataSearchExpression
+    modelMetadataSearchExpression_filters,
+
+    -- ** ModelMetadataSummary
+    modelMetadataSummary_domain,
+    modelMetadataSummary_framework,
+    modelMetadataSummary_task,
+    modelMetadataSummary_model,
+    modelMetadataSummary_frameworkVersion,
+
+    -- ** ModelMetrics
+    modelMetrics_bias,
+    modelMetrics_explainability,
+    modelMetrics_modelDataQuality,
+    modelMetrics_modelQuality,
+
+    -- ** ModelPackage
+    modelPackage_additionalInferenceSpecifications,
+    modelPackage_approvalDescription,
+    modelPackage_certifyForMarketplace,
+    modelPackage_createdBy,
+    modelPackage_creationTime,
+    modelPackage_customerMetadataProperties,
+    modelPackage_domain,
+    modelPackage_driftCheckBaselines,
+    modelPackage_inferenceSpecification,
+    modelPackage_lastModifiedBy,
+    modelPackage_lastModifiedTime,
+    modelPackage_metadataProperties,
+    modelPackage_modelApprovalStatus,
+    modelPackage_modelMetrics,
+    modelPackage_modelPackageArn,
+    modelPackage_modelPackageDescription,
+    modelPackage_modelPackageGroupName,
+    modelPackage_modelPackageName,
+    modelPackage_modelPackageStatus,
+    modelPackage_modelPackageStatusDetails,
+    modelPackage_modelPackageVersion,
+    modelPackage_samplePayloadUrl,
+    modelPackage_sourceAlgorithmSpecification,
+    modelPackage_tags,
+    modelPackage_task,
+    modelPackage_validationSpecification,
+
+    -- ** ModelPackageContainerDefinition
+    modelPackageContainerDefinition_containerHostname,
+    modelPackageContainerDefinition_environment,
+    modelPackageContainerDefinition_framework,
+    modelPackageContainerDefinition_frameworkVersion,
+    modelPackageContainerDefinition_imageDigest,
+    modelPackageContainerDefinition_modelDataUrl,
+    modelPackageContainerDefinition_modelInput,
+    modelPackageContainerDefinition_nearestModelName,
+    modelPackageContainerDefinition_productId,
+    modelPackageContainerDefinition_image,
+
+    -- ** ModelPackageGroup
+    modelPackageGroup_createdBy,
+    modelPackageGroup_creationTime,
+    modelPackageGroup_modelPackageGroupArn,
+    modelPackageGroup_modelPackageGroupDescription,
+    modelPackageGroup_modelPackageGroupName,
+    modelPackageGroup_modelPackageGroupStatus,
+    modelPackageGroup_tags,
+
+    -- ** ModelPackageGroupSummary
+    modelPackageGroupSummary_modelPackageGroupDescription,
+    modelPackageGroupSummary_modelPackageGroupName,
+    modelPackageGroupSummary_modelPackageGroupArn,
+    modelPackageGroupSummary_creationTime,
+    modelPackageGroupSummary_modelPackageGroupStatus,
+
+    -- ** ModelPackageStatusDetails
+    modelPackageStatusDetails_imageScanStatuses,
+    modelPackageStatusDetails_validationStatuses,
+
+    -- ** ModelPackageStatusItem
+    modelPackageStatusItem_failureReason,
+    modelPackageStatusItem_name,
+    modelPackageStatusItem_status,
+
+    -- ** ModelPackageSummary
+    modelPackageSummary_modelApprovalStatus,
+    modelPackageSummary_modelPackageDescription,
+    modelPackageSummary_modelPackageGroupName,
+    modelPackageSummary_modelPackageVersion,
+    modelPackageSummary_modelPackageName,
+    modelPackageSummary_modelPackageArn,
+    modelPackageSummary_creationTime,
+    modelPackageSummary_modelPackageStatus,
+
+    -- ** ModelPackageValidationProfile
+    modelPackageValidationProfile_profileName,
+    modelPackageValidationProfile_transformJobDefinition,
+
+    -- ** ModelPackageValidationSpecification
+    modelPackageValidationSpecification_validationRole,
+    modelPackageValidationSpecification_validationProfiles,
+
+    -- ** ModelQuality
+    modelQuality_constraints,
+    modelQuality_statistics,
+
+    -- ** ModelQualityAppSpecification
+    modelQualityAppSpecification_containerArguments,
+    modelQualityAppSpecification_containerEntrypoint,
+    modelQualityAppSpecification_environment,
+    modelQualityAppSpecification_postAnalyticsProcessorSourceUri,
+    modelQualityAppSpecification_problemType,
+    modelQualityAppSpecification_recordPreprocessorSourceUri,
+    modelQualityAppSpecification_imageUri,
+
+    -- ** ModelQualityBaselineConfig
+    modelQualityBaselineConfig_baseliningJobName,
+    modelQualityBaselineConfig_constraintsResource,
+
+    -- ** ModelQualityJobInput
+    modelQualityJobInput_batchTransformInput,
+    modelQualityJobInput_endpointInput,
+    modelQualityJobInput_groundTruthS3Input,
+
+    -- ** ModelStepMetadata
+    modelStepMetadata_arn,
+
+    -- ** ModelSummary
+    modelSummary_modelName,
+    modelSummary_modelArn,
+    modelSummary_creationTime,
+
+    -- ** ModelVariantConfig
+    modelVariantConfig_modelName,
+    modelVariantConfig_variantName,
+    modelVariantConfig_infrastructureConfig,
+
+    -- ** ModelVariantConfigSummary
+    modelVariantConfigSummary_modelName,
+    modelVariantConfigSummary_variantName,
+    modelVariantConfigSummary_infrastructureConfig,
+    modelVariantConfigSummary_status,
+
+    -- ** MonitoringAlertActions
+    monitoringAlertActions_modelDashboardIndicator,
+
+    -- ** MonitoringAlertHistorySummary
+    monitoringAlertHistorySummary_monitoringScheduleName,
+    monitoringAlertHistorySummary_monitoringAlertName,
+    monitoringAlertHistorySummary_creationTime,
+    monitoringAlertHistorySummary_alertStatus,
+
+    -- ** MonitoringAlertSummary
+    monitoringAlertSummary_monitoringAlertName,
+    monitoringAlertSummary_creationTime,
+    monitoringAlertSummary_lastModifiedTime,
+    monitoringAlertSummary_alertStatus,
+    monitoringAlertSummary_datapointsToAlert,
+    monitoringAlertSummary_evaluationPeriod,
+    monitoringAlertSummary_actions,
+
+    -- ** MonitoringAppSpecification
+    monitoringAppSpecification_containerArguments,
+    monitoringAppSpecification_containerEntrypoint,
+    monitoringAppSpecification_postAnalyticsProcessorSourceUri,
+    monitoringAppSpecification_recordPreprocessorSourceUri,
+    monitoringAppSpecification_imageUri,
+
+    -- ** MonitoringBaselineConfig
+    monitoringBaselineConfig_baseliningJobName,
+    monitoringBaselineConfig_constraintsResource,
+    monitoringBaselineConfig_statisticsResource,
+
+    -- ** MonitoringClusterConfig
+    monitoringClusterConfig_volumeKmsKeyId,
+    monitoringClusterConfig_instanceCount,
+    monitoringClusterConfig_instanceType,
+    monitoringClusterConfig_volumeSizeInGB,
+
+    -- ** MonitoringConstraintsResource
+    monitoringConstraintsResource_s3Uri,
+
+    -- ** MonitoringCsvDatasetFormat
+    monitoringCsvDatasetFormat_header,
+
+    -- ** MonitoringDatasetFormat
+    monitoringDatasetFormat_csv,
+    monitoringDatasetFormat_json,
+    monitoringDatasetFormat_parquet,
+
+    -- ** MonitoringExecutionSummary
+    monitoringExecutionSummary_endpointName,
+    monitoringExecutionSummary_failureReason,
+    monitoringExecutionSummary_monitoringJobDefinitionName,
+    monitoringExecutionSummary_monitoringType,
+    monitoringExecutionSummary_processingJobArn,
+    monitoringExecutionSummary_monitoringScheduleName,
+    monitoringExecutionSummary_scheduledTime,
+    monitoringExecutionSummary_creationTime,
+    monitoringExecutionSummary_lastModifiedTime,
+    monitoringExecutionSummary_monitoringExecutionStatus,
+
+    -- ** MonitoringGroundTruthS3Input
+    monitoringGroundTruthS3Input_s3Uri,
+
+    -- ** MonitoringInput
+    monitoringInput_batchTransformInput,
+    monitoringInput_endpointInput,
+
+    -- ** MonitoringJobDefinition
+    monitoringJobDefinition_baselineConfig,
+    monitoringJobDefinition_environment,
+    monitoringJobDefinition_networkConfig,
+    monitoringJobDefinition_stoppingCondition,
+    monitoringJobDefinition_monitoringInputs,
+    monitoringJobDefinition_monitoringOutputConfig,
+    monitoringJobDefinition_monitoringResources,
+    monitoringJobDefinition_monitoringAppSpecification,
+    monitoringJobDefinition_roleArn,
+
+    -- ** MonitoringJobDefinitionSummary
+    monitoringJobDefinitionSummary_monitoringJobDefinitionName,
+    monitoringJobDefinitionSummary_monitoringJobDefinitionArn,
+    monitoringJobDefinitionSummary_creationTime,
+    monitoringJobDefinitionSummary_endpointName,
+
+    -- ** MonitoringJsonDatasetFormat
+    monitoringJsonDatasetFormat_line,
+
+    -- ** MonitoringNetworkConfig
+    monitoringNetworkConfig_enableInterContainerTrafficEncryption,
+    monitoringNetworkConfig_enableNetworkIsolation,
+    monitoringNetworkConfig_vpcConfig,
+
+    -- ** MonitoringOutput
+    monitoringOutput_s3Output,
+
+    -- ** MonitoringOutputConfig
+    monitoringOutputConfig_kmsKeyId,
+    monitoringOutputConfig_monitoringOutputs,
+
+    -- ** MonitoringParquetDatasetFormat
+
+    -- ** MonitoringResources
+    monitoringResources_clusterConfig,
+
+    -- ** MonitoringS3Output
+    monitoringS3Output_s3UploadMode,
+    monitoringS3Output_s3Uri,
+    monitoringS3Output_localPath,
+
+    -- ** MonitoringSchedule
+    monitoringSchedule_creationTime,
+    monitoringSchedule_endpointName,
+    monitoringSchedule_failureReason,
+    monitoringSchedule_lastModifiedTime,
+    monitoringSchedule_lastMonitoringExecutionSummary,
+    monitoringSchedule_monitoringScheduleArn,
+    monitoringSchedule_monitoringScheduleConfig,
+    monitoringSchedule_monitoringScheduleName,
+    monitoringSchedule_monitoringScheduleStatus,
+    monitoringSchedule_monitoringType,
+    monitoringSchedule_tags,
+
+    -- ** MonitoringScheduleConfig
+    monitoringScheduleConfig_monitoringJobDefinition,
+    monitoringScheduleConfig_monitoringJobDefinitionName,
+    monitoringScheduleConfig_monitoringType,
+    monitoringScheduleConfig_scheduleConfig,
+
+    -- ** MonitoringScheduleSummary
+    monitoringScheduleSummary_endpointName,
+    monitoringScheduleSummary_monitoringJobDefinitionName,
+    monitoringScheduleSummary_monitoringType,
+    monitoringScheduleSummary_monitoringScheduleName,
+    monitoringScheduleSummary_monitoringScheduleArn,
+    monitoringScheduleSummary_creationTime,
+    monitoringScheduleSummary_lastModifiedTime,
+    monitoringScheduleSummary_monitoringScheduleStatus,
+
+    -- ** MonitoringStatisticsResource
+    monitoringStatisticsResource_s3Uri,
+
+    -- ** MonitoringStoppingCondition
+    monitoringStoppingCondition_maxRuntimeInSeconds,
+
+    -- ** MultiModelConfig
+    multiModelConfig_modelCacheSetting,
+
+    -- ** NeoVpcConfig
+    neoVpcConfig_securityGroupIds,
+    neoVpcConfig_subnets,
+
+    -- ** NestedFilters
+    nestedFilters_nestedPropertyName,
+    nestedFilters_filters,
+
+    -- ** NetworkConfig
+    networkConfig_enableInterContainerTrafficEncryption,
+    networkConfig_enableNetworkIsolation,
+    networkConfig_vpcConfig,
+
+    -- ** NotebookInstanceLifecycleConfigSummary
+    notebookInstanceLifecycleConfigSummary_creationTime,
+    notebookInstanceLifecycleConfigSummary_lastModifiedTime,
+    notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigName,
+    notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigArn,
+
+    -- ** NotebookInstanceLifecycleHook
+    notebookInstanceLifecycleHook_content,
+
+    -- ** NotebookInstanceSummary
+    notebookInstanceSummary_additionalCodeRepositories,
+    notebookInstanceSummary_creationTime,
+    notebookInstanceSummary_defaultCodeRepository,
+    notebookInstanceSummary_instanceType,
+    notebookInstanceSummary_lastModifiedTime,
+    notebookInstanceSummary_notebookInstanceLifecycleConfigName,
+    notebookInstanceSummary_notebookInstanceStatus,
+    notebookInstanceSummary_url,
+    notebookInstanceSummary_notebookInstanceName,
+    notebookInstanceSummary_notebookInstanceArn,
+
+    -- ** NotificationConfiguration
+    notificationConfiguration_notificationTopicArn,
+
+    -- ** ObjectiveStatusCounters
+    objectiveStatusCounters_failed,
+    objectiveStatusCounters_pending,
+    objectiveStatusCounters_succeeded,
+
+    -- ** OfflineStoreConfig
+    offlineStoreConfig_dataCatalogConfig,
+    offlineStoreConfig_disableGlueTableCreation,
+    offlineStoreConfig_tableFormat,
+    offlineStoreConfig_s3StorageConfig,
+
+    -- ** OfflineStoreStatus
+    offlineStoreStatus_blockedReason,
+    offlineStoreStatus_status,
+
+    -- ** OidcConfig
+    oidcConfig_clientId,
+    oidcConfig_clientSecret,
+    oidcConfig_issuer,
+    oidcConfig_authorizationEndpoint,
+    oidcConfig_tokenEndpoint,
+    oidcConfig_userInfoEndpoint,
+    oidcConfig_logoutEndpoint,
+    oidcConfig_jwksUri,
+
+    -- ** OidcConfigForResponse
+    oidcConfigForResponse_authorizationEndpoint,
+    oidcConfigForResponse_clientId,
+    oidcConfigForResponse_issuer,
+    oidcConfigForResponse_jwksUri,
+    oidcConfigForResponse_logoutEndpoint,
+    oidcConfigForResponse_tokenEndpoint,
+    oidcConfigForResponse_userInfoEndpoint,
+
+    -- ** OidcMemberDefinition
+    oidcMemberDefinition_groups,
+
+    -- ** OnlineStoreConfig
+    onlineStoreConfig_enableOnlineStore,
+    onlineStoreConfig_securityConfig,
+
+    -- ** OnlineStoreSecurityConfig
+    onlineStoreSecurityConfig_kmsKeyId,
+
+    -- ** OutputConfig
+    outputConfig_compilerOptions,
+    outputConfig_kmsKeyId,
+    outputConfig_targetDevice,
+    outputConfig_targetPlatform,
+    outputConfig_s3OutputLocation,
+
+    -- ** OutputDataConfig
+    outputDataConfig_kmsKeyId,
+    outputDataConfig_s3OutputPath,
+
+    -- ** OutputParameter
+    outputParameter_name,
+    outputParameter_value,
+
+    -- ** ParallelismConfiguration
+    parallelismConfiguration_maxParallelExecutionSteps,
+
+    -- ** Parameter
+    parameter_name,
+    parameter_value,
+
+    -- ** ParameterRange
+    parameterRange_categoricalParameterRangeSpecification,
+    parameterRange_continuousParameterRangeSpecification,
+    parameterRange_integerParameterRangeSpecification,
+
+    -- ** ParameterRanges
+    parameterRanges_categoricalParameterRanges,
+    parameterRanges_continuousParameterRanges,
+    parameterRanges_integerParameterRanges,
+
+    -- ** Parent
+    parent_experimentName,
+    parent_trialName,
+
+    -- ** ParentHyperParameterTuningJob
+    parentHyperParameterTuningJob_hyperParameterTuningJobName,
+
+    -- ** PendingDeploymentSummary
+    pendingDeploymentSummary_productionVariants,
+    pendingDeploymentSummary_shadowProductionVariants,
+    pendingDeploymentSummary_startTime,
+    pendingDeploymentSummary_endpointConfigName,
+
+    -- ** PendingProductionVariantSummary
+    pendingProductionVariantSummary_acceleratorType,
+    pendingProductionVariantSummary_currentInstanceCount,
+    pendingProductionVariantSummary_currentServerlessConfig,
+    pendingProductionVariantSummary_currentWeight,
+    pendingProductionVariantSummary_deployedImages,
+    pendingProductionVariantSummary_desiredInstanceCount,
+    pendingProductionVariantSummary_desiredServerlessConfig,
+    pendingProductionVariantSummary_desiredWeight,
+    pendingProductionVariantSummary_instanceType,
+    pendingProductionVariantSummary_variantStatus,
+    pendingProductionVariantSummary_variantName,
+
+    -- ** Phase
+    phase_durationInSeconds,
+    phase_initialNumberOfUsers,
+    phase_spawnRate,
+
+    -- ** Pipeline
+    pipeline_createdBy,
+    pipeline_creationTime,
+    pipeline_lastModifiedBy,
+    pipeline_lastModifiedTime,
+    pipeline_lastRunTime,
+    pipeline_parallelismConfiguration,
+    pipeline_pipelineArn,
+    pipeline_pipelineDescription,
+    pipeline_pipelineDisplayName,
+    pipeline_pipelineName,
+    pipeline_pipelineStatus,
+    pipeline_roleArn,
+    pipeline_tags,
+
+    -- ** PipelineDefinitionS3Location
+    pipelineDefinitionS3Location_versionId,
+    pipelineDefinitionS3Location_bucket,
+    pipelineDefinitionS3Location_objectKey,
+
+    -- ** PipelineExecution
+    pipelineExecution_createdBy,
+    pipelineExecution_creationTime,
+    pipelineExecution_failureReason,
+    pipelineExecution_lastModifiedBy,
+    pipelineExecution_lastModifiedTime,
+    pipelineExecution_parallelismConfiguration,
+    pipelineExecution_pipelineArn,
+    pipelineExecution_pipelineExecutionArn,
+    pipelineExecution_pipelineExecutionDescription,
+    pipelineExecution_pipelineExecutionDisplayName,
+    pipelineExecution_pipelineExecutionStatus,
+    pipelineExecution_pipelineExperimentConfig,
+    pipelineExecution_pipelineParameters,
+
+    -- ** PipelineExecutionStep
+    pipelineExecutionStep_attemptCount,
+    pipelineExecutionStep_cacheHitResult,
+    pipelineExecutionStep_endTime,
+    pipelineExecutionStep_failureReason,
+    pipelineExecutionStep_metadata,
+    pipelineExecutionStep_startTime,
+    pipelineExecutionStep_stepDescription,
+    pipelineExecutionStep_stepDisplayName,
+    pipelineExecutionStep_stepName,
+    pipelineExecutionStep_stepStatus,
+
+    -- ** PipelineExecutionStepMetadata
+    pipelineExecutionStepMetadata_autoMLJob,
+    pipelineExecutionStepMetadata_callback,
+    pipelineExecutionStepMetadata_clarifyCheck,
+    pipelineExecutionStepMetadata_condition,
+    pipelineExecutionStepMetadata_emr,
+    pipelineExecutionStepMetadata_fail,
+    pipelineExecutionStepMetadata_lambda,
+    pipelineExecutionStepMetadata_model,
+    pipelineExecutionStepMetadata_processingJob,
+    pipelineExecutionStepMetadata_qualityCheck,
+    pipelineExecutionStepMetadata_registerModel,
+    pipelineExecutionStepMetadata_trainingJob,
+    pipelineExecutionStepMetadata_transformJob,
+    pipelineExecutionStepMetadata_tuningJob,
+
+    -- ** PipelineExecutionSummary
+    pipelineExecutionSummary_pipelineExecutionArn,
+    pipelineExecutionSummary_pipelineExecutionDescription,
+    pipelineExecutionSummary_pipelineExecutionDisplayName,
+    pipelineExecutionSummary_pipelineExecutionFailureReason,
+    pipelineExecutionSummary_pipelineExecutionStatus,
+    pipelineExecutionSummary_startTime,
+
+    -- ** PipelineExperimentConfig
+    pipelineExperimentConfig_experimentName,
+    pipelineExperimentConfig_trialName,
+
+    -- ** PipelineSummary
+    pipelineSummary_creationTime,
+    pipelineSummary_lastExecutionTime,
+    pipelineSummary_lastModifiedTime,
+    pipelineSummary_pipelineArn,
+    pipelineSummary_pipelineDescription,
+    pipelineSummary_pipelineDisplayName,
+    pipelineSummary_pipelineName,
+    pipelineSummary_roleArn,
+
+    -- ** ProcessingClusterConfig
+    processingClusterConfig_volumeKmsKeyId,
+    processingClusterConfig_instanceCount,
+    processingClusterConfig_instanceType,
+    processingClusterConfig_volumeSizeInGB,
+
+    -- ** ProcessingFeatureStoreOutput
+    processingFeatureStoreOutput_featureGroupName,
+
+    -- ** ProcessingInput
+    processingInput_appManaged,
+    processingInput_datasetDefinition,
+    processingInput_s3Input,
+    processingInput_inputName,
+
+    -- ** ProcessingJob
+    processingJob_appSpecification,
+    processingJob_autoMLJobArn,
+    processingJob_creationTime,
+    processingJob_environment,
+    processingJob_exitMessage,
+    processingJob_experimentConfig,
+    processingJob_failureReason,
+    processingJob_lastModifiedTime,
+    processingJob_monitoringScheduleArn,
+    processingJob_networkConfig,
+    processingJob_processingEndTime,
+    processingJob_processingInputs,
+    processingJob_processingJobArn,
+    processingJob_processingJobName,
+    processingJob_processingJobStatus,
+    processingJob_processingOutputConfig,
+    processingJob_processingResources,
+    processingJob_processingStartTime,
+    processingJob_roleArn,
+    processingJob_stoppingCondition,
+    processingJob_tags,
+    processingJob_trainingJobArn,
+
+    -- ** ProcessingJobStepMetadata
+    processingJobStepMetadata_arn,
+
+    -- ** ProcessingJobSummary
+    processingJobSummary_exitMessage,
+    processingJobSummary_failureReason,
+    processingJobSummary_lastModifiedTime,
+    processingJobSummary_processingEndTime,
+    processingJobSummary_processingJobName,
+    processingJobSummary_processingJobArn,
+    processingJobSummary_creationTime,
+    processingJobSummary_processingJobStatus,
+
+    -- ** ProcessingOutput
+    processingOutput_appManaged,
+    processingOutput_featureStoreOutput,
+    processingOutput_s3Output,
+    processingOutput_outputName,
+
+    -- ** ProcessingOutputConfig
+    processingOutputConfig_kmsKeyId,
+    processingOutputConfig_outputs,
+
+    -- ** ProcessingResources
+    processingResources_clusterConfig,
+
+    -- ** ProcessingS3Input
+    processingS3Input_localPath,
+    processingS3Input_s3CompressionType,
+    processingS3Input_s3DataDistributionType,
+    processingS3Input_s3InputMode,
+    processingS3Input_s3Uri,
+    processingS3Input_s3DataType,
+
+    -- ** ProcessingS3Output
+    processingS3Output_s3Uri,
+    processingS3Output_localPath,
+    processingS3Output_s3UploadMode,
+
+    -- ** ProcessingStoppingCondition
+    processingStoppingCondition_maxRuntimeInSeconds,
+
+    -- ** ProductionVariant
+    productionVariant_acceleratorType,
+    productionVariant_containerStartupHealthCheckTimeoutInSeconds,
+    productionVariant_coreDumpConfig,
+    productionVariant_initialInstanceCount,
+    productionVariant_initialVariantWeight,
+    productionVariant_instanceType,
+    productionVariant_modelDataDownloadTimeoutInSeconds,
+    productionVariant_serverlessConfig,
+    productionVariant_volumeSizeInGB,
+    productionVariant_variantName,
+    productionVariant_modelName,
+
+    -- ** ProductionVariantCoreDumpConfig
+    productionVariantCoreDumpConfig_kmsKeyId,
+    productionVariantCoreDumpConfig_destinationS3Uri,
+
+    -- ** ProductionVariantServerlessConfig
+    productionVariantServerlessConfig_memorySizeInMB,
+    productionVariantServerlessConfig_maxConcurrency,
+
+    -- ** ProductionVariantStatus
+    productionVariantStatus_startTime,
+    productionVariantStatus_statusMessage,
+    productionVariantStatus_status,
+
+    -- ** ProductionVariantSummary
+    productionVariantSummary_currentInstanceCount,
+    productionVariantSummary_currentServerlessConfig,
+    productionVariantSummary_currentWeight,
+    productionVariantSummary_deployedImages,
+    productionVariantSummary_desiredInstanceCount,
+    productionVariantSummary_desiredServerlessConfig,
+    productionVariantSummary_desiredWeight,
+    productionVariantSummary_variantStatus,
+    productionVariantSummary_variantName,
+
+    -- ** ProfilerConfig
+    profilerConfig_disableProfiler,
+    profilerConfig_profilingIntervalInMilliseconds,
+    profilerConfig_profilingParameters,
+    profilerConfig_s3OutputPath,
+
+    -- ** ProfilerConfigForUpdate
+    profilerConfigForUpdate_disableProfiler,
+    profilerConfigForUpdate_profilingIntervalInMilliseconds,
+    profilerConfigForUpdate_profilingParameters,
+    profilerConfigForUpdate_s3OutputPath,
+
+    -- ** ProfilerRuleConfiguration
+    profilerRuleConfiguration_instanceType,
+    profilerRuleConfiguration_localPath,
+    profilerRuleConfiguration_ruleParameters,
+    profilerRuleConfiguration_s3OutputPath,
+    profilerRuleConfiguration_volumeSizeInGB,
+    profilerRuleConfiguration_ruleConfigurationName,
+    profilerRuleConfiguration_ruleEvaluatorImage,
+
+    -- ** ProfilerRuleEvaluationStatus
+    profilerRuleEvaluationStatus_lastModifiedTime,
+    profilerRuleEvaluationStatus_ruleConfigurationName,
+    profilerRuleEvaluationStatus_ruleEvaluationJobArn,
+    profilerRuleEvaluationStatus_ruleEvaluationStatus,
+    profilerRuleEvaluationStatus_statusDetails,
+
+    -- ** Project
+    project_createdBy,
+    project_creationTime,
+    project_lastModifiedBy,
+    project_lastModifiedTime,
+    project_projectArn,
+    project_projectDescription,
+    project_projectId,
+    project_projectName,
+    project_projectStatus,
+    project_serviceCatalogProvisionedProductDetails,
+    project_serviceCatalogProvisioningDetails,
+    project_tags,
+
+    -- ** ProjectSummary
+    projectSummary_projectDescription,
+    projectSummary_projectName,
+    projectSummary_projectArn,
+    projectSummary_projectId,
+    projectSummary_creationTime,
+    projectSummary_projectStatus,
+
+    -- ** PropertyNameQuery
+    propertyNameQuery_propertyNameHint,
+
+    -- ** PropertyNameSuggestion
+    propertyNameSuggestion_propertyName,
+
+    -- ** ProvisioningParameter
+    provisioningParameter_key,
+    provisioningParameter_value,
+
+    -- ** PublicWorkforceTaskPrice
+    publicWorkforceTaskPrice_amountInUsd,
+
+    -- ** QualityCheckStepMetadata
+    qualityCheckStepMetadata_baselineUsedForDriftCheckConstraints,
+    qualityCheckStepMetadata_baselineUsedForDriftCheckStatistics,
+    qualityCheckStepMetadata_calculatedBaselineConstraints,
+    qualityCheckStepMetadata_calculatedBaselineStatistics,
+    qualityCheckStepMetadata_checkJobArn,
+    qualityCheckStepMetadata_checkType,
+    qualityCheckStepMetadata_modelPackageGroupName,
+    qualityCheckStepMetadata_registerNewBaseline,
+    qualityCheckStepMetadata_skipCheck,
+    qualityCheckStepMetadata_violationReport,
+
+    -- ** QueryFilters
+    queryFilters_createdAfter,
+    queryFilters_createdBefore,
+    queryFilters_lineageTypes,
+    queryFilters_modifiedAfter,
+    queryFilters_modifiedBefore,
+    queryFilters_properties,
+    queryFilters_types,
+
+    -- ** RSessionAppSettings
+    rSessionAppSettings_customImages,
+    rSessionAppSettings_defaultResourceSpec,
+
+    -- ** RStudioServerProAppSettings
+    rStudioServerProAppSettings_accessStatus,
+    rStudioServerProAppSettings_userGroup,
+
+    -- ** RStudioServerProDomainSettings
+    rStudioServerProDomainSettings_defaultResourceSpec,
+    rStudioServerProDomainSettings_rStudioConnectUrl,
+    rStudioServerProDomainSettings_rStudioPackageManagerUrl,
+    rStudioServerProDomainSettings_domainExecutionRoleArn,
+
+    -- ** RStudioServerProDomainSettingsForUpdate
+    rStudioServerProDomainSettingsForUpdate_defaultResourceSpec,
+    rStudioServerProDomainSettingsForUpdate_rStudioConnectUrl,
+    rStudioServerProDomainSettingsForUpdate_rStudioPackageManagerUrl,
+    rStudioServerProDomainSettingsForUpdate_domainExecutionRoleArn,
+
+    -- ** RealTimeInferenceConfig
+    realTimeInferenceConfig_instanceType,
+    realTimeInferenceConfig_instanceCount,
+
+    -- ** RecommendationJobCompiledOutputConfig
+    recommendationJobCompiledOutputConfig_s3OutputUri,
+
+    -- ** RecommendationJobContainerConfig
+    recommendationJobContainerConfig_domain,
+    recommendationJobContainerConfig_framework,
+    recommendationJobContainerConfig_frameworkVersion,
+    recommendationJobContainerConfig_nearestModelName,
+    recommendationJobContainerConfig_payloadConfig,
+    recommendationJobContainerConfig_supportedInstanceTypes,
+    recommendationJobContainerConfig_task,
+
+    -- ** RecommendationJobInferenceBenchmark
+    recommendationJobInferenceBenchmark_endpointConfiguration,
+    recommendationJobInferenceBenchmark_failureReason,
+    recommendationJobInferenceBenchmark_metrics,
+    recommendationJobInferenceBenchmark_modelConfiguration,
+
+    -- ** RecommendationJobInputConfig
+    recommendationJobInputConfig_containerConfig,
+    recommendationJobInputConfig_endpointConfigurations,
+    recommendationJobInputConfig_endpoints,
+    recommendationJobInputConfig_jobDurationInSeconds,
+    recommendationJobInputConfig_resourceLimit,
+    recommendationJobInputConfig_trafficPattern,
+    recommendationJobInputConfig_volumeKmsKeyId,
+    recommendationJobInputConfig_vpcConfig,
+    recommendationJobInputConfig_modelPackageVersionArn,
+
+    -- ** RecommendationJobOutputConfig
+    recommendationJobOutputConfig_compiledOutputConfig,
+    recommendationJobOutputConfig_kmsKeyId,
+
+    -- ** RecommendationJobPayloadConfig
+    recommendationJobPayloadConfig_samplePayloadUrl,
+    recommendationJobPayloadConfig_supportedContentTypes,
+
+    -- ** RecommendationJobResourceLimit
+    recommendationJobResourceLimit_maxNumberOfTests,
+    recommendationJobResourceLimit_maxParallelOfTests,
+
+    -- ** RecommendationJobStoppingConditions
+    recommendationJobStoppingConditions_maxInvocations,
+    recommendationJobStoppingConditions_modelLatencyThresholds,
+
+    -- ** RecommendationJobVpcConfig
+    recommendationJobVpcConfig_securityGroupIds,
+    recommendationJobVpcConfig_subnets,
+
+    -- ** RecommendationMetrics
+    recommendationMetrics_costPerHour,
+    recommendationMetrics_costPerInference,
+    recommendationMetrics_maxInvocations,
+    recommendationMetrics_modelLatency,
+
+    -- ** RedshiftDatasetDefinition
+    redshiftDatasetDefinition_kmsKeyId,
+    redshiftDatasetDefinition_outputCompression,
+    redshiftDatasetDefinition_clusterId,
+    redshiftDatasetDefinition_database,
+    redshiftDatasetDefinition_dbUser,
+    redshiftDatasetDefinition_queryString,
+    redshiftDatasetDefinition_clusterRoleArn,
+    redshiftDatasetDefinition_outputS3Uri,
+    redshiftDatasetDefinition_outputFormat,
+
+    -- ** RegisterModelStepMetadata
+    registerModelStepMetadata_arn,
+
+    -- ** RenderableTask
+    renderableTask_input,
+
+    -- ** RenderingError
+    renderingError_code,
+    renderingError_message,
+
+    -- ** RepositoryAuthConfig
+    repositoryAuthConfig_repositoryCredentialsProviderArn,
+
+    -- ** ResolvedAttributes
+    resolvedAttributes_autoMLJobObjective,
+    resolvedAttributes_completionCriteria,
+    resolvedAttributes_problemType,
+
+    -- ** ResourceConfig
+    resourceConfig_instanceCount,
+    resourceConfig_instanceGroups,
+    resourceConfig_instanceType,
+    resourceConfig_keepAlivePeriodInSeconds,
+    resourceConfig_volumeKmsKeyId,
+    resourceConfig_volumeSizeInGB,
+
+    -- ** ResourceConfigForUpdate
+    resourceConfigForUpdate_keepAlivePeriodInSeconds,
+
+    -- ** ResourceLimits
+    resourceLimits_maxNumberOfTrainingJobs,
+    resourceLimits_maxParallelTrainingJobs,
+
+    -- ** ResourceSpec
+    resourceSpec_instanceType,
+    resourceSpec_lifecycleConfigArn,
+    resourceSpec_sageMakerImageArn,
+    resourceSpec_sageMakerImageVersionArn,
+
+    -- ** RetentionPolicy
+    retentionPolicy_homeEfsFileSystem,
+
+    -- ** RetryStrategy
+    retryStrategy_maximumRetryAttempts,
+
+    -- ** S3DataSource
+    s3DataSource_attributeNames,
+    s3DataSource_instanceGroupNames,
+    s3DataSource_s3DataDistributionType,
+    s3DataSource_s3DataType,
+    s3DataSource_s3Uri,
+
+    -- ** S3StorageConfig
+    s3StorageConfig_kmsKeyId,
+    s3StorageConfig_resolvedOutputS3Uri,
+    s3StorageConfig_s3Uri,
+
+    -- ** ScheduleConfig
+    scheduleConfig_scheduleExpression,
+
+    -- ** SearchExpression
+    searchExpression_filters,
+    searchExpression_nestedFilters,
+    searchExpression_operator,
+    searchExpression_subExpressions,
+
+    -- ** SearchRecord
+    searchRecord_endpoint,
+    searchRecord_experiment,
+    searchRecord_featureGroup,
+    searchRecord_featureMetadata,
+    searchRecord_hyperParameterTuningJob,
+    searchRecord_model,
+    searchRecord_modelCard,
+    searchRecord_modelPackage,
+    searchRecord_modelPackageGroup,
+    searchRecord_pipeline,
+    searchRecord_pipelineExecution,
+    searchRecord_project,
+    searchRecord_trainingJob,
+    searchRecord_trial,
+    searchRecord_trialComponent,
+
+    -- ** SecondaryStatusTransition
+    secondaryStatusTransition_endTime,
+    secondaryStatusTransition_statusMessage,
+    secondaryStatusTransition_status,
+    secondaryStatusTransition_startTime,
+
+    -- ** ServiceCatalogProvisionedProductDetails
+    serviceCatalogProvisionedProductDetails_provisionedProductId,
+    serviceCatalogProvisionedProductDetails_provisionedProductStatusMessage,
+
+    -- ** ServiceCatalogProvisioningDetails
+    serviceCatalogProvisioningDetails_pathId,
+    serviceCatalogProvisioningDetails_provisioningArtifactId,
+    serviceCatalogProvisioningDetails_provisioningParameters,
+    serviceCatalogProvisioningDetails_productId,
+
+    -- ** ServiceCatalogProvisioningUpdateDetails
+    serviceCatalogProvisioningUpdateDetails_provisioningArtifactId,
+    serviceCatalogProvisioningUpdateDetails_provisioningParameters,
+
+    -- ** ShadowModeConfig
+    shadowModeConfig_sourceModelVariantName,
+    shadowModeConfig_shadowModelVariants,
+
+    -- ** ShadowModelVariantConfig
+    shadowModelVariantConfig_shadowModelVariantName,
+    shadowModelVariantConfig_samplingPercentage,
+
+    -- ** SharingSettings
+    sharingSettings_notebookOutputOption,
+    sharingSettings_s3KmsKeyId,
+    sharingSettings_s3OutputPath,
+
+    -- ** ShuffleConfig
+    shuffleConfig_seed,
+
+    -- ** SourceAlgorithm
+    sourceAlgorithm_modelDataUrl,
+    sourceAlgorithm_algorithmName,
+
+    -- ** SourceAlgorithmSpecification
+    sourceAlgorithmSpecification_sourceAlgorithms,
+
+    -- ** SourceIpConfig
+    sourceIpConfig_cidrs,
+
+    -- ** SpaceDetails
+    spaceDetails_creationTime,
+    spaceDetails_domainId,
+    spaceDetails_lastModifiedTime,
+    spaceDetails_spaceName,
+    spaceDetails_status,
+
+    -- ** SpaceSettings
+    spaceSettings_jupyterServerAppSettings,
+    spaceSettings_kernelGatewayAppSettings,
+
+    -- ** StoppingCondition
+    stoppingCondition_maxRuntimeInSeconds,
+    stoppingCondition_maxWaitTimeInSeconds,
+
+    -- ** StudioLifecycleConfigDetails
+    studioLifecycleConfigDetails_creationTime,
+    studioLifecycleConfigDetails_lastModifiedTime,
+    studioLifecycleConfigDetails_studioLifecycleConfigAppType,
+    studioLifecycleConfigDetails_studioLifecycleConfigArn,
+    studioLifecycleConfigDetails_studioLifecycleConfigName,
+
+    -- ** SubscribedWorkteam
+    subscribedWorkteam_listingId,
+    subscribedWorkteam_marketplaceDescription,
+    subscribedWorkteam_marketplaceTitle,
+    subscribedWorkteam_sellerName,
+    subscribedWorkteam_workteamArn,
+
+    -- ** SuggestionQuery
+    suggestionQuery_propertyNameQuery,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TargetPlatform
+    targetPlatform_accelerator,
+    targetPlatform_os,
+    targetPlatform_arch,
+
+    -- ** TensorBoardAppSettings
+    tensorBoardAppSettings_defaultResourceSpec,
+
+    -- ** TensorBoardOutputConfig
+    tensorBoardOutputConfig_localPath,
+    tensorBoardOutputConfig_s3OutputPath,
+
+    -- ** TimeSeriesForecastingSettings
+    timeSeriesForecastingSettings_amazonForecastRoleArn,
+    timeSeriesForecastingSettings_status,
+
+    -- ** TrafficPattern
+    trafficPattern_phases,
+    trafficPattern_trafficType,
+
+    -- ** TrafficRoutingConfig
+    trafficRoutingConfig_canarySize,
+    trafficRoutingConfig_linearStepSize,
+    trafficRoutingConfig_type,
+    trafficRoutingConfig_waitIntervalInSeconds,
+
+    -- ** TrainingJob
+    trainingJob_algorithmSpecification,
+    trainingJob_autoMLJobArn,
+    trainingJob_billableTimeInSeconds,
+    trainingJob_checkpointConfig,
+    trainingJob_creationTime,
+    trainingJob_debugHookConfig,
+    trainingJob_debugRuleConfigurations,
+    trainingJob_debugRuleEvaluationStatuses,
+    trainingJob_enableInterContainerTrafficEncryption,
+    trainingJob_enableManagedSpotTraining,
+    trainingJob_enableNetworkIsolation,
+    trainingJob_environment,
+    trainingJob_experimentConfig,
+    trainingJob_failureReason,
+    trainingJob_finalMetricDataList,
+    trainingJob_hyperParameters,
+    trainingJob_inputDataConfig,
+    trainingJob_labelingJobArn,
+    trainingJob_lastModifiedTime,
+    trainingJob_modelArtifacts,
+    trainingJob_outputDataConfig,
+    trainingJob_resourceConfig,
+    trainingJob_retryStrategy,
+    trainingJob_roleArn,
+    trainingJob_secondaryStatus,
+    trainingJob_secondaryStatusTransitions,
+    trainingJob_stoppingCondition,
+    trainingJob_tags,
+    trainingJob_tensorBoardOutputConfig,
+    trainingJob_trainingEndTime,
+    trainingJob_trainingJobArn,
+    trainingJob_trainingJobName,
+    trainingJob_trainingJobStatus,
+    trainingJob_trainingStartTime,
+    trainingJob_trainingTimeInSeconds,
+    trainingJob_tuningJobArn,
+    trainingJob_vpcConfig,
+
+    -- ** TrainingJobDefinition
+    trainingJobDefinition_hyperParameters,
+    trainingJobDefinition_trainingInputMode,
+    trainingJobDefinition_inputDataConfig,
+    trainingJobDefinition_outputDataConfig,
+    trainingJobDefinition_resourceConfig,
+    trainingJobDefinition_stoppingCondition,
+
+    -- ** TrainingJobStatusCounters
+    trainingJobStatusCounters_completed,
+    trainingJobStatusCounters_inProgress,
+    trainingJobStatusCounters_nonRetryableError,
+    trainingJobStatusCounters_retryableError,
+    trainingJobStatusCounters_stopped,
+
+    -- ** TrainingJobStepMetadata
+    trainingJobStepMetadata_arn,
+
+    -- ** TrainingJobSummary
+    trainingJobSummary_lastModifiedTime,
+    trainingJobSummary_trainingEndTime,
+    trainingJobSummary_warmPoolStatus,
+    trainingJobSummary_trainingJobName,
+    trainingJobSummary_trainingJobArn,
+    trainingJobSummary_creationTime,
+    trainingJobSummary_trainingJobStatus,
+
+    -- ** TrainingSpecification
+    trainingSpecification_metricDefinitions,
+    trainingSpecification_supportedHyperParameters,
+    trainingSpecification_supportedTuningJobObjectiveMetrics,
+    trainingSpecification_supportsDistributedTraining,
+    trainingSpecification_trainingImageDigest,
+    trainingSpecification_trainingImage,
+    trainingSpecification_supportedTrainingInstanceTypes,
+    trainingSpecification_trainingChannels,
+
+    -- ** TransformDataSource
+    transformDataSource_s3DataSource,
+
+    -- ** TransformInput
+    transformInput_compressionType,
+    transformInput_contentType,
+    transformInput_splitType,
+    transformInput_dataSource,
+
+    -- ** TransformJob
+    transformJob_autoMLJobArn,
+    transformJob_batchStrategy,
+    transformJob_creationTime,
+    transformJob_dataProcessing,
+    transformJob_environment,
+    transformJob_experimentConfig,
+    transformJob_failureReason,
+    transformJob_labelingJobArn,
+    transformJob_maxConcurrentTransforms,
+    transformJob_maxPayloadInMB,
+    transformJob_modelClientConfig,
+    transformJob_modelName,
+    transformJob_tags,
+    transformJob_transformEndTime,
+    transformJob_transformInput,
+    transformJob_transformJobArn,
+    transformJob_transformJobName,
+    transformJob_transformJobStatus,
+    transformJob_transformOutput,
+    transformJob_transformResources,
+    transformJob_transformStartTime,
+
+    -- ** TransformJobDefinition
+    transformJobDefinition_batchStrategy,
+    transformJobDefinition_environment,
+    transformJobDefinition_maxConcurrentTransforms,
+    transformJobDefinition_maxPayloadInMB,
+    transformJobDefinition_transformInput,
+    transformJobDefinition_transformOutput,
+    transformJobDefinition_transformResources,
+
+    -- ** TransformJobStepMetadata
+    transformJobStepMetadata_arn,
+
+    -- ** TransformJobSummary
+    transformJobSummary_failureReason,
+    transformJobSummary_lastModifiedTime,
+    transformJobSummary_transformEndTime,
+    transformJobSummary_transformJobName,
+    transformJobSummary_transformJobArn,
+    transformJobSummary_creationTime,
+    transformJobSummary_transformJobStatus,
+
+    -- ** TransformOutput
+    transformOutput_accept,
+    transformOutput_assembleWith,
+    transformOutput_kmsKeyId,
+    transformOutput_s3OutputPath,
+
+    -- ** TransformResources
+    transformResources_volumeKmsKeyId,
+    transformResources_instanceType,
+    transformResources_instanceCount,
+
+    -- ** TransformS3DataSource
+    transformS3DataSource_s3DataType,
+    transformS3DataSource_s3Uri,
+
+    -- ** Trial
+    trial_createdBy,
+    trial_creationTime,
+    trial_displayName,
+    trial_experimentName,
+    trial_lastModifiedBy,
+    trial_lastModifiedTime,
+    trial_metadataProperties,
+    trial_source,
+    trial_tags,
+    trial_trialArn,
+    trial_trialComponentSummaries,
+    trial_trialName,
+
+    -- ** TrialComponent
+    trialComponent_createdBy,
+    trialComponent_creationTime,
+    trialComponent_displayName,
+    trialComponent_endTime,
+    trialComponent_inputArtifacts,
+    trialComponent_lastModifiedBy,
+    trialComponent_lastModifiedTime,
+    trialComponent_lineageGroupArn,
+    trialComponent_metadataProperties,
+    trialComponent_metrics,
+    trialComponent_outputArtifacts,
+    trialComponent_parameters,
+    trialComponent_parents,
+    trialComponent_runName,
+    trialComponent_source,
+    trialComponent_sourceDetail,
+    trialComponent_startTime,
+    trialComponent_status,
+    trialComponent_tags,
+    trialComponent_trialComponentArn,
+    trialComponent_trialComponentName,
+
+    -- ** TrialComponentArtifact
+    trialComponentArtifact_mediaType,
+    trialComponentArtifact_value,
+
+    -- ** TrialComponentMetricSummary
+    trialComponentMetricSummary_avg,
+    trialComponentMetricSummary_count,
+    trialComponentMetricSummary_last,
+    trialComponentMetricSummary_max,
+    trialComponentMetricSummary_metricName,
+    trialComponentMetricSummary_min,
+    trialComponentMetricSummary_sourceArn,
+    trialComponentMetricSummary_stdDev,
+    trialComponentMetricSummary_timeStamp,
+
+    -- ** TrialComponentParameterValue
+    trialComponentParameterValue_numberValue,
+    trialComponentParameterValue_stringValue,
+
+    -- ** TrialComponentSimpleSummary
+    trialComponentSimpleSummary_createdBy,
+    trialComponentSimpleSummary_creationTime,
+    trialComponentSimpleSummary_trialComponentArn,
+    trialComponentSimpleSummary_trialComponentName,
+    trialComponentSimpleSummary_trialComponentSource,
+
+    -- ** TrialComponentSource
+    trialComponentSource_sourceType,
+    trialComponentSource_sourceArn,
+
+    -- ** TrialComponentSourceDetail
+    trialComponentSourceDetail_processingJob,
+    trialComponentSourceDetail_sourceArn,
+    trialComponentSourceDetail_trainingJob,
+    trialComponentSourceDetail_transformJob,
+
+    -- ** TrialComponentStatus
+    trialComponentStatus_message,
+    trialComponentStatus_primaryStatus,
+
+    -- ** TrialComponentSummary
+    trialComponentSummary_createdBy,
+    trialComponentSummary_creationTime,
+    trialComponentSummary_displayName,
+    trialComponentSummary_endTime,
+    trialComponentSummary_lastModifiedBy,
+    trialComponentSummary_lastModifiedTime,
+    trialComponentSummary_startTime,
+    trialComponentSummary_status,
+    trialComponentSummary_trialComponentArn,
+    trialComponentSummary_trialComponentName,
+    trialComponentSummary_trialComponentSource,
+
+    -- ** TrialSource
+    trialSource_sourceType,
+    trialSource_sourceArn,
+
+    -- ** TrialSummary
+    trialSummary_creationTime,
+    trialSummary_displayName,
+    trialSummary_lastModifiedTime,
+    trialSummary_trialArn,
+    trialSummary_trialName,
+    trialSummary_trialSource,
+
+    -- ** TuningJobCompletionCriteria
+    tuningJobCompletionCriteria_targetObjectiveMetricValue,
+
+    -- ** TuningJobStepMetaData
+    tuningJobStepMetaData_arn,
+
+    -- ** USD
+    usd_cents,
+    usd_dollars,
+    usd_tenthFractionsOfACent,
+
+    -- ** UiConfig
+    uiConfig_humanTaskUiArn,
+    uiConfig_uiTemplateS3Uri,
+
+    -- ** UiTemplate
+    uiTemplate_content,
+
+    -- ** UiTemplateInfo
+    uiTemplateInfo_contentSha256,
+    uiTemplateInfo_url,
+
+    -- ** UserContext
+    userContext_domainId,
+    userContext_userProfileArn,
+    userContext_userProfileName,
+
+    -- ** UserProfileDetails
+    userProfileDetails_creationTime,
+    userProfileDetails_domainId,
+    userProfileDetails_lastModifiedTime,
+    userProfileDetails_status,
+    userProfileDetails_userProfileName,
+
+    -- ** UserSettings
+    userSettings_canvasAppSettings,
+    userSettings_executionRole,
+    userSettings_jupyterServerAppSettings,
+    userSettings_kernelGatewayAppSettings,
+    userSettings_rSessionAppSettings,
+    userSettings_rStudioServerProAppSettings,
+    userSettings_securityGroups,
+    userSettings_sharingSettings,
+    userSettings_tensorBoardAppSettings,
+
+    -- ** VariantProperty
+    variantProperty_variantPropertyType,
+
+    -- ** Vertex
+    vertex_arn,
+    vertex_lineageType,
+    vertex_type,
+
+    -- ** VpcConfig
+    vpcConfig_securityGroupIds,
+    vpcConfig_subnets,
+
+    -- ** WarmPoolStatus
+    warmPoolStatus_resourceRetainedBillableTimeInSeconds,
+    warmPoolStatus_reusedByJob,
+    warmPoolStatus_status,
+
+    -- ** Workforce
+    workforce_cognitoConfig,
+    workforce_createDate,
+    workforce_failureReason,
+    workforce_lastUpdatedDate,
+    workforce_oidcConfig,
+    workforce_sourceIpConfig,
+    workforce_status,
+    workforce_subDomain,
+    workforce_workforceVpcConfig,
+    workforce_workforceName,
+    workforce_workforceArn,
+
+    -- ** WorkforceVpcConfigRequest
+    workforceVpcConfigRequest_securityGroupIds,
+    workforceVpcConfigRequest_subnets,
+    workforceVpcConfigRequest_vpcId,
+
+    -- ** WorkforceVpcConfigResponse
+    workforceVpcConfigResponse_vpcEndpointId,
+    workforceVpcConfigResponse_vpcId,
+    workforceVpcConfigResponse_securityGroupIds,
+    workforceVpcConfigResponse_subnets,
+
+    -- ** Workteam
+    workteam_createDate,
+    workteam_lastUpdatedDate,
+    workteam_notificationConfiguration,
+    workteam_productListingIds,
+    workteam_subDomain,
+    workteam_workforceArn,
+    workteam_workteamName,
+    workteam_memberDefinitions,
+    workteam_workteamArn,
+    workteam_description,
+  )
+where
+
+import Amazonka.SageMaker.AddAssociation
+import Amazonka.SageMaker.AddTags
+import Amazonka.SageMaker.AssociateTrialComponent
+import Amazonka.SageMaker.BatchDescribeModelPackage
+import Amazonka.SageMaker.CreateAction
+import Amazonka.SageMaker.CreateAlgorithm
+import Amazonka.SageMaker.CreateApp
+import Amazonka.SageMaker.CreateAppImageConfig
+import Amazonka.SageMaker.CreateArtifact
+import Amazonka.SageMaker.CreateAutoMLJob
+import Amazonka.SageMaker.CreateCodeRepository
+import Amazonka.SageMaker.CreateCompilationJob
+import Amazonka.SageMaker.CreateContext
+import Amazonka.SageMaker.CreateDataQualityJobDefinition
+import Amazonka.SageMaker.CreateDeviceFleet
+import Amazonka.SageMaker.CreateDomain
+import Amazonka.SageMaker.CreateEdgeDeploymentPlan
+import Amazonka.SageMaker.CreateEdgeDeploymentStage
+import Amazonka.SageMaker.CreateEdgePackagingJob
+import Amazonka.SageMaker.CreateEndpoint
+import Amazonka.SageMaker.CreateEndpointConfig
+import Amazonka.SageMaker.CreateExperiment
+import Amazonka.SageMaker.CreateFeatureGroup
+import Amazonka.SageMaker.CreateFlowDefinition
+import Amazonka.SageMaker.CreateHub
+import Amazonka.SageMaker.CreateHumanTaskUi
+import Amazonka.SageMaker.CreateHyperParameterTuningJob
+import Amazonka.SageMaker.CreateImage
+import Amazonka.SageMaker.CreateImageVersion
+import Amazonka.SageMaker.CreateInferenceExperiment
+import Amazonka.SageMaker.CreateInferenceRecommendationsJob
+import Amazonka.SageMaker.CreateLabelingJob
+import Amazonka.SageMaker.CreateModel
+import Amazonka.SageMaker.CreateModelBiasJobDefinition
+import Amazonka.SageMaker.CreateModelCard
+import Amazonka.SageMaker.CreateModelCardExportJob
+import Amazonka.SageMaker.CreateModelExplainabilityJobDefinition
+import Amazonka.SageMaker.CreateModelPackage
+import Amazonka.SageMaker.CreateModelPackageGroup
+import Amazonka.SageMaker.CreateModelQualityJobDefinition
+import Amazonka.SageMaker.CreateMonitoringSchedule
+import Amazonka.SageMaker.CreateNotebookInstance
+import Amazonka.SageMaker.CreateNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.CreatePipeline
+import Amazonka.SageMaker.CreatePresignedDomainUrl
+import Amazonka.SageMaker.CreatePresignedNotebookInstanceUrl
+import Amazonka.SageMaker.CreateProcessingJob
+import Amazonka.SageMaker.CreateProject
+import Amazonka.SageMaker.CreateSpace
+import Amazonka.SageMaker.CreateStudioLifecycleConfig
+import Amazonka.SageMaker.CreateTrainingJob
+import Amazonka.SageMaker.CreateTransformJob
+import Amazonka.SageMaker.CreateTrial
+import Amazonka.SageMaker.CreateTrialComponent
+import Amazonka.SageMaker.CreateUserProfile
+import Amazonka.SageMaker.CreateWorkforce
+import Amazonka.SageMaker.CreateWorkteam
+import Amazonka.SageMaker.DeleteAction
+import Amazonka.SageMaker.DeleteAlgorithm
+import Amazonka.SageMaker.DeleteApp
+import Amazonka.SageMaker.DeleteAppImageConfig
+import Amazonka.SageMaker.DeleteArtifact
+import Amazonka.SageMaker.DeleteAssociation
+import Amazonka.SageMaker.DeleteCodeRepository
+import Amazonka.SageMaker.DeleteContext
+import Amazonka.SageMaker.DeleteDataQualityJobDefinition
+import Amazonka.SageMaker.DeleteDeviceFleet
+import Amazonka.SageMaker.DeleteDomain
+import Amazonka.SageMaker.DeleteEdgeDeploymentPlan
+import Amazonka.SageMaker.DeleteEdgeDeploymentStage
+import Amazonka.SageMaker.DeleteEndpoint
+import Amazonka.SageMaker.DeleteEndpointConfig
+import Amazonka.SageMaker.DeleteExperiment
+import Amazonka.SageMaker.DeleteFeatureGroup
+import Amazonka.SageMaker.DeleteFlowDefinition
+import Amazonka.SageMaker.DeleteHub
+import Amazonka.SageMaker.DeleteHubContent
+import Amazonka.SageMaker.DeleteHumanTaskUi
+import Amazonka.SageMaker.DeleteImage
+import Amazonka.SageMaker.DeleteImageVersion
+import Amazonka.SageMaker.DeleteInferenceExperiment
+import Amazonka.SageMaker.DeleteModel
+import Amazonka.SageMaker.DeleteModelBiasJobDefinition
+import Amazonka.SageMaker.DeleteModelCard
+import Amazonka.SageMaker.DeleteModelExplainabilityJobDefinition
+import Amazonka.SageMaker.DeleteModelPackage
+import Amazonka.SageMaker.DeleteModelPackageGroup
+import Amazonka.SageMaker.DeleteModelPackageGroupPolicy
+import Amazonka.SageMaker.DeleteModelQualityJobDefinition
+import Amazonka.SageMaker.DeleteMonitoringSchedule
+import Amazonka.SageMaker.DeleteNotebookInstance
+import Amazonka.SageMaker.DeleteNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.DeletePipeline
+import Amazonka.SageMaker.DeleteProject
+import Amazonka.SageMaker.DeleteSpace
+import Amazonka.SageMaker.DeleteStudioLifecycleConfig
+import Amazonka.SageMaker.DeleteTags
+import Amazonka.SageMaker.DeleteTrial
+import Amazonka.SageMaker.DeleteTrialComponent
+import Amazonka.SageMaker.DeleteUserProfile
+import Amazonka.SageMaker.DeleteWorkforce
+import Amazonka.SageMaker.DeleteWorkteam
+import Amazonka.SageMaker.DeregisterDevices
+import Amazonka.SageMaker.DescribeAction
+import Amazonka.SageMaker.DescribeAlgorithm
+import Amazonka.SageMaker.DescribeApp
+import Amazonka.SageMaker.DescribeAppImageConfig
+import Amazonka.SageMaker.DescribeArtifact
+import Amazonka.SageMaker.DescribeAutoMLJob
+import Amazonka.SageMaker.DescribeCodeRepository
+import Amazonka.SageMaker.DescribeCompilationJob
+import Amazonka.SageMaker.DescribeContext
+import Amazonka.SageMaker.DescribeDataQualityJobDefinition
+import Amazonka.SageMaker.DescribeDevice
+import Amazonka.SageMaker.DescribeDeviceFleet
+import Amazonka.SageMaker.DescribeDomain
+import Amazonka.SageMaker.DescribeEdgeDeploymentPlan
+import Amazonka.SageMaker.DescribeEdgePackagingJob
+import Amazonka.SageMaker.DescribeEndpoint
+import Amazonka.SageMaker.DescribeEndpointConfig
+import Amazonka.SageMaker.DescribeExperiment
+import Amazonka.SageMaker.DescribeFeatureGroup
+import Amazonka.SageMaker.DescribeFeatureMetadata
+import Amazonka.SageMaker.DescribeFlowDefinition
+import Amazonka.SageMaker.DescribeHub
+import Amazonka.SageMaker.DescribeHubContent
+import Amazonka.SageMaker.DescribeHumanTaskUi
+import Amazonka.SageMaker.DescribeHyperParameterTuningJob
+import Amazonka.SageMaker.DescribeImage
+import Amazonka.SageMaker.DescribeImageVersion
+import Amazonka.SageMaker.DescribeInferenceExperiment
+import Amazonka.SageMaker.DescribeInferenceRecommendationsJob
+import Amazonka.SageMaker.DescribeLabelingJob
+import Amazonka.SageMaker.DescribeLineageGroup
+import Amazonka.SageMaker.DescribeModel
+import Amazonka.SageMaker.DescribeModelBiasJobDefinition
+import Amazonka.SageMaker.DescribeModelCard
+import Amazonka.SageMaker.DescribeModelCardExportJob
+import Amazonka.SageMaker.DescribeModelExplainabilityJobDefinition
+import Amazonka.SageMaker.DescribeModelPackage
+import Amazonka.SageMaker.DescribeModelPackageGroup
+import Amazonka.SageMaker.DescribeModelQualityJobDefinition
+import Amazonka.SageMaker.DescribeMonitoringSchedule
+import Amazonka.SageMaker.DescribeNotebookInstance
+import Amazonka.SageMaker.DescribeNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.DescribePipeline
+import Amazonka.SageMaker.DescribePipelineDefinitionForExecution
+import Amazonka.SageMaker.DescribePipelineExecution
+import Amazonka.SageMaker.DescribeProcessingJob
+import Amazonka.SageMaker.DescribeProject
+import Amazonka.SageMaker.DescribeSpace
+import Amazonka.SageMaker.DescribeStudioLifecycleConfig
+import Amazonka.SageMaker.DescribeSubscribedWorkteam
+import Amazonka.SageMaker.DescribeTrainingJob
+import Amazonka.SageMaker.DescribeTransformJob
+import Amazonka.SageMaker.DescribeTrial
+import Amazonka.SageMaker.DescribeTrialComponent
+import Amazonka.SageMaker.DescribeUserProfile
+import Amazonka.SageMaker.DescribeWorkforce
+import Amazonka.SageMaker.DescribeWorkteam
+import Amazonka.SageMaker.DisableSagemakerServicecatalogPortfolio
+import Amazonka.SageMaker.DisassociateTrialComponent
+import Amazonka.SageMaker.EnableSagemakerServicecatalogPortfolio
+import Amazonka.SageMaker.GetDeviceFleetReport
+import Amazonka.SageMaker.GetLineageGroupPolicy
+import Amazonka.SageMaker.GetModelPackageGroupPolicy
+import Amazonka.SageMaker.GetSagemakerServicecatalogPortfolioStatus
+import Amazonka.SageMaker.GetSearchSuggestions
+import Amazonka.SageMaker.ImportHubContent
+import Amazonka.SageMaker.ListActions
+import Amazonka.SageMaker.ListAlgorithms
+import Amazonka.SageMaker.ListAliases
+import Amazonka.SageMaker.ListAppImageConfigs
+import Amazonka.SageMaker.ListApps
+import Amazonka.SageMaker.ListArtifacts
+import Amazonka.SageMaker.ListAssociations
+import Amazonka.SageMaker.ListAutoMLJobs
+import Amazonka.SageMaker.ListCandidatesForAutoMLJob
+import Amazonka.SageMaker.ListCodeRepositories
+import Amazonka.SageMaker.ListCompilationJobs
+import Amazonka.SageMaker.ListContexts
+import Amazonka.SageMaker.ListDataQualityJobDefinitions
+import Amazonka.SageMaker.ListDeviceFleets
+import Amazonka.SageMaker.ListDevices
+import Amazonka.SageMaker.ListDomains
+import Amazonka.SageMaker.ListEdgeDeploymentPlans
+import Amazonka.SageMaker.ListEdgePackagingJobs
+import Amazonka.SageMaker.ListEndpointConfigs
+import Amazonka.SageMaker.ListEndpoints
+import Amazonka.SageMaker.ListExperiments
+import Amazonka.SageMaker.ListFeatureGroups
+import Amazonka.SageMaker.ListFlowDefinitions
+import Amazonka.SageMaker.ListHubContentVersions
+import Amazonka.SageMaker.ListHubContents
+import Amazonka.SageMaker.ListHubs
+import Amazonka.SageMaker.ListHumanTaskUis
+import Amazonka.SageMaker.ListHyperParameterTuningJobs
+import Amazonka.SageMaker.ListImageVersions
+import Amazonka.SageMaker.ListImages
+import Amazonka.SageMaker.ListInferenceExperiments
+import Amazonka.SageMaker.ListInferenceRecommendationsJobSteps
+import Amazonka.SageMaker.ListInferenceRecommendationsJobs
+import Amazonka.SageMaker.ListLabelingJobs
+import Amazonka.SageMaker.ListLabelingJobsForWorkteam
+import Amazonka.SageMaker.ListLineageGroups
+import Amazonka.SageMaker.ListModelBiasJobDefinitions
+import Amazonka.SageMaker.ListModelCardExportJobs
+import Amazonka.SageMaker.ListModelCardVersions
+import Amazonka.SageMaker.ListModelCards
+import Amazonka.SageMaker.ListModelExplainabilityJobDefinitions
+import Amazonka.SageMaker.ListModelMetadata
+import Amazonka.SageMaker.ListModelPackageGroups
+import Amazonka.SageMaker.ListModelPackages
+import Amazonka.SageMaker.ListModelQualityJobDefinitions
+import Amazonka.SageMaker.ListModels
+import Amazonka.SageMaker.ListMonitoringAlertHistory
+import Amazonka.SageMaker.ListMonitoringAlerts
+import Amazonka.SageMaker.ListMonitoringExecutions
+import Amazonka.SageMaker.ListMonitoringSchedules
+import Amazonka.SageMaker.ListNotebookInstanceLifecycleConfigs
+import Amazonka.SageMaker.ListNotebookInstances
+import Amazonka.SageMaker.ListPipelineExecutionSteps
+import Amazonka.SageMaker.ListPipelineExecutions
+import Amazonka.SageMaker.ListPipelineParametersForExecution
+import Amazonka.SageMaker.ListPipelines
+import Amazonka.SageMaker.ListProcessingJobs
+import Amazonka.SageMaker.ListProjects
+import Amazonka.SageMaker.ListSpaces
+import Amazonka.SageMaker.ListStageDevices
+import Amazonka.SageMaker.ListStudioLifecycleConfigs
+import Amazonka.SageMaker.ListSubscribedWorkteams
+import Amazonka.SageMaker.ListTags
+import Amazonka.SageMaker.ListTrainingJobs
+import Amazonka.SageMaker.ListTrainingJobsForHyperParameterTuningJob
+import Amazonka.SageMaker.ListTransformJobs
+import Amazonka.SageMaker.ListTrialComponents
+import Amazonka.SageMaker.ListTrials
+import Amazonka.SageMaker.ListUserProfiles
+import Amazonka.SageMaker.ListWorkforces
+import Amazonka.SageMaker.ListWorkteams
+import Amazonka.SageMaker.PutModelPackageGroupPolicy
+import Amazonka.SageMaker.QueryLineage
+import Amazonka.SageMaker.RegisterDevices
+import Amazonka.SageMaker.RenderUiTemplate
+import Amazonka.SageMaker.RetryPipelineExecution
+import Amazonka.SageMaker.Search
+import Amazonka.SageMaker.SendPipelineExecutionStepFailure
+import Amazonka.SageMaker.SendPipelineExecutionStepSuccess
+import Amazonka.SageMaker.StartEdgeDeploymentStage
+import Amazonka.SageMaker.StartInferenceExperiment
+import Amazonka.SageMaker.StartMonitoringSchedule
+import Amazonka.SageMaker.StartNotebookInstance
+import Amazonka.SageMaker.StartPipelineExecution
+import Amazonka.SageMaker.StopAutoMLJob
+import Amazonka.SageMaker.StopCompilationJob
+import Amazonka.SageMaker.StopEdgeDeploymentStage
+import Amazonka.SageMaker.StopEdgePackagingJob
+import Amazonka.SageMaker.StopHyperParameterTuningJob
+import Amazonka.SageMaker.StopInferenceExperiment
+import Amazonka.SageMaker.StopInferenceRecommendationsJob
+import Amazonka.SageMaker.StopLabelingJob
+import Amazonka.SageMaker.StopMonitoringSchedule
+import Amazonka.SageMaker.StopNotebookInstance
+import Amazonka.SageMaker.StopPipelineExecution
+import Amazonka.SageMaker.StopProcessingJob
+import Amazonka.SageMaker.StopTrainingJob
+import Amazonka.SageMaker.StopTransformJob
+import Amazonka.SageMaker.Types.ActionSource
+import Amazonka.SageMaker.Types.ActionSummary
+import Amazonka.SageMaker.Types.AdditionalInferenceSpecificationDefinition
+import Amazonka.SageMaker.Types.AgentVersion
+import Amazonka.SageMaker.Types.Alarm
+import Amazonka.SageMaker.Types.AlgorithmSpecification
+import Amazonka.SageMaker.Types.AlgorithmStatusDetails
+import Amazonka.SageMaker.Types.AlgorithmStatusItem
+import Amazonka.SageMaker.Types.AlgorithmSummary
+import Amazonka.SageMaker.Types.AlgorithmValidationProfile
+import Amazonka.SageMaker.Types.AlgorithmValidationSpecification
+import Amazonka.SageMaker.Types.AnnotationConsolidationConfig
+import Amazonka.SageMaker.Types.AppDetails
+import Amazonka.SageMaker.Types.AppImageConfigDetails
+import Amazonka.SageMaker.Types.AppSpecification
+import Amazonka.SageMaker.Types.ArtifactSource
+import Amazonka.SageMaker.Types.ArtifactSourceType
+import Amazonka.SageMaker.Types.ArtifactSummary
+import Amazonka.SageMaker.Types.AssociationSummary
+import Amazonka.SageMaker.Types.AsyncInferenceClientConfig
+import Amazonka.SageMaker.Types.AsyncInferenceConfig
+import Amazonka.SageMaker.Types.AsyncInferenceNotificationConfig
+import Amazonka.SageMaker.Types.AsyncInferenceOutputConfig
+import Amazonka.SageMaker.Types.AthenaDatasetDefinition
+import Amazonka.SageMaker.Types.AutoMLCandidate
+import Amazonka.SageMaker.Types.AutoMLCandidateGenerationConfig
+import Amazonka.SageMaker.Types.AutoMLCandidateStep
+import Amazonka.SageMaker.Types.AutoMLChannel
+import Amazonka.SageMaker.Types.AutoMLContainerDefinition
+import Amazonka.SageMaker.Types.AutoMLDataSource
+import Amazonka.SageMaker.Types.AutoMLDataSplitConfig
+import Amazonka.SageMaker.Types.AutoMLJobArtifacts
+import Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria
+import Amazonka.SageMaker.Types.AutoMLJobConfig
+import Amazonka.SageMaker.Types.AutoMLJobObjective
+import Amazonka.SageMaker.Types.AutoMLJobStepMetadata
+import Amazonka.SageMaker.Types.AutoMLJobSummary
+import Amazonka.SageMaker.Types.AutoMLOutputDataConfig
+import Amazonka.SageMaker.Types.AutoMLPartialFailureReason
+import Amazonka.SageMaker.Types.AutoMLS3DataSource
+import Amazonka.SageMaker.Types.AutoMLSecurityConfig
+import Amazonka.SageMaker.Types.AutoRollbackConfig
+import Amazonka.SageMaker.Types.BatchDataCaptureConfig
+import Amazonka.SageMaker.Types.BatchDescribeModelPackageError
+import Amazonka.SageMaker.Types.BatchDescribeModelPackageSummary
+import Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.Bias
+import Amazonka.SageMaker.Types.BlueGreenUpdatePolicy
+import Amazonka.SageMaker.Types.CacheHitResult
+import Amazonka.SageMaker.Types.CallbackStepMetadata
+import Amazonka.SageMaker.Types.CandidateArtifactLocations
+import Amazonka.SageMaker.Types.CandidateProperties
+import Amazonka.SageMaker.Types.CanvasAppSettings
+import Amazonka.SageMaker.Types.CapacitySize
+import Amazonka.SageMaker.Types.CaptureContentTypeHeader
+import Amazonka.SageMaker.Types.CaptureOption
+import Amazonka.SageMaker.Types.CategoricalParameter
+import Amazonka.SageMaker.Types.CategoricalParameterRange
+import Amazonka.SageMaker.Types.CategoricalParameterRangeSpecification
+import Amazonka.SageMaker.Types.Channel
+import Amazonka.SageMaker.Types.ChannelSpecification
+import Amazonka.SageMaker.Types.CheckpointConfig
+import Amazonka.SageMaker.Types.ClarifyCheckStepMetadata
+import Amazonka.SageMaker.Types.ClarifyExplainerConfig
+import Amazonka.SageMaker.Types.ClarifyInferenceConfig
+import Amazonka.SageMaker.Types.ClarifyShapBaselineConfig
+import Amazonka.SageMaker.Types.ClarifyShapConfig
+import Amazonka.SageMaker.Types.ClarifyTextConfig
+import Amazonka.SageMaker.Types.CodeRepository
+import Amazonka.SageMaker.Types.CodeRepositorySummary
+import Amazonka.SageMaker.Types.CognitoConfig
+import Amazonka.SageMaker.Types.CognitoMemberDefinition
+import Amazonka.SageMaker.Types.CollectionConfiguration
+import Amazonka.SageMaker.Types.CompilationJobSummary
+import Amazonka.SageMaker.Types.ConditionStepMetadata
+import Amazonka.SageMaker.Types.ContainerDefinition
+import Amazonka.SageMaker.Types.ContextSource
+import Amazonka.SageMaker.Types.ContextSummary
+import Amazonka.SageMaker.Types.ContinuousParameterRange
+import Amazonka.SageMaker.Types.ContinuousParameterRangeSpecification
+import Amazonka.SageMaker.Types.CustomImage
+import Amazonka.SageMaker.Types.DataCaptureConfig
+import Amazonka.SageMaker.Types.DataCaptureConfigSummary
+import Amazonka.SageMaker.Types.DataCatalogConfig
+import Amazonka.SageMaker.Types.DataProcessing
+import Amazonka.SageMaker.Types.DataQualityAppSpecification
+import Amazonka.SageMaker.Types.DataQualityBaselineConfig
+import Amazonka.SageMaker.Types.DataQualityJobInput
+import Amazonka.SageMaker.Types.DataSource
+import Amazonka.SageMaker.Types.DatasetDefinition
+import Amazonka.SageMaker.Types.DebugHookConfig
+import Amazonka.SageMaker.Types.DebugRuleConfiguration
+import Amazonka.SageMaker.Types.DebugRuleEvaluationStatus
+import Amazonka.SageMaker.Types.DefaultSpaceSettings
+import Amazonka.SageMaker.Types.DeployedImage
+import Amazonka.SageMaker.Types.DeploymentConfig
+import Amazonka.SageMaker.Types.DeploymentStage
+import Amazonka.SageMaker.Types.DeploymentStageStatusSummary
+import Amazonka.SageMaker.Types.DesiredWeightAndCapacity
+import Amazonka.SageMaker.Types.Device
+import Amazonka.SageMaker.Types.DeviceDeploymentSummary
+import Amazonka.SageMaker.Types.DeviceFleetSummary
+import Amazonka.SageMaker.Types.DeviceSelectionConfig
+import Amazonka.SageMaker.Types.DeviceStats
+import Amazonka.SageMaker.Types.DeviceSummary
+import Amazonka.SageMaker.Types.DomainDetails
+import Amazonka.SageMaker.Types.DomainSettings
+import Amazonka.SageMaker.Types.DomainSettingsForUpdate
+import Amazonka.SageMaker.Types.DriftCheckBaselines
+import Amazonka.SageMaker.Types.DriftCheckBias
+import Amazonka.SageMaker.Types.DriftCheckExplainability
+import Amazonka.SageMaker.Types.DriftCheckModelDataQuality
+import Amazonka.SageMaker.Types.DriftCheckModelQuality
+import Amazonka.SageMaker.Types.EMRStepMetadata
+import Amazonka.SageMaker.Types.Edge
+import Amazonka.SageMaker.Types.EdgeDeploymentConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentModelConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentPlanSummary
+import Amazonka.SageMaker.Types.EdgeDeploymentStatus
+import Amazonka.SageMaker.Types.EdgeModel
+import Amazonka.SageMaker.Types.EdgeModelStat
+import Amazonka.SageMaker.Types.EdgeModelSummary
+import Amazonka.SageMaker.Types.EdgeOutputConfig
+import Amazonka.SageMaker.Types.EdgePackagingJobSummary
+import Amazonka.SageMaker.Types.EdgePresetDeploymentOutput
+import Amazonka.SageMaker.Types.Endpoint
+import Amazonka.SageMaker.Types.EndpointConfigSummary
+import Amazonka.SageMaker.Types.EndpointInfo
+import Amazonka.SageMaker.Types.EndpointInput
+import Amazonka.SageMaker.Types.EndpointInputConfiguration
+import Amazonka.SageMaker.Types.EndpointMetadata
+import Amazonka.SageMaker.Types.EndpointOutputConfiguration
+import Amazonka.SageMaker.Types.EndpointPerformance
+import Amazonka.SageMaker.Types.EndpointSummary
+import Amazonka.SageMaker.Types.EnvironmentParameter
+import Amazonka.SageMaker.Types.EnvironmentParameterRanges
+import Amazonka.SageMaker.Types.Experiment
+import Amazonka.SageMaker.Types.ExperimentConfig
+import Amazonka.SageMaker.Types.ExperimentSource
+import Amazonka.SageMaker.Types.ExperimentSummary
+import Amazonka.SageMaker.Types.Explainability
+import Amazonka.SageMaker.Types.ExplainerConfig
+import Amazonka.SageMaker.Types.FailStepMetadata
+import Amazonka.SageMaker.Types.FeatureDefinition
+import Amazonka.SageMaker.Types.FeatureGroup
+import Amazonka.SageMaker.Types.FeatureGroupSummary
+import Amazonka.SageMaker.Types.FeatureMetadata
+import Amazonka.SageMaker.Types.FeatureParameter
+import Amazonka.SageMaker.Types.FileSource
+import Amazonka.SageMaker.Types.FileSystemConfig
+import Amazonka.SageMaker.Types.FileSystemDataSource
+import Amazonka.SageMaker.Types.Filter
+import Amazonka.SageMaker.Types.FinalAutoMLJobObjectiveMetric
+import Amazonka.SageMaker.Types.FinalHyperParameterTuningJobObjectiveMetric
+import Amazonka.SageMaker.Types.FlowDefinitionOutputConfig
+import Amazonka.SageMaker.Types.FlowDefinitionSummary
+import Amazonka.SageMaker.Types.GitConfig
+import Amazonka.SageMaker.Types.GitConfigForUpdate
+import Amazonka.SageMaker.Types.HubContentDependency
+import Amazonka.SageMaker.Types.HubContentInfo
+import Amazonka.SageMaker.Types.HubInfo
+import Amazonka.SageMaker.Types.HubS3StorageConfig
+import Amazonka.SageMaker.Types.HumanLoopActivationConditionsConfig
+import Amazonka.SageMaker.Types.HumanLoopActivationConfig
+import Amazonka.SageMaker.Types.HumanLoopConfig
+import Amazonka.SageMaker.Types.HumanLoopRequestSource
+import Amazonka.SageMaker.Types.HumanTaskConfig
+import Amazonka.SageMaker.Types.HumanTaskUiSummary
+import Amazonka.SageMaker.Types.HyperParameterAlgorithmSpecification
+import Amazonka.SageMaker.Types.HyperParameterSpecification
+import Amazonka.SageMaker.Types.HyperParameterTrainingJobDefinition
+import Amazonka.SageMaker.Types.HyperParameterTrainingJobSummary
+import Amazonka.SageMaker.Types.HyperParameterTuningInstanceConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobObjective
+import Amazonka.SageMaker.Types.HyperParameterTuningJobSearchEntity
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobSummary
+import Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningResourceConfig
+import Amazonka.SageMaker.Types.HyperbandStrategyConfig
+import Amazonka.SageMaker.Types.Image
+import Amazonka.SageMaker.Types.ImageConfig
+import Amazonka.SageMaker.Types.ImageVersion
+import Amazonka.SageMaker.Types.InferenceExecutionConfig
+import Amazonka.SageMaker.Types.InferenceExperimentDataStorageConfig
+import Amazonka.SageMaker.Types.InferenceExperimentSchedule
+import Amazonka.SageMaker.Types.InferenceExperimentSummary
+import Amazonka.SageMaker.Types.InferenceMetrics
+import Amazonka.SageMaker.Types.InferenceRecommendation
+import Amazonka.SageMaker.Types.InferenceRecommendationsJob
+import Amazonka.SageMaker.Types.InferenceRecommendationsJobStep
+import Amazonka.SageMaker.Types.InferenceSpecification
+import Amazonka.SageMaker.Types.InputConfig
+import Amazonka.SageMaker.Types.InstanceGroup
+import Amazonka.SageMaker.Types.InstanceMetadataServiceConfiguration
+import Amazonka.SageMaker.Types.IntegerParameterRange
+import Amazonka.SageMaker.Types.IntegerParameterRangeSpecification
+import Amazonka.SageMaker.Types.JupyterServerAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayImageConfig
+import Amazonka.SageMaker.Types.KernelSpec
+import Amazonka.SageMaker.Types.LabelCounters
+import Amazonka.SageMaker.Types.LabelCountersForWorkteam
+import Amazonka.SageMaker.Types.LabelingJobAlgorithmsConfig
+import Amazonka.SageMaker.Types.LabelingJobDataAttributes
+import Amazonka.SageMaker.Types.LabelingJobDataSource
+import Amazonka.SageMaker.Types.LabelingJobForWorkteamSummary
+import Amazonka.SageMaker.Types.LabelingJobInputConfig
+import Amazonka.SageMaker.Types.LabelingJobOutput
+import Amazonka.SageMaker.Types.LabelingJobOutputConfig
+import Amazonka.SageMaker.Types.LabelingJobResourceConfig
+import Amazonka.SageMaker.Types.LabelingJobS3DataSource
+import Amazonka.SageMaker.Types.LabelingJobSnsDataSource
+import Amazonka.SageMaker.Types.LabelingJobStoppingConditions
+import Amazonka.SageMaker.Types.LabelingJobSummary
+import Amazonka.SageMaker.Types.LambdaStepMetadata
+import Amazonka.SageMaker.Types.LastUpdateStatus
+import Amazonka.SageMaker.Types.LineageGroupSummary
+import Amazonka.SageMaker.Types.MemberDefinition
+import Amazonka.SageMaker.Types.MetadataProperties
+import Amazonka.SageMaker.Types.MetricData
+import Amazonka.SageMaker.Types.MetricDatum
+import Amazonka.SageMaker.Types.MetricDefinition
+import Amazonka.SageMaker.Types.MetricsSource
+import Amazonka.SageMaker.Types.Model
+import Amazonka.SageMaker.Types.ModelArtifacts
+import Amazonka.SageMaker.Types.ModelBiasAppSpecification
+import Amazonka.SageMaker.Types.ModelBiasBaselineConfig
+import Amazonka.SageMaker.Types.ModelBiasJobInput
+import Amazonka.SageMaker.Types.ModelCard
+import Amazonka.SageMaker.Types.ModelCardExportArtifacts
+import Amazonka.SageMaker.Types.ModelCardExportJobSummary
+import Amazonka.SageMaker.Types.ModelCardExportOutputConfig
+import Amazonka.SageMaker.Types.ModelCardSecurityConfig
+import Amazonka.SageMaker.Types.ModelCardSummary
+import Amazonka.SageMaker.Types.ModelCardVersionSummary
+import Amazonka.SageMaker.Types.ModelClientConfig
+import Amazonka.SageMaker.Types.ModelConfiguration
+import Amazonka.SageMaker.Types.ModelDashboardEndpoint
+import Amazonka.SageMaker.Types.ModelDashboardIndicatorAction
+import Amazonka.SageMaker.Types.ModelDashboardModel
+import Amazonka.SageMaker.Types.ModelDashboardModelCard
+import Amazonka.SageMaker.Types.ModelDashboardMonitoringSchedule
+import Amazonka.SageMaker.Types.ModelDataQuality
+import Amazonka.SageMaker.Types.ModelDeployConfig
+import Amazonka.SageMaker.Types.ModelDeployResult
+import Amazonka.SageMaker.Types.ModelDigests
+import Amazonka.SageMaker.Types.ModelExplainabilityAppSpecification
+import Amazonka.SageMaker.Types.ModelExplainabilityBaselineConfig
+import Amazonka.SageMaker.Types.ModelExplainabilityJobInput
+import Amazonka.SageMaker.Types.ModelInfrastructureConfig
+import Amazonka.SageMaker.Types.ModelInput
+import Amazonka.SageMaker.Types.ModelLatencyThreshold
+import Amazonka.SageMaker.Types.ModelMetadataFilter
+import Amazonka.SageMaker.Types.ModelMetadataSearchExpression
+import Amazonka.SageMaker.Types.ModelMetadataSummary
+import Amazonka.SageMaker.Types.ModelMetrics
+import Amazonka.SageMaker.Types.ModelPackage
+import Amazonka.SageMaker.Types.ModelPackageContainerDefinition
+import Amazonka.SageMaker.Types.ModelPackageGroup
+import Amazonka.SageMaker.Types.ModelPackageGroupSummary
+import Amazonka.SageMaker.Types.ModelPackageStatusDetails
+import Amazonka.SageMaker.Types.ModelPackageStatusItem
+import Amazonka.SageMaker.Types.ModelPackageSummary
+import Amazonka.SageMaker.Types.ModelPackageValidationProfile
+import Amazonka.SageMaker.Types.ModelPackageValidationSpecification
+import Amazonka.SageMaker.Types.ModelQuality
+import Amazonka.SageMaker.Types.ModelQualityAppSpecification
+import Amazonka.SageMaker.Types.ModelQualityBaselineConfig
+import Amazonka.SageMaker.Types.ModelQualityJobInput
+import Amazonka.SageMaker.Types.ModelStepMetadata
+import Amazonka.SageMaker.Types.ModelSummary
+import Amazonka.SageMaker.Types.ModelVariantConfig
+import Amazonka.SageMaker.Types.ModelVariantConfigSummary
+import Amazonka.SageMaker.Types.MonitoringAlertActions
+import Amazonka.SageMaker.Types.MonitoringAlertHistorySummary
+import Amazonka.SageMaker.Types.MonitoringAlertSummary
+import Amazonka.SageMaker.Types.MonitoringAppSpecification
+import Amazonka.SageMaker.Types.MonitoringBaselineConfig
+import Amazonka.SageMaker.Types.MonitoringClusterConfig
+import Amazonka.SageMaker.Types.MonitoringConstraintsResource
+import Amazonka.SageMaker.Types.MonitoringCsvDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringExecutionSummary
+import Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input
+import Amazonka.SageMaker.Types.MonitoringInput
+import Amazonka.SageMaker.Types.MonitoringJobDefinition
+import Amazonka.SageMaker.Types.MonitoringJobDefinitionSummary
+import Amazonka.SageMaker.Types.MonitoringJsonDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringNetworkConfig
+import Amazonka.SageMaker.Types.MonitoringOutput
+import Amazonka.SageMaker.Types.MonitoringOutputConfig
+import Amazonka.SageMaker.Types.MonitoringParquetDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringResources
+import Amazonka.SageMaker.Types.MonitoringS3Output
+import Amazonka.SageMaker.Types.MonitoringSchedule
+import Amazonka.SageMaker.Types.MonitoringScheduleConfig
+import Amazonka.SageMaker.Types.MonitoringScheduleSummary
+import Amazonka.SageMaker.Types.MonitoringStatisticsResource
+import Amazonka.SageMaker.Types.MonitoringStoppingCondition
+import Amazonka.SageMaker.Types.MultiModelConfig
+import Amazonka.SageMaker.Types.NeoVpcConfig
+import Amazonka.SageMaker.Types.NestedFilters
+import Amazonka.SageMaker.Types.NetworkConfig
+import Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSummary
+import Amazonka.SageMaker.Types.NotebookInstanceLifecycleHook
+import Amazonka.SageMaker.Types.NotebookInstanceSummary
+import Amazonka.SageMaker.Types.NotificationConfiguration
+import Amazonka.SageMaker.Types.ObjectiveStatusCounters
+import Amazonka.SageMaker.Types.OfflineStoreConfig
+import Amazonka.SageMaker.Types.OfflineStoreStatus
+import Amazonka.SageMaker.Types.OidcConfig
+import Amazonka.SageMaker.Types.OidcConfigForResponse
+import Amazonka.SageMaker.Types.OidcMemberDefinition
+import Amazonka.SageMaker.Types.OnlineStoreConfig
+import Amazonka.SageMaker.Types.OnlineStoreSecurityConfig
+import Amazonka.SageMaker.Types.OutputConfig
+import Amazonka.SageMaker.Types.OutputDataConfig
+import Amazonka.SageMaker.Types.OutputParameter
+import Amazonka.SageMaker.Types.ParallelismConfiguration
+import Amazonka.SageMaker.Types.Parameter
+import Amazonka.SageMaker.Types.ParameterRange
+import Amazonka.SageMaker.Types.ParameterRanges
+import Amazonka.SageMaker.Types.Parent
+import Amazonka.SageMaker.Types.ParentHyperParameterTuningJob
+import Amazonka.SageMaker.Types.PendingDeploymentSummary
+import Amazonka.SageMaker.Types.PendingProductionVariantSummary
+import Amazonka.SageMaker.Types.Phase
+import Amazonka.SageMaker.Types.Pipeline
+import Amazonka.SageMaker.Types.PipelineDefinitionS3Location
+import Amazonka.SageMaker.Types.PipelineExecution
+import Amazonka.SageMaker.Types.PipelineExecutionStep
+import Amazonka.SageMaker.Types.PipelineExecutionStepMetadata
+import Amazonka.SageMaker.Types.PipelineExecutionSummary
+import Amazonka.SageMaker.Types.PipelineExperimentConfig
+import Amazonka.SageMaker.Types.PipelineSummary
+import Amazonka.SageMaker.Types.ProcessingClusterConfig
+import Amazonka.SageMaker.Types.ProcessingFeatureStoreOutput
+import Amazonka.SageMaker.Types.ProcessingInput
+import Amazonka.SageMaker.Types.ProcessingJob
+import Amazonka.SageMaker.Types.ProcessingJobStepMetadata
+import Amazonka.SageMaker.Types.ProcessingJobSummary
+import Amazonka.SageMaker.Types.ProcessingOutput
+import Amazonka.SageMaker.Types.ProcessingOutputConfig
+import Amazonka.SageMaker.Types.ProcessingResources
+import Amazonka.SageMaker.Types.ProcessingS3Input
+import Amazonka.SageMaker.Types.ProcessingS3Output
+import Amazonka.SageMaker.Types.ProcessingStoppingCondition
+import Amazonka.SageMaker.Types.ProductionVariant
+import Amazonka.SageMaker.Types.ProductionVariantCoreDumpConfig
+import Amazonka.SageMaker.Types.ProductionVariantServerlessConfig
+import Amazonka.SageMaker.Types.ProductionVariantStatus
+import Amazonka.SageMaker.Types.ProductionVariantSummary
+import Amazonka.SageMaker.Types.ProfilerConfig
+import Amazonka.SageMaker.Types.ProfilerConfigForUpdate
+import Amazonka.SageMaker.Types.ProfilerRuleConfiguration
+import Amazonka.SageMaker.Types.ProfilerRuleEvaluationStatus
+import Amazonka.SageMaker.Types.Project
+import Amazonka.SageMaker.Types.ProjectSummary
+import Amazonka.SageMaker.Types.PropertyNameQuery
+import Amazonka.SageMaker.Types.PropertyNameSuggestion
+import Amazonka.SageMaker.Types.ProvisioningParameter
+import Amazonka.SageMaker.Types.PublicWorkforceTaskPrice
+import Amazonka.SageMaker.Types.QualityCheckStepMetadata
+import Amazonka.SageMaker.Types.QueryFilters
+import Amazonka.SageMaker.Types.RSessionAppSettings
+import Amazonka.SageMaker.Types.RStudioServerProAppSettings
+import Amazonka.SageMaker.Types.RStudioServerProDomainSettings
+import Amazonka.SageMaker.Types.RStudioServerProDomainSettingsForUpdate
+import Amazonka.SageMaker.Types.RealTimeInferenceConfig
+import Amazonka.SageMaker.Types.RecommendationJobCompiledOutputConfig
+import Amazonka.SageMaker.Types.RecommendationJobContainerConfig
+import Amazonka.SageMaker.Types.RecommendationJobInferenceBenchmark
+import Amazonka.SageMaker.Types.RecommendationJobInputConfig
+import Amazonka.SageMaker.Types.RecommendationJobOutputConfig
+import Amazonka.SageMaker.Types.RecommendationJobPayloadConfig
+import Amazonka.SageMaker.Types.RecommendationJobResourceLimit
+import Amazonka.SageMaker.Types.RecommendationJobStoppingConditions
+import Amazonka.SageMaker.Types.RecommendationJobVpcConfig
+import Amazonka.SageMaker.Types.RecommendationMetrics
+import Amazonka.SageMaker.Types.RedshiftDatasetDefinition
+import Amazonka.SageMaker.Types.RegisterModelStepMetadata
+import Amazonka.SageMaker.Types.RenderableTask
+import Amazonka.SageMaker.Types.RenderingError
+import Amazonka.SageMaker.Types.RepositoryAuthConfig
+import Amazonka.SageMaker.Types.ResolvedAttributes
+import Amazonka.SageMaker.Types.ResourceConfig
+import Amazonka.SageMaker.Types.ResourceConfigForUpdate
+import Amazonka.SageMaker.Types.ResourceLimits
+import Amazonka.SageMaker.Types.ResourceSpec
+import Amazonka.SageMaker.Types.RetentionPolicy
+import Amazonka.SageMaker.Types.RetryStrategy
+import Amazonka.SageMaker.Types.S3DataSource
+import Amazonka.SageMaker.Types.S3StorageConfig
+import Amazonka.SageMaker.Types.ScheduleConfig
+import Amazonka.SageMaker.Types.SearchExpression
+import Amazonka.SageMaker.Types.SearchRecord
+import Amazonka.SageMaker.Types.SecondaryStatusTransition
+import Amazonka.SageMaker.Types.ServiceCatalogProvisionedProductDetails
+import Amazonka.SageMaker.Types.ServiceCatalogProvisioningDetails
+import Amazonka.SageMaker.Types.ServiceCatalogProvisioningUpdateDetails
+import Amazonka.SageMaker.Types.ShadowModeConfig
+import Amazonka.SageMaker.Types.ShadowModelVariantConfig
+import Amazonka.SageMaker.Types.SharingSettings
+import Amazonka.SageMaker.Types.ShuffleConfig
+import Amazonka.SageMaker.Types.SourceAlgorithm
+import Amazonka.SageMaker.Types.SourceAlgorithmSpecification
+import Amazonka.SageMaker.Types.SourceIpConfig
+import Amazonka.SageMaker.Types.SpaceDetails
+import Amazonka.SageMaker.Types.SpaceSettings
+import Amazonka.SageMaker.Types.StoppingCondition
+import Amazonka.SageMaker.Types.StudioLifecycleConfigDetails
+import Amazonka.SageMaker.Types.SubscribedWorkteam
+import Amazonka.SageMaker.Types.SuggestionQuery
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TargetPlatform
+import Amazonka.SageMaker.Types.TensorBoardAppSettings
+import Amazonka.SageMaker.Types.TensorBoardOutputConfig
+import Amazonka.SageMaker.Types.TimeSeriesForecastingSettings
+import Amazonka.SageMaker.Types.TrafficPattern
+import Amazonka.SageMaker.Types.TrafficRoutingConfig
+import Amazonka.SageMaker.Types.TrainingJob
+import Amazonka.SageMaker.Types.TrainingJobDefinition
+import Amazonka.SageMaker.Types.TrainingJobStatusCounters
+import Amazonka.SageMaker.Types.TrainingJobStepMetadata
+import Amazonka.SageMaker.Types.TrainingJobSummary
+import Amazonka.SageMaker.Types.TrainingSpecification
+import Amazonka.SageMaker.Types.TransformDataSource
+import Amazonka.SageMaker.Types.TransformInput
+import Amazonka.SageMaker.Types.TransformJob
+import Amazonka.SageMaker.Types.TransformJobDefinition
+import Amazonka.SageMaker.Types.TransformJobStepMetadata
+import Amazonka.SageMaker.Types.TransformJobSummary
+import Amazonka.SageMaker.Types.TransformOutput
+import Amazonka.SageMaker.Types.TransformResources
+import Amazonka.SageMaker.Types.TransformS3DataSource
+import Amazonka.SageMaker.Types.Trial
+import Amazonka.SageMaker.Types.TrialComponent
+import Amazonka.SageMaker.Types.TrialComponentArtifact
+import Amazonka.SageMaker.Types.TrialComponentMetricSummary
+import Amazonka.SageMaker.Types.TrialComponentParameterValue
+import Amazonka.SageMaker.Types.TrialComponentSimpleSummary
+import Amazonka.SageMaker.Types.TrialComponentSource
+import Amazonka.SageMaker.Types.TrialComponentSourceDetail
+import Amazonka.SageMaker.Types.TrialComponentStatus
+import Amazonka.SageMaker.Types.TrialComponentSummary
+import Amazonka.SageMaker.Types.TrialSource
+import Amazonka.SageMaker.Types.TrialSummary
+import Amazonka.SageMaker.Types.TuningJobCompletionCriteria
+import Amazonka.SageMaker.Types.TuningJobStepMetaData
+import Amazonka.SageMaker.Types.USD
+import Amazonka.SageMaker.Types.UiConfig
+import Amazonka.SageMaker.Types.UiTemplate
+import Amazonka.SageMaker.Types.UiTemplateInfo
+import Amazonka.SageMaker.Types.UserContext
+import Amazonka.SageMaker.Types.UserProfileDetails
+import Amazonka.SageMaker.Types.UserSettings
+import Amazonka.SageMaker.Types.VariantProperty
+import Amazonka.SageMaker.Types.Vertex
+import Amazonka.SageMaker.Types.VpcConfig
+import Amazonka.SageMaker.Types.WarmPoolStatus
+import Amazonka.SageMaker.Types.Workforce
+import Amazonka.SageMaker.Types.WorkforceVpcConfigRequest
+import Amazonka.SageMaker.Types.WorkforceVpcConfigResponse
+import Amazonka.SageMaker.Types.Workteam
+import Amazonka.SageMaker.UpdateAction
+import Amazonka.SageMaker.UpdateAppImageConfig
+import Amazonka.SageMaker.UpdateArtifact
+import Amazonka.SageMaker.UpdateCodeRepository
+import Amazonka.SageMaker.UpdateContext
+import Amazonka.SageMaker.UpdateDeviceFleet
+import Amazonka.SageMaker.UpdateDevices
+import Amazonka.SageMaker.UpdateDomain
+import Amazonka.SageMaker.UpdateEndpoint
+import Amazonka.SageMaker.UpdateEndpointWeightsAndCapacities
+import Amazonka.SageMaker.UpdateExperiment
+import Amazonka.SageMaker.UpdateFeatureGroup
+import Amazonka.SageMaker.UpdateFeatureMetadata
+import Amazonka.SageMaker.UpdateHub
+import Amazonka.SageMaker.UpdateImage
+import Amazonka.SageMaker.UpdateImageVersion
+import Amazonka.SageMaker.UpdateInferenceExperiment
+import Amazonka.SageMaker.UpdateModelCard
+import Amazonka.SageMaker.UpdateModelPackage
+import Amazonka.SageMaker.UpdateMonitoringAlert
+import Amazonka.SageMaker.UpdateMonitoringSchedule
+import Amazonka.SageMaker.UpdateNotebookInstance
+import Amazonka.SageMaker.UpdateNotebookInstanceLifecycleConfig
+import Amazonka.SageMaker.UpdatePipeline
+import Amazonka.SageMaker.UpdatePipelineExecution
+import Amazonka.SageMaker.UpdateProject
+import Amazonka.SageMaker.UpdateSpace
+import Amazonka.SageMaker.UpdateTrainingJob
+import Amazonka.SageMaker.UpdateTrial
+import Amazonka.SageMaker.UpdateTrialComponent
+import Amazonka.SageMaker.UpdateUserProfile
+import Amazonka.SageMaker.UpdateWorkforce
+import Amazonka.SageMaker.UpdateWorkteam
diff --git a/gen/Amazonka/SageMaker/ListActions.hs b/gen/Amazonka/SageMaker/ListActions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListActions.hs
@@ -0,0 +1,309 @@
+{-# 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.ListActions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the actions in your account and their properties.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListActions
+  ( -- * Creating a Request
+    ListActions (..),
+    newListActions,
+
+    -- * Request Lenses
+    listActions_actionType,
+    listActions_createdAfter,
+    listActions_createdBefore,
+    listActions_maxResults,
+    listActions_nextToken,
+    listActions_sortBy,
+    listActions_sortOrder,
+    listActions_sourceUri,
+
+    -- * Destructuring the Response
+    ListActionsResponse (..),
+    newListActionsResponse,
+
+    -- * Response Lenses
+    listActionsResponse_actionSummaries,
+    listActionsResponse_nextToken,
+    listActionsResponse_httpStatus,
+  )
+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:/ 'newListActions' smart constructor.
+data ListActions = ListActions'
+  { -- | A filter that returns only actions of the specified type.
+    actionType :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only actions created on or after the specified
+    -- time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only actions created on or before the specified
+    -- time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of actions to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListActions@ didn\'t return the full set of
+    -- actions, the call returns a token for getting the next set of actions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortActionsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only actions with the specified source URI.
+    sourceUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListActions' 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:
+--
+-- 'actionType', 'listActions_actionType' - A filter that returns only actions of the specified type.
+--
+-- 'createdAfter', 'listActions_createdAfter' - A filter that returns only actions created on or after the specified
+-- time.
+--
+-- 'createdBefore', 'listActions_createdBefore' - A filter that returns only actions created on or before the specified
+-- time.
+--
+-- 'maxResults', 'listActions_maxResults' - The maximum number of actions to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listActions_nextToken' - If the previous call to @ListActions@ didn\'t return the full set of
+-- actions, the call returns a token for getting the next set of actions.
+--
+-- 'sortBy', 'listActions_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listActions_sortOrder' - The sort order. The default value is @Descending@.
+--
+-- 'sourceUri', 'listActions_sourceUri' - A filter that returns only actions with the specified source URI.
+newListActions ::
+  ListActions
+newListActions =
+  ListActions'
+    { actionType = Prelude.Nothing,
+      createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      sourceUri = Prelude.Nothing
+    }
+
+-- | A filter that returns only actions of the specified type.
+listActions_actionType :: Lens.Lens' ListActions (Prelude.Maybe Prelude.Text)
+listActions_actionType = Lens.lens (\ListActions' {actionType} -> actionType) (\s@ListActions' {} a -> s {actionType = a} :: ListActions)
+
+-- | A filter that returns only actions created on or after the specified
+-- time.
+listActions_createdAfter :: Lens.Lens' ListActions (Prelude.Maybe Prelude.UTCTime)
+listActions_createdAfter = Lens.lens (\ListActions' {createdAfter} -> createdAfter) (\s@ListActions' {} a -> s {createdAfter = a} :: ListActions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only actions created on or before the specified
+-- time.
+listActions_createdBefore :: Lens.Lens' ListActions (Prelude.Maybe Prelude.UTCTime)
+listActions_createdBefore = Lens.lens (\ListActions' {createdBefore} -> createdBefore) (\s@ListActions' {} a -> s {createdBefore = a} :: ListActions) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of actions to return in the response. The default
+-- value is 10.
+listActions_maxResults :: Lens.Lens' ListActions (Prelude.Maybe Prelude.Natural)
+listActions_maxResults = Lens.lens (\ListActions' {maxResults} -> maxResults) (\s@ListActions' {} a -> s {maxResults = a} :: ListActions)
+
+-- | If the previous call to @ListActions@ didn\'t return the full set of
+-- actions, the call returns a token for getting the next set of actions.
+listActions_nextToken :: Lens.Lens' ListActions (Prelude.Maybe Prelude.Text)
+listActions_nextToken = Lens.lens (\ListActions' {nextToken} -> nextToken) (\s@ListActions' {} a -> s {nextToken = a} :: ListActions)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listActions_sortBy :: Lens.Lens' ListActions (Prelude.Maybe SortActionsBy)
+listActions_sortBy = Lens.lens (\ListActions' {sortBy} -> sortBy) (\s@ListActions' {} a -> s {sortBy = a} :: ListActions)
+
+-- | The sort order. The default value is @Descending@.
+listActions_sortOrder :: Lens.Lens' ListActions (Prelude.Maybe SortOrder)
+listActions_sortOrder = Lens.lens (\ListActions' {sortOrder} -> sortOrder) (\s@ListActions' {} a -> s {sortOrder = a} :: ListActions)
+
+-- | A filter that returns only actions with the specified source URI.
+listActions_sourceUri :: Lens.Lens' ListActions (Prelude.Maybe Prelude.Text)
+listActions_sourceUri = Lens.lens (\ListActions' {sourceUri} -> sourceUri) (\s@ListActions' {} a -> s {sourceUri = a} :: ListActions)
+
+instance Core.AWSPager ListActions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listActionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listActionsResponse_actionSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listActions_nextToken
+          Lens..~ rs
+          Lens.^? listActionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListActions where
+  type AWSResponse ListActions = ListActionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListActionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ActionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListActions where
+  hashWithSalt _salt ListActions' {..} =
+    _salt
+      `Prelude.hashWithSalt` actionType
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` sourceUri
+
+instance Prelude.NFData ListActions where
+  rnf ListActions' {..} =
+    Prelude.rnf actionType
+      `Prelude.seq` Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf sourceUri
+
+instance Data.ToHeaders ListActions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListActions" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListActions where
+  toJSON ListActions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActionType" Data..=) Prelude.<$> actionType,
+            ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SourceUri" Data..=) Prelude.<$> sourceUri
+          ]
+      )
+
+instance Data.ToPath ListActions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListActions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListActionsResponse' smart constructor.
+data ListActionsResponse = ListActionsResponse'
+  { -- | A list of actions and their properties.
+    actionSummaries :: Prelude.Maybe [ActionSummary],
+    -- | A token for getting the next set of actions, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListActionsResponse' 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:
+--
+-- 'actionSummaries', 'listActionsResponse_actionSummaries' - A list of actions and their properties.
+--
+-- 'nextToken', 'listActionsResponse_nextToken' - A token for getting the next set of actions, if there are any.
+--
+-- 'httpStatus', 'listActionsResponse_httpStatus' - The response's http status code.
+newListActionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListActionsResponse
+newListActionsResponse pHttpStatus_ =
+  ListActionsResponse'
+    { actionSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of actions and their properties.
+listActionsResponse_actionSummaries :: Lens.Lens' ListActionsResponse (Prelude.Maybe [ActionSummary])
+listActionsResponse_actionSummaries = Lens.lens (\ListActionsResponse' {actionSummaries} -> actionSummaries) (\s@ListActionsResponse' {} a -> s {actionSummaries = a} :: ListActionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of actions, if there are any.
+listActionsResponse_nextToken :: Lens.Lens' ListActionsResponse (Prelude.Maybe Prelude.Text)
+listActionsResponse_nextToken = Lens.lens (\ListActionsResponse' {nextToken} -> nextToken) (\s@ListActionsResponse' {} a -> s {nextToken = a} :: ListActionsResponse)
+
+-- | The response's http status code.
+listActionsResponse_httpStatus :: Lens.Lens' ListActionsResponse Prelude.Int
+listActionsResponse_httpStatus = Lens.lens (\ListActionsResponse' {httpStatus} -> httpStatus) (\s@ListActionsResponse' {} a -> s {httpStatus = a} :: ListActionsResponse)
+
+instance Prelude.NFData ListActionsResponse where
+  rnf ListActionsResponse' {..} =
+    Prelude.rnf actionSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListAlgorithms.hs b/gen/Amazonka/SageMaker/ListAlgorithms.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListAlgorithms.hs
@@ -0,0 +1,312 @@
+{-# 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.ListAlgorithms
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the machine learning algorithms that have been created.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListAlgorithms
+  ( -- * Creating a Request
+    ListAlgorithms (..),
+    newListAlgorithms,
+
+    -- * Request Lenses
+    listAlgorithms_creationTimeAfter,
+    listAlgorithms_creationTimeBefore,
+    listAlgorithms_maxResults,
+    listAlgorithms_nameContains,
+    listAlgorithms_nextToken,
+    listAlgorithms_sortBy,
+    listAlgorithms_sortOrder,
+
+    -- * Destructuring the Response
+    ListAlgorithmsResponse (..),
+    newListAlgorithmsResponse,
+
+    -- * Response Lenses
+    listAlgorithmsResponse_nextToken,
+    listAlgorithmsResponse_httpStatus,
+    listAlgorithmsResponse_algorithmSummaryList,
+  )
+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:/ 'newListAlgorithms' smart constructor.
+data ListAlgorithms = ListAlgorithms'
+  { -- | A filter that returns only algorithms created after the specified time
+    -- (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only algorithms created before the specified time
+    -- (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of algorithms to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the algorithm name. This filter returns only algorithms
+    -- whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListAlgorithms@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of
+    -- algorithms, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is
+    -- @CreationTime@.
+    sortBy :: Prelude.Maybe AlgorithmSortBy,
+    -- | The sort order for the results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAlgorithms' 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:
+--
+-- 'creationTimeAfter', 'listAlgorithms_creationTimeAfter' - A filter that returns only algorithms created after the specified time
+-- (timestamp).
+--
+-- 'creationTimeBefore', 'listAlgorithms_creationTimeBefore' - A filter that returns only algorithms created before the specified time
+-- (timestamp).
+--
+-- 'maxResults', 'listAlgorithms_maxResults' - The maximum number of algorithms to return in the response.
+--
+-- 'nameContains', 'listAlgorithms_nameContains' - A string in the algorithm name. This filter returns only algorithms
+-- whose name contains the specified string.
+--
+-- 'nextToken', 'listAlgorithms_nextToken' - If the response to a previous @ListAlgorithms@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- algorithms, use the token in the next request.
+--
+-- 'sortBy', 'listAlgorithms_sortBy' - The parameter by which to sort the results. The default is
+-- @CreationTime@.
+--
+-- 'sortOrder', 'listAlgorithms_sortOrder' - The sort order for the results. The default is @Ascending@.
+newListAlgorithms ::
+  ListAlgorithms
+newListAlgorithms =
+  ListAlgorithms'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only algorithms created after the specified time
+-- (timestamp).
+listAlgorithms_creationTimeAfter :: Lens.Lens' ListAlgorithms (Prelude.Maybe Prelude.UTCTime)
+listAlgorithms_creationTimeAfter = Lens.lens (\ListAlgorithms' {creationTimeAfter} -> creationTimeAfter) (\s@ListAlgorithms' {} a -> s {creationTimeAfter = a} :: ListAlgorithms) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only algorithms created before the specified time
+-- (timestamp).
+listAlgorithms_creationTimeBefore :: Lens.Lens' ListAlgorithms (Prelude.Maybe Prelude.UTCTime)
+listAlgorithms_creationTimeBefore = Lens.lens (\ListAlgorithms' {creationTimeBefore} -> creationTimeBefore) (\s@ListAlgorithms' {} a -> s {creationTimeBefore = a} :: ListAlgorithms) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of algorithms to return in the response.
+listAlgorithms_maxResults :: Lens.Lens' ListAlgorithms (Prelude.Maybe Prelude.Natural)
+listAlgorithms_maxResults = Lens.lens (\ListAlgorithms' {maxResults} -> maxResults) (\s@ListAlgorithms' {} a -> s {maxResults = a} :: ListAlgorithms)
+
+-- | A string in the algorithm name. This filter returns only algorithms
+-- whose name contains the specified string.
+listAlgorithms_nameContains :: Lens.Lens' ListAlgorithms (Prelude.Maybe Prelude.Text)
+listAlgorithms_nameContains = Lens.lens (\ListAlgorithms' {nameContains} -> nameContains) (\s@ListAlgorithms' {} a -> s {nameContains = a} :: ListAlgorithms)
+
+-- | If the response to a previous @ListAlgorithms@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- algorithms, use the token in the next request.
+listAlgorithms_nextToken :: Lens.Lens' ListAlgorithms (Prelude.Maybe Prelude.Text)
+listAlgorithms_nextToken = Lens.lens (\ListAlgorithms' {nextToken} -> nextToken) (\s@ListAlgorithms' {} a -> s {nextToken = a} :: ListAlgorithms)
+
+-- | The parameter by which to sort the results. The default is
+-- @CreationTime@.
+listAlgorithms_sortBy :: Lens.Lens' ListAlgorithms (Prelude.Maybe AlgorithmSortBy)
+listAlgorithms_sortBy = Lens.lens (\ListAlgorithms' {sortBy} -> sortBy) (\s@ListAlgorithms' {} a -> s {sortBy = a} :: ListAlgorithms)
+
+-- | The sort order for the results. The default is @Ascending@.
+listAlgorithms_sortOrder :: Lens.Lens' ListAlgorithms (Prelude.Maybe SortOrder)
+listAlgorithms_sortOrder = Lens.lens (\ListAlgorithms' {sortOrder} -> sortOrder) (\s@ListAlgorithms' {} a -> s {sortOrder = a} :: ListAlgorithms)
+
+instance Core.AWSPager ListAlgorithms where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAlgorithmsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listAlgorithmsResponse_algorithmSummaryList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAlgorithms_nextToken
+          Lens..~ rs
+          Lens.^? listAlgorithmsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAlgorithms where
+  type
+    AWSResponse ListAlgorithms =
+      ListAlgorithmsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAlgorithmsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "AlgorithmSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListAlgorithms where
+  hashWithSalt _salt ListAlgorithms' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListAlgorithms where
+  rnf ListAlgorithms' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListAlgorithms where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListAlgorithms" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAlgorithms where
+  toJSON ListAlgorithms' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListAlgorithms where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListAlgorithms where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAlgorithmsResponse' smart constructor.
+data ListAlgorithmsResponse = ListAlgorithmsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of algorithms, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | >An array of @AlgorithmSummary@ objects, each of which lists an
+    -- algorithm.
+    algorithmSummaryList :: [AlgorithmSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAlgorithmsResponse' 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:
+--
+-- 'nextToken', 'listAlgorithmsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of algorithms, use it in the subsequent request.
+--
+-- 'httpStatus', 'listAlgorithmsResponse_httpStatus' - The response's http status code.
+--
+-- 'algorithmSummaryList', 'listAlgorithmsResponse_algorithmSummaryList' - >An array of @AlgorithmSummary@ objects, each of which lists an
+-- algorithm.
+newListAlgorithmsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAlgorithmsResponse
+newListAlgorithmsResponse pHttpStatus_ =
+  ListAlgorithmsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      algorithmSummaryList = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of algorithms, use it in the subsequent request.
+listAlgorithmsResponse_nextToken :: Lens.Lens' ListAlgorithmsResponse (Prelude.Maybe Prelude.Text)
+listAlgorithmsResponse_nextToken = Lens.lens (\ListAlgorithmsResponse' {nextToken} -> nextToken) (\s@ListAlgorithmsResponse' {} a -> s {nextToken = a} :: ListAlgorithmsResponse)
+
+-- | The response's http status code.
+listAlgorithmsResponse_httpStatus :: Lens.Lens' ListAlgorithmsResponse Prelude.Int
+listAlgorithmsResponse_httpStatus = Lens.lens (\ListAlgorithmsResponse' {httpStatus} -> httpStatus) (\s@ListAlgorithmsResponse' {} a -> s {httpStatus = a} :: ListAlgorithmsResponse)
+
+-- | >An array of @AlgorithmSummary@ objects, each of which lists an
+-- algorithm.
+listAlgorithmsResponse_algorithmSummaryList :: Lens.Lens' ListAlgorithmsResponse [AlgorithmSummary]
+listAlgorithmsResponse_algorithmSummaryList = Lens.lens (\ListAlgorithmsResponse' {algorithmSummaryList} -> algorithmSummaryList) (\s@ListAlgorithmsResponse' {} a -> s {algorithmSummaryList = a} :: ListAlgorithmsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListAlgorithmsResponse where
+  rnf ListAlgorithmsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf algorithmSummaryList
diff --git a/gen/Amazonka/SageMaker/ListAliases.hs b/gen/Amazonka/SageMaker/ListAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListAliases.hs
@@ -0,0 +1,268 @@
+{-# 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.ListAliases
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the aliases of a specified image or image version.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListAliases
+  ( -- * Creating a Request
+    ListAliases (..),
+    newListAliases,
+
+    -- * Request Lenses
+    listAliases_alias,
+    listAliases_maxResults,
+    listAliases_nextToken,
+    listAliases_version,
+    listAliases_imageName,
+
+    -- * Destructuring the Response
+    ListAliasesResponse (..),
+    newListAliasesResponse,
+
+    -- * Response Lenses
+    listAliasesResponse_nextToken,
+    listAliasesResponse_sageMakerImageVersionAliases,
+    listAliasesResponse_httpStatus,
+  )
+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:/ 'newListAliases' smart constructor.
+data ListAliases = ListAliases'
+  { -- | The alias of the image version.
+    alias :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of aliases to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListAliases@ didn\'t return the full set of
+    -- aliases, the call returns a token for retrieving the next set of
+    -- aliases.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The version of the image. If image version is not specified, the aliases
+    -- of all versions of the image are listed.
+    version :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the image.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAliases' 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:
+--
+-- 'alias', 'listAliases_alias' - The alias of the image version.
+--
+-- 'maxResults', 'listAliases_maxResults' - The maximum number of aliases to return.
+--
+-- 'nextToken', 'listAliases_nextToken' - If the previous call to @ListAliases@ didn\'t return the full set of
+-- aliases, the call returns a token for retrieving the next set of
+-- aliases.
+--
+-- 'version', 'listAliases_version' - The version of the image. If image version is not specified, the aliases
+-- of all versions of the image are listed.
+--
+-- 'imageName', 'listAliases_imageName' - The name of the image.
+newListAliases ::
+  -- | 'imageName'
+  Prelude.Text ->
+  ListAliases
+newListAliases pImageName_ =
+  ListAliases'
+    { alias = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      version = Prelude.Nothing,
+      imageName = pImageName_
+    }
+
+-- | The alias of the image version.
+listAliases_alias :: Lens.Lens' ListAliases (Prelude.Maybe Prelude.Text)
+listAliases_alias = Lens.lens (\ListAliases' {alias} -> alias) (\s@ListAliases' {} a -> s {alias = a} :: ListAliases)
+
+-- | The maximum number of aliases to return.
+listAliases_maxResults :: Lens.Lens' ListAliases (Prelude.Maybe Prelude.Natural)
+listAliases_maxResults = Lens.lens (\ListAliases' {maxResults} -> maxResults) (\s@ListAliases' {} a -> s {maxResults = a} :: ListAliases)
+
+-- | If the previous call to @ListAliases@ didn\'t return the full set of
+-- aliases, the call returns a token for retrieving the next set of
+-- aliases.
+listAliases_nextToken :: Lens.Lens' ListAliases (Prelude.Maybe Prelude.Text)
+listAliases_nextToken = Lens.lens (\ListAliases' {nextToken} -> nextToken) (\s@ListAliases' {} a -> s {nextToken = a} :: ListAliases)
+
+-- | The version of the image. If image version is not specified, the aliases
+-- of all versions of the image are listed.
+listAliases_version :: Lens.Lens' ListAliases (Prelude.Maybe Prelude.Natural)
+listAliases_version = Lens.lens (\ListAliases' {version} -> version) (\s@ListAliases' {} a -> s {version = a} :: ListAliases)
+
+-- | The name of the image.
+listAliases_imageName :: Lens.Lens' ListAliases Prelude.Text
+listAliases_imageName = Lens.lens (\ListAliases' {imageName} -> imageName) (\s@ListAliases' {} a -> s {imageName = a} :: ListAliases)
+
+instance Core.AWSPager ListAliases where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAliasesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAliasesResponse_sageMakerImageVersionAliases
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAliases_nextToken
+          Lens..~ rs
+          Lens.^? listAliasesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAliases where
+  type AWSResponse ListAliases = ListAliasesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAliasesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "SageMakerImageVersionAliases"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAliases where
+  hashWithSalt _salt ListAliases' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` version
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData ListAliases where
+  rnf ListAliases' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf version
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders ListAliases where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListAliases" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAliases where
+  toJSON ListAliases' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Alias" Data..=) Prelude.<$> alias,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Version" Data..=) Prelude.<$> version,
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath ListAliases where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListAliases where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAliasesResponse' smart constructor.
+data ListAliasesResponse = ListAliasesResponse'
+  { -- | A token for getting the next set of aliases, if more aliases exist.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of SageMaker image version aliases.
+    sageMakerImageVersionAliases :: Prelude.Maybe [Prelude.Text],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAliasesResponse' 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:
+--
+-- 'nextToken', 'listAliasesResponse_nextToken' - A token for getting the next set of aliases, if more aliases exist.
+--
+-- 'sageMakerImageVersionAliases', 'listAliasesResponse_sageMakerImageVersionAliases' - A list of SageMaker image version aliases.
+--
+-- 'httpStatus', 'listAliasesResponse_httpStatus' - The response's http status code.
+newListAliasesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAliasesResponse
+newListAliasesResponse pHttpStatus_ =
+  ListAliasesResponse'
+    { nextToken = Prelude.Nothing,
+      sageMakerImageVersionAliases = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A token for getting the next set of aliases, if more aliases exist.
+listAliasesResponse_nextToken :: Lens.Lens' ListAliasesResponse (Prelude.Maybe Prelude.Text)
+listAliasesResponse_nextToken = Lens.lens (\ListAliasesResponse' {nextToken} -> nextToken) (\s@ListAliasesResponse' {} a -> s {nextToken = a} :: ListAliasesResponse)
+
+-- | A list of SageMaker image version aliases.
+listAliasesResponse_sageMakerImageVersionAliases :: Lens.Lens' ListAliasesResponse (Prelude.Maybe [Prelude.Text])
+listAliasesResponse_sageMakerImageVersionAliases = Lens.lens (\ListAliasesResponse' {sageMakerImageVersionAliases} -> sageMakerImageVersionAliases) (\s@ListAliasesResponse' {} a -> s {sageMakerImageVersionAliases = a} :: ListAliasesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listAliasesResponse_httpStatus :: Lens.Lens' ListAliasesResponse Prelude.Int
+listAliasesResponse_httpStatus = Lens.lens (\ListAliasesResponse' {httpStatus} -> httpStatus) (\s@ListAliasesResponse' {} a -> s {httpStatus = a} :: ListAliasesResponse)
+
+instance Prelude.NFData ListAliasesResponse where
+  rnf ListAliasesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sageMakerImageVersionAliases
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListAppImageConfigs.hs b/gen/Amazonka/SageMaker/ListAppImageConfigs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListAppImageConfigs.hs
@@ -0,0 +1,345 @@
+{-# 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.ListAppImageConfigs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the AppImageConfigs in your account and their properties. The list
+-- can be filtered by creation time or modified time, and whether the
+-- AppImageConfig name contains a specified string.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListAppImageConfigs
+  ( -- * Creating a Request
+    ListAppImageConfigs (..),
+    newListAppImageConfigs,
+
+    -- * Request Lenses
+    listAppImageConfigs_creationTimeAfter,
+    listAppImageConfigs_creationTimeBefore,
+    listAppImageConfigs_maxResults,
+    listAppImageConfigs_modifiedTimeAfter,
+    listAppImageConfigs_modifiedTimeBefore,
+    listAppImageConfigs_nameContains,
+    listAppImageConfigs_nextToken,
+    listAppImageConfigs_sortBy,
+    listAppImageConfigs_sortOrder,
+
+    -- * Destructuring the Response
+    ListAppImageConfigsResponse (..),
+    newListAppImageConfigsResponse,
+
+    -- * Response Lenses
+    listAppImageConfigsResponse_appImageConfigs,
+    listAppImageConfigsResponse_nextToken,
+    listAppImageConfigsResponse_httpStatus,
+  )
+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:/ 'newListAppImageConfigs' smart constructor.
+data ListAppImageConfigs = ListAppImageConfigs'
+  { -- | A filter that returns only AppImageConfigs created on or after the
+    -- specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only AppImageConfigs created on or before the
+    -- specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of AppImageConfigs to return in the response. The
+    -- default value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter that returns only AppImageConfigs modified on or after the
+    -- specified time.
+    modifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only AppImageConfigs modified on or before the
+    -- specified time.
+    modifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only AppImageConfigs whose name contains the
+    -- specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the previous call to @ListImages@ didn\'t return the full set of
+    -- AppImageConfigs, the call returns a token for getting the next set of
+    -- AppImageConfigs.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe AppImageConfigSortKey,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppImageConfigs' 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:
+--
+-- 'creationTimeAfter', 'listAppImageConfigs_creationTimeAfter' - A filter that returns only AppImageConfigs created on or after the
+-- specified time.
+--
+-- 'creationTimeBefore', 'listAppImageConfigs_creationTimeBefore' - A filter that returns only AppImageConfigs created on or before the
+-- specified time.
+--
+-- 'maxResults', 'listAppImageConfigs_maxResults' - The maximum number of AppImageConfigs to return in the response. The
+-- default value is 10.
+--
+-- 'modifiedTimeAfter', 'listAppImageConfigs_modifiedTimeAfter' - A filter that returns only AppImageConfigs modified on or after the
+-- specified time.
+--
+-- 'modifiedTimeBefore', 'listAppImageConfigs_modifiedTimeBefore' - A filter that returns only AppImageConfigs modified on or before the
+-- specified time.
+--
+-- 'nameContains', 'listAppImageConfigs_nameContains' - A filter that returns only AppImageConfigs whose name contains the
+-- specified string.
+--
+-- 'nextToken', 'listAppImageConfigs_nextToken' - If the previous call to @ListImages@ didn\'t return the full set of
+-- AppImageConfigs, the call returns a token for getting the next set of
+-- AppImageConfigs.
+--
+-- 'sortBy', 'listAppImageConfigs_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listAppImageConfigs_sortOrder' - The sort order. The default value is @Descending@.
+newListAppImageConfigs ::
+  ListAppImageConfigs
+newListAppImageConfigs =
+  ListAppImageConfigs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modifiedTimeAfter = Prelude.Nothing,
+      modifiedTimeBefore = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only AppImageConfigs created on or after the
+-- specified time.
+listAppImageConfigs_creationTimeAfter :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.UTCTime)
+listAppImageConfigs_creationTimeAfter = Lens.lens (\ListAppImageConfigs' {creationTimeAfter} -> creationTimeAfter) (\s@ListAppImageConfigs' {} a -> s {creationTimeAfter = a} :: ListAppImageConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only AppImageConfigs created on or before the
+-- specified time.
+listAppImageConfigs_creationTimeBefore :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.UTCTime)
+listAppImageConfigs_creationTimeBefore = Lens.lens (\ListAppImageConfigs' {creationTimeBefore} -> creationTimeBefore) (\s@ListAppImageConfigs' {} a -> s {creationTimeBefore = a} :: ListAppImageConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of AppImageConfigs to return in the response. The
+-- default value is 10.
+listAppImageConfigs_maxResults :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.Natural)
+listAppImageConfigs_maxResults = Lens.lens (\ListAppImageConfigs' {maxResults} -> maxResults) (\s@ListAppImageConfigs' {} a -> s {maxResults = a} :: ListAppImageConfigs)
+
+-- | A filter that returns only AppImageConfigs modified on or after the
+-- specified time.
+listAppImageConfigs_modifiedTimeAfter :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.UTCTime)
+listAppImageConfigs_modifiedTimeAfter = Lens.lens (\ListAppImageConfigs' {modifiedTimeAfter} -> modifiedTimeAfter) (\s@ListAppImageConfigs' {} a -> s {modifiedTimeAfter = a} :: ListAppImageConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only AppImageConfigs modified on or before the
+-- specified time.
+listAppImageConfigs_modifiedTimeBefore :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.UTCTime)
+listAppImageConfigs_modifiedTimeBefore = Lens.lens (\ListAppImageConfigs' {modifiedTimeBefore} -> modifiedTimeBefore) (\s@ListAppImageConfigs' {} a -> s {modifiedTimeBefore = a} :: ListAppImageConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only AppImageConfigs whose name contains the
+-- specified string.
+listAppImageConfigs_nameContains :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.Text)
+listAppImageConfigs_nameContains = Lens.lens (\ListAppImageConfigs' {nameContains} -> nameContains) (\s@ListAppImageConfigs' {} a -> s {nameContains = a} :: ListAppImageConfigs)
+
+-- | If the previous call to @ListImages@ didn\'t return the full set of
+-- AppImageConfigs, the call returns a token for getting the next set of
+-- AppImageConfigs.
+listAppImageConfigs_nextToken :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe Prelude.Text)
+listAppImageConfigs_nextToken = Lens.lens (\ListAppImageConfigs' {nextToken} -> nextToken) (\s@ListAppImageConfigs' {} a -> s {nextToken = a} :: ListAppImageConfigs)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listAppImageConfigs_sortBy :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe AppImageConfigSortKey)
+listAppImageConfigs_sortBy = Lens.lens (\ListAppImageConfigs' {sortBy} -> sortBy) (\s@ListAppImageConfigs' {} a -> s {sortBy = a} :: ListAppImageConfigs)
+
+-- | The sort order. The default value is @Descending@.
+listAppImageConfigs_sortOrder :: Lens.Lens' ListAppImageConfigs (Prelude.Maybe SortOrder)
+listAppImageConfigs_sortOrder = Lens.lens (\ListAppImageConfigs' {sortOrder} -> sortOrder) (\s@ListAppImageConfigs' {} a -> s {sortOrder = a} :: ListAppImageConfigs)
+
+instance Core.AWSPager ListAppImageConfigs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAppImageConfigsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAppImageConfigsResponse_appImageConfigs
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAppImageConfigs_nextToken
+          Lens..~ rs
+          Lens.^? listAppImageConfigsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAppImageConfigs where
+  type
+    AWSResponse ListAppImageConfigs =
+      ListAppImageConfigsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAppImageConfigsResponse'
+            Prelude.<$> ( x
+                            Data..?> "AppImageConfigs"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAppImageConfigs where
+  hashWithSalt _salt ListAppImageConfigs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modifiedTimeAfter
+      `Prelude.hashWithSalt` modifiedTimeBefore
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListAppImageConfigs where
+  rnf ListAppImageConfigs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modifiedTimeAfter
+      `Prelude.seq` Prelude.rnf modifiedTimeBefore
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListAppImageConfigs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListAppImageConfigs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAppImageConfigs where
+  toJSON ListAppImageConfigs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModifiedTimeAfter" Data..=)
+              Prelude.<$> modifiedTimeAfter,
+            ("ModifiedTimeBefore" Data..=)
+              Prelude.<$> modifiedTimeBefore,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListAppImageConfigs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListAppImageConfigs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAppImageConfigsResponse' smart constructor.
+data ListAppImageConfigsResponse = ListAppImageConfigsResponse'
+  { -- | A list of AppImageConfigs and their properties.
+    appImageConfigs :: Prelude.Maybe [AppImageConfigDetails],
+    -- | A token for getting the next set of AppImageConfigs, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppImageConfigsResponse' 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:
+--
+-- 'appImageConfigs', 'listAppImageConfigsResponse_appImageConfigs' - A list of AppImageConfigs and their properties.
+--
+-- 'nextToken', 'listAppImageConfigsResponse_nextToken' - A token for getting the next set of AppImageConfigs, if there are any.
+--
+-- 'httpStatus', 'listAppImageConfigsResponse_httpStatus' - The response's http status code.
+newListAppImageConfigsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAppImageConfigsResponse
+newListAppImageConfigsResponse pHttpStatus_ =
+  ListAppImageConfigsResponse'
+    { appImageConfigs =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of AppImageConfigs and their properties.
+listAppImageConfigsResponse_appImageConfigs :: Lens.Lens' ListAppImageConfigsResponse (Prelude.Maybe [AppImageConfigDetails])
+listAppImageConfigsResponse_appImageConfigs = Lens.lens (\ListAppImageConfigsResponse' {appImageConfigs} -> appImageConfigs) (\s@ListAppImageConfigsResponse' {} a -> s {appImageConfigs = a} :: ListAppImageConfigsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of AppImageConfigs, if there are any.
+listAppImageConfigsResponse_nextToken :: Lens.Lens' ListAppImageConfigsResponse (Prelude.Maybe Prelude.Text)
+listAppImageConfigsResponse_nextToken = Lens.lens (\ListAppImageConfigsResponse' {nextToken} -> nextToken) (\s@ListAppImageConfigsResponse' {} a -> s {nextToken = a} :: ListAppImageConfigsResponse)
+
+-- | The response's http status code.
+listAppImageConfigsResponse_httpStatus :: Lens.Lens' ListAppImageConfigsResponse Prelude.Int
+listAppImageConfigsResponse_httpStatus = Lens.lens (\ListAppImageConfigsResponse' {httpStatus} -> httpStatus) (\s@ListAppImageConfigsResponse' {} a -> s {httpStatus = a} :: ListAppImageConfigsResponse)
+
+instance Prelude.NFData ListAppImageConfigsResponse where
+  rnf ListAppImageConfigsResponse' {..} =
+    Prelude.rnf appImageConfigs
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListApps.hs b/gen/Amazonka/SageMaker/ListApps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListApps.hs
@@ -0,0 +1,295 @@
+{-# 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.ListApps
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists apps.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListApps
+  ( -- * Creating a Request
+    ListApps (..),
+    newListApps,
+
+    -- * Request Lenses
+    listApps_domainIdEquals,
+    listApps_maxResults,
+    listApps_nextToken,
+    listApps_sortBy,
+    listApps_sortOrder,
+    listApps_spaceNameEquals,
+    listApps_userProfileNameEquals,
+
+    -- * Destructuring the Response
+    ListAppsResponse (..),
+    newListAppsResponse,
+
+    -- * Response Lenses
+    listAppsResponse_apps,
+    listAppsResponse_nextToken,
+    listAppsResponse_httpStatus,
+  )
+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:/ 'newListApps' smart constructor.
+data ListApps = ListApps'
+  { -- | A parameter to search for the domain ID.
+    domainIdEquals :: Prelude.Maybe Prelude.Text,
+    -- | Returns a list up to a specified limit.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is CreationTime.
+    sortBy :: Prelude.Maybe AppSortKey,
+    -- | The sort order for the results. The default is Ascending.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A parameter to search by space name. If @UserProfileNameEquals@ is set,
+    -- then this value cannot be set.
+    spaceNameEquals :: Prelude.Maybe Prelude.Text,
+    -- | A parameter to search by user profile name. If @SpaceNameEquals@ is set,
+    -- then this value cannot be set.
+    userProfileNameEquals :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApps' 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:
+--
+-- 'domainIdEquals', 'listApps_domainIdEquals' - A parameter to search for the domain ID.
+--
+-- 'maxResults', 'listApps_maxResults' - Returns a list up to a specified limit.
+--
+-- 'nextToken', 'listApps_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'sortBy', 'listApps_sortBy' - The parameter by which to sort the results. The default is CreationTime.
+--
+-- 'sortOrder', 'listApps_sortOrder' - The sort order for the results. The default is Ascending.
+--
+-- 'spaceNameEquals', 'listApps_spaceNameEquals' - A parameter to search by space name. If @UserProfileNameEquals@ is set,
+-- then this value cannot be set.
+--
+-- 'userProfileNameEquals', 'listApps_userProfileNameEquals' - A parameter to search by user profile name. If @SpaceNameEquals@ is set,
+-- then this value cannot be set.
+newListApps ::
+  ListApps
+newListApps =
+  ListApps'
+    { domainIdEquals = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      spaceNameEquals = Prelude.Nothing,
+      userProfileNameEquals = Prelude.Nothing
+    }
+
+-- | A parameter to search for the domain ID.
+listApps_domainIdEquals :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Text)
+listApps_domainIdEquals = Lens.lens (\ListApps' {domainIdEquals} -> domainIdEquals) (\s@ListApps' {} a -> s {domainIdEquals = a} :: ListApps)
+
+-- | Returns a list up to a specified limit.
+listApps_maxResults :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Natural)
+listApps_maxResults = Lens.lens (\ListApps' {maxResults} -> maxResults) (\s@ListApps' {} a -> s {maxResults = a} :: ListApps)
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listApps_nextToken :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Text)
+listApps_nextToken = Lens.lens (\ListApps' {nextToken} -> nextToken) (\s@ListApps' {} a -> s {nextToken = a} :: ListApps)
+
+-- | The parameter by which to sort the results. The default is CreationTime.
+listApps_sortBy :: Lens.Lens' ListApps (Prelude.Maybe AppSortKey)
+listApps_sortBy = Lens.lens (\ListApps' {sortBy} -> sortBy) (\s@ListApps' {} a -> s {sortBy = a} :: ListApps)
+
+-- | The sort order for the results. The default is Ascending.
+listApps_sortOrder :: Lens.Lens' ListApps (Prelude.Maybe SortOrder)
+listApps_sortOrder = Lens.lens (\ListApps' {sortOrder} -> sortOrder) (\s@ListApps' {} a -> s {sortOrder = a} :: ListApps)
+
+-- | A parameter to search by space name. If @UserProfileNameEquals@ is set,
+-- then this value cannot be set.
+listApps_spaceNameEquals :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Text)
+listApps_spaceNameEquals = Lens.lens (\ListApps' {spaceNameEquals} -> spaceNameEquals) (\s@ListApps' {} a -> s {spaceNameEquals = a} :: ListApps)
+
+-- | A parameter to search by user profile name. If @SpaceNameEquals@ is set,
+-- then this value cannot be set.
+listApps_userProfileNameEquals :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Text)
+listApps_userProfileNameEquals = Lens.lens (\ListApps' {userProfileNameEquals} -> userProfileNameEquals) (\s@ListApps' {} a -> s {userProfileNameEquals = a} :: ListApps)
+
+instance Core.AWSPager ListApps where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAppsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAppsResponse_apps
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listApps_nextToken
+          Lens..~ rs
+          Lens.^? listAppsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListApps where
+  type AWSResponse ListApps = ListAppsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAppsResponse'
+            Prelude.<$> (x Data..?> "Apps" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListApps where
+  hashWithSalt _salt ListApps' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainIdEquals
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` spaceNameEquals
+      `Prelude.hashWithSalt` userProfileNameEquals
+
+instance Prelude.NFData ListApps where
+  rnf ListApps' {..} =
+    Prelude.rnf domainIdEquals
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf spaceNameEquals
+      `Prelude.seq` Prelude.rnf userProfileNameEquals
+
+instance Data.ToHeaders ListApps where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListApps" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListApps where
+  toJSON ListApps' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DomainIdEquals" Data..=)
+              Prelude.<$> domainIdEquals,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SpaceNameEquals" Data..=)
+              Prelude.<$> spaceNameEquals,
+            ("UserProfileNameEquals" Data..=)
+              Prelude.<$> userProfileNameEquals
+          ]
+      )
+
+instance Data.ToPath ListApps where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListApps where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAppsResponse' smart constructor.
+data ListAppsResponse = ListAppsResponse'
+  { -- | The list of apps.
+    apps :: Prelude.Maybe [AppDetails],
+    -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAppsResponse' 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:
+--
+-- 'apps', 'listAppsResponse_apps' - The list of apps.
+--
+-- 'nextToken', 'listAppsResponse_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'httpStatus', 'listAppsResponse_httpStatus' - The response's http status code.
+newListAppsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAppsResponse
+newListAppsResponse pHttpStatus_ =
+  ListAppsResponse'
+    { apps = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of apps.
+listAppsResponse_apps :: Lens.Lens' ListAppsResponse (Prelude.Maybe [AppDetails])
+listAppsResponse_apps = Lens.lens (\ListAppsResponse' {apps} -> apps) (\s@ListAppsResponse' {} a -> s {apps = a} :: ListAppsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listAppsResponse_nextToken :: Lens.Lens' ListAppsResponse (Prelude.Maybe Prelude.Text)
+listAppsResponse_nextToken = Lens.lens (\ListAppsResponse' {nextToken} -> nextToken) (\s@ListAppsResponse' {} a -> s {nextToken = a} :: ListAppsResponse)
+
+-- | The response's http status code.
+listAppsResponse_httpStatus :: Lens.Lens' ListAppsResponse Prelude.Int
+listAppsResponse_httpStatus = Lens.lens (\ListAppsResponse' {httpStatus} -> httpStatus) (\s@ListAppsResponse' {} a -> s {httpStatus = a} :: ListAppsResponse)
+
+instance Prelude.NFData ListAppsResponse where
+  rnf ListAppsResponse' {..} =
+    Prelude.rnf apps
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListArtifacts.hs b/gen/Amazonka/SageMaker/ListArtifacts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListArtifacts.hs
@@ -0,0 +1,314 @@
+{-# 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.ListArtifacts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the artifacts in your account and their properties.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListArtifacts
+  ( -- * Creating a Request
+    ListArtifacts (..),
+    newListArtifacts,
+
+    -- * Request Lenses
+    listArtifacts_artifactType,
+    listArtifacts_createdAfter,
+    listArtifacts_createdBefore,
+    listArtifacts_maxResults,
+    listArtifacts_nextToken,
+    listArtifacts_sortBy,
+    listArtifacts_sortOrder,
+    listArtifacts_sourceUri,
+
+    -- * Destructuring the Response
+    ListArtifactsResponse (..),
+    newListArtifactsResponse,
+
+    -- * Response Lenses
+    listArtifactsResponse_artifactSummaries,
+    listArtifactsResponse_nextToken,
+    listArtifactsResponse_httpStatus,
+  )
+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:/ 'newListArtifacts' smart constructor.
+data ListArtifacts = ListArtifacts'
+  { -- | A filter that returns only artifacts of the specified type.
+    artifactType :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only artifacts created on or after the specified
+    -- time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only artifacts created on or before the specified
+    -- time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of artifacts to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListArtifacts@ didn\'t return the full set of
+    -- artifacts, the call returns a token for getting the next set of
+    -- artifacts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortArtifactsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only artifacts with the specified source URI.
+    sourceUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListArtifacts' 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:
+--
+-- 'artifactType', 'listArtifacts_artifactType' - A filter that returns only artifacts of the specified type.
+--
+-- 'createdAfter', 'listArtifacts_createdAfter' - A filter that returns only artifacts created on or after the specified
+-- time.
+--
+-- 'createdBefore', 'listArtifacts_createdBefore' - A filter that returns only artifacts created on or before the specified
+-- time.
+--
+-- 'maxResults', 'listArtifacts_maxResults' - The maximum number of artifacts to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listArtifacts_nextToken' - If the previous call to @ListArtifacts@ didn\'t return the full set of
+-- artifacts, the call returns a token for getting the next set of
+-- artifacts.
+--
+-- 'sortBy', 'listArtifacts_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listArtifacts_sortOrder' - The sort order. The default value is @Descending@.
+--
+-- 'sourceUri', 'listArtifacts_sourceUri' - A filter that returns only artifacts with the specified source URI.
+newListArtifacts ::
+  ListArtifacts
+newListArtifacts =
+  ListArtifacts'
+    { artifactType = Prelude.Nothing,
+      createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      sourceUri = Prelude.Nothing
+    }
+
+-- | A filter that returns only artifacts of the specified type.
+listArtifacts_artifactType :: Lens.Lens' ListArtifacts (Prelude.Maybe Prelude.Text)
+listArtifacts_artifactType = Lens.lens (\ListArtifacts' {artifactType} -> artifactType) (\s@ListArtifacts' {} a -> s {artifactType = a} :: ListArtifacts)
+
+-- | A filter that returns only artifacts created on or after the specified
+-- time.
+listArtifacts_createdAfter :: Lens.Lens' ListArtifacts (Prelude.Maybe Prelude.UTCTime)
+listArtifacts_createdAfter = Lens.lens (\ListArtifacts' {createdAfter} -> createdAfter) (\s@ListArtifacts' {} a -> s {createdAfter = a} :: ListArtifacts) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only artifacts created on or before the specified
+-- time.
+listArtifacts_createdBefore :: Lens.Lens' ListArtifacts (Prelude.Maybe Prelude.UTCTime)
+listArtifacts_createdBefore = Lens.lens (\ListArtifacts' {createdBefore} -> createdBefore) (\s@ListArtifacts' {} a -> s {createdBefore = a} :: ListArtifacts) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of artifacts to return in the response. The default
+-- value is 10.
+listArtifacts_maxResults :: Lens.Lens' ListArtifacts (Prelude.Maybe Prelude.Natural)
+listArtifacts_maxResults = Lens.lens (\ListArtifacts' {maxResults} -> maxResults) (\s@ListArtifacts' {} a -> s {maxResults = a} :: ListArtifacts)
+
+-- | If the previous call to @ListArtifacts@ didn\'t return the full set of
+-- artifacts, the call returns a token for getting the next set of
+-- artifacts.
+listArtifacts_nextToken :: Lens.Lens' ListArtifacts (Prelude.Maybe Prelude.Text)
+listArtifacts_nextToken = Lens.lens (\ListArtifacts' {nextToken} -> nextToken) (\s@ListArtifacts' {} a -> s {nextToken = a} :: ListArtifacts)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listArtifacts_sortBy :: Lens.Lens' ListArtifacts (Prelude.Maybe SortArtifactsBy)
+listArtifacts_sortBy = Lens.lens (\ListArtifacts' {sortBy} -> sortBy) (\s@ListArtifacts' {} a -> s {sortBy = a} :: ListArtifacts)
+
+-- | The sort order. The default value is @Descending@.
+listArtifacts_sortOrder :: Lens.Lens' ListArtifacts (Prelude.Maybe SortOrder)
+listArtifacts_sortOrder = Lens.lens (\ListArtifacts' {sortOrder} -> sortOrder) (\s@ListArtifacts' {} a -> s {sortOrder = a} :: ListArtifacts)
+
+-- | A filter that returns only artifacts with the specified source URI.
+listArtifacts_sourceUri :: Lens.Lens' ListArtifacts (Prelude.Maybe Prelude.Text)
+listArtifacts_sourceUri = Lens.lens (\ListArtifacts' {sourceUri} -> sourceUri) (\s@ListArtifacts' {} a -> s {sourceUri = a} :: ListArtifacts)
+
+instance Core.AWSPager ListArtifacts where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listArtifactsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listArtifactsResponse_artifactSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listArtifacts_nextToken
+          Lens..~ rs
+          Lens.^? listArtifactsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListArtifacts where
+  type
+    AWSResponse ListArtifacts =
+      ListArtifactsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListArtifactsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ArtifactSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListArtifacts where
+  hashWithSalt _salt ListArtifacts' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactType
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` sourceUri
+
+instance Prelude.NFData ListArtifacts where
+  rnf ListArtifacts' {..} =
+    Prelude.rnf artifactType
+      `Prelude.seq` Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf sourceUri
+
+instance Data.ToHeaders ListArtifacts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListArtifacts" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListArtifacts where
+  toJSON ListArtifacts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArtifactType" Data..=) Prelude.<$> artifactType,
+            ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SourceUri" Data..=) Prelude.<$> sourceUri
+          ]
+      )
+
+instance Data.ToPath ListArtifacts where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListArtifacts where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListArtifactsResponse' smart constructor.
+data ListArtifactsResponse = ListArtifactsResponse'
+  { -- | A list of artifacts and their properties.
+    artifactSummaries :: Prelude.Maybe [ArtifactSummary],
+    -- | A token for getting the next set of artifacts, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListArtifactsResponse' 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:
+--
+-- 'artifactSummaries', 'listArtifactsResponse_artifactSummaries' - A list of artifacts and their properties.
+--
+-- 'nextToken', 'listArtifactsResponse_nextToken' - A token for getting the next set of artifacts, if there are any.
+--
+-- 'httpStatus', 'listArtifactsResponse_httpStatus' - The response's http status code.
+newListArtifactsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListArtifactsResponse
+newListArtifactsResponse pHttpStatus_ =
+  ListArtifactsResponse'
+    { artifactSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of artifacts and their properties.
+listArtifactsResponse_artifactSummaries :: Lens.Lens' ListArtifactsResponse (Prelude.Maybe [ArtifactSummary])
+listArtifactsResponse_artifactSummaries = Lens.lens (\ListArtifactsResponse' {artifactSummaries} -> artifactSummaries) (\s@ListArtifactsResponse' {} a -> s {artifactSummaries = a} :: ListArtifactsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of artifacts, if there are any.
+listArtifactsResponse_nextToken :: Lens.Lens' ListArtifactsResponse (Prelude.Maybe Prelude.Text)
+listArtifactsResponse_nextToken = Lens.lens (\ListArtifactsResponse' {nextToken} -> nextToken) (\s@ListArtifactsResponse' {} a -> s {nextToken = a} :: ListArtifactsResponse)
+
+-- | The response's http status code.
+listArtifactsResponse_httpStatus :: Lens.Lens' ListArtifactsResponse Prelude.Int
+listArtifactsResponse_httpStatus = Lens.lens (\ListArtifactsResponse' {httpStatus} -> httpStatus) (\s@ListArtifactsResponse' {} a -> s {httpStatus = a} :: ListArtifactsResponse)
+
+instance Prelude.NFData ListArtifactsResponse where
+  rnf ListArtifactsResponse' {..} =
+    Prelude.rnf artifactSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListAssociations.hs b/gen/Amazonka/SageMaker/ListAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListAssociations.hs
@@ -0,0 +1,363 @@
+{-# 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.ListAssociations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the associations in your account and their properties.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListAssociations
+  ( -- * Creating a Request
+    ListAssociations (..),
+    newListAssociations,
+
+    -- * Request Lenses
+    listAssociations_associationType,
+    listAssociations_createdAfter,
+    listAssociations_createdBefore,
+    listAssociations_destinationArn,
+    listAssociations_destinationType,
+    listAssociations_maxResults,
+    listAssociations_nextToken,
+    listAssociations_sortBy,
+    listAssociations_sortOrder,
+    listAssociations_sourceArn,
+    listAssociations_sourceType,
+
+    -- * Destructuring the Response
+    ListAssociationsResponse (..),
+    newListAssociationsResponse,
+
+    -- * Response Lenses
+    listAssociationsResponse_associationSummaries,
+    listAssociationsResponse_nextToken,
+    listAssociationsResponse_httpStatus,
+  )
+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:/ 'newListAssociations' smart constructor.
+data ListAssociations = ListAssociations'
+  { -- | A filter that returns only associations of the specified type.
+    associationType :: Prelude.Maybe AssociationEdgeType,
+    -- | A filter that returns only associations created on or after the
+    -- specified time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only associations created on or before the
+    -- specified time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only associations with the specified destination
+    -- Amazon Resource Name (ARN).
+    destinationArn :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only associations with the specified destination
+    -- type.
+    destinationType :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of associations to return in the response. The
+    -- default value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListAssociations@ didn\'t return the full set
+    -- of associations, the call returns a token for getting the next set of
+    -- associations.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortAssociationsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only associations with the specified source ARN.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only associations with the specified source type.
+    sourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAssociations' 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:
+--
+-- 'associationType', 'listAssociations_associationType' - A filter that returns only associations of the specified type.
+--
+-- 'createdAfter', 'listAssociations_createdAfter' - A filter that returns only associations created on or after the
+-- specified time.
+--
+-- 'createdBefore', 'listAssociations_createdBefore' - A filter that returns only associations created on or before the
+-- specified time.
+--
+-- 'destinationArn', 'listAssociations_destinationArn' - A filter that returns only associations with the specified destination
+-- Amazon Resource Name (ARN).
+--
+-- 'destinationType', 'listAssociations_destinationType' - A filter that returns only associations with the specified destination
+-- type.
+--
+-- 'maxResults', 'listAssociations_maxResults' - The maximum number of associations to return in the response. The
+-- default value is 10.
+--
+-- 'nextToken', 'listAssociations_nextToken' - If the previous call to @ListAssociations@ didn\'t return the full set
+-- of associations, the call returns a token for getting the next set of
+-- associations.
+--
+-- 'sortBy', 'listAssociations_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listAssociations_sortOrder' - The sort order. The default value is @Descending@.
+--
+-- 'sourceArn', 'listAssociations_sourceArn' - A filter that returns only associations with the specified source ARN.
+--
+-- 'sourceType', 'listAssociations_sourceType' - A filter that returns only associations with the specified source type.
+newListAssociations ::
+  ListAssociations
+newListAssociations =
+  ListAssociations'
+    { associationType =
+        Prelude.Nothing,
+      createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      destinationArn = Prelude.Nothing,
+      destinationType = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      sourceType = Prelude.Nothing
+    }
+
+-- | A filter that returns only associations of the specified type.
+listAssociations_associationType :: Lens.Lens' ListAssociations (Prelude.Maybe AssociationEdgeType)
+listAssociations_associationType = Lens.lens (\ListAssociations' {associationType} -> associationType) (\s@ListAssociations' {} a -> s {associationType = a} :: ListAssociations)
+
+-- | A filter that returns only associations created on or after the
+-- specified time.
+listAssociations_createdAfter :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.UTCTime)
+listAssociations_createdAfter = Lens.lens (\ListAssociations' {createdAfter} -> createdAfter) (\s@ListAssociations' {} a -> s {createdAfter = a} :: ListAssociations) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only associations created on or before the
+-- specified time.
+listAssociations_createdBefore :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.UTCTime)
+listAssociations_createdBefore = Lens.lens (\ListAssociations' {createdBefore} -> createdBefore) (\s@ListAssociations' {} a -> s {createdBefore = a} :: ListAssociations) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only associations with the specified destination
+-- Amazon Resource Name (ARN).
+listAssociations_destinationArn :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.Text)
+listAssociations_destinationArn = Lens.lens (\ListAssociations' {destinationArn} -> destinationArn) (\s@ListAssociations' {} a -> s {destinationArn = a} :: ListAssociations)
+
+-- | A filter that returns only associations with the specified destination
+-- type.
+listAssociations_destinationType :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.Text)
+listAssociations_destinationType = Lens.lens (\ListAssociations' {destinationType} -> destinationType) (\s@ListAssociations' {} a -> s {destinationType = a} :: ListAssociations)
+
+-- | The maximum number of associations to return in the response. The
+-- default value is 10.
+listAssociations_maxResults :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.Natural)
+listAssociations_maxResults = Lens.lens (\ListAssociations' {maxResults} -> maxResults) (\s@ListAssociations' {} a -> s {maxResults = a} :: ListAssociations)
+
+-- | If the previous call to @ListAssociations@ didn\'t return the full set
+-- of associations, the call returns a token for getting the next set of
+-- associations.
+listAssociations_nextToken :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.Text)
+listAssociations_nextToken = Lens.lens (\ListAssociations' {nextToken} -> nextToken) (\s@ListAssociations' {} a -> s {nextToken = a} :: ListAssociations)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listAssociations_sortBy :: Lens.Lens' ListAssociations (Prelude.Maybe SortAssociationsBy)
+listAssociations_sortBy = Lens.lens (\ListAssociations' {sortBy} -> sortBy) (\s@ListAssociations' {} a -> s {sortBy = a} :: ListAssociations)
+
+-- | The sort order. The default value is @Descending@.
+listAssociations_sortOrder :: Lens.Lens' ListAssociations (Prelude.Maybe SortOrder)
+listAssociations_sortOrder = Lens.lens (\ListAssociations' {sortOrder} -> sortOrder) (\s@ListAssociations' {} a -> s {sortOrder = a} :: ListAssociations)
+
+-- | A filter that returns only associations with the specified source ARN.
+listAssociations_sourceArn :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.Text)
+listAssociations_sourceArn = Lens.lens (\ListAssociations' {sourceArn} -> sourceArn) (\s@ListAssociations' {} a -> s {sourceArn = a} :: ListAssociations)
+
+-- | A filter that returns only associations with the specified source type.
+listAssociations_sourceType :: Lens.Lens' ListAssociations (Prelude.Maybe Prelude.Text)
+listAssociations_sourceType = Lens.lens (\ListAssociations' {sourceType} -> sourceType) (\s@ListAssociations' {} a -> s {sourceType = a} :: ListAssociations)
+
+instance Core.AWSPager ListAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAssociationsResponse_associationSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAssociations_nextToken
+          Lens..~ rs
+          Lens.^? listAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAssociations where
+  type
+    AWSResponse ListAssociations =
+      ListAssociationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAssociationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "AssociationSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAssociations where
+  hashWithSalt _salt ListAssociations' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationType
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` destinationArn
+      `Prelude.hashWithSalt` destinationType
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sourceType
+
+instance Prelude.NFData ListAssociations where
+  rnf ListAssociations' {..} =
+    Prelude.rnf associationType
+      `Prelude.seq` Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf destinationArn
+      `Prelude.seq` Prelude.rnf destinationType
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sourceType
+
+instance Data.ToHeaders ListAssociations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListAssociations" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAssociations where
+  toJSON ListAssociations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AssociationType" Data..=)
+              Prelude.<$> associationType,
+            ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("DestinationArn" Data..=)
+              Prelude.<$> destinationArn,
+            ("DestinationType" Data..=)
+              Prelude.<$> destinationType,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SourceArn" Data..=) Prelude.<$> sourceArn,
+            ("SourceType" Data..=) Prelude.<$> sourceType
+          ]
+      )
+
+instance Data.ToPath ListAssociations where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListAssociations where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAssociationsResponse' smart constructor.
+data ListAssociationsResponse = ListAssociationsResponse'
+  { -- | A list of associations and their properties.
+    associationSummaries :: Prelude.Maybe [AssociationSummary],
+    -- | A token for getting the next set of associations, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAssociationsResponse' 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:
+--
+-- 'associationSummaries', 'listAssociationsResponse_associationSummaries' - A list of associations and their properties.
+--
+-- 'nextToken', 'listAssociationsResponse_nextToken' - A token for getting the next set of associations, if there are any.
+--
+-- 'httpStatus', 'listAssociationsResponse_httpStatus' - The response's http status code.
+newListAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAssociationsResponse
+newListAssociationsResponse pHttpStatus_ =
+  ListAssociationsResponse'
+    { associationSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of associations and their properties.
+listAssociationsResponse_associationSummaries :: Lens.Lens' ListAssociationsResponse (Prelude.Maybe [AssociationSummary])
+listAssociationsResponse_associationSummaries = Lens.lens (\ListAssociationsResponse' {associationSummaries} -> associationSummaries) (\s@ListAssociationsResponse' {} a -> s {associationSummaries = a} :: ListAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of associations, if there are any.
+listAssociationsResponse_nextToken :: Lens.Lens' ListAssociationsResponse (Prelude.Maybe Prelude.Text)
+listAssociationsResponse_nextToken = Lens.lens (\ListAssociationsResponse' {nextToken} -> nextToken) (\s@ListAssociationsResponse' {} a -> s {nextToken = a} :: ListAssociationsResponse)
+
+-- | The response's http status code.
+listAssociationsResponse_httpStatus :: Lens.Lens' ListAssociationsResponse Prelude.Int
+listAssociationsResponse_httpStatus = Lens.lens (\ListAssociationsResponse' {httpStatus} -> httpStatus) (\s@ListAssociationsResponse' {} a -> s {httpStatus = a} :: ListAssociationsResponse)
+
+instance Prelude.NFData ListAssociationsResponse where
+  rnf ListAssociationsResponse' {..} =
+    Prelude.rnf associationSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListAutoMLJobs.hs b/gen/Amazonka/SageMaker/ListAutoMLJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListAutoMLJobs.hs
@@ -0,0 +1,335 @@
+{-# 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.ListAutoMLJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Request a list of jobs.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListAutoMLJobs
+  ( -- * Creating a Request
+    ListAutoMLJobs (..),
+    newListAutoMLJobs,
+
+    -- * Request Lenses
+    listAutoMLJobs_creationTimeAfter,
+    listAutoMLJobs_creationTimeBefore,
+    listAutoMLJobs_lastModifiedTimeAfter,
+    listAutoMLJobs_lastModifiedTimeBefore,
+    listAutoMLJobs_maxResults,
+    listAutoMLJobs_nameContains,
+    listAutoMLJobs_nextToken,
+    listAutoMLJobs_sortBy,
+    listAutoMLJobs_sortOrder,
+    listAutoMLJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListAutoMLJobsResponse (..),
+    newListAutoMLJobsResponse,
+
+    -- * Response Lenses
+    listAutoMLJobsResponse_nextToken,
+    listAutoMLJobsResponse_httpStatus,
+    listAutoMLJobsResponse_autoMLJobSummaries,
+  )
+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:/ 'newListAutoMLJobs' smart constructor.
+data ListAutoMLJobs = ListAutoMLJobs'
+  { -- | Request a list of jobs, using a filter for time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Request a list of jobs, using a filter for time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Request a list of jobs, using a filter for time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Request a list of jobs, using a filter for time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Request a list of jobs up to a specified limit.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Request a list of jobs, using a search filter for name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the previous response was truncated, you receive this token. Use it
+    -- in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is @Name@.
+    sortBy :: Prelude.Maybe AutoMLSortBy,
+    -- | The sort order for the results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe AutoMLSortOrder,
+    -- | Request a list of jobs, using a filter for status.
+    statusEquals :: Prelude.Maybe AutoMLJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAutoMLJobs' 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:
+--
+-- 'creationTimeAfter', 'listAutoMLJobs_creationTimeAfter' - Request a list of jobs, using a filter for time.
+--
+-- 'creationTimeBefore', 'listAutoMLJobs_creationTimeBefore' - Request a list of jobs, using a filter for time.
+--
+-- 'lastModifiedTimeAfter', 'listAutoMLJobs_lastModifiedTimeAfter' - Request a list of jobs, using a filter for time.
+--
+-- 'lastModifiedTimeBefore', 'listAutoMLJobs_lastModifiedTimeBefore' - Request a list of jobs, using a filter for time.
+--
+-- 'maxResults', 'listAutoMLJobs_maxResults' - Request a list of jobs up to a specified limit.
+--
+-- 'nameContains', 'listAutoMLJobs_nameContains' - Request a list of jobs, using a search filter for name.
+--
+-- 'nextToken', 'listAutoMLJobs_nextToken' - If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+--
+-- 'sortBy', 'listAutoMLJobs_sortBy' - The parameter by which to sort the results. The default is @Name@.
+--
+-- 'sortOrder', 'listAutoMLJobs_sortOrder' - The sort order for the results. The default is @Descending@.
+--
+-- 'statusEquals', 'listAutoMLJobs_statusEquals' - Request a list of jobs, using a filter for status.
+newListAutoMLJobs ::
+  ListAutoMLJobs
+newListAutoMLJobs =
+  ListAutoMLJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | Request a list of jobs, using a filter for time.
+listAutoMLJobs_creationTimeAfter :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.UTCTime)
+listAutoMLJobs_creationTimeAfter = Lens.lens (\ListAutoMLJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListAutoMLJobs' {} a -> s {creationTimeAfter = a} :: ListAutoMLJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Request a list of jobs, using a filter for time.
+listAutoMLJobs_creationTimeBefore :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.UTCTime)
+listAutoMLJobs_creationTimeBefore = Lens.lens (\ListAutoMLJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListAutoMLJobs' {} a -> s {creationTimeBefore = a} :: ListAutoMLJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Request a list of jobs, using a filter for time.
+listAutoMLJobs_lastModifiedTimeAfter :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.UTCTime)
+listAutoMLJobs_lastModifiedTimeAfter = Lens.lens (\ListAutoMLJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListAutoMLJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListAutoMLJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Request a list of jobs, using a filter for time.
+listAutoMLJobs_lastModifiedTimeBefore :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.UTCTime)
+listAutoMLJobs_lastModifiedTimeBefore = Lens.lens (\ListAutoMLJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListAutoMLJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListAutoMLJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Request a list of jobs up to a specified limit.
+listAutoMLJobs_maxResults :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.Natural)
+listAutoMLJobs_maxResults = Lens.lens (\ListAutoMLJobs' {maxResults} -> maxResults) (\s@ListAutoMLJobs' {} a -> s {maxResults = a} :: ListAutoMLJobs)
+
+-- | Request a list of jobs, using a search filter for name.
+listAutoMLJobs_nameContains :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.Text)
+listAutoMLJobs_nameContains = Lens.lens (\ListAutoMLJobs' {nameContains} -> nameContains) (\s@ListAutoMLJobs' {} a -> s {nameContains = a} :: ListAutoMLJobs)
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listAutoMLJobs_nextToken :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe Prelude.Text)
+listAutoMLJobs_nextToken = Lens.lens (\ListAutoMLJobs' {nextToken} -> nextToken) (\s@ListAutoMLJobs' {} a -> s {nextToken = a} :: ListAutoMLJobs)
+
+-- | The parameter by which to sort the results. The default is @Name@.
+listAutoMLJobs_sortBy :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe AutoMLSortBy)
+listAutoMLJobs_sortBy = Lens.lens (\ListAutoMLJobs' {sortBy} -> sortBy) (\s@ListAutoMLJobs' {} a -> s {sortBy = a} :: ListAutoMLJobs)
+
+-- | The sort order for the results. The default is @Descending@.
+listAutoMLJobs_sortOrder :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe AutoMLSortOrder)
+listAutoMLJobs_sortOrder = Lens.lens (\ListAutoMLJobs' {sortOrder} -> sortOrder) (\s@ListAutoMLJobs' {} a -> s {sortOrder = a} :: ListAutoMLJobs)
+
+-- | Request a list of jobs, using a filter for status.
+listAutoMLJobs_statusEquals :: Lens.Lens' ListAutoMLJobs (Prelude.Maybe AutoMLJobStatus)
+listAutoMLJobs_statusEquals = Lens.lens (\ListAutoMLJobs' {statusEquals} -> statusEquals) (\s@ListAutoMLJobs' {} a -> s {statusEquals = a} :: ListAutoMLJobs)
+
+instance Core.AWSPager ListAutoMLJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAutoMLJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listAutoMLJobsResponse_autoMLJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAutoMLJobs_nextToken
+          Lens..~ rs
+          Lens.^? listAutoMLJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAutoMLJobs where
+  type
+    AWSResponse ListAutoMLJobs =
+      ListAutoMLJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAutoMLJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "AutoMLJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListAutoMLJobs where
+  hashWithSalt _salt ListAutoMLJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListAutoMLJobs where
+  rnf ListAutoMLJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListAutoMLJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListAutoMLJobs" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAutoMLJobs where
+  toJSON ListAutoMLJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListAutoMLJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListAutoMLJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAutoMLJobsResponse' smart constructor.
+data ListAutoMLJobsResponse = ListAutoMLJobsResponse'
+  { -- | If the previous response was truncated, you receive this token. Use it
+    -- in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Returns a summary list of jobs.
+    autoMLJobSummaries :: [AutoMLJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAutoMLJobsResponse' 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:
+--
+-- 'nextToken', 'listAutoMLJobsResponse_nextToken' - If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+--
+-- 'httpStatus', 'listAutoMLJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'autoMLJobSummaries', 'listAutoMLJobsResponse_autoMLJobSummaries' - Returns a summary list of jobs.
+newListAutoMLJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAutoMLJobsResponse
+newListAutoMLJobsResponse pHttpStatus_ =
+  ListAutoMLJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      autoMLJobSummaries = Prelude.mempty
+    }
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listAutoMLJobsResponse_nextToken :: Lens.Lens' ListAutoMLJobsResponse (Prelude.Maybe Prelude.Text)
+listAutoMLJobsResponse_nextToken = Lens.lens (\ListAutoMLJobsResponse' {nextToken} -> nextToken) (\s@ListAutoMLJobsResponse' {} a -> s {nextToken = a} :: ListAutoMLJobsResponse)
+
+-- | The response's http status code.
+listAutoMLJobsResponse_httpStatus :: Lens.Lens' ListAutoMLJobsResponse Prelude.Int
+listAutoMLJobsResponse_httpStatus = Lens.lens (\ListAutoMLJobsResponse' {httpStatus} -> httpStatus) (\s@ListAutoMLJobsResponse' {} a -> s {httpStatus = a} :: ListAutoMLJobsResponse)
+
+-- | Returns a summary list of jobs.
+listAutoMLJobsResponse_autoMLJobSummaries :: Lens.Lens' ListAutoMLJobsResponse [AutoMLJobSummary]
+listAutoMLJobsResponse_autoMLJobSummaries = Lens.lens (\ListAutoMLJobsResponse' {autoMLJobSummaries} -> autoMLJobSummaries) (\s@ListAutoMLJobsResponse' {} a -> s {autoMLJobSummaries = a} :: ListAutoMLJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListAutoMLJobsResponse where
+  rnf ListAutoMLJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf autoMLJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListCandidatesForAutoMLJob.hs b/gen/Amazonka/SageMaker/ListCandidatesForAutoMLJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListCandidatesForAutoMLJob.hs
@@ -0,0 +1,298 @@
+{-# 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.ListCandidatesForAutoMLJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the candidates created for the job.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListCandidatesForAutoMLJob
+  ( -- * Creating a Request
+    ListCandidatesForAutoMLJob (..),
+    newListCandidatesForAutoMLJob,
+
+    -- * Request Lenses
+    listCandidatesForAutoMLJob_candidateNameEquals,
+    listCandidatesForAutoMLJob_maxResults,
+    listCandidatesForAutoMLJob_nextToken,
+    listCandidatesForAutoMLJob_sortBy,
+    listCandidatesForAutoMLJob_sortOrder,
+    listCandidatesForAutoMLJob_statusEquals,
+    listCandidatesForAutoMLJob_autoMLJobName,
+
+    -- * Destructuring the Response
+    ListCandidatesForAutoMLJobResponse (..),
+    newListCandidatesForAutoMLJobResponse,
+
+    -- * Response Lenses
+    listCandidatesForAutoMLJobResponse_nextToken,
+    listCandidatesForAutoMLJobResponse_httpStatus,
+    listCandidatesForAutoMLJobResponse_candidates,
+  )
+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:/ 'newListCandidatesForAutoMLJob' smart constructor.
+data ListCandidatesForAutoMLJob = ListCandidatesForAutoMLJob'
+  { -- | List the candidates for the job and filter by candidate name.
+    candidateNameEquals :: Prelude.Maybe Prelude.Text,
+    -- | List the job\'s candidates up to a specified limit.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous response was truncated, you receive this token. Use it
+    -- in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is @Descending@.
+    sortBy :: Prelude.Maybe CandidateSortBy,
+    -- | The sort order for the results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe AutoMLSortOrder,
+    -- | List the candidates for the job and filter by status.
+    statusEquals :: Prelude.Maybe CandidateStatus,
+    -- | List the candidates created for the job by providing the job\'s name.
+    autoMLJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCandidatesForAutoMLJob' 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:
+--
+-- 'candidateNameEquals', 'listCandidatesForAutoMLJob_candidateNameEquals' - List the candidates for the job and filter by candidate name.
+--
+-- 'maxResults', 'listCandidatesForAutoMLJob_maxResults' - List the job\'s candidates up to a specified limit.
+--
+-- 'nextToken', 'listCandidatesForAutoMLJob_nextToken' - If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+--
+-- 'sortBy', 'listCandidatesForAutoMLJob_sortBy' - The parameter by which to sort the results. The default is @Descending@.
+--
+-- 'sortOrder', 'listCandidatesForAutoMLJob_sortOrder' - The sort order for the results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listCandidatesForAutoMLJob_statusEquals' - List the candidates for the job and filter by status.
+--
+-- 'autoMLJobName', 'listCandidatesForAutoMLJob_autoMLJobName' - List the candidates created for the job by providing the job\'s name.
+newListCandidatesForAutoMLJob ::
+  -- | 'autoMLJobName'
+  Prelude.Text ->
+  ListCandidatesForAutoMLJob
+newListCandidatesForAutoMLJob pAutoMLJobName_ =
+  ListCandidatesForAutoMLJob'
+    { candidateNameEquals =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing,
+      autoMLJobName = pAutoMLJobName_
+    }
+
+-- | List the candidates for the job and filter by candidate name.
+listCandidatesForAutoMLJob_candidateNameEquals :: Lens.Lens' ListCandidatesForAutoMLJob (Prelude.Maybe Prelude.Text)
+listCandidatesForAutoMLJob_candidateNameEquals = Lens.lens (\ListCandidatesForAutoMLJob' {candidateNameEquals} -> candidateNameEquals) (\s@ListCandidatesForAutoMLJob' {} a -> s {candidateNameEquals = a} :: ListCandidatesForAutoMLJob)
+
+-- | List the job\'s candidates up to a specified limit.
+listCandidatesForAutoMLJob_maxResults :: Lens.Lens' ListCandidatesForAutoMLJob (Prelude.Maybe Prelude.Natural)
+listCandidatesForAutoMLJob_maxResults = Lens.lens (\ListCandidatesForAutoMLJob' {maxResults} -> maxResults) (\s@ListCandidatesForAutoMLJob' {} a -> s {maxResults = a} :: ListCandidatesForAutoMLJob)
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listCandidatesForAutoMLJob_nextToken :: Lens.Lens' ListCandidatesForAutoMLJob (Prelude.Maybe Prelude.Text)
+listCandidatesForAutoMLJob_nextToken = Lens.lens (\ListCandidatesForAutoMLJob' {nextToken} -> nextToken) (\s@ListCandidatesForAutoMLJob' {} a -> s {nextToken = a} :: ListCandidatesForAutoMLJob)
+
+-- | The parameter by which to sort the results. The default is @Descending@.
+listCandidatesForAutoMLJob_sortBy :: Lens.Lens' ListCandidatesForAutoMLJob (Prelude.Maybe CandidateSortBy)
+listCandidatesForAutoMLJob_sortBy = Lens.lens (\ListCandidatesForAutoMLJob' {sortBy} -> sortBy) (\s@ListCandidatesForAutoMLJob' {} a -> s {sortBy = a} :: ListCandidatesForAutoMLJob)
+
+-- | The sort order for the results. The default is @Ascending@.
+listCandidatesForAutoMLJob_sortOrder :: Lens.Lens' ListCandidatesForAutoMLJob (Prelude.Maybe AutoMLSortOrder)
+listCandidatesForAutoMLJob_sortOrder = Lens.lens (\ListCandidatesForAutoMLJob' {sortOrder} -> sortOrder) (\s@ListCandidatesForAutoMLJob' {} a -> s {sortOrder = a} :: ListCandidatesForAutoMLJob)
+
+-- | List the candidates for the job and filter by status.
+listCandidatesForAutoMLJob_statusEquals :: Lens.Lens' ListCandidatesForAutoMLJob (Prelude.Maybe CandidateStatus)
+listCandidatesForAutoMLJob_statusEquals = Lens.lens (\ListCandidatesForAutoMLJob' {statusEquals} -> statusEquals) (\s@ListCandidatesForAutoMLJob' {} a -> s {statusEquals = a} :: ListCandidatesForAutoMLJob)
+
+-- | List the candidates created for the job by providing the job\'s name.
+listCandidatesForAutoMLJob_autoMLJobName :: Lens.Lens' ListCandidatesForAutoMLJob Prelude.Text
+listCandidatesForAutoMLJob_autoMLJobName = Lens.lens (\ListCandidatesForAutoMLJob' {autoMLJobName} -> autoMLJobName) (\s@ListCandidatesForAutoMLJob' {} a -> s {autoMLJobName = a} :: ListCandidatesForAutoMLJob)
+
+instance Core.AWSPager ListCandidatesForAutoMLJob where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCandidatesForAutoMLJobResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listCandidatesForAutoMLJobResponse_candidates
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCandidatesForAutoMLJob_nextToken
+          Lens..~ rs
+          Lens.^? listCandidatesForAutoMLJobResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCandidatesForAutoMLJob where
+  type
+    AWSResponse ListCandidatesForAutoMLJob =
+      ListCandidatesForAutoMLJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCandidatesForAutoMLJobResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "Candidates" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListCandidatesForAutoMLJob where
+  hashWithSalt _salt ListCandidatesForAutoMLJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` candidateNameEquals
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+      `Prelude.hashWithSalt` autoMLJobName
+
+instance Prelude.NFData ListCandidatesForAutoMLJob where
+  rnf ListCandidatesForAutoMLJob' {..} =
+    Prelude.rnf candidateNameEquals
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+      `Prelude.seq` Prelude.rnf autoMLJobName
+
+instance Data.ToHeaders ListCandidatesForAutoMLJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListCandidatesForAutoMLJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCandidatesForAutoMLJob where
+  toJSON ListCandidatesForAutoMLJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CandidateNameEquals" Data..=)
+              Prelude.<$> candidateNameEquals,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals,
+            Prelude.Just
+              ("AutoMLJobName" Data..= autoMLJobName)
+          ]
+      )
+
+instance Data.ToPath ListCandidatesForAutoMLJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListCandidatesForAutoMLJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCandidatesForAutoMLJobResponse' smart constructor.
+data ListCandidatesForAutoMLJobResponse = ListCandidatesForAutoMLJobResponse'
+  { -- | If the previous response was truncated, you receive this token. Use it
+    -- in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Summaries about the @AutoMLCandidates@.
+    candidates :: [AutoMLCandidate]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCandidatesForAutoMLJobResponse' 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:
+--
+-- 'nextToken', 'listCandidatesForAutoMLJobResponse_nextToken' - If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+--
+-- 'httpStatus', 'listCandidatesForAutoMLJobResponse_httpStatus' - The response's http status code.
+--
+-- 'candidates', 'listCandidatesForAutoMLJobResponse_candidates' - Summaries about the @AutoMLCandidates@.
+newListCandidatesForAutoMLJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCandidatesForAutoMLJobResponse
+newListCandidatesForAutoMLJobResponse pHttpStatus_ =
+  ListCandidatesForAutoMLJobResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      candidates = Prelude.mempty
+    }
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listCandidatesForAutoMLJobResponse_nextToken :: Lens.Lens' ListCandidatesForAutoMLJobResponse (Prelude.Maybe Prelude.Text)
+listCandidatesForAutoMLJobResponse_nextToken = Lens.lens (\ListCandidatesForAutoMLJobResponse' {nextToken} -> nextToken) (\s@ListCandidatesForAutoMLJobResponse' {} a -> s {nextToken = a} :: ListCandidatesForAutoMLJobResponse)
+
+-- | The response's http status code.
+listCandidatesForAutoMLJobResponse_httpStatus :: Lens.Lens' ListCandidatesForAutoMLJobResponse Prelude.Int
+listCandidatesForAutoMLJobResponse_httpStatus = Lens.lens (\ListCandidatesForAutoMLJobResponse' {httpStatus} -> httpStatus) (\s@ListCandidatesForAutoMLJobResponse' {} a -> s {httpStatus = a} :: ListCandidatesForAutoMLJobResponse)
+
+-- | Summaries about the @AutoMLCandidates@.
+listCandidatesForAutoMLJobResponse_candidates :: Lens.Lens' ListCandidatesForAutoMLJobResponse [AutoMLCandidate]
+listCandidatesForAutoMLJobResponse_candidates = Lens.lens (\ListCandidatesForAutoMLJobResponse' {candidates} -> candidates) (\s@ListCandidatesForAutoMLJobResponse' {} a -> s {candidates = a} :: ListCandidatesForAutoMLJobResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListCandidatesForAutoMLJobResponse
+  where
+  rnf ListCandidatesForAutoMLJobResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf candidates
diff --git a/gen/Amazonka/SageMaker/ListCodeRepositories.hs b/gen/Amazonka/SageMaker/ListCodeRepositories.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListCodeRepositories.hs
@@ -0,0 +1,384 @@
+{-# 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.ListCodeRepositories
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of the Git repositories in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListCodeRepositories
+  ( -- * Creating a Request
+    ListCodeRepositories (..),
+    newListCodeRepositories,
+
+    -- * Request Lenses
+    listCodeRepositories_creationTimeAfter,
+    listCodeRepositories_creationTimeBefore,
+    listCodeRepositories_lastModifiedTimeAfter,
+    listCodeRepositories_lastModifiedTimeBefore,
+    listCodeRepositories_maxResults,
+    listCodeRepositories_nameContains,
+    listCodeRepositories_nextToken,
+    listCodeRepositories_sortBy,
+    listCodeRepositories_sortOrder,
+
+    -- * Destructuring the Response
+    ListCodeRepositoriesResponse (..),
+    newListCodeRepositoriesResponse,
+
+    -- * Response Lenses
+    listCodeRepositoriesResponse_nextToken,
+    listCodeRepositoriesResponse_httpStatus,
+    listCodeRepositoriesResponse_codeRepositorySummaryList,
+  )
+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:/ 'newListCodeRepositories' smart constructor.
+data ListCodeRepositories = ListCodeRepositories'
+  { -- | A filter that returns only Git repositories that were created after the
+    -- specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only Git repositories that were created before the
+    -- specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only Git repositories that were last modified
+    -- after the specified time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only Git repositories that were last modified
+    -- before the specified time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of Git repositories to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the Git repositories name. This filter returns only
+    -- repositories whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of a @ListCodeRepositoriesOutput@ request was truncated,
+    -- the response includes a @NextToken@. To get the next set of Git
+    -- repositories, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @Name@.
+    sortBy :: Prelude.Maybe CodeRepositorySortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe CodeRepositorySortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCodeRepositories' 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:
+--
+-- 'creationTimeAfter', 'listCodeRepositories_creationTimeAfter' - A filter that returns only Git repositories that were created after the
+-- specified time.
+--
+-- 'creationTimeBefore', 'listCodeRepositories_creationTimeBefore' - A filter that returns only Git repositories that were created before the
+-- specified time.
+--
+-- 'lastModifiedTimeAfter', 'listCodeRepositories_lastModifiedTimeAfter' - A filter that returns only Git repositories that were last modified
+-- after the specified time.
+--
+-- 'lastModifiedTimeBefore', 'listCodeRepositories_lastModifiedTimeBefore' - A filter that returns only Git repositories that were last modified
+-- before the specified time.
+--
+-- 'maxResults', 'listCodeRepositories_maxResults' - The maximum number of Git repositories to return in the response.
+--
+-- 'nameContains', 'listCodeRepositories_nameContains' - A string in the Git repositories name. This filter returns only
+-- repositories whose name contains the specified string.
+--
+-- 'nextToken', 'listCodeRepositories_nextToken' - If the result of a @ListCodeRepositoriesOutput@ request was truncated,
+-- the response includes a @NextToken@. To get the next set of Git
+-- repositories, use the token in the next request.
+--
+-- 'sortBy', 'listCodeRepositories_sortBy' - The field to sort results by. The default is @Name@.
+--
+-- 'sortOrder', 'listCodeRepositories_sortOrder' - The sort order for results. The default is @Ascending@.
+newListCodeRepositories ::
+  ListCodeRepositories
+newListCodeRepositories =
+  ListCodeRepositories'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only Git repositories that were created after the
+-- specified time.
+listCodeRepositories_creationTimeAfter :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.UTCTime)
+listCodeRepositories_creationTimeAfter = Lens.lens (\ListCodeRepositories' {creationTimeAfter} -> creationTimeAfter) (\s@ListCodeRepositories' {} a -> s {creationTimeAfter = a} :: ListCodeRepositories) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only Git repositories that were created before the
+-- specified time.
+listCodeRepositories_creationTimeBefore :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.UTCTime)
+listCodeRepositories_creationTimeBefore = Lens.lens (\ListCodeRepositories' {creationTimeBefore} -> creationTimeBefore) (\s@ListCodeRepositories' {} a -> s {creationTimeBefore = a} :: ListCodeRepositories) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only Git repositories that were last modified
+-- after the specified time.
+listCodeRepositories_lastModifiedTimeAfter :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.UTCTime)
+listCodeRepositories_lastModifiedTimeAfter = Lens.lens (\ListCodeRepositories' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListCodeRepositories' {} a -> s {lastModifiedTimeAfter = a} :: ListCodeRepositories) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only Git repositories that were last modified
+-- before the specified time.
+listCodeRepositories_lastModifiedTimeBefore :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.UTCTime)
+listCodeRepositories_lastModifiedTimeBefore = Lens.lens (\ListCodeRepositories' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListCodeRepositories' {} a -> s {lastModifiedTimeBefore = a} :: ListCodeRepositories) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of Git repositories to return in the response.
+listCodeRepositories_maxResults :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.Natural)
+listCodeRepositories_maxResults = Lens.lens (\ListCodeRepositories' {maxResults} -> maxResults) (\s@ListCodeRepositories' {} a -> s {maxResults = a} :: ListCodeRepositories)
+
+-- | A string in the Git repositories name. This filter returns only
+-- repositories whose name contains the specified string.
+listCodeRepositories_nameContains :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.Text)
+listCodeRepositories_nameContains = Lens.lens (\ListCodeRepositories' {nameContains} -> nameContains) (\s@ListCodeRepositories' {} a -> s {nameContains = a} :: ListCodeRepositories)
+
+-- | If the result of a @ListCodeRepositoriesOutput@ request was truncated,
+-- the response includes a @NextToken@. To get the next set of Git
+-- repositories, use the token in the next request.
+listCodeRepositories_nextToken :: Lens.Lens' ListCodeRepositories (Prelude.Maybe Prelude.Text)
+listCodeRepositories_nextToken = Lens.lens (\ListCodeRepositories' {nextToken} -> nextToken) (\s@ListCodeRepositories' {} a -> s {nextToken = a} :: ListCodeRepositories)
+
+-- | The field to sort results by. The default is @Name@.
+listCodeRepositories_sortBy :: Lens.Lens' ListCodeRepositories (Prelude.Maybe CodeRepositorySortBy)
+listCodeRepositories_sortBy = Lens.lens (\ListCodeRepositories' {sortBy} -> sortBy) (\s@ListCodeRepositories' {} a -> s {sortBy = a} :: ListCodeRepositories)
+
+-- | The sort order for results. The default is @Ascending@.
+listCodeRepositories_sortOrder :: Lens.Lens' ListCodeRepositories (Prelude.Maybe CodeRepositorySortOrder)
+listCodeRepositories_sortOrder = Lens.lens (\ListCodeRepositories' {sortOrder} -> sortOrder) (\s@ListCodeRepositories' {} a -> s {sortOrder = a} :: ListCodeRepositories)
+
+instance Core.AWSPager ListCodeRepositories where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCodeRepositoriesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listCodeRepositoriesResponse_codeRepositorySummaryList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCodeRepositories_nextToken
+          Lens..~ rs
+          Lens.^? listCodeRepositoriesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCodeRepositories where
+  type
+    AWSResponse ListCodeRepositories =
+      ListCodeRepositoriesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCodeRepositoriesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "CodeRepositorySummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListCodeRepositories where
+  hashWithSalt _salt ListCodeRepositories' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListCodeRepositories where
+  rnf ListCodeRepositories' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListCodeRepositories where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListCodeRepositories" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCodeRepositories where
+  toJSON ListCodeRepositories' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListCodeRepositories where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListCodeRepositories where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCodeRepositoriesResponse' smart constructor.
+data ListCodeRepositoriesResponse = ListCodeRepositoriesResponse'
+  { -- | If the result of a @ListCodeRepositoriesOutput@ request was truncated,
+    -- the response includes a @NextToken@. To get the next set of Git
+    -- repositories, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Gets a list of summaries of the Git repositories. Each summary specifies
+    -- the following values for the repository:
+    --
+    -- -   Name
+    --
+    -- -   Amazon Resource Name (ARN)
+    --
+    -- -   Creation time
+    --
+    -- -   Last modified time
+    --
+    -- -   Configuration information, including the URL location of the
+    --     repository and the ARN of the Amazon Web Services Secrets Manager
+    --     secret that contains the credentials used to access the repository.
+    codeRepositorySummaryList :: [CodeRepositorySummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCodeRepositoriesResponse' 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:
+--
+-- 'nextToken', 'listCodeRepositoriesResponse_nextToken' - If the result of a @ListCodeRepositoriesOutput@ request was truncated,
+-- the response includes a @NextToken@. To get the next set of Git
+-- repositories, use the token in the next request.
+--
+-- 'httpStatus', 'listCodeRepositoriesResponse_httpStatus' - The response's http status code.
+--
+-- 'codeRepositorySummaryList', 'listCodeRepositoriesResponse_codeRepositorySummaryList' - Gets a list of summaries of the Git repositories. Each summary specifies
+-- the following values for the repository:
+--
+-- -   Name
+--
+-- -   Amazon Resource Name (ARN)
+--
+-- -   Creation time
+--
+-- -   Last modified time
+--
+-- -   Configuration information, including the URL location of the
+--     repository and the ARN of the Amazon Web Services Secrets Manager
+--     secret that contains the credentials used to access the repository.
+newListCodeRepositoriesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCodeRepositoriesResponse
+newListCodeRepositoriesResponse pHttpStatus_ =
+  ListCodeRepositoriesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      codeRepositorySummaryList = Prelude.mempty
+    }
+
+-- | If the result of a @ListCodeRepositoriesOutput@ request was truncated,
+-- the response includes a @NextToken@. To get the next set of Git
+-- repositories, use the token in the next request.
+listCodeRepositoriesResponse_nextToken :: Lens.Lens' ListCodeRepositoriesResponse (Prelude.Maybe Prelude.Text)
+listCodeRepositoriesResponse_nextToken = Lens.lens (\ListCodeRepositoriesResponse' {nextToken} -> nextToken) (\s@ListCodeRepositoriesResponse' {} a -> s {nextToken = a} :: ListCodeRepositoriesResponse)
+
+-- | The response's http status code.
+listCodeRepositoriesResponse_httpStatus :: Lens.Lens' ListCodeRepositoriesResponse Prelude.Int
+listCodeRepositoriesResponse_httpStatus = Lens.lens (\ListCodeRepositoriesResponse' {httpStatus} -> httpStatus) (\s@ListCodeRepositoriesResponse' {} a -> s {httpStatus = a} :: ListCodeRepositoriesResponse)
+
+-- | Gets a list of summaries of the Git repositories. Each summary specifies
+-- the following values for the repository:
+--
+-- -   Name
+--
+-- -   Amazon Resource Name (ARN)
+--
+-- -   Creation time
+--
+-- -   Last modified time
+--
+-- -   Configuration information, including the URL location of the
+--     repository and the ARN of the Amazon Web Services Secrets Manager
+--     secret that contains the credentials used to access the repository.
+listCodeRepositoriesResponse_codeRepositorySummaryList :: Lens.Lens' ListCodeRepositoriesResponse [CodeRepositorySummary]
+listCodeRepositoriesResponse_codeRepositorySummaryList = Lens.lens (\ListCodeRepositoriesResponse' {codeRepositorySummaryList} -> codeRepositorySummaryList) (\s@ListCodeRepositoriesResponse' {} a -> s {codeRepositorySummaryList = a} :: ListCodeRepositoriesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListCodeRepositoriesResponse where
+  rnf ListCodeRepositoriesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf codeRepositorySummaryList
diff --git a/gen/Amazonka/SageMaker/ListCompilationJobs.hs b/gen/Amazonka/SageMaker/ListCompilationJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListCompilationJobs.hs
@@ -0,0 +1,368 @@
+{-# 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.ListCompilationJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists model compilation jobs that satisfy various filters.
+--
+-- To create a model compilation job, use CreateCompilationJob. To get
+-- information about a particular model compilation job you have created,
+-- use DescribeCompilationJob.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListCompilationJobs
+  ( -- * Creating a Request
+    ListCompilationJobs (..),
+    newListCompilationJobs,
+
+    -- * Request Lenses
+    listCompilationJobs_creationTimeAfter,
+    listCompilationJobs_creationTimeBefore,
+    listCompilationJobs_lastModifiedTimeAfter,
+    listCompilationJobs_lastModifiedTimeBefore,
+    listCompilationJobs_maxResults,
+    listCompilationJobs_nameContains,
+    listCompilationJobs_nextToken,
+    listCompilationJobs_sortBy,
+    listCompilationJobs_sortOrder,
+    listCompilationJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListCompilationJobsResponse (..),
+    newListCompilationJobsResponse,
+
+    -- * Response Lenses
+    listCompilationJobsResponse_nextToken,
+    listCompilationJobsResponse_httpStatus,
+    listCompilationJobsResponse_compilationJobSummaries,
+  )
+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:/ 'newListCompilationJobs' smart constructor.
+data ListCompilationJobs = ListCompilationJobs'
+  { -- | A filter that returns the model compilation jobs that were created after
+    -- a specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns the model compilation jobs that were created
+    -- before a specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns the model compilation jobs that were modified
+    -- after a specified time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns the model compilation jobs that were modified
+    -- before a specified time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of model compilation jobs to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter that returns the model compilation jobs whose name contains a
+    -- specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListCompilationJobs@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of model compilation jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field by which to sort results. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe ListCompilationJobsSortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves model compilation jobs with a specific
+    -- DescribeCompilationJobResponse$CompilationJobStatus status.
+    statusEquals :: Prelude.Maybe CompilationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCompilationJobs' 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:
+--
+-- 'creationTimeAfter', 'listCompilationJobs_creationTimeAfter' - A filter that returns the model compilation jobs that were created after
+-- a specified time.
+--
+-- 'creationTimeBefore', 'listCompilationJobs_creationTimeBefore' - A filter that returns the model compilation jobs that were created
+-- before a specified time.
+--
+-- 'lastModifiedTimeAfter', 'listCompilationJobs_lastModifiedTimeAfter' - A filter that returns the model compilation jobs that were modified
+-- after a specified time.
+--
+-- 'lastModifiedTimeBefore', 'listCompilationJobs_lastModifiedTimeBefore' - A filter that returns the model compilation jobs that were modified
+-- before a specified time.
+--
+-- 'maxResults', 'listCompilationJobs_maxResults' - The maximum number of model compilation jobs to return in the response.
+--
+-- 'nameContains', 'listCompilationJobs_nameContains' - A filter that returns the model compilation jobs whose name contains a
+-- specified string.
+--
+-- 'nextToken', 'listCompilationJobs_nextToken' - If the result of the previous @ListCompilationJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model compilation jobs, use the token in the next request.
+--
+-- 'sortBy', 'listCompilationJobs_sortBy' - The field by which to sort results. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listCompilationJobs_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listCompilationJobs_statusEquals' - A filter that retrieves model compilation jobs with a specific
+-- DescribeCompilationJobResponse$CompilationJobStatus status.
+newListCompilationJobs ::
+  ListCompilationJobs
+newListCompilationJobs =
+  ListCompilationJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns the model compilation jobs that were created after
+-- a specified time.
+listCompilationJobs_creationTimeAfter :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.UTCTime)
+listCompilationJobs_creationTimeAfter = Lens.lens (\ListCompilationJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListCompilationJobs' {} a -> s {creationTimeAfter = a} :: ListCompilationJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns the model compilation jobs that were created
+-- before a specified time.
+listCompilationJobs_creationTimeBefore :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.UTCTime)
+listCompilationJobs_creationTimeBefore = Lens.lens (\ListCompilationJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListCompilationJobs' {} a -> s {creationTimeBefore = a} :: ListCompilationJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns the model compilation jobs that were modified
+-- after a specified time.
+listCompilationJobs_lastModifiedTimeAfter :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.UTCTime)
+listCompilationJobs_lastModifiedTimeAfter = Lens.lens (\ListCompilationJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListCompilationJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListCompilationJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns the model compilation jobs that were modified
+-- before a specified time.
+listCompilationJobs_lastModifiedTimeBefore :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.UTCTime)
+listCompilationJobs_lastModifiedTimeBefore = Lens.lens (\ListCompilationJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListCompilationJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListCompilationJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of model compilation jobs to return in the response.
+listCompilationJobs_maxResults :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.Natural)
+listCompilationJobs_maxResults = Lens.lens (\ListCompilationJobs' {maxResults} -> maxResults) (\s@ListCompilationJobs' {} a -> s {maxResults = a} :: ListCompilationJobs)
+
+-- | A filter that returns the model compilation jobs whose name contains a
+-- specified string.
+listCompilationJobs_nameContains :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.Text)
+listCompilationJobs_nameContains = Lens.lens (\ListCompilationJobs' {nameContains} -> nameContains) (\s@ListCompilationJobs' {} a -> s {nameContains = a} :: ListCompilationJobs)
+
+-- | If the result of the previous @ListCompilationJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model compilation jobs, use the token in the next request.
+listCompilationJobs_nextToken :: Lens.Lens' ListCompilationJobs (Prelude.Maybe Prelude.Text)
+listCompilationJobs_nextToken = Lens.lens (\ListCompilationJobs' {nextToken} -> nextToken) (\s@ListCompilationJobs' {} a -> s {nextToken = a} :: ListCompilationJobs)
+
+-- | The field by which to sort results. The default is @CreationTime@.
+listCompilationJobs_sortBy :: Lens.Lens' ListCompilationJobs (Prelude.Maybe ListCompilationJobsSortBy)
+listCompilationJobs_sortBy = Lens.lens (\ListCompilationJobs' {sortBy} -> sortBy) (\s@ListCompilationJobs' {} a -> s {sortBy = a} :: ListCompilationJobs)
+
+-- | The sort order for results. The default is @Ascending@.
+listCompilationJobs_sortOrder :: Lens.Lens' ListCompilationJobs (Prelude.Maybe SortOrder)
+listCompilationJobs_sortOrder = Lens.lens (\ListCompilationJobs' {sortOrder} -> sortOrder) (\s@ListCompilationJobs' {} a -> s {sortOrder = a} :: ListCompilationJobs)
+
+-- | A filter that retrieves model compilation jobs with a specific
+-- DescribeCompilationJobResponse$CompilationJobStatus status.
+listCompilationJobs_statusEquals :: Lens.Lens' ListCompilationJobs (Prelude.Maybe CompilationJobStatus)
+listCompilationJobs_statusEquals = Lens.lens (\ListCompilationJobs' {statusEquals} -> statusEquals) (\s@ListCompilationJobs' {} a -> s {statusEquals = a} :: ListCompilationJobs)
+
+instance Core.AWSPager ListCompilationJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCompilationJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listCompilationJobsResponse_compilationJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCompilationJobs_nextToken
+          Lens..~ rs
+          Lens.^? listCompilationJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCompilationJobs where
+  type
+    AWSResponse ListCompilationJobs =
+      ListCompilationJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCompilationJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "CompilationJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListCompilationJobs where
+  hashWithSalt _salt ListCompilationJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListCompilationJobs where
+  rnf ListCompilationJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListCompilationJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListCompilationJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCompilationJobs where
+  toJSON ListCompilationJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListCompilationJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListCompilationJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCompilationJobsResponse' smart constructor.
+data ListCompilationJobsResponse = ListCompilationJobsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this @NextToken@.
+    -- To retrieve the next set of model compilation jobs, use this token in
+    -- the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of CompilationJobSummary objects, each describing a model
+    -- compilation job.
+    compilationJobSummaries :: [CompilationJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCompilationJobsResponse' 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:
+--
+-- 'nextToken', 'listCompilationJobsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this @NextToken@.
+-- To retrieve the next set of model compilation jobs, use this token in
+-- the next request.
+--
+-- 'httpStatus', 'listCompilationJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'compilationJobSummaries', 'listCompilationJobsResponse_compilationJobSummaries' - An array of CompilationJobSummary objects, each describing a model
+-- compilation job.
+newListCompilationJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCompilationJobsResponse
+newListCompilationJobsResponse pHttpStatus_ =
+  ListCompilationJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      compilationJobSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this @NextToken@.
+-- To retrieve the next set of model compilation jobs, use this token in
+-- the next request.
+listCompilationJobsResponse_nextToken :: Lens.Lens' ListCompilationJobsResponse (Prelude.Maybe Prelude.Text)
+listCompilationJobsResponse_nextToken = Lens.lens (\ListCompilationJobsResponse' {nextToken} -> nextToken) (\s@ListCompilationJobsResponse' {} a -> s {nextToken = a} :: ListCompilationJobsResponse)
+
+-- | The response's http status code.
+listCompilationJobsResponse_httpStatus :: Lens.Lens' ListCompilationJobsResponse Prelude.Int
+listCompilationJobsResponse_httpStatus = Lens.lens (\ListCompilationJobsResponse' {httpStatus} -> httpStatus) (\s@ListCompilationJobsResponse' {} a -> s {httpStatus = a} :: ListCompilationJobsResponse)
+
+-- | An array of CompilationJobSummary objects, each describing a model
+-- compilation job.
+listCompilationJobsResponse_compilationJobSummaries :: Lens.Lens' ListCompilationJobsResponse [CompilationJobSummary]
+listCompilationJobsResponse_compilationJobSummaries = Lens.lens (\ListCompilationJobsResponse' {compilationJobSummaries} -> compilationJobSummaries) (\s@ListCompilationJobsResponse' {} a -> s {compilationJobSummaries = a} :: ListCompilationJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListCompilationJobsResponse where
+  rnf ListCompilationJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf compilationJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListContexts.hs b/gen/Amazonka/SageMaker/ListContexts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListContexts.hs
@@ -0,0 +1,309 @@
+{-# 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.ListContexts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the contexts in your account and their properties.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListContexts
+  ( -- * Creating a Request
+    ListContexts (..),
+    newListContexts,
+
+    -- * Request Lenses
+    listContexts_contextType,
+    listContexts_createdAfter,
+    listContexts_createdBefore,
+    listContexts_maxResults,
+    listContexts_nextToken,
+    listContexts_sortBy,
+    listContexts_sortOrder,
+    listContexts_sourceUri,
+
+    -- * Destructuring the Response
+    ListContextsResponse (..),
+    newListContextsResponse,
+
+    -- * Response Lenses
+    listContextsResponse_contextSummaries,
+    listContextsResponse_nextToken,
+    listContextsResponse_httpStatus,
+  )
+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:/ 'newListContexts' smart constructor.
+data ListContexts = ListContexts'
+  { -- | A filter that returns only contexts of the specified type.
+    contextType :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only contexts created on or after the specified
+    -- time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only contexts created on or before the specified
+    -- time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of contexts to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListContexts@ didn\'t return the full set of
+    -- contexts, the call returns a token for getting the next set of contexts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortContextsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only contexts with the specified source URI.
+    sourceUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListContexts' 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:
+--
+-- 'contextType', 'listContexts_contextType' - A filter that returns only contexts of the specified type.
+--
+-- 'createdAfter', 'listContexts_createdAfter' - A filter that returns only contexts created on or after the specified
+-- time.
+--
+-- 'createdBefore', 'listContexts_createdBefore' - A filter that returns only contexts created on or before the specified
+-- time.
+--
+-- 'maxResults', 'listContexts_maxResults' - The maximum number of contexts to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listContexts_nextToken' - If the previous call to @ListContexts@ didn\'t return the full set of
+-- contexts, the call returns a token for getting the next set of contexts.
+--
+-- 'sortBy', 'listContexts_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listContexts_sortOrder' - The sort order. The default value is @Descending@.
+--
+-- 'sourceUri', 'listContexts_sourceUri' - A filter that returns only contexts with the specified source URI.
+newListContexts ::
+  ListContexts
+newListContexts =
+  ListContexts'
+    { contextType = Prelude.Nothing,
+      createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      sourceUri = Prelude.Nothing
+    }
+
+-- | A filter that returns only contexts of the specified type.
+listContexts_contextType :: Lens.Lens' ListContexts (Prelude.Maybe Prelude.Text)
+listContexts_contextType = Lens.lens (\ListContexts' {contextType} -> contextType) (\s@ListContexts' {} a -> s {contextType = a} :: ListContexts)
+
+-- | A filter that returns only contexts created on or after the specified
+-- time.
+listContexts_createdAfter :: Lens.Lens' ListContexts (Prelude.Maybe Prelude.UTCTime)
+listContexts_createdAfter = Lens.lens (\ListContexts' {createdAfter} -> createdAfter) (\s@ListContexts' {} a -> s {createdAfter = a} :: ListContexts) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only contexts created on or before the specified
+-- time.
+listContexts_createdBefore :: Lens.Lens' ListContexts (Prelude.Maybe Prelude.UTCTime)
+listContexts_createdBefore = Lens.lens (\ListContexts' {createdBefore} -> createdBefore) (\s@ListContexts' {} a -> s {createdBefore = a} :: ListContexts) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of contexts to return in the response. The default
+-- value is 10.
+listContexts_maxResults :: Lens.Lens' ListContexts (Prelude.Maybe Prelude.Natural)
+listContexts_maxResults = Lens.lens (\ListContexts' {maxResults} -> maxResults) (\s@ListContexts' {} a -> s {maxResults = a} :: ListContexts)
+
+-- | If the previous call to @ListContexts@ didn\'t return the full set of
+-- contexts, the call returns a token for getting the next set of contexts.
+listContexts_nextToken :: Lens.Lens' ListContexts (Prelude.Maybe Prelude.Text)
+listContexts_nextToken = Lens.lens (\ListContexts' {nextToken} -> nextToken) (\s@ListContexts' {} a -> s {nextToken = a} :: ListContexts)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listContexts_sortBy :: Lens.Lens' ListContexts (Prelude.Maybe SortContextsBy)
+listContexts_sortBy = Lens.lens (\ListContexts' {sortBy} -> sortBy) (\s@ListContexts' {} a -> s {sortBy = a} :: ListContexts)
+
+-- | The sort order. The default value is @Descending@.
+listContexts_sortOrder :: Lens.Lens' ListContexts (Prelude.Maybe SortOrder)
+listContexts_sortOrder = Lens.lens (\ListContexts' {sortOrder} -> sortOrder) (\s@ListContexts' {} a -> s {sortOrder = a} :: ListContexts)
+
+-- | A filter that returns only contexts with the specified source URI.
+listContexts_sourceUri :: Lens.Lens' ListContexts (Prelude.Maybe Prelude.Text)
+listContexts_sourceUri = Lens.lens (\ListContexts' {sourceUri} -> sourceUri) (\s@ListContexts' {} a -> s {sourceUri = a} :: ListContexts)
+
+instance Core.AWSPager ListContexts where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listContextsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listContextsResponse_contextSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listContexts_nextToken
+          Lens..~ rs
+          Lens.^? listContextsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListContexts where
+  type AWSResponse ListContexts = ListContextsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListContextsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ContextSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListContexts where
+  hashWithSalt _salt ListContexts' {..} =
+    _salt
+      `Prelude.hashWithSalt` contextType
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` sourceUri
+
+instance Prelude.NFData ListContexts where
+  rnf ListContexts' {..} =
+    Prelude.rnf contextType
+      `Prelude.seq` Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf sourceUri
+
+instance Data.ToHeaders ListContexts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListContexts" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListContexts where
+  toJSON ListContexts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContextType" Data..=) Prelude.<$> contextType,
+            ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SourceUri" Data..=) Prelude.<$> sourceUri
+          ]
+      )
+
+instance Data.ToPath ListContexts where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListContexts where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListContextsResponse' smart constructor.
+data ListContextsResponse = ListContextsResponse'
+  { -- | A list of contexts and their properties.
+    contextSummaries :: Prelude.Maybe [ContextSummary],
+    -- | A token for getting the next set of contexts, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListContextsResponse' 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:
+--
+-- 'contextSummaries', 'listContextsResponse_contextSummaries' - A list of contexts and their properties.
+--
+-- 'nextToken', 'listContextsResponse_nextToken' - A token for getting the next set of contexts, if there are any.
+--
+-- 'httpStatus', 'listContextsResponse_httpStatus' - The response's http status code.
+newListContextsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListContextsResponse
+newListContextsResponse pHttpStatus_ =
+  ListContextsResponse'
+    { contextSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of contexts and their properties.
+listContextsResponse_contextSummaries :: Lens.Lens' ListContextsResponse (Prelude.Maybe [ContextSummary])
+listContextsResponse_contextSummaries = Lens.lens (\ListContextsResponse' {contextSummaries} -> contextSummaries) (\s@ListContextsResponse' {} a -> s {contextSummaries = a} :: ListContextsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of contexts, if there are any.
+listContextsResponse_nextToken :: Lens.Lens' ListContextsResponse (Prelude.Maybe Prelude.Text)
+listContextsResponse_nextToken = Lens.lens (\ListContextsResponse' {nextToken} -> nextToken) (\s@ListContextsResponse' {} a -> s {nextToken = a} :: ListContextsResponse)
+
+-- | The response's http status code.
+listContextsResponse_httpStatus :: Lens.Lens' ListContextsResponse Prelude.Int
+listContextsResponse_httpStatus = Lens.lens (\ListContextsResponse' {httpStatus} -> httpStatus) (\s@ListContextsResponse' {} a -> s {httpStatus = a} :: ListContextsResponse)
+
+instance Prelude.NFData ListContextsResponse where
+  rnf ListContextsResponse' {..} =
+    Prelude.rnf contextSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListDataQualityJobDefinitions.hs b/gen/Amazonka/SageMaker/ListDataQualityJobDefinitions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListDataQualityJobDefinitions.hs
@@ -0,0 +1,346 @@
+{-# 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.ListDataQualityJobDefinitions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the data quality job definitions in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListDataQualityJobDefinitions
+  ( -- * Creating a Request
+    ListDataQualityJobDefinitions (..),
+    newListDataQualityJobDefinitions,
+
+    -- * Request Lenses
+    listDataQualityJobDefinitions_creationTimeAfter,
+    listDataQualityJobDefinitions_creationTimeBefore,
+    listDataQualityJobDefinitions_endpointName,
+    listDataQualityJobDefinitions_maxResults,
+    listDataQualityJobDefinitions_nameContains,
+    listDataQualityJobDefinitions_nextToken,
+    listDataQualityJobDefinitions_sortBy,
+    listDataQualityJobDefinitions_sortOrder,
+
+    -- * Destructuring the Response
+    ListDataQualityJobDefinitionsResponse (..),
+    newListDataQualityJobDefinitionsResponse,
+
+    -- * Response Lenses
+    listDataQualityJobDefinitionsResponse_nextToken,
+    listDataQualityJobDefinitionsResponse_httpStatus,
+    listDataQualityJobDefinitionsResponse_jobDefinitionSummaries,
+  )
+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:/ 'newListDataQualityJobDefinitions' smart constructor.
+data ListDataQualityJobDefinitions = ListDataQualityJobDefinitions'
+  { -- | A filter that returns only data quality monitoring job definitions
+    -- created after the specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only data quality monitoring job definitions
+    -- created before the specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that lists the data quality job definitions associated with the
+    -- specified endpoint.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of data quality monitoring job definitions to return
+    -- in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the data quality monitoring job definition name. This filter
+    -- returns only data quality monitoring job definitions whose name contains
+    -- the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListDataQualityJobDefinitions@ request
+    -- was truncated, the response includes a @NextToken@. To retrieve the next
+    -- set of transform jobs, use the token in the next request.>
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringJobDefinitionSortKey,
+    -- | The sort order for results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataQualityJobDefinitions' 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:
+--
+-- 'creationTimeAfter', 'listDataQualityJobDefinitions_creationTimeAfter' - A filter that returns only data quality monitoring job definitions
+-- created after the specified time.
+--
+-- 'creationTimeBefore', 'listDataQualityJobDefinitions_creationTimeBefore' - A filter that returns only data quality monitoring job definitions
+-- created before the specified time.
+--
+-- 'endpointName', 'listDataQualityJobDefinitions_endpointName' - A filter that lists the data quality job definitions associated with the
+-- specified endpoint.
+--
+-- 'maxResults', 'listDataQualityJobDefinitions_maxResults' - The maximum number of data quality monitoring job definitions to return
+-- in the response.
+--
+-- 'nameContains', 'listDataQualityJobDefinitions_nameContains' - A string in the data quality monitoring job definition name. This filter
+-- returns only data quality monitoring job definitions whose name contains
+-- the specified string.
+--
+-- 'nextToken', 'listDataQualityJobDefinitions_nextToken' - If the result of the previous @ListDataQualityJobDefinitions@ request
+-- was truncated, the response includes a @NextToken@. To retrieve the next
+-- set of transform jobs, use the token in the next request.>
+--
+-- 'sortBy', 'listDataQualityJobDefinitions_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listDataQualityJobDefinitions_sortOrder' - The sort order for results. The default is @Descending@.
+newListDataQualityJobDefinitions ::
+  ListDataQualityJobDefinitions
+newListDataQualityJobDefinitions =
+  ListDataQualityJobDefinitions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only data quality monitoring job definitions
+-- created after the specified time.
+listDataQualityJobDefinitions_creationTimeAfter :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listDataQualityJobDefinitions_creationTimeAfter = Lens.lens (\ListDataQualityJobDefinitions' {creationTimeAfter} -> creationTimeAfter) (\s@ListDataQualityJobDefinitions' {} a -> s {creationTimeAfter = a} :: ListDataQualityJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only data quality monitoring job definitions
+-- created before the specified time.
+listDataQualityJobDefinitions_creationTimeBefore :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listDataQualityJobDefinitions_creationTimeBefore = Lens.lens (\ListDataQualityJobDefinitions' {creationTimeBefore} -> creationTimeBefore) (\s@ListDataQualityJobDefinitions' {} a -> s {creationTimeBefore = a} :: ListDataQualityJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that lists the data quality job definitions associated with the
+-- specified endpoint.
+listDataQualityJobDefinitions_endpointName :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe Prelude.Text)
+listDataQualityJobDefinitions_endpointName = Lens.lens (\ListDataQualityJobDefinitions' {endpointName} -> endpointName) (\s@ListDataQualityJobDefinitions' {} a -> s {endpointName = a} :: ListDataQualityJobDefinitions)
+
+-- | The maximum number of data quality monitoring job definitions to return
+-- in the response.
+listDataQualityJobDefinitions_maxResults :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe Prelude.Natural)
+listDataQualityJobDefinitions_maxResults = Lens.lens (\ListDataQualityJobDefinitions' {maxResults} -> maxResults) (\s@ListDataQualityJobDefinitions' {} a -> s {maxResults = a} :: ListDataQualityJobDefinitions)
+
+-- | A string in the data quality monitoring job definition name. This filter
+-- returns only data quality monitoring job definitions whose name contains
+-- the specified string.
+listDataQualityJobDefinitions_nameContains :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe Prelude.Text)
+listDataQualityJobDefinitions_nameContains = Lens.lens (\ListDataQualityJobDefinitions' {nameContains} -> nameContains) (\s@ListDataQualityJobDefinitions' {} a -> s {nameContains = a} :: ListDataQualityJobDefinitions)
+
+-- | If the result of the previous @ListDataQualityJobDefinitions@ request
+-- was truncated, the response includes a @NextToken@. To retrieve the next
+-- set of transform jobs, use the token in the next request.>
+listDataQualityJobDefinitions_nextToken :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe Prelude.Text)
+listDataQualityJobDefinitions_nextToken = Lens.lens (\ListDataQualityJobDefinitions' {nextToken} -> nextToken) (\s@ListDataQualityJobDefinitions' {} a -> s {nextToken = a} :: ListDataQualityJobDefinitions)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listDataQualityJobDefinitions_sortBy :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe MonitoringJobDefinitionSortKey)
+listDataQualityJobDefinitions_sortBy = Lens.lens (\ListDataQualityJobDefinitions' {sortBy} -> sortBy) (\s@ListDataQualityJobDefinitions' {} a -> s {sortBy = a} :: ListDataQualityJobDefinitions)
+
+-- | The sort order for results. The default is @Descending@.
+listDataQualityJobDefinitions_sortOrder :: Lens.Lens' ListDataQualityJobDefinitions (Prelude.Maybe SortOrder)
+listDataQualityJobDefinitions_sortOrder = Lens.lens (\ListDataQualityJobDefinitions' {sortOrder} -> sortOrder) (\s@ListDataQualityJobDefinitions' {} a -> s {sortOrder = a} :: ListDataQualityJobDefinitions)
+
+instance Core.AWSPager ListDataQualityJobDefinitions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDataQualityJobDefinitionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listDataQualityJobDefinitionsResponse_jobDefinitionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDataQualityJobDefinitions_nextToken
+          Lens..~ rs
+          Lens.^? listDataQualityJobDefinitionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListDataQualityJobDefinitions
+  where
+  type
+    AWSResponse ListDataQualityJobDefinitions =
+      ListDataQualityJobDefinitionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDataQualityJobDefinitionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "JobDefinitionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    ListDataQualityJobDefinitions
+  where
+  hashWithSalt _salt ListDataQualityJobDefinitions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListDataQualityJobDefinitions where
+  rnf ListDataQualityJobDefinitions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListDataQualityJobDefinitions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListDataQualityJobDefinitions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDataQualityJobDefinitions where
+  toJSON ListDataQualityJobDefinitions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("EndpointName" Data..=) Prelude.<$> endpointName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListDataQualityJobDefinitions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDataQualityJobDefinitions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDataQualityJobDefinitionsResponse' smart constructor.
+data ListDataQualityJobDefinitionsResponse = ListDataQualityJobDefinitionsResponse'
+  { -- | If the result of the previous @ListDataQualityJobDefinitions@ request
+    -- was truncated, the response includes a @NextToken@. To retrieve the next
+    -- set of data quality monitoring job definitions, use the token in the
+    -- next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of data quality monitoring job definitions.
+    jobDefinitionSummaries :: [MonitoringJobDefinitionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataQualityJobDefinitionsResponse' 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:
+--
+-- 'nextToken', 'listDataQualityJobDefinitionsResponse_nextToken' - If the result of the previous @ListDataQualityJobDefinitions@ request
+-- was truncated, the response includes a @NextToken@. To retrieve the next
+-- set of data quality monitoring job definitions, use the token in the
+-- next request.
+--
+-- 'httpStatus', 'listDataQualityJobDefinitionsResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionSummaries', 'listDataQualityJobDefinitionsResponse_jobDefinitionSummaries' - A list of data quality monitoring job definitions.
+newListDataQualityJobDefinitionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDataQualityJobDefinitionsResponse
+newListDataQualityJobDefinitionsResponse pHttpStatus_ =
+  ListDataQualityJobDefinitionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      jobDefinitionSummaries =
+        Prelude.mempty
+    }
+
+-- | If the result of the previous @ListDataQualityJobDefinitions@ request
+-- was truncated, the response includes a @NextToken@. To retrieve the next
+-- set of data quality monitoring job definitions, use the token in the
+-- next request.
+listDataQualityJobDefinitionsResponse_nextToken :: Lens.Lens' ListDataQualityJobDefinitionsResponse (Prelude.Maybe Prelude.Text)
+listDataQualityJobDefinitionsResponse_nextToken = Lens.lens (\ListDataQualityJobDefinitionsResponse' {nextToken} -> nextToken) (\s@ListDataQualityJobDefinitionsResponse' {} a -> s {nextToken = a} :: ListDataQualityJobDefinitionsResponse)
+
+-- | The response's http status code.
+listDataQualityJobDefinitionsResponse_httpStatus :: Lens.Lens' ListDataQualityJobDefinitionsResponse Prelude.Int
+listDataQualityJobDefinitionsResponse_httpStatus = Lens.lens (\ListDataQualityJobDefinitionsResponse' {httpStatus} -> httpStatus) (\s@ListDataQualityJobDefinitionsResponse' {} a -> s {httpStatus = a} :: ListDataQualityJobDefinitionsResponse)
+
+-- | A list of data quality monitoring job definitions.
+listDataQualityJobDefinitionsResponse_jobDefinitionSummaries :: Lens.Lens' ListDataQualityJobDefinitionsResponse [MonitoringJobDefinitionSummary]
+listDataQualityJobDefinitionsResponse_jobDefinitionSummaries = Lens.lens (\ListDataQualityJobDefinitionsResponse' {jobDefinitionSummaries} -> jobDefinitionSummaries) (\s@ListDataQualityJobDefinitionsResponse' {} a -> s {jobDefinitionSummaries = a} :: ListDataQualityJobDefinitionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListDataQualityJobDefinitionsResponse
+  where
+  rnf ListDataQualityJobDefinitionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionSummaries
diff --git a/gen/Amazonka/SageMaker/ListDeviceFleets.hs b/gen/Amazonka/SageMaker/ListDeviceFleets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListDeviceFleets.hs
@@ -0,0 +1,325 @@
+{-# 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.ListDeviceFleets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of devices in the fleet.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListDeviceFleets
+  ( -- * Creating a Request
+    ListDeviceFleets (..),
+    newListDeviceFleets,
+
+    -- * Request Lenses
+    listDeviceFleets_creationTimeAfter,
+    listDeviceFleets_creationTimeBefore,
+    listDeviceFleets_lastModifiedTimeAfter,
+    listDeviceFleets_lastModifiedTimeBefore,
+    listDeviceFleets_maxResults,
+    listDeviceFleets_nameContains,
+    listDeviceFleets_nextToken,
+    listDeviceFleets_sortBy,
+    listDeviceFleets_sortOrder,
+
+    -- * Destructuring the Response
+    ListDeviceFleetsResponse (..),
+    newListDeviceFleetsResponse,
+
+    -- * Response Lenses
+    listDeviceFleetsResponse_nextToken,
+    listDeviceFleetsResponse_httpStatus,
+    listDeviceFleetsResponse_deviceFleetSummaries,
+  )
+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:/ 'newListDeviceFleets' smart constructor.
+data ListDeviceFleets = ListDeviceFleets'
+  { -- | Filter fleets where packaging job was created after specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Filter fleets where the edge packaging job was created before specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Select fleets where the job was updated after X
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Select fleets where the job was updated before X
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of results to select.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Filter for fleets containing this name in their fleet device name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The column to sort by.
+    sortBy :: Prelude.Maybe ListDeviceFleetsSortBy,
+    -- | What direction to sort in.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDeviceFleets' 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:
+--
+-- 'creationTimeAfter', 'listDeviceFleets_creationTimeAfter' - Filter fleets where packaging job was created after specified time.
+--
+-- 'creationTimeBefore', 'listDeviceFleets_creationTimeBefore' - Filter fleets where the edge packaging job was created before specified
+-- time.
+--
+-- 'lastModifiedTimeAfter', 'listDeviceFleets_lastModifiedTimeAfter' - Select fleets where the job was updated after X
+--
+-- 'lastModifiedTimeBefore', 'listDeviceFleets_lastModifiedTimeBefore' - Select fleets where the job was updated before X
+--
+-- 'maxResults', 'listDeviceFleets_maxResults' - The maximum number of results to select.
+--
+-- 'nameContains', 'listDeviceFleets_nameContains' - Filter for fleets containing this name in their fleet device name.
+--
+-- 'nextToken', 'listDeviceFleets_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'sortBy', 'listDeviceFleets_sortBy' - The column to sort by.
+--
+-- 'sortOrder', 'listDeviceFleets_sortOrder' - What direction to sort in.
+newListDeviceFleets ::
+  ListDeviceFleets
+newListDeviceFleets =
+  ListDeviceFleets'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | Filter fleets where packaging job was created after specified time.
+listDeviceFleets_creationTimeAfter :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.UTCTime)
+listDeviceFleets_creationTimeAfter = Lens.lens (\ListDeviceFleets' {creationTimeAfter} -> creationTimeAfter) (\s@ListDeviceFleets' {} a -> s {creationTimeAfter = a} :: ListDeviceFleets) Prelude.. Lens.mapping Data._Time
+
+-- | Filter fleets where the edge packaging job was created before specified
+-- time.
+listDeviceFleets_creationTimeBefore :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.UTCTime)
+listDeviceFleets_creationTimeBefore = Lens.lens (\ListDeviceFleets' {creationTimeBefore} -> creationTimeBefore) (\s@ListDeviceFleets' {} a -> s {creationTimeBefore = a} :: ListDeviceFleets) Prelude.. Lens.mapping Data._Time
+
+-- | Select fleets where the job was updated after X
+listDeviceFleets_lastModifiedTimeAfter :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.UTCTime)
+listDeviceFleets_lastModifiedTimeAfter = Lens.lens (\ListDeviceFleets' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListDeviceFleets' {} a -> s {lastModifiedTimeAfter = a} :: ListDeviceFleets) Prelude.. Lens.mapping Data._Time
+
+-- | Select fleets where the job was updated before X
+listDeviceFleets_lastModifiedTimeBefore :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.UTCTime)
+listDeviceFleets_lastModifiedTimeBefore = Lens.lens (\ListDeviceFleets' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListDeviceFleets' {} a -> s {lastModifiedTimeBefore = a} :: ListDeviceFleets) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of results to select.
+listDeviceFleets_maxResults :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.Int)
+listDeviceFleets_maxResults = Lens.lens (\ListDeviceFleets' {maxResults} -> maxResults) (\s@ListDeviceFleets' {} a -> s {maxResults = a} :: ListDeviceFleets)
+
+-- | Filter for fleets containing this name in their fleet device name.
+listDeviceFleets_nameContains :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.Text)
+listDeviceFleets_nameContains = Lens.lens (\ListDeviceFleets' {nameContains} -> nameContains) (\s@ListDeviceFleets' {} a -> s {nameContains = a} :: ListDeviceFleets)
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listDeviceFleets_nextToken :: Lens.Lens' ListDeviceFleets (Prelude.Maybe Prelude.Text)
+listDeviceFleets_nextToken = Lens.lens (\ListDeviceFleets' {nextToken} -> nextToken) (\s@ListDeviceFleets' {} a -> s {nextToken = a} :: ListDeviceFleets)
+
+-- | The column to sort by.
+listDeviceFleets_sortBy :: Lens.Lens' ListDeviceFleets (Prelude.Maybe ListDeviceFleetsSortBy)
+listDeviceFleets_sortBy = Lens.lens (\ListDeviceFleets' {sortBy} -> sortBy) (\s@ListDeviceFleets' {} a -> s {sortBy = a} :: ListDeviceFleets)
+
+-- | What direction to sort in.
+listDeviceFleets_sortOrder :: Lens.Lens' ListDeviceFleets (Prelude.Maybe SortOrder)
+listDeviceFleets_sortOrder = Lens.lens (\ListDeviceFleets' {sortOrder} -> sortOrder) (\s@ListDeviceFleets' {} a -> s {sortOrder = a} :: ListDeviceFleets)
+
+instance Core.AWSPager ListDeviceFleets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDeviceFleetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listDeviceFleetsResponse_deviceFleetSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDeviceFleets_nextToken
+          Lens..~ rs
+          Lens.^? listDeviceFleetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDeviceFleets where
+  type
+    AWSResponse ListDeviceFleets =
+      ListDeviceFleetsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDeviceFleetsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "DeviceFleetSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListDeviceFleets where
+  hashWithSalt _salt ListDeviceFleets' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListDeviceFleets where
+  rnf ListDeviceFleets' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListDeviceFleets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListDeviceFleets" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDeviceFleets where
+  toJSON ListDeviceFleets' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListDeviceFleets where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDeviceFleets where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDeviceFleetsResponse' smart constructor.
+data ListDeviceFleetsResponse = ListDeviceFleetsResponse'
+  { -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Summary of the device fleet.
+    deviceFleetSummaries :: [DeviceFleetSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDeviceFleetsResponse' 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:
+--
+-- 'nextToken', 'listDeviceFleetsResponse_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'httpStatus', 'listDeviceFleetsResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceFleetSummaries', 'listDeviceFleetsResponse_deviceFleetSummaries' - Summary of the device fleet.
+newListDeviceFleetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDeviceFleetsResponse
+newListDeviceFleetsResponse pHttpStatus_ =
+  ListDeviceFleetsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      deviceFleetSummaries = Prelude.mempty
+    }
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listDeviceFleetsResponse_nextToken :: Lens.Lens' ListDeviceFleetsResponse (Prelude.Maybe Prelude.Text)
+listDeviceFleetsResponse_nextToken = Lens.lens (\ListDeviceFleetsResponse' {nextToken} -> nextToken) (\s@ListDeviceFleetsResponse' {} a -> s {nextToken = a} :: ListDeviceFleetsResponse)
+
+-- | The response's http status code.
+listDeviceFleetsResponse_httpStatus :: Lens.Lens' ListDeviceFleetsResponse Prelude.Int
+listDeviceFleetsResponse_httpStatus = Lens.lens (\ListDeviceFleetsResponse' {httpStatus} -> httpStatus) (\s@ListDeviceFleetsResponse' {} a -> s {httpStatus = a} :: ListDeviceFleetsResponse)
+
+-- | Summary of the device fleet.
+listDeviceFleetsResponse_deviceFleetSummaries :: Lens.Lens' ListDeviceFleetsResponse [DeviceFleetSummary]
+listDeviceFleetsResponse_deviceFleetSummaries = Lens.lens (\ListDeviceFleetsResponse' {deviceFleetSummaries} -> deviceFleetSummaries) (\s@ListDeviceFleetsResponse' {} a -> s {deviceFleetSummaries = a} :: ListDeviceFleetsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListDeviceFleetsResponse where
+  rnf ListDeviceFleetsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceFleetSummaries
diff --git a/gen/Amazonka/SageMaker/ListDevices.hs b/gen/Amazonka/SageMaker/ListDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListDevices.hs
@@ -0,0 +1,265 @@
+{-# 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.ListDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A list of devices.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListDevices
+  ( -- * Creating a Request
+    ListDevices (..),
+    newListDevices,
+
+    -- * Request Lenses
+    listDevices_deviceFleetName,
+    listDevices_latestHeartbeatAfter,
+    listDevices_maxResults,
+    listDevices_modelName,
+    listDevices_nextToken,
+
+    -- * Destructuring the Response
+    ListDevicesResponse (..),
+    newListDevicesResponse,
+
+    -- * Response Lenses
+    listDevicesResponse_nextToken,
+    listDevicesResponse_httpStatus,
+    listDevicesResponse_deviceSummaries,
+  )
+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:/ 'newListDevices' smart constructor.
+data ListDevices = ListDevices'
+  { -- | Filter for fleets containing this name in their device fleet name.
+    deviceFleetName :: Prelude.Maybe Prelude.Text,
+    -- | Select fleets where the job was updated after X
+    latestHeartbeatAfter :: Prelude.Maybe Data.POSIX,
+    -- | Maximum number of results to select.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | A filter that searches devices that contains this name in any of their
+    -- models.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDevices' 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:
+--
+-- 'deviceFleetName', 'listDevices_deviceFleetName' - Filter for fleets containing this name in their device fleet name.
+--
+-- 'latestHeartbeatAfter', 'listDevices_latestHeartbeatAfter' - Select fleets where the job was updated after X
+--
+-- 'maxResults', 'listDevices_maxResults' - Maximum number of results to select.
+--
+-- 'modelName', 'listDevices_modelName' - A filter that searches devices that contains this name in any of their
+-- models.
+--
+-- 'nextToken', 'listDevices_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+newListDevices ::
+  ListDevices
+newListDevices =
+  ListDevices'
+    { deviceFleetName = Prelude.Nothing,
+      latestHeartbeatAfter = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Filter for fleets containing this name in their device fleet name.
+listDevices_deviceFleetName :: Lens.Lens' ListDevices (Prelude.Maybe Prelude.Text)
+listDevices_deviceFleetName = Lens.lens (\ListDevices' {deviceFleetName} -> deviceFleetName) (\s@ListDevices' {} a -> s {deviceFleetName = a} :: ListDevices)
+
+-- | Select fleets where the job was updated after X
+listDevices_latestHeartbeatAfter :: Lens.Lens' ListDevices (Prelude.Maybe Prelude.UTCTime)
+listDevices_latestHeartbeatAfter = Lens.lens (\ListDevices' {latestHeartbeatAfter} -> latestHeartbeatAfter) (\s@ListDevices' {} a -> s {latestHeartbeatAfter = a} :: ListDevices) Prelude.. Lens.mapping Data._Time
+
+-- | Maximum number of results to select.
+listDevices_maxResults :: Lens.Lens' ListDevices (Prelude.Maybe Prelude.Int)
+listDevices_maxResults = Lens.lens (\ListDevices' {maxResults} -> maxResults) (\s@ListDevices' {} a -> s {maxResults = a} :: ListDevices)
+
+-- | A filter that searches devices that contains this name in any of their
+-- models.
+listDevices_modelName :: Lens.Lens' ListDevices (Prelude.Maybe Prelude.Text)
+listDevices_modelName = Lens.lens (\ListDevices' {modelName} -> modelName) (\s@ListDevices' {} a -> s {modelName = a} :: ListDevices)
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listDevices_nextToken :: Lens.Lens' ListDevices (Prelude.Maybe Prelude.Text)
+listDevices_nextToken = Lens.lens (\ListDevices' {nextToken} -> nextToken) (\s@ListDevices' {} a -> s {nextToken = a} :: ListDevices)
+
+instance Core.AWSPager ListDevices where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDevicesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. listDevicesResponse_deviceSummaries) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDevices_nextToken
+          Lens..~ rs
+          Lens.^? listDevicesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDevices where
+  type AWSResponse ListDevices = ListDevicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDevicesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "DeviceSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListDevices where
+  hashWithSalt _salt ListDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` latestHeartbeatAfter
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListDevices where
+  rnf ListDevices' {..} =
+    Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf latestHeartbeatAfter
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListDevices" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDevices where
+  toJSON ListDevices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeviceFleetName" Data..=)
+              Prelude.<$> deviceFleetName,
+            ("LatestHeartbeatAfter" Data..=)
+              Prelude.<$> latestHeartbeatAfter,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelName" Data..=) Prelude.<$> modelName,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListDevices where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDevices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDevicesResponse' smart constructor.
+data ListDevicesResponse = ListDevicesResponse'
+  { -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Summary of devices.
+    deviceSummaries :: [DeviceSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDevicesResponse' 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:
+--
+-- 'nextToken', 'listDevicesResponse_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'httpStatus', 'listDevicesResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceSummaries', 'listDevicesResponse_deviceSummaries' - Summary of devices.
+newListDevicesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDevicesResponse
+newListDevicesResponse pHttpStatus_ =
+  ListDevicesResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      deviceSummaries = Prelude.mempty
+    }
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listDevicesResponse_nextToken :: Lens.Lens' ListDevicesResponse (Prelude.Maybe Prelude.Text)
+listDevicesResponse_nextToken = Lens.lens (\ListDevicesResponse' {nextToken} -> nextToken) (\s@ListDevicesResponse' {} a -> s {nextToken = a} :: ListDevicesResponse)
+
+-- | The response's http status code.
+listDevicesResponse_httpStatus :: Lens.Lens' ListDevicesResponse Prelude.Int
+listDevicesResponse_httpStatus = Lens.lens (\ListDevicesResponse' {httpStatus} -> httpStatus) (\s@ListDevicesResponse' {} a -> s {httpStatus = a} :: ListDevicesResponse)
+
+-- | Summary of devices.
+listDevicesResponse_deviceSummaries :: Lens.Lens' ListDevicesResponse [DeviceSummary]
+listDevicesResponse_deviceSummaries = Lens.lens (\ListDevicesResponse' {deviceSummaries} -> deviceSummaries) (\s@ListDevicesResponse' {} a -> s {deviceSummaries = a} :: ListDevicesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListDevicesResponse where
+  rnf ListDevicesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceSummaries
diff --git a/gen/Amazonka/SageMaker/ListDomains.hs b/gen/Amazonka/SageMaker/ListDomains.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListDomains.hs
@@ -0,0 +1,221 @@
+{-# 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.ListDomains
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the domains.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListDomains
+  ( -- * Creating a Request
+    ListDomains (..),
+    newListDomains,
+
+    -- * Request Lenses
+    listDomains_maxResults,
+    listDomains_nextToken,
+
+    -- * Destructuring the Response
+    ListDomainsResponse (..),
+    newListDomainsResponse,
+
+    -- * Response Lenses
+    listDomainsResponse_domains,
+    listDomainsResponse_nextToken,
+    listDomainsResponse_httpStatus,
+  )
+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:/ 'newListDomains' smart constructor.
+data ListDomains = ListDomains'
+  { -- | Returns a list up to a specified limit.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDomains' 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:
+--
+-- 'maxResults', 'listDomains_maxResults' - Returns a list up to a specified limit.
+--
+-- 'nextToken', 'listDomains_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+newListDomains ::
+  ListDomains
+newListDomains =
+  ListDomains'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Returns a list up to a specified limit.
+listDomains_maxResults :: Lens.Lens' ListDomains (Prelude.Maybe Prelude.Natural)
+listDomains_maxResults = Lens.lens (\ListDomains' {maxResults} -> maxResults) (\s@ListDomains' {} a -> s {maxResults = a} :: ListDomains)
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listDomains_nextToken :: Lens.Lens' ListDomains (Prelude.Maybe Prelude.Text)
+listDomains_nextToken = Lens.lens (\ListDomains' {nextToken} -> nextToken) (\s@ListDomains' {} a -> s {nextToken = a} :: ListDomains)
+
+instance Core.AWSPager ListDomains where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDomainsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDomainsResponse_domains
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDomains_nextToken
+          Lens..~ rs
+          Lens.^? listDomainsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDomains where
+  type AWSResponse ListDomains = ListDomainsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDomainsResponse'
+            Prelude.<$> (x Data..?> "Domains" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDomains where
+  hashWithSalt _salt ListDomains' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListDomains where
+  rnf ListDomains' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListDomains where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListDomains" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDomains where
+  toJSON ListDomains' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListDomains where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDomains where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDomainsResponse' smart constructor.
+data ListDomainsResponse = ListDomainsResponse'
+  { -- | The list of domains.
+    domains :: Prelude.Maybe [DomainDetails],
+    -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDomainsResponse' 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:
+--
+-- 'domains', 'listDomainsResponse_domains' - The list of domains.
+--
+-- 'nextToken', 'listDomainsResponse_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'httpStatus', 'listDomainsResponse_httpStatus' - The response's http status code.
+newListDomainsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDomainsResponse
+newListDomainsResponse pHttpStatus_ =
+  ListDomainsResponse'
+    { domains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of domains.
+listDomainsResponse_domains :: Lens.Lens' ListDomainsResponse (Prelude.Maybe [DomainDetails])
+listDomainsResponse_domains = Lens.lens (\ListDomainsResponse' {domains} -> domains) (\s@ListDomainsResponse' {} a -> s {domains = a} :: ListDomainsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listDomainsResponse_nextToken :: Lens.Lens' ListDomainsResponse (Prelude.Maybe Prelude.Text)
+listDomainsResponse_nextToken = Lens.lens (\ListDomainsResponse' {nextToken} -> nextToken) (\s@ListDomainsResponse' {} a -> s {nextToken = a} :: ListDomainsResponse)
+
+-- | The response's http status code.
+listDomainsResponse_httpStatus :: Lens.Lens' ListDomainsResponse Prelude.Int
+listDomainsResponse_httpStatus = Lens.lens (\ListDomainsResponse' {httpStatus} -> httpStatus) (\s@ListDomainsResponse' {} a -> s {httpStatus = a} :: ListDomainsResponse)
+
+instance Prelude.NFData ListDomainsResponse where
+  rnf ListDomainsResponse' {..} =
+    Prelude.rnf domains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListEdgeDeploymentPlans.hs b/gen/Amazonka/SageMaker/ListEdgeDeploymentPlans.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListEdgeDeploymentPlans.hs
@@ -0,0 +1,345 @@
+{-# 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.ListEdgeDeploymentPlans
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all edge deployment plans.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListEdgeDeploymentPlans
+  ( -- * Creating a Request
+    ListEdgeDeploymentPlans (..),
+    newListEdgeDeploymentPlans,
+
+    -- * Request Lenses
+    listEdgeDeploymentPlans_creationTimeAfter,
+    listEdgeDeploymentPlans_creationTimeBefore,
+    listEdgeDeploymentPlans_deviceFleetNameContains,
+    listEdgeDeploymentPlans_lastModifiedTimeAfter,
+    listEdgeDeploymentPlans_lastModifiedTimeBefore,
+    listEdgeDeploymentPlans_maxResults,
+    listEdgeDeploymentPlans_nameContains,
+    listEdgeDeploymentPlans_nextToken,
+    listEdgeDeploymentPlans_sortBy,
+    listEdgeDeploymentPlans_sortOrder,
+
+    -- * Destructuring the Response
+    ListEdgeDeploymentPlansResponse (..),
+    newListEdgeDeploymentPlansResponse,
+
+    -- * Response Lenses
+    listEdgeDeploymentPlansResponse_nextToken,
+    listEdgeDeploymentPlansResponse_httpStatus,
+    listEdgeDeploymentPlansResponse_edgeDeploymentPlanSummaries,
+  )
+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:/ 'newListEdgeDeploymentPlans' smart constructor.
+data ListEdgeDeploymentPlans = ListEdgeDeploymentPlans'
+  { -- | Selects edge deployment plans created after this time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Selects edge deployment plans created before this time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Selects edge deployment plans with a device fleet name containing this
+    -- name.
+    deviceFleetNameContains :: Prelude.Maybe Prelude.Text,
+    -- | Selects edge deployment plans that were last updated after this time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Selects edge deployment plans that were last updated before this time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of results to select (50 by default).
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Selects edge deployment plans with names containing this name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The column by which to sort the edge deployment plans. Can be one of
+    -- @NAME@, @DEVICEFLEETNAME@, @CREATIONTIME@, @LASTMODIFIEDTIME@.
+    sortBy :: Prelude.Maybe ListEdgeDeploymentPlansSortBy,
+    -- | The direction of the sorting (ascending or descending).
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEdgeDeploymentPlans' 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:
+--
+-- 'creationTimeAfter', 'listEdgeDeploymentPlans_creationTimeAfter' - Selects edge deployment plans created after this time.
+--
+-- 'creationTimeBefore', 'listEdgeDeploymentPlans_creationTimeBefore' - Selects edge deployment plans created before this time.
+--
+-- 'deviceFleetNameContains', 'listEdgeDeploymentPlans_deviceFleetNameContains' - Selects edge deployment plans with a device fleet name containing this
+-- name.
+--
+-- 'lastModifiedTimeAfter', 'listEdgeDeploymentPlans_lastModifiedTimeAfter' - Selects edge deployment plans that were last updated after this time.
+--
+-- 'lastModifiedTimeBefore', 'listEdgeDeploymentPlans_lastModifiedTimeBefore' - Selects edge deployment plans that were last updated before this time.
+--
+-- 'maxResults', 'listEdgeDeploymentPlans_maxResults' - The maximum number of results to select (50 by default).
+--
+-- 'nameContains', 'listEdgeDeploymentPlans_nameContains' - Selects edge deployment plans with names containing this name.
+--
+-- 'nextToken', 'listEdgeDeploymentPlans_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'sortBy', 'listEdgeDeploymentPlans_sortBy' - The column by which to sort the edge deployment plans. Can be one of
+-- @NAME@, @DEVICEFLEETNAME@, @CREATIONTIME@, @LASTMODIFIEDTIME@.
+--
+-- 'sortOrder', 'listEdgeDeploymentPlans_sortOrder' - The direction of the sorting (ascending or descending).
+newListEdgeDeploymentPlans ::
+  ListEdgeDeploymentPlans
+newListEdgeDeploymentPlans =
+  ListEdgeDeploymentPlans'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      deviceFleetNameContains = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | Selects edge deployment plans created after this time.
+listEdgeDeploymentPlans_creationTimeAfter :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.UTCTime)
+listEdgeDeploymentPlans_creationTimeAfter = Lens.lens (\ListEdgeDeploymentPlans' {creationTimeAfter} -> creationTimeAfter) (\s@ListEdgeDeploymentPlans' {} a -> s {creationTimeAfter = a} :: ListEdgeDeploymentPlans) Prelude.. Lens.mapping Data._Time
+
+-- | Selects edge deployment plans created before this time.
+listEdgeDeploymentPlans_creationTimeBefore :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.UTCTime)
+listEdgeDeploymentPlans_creationTimeBefore = Lens.lens (\ListEdgeDeploymentPlans' {creationTimeBefore} -> creationTimeBefore) (\s@ListEdgeDeploymentPlans' {} a -> s {creationTimeBefore = a} :: ListEdgeDeploymentPlans) Prelude.. Lens.mapping Data._Time
+
+-- | Selects edge deployment plans with a device fleet name containing this
+-- name.
+listEdgeDeploymentPlans_deviceFleetNameContains :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.Text)
+listEdgeDeploymentPlans_deviceFleetNameContains = Lens.lens (\ListEdgeDeploymentPlans' {deviceFleetNameContains} -> deviceFleetNameContains) (\s@ListEdgeDeploymentPlans' {} a -> s {deviceFleetNameContains = a} :: ListEdgeDeploymentPlans)
+
+-- | Selects edge deployment plans that were last updated after this time.
+listEdgeDeploymentPlans_lastModifiedTimeAfter :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.UTCTime)
+listEdgeDeploymentPlans_lastModifiedTimeAfter = Lens.lens (\ListEdgeDeploymentPlans' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListEdgeDeploymentPlans' {} a -> s {lastModifiedTimeAfter = a} :: ListEdgeDeploymentPlans) Prelude.. Lens.mapping Data._Time
+
+-- | Selects edge deployment plans that were last updated before this time.
+listEdgeDeploymentPlans_lastModifiedTimeBefore :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.UTCTime)
+listEdgeDeploymentPlans_lastModifiedTimeBefore = Lens.lens (\ListEdgeDeploymentPlans' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListEdgeDeploymentPlans' {} a -> s {lastModifiedTimeBefore = a} :: ListEdgeDeploymentPlans) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of results to select (50 by default).
+listEdgeDeploymentPlans_maxResults :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.Int)
+listEdgeDeploymentPlans_maxResults = Lens.lens (\ListEdgeDeploymentPlans' {maxResults} -> maxResults) (\s@ListEdgeDeploymentPlans' {} a -> s {maxResults = a} :: ListEdgeDeploymentPlans)
+
+-- | Selects edge deployment plans with names containing this name.
+listEdgeDeploymentPlans_nameContains :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.Text)
+listEdgeDeploymentPlans_nameContains = Lens.lens (\ListEdgeDeploymentPlans' {nameContains} -> nameContains) (\s@ListEdgeDeploymentPlans' {} a -> s {nameContains = a} :: ListEdgeDeploymentPlans)
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listEdgeDeploymentPlans_nextToken :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe Prelude.Text)
+listEdgeDeploymentPlans_nextToken = Lens.lens (\ListEdgeDeploymentPlans' {nextToken} -> nextToken) (\s@ListEdgeDeploymentPlans' {} a -> s {nextToken = a} :: ListEdgeDeploymentPlans)
+
+-- | The column by which to sort the edge deployment plans. Can be one of
+-- @NAME@, @DEVICEFLEETNAME@, @CREATIONTIME@, @LASTMODIFIEDTIME@.
+listEdgeDeploymentPlans_sortBy :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe ListEdgeDeploymentPlansSortBy)
+listEdgeDeploymentPlans_sortBy = Lens.lens (\ListEdgeDeploymentPlans' {sortBy} -> sortBy) (\s@ListEdgeDeploymentPlans' {} a -> s {sortBy = a} :: ListEdgeDeploymentPlans)
+
+-- | The direction of the sorting (ascending or descending).
+listEdgeDeploymentPlans_sortOrder :: Lens.Lens' ListEdgeDeploymentPlans (Prelude.Maybe SortOrder)
+listEdgeDeploymentPlans_sortOrder = Lens.lens (\ListEdgeDeploymentPlans' {sortOrder} -> sortOrder) (\s@ListEdgeDeploymentPlans' {} a -> s {sortOrder = a} :: ListEdgeDeploymentPlans)
+
+instance Core.AWSPager ListEdgeDeploymentPlans where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEdgeDeploymentPlansResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listEdgeDeploymentPlansResponse_edgeDeploymentPlanSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEdgeDeploymentPlans_nextToken
+          Lens..~ rs
+          Lens.^? listEdgeDeploymentPlansResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEdgeDeploymentPlans where
+  type
+    AWSResponse ListEdgeDeploymentPlans =
+      ListEdgeDeploymentPlansResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEdgeDeploymentPlansResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "EdgeDeploymentPlanSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListEdgeDeploymentPlans where
+  hashWithSalt _salt ListEdgeDeploymentPlans' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` deviceFleetNameContains
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListEdgeDeploymentPlans where
+  rnf ListEdgeDeploymentPlans' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf deviceFleetNameContains
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListEdgeDeploymentPlans where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListEdgeDeploymentPlans" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListEdgeDeploymentPlans where
+  toJSON ListEdgeDeploymentPlans' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("DeviceFleetNameContains" Data..=)
+              Prelude.<$> deviceFleetNameContains,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListEdgeDeploymentPlans where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListEdgeDeploymentPlans where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListEdgeDeploymentPlansResponse' smart constructor.
+data ListEdgeDeploymentPlansResponse = ListEdgeDeploymentPlansResponse'
+  { -- | The token to use when calling the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | List of summaries of edge deployment plans.
+    edgeDeploymentPlanSummaries :: [EdgeDeploymentPlanSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEdgeDeploymentPlansResponse' 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:
+--
+-- 'nextToken', 'listEdgeDeploymentPlansResponse_nextToken' - The token to use when calling the next page of results.
+--
+-- 'httpStatus', 'listEdgeDeploymentPlansResponse_httpStatus' - The response's http status code.
+--
+-- 'edgeDeploymentPlanSummaries', 'listEdgeDeploymentPlansResponse_edgeDeploymentPlanSummaries' - List of summaries of edge deployment plans.
+newListEdgeDeploymentPlansResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEdgeDeploymentPlansResponse
+newListEdgeDeploymentPlansResponse pHttpStatus_ =
+  ListEdgeDeploymentPlansResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      edgeDeploymentPlanSummaries =
+        Prelude.mempty
+    }
+
+-- | The token to use when calling the next page of results.
+listEdgeDeploymentPlansResponse_nextToken :: Lens.Lens' ListEdgeDeploymentPlansResponse (Prelude.Maybe Prelude.Text)
+listEdgeDeploymentPlansResponse_nextToken = Lens.lens (\ListEdgeDeploymentPlansResponse' {nextToken} -> nextToken) (\s@ListEdgeDeploymentPlansResponse' {} a -> s {nextToken = a} :: ListEdgeDeploymentPlansResponse)
+
+-- | The response's http status code.
+listEdgeDeploymentPlansResponse_httpStatus :: Lens.Lens' ListEdgeDeploymentPlansResponse Prelude.Int
+listEdgeDeploymentPlansResponse_httpStatus = Lens.lens (\ListEdgeDeploymentPlansResponse' {httpStatus} -> httpStatus) (\s@ListEdgeDeploymentPlansResponse' {} a -> s {httpStatus = a} :: ListEdgeDeploymentPlansResponse)
+
+-- | List of summaries of edge deployment plans.
+listEdgeDeploymentPlansResponse_edgeDeploymentPlanSummaries :: Lens.Lens' ListEdgeDeploymentPlansResponse [EdgeDeploymentPlanSummary]
+listEdgeDeploymentPlansResponse_edgeDeploymentPlanSummaries = Lens.lens (\ListEdgeDeploymentPlansResponse' {edgeDeploymentPlanSummaries} -> edgeDeploymentPlanSummaries) (\s@ListEdgeDeploymentPlansResponse' {} a -> s {edgeDeploymentPlanSummaries = a} :: ListEdgeDeploymentPlansResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListEdgeDeploymentPlansResponse
+  where
+  rnf ListEdgeDeploymentPlansResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanSummaries
diff --git a/gen/Amazonka/SageMaker/ListEdgePackagingJobs.hs b/gen/Amazonka/SageMaker/ListEdgePackagingJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListEdgePackagingJobs.hs
@@ -0,0 +1,348 @@
+{-# 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.ListEdgePackagingJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of edge packaging jobs.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListEdgePackagingJobs
+  ( -- * Creating a Request
+    ListEdgePackagingJobs (..),
+    newListEdgePackagingJobs,
+
+    -- * Request Lenses
+    listEdgePackagingJobs_creationTimeAfter,
+    listEdgePackagingJobs_creationTimeBefore,
+    listEdgePackagingJobs_lastModifiedTimeAfter,
+    listEdgePackagingJobs_lastModifiedTimeBefore,
+    listEdgePackagingJobs_maxResults,
+    listEdgePackagingJobs_modelNameContains,
+    listEdgePackagingJobs_nameContains,
+    listEdgePackagingJobs_nextToken,
+    listEdgePackagingJobs_sortBy,
+    listEdgePackagingJobs_sortOrder,
+    listEdgePackagingJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListEdgePackagingJobsResponse (..),
+    newListEdgePackagingJobsResponse,
+
+    -- * Response Lenses
+    listEdgePackagingJobsResponse_nextToken,
+    listEdgePackagingJobsResponse_httpStatus,
+    listEdgePackagingJobsResponse_edgePackagingJobSummaries,
+  )
+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:/ 'newListEdgePackagingJobs' smart constructor.
+data ListEdgePackagingJobs = ListEdgePackagingJobs'
+  { -- | Select jobs where the job was created after specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Select jobs where the job was created before specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Select jobs where the job was updated after specified time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Select jobs where the job was updated before specified time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Maximum number of results to select.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Filter for jobs where the model name contains this string.
+    modelNameContains :: Prelude.Maybe Prelude.Text,
+    -- | Filter for jobs containing this name in their packaging job name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Use to specify what column to sort by.
+    sortBy :: Prelude.Maybe ListEdgePackagingJobsSortBy,
+    -- | What direction to sort by.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The job status to filter for.
+    statusEquals :: Prelude.Maybe EdgePackagingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEdgePackagingJobs' 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:
+--
+-- 'creationTimeAfter', 'listEdgePackagingJobs_creationTimeAfter' - Select jobs where the job was created after specified time.
+--
+-- 'creationTimeBefore', 'listEdgePackagingJobs_creationTimeBefore' - Select jobs where the job was created before specified time.
+--
+-- 'lastModifiedTimeAfter', 'listEdgePackagingJobs_lastModifiedTimeAfter' - Select jobs where the job was updated after specified time.
+--
+-- 'lastModifiedTimeBefore', 'listEdgePackagingJobs_lastModifiedTimeBefore' - Select jobs where the job was updated before specified time.
+--
+-- 'maxResults', 'listEdgePackagingJobs_maxResults' - Maximum number of results to select.
+--
+-- 'modelNameContains', 'listEdgePackagingJobs_modelNameContains' - Filter for jobs where the model name contains this string.
+--
+-- 'nameContains', 'listEdgePackagingJobs_nameContains' - Filter for jobs containing this name in their packaging job name.
+--
+-- 'nextToken', 'listEdgePackagingJobs_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'sortBy', 'listEdgePackagingJobs_sortBy' - Use to specify what column to sort by.
+--
+-- 'sortOrder', 'listEdgePackagingJobs_sortOrder' - What direction to sort by.
+--
+-- 'statusEquals', 'listEdgePackagingJobs_statusEquals' - The job status to filter for.
+newListEdgePackagingJobs ::
+  ListEdgePackagingJobs
+newListEdgePackagingJobs =
+  ListEdgePackagingJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelNameContains = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | Select jobs where the job was created after specified time.
+listEdgePackagingJobs_creationTimeAfter :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.UTCTime)
+listEdgePackagingJobs_creationTimeAfter = Lens.lens (\ListEdgePackagingJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListEdgePackagingJobs' {} a -> s {creationTimeAfter = a} :: ListEdgePackagingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Select jobs where the job was created before specified time.
+listEdgePackagingJobs_creationTimeBefore :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.UTCTime)
+listEdgePackagingJobs_creationTimeBefore = Lens.lens (\ListEdgePackagingJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListEdgePackagingJobs' {} a -> s {creationTimeBefore = a} :: ListEdgePackagingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Select jobs where the job was updated after specified time.
+listEdgePackagingJobs_lastModifiedTimeAfter :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.UTCTime)
+listEdgePackagingJobs_lastModifiedTimeAfter = Lens.lens (\ListEdgePackagingJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListEdgePackagingJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListEdgePackagingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Select jobs where the job was updated before specified time.
+listEdgePackagingJobs_lastModifiedTimeBefore :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.UTCTime)
+listEdgePackagingJobs_lastModifiedTimeBefore = Lens.lens (\ListEdgePackagingJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListEdgePackagingJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListEdgePackagingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Maximum number of results to select.
+listEdgePackagingJobs_maxResults :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.Int)
+listEdgePackagingJobs_maxResults = Lens.lens (\ListEdgePackagingJobs' {maxResults} -> maxResults) (\s@ListEdgePackagingJobs' {} a -> s {maxResults = a} :: ListEdgePackagingJobs)
+
+-- | Filter for jobs where the model name contains this string.
+listEdgePackagingJobs_modelNameContains :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.Text)
+listEdgePackagingJobs_modelNameContains = Lens.lens (\ListEdgePackagingJobs' {modelNameContains} -> modelNameContains) (\s@ListEdgePackagingJobs' {} a -> s {modelNameContains = a} :: ListEdgePackagingJobs)
+
+-- | Filter for jobs containing this name in their packaging job name.
+listEdgePackagingJobs_nameContains :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.Text)
+listEdgePackagingJobs_nameContains = Lens.lens (\ListEdgePackagingJobs' {nameContains} -> nameContains) (\s@ListEdgePackagingJobs' {} a -> s {nameContains = a} :: ListEdgePackagingJobs)
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listEdgePackagingJobs_nextToken :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe Prelude.Text)
+listEdgePackagingJobs_nextToken = Lens.lens (\ListEdgePackagingJobs' {nextToken} -> nextToken) (\s@ListEdgePackagingJobs' {} a -> s {nextToken = a} :: ListEdgePackagingJobs)
+
+-- | Use to specify what column to sort by.
+listEdgePackagingJobs_sortBy :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe ListEdgePackagingJobsSortBy)
+listEdgePackagingJobs_sortBy = Lens.lens (\ListEdgePackagingJobs' {sortBy} -> sortBy) (\s@ListEdgePackagingJobs' {} a -> s {sortBy = a} :: ListEdgePackagingJobs)
+
+-- | What direction to sort by.
+listEdgePackagingJobs_sortOrder :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe SortOrder)
+listEdgePackagingJobs_sortOrder = Lens.lens (\ListEdgePackagingJobs' {sortOrder} -> sortOrder) (\s@ListEdgePackagingJobs' {} a -> s {sortOrder = a} :: ListEdgePackagingJobs)
+
+-- | The job status to filter for.
+listEdgePackagingJobs_statusEquals :: Lens.Lens' ListEdgePackagingJobs (Prelude.Maybe EdgePackagingJobStatus)
+listEdgePackagingJobs_statusEquals = Lens.lens (\ListEdgePackagingJobs' {statusEquals} -> statusEquals) (\s@ListEdgePackagingJobs' {} a -> s {statusEquals = a} :: ListEdgePackagingJobs)
+
+instance Core.AWSPager ListEdgePackagingJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEdgePackagingJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listEdgePackagingJobsResponse_edgePackagingJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEdgePackagingJobs_nextToken
+          Lens..~ rs
+          Lens.^? listEdgePackagingJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEdgePackagingJobs where
+  type
+    AWSResponse ListEdgePackagingJobs =
+      ListEdgePackagingJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEdgePackagingJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "EdgePackagingJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListEdgePackagingJobs where
+  hashWithSalt _salt ListEdgePackagingJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelNameContains
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListEdgePackagingJobs where
+  rnf ListEdgePackagingJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelNameContains
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListEdgePackagingJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListEdgePackagingJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListEdgePackagingJobs where
+  toJSON ListEdgePackagingJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelNameContains" Data..=)
+              Prelude.<$> modelNameContains,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListEdgePackagingJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListEdgePackagingJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListEdgePackagingJobsResponse' smart constructor.
+data ListEdgePackagingJobsResponse = ListEdgePackagingJobsResponse'
+  { -- | Token to use when calling the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Summaries of edge packaging jobs.
+    edgePackagingJobSummaries :: [EdgePackagingJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEdgePackagingJobsResponse' 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:
+--
+-- 'nextToken', 'listEdgePackagingJobsResponse_nextToken' - Token to use when calling the next page of results.
+--
+-- 'httpStatus', 'listEdgePackagingJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'edgePackagingJobSummaries', 'listEdgePackagingJobsResponse_edgePackagingJobSummaries' - Summaries of edge packaging jobs.
+newListEdgePackagingJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEdgePackagingJobsResponse
+newListEdgePackagingJobsResponse pHttpStatus_ =
+  ListEdgePackagingJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      edgePackagingJobSummaries = Prelude.mempty
+    }
+
+-- | Token to use when calling the next page of results.
+listEdgePackagingJobsResponse_nextToken :: Lens.Lens' ListEdgePackagingJobsResponse (Prelude.Maybe Prelude.Text)
+listEdgePackagingJobsResponse_nextToken = Lens.lens (\ListEdgePackagingJobsResponse' {nextToken} -> nextToken) (\s@ListEdgePackagingJobsResponse' {} a -> s {nextToken = a} :: ListEdgePackagingJobsResponse)
+
+-- | The response's http status code.
+listEdgePackagingJobsResponse_httpStatus :: Lens.Lens' ListEdgePackagingJobsResponse Prelude.Int
+listEdgePackagingJobsResponse_httpStatus = Lens.lens (\ListEdgePackagingJobsResponse' {httpStatus} -> httpStatus) (\s@ListEdgePackagingJobsResponse' {} a -> s {httpStatus = a} :: ListEdgePackagingJobsResponse)
+
+-- | Summaries of edge packaging jobs.
+listEdgePackagingJobsResponse_edgePackagingJobSummaries :: Lens.Lens' ListEdgePackagingJobsResponse [EdgePackagingJobSummary]
+listEdgePackagingJobsResponse_edgePackagingJobSummaries = Lens.lens (\ListEdgePackagingJobsResponse' {edgePackagingJobSummaries} -> edgePackagingJobSummaries) (\s@ListEdgePackagingJobsResponse' {} a -> s {edgePackagingJobSummaries = a} :: ListEdgePackagingJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListEdgePackagingJobsResponse where
+  rnf ListEdgePackagingJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf edgePackagingJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListEndpointConfigs.hs b/gen/Amazonka/SageMaker/ListEndpointConfigs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListEndpointConfigs.hs
@@ -0,0 +1,311 @@
+{-# 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.ListEndpointConfigs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists endpoint configurations.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListEndpointConfigs
+  ( -- * Creating a Request
+    ListEndpointConfigs (..),
+    newListEndpointConfigs,
+
+    -- * Request Lenses
+    listEndpointConfigs_creationTimeAfter,
+    listEndpointConfigs_creationTimeBefore,
+    listEndpointConfigs_maxResults,
+    listEndpointConfigs_nameContains,
+    listEndpointConfigs_nextToken,
+    listEndpointConfigs_sortBy,
+    listEndpointConfigs_sortOrder,
+
+    -- * Destructuring the Response
+    ListEndpointConfigsResponse (..),
+    newListEndpointConfigsResponse,
+
+    -- * Response Lenses
+    listEndpointConfigsResponse_nextToken,
+    listEndpointConfigsResponse_httpStatus,
+    listEndpointConfigsResponse_endpointConfigs,
+  )
+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:/ 'newListEndpointConfigs' smart constructor.
+data ListEndpointConfigs = ListEndpointConfigs'
+  { -- | A filter that returns only endpoint configurations with a creation time
+    -- greater than or equal to the specified time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only endpoint configurations created before the
+    -- specified time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of training jobs to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the endpoint configuration name. This filter returns only
+    -- endpoint configurations whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListEndpointConfig@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of endpoint configurations, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe EndpointConfigSortKey,
+    -- | The sort order for results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe OrderKey
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEndpointConfigs' 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:
+--
+-- 'creationTimeAfter', 'listEndpointConfigs_creationTimeAfter' - A filter that returns only endpoint configurations with a creation time
+-- greater than or equal to the specified time (timestamp).
+--
+-- 'creationTimeBefore', 'listEndpointConfigs_creationTimeBefore' - A filter that returns only endpoint configurations created before the
+-- specified time (timestamp).
+--
+-- 'maxResults', 'listEndpointConfigs_maxResults' - The maximum number of training jobs to return in the response.
+--
+-- 'nameContains', 'listEndpointConfigs_nameContains' - A string in the endpoint configuration name. This filter returns only
+-- endpoint configurations whose name contains the specified string.
+--
+-- 'nextToken', 'listEndpointConfigs_nextToken' - If the result of the previous @ListEndpointConfig@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of endpoint configurations, use the token in the next request.
+--
+-- 'sortBy', 'listEndpointConfigs_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listEndpointConfigs_sortOrder' - The sort order for results. The default is @Descending@.
+newListEndpointConfigs ::
+  ListEndpointConfigs
+newListEndpointConfigs =
+  ListEndpointConfigs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only endpoint configurations with a creation time
+-- greater than or equal to the specified time (timestamp).
+listEndpointConfigs_creationTimeAfter :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe Prelude.UTCTime)
+listEndpointConfigs_creationTimeAfter = Lens.lens (\ListEndpointConfigs' {creationTimeAfter} -> creationTimeAfter) (\s@ListEndpointConfigs' {} a -> s {creationTimeAfter = a} :: ListEndpointConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only endpoint configurations created before the
+-- specified time (timestamp).
+listEndpointConfigs_creationTimeBefore :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe Prelude.UTCTime)
+listEndpointConfigs_creationTimeBefore = Lens.lens (\ListEndpointConfigs' {creationTimeBefore} -> creationTimeBefore) (\s@ListEndpointConfigs' {} a -> s {creationTimeBefore = a} :: ListEndpointConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of training jobs to return in the response.
+listEndpointConfigs_maxResults :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe Prelude.Natural)
+listEndpointConfigs_maxResults = Lens.lens (\ListEndpointConfigs' {maxResults} -> maxResults) (\s@ListEndpointConfigs' {} a -> s {maxResults = a} :: ListEndpointConfigs)
+
+-- | A string in the endpoint configuration name. This filter returns only
+-- endpoint configurations whose name contains the specified string.
+listEndpointConfigs_nameContains :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe Prelude.Text)
+listEndpointConfigs_nameContains = Lens.lens (\ListEndpointConfigs' {nameContains} -> nameContains) (\s@ListEndpointConfigs' {} a -> s {nameContains = a} :: ListEndpointConfigs)
+
+-- | If the result of the previous @ListEndpointConfig@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of endpoint configurations, use the token in the next request.
+listEndpointConfigs_nextToken :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe Prelude.Text)
+listEndpointConfigs_nextToken = Lens.lens (\ListEndpointConfigs' {nextToken} -> nextToken) (\s@ListEndpointConfigs' {} a -> s {nextToken = a} :: ListEndpointConfigs)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listEndpointConfigs_sortBy :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe EndpointConfigSortKey)
+listEndpointConfigs_sortBy = Lens.lens (\ListEndpointConfigs' {sortBy} -> sortBy) (\s@ListEndpointConfigs' {} a -> s {sortBy = a} :: ListEndpointConfigs)
+
+-- | The sort order for results. The default is @Descending@.
+listEndpointConfigs_sortOrder :: Lens.Lens' ListEndpointConfigs (Prelude.Maybe OrderKey)
+listEndpointConfigs_sortOrder = Lens.lens (\ListEndpointConfigs' {sortOrder} -> sortOrder) (\s@ListEndpointConfigs' {} a -> s {sortOrder = a} :: ListEndpointConfigs)
+
+instance Core.AWSPager ListEndpointConfigs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEndpointConfigsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listEndpointConfigsResponse_endpointConfigs
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEndpointConfigs_nextToken
+          Lens..~ rs
+          Lens.^? listEndpointConfigsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEndpointConfigs where
+  type
+    AWSResponse ListEndpointConfigs =
+      ListEndpointConfigsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEndpointConfigsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "EndpointConfigs"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListEndpointConfigs where
+  hashWithSalt _salt ListEndpointConfigs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListEndpointConfigs where
+  rnf ListEndpointConfigs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListEndpointConfigs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListEndpointConfigs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListEndpointConfigs where
+  toJSON ListEndpointConfigs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListEndpointConfigs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListEndpointConfigs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListEndpointConfigsResponse' smart constructor.
+data ListEndpointConfigsResponse = ListEndpointConfigsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of endpoint configurations, use it in the subsequent
+    -- request
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of endpoint configurations.
+    endpointConfigs :: [EndpointConfigSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEndpointConfigsResponse' 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:
+--
+-- 'nextToken', 'listEndpointConfigsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of endpoint configurations, use it in the subsequent
+-- request
+--
+-- 'httpStatus', 'listEndpointConfigsResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointConfigs', 'listEndpointConfigsResponse_endpointConfigs' - An array of endpoint configurations.
+newListEndpointConfigsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEndpointConfigsResponse
+newListEndpointConfigsResponse pHttpStatus_ =
+  ListEndpointConfigsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      endpointConfigs = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of endpoint configurations, use it in the subsequent
+-- request
+listEndpointConfigsResponse_nextToken :: Lens.Lens' ListEndpointConfigsResponse (Prelude.Maybe Prelude.Text)
+listEndpointConfigsResponse_nextToken = Lens.lens (\ListEndpointConfigsResponse' {nextToken} -> nextToken) (\s@ListEndpointConfigsResponse' {} a -> s {nextToken = a} :: ListEndpointConfigsResponse)
+
+-- | The response's http status code.
+listEndpointConfigsResponse_httpStatus :: Lens.Lens' ListEndpointConfigsResponse Prelude.Int
+listEndpointConfigsResponse_httpStatus = Lens.lens (\ListEndpointConfigsResponse' {httpStatus} -> httpStatus) (\s@ListEndpointConfigsResponse' {} a -> s {httpStatus = a} :: ListEndpointConfigsResponse)
+
+-- | An array of endpoint configurations.
+listEndpointConfigsResponse_endpointConfigs :: Lens.Lens' ListEndpointConfigsResponse [EndpointConfigSummary]
+listEndpointConfigsResponse_endpointConfigs = Lens.lens (\ListEndpointConfigsResponse' {endpointConfigs} -> endpointConfigs) (\s@ListEndpointConfigsResponse' {} a -> s {endpointConfigs = a} :: ListEndpointConfigsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListEndpointConfigsResponse where
+  rnf ListEndpointConfigsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointConfigs
diff --git a/gen/Amazonka/SageMaker/ListEndpoints.hs b/gen/Amazonka/SageMaker/ListEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListEndpoints.hs
@@ -0,0 +1,349 @@
+{-# 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.ListEndpoints
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists endpoints.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListEndpoints
+  ( -- * Creating a Request
+    ListEndpoints (..),
+    newListEndpoints,
+
+    -- * Request Lenses
+    listEndpoints_creationTimeAfter,
+    listEndpoints_creationTimeBefore,
+    listEndpoints_lastModifiedTimeAfter,
+    listEndpoints_lastModifiedTimeBefore,
+    listEndpoints_maxResults,
+    listEndpoints_nameContains,
+    listEndpoints_nextToken,
+    listEndpoints_sortBy,
+    listEndpoints_sortOrder,
+    listEndpoints_statusEquals,
+
+    -- * Destructuring the Response
+    ListEndpointsResponse (..),
+    newListEndpointsResponse,
+
+    -- * Response Lenses
+    listEndpointsResponse_nextToken,
+    listEndpointsResponse_httpStatus,
+    listEndpointsResponse_endpoints,
+  )
+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:/ 'newListEndpoints' smart constructor.
+data ListEndpoints = ListEndpoints'
+  { -- | A filter that returns only endpoints with a creation time greater than
+    -- or equal to the specified time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only endpoints that were created before the
+    -- specified time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only endpoints that were modified after the
+    -- specified timestamp.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only endpoints that were modified before the
+    -- specified timestamp.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of endpoints to return in the response. This value
+    -- defaults to 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in endpoint names. This filter returns only endpoints whose
+    -- name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of a @ListEndpoints@ request was truncated, the response
+    -- includes a @NextToken@. To retrieve the next set of endpoints, use the
+    -- token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sorts the list of results. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe EndpointSortKey,
+    -- | The sort order for results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe OrderKey,
+    -- | A filter that returns only endpoints with the specified status.
+    statusEquals :: Prelude.Maybe EndpointStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEndpoints' 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:
+--
+-- 'creationTimeAfter', 'listEndpoints_creationTimeAfter' - A filter that returns only endpoints with a creation time greater than
+-- or equal to the specified time (timestamp).
+--
+-- 'creationTimeBefore', 'listEndpoints_creationTimeBefore' - A filter that returns only endpoints that were created before the
+-- specified time (timestamp).
+--
+-- 'lastModifiedTimeAfter', 'listEndpoints_lastModifiedTimeAfter' - A filter that returns only endpoints that were modified after the
+-- specified timestamp.
+--
+-- 'lastModifiedTimeBefore', 'listEndpoints_lastModifiedTimeBefore' - A filter that returns only endpoints that were modified before the
+-- specified timestamp.
+--
+-- 'maxResults', 'listEndpoints_maxResults' - The maximum number of endpoints to return in the response. This value
+-- defaults to 10.
+--
+-- 'nameContains', 'listEndpoints_nameContains' - A string in endpoint names. This filter returns only endpoints whose
+-- name contains the specified string.
+--
+-- 'nextToken', 'listEndpoints_nextToken' - If the result of a @ListEndpoints@ request was truncated, the response
+-- includes a @NextToken@. To retrieve the next set of endpoints, use the
+-- token in the next request.
+--
+-- 'sortBy', 'listEndpoints_sortBy' - Sorts the list of results. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listEndpoints_sortOrder' - The sort order for results. The default is @Descending@.
+--
+-- 'statusEquals', 'listEndpoints_statusEquals' - A filter that returns only endpoints with the specified status.
+newListEndpoints ::
+  ListEndpoints
+newListEndpoints =
+  ListEndpoints'
+    { creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only endpoints with a creation time greater than
+-- or equal to the specified time (timestamp).
+listEndpoints_creationTimeAfter :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.UTCTime)
+listEndpoints_creationTimeAfter = Lens.lens (\ListEndpoints' {creationTimeAfter} -> creationTimeAfter) (\s@ListEndpoints' {} a -> s {creationTimeAfter = a} :: ListEndpoints) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only endpoints that were created before the
+-- specified time (timestamp).
+listEndpoints_creationTimeBefore :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.UTCTime)
+listEndpoints_creationTimeBefore = Lens.lens (\ListEndpoints' {creationTimeBefore} -> creationTimeBefore) (\s@ListEndpoints' {} a -> s {creationTimeBefore = a} :: ListEndpoints) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only endpoints that were modified after the
+-- specified timestamp.
+listEndpoints_lastModifiedTimeAfter :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.UTCTime)
+listEndpoints_lastModifiedTimeAfter = Lens.lens (\ListEndpoints' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListEndpoints' {} a -> s {lastModifiedTimeAfter = a} :: ListEndpoints) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only endpoints that were modified before the
+-- specified timestamp.
+listEndpoints_lastModifiedTimeBefore :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.UTCTime)
+listEndpoints_lastModifiedTimeBefore = Lens.lens (\ListEndpoints' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListEndpoints' {} a -> s {lastModifiedTimeBefore = a} :: ListEndpoints) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of endpoints to return in the response. This value
+-- defaults to 10.
+listEndpoints_maxResults :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.Natural)
+listEndpoints_maxResults = Lens.lens (\ListEndpoints' {maxResults} -> maxResults) (\s@ListEndpoints' {} a -> s {maxResults = a} :: ListEndpoints)
+
+-- | A string in endpoint names. This filter returns only endpoints whose
+-- name contains the specified string.
+listEndpoints_nameContains :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.Text)
+listEndpoints_nameContains = Lens.lens (\ListEndpoints' {nameContains} -> nameContains) (\s@ListEndpoints' {} a -> s {nameContains = a} :: ListEndpoints)
+
+-- | If the result of a @ListEndpoints@ request was truncated, the response
+-- includes a @NextToken@. To retrieve the next set of endpoints, use the
+-- token in the next request.
+listEndpoints_nextToken :: Lens.Lens' ListEndpoints (Prelude.Maybe Prelude.Text)
+listEndpoints_nextToken = Lens.lens (\ListEndpoints' {nextToken} -> nextToken) (\s@ListEndpoints' {} a -> s {nextToken = a} :: ListEndpoints)
+
+-- | Sorts the list of results. The default is @CreationTime@.
+listEndpoints_sortBy :: Lens.Lens' ListEndpoints (Prelude.Maybe EndpointSortKey)
+listEndpoints_sortBy = Lens.lens (\ListEndpoints' {sortBy} -> sortBy) (\s@ListEndpoints' {} a -> s {sortBy = a} :: ListEndpoints)
+
+-- | The sort order for results. The default is @Descending@.
+listEndpoints_sortOrder :: Lens.Lens' ListEndpoints (Prelude.Maybe OrderKey)
+listEndpoints_sortOrder = Lens.lens (\ListEndpoints' {sortOrder} -> sortOrder) (\s@ListEndpoints' {} a -> s {sortOrder = a} :: ListEndpoints)
+
+-- | A filter that returns only endpoints with the specified status.
+listEndpoints_statusEquals :: Lens.Lens' ListEndpoints (Prelude.Maybe EndpointStatus)
+listEndpoints_statusEquals = Lens.lens (\ListEndpoints' {statusEquals} -> statusEquals) (\s@ListEndpoints' {} a -> s {statusEquals = a} :: ListEndpoints)
+
+instance Core.AWSPager ListEndpoints where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEndpointsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. listEndpointsResponse_endpoints) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEndpoints_nextToken
+          Lens..~ rs
+          Lens.^? listEndpointsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEndpoints where
+  type
+    AWSResponse ListEndpoints =
+      ListEndpointsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEndpointsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "Endpoints" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListEndpoints where
+  hashWithSalt _salt ListEndpoints' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListEndpoints where
+  rnf ListEndpoints' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListEndpoints where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListEndpoints" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListEndpoints where
+  toJSON ListEndpoints' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListEndpoints where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListEndpoints where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListEndpointsResponse' smart constructor.
+data ListEndpointsResponse = ListEndpointsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of training jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array or endpoint objects.
+    endpoints :: [EndpointSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEndpointsResponse' 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:
+--
+-- 'nextToken', 'listEndpointsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of training jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listEndpointsResponse_httpStatus' - The response's http status code.
+--
+-- 'endpoints', 'listEndpointsResponse_endpoints' - An array or endpoint objects.
+newListEndpointsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEndpointsResponse
+newListEndpointsResponse pHttpStatus_ =
+  ListEndpointsResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      endpoints = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of training jobs, use it in the subsequent request.
+listEndpointsResponse_nextToken :: Lens.Lens' ListEndpointsResponse (Prelude.Maybe Prelude.Text)
+listEndpointsResponse_nextToken = Lens.lens (\ListEndpointsResponse' {nextToken} -> nextToken) (\s@ListEndpointsResponse' {} a -> s {nextToken = a} :: ListEndpointsResponse)
+
+-- | The response's http status code.
+listEndpointsResponse_httpStatus :: Lens.Lens' ListEndpointsResponse Prelude.Int
+listEndpointsResponse_httpStatus = Lens.lens (\ListEndpointsResponse' {httpStatus} -> httpStatus) (\s@ListEndpointsResponse' {} a -> s {httpStatus = a} :: ListEndpointsResponse)
+
+-- | An array or endpoint objects.
+listEndpointsResponse_endpoints :: Lens.Lens' ListEndpointsResponse [EndpointSummary]
+listEndpointsResponse_endpoints = Lens.lens (\ListEndpointsResponse' {endpoints} -> endpoints) (\s@ListEndpointsResponse' {} a -> s {endpoints = a} :: ListEndpointsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListEndpointsResponse where
+  rnf ListEndpointsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpoints
diff --git a/gen/Amazonka/SageMaker/ListExperiments.hs b/gen/Amazonka/SageMaker/ListExperiments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListExperiments.hs
@@ -0,0 +1,287 @@
+{-# 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.ListExperiments
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the experiments in your account. The list can be filtered to
+-- show only experiments that were created in a specific time range. The
+-- list can be sorted by experiment name or creation time.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListExperiments
+  ( -- * Creating a Request
+    ListExperiments (..),
+    newListExperiments,
+
+    -- * Request Lenses
+    listExperiments_createdAfter,
+    listExperiments_createdBefore,
+    listExperiments_maxResults,
+    listExperiments_nextToken,
+    listExperiments_sortBy,
+    listExperiments_sortOrder,
+
+    -- * Destructuring the Response
+    ListExperimentsResponse (..),
+    newListExperimentsResponse,
+
+    -- * Response Lenses
+    listExperimentsResponse_experimentSummaries,
+    listExperimentsResponse_nextToken,
+    listExperimentsResponse_httpStatus,
+  )
+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:/ 'newListExperiments' smart constructor.
+data ListExperiments = ListExperiments'
+  { -- | A filter that returns only experiments created after the specified time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only experiments created before the specified
+    -- time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of experiments to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListExperiments@ didn\'t return the full set of
+    -- experiments, the call returns a token for getting the next set of
+    -- experiments.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortExperimentsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListExperiments' 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:
+--
+-- 'createdAfter', 'listExperiments_createdAfter' - A filter that returns only experiments created after the specified time.
+--
+-- 'createdBefore', 'listExperiments_createdBefore' - A filter that returns only experiments created before the specified
+-- time.
+--
+-- 'maxResults', 'listExperiments_maxResults' - The maximum number of experiments to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listExperiments_nextToken' - If the previous call to @ListExperiments@ didn\'t return the full set of
+-- experiments, the call returns a token for getting the next set of
+-- experiments.
+--
+-- 'sortBy', 'listExperiments_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listExperiments_sortOrder' - The sort order. The default value is @Descending@.
+newListExperiments ::
+  ListExperiments
+newListExperiments =
+  ListExperiments'
+    { createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only experiments created after the specified time.
+listExperiments_createdAfter :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.UTCTime)
+listExperiments_createdAfter = Lens.lens (\ListExperiments' {createdAfter} -> createdAfter) (\s@ListExperiments' {} a -> s {createdAfter = a} :: ListExperiments) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only experiments created before the specified
+-- time.
+listExperiments_createdBefore :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.UTCTime)
+listExperiments_createdBefore = Lens.lens (\ListExperiments' {createdBefore} -> createdBefore) (\s@ListExperiments' {} a -> s {createdBefore = a} :: ListExperiments) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of experiments to return in the response. The default
+-- value is 10.
+listExperiments_maxResults :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.Natural)
+listExperiments_maxResults = Lens.lens (\ListExperiments' {maxResults} -> maxResults) (\s@ListExperiments' {} a -> s {maxResults = a} :: ListExperiments)
+
+-- | If the previous call to @ListExperiments@ didn\'t return the full set of
+-- experiments, the call returns a token for getting the next set of
+-- experiments.
+listExperiments_nextToken :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.Text)
+listExperiments_nextToken = Lens.lens (\ListExperiments' {nextToken} -> nextToken) (\s@ListExperiments' {} a -> s {nextToken = a} :: ListExperiments)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listExperiments_sortBy :: Lens.Lens' ListExperiments (Prelude.Maybe SortExperimentsBy)
+listExperiments_sortBy = Lens.lens (\ListExperiments' {sortBy} -> sortBy) (\s@ListExperiments' {} a -> s {sortBy = a} :: ListExperiments)
+
+-- | The sort order. The default value is @Descending@.
+listExperiments_sortOrder :: Lens.Lens' ListExperiments (Prelude.Maybe SortOrder)
+listExperiments_sortOrder = Lens.lens (\ListExperiments' {sortOrder} -> sortOrder) (\s@ListExperiments' {} a -> s {sortOrder = a} :: ListExperiments)
+
+instance Core.AWSPager ListExperiments where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listExperimentsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listExperimentsResponse_experimentSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listExperiments_nextToken
+          Lens..~ rs
+          Lens.^? listExperimentsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListExperiments where
+  type
+    AWSResponse ListExperiments =
+      ListExperimentsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListExperimentsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ExperimentSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListExperiments where
+  hashWithSalt _salt ListExperiments' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListExperiments where
+  rnf ListExperiments' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListExperiments where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListExperiments" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListExperiments where
+  toJSON ListExperiments' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListExperiments where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListExperiments where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListExperimentsResponse' smart constructor.
+data ListExperimentsResponse = ListExperimentsResponse'
+  { -- | A list of the summaries of your experiments.
+    experimentSummaries :: Prelude.Maybe [ExperimentSummary],
+    -- | A token for getting the next set of experiments, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListExperimentsResponse' 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:
+--
+-- 'experimentSummaries', 'listExperimentsResponse_experimentSummaries' - A list of the summaries of your experiments.
+--
+-- 'nextToken', 'listExperimentsResponse_nextToken' - A token for getting the next set of experiments, if there are any.
+--
+-- 'httpStatus', 'listExperimentsResponse_httpStatus' - The response's http status code.
+newListExperimentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListExperimentsResponse
+newListExperimentsResponse pHttpStatus_ =
+  ListExperimentsResponse'
+    { experimentSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of the summaries of your experiments.
+listExperimentsResponse_experimentSummaries :: Lens.Lens' ListExperimentsResponse (Prelude.Maybe [ExperimentSummary])
+listExperimentsResponse_experimentSummaries = Lens.lens (\ListExperimentsResponse' {experimentSummaries} -> experimentSummaries) (\s@ListExperimentsResponse' {} a -> s {experimentSummaries = a} :: ListExperimentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of experiments, if there are any.
+listExperimentsResponse_nextToken :: Lens.Lens' ListExperimentsResponse (Prelude.Maybe Prelude.Text)
+listExperimentsResponse_nextToken = Lens.lens (\ListExperimentsResponse' {nextToken} -> nextToken) (\s@ListExperimentsResponse' {} a -> s {nextToken = a} :: ListExperimentsResponse)
+
+-- | The response's http status code.
+listExperimentsResponse_httpStatus :: Lens.Lens' ListExperimentsResponse Prelude.Int
+listExperimentsResponse_httpStatus = Lens.lens (\ListExperimentsResponse' {httpStatus} -> httpStatus) (\s@ListExperimentsResponse' {} a -> s {httpStatus = a} :: ListExperimentsResponse)
+
+instance Prelude.NFData ListExperimentsResponse where
+  rnf ListExperimentsResponse' {..} =
+    Prelude.rnf experimentSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListFeatureGroups.hs b/gen/Amazonka/SageMaker/ListFeatureGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListFeatureGroups.hs
@@ -0,0 +1,327 @@
+{-# 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.ListFeatureGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List @FeatureGroup@s based on given filter and order.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListFeatureGroups
+  ( -- * Creating a Request
+    ListFeatureGroups (..),
+    newListFeatureGroups,
+
+    -- * Request Lenses
+    listFeatureGroups_creationTimeAfter,
+    listFeatureGroups_creationTimeBefore,
+    listFeatureGroups_featureGroupStatusEquals,
+    listFeatureGroups_maxResults,
+    listFeatureGroups_nameContains,
+    listFeatureGroups_nextToken,
+    listFeatureGroups_offlineStoreStatusEquals,
+    listFeatureGroups_sortBy,
+    listFeatureGroups_sortOrder,
+
+    -- * Destructuring the Response
+    ListFeatureGroupsResponse (..),
+    newListFeatureGroupsResponse,
+
+    -- * Response Lenses
+    listFeatureGroupsResponse_nextToken,
+    listFeatureGroupsResponse_httpStatus,
+    listFeatureGroupsResponse_featureGroupSummaries,
+  )
+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:/ 'newListFeatureGroups' smart constructor.
+data ListFeatureGroups = ListFeatureGroups'
+  { -- | Use this parameter to search for @FeatureGroups@s created after a
+    -- specific date and time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Use this parameter to search for @FeatureGroups@s created before a
+    -- specific date and time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A @FeatureGroup@ status. Filters by @FeatureGroup@ status.
+    featureGroupStatusEquals :: Prelude.Maybe FeatureGroupStatus,
+    -- | The maximum number of results returned by @ListFeatureGroups@.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string that partially matches one or more @FeatureGroup@s names.
+    -- Filters @FeatureGroup@s by name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | A token to resume pagination of @ListFeatureGroups@ results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An @OfflineStore@ status. Filters by @OfflineStore@ status.
+    offlineStoreStatusEquals :: Prelude.Maybe OfflineStoreStatusValue,
+    -- | The value on which the feature group list is sorted.
+    sortBy :: Prelude.Maybe FeatureGroupSortBy,
+    -- | The order in which feature groups are listed.
+    sortOrder :: Prelude.Maybe FeatureGroupSortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFeatureGroups' 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:
+--
+-- 'creationTimeAfter', 'listFeatureGroups_creationTimeAfter' - Use this parameter to search for @FeatureGroups@s created after a
+-- specific date and time.
+--
+-- 'creationTimeBefore', 'listFeatureGroups_creationTimeBefore' - Use this parameter to search for @FeatureGroups@s created before a
+-- specific date and time.
+--
+-- 'featureGroupStatusEquals', 'listFeatureGroups_featureGroupStatusEquals' - A @FeatureGroup@ status. Filters by @FeatureGroup@ status.
+--
+-- 'maxResults', 'listFeatureGroups_maxResults' - The maximum number of results returned by @ListFeatureGroups@.
+--
+-- 'nameContains', 'listFeatureGroups_nameContains' - A string that partially matches one or more @FeatureGroup@s names.
+-- Filters @FeatureGroup@s by name.
+--
+-- 'nextToken', 'listFeatureGroups_nextToken' - A token to resume pagination of @ListFeatureGroups@ results.
+--
+-- 'offlineStoreStatusEquals', 'listFeatureGroups_offlineStoreStatusEquals' - An @OfflineStore@ status. Filters by @OfflineStore@ status.
+--
+-- 'sortBy', 'listFeatureGroups_sortBy' - The value on which the feature group list is sorted.
+--
+-- 'sortOrder', 'listFeatureGroups_sortOrder' - The order in which feature groups are listed.
+newListFeatureGroups ::
+  ListFeatureGroups
+newListFeatureGroups =
+  ListFeatureGroups'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      featureGroupStatusEquals = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      offlineStoreStatusEquals = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | Use this parameter to search for @FeatureGroups@s created after a
+-- specific date and time.
+listFeatureGroups_creationTimeAfter :: Lens.Lens' ListFeatureGroups (Prelude.Maybe Prelude.UTCTime)
+listFeatureGroups_creationTimeAfter = Lens.lens (\ListFeatureGroups' {creationTimeAfter} -> creationTimeAfter) (\s@ListFeatureGroups' {} a -> s {creationTimeAfter = a} :: ListFeatureGroups) Prelude.. Lens.mapping Data._Time
+
+-- | Use this parameter to search for @FeatureGroups@s created before a
+-- specific date and time.
+listFeatureGroups_creationTimeBefore :: Lens.Lens' ListFeatureGroups (Prelude.Maybe Prelude.UTCTime)
+listFeatureGroups_creationTimeBefore = Lens.lens (\ListFeatureGroups' {creationTimeBefore} -> creationTimeBefore) (\s@ListFeatureGroups' {} a -> s {creationTimeBefore = a} :: ListFeatureGroups) Prelude.. Lens.mapping Data._Time
+
+-- | A @FeatureGroup@ status. Filters by @FeatureGroup@ status.
+listFeatureGroups_featureGroupStatusEquals :: Lens.Lens' ListFeatureGroups (Prelude.Maybe FeatureGroupStatus)
+listFeatureGroups_featureGroupStatusEquals = Lens.lens (\ListFeatureGroups' {featureGroupStatusEquals} -> featureGroupStatusEquals) (\s@ListFeatureGroups' {} a -> s {featureGroupStatusEquals = a} :: ListFeatureGroups)
+
+-- | The maximum number of results returned by @ListFeatureGroups@.
+listFeatureGroups_maxResults :: Lens.Lens' ListFeatureGroups (Prelude.Maybe Prelude.Natural)
+listFeatureGroups_maxResults = Lens.lens (\ListFeatureGroups' {maxResults} -> maxResults) (\s@ListFeatureGroups' {} a -> s {maxResults = a} :: ListFeatureGroups)
+
+-- | A string that partially matches one or more @FeatureGroup@s names.
+-- Filters @FeatureGroup@s by name.
+listFeatureGroups_nameContains :: Lens.Lens' ListFeatureGroups (Prelude.Maybe Prelude.Text)
+listFeatureGroups_nameContains = Lens.lens (\ListFeatureGroups' {nameContains} -> nameContains) (\s@ListFeatureGroups' {} a -> s {nameContains = a} :: ListFeatureGroups)
+
+-- | A token to resume pagination of @ListFeatureGroups@ results.
+listFeatureGroups_nextToken :: Lens.Lens' ListFeatureGroups (Prelude.Maybe Prelude.Text)
+listFeatureGroups_nextToken = Lens.lens (\ListFeatureGroups' {nextToken} -> nextToken) (\s@ListFeatureGroups' {} a -> s {nextToken = a} :: ListFeatureGroups)
+
+-- | An @OfflineStore@ status. Filters by @OfflineStore@ status.
+listFeatureGroups_offlineStoreStatusEquals :: Lens.Lens' ListFeatureGroups (Prelude.Maybe OfflineStoreStatusValue)
+listFeatureGroups_offlineStoreStatusEquals = Lens.lens (\ListFeatureGroups' {offlineStoreStatusEquals} -> offlineStoreStatusEquals) (\s@ListFeatureGroups' {} a -> s {offlineStoreStatusEquals = a} :: ListFeatureGroups)
+
+-- | The value on which the feature group list is sorted.
+listFeatureGroups_sortBy :: Lens.Lens' ListFeatureGroups (Prelude.Maybe FeatureGroupSortBy)
+listFeatureGroups_sortBy = Lens.lens (\ListFeatureGroups' {sortBy} -> sortBy) (\s@ListFeatureGroups' {} a -> s {sortBy = a} :: ListFeatureGroups)
+
+-- | The order in which feature groups are listed.
+listFeatureGroups_sortOrder :: Lens.Lens' ListFeatureGroups (Prelude.Maybe FeatureGroupSortOrder)
+listFeatureGroups_sortOrder = Lens.lens (\ListFeatureGroups' {sortOrder} -> sortOrder) (\s@ListFeatureGroups' {} a -> s {sortOrder = a} :: ListFeatureGroups)
+
+instance Core.AWSPager ListFeatureGroups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listFeatureGroupsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listFeatureGroupsResponse_featureGroupSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listFeatureGroups_nextToken
+          Lens..~ rs
+          Lens.^? listFeatureGroupsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListFeatureGroups where
+  type
+    AWSResponse ListFeatureGroups =
+      ListFeatureGroupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFeatureGroupsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "FeatureGroupSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListFeatureGroups where
+  hashWithSalt _salt ListFeatureGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` featureGroupStatusEquals
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` offlineStoreStatusEquals
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListFeatureGroups where
+  rnf ListFeatureGroups' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf featureGroupStatusEquals
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf offlineStoreStatusEquals
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListFeatureGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListFeatureGroups" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListFeatureGroups where
+  toJSON ListFeatureGroups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("FeatureGroupStatusEquals" Data..=)
+              Prelude.<$> featureGroupStatusEquals,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("OfflineStoreStatusEquals" Data..=)
+              Prelude.<$> offlineStoreStatusEquals,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListFeatureGroups where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListFeatureGroups where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListFeatureGroupsResponse' smart constructor.
+data ListFeatureGroupsResponse = ListFeatureGroupsResponse'
+  { -- | A token to resume pagination of @ListFeatureGroups@ results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A summary of feature groups.
+    featureGroupSummaries :: [FeatureGroupSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFeatureGroupsResponse' 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:
+--
+-- 'nextToken', 'listFeatureGroupsResponse_nextToken' - A token to resume pagination of @ListFeatureGroups@ results.
+--
+-- 'httpStatus', 'listFeatureGroupsResponse_httpStatus' - The response's http status code.
+--
+-- 'featureGroupSummaries', 'listFeatureGroupsResponse_featureGroupSummaries' - A summary of feature groups.
+newListFeatureGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListFeatureGroupsResponse
+newListFeatureGroupsResponse pHttpStatus_ =
+  ListFeatureGroupsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      featureGroupSummaries = Prelude.mempty
+    }
+
+-- | A token to resume pagination of @ListFeatureGroups@ results.
+listFeatureGroupsResponse_nextToken :: Lens.Lens' ListFeatureGroupsResponse (Prelude.Maybe Prelude.Text)
+listFeatureGroupsResponse_nextToken = Lens.lens (\ListFeatureGroupsResponse' {nextToken} -> nextToken) (\s@ListFeatureGroupsResponse' {} a -> s {nextToken = a} :: ListFeatureGroupsResponse)
+
+-- | The response's http status code.
+listFeatureGroupsResponse_httpStatus :: Lens.Lens' ListFeatureGroupsResponse Prelude.Int
+listFeatureGroupsResponse_httpStatus = Lens.lens (\ListFeatureGroupsResponse' {httpStatus} -> httpStatus) (\s@ListFeatureGroupsResponse' {} a -> s {httpStatus = a} :: ListFeatureGroupsResponse)
+
+-- | A summary of feature groups.
+listFeatureGroupsResponse_featureGroupSummaries :: Lens.Lens' ListFeatureGroupsResponse [FeatureGroupSummary]
+listFeatureGroupsResponse_featureGroupSummaries = Lens.lens (\ListFeatureGroupsResponse' {featureGroupSummaries} -> featureGroupSummaries) (\s@ListFeatureGroupsResponse' {} a -> s {featureGroupSummaries = a} :: ListFeatureGroupsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListFeatureGroupsResponse where
+  rnf ListFeatureGroupsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf featureGroupSummaries
diff --git a/gen/Amazonka/SageMaker/ListFlowDefinitions.hs b/gen/Amazonka/SageMaker/ListFlowDefinitions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListFlowDefinitions.hs
@@ -0,0 +1,282 @@
+{-# 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.ListFlowDefinitions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about the flow definitions in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListFlowDefinitions
+  ( -- * Creating a Request
+    ListFlowDefinitions (..),
+    newListFlowDefinitions,
+
+    -- * Request Lenses
+    listFlowDefinitions_creationTimeAfter,
+    listFlowDefinitions_creationTimeBefore,
+    listFlowDefinitions_maxResults,
+    listFlowDefinitions_nextToken,
+    listFlowDefinitions_sortOrder,
+
+    -- * Destructuring the Response
+    ListFlowDefinitionsResponse (..),
+    newListFlowDefinitionsResponse,
+
+    -- * Response Lenses
+    listFlowDefinitionsResponse_nextToken,
+    listFlowDefinitionsResponse_httpStatus,
+    listFlowDefinitionsResponse_flowDefinitionSummaries,
+  )
+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:/ 'newListFlowDefinitions' smart constructor.
+data ListFlowDefinitions = ListFlowDefinitions'
+  { -- | A filter that returns only flow definitions with a creation time greater
+    -- than or equal to the specified timestamp.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only flow definitions that were created before the
+    -- specified timestamp.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The total number of items to return. If the total number of available
+    -- items is more than the value specified in @MaxResults@, then a
+    -- @NextToken@ will be provided in the output that you can use to resume
+    -- pagination.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token to resume pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An optional value that specifies whether you want the results sorted in
+    -- @Ascending@ or @Descending@ order.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFlowDefinitions' 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:
+--
+-- 'creationTimeAfter', 'listFlowDefinitions_creationTimeAfter' - A filter that returns only flow definitions with a creation time greater
+-- than or equal to the specified timestamp.
+--
+-- 'creationTimeBefore', 'listFlowDefinitions_creationTimeBefore' - A filter that returns only flow definitions that were created before the
+-- specified timestamp.
+--
+-- 'maxResults', 'listFlowDefinitions_maxResults' - The total number of items to return. If the total number of available
+-- items is more than the value specified in @MaxResults@, then a
+-- @NextToken@ will be provided in the output that you can use to resume
+-- pagination.
+--
+-- 'nextToken', 'listFlowDefinitions_nextToken' - A token to resume pagination.
+--
+-- 'sortOrder', 'listFlowDefinitions_sortOrder' - An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+newListFlowDefinitions ::
+  ListFlowDefinitions
+newListFlowDefinitions =
+  ListFlowDefinitions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only flow definitions with a creation time greater
+-- than or equal to the specified timestamp.
+listFlowDefinitions_creationTimeAfter :: Lens.Lens' ListFlowDefinitions (Prelude.Maybe Prelude.UTCTime)
+listFlowDefinitions_creationTimeAfter = Lens.lens (\ListFlowDefinitions' {creationTimeAfter} -> creationTimeAfter) (\s@ListFlowDefinitions' {} a -> s {creationTimeAfter = a} :: ListFlowDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only flow definitions that were created before the
+-- specified timestamp.
+listFlowDefinitions_creationTimeBefore :: Lens.Lens' ListFlowDefinitions (Prelude.Maybe Prelude.UTCTime)
+listFlowDefinitions_creationTimeBefore = Lens.lens (\ListFlowDefinitions' {creationTimeBefore} -> creationTimeBefore) (\s@ListFlowDefinitions' {} a -> s {creationTimeBefore = a} :: ListFlowDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | The total number of items to return. If the total number of available
+-- items is more than the value specified in @MaxResults@, then a
+-- @NextToken@ will be provided in the output that you can use to resume
+-- pagination.
+listFlowDefinitions_maxResults :: Lens.Lens' ListFlowDefinitions (Prelude.Maybe Prelude.Natural)
+listFlowDefinitions_maxResults = Lens.lens (\ListFlowDefinitions' {maxResults} -> maxResults) (\s@ListFlowDefinitions' {} a -> s {maxResults = a} :: ListFlowDefinitions)
+
+-- | A token to resume pagination.
+listFlowDefinitions_nextToken :: Lens.Lens' ListFlowDefinitions (Prelude.Maybe Prelude.Text)
+listFlowDefinitions_nextToken = Lens.lens (\ListFlowDefinitions' {nextToken} -> nextToken) (\s@ListFlowDefinitions' {} a -> s {nextToken = a} :: ListFlowDefinitions)
+
+-- | An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+listFlowDefinitions_sortOrder :: Lens.Lens' ListFlowDefinitions (Prelude.Maybe SortOrder)
+listFlowDefinitions_sortOrder = Lens.lens (\ListFlowDefinitions' {sortOrder} -> sortOrder) (\s@ListFlowDefinitions' {} a -> s {sortOrder = a} :: ListFlowDefinitions)
+
+instance Core.AWSPager ListFlowDefinitions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listFlowDefinitionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listFlowDefinitionsResponse_flowDefinitionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listFlowDefinitions_nextToken
+          Lens..~ rs
+          Lens.^? listFlowDefinitionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListFlowDefinitions where
+  type
+    AWSResponse ListFlowDefinitions =
+      ListFlowDefinitionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFlowDefinitionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "FlowDefinitionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListFlowDefinitions where
+  hashWithSalt _salt ListFlowDefinitions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListFlowDefinitions where
+  rnf ListFlowDefinitions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListFlowDefinitions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListFlowDefinitions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListFlowDefinitions where
+  toJSON ListFlowDefinitions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListFlowDefinitions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListFlowDefinitions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListFlowDefinitionsResponse' smart constructor.
+data ListFlowDefinitionsResponse = ListFlowDefinitionsResponse'
+  { -- | A token to resume pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of objects describing the flow definitions.
+    flowDefinitionSummaries :: [FlowDefinitionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFlowDefinitionsResponse' 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:
+--
+-- 'nextToken', 'listFlowDefinitionsResponse_nextToken' - A token to resume pagination.
+--
+-- 'httpStatus', 'listFlowDefinitionsResponse_httpStatus' - The response's http status code.
+--
+-- 'flowDefinitionSummaries', 'listFlowDefinitionsResponse_flowDefinitionSummaries' - An array of objects describing the flow definitions.
+newListFlowDefinitionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListFlowDefinitionsResponse
+newListFlowDefinitionsResponse pHttpStatus_ =
+  ListFlowDefinitionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      flowDefinitionSummaries = Prelude.mempty
+    }
+
+-- | A token to resume pagination.
+listFlowDefinitionsResponse_nextToken :: Lens.Lens' ListFlowDefinitionsResponse (Prelude.Maybe Prelude.Text)
+listFlowDefinitionsResponse_nextToken = Lens.lens (\ListFlowDefinitionsResponse' {nextToken} -> nextToken) (\s@ListFlowDefinitionsResponse' {} a -> s {nextToken = a} :: ListFlowDefinitionsResponse)
+
+-- | The response's http status code.
+listFlowDefinitionsResponse_httpStatus :: Lens.Lens' ListFlowDefinitionsResponse Prelude.Int
+listFlowDefinitionsResponse_httpStatus = Lens.lens (\ListFlowDefinitionsResponse' {httpStatus} -> httpStatus) (\s@ListFlowDefinitionsResponse' {} a -> s {httpStatus = a} :: ListFlowDefinitionsResponse)
+
+-- | An array of objects describing the flow definitions.
+listFlowDefinitionsResponse_flowDefinitionSummaries :: Lens.Lens' ListFlowDefinitionsResponse [FlowDefinitionSummary]
+listFlowDefinitionsResponse_flowDefinitionSummaries = Lens.lens (\ListFlowDefinitionsResponse' {flowDefinitionSummaries} -> flowDefinitionSummaries) (\s@ListFlowDefinitionsResponse' {} a -> s {flowDefinitionSummaries = a} :: ListFlowDefinitionsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListFlowDefinitionsResponse where
+  rnf ListFlowDefinitionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf flowDefinitionSummaries
diff --git a/gen/Amazonka/SageMaker/ListHubContentVersions.hs b/gen/Amazonka/SageMaker/ListHubContentVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListHubContentVersions.hs
@@ -0,0 +1,349 @@
+{-# 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.ListHubContentVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List hub content versions.
+module Amazonka.SageMaker.ListHubContentVersions
+  ( -- * Creating a Request
+    ListHubContentVersions (..),
+    newListHubContentVersions,
+
+    -- * Request Lenses
+    listHubContentVersions_creationTimeAfter,
+    listHubContentVersions_creationTimeBefore,
+    listHubContentVersions_maxResults,
+    listHubContentVersions_maxSchemaVersion,
+    listHubContentVersions_minVersion,
+    listHubContentVersions_nextToken,
+    listHubContentVersions_sortBy,
+    listHubContentVersions_sortOrder,
+    listHubContentVersions_hubName,
+    listHubContentVersions_hubContentType,
+    listHubContentVersions_hubContentName,
+
+    -- * Destructuring the Response
+    ListHubContentVersionsResponse (..),
+    newListHubContentVersionsResponse,
+
+    -- * Response Lenses
+    listHubContentVersionsResponse_nextToken,
+    listHubContentVersionsResponse_httpStatus,
+    listHubContentVersionsResponse_hubContentSummaries,
+  )
+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:/ 'newListHubContentVersions' smart constructor.
+data ListHubContentVersions = ListHubContentVersions'
+  { -- | Only list hub content versions that were created after the time
+    -- specified.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list hub content versions that were created before the time
+    -- specified.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of hub content versions to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The upper bound of the hub content schema version.
+    maxSchemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The lower bound of the hub content versions to list.
+    minVersion :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListHubContentVersions@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of hub content versions, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort hub content versions by either name or creation time.
+    sortBy :: Prelude.Maybe HubContentSortBy,
+    -- | Sort hub content versions by ascending or descending order.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The name of the hub to list the content versions of.
+    hubName :: Prelude.Text,
+    -- | The type of hub content to list versions of.
+    hubContentType :: HubContentType,
+    -- | The name of the hub content.
+    hubContentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHubContentVersions' 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:
+--
+-- 'creationTimeAfter', 'listHubContentVersions_creationTimeAfter' - Only list hub content versions that were created after the time
+-- specified.
+--
+-- 'creationTimeBefore', 'listHubContentVersions_creationTimeBefore' - Only list hub content versions that were created before the time
+-- specified.
+--
+-- 'maxResults', 'listHubContentVersions_maxResults' - The maximum number of hub content versions to list.
+--
+-- 'maxSchemaVersion', 'listHubContentVersions_maxSchemaVersion' - The upper bound of the hub content schema version.
+--
+-- 'minVersion', 'listHubContentVersions_minVersion' - The lower bound of the hub content versions to list.
+--
+-- 'nextToken', 'listHubContentVersions_nextToken' - If the response to a previous @ListHubContentVersions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of hub content versions, use the token in the next request.
+--
+-- 'sortBy', 'listHubContentVersions_sortBy' - Sort hub content versions by either name or creation time.
+--
+-- 'sortOrder', 'listHubContentVersions_sortOrder' - Sort hub content versions by ascending or descending order.
+--
+-- 'hubName', 'listHubContentVersions_hubName' - The name of the hub to list the content versions of.
+--
+-- 'hubContentType', 'listHubContentVersions_hubContentType' - The type of hub content to list versions of.
+--
+-- 'hubContentName', 'listHubContentVersions_hubContentName' - The name of the hub content.
+newListHubContentVersions ::
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  -- | 'hubContentName'
+  Prelude.Text ->
+  ListHubContentVersions
+newListHubContentVersions
+  pHubName_
+  pHubContentType_
+  pHubContentName_ =
+    ListHubContentVersions'
+      { creationTimeAfter =
+          Prelude.Nothing,
+        creationTimeBefore = Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        maxSchemaVersion = Prelude.Nothing,
+        minVersion = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        sortBy = Prelude.Nothing,
+        sortOrder = Prelude.Nothing,
+        hubName = pHubName_,
+        hubContentType = pHubContentType_,
+        hubContentName = pHubContentName_
+      }
+
+-- | Only list hub content versions that were created after the time
+-- specified.
+listHubContentVersions_creationTimeAfter :: Lens.Lens' ListHubContentVersions (Prelude.Maybe Prelude.UTCTime)
+listHubContentVersions_creationTimeAfter = Lens.lens (\ListHubContentVersions' {creationTimeAfter} -> creationTimeAfter) (\s@ListHubContentVersions' {} a -> s {creationTimeAfter = a} :: ListHubContentVersions) Prelude.. Lens.mapping Data._Time
+
+-- | Only list hub content versions that were created before the time
+-- specified.
+listHubContentVersions_creationTimeBefore :: Lens.Lens' ListHubContentVersions (Prelude.Maybe Prelude.UTCTime)
+listHubContentVersions_creationTimeBefore = Lens.lens (\ListHubContentVersions' {creationTimeBefore} -> creationTimeBefore) (\s@ListHubContentVersions' {} a -> s {creationTimeBefore = a} :: ListHubContentVersions) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of hub content versions to list.
+listHubContentVersions_maxResults :: Lens.Lens' ListHubContentVersions (Prelude.Maybe Prelude.Natural)
+listHubContentVersions_maxResults = Lens.lens (\ListHubContentVersions' {maxResults} -> maxResults) (\s@ListHubContentVersions' {} a -> s {maxResults = a} :: ListHubContentVersions)
+
+-- | The upper bound of the hub content schema version.
+listHubContentVersions_maxSchemaVersion :: Lens.Lens' ListHubContentVersions (Prelude.Maybe Prelude.Text)
+listHubContentVersions_maxSchemaVersion = Lens.lens (\ListHubContentVersions' {maxSchemaVersion} -> maxSchemaVersion) (\s@ListHubContentVersions' {} a -> s {maxSchemaVersion = a} :: ListHubContentVersions)
+
+-- | The lower bound of the hub content versions to list.
+listHubContentVersions_minVersion :: Lens.Lens' ListHubContentVersions (Prelude.Maybe Prelude.Text)
+listHubContentVersions_minVersion = Lens.lens (\ListHubContentVersions' {minVersion} -> minVersion) (\s@ListHubContentVersions' {} a -> s {minVersion = a} :: ListHubContentVersions)
+
+-- | If the response to a previous @ListHubContentVersions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of hub content versions, use the token in the next request.
+listHubContentVersions_nextToken :: Lens.Lens' ListHubContentVersions (Prelude.Maybe Prelude.Text)
+listHubContentVersions_nextToken = Lens.lens (\ListHubContentVersions' {nextToken} -> nextToken) (\s@ListHubContentVersions' {} a -> s {nextToken = a} :: ListHubContentVersions)
+
+-- | Sort hub content versions by either name or creation time.
+listHubContentVersions_sortBy :: Lens.Lens' ListHubContentVersions (Prelude.Maybe HubContentSortBy)
+listHubContentVersions_sortBy = Lens.lens (\ListHubContentVersions' {sortBy} -> sortBy) (\s@ListHubContentVersions' {} a -> s {sortBy = a} :: ListHubContentVersions)
+
+-- | Sort hub content versions by ascending or descending order.
+listHubContentVersions_sortOrder :: Lens.Lens' ListHubContentVersions (Prelude.Maybe SortOrder)
+listHubContentVersions_sortOrder = Lens.lens (\ListHubContentVersions' {sortOrder} -> sortOrder) (\s@ListHubContentVersions' {} a -> s {sortOrder = a} :: ListHubContentVersions)
+
+-- | The name of the hub to list the content versions of.
+listHubContentVersions_hubName :: Lens.Lens' ListHubContentVersions Prelude.Text
+listHubContentVersions_hubName = Lens.lens (\ListHubContentVersions' {hubName} -> hubName) (\s@ListHubContentVersions' {} a -> s {hubName = a} :: ListHubContentVersions)
+
+-- | The type of hub content to list versions of.
+listHubContentVersions_hubContentType :: Lens.Lens' ListHubContentVersions HubContentType
+listHubContentVersions_hubContentType = Lens.lens (\ListHubContentVersions' {hubContentType} -> hubContentType) (\s@ListHubContentVersions' {} a -> s {hubContentType = a} :: ListHubContentVersions)
+
+-- | The name of the hub content.
+listHubContentVersions_hubContentName :: Lens.Lens' ListHubContentVersions Prelude.Text
+listHubContentVersions_hubContentName = Lens.lens (\ListHubContentVersions' {hubContentName} -> hubContentName) (\s@ListHubContentVersions' {} a -> s {hubContentName = a} :: ListHubContentVersions)
+
+instance Core.AWSRequest ListHubContentVersions where
+  type
+    AWSResponse ListHubContentVersions =
+      ListHubContentVersionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListHubContentVersionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "HubContentSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListHubContentVersions where
+  hashWithSalt _salt ListHubContentVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` maxSchemaVersion
+      `Prelude.hashWithSalt` minVersion
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubContentType
+      `Prelude.hashWithSalt` hubContentName
+
+instance Prelude.NFData ListHubContentVersions where
+  rnf ListHubContentVersions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf maxSchemaVersion
+      `Prelude.seq` Prelude.rnf minVersion
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubContentType
+      `Prelude.seq` Prelude.rnf hubContentName
+
+instance Data.ToHeaders ListHubContentVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListHubContentVersions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListHubContentVersions where
+  toJSON ListHubContentVersions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("MaxSchemaVersion" Data..=)
+              Prelude.<$> maxSchemaVersion,
+            ("MinVersion" Data..=) Prelude.<$> minVersion,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("HubName" Data..= hubName),
+            Prelude.Just
+              ("HubContentType" Data..= hubContentType),
+            Prelude.Just
+              ("HubContentName" Data..= hubContentName)
+          ]
+      )
+
+instance Data.ToPath ListHubContentVersions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListHubContentVersions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListHubContentVersionsResponse' smart constructor.
+data ListHubContentVersionsResponse = ListHubContentVersionsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of hub content versions, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The summaries of the listed hub content versions.
+    hubContentSummaries :: [HubContentInfo]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHubContentVersionsResponse' 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:
+--
+-- 'nextToken', 'listHubContentVersionsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of hub content versions, use it in the subsequent request.
+--
+-- 'httpStatus', 'listHubContentVersionsResponse_httpStatus' - The response's http status code.
+--
+-- 'hubContentSummaries', 'listHubContentVersionsResponse_hubContentSummaries' - The summaries of the listed hub content versions.
+newListHubContentVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListHubContentVersionsResponse
+newListHubContentVersionsResponse pHttpStatus_ =
+  ListHubContentVersionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      hubContentSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of hub content versions, use it in the subsequent request.
+listHubContentVersionsResponse_nextToken :: Lens.Lens' ListHubContentVersionsResponse (Prelude.Maybe Prelude.Text)
+listHubContentVersionsResponse_nextToken = Lens.lens (\ListHubContentVersionsResponse' {nextToken} -> nextToken) (\s@ListHubContentVersionsResponse' {} a -> s {nextToken = a} :: ListHubContentVersionsResponse)
+
+-- | The response's http status code.
+listHubContentVersionsResponse_httpStatus :: Lens.Lens' ListHubContentVersionsResponse Prelude.Int
+listHubContentVersionsResponse_httpStatus = Lens.lens (\ListHubContentVersionsResponse' {httpStatus} -> httpStatus) (\s@ListHubContentVersionsResponse' {} a -> s {httpStatus = a} :: ListHubContentVersionsResponse)
+
+-- | The summaries of the listed hub content versions.
+listHubContentVersionsResponse_hubContentSummaries :: Lens.Lens' ListHubContentVersionsResponse [HubContentInfo]
+listHubContentVersionsResponse_hubContentSummaries = Lens.lens (\ListHubContentVersionsResponse' {hubContentSummaries} -> hubContentSummaries) (\s@ListHubContentVersionsResponse' {} a -> s {hubContentSummaries = a} :: ListHubContentVersionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListHubContentVersionsResponse
+  where
+  rnf ListHubContentVersionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubContentSummaries
diff --git a/gen/Amazonka/SageMaker/ListHubContents.hs b/gen/Amazonka/SageMaker/ListHubContents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListHubContents.hs
@@ -0,0 +1,319 @@
+{-# 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.ListHubContents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the contents of a hub.
+module Amazonka.SageMaker.ListHubContents
+  ( -- * Creating a Request
+    ListHubContents (..),
+    newListHubContents,
+
+    -- * Request Lenses
+    listHubContents_creationTimeAfter,
+    listHubContents_creationTimeBefore,
+    listHubContents_maxResults,
+    listHubContents_maxSchemaVersion,
+    listHubContents_nameContains,
+    listHubContents_nextToken,
+    listHubContents_sortBy,
+    listHubContents_sortOrder,
+    listHubContents_hubName,
+    listHubContents_hubContentType,
+
+    -- * Destructuring the Response
+    ListHubContentsResponse (..),
+    newListHubContentsResponse,
+
+    -- * Response Lenses
+    listHubContentsResponse_nextToken,
+    listHubContentsResponse_httpStatus,
+    listHubContentsResponse_hubContentSummaries,
+  )
+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:/ 'newListHubContents' smart constructor.
+data ListHubContents = ListHubContents'
+  { -- | Only list hub content that was created after the time specified.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list hub content that was created before the time specified.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum amount of hub content to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The upper bound of the hub content schema verion.
+    maxSchemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | Only list hub content if the name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListHubContents@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of hub
+    -- content, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort hub content versions by either name or creation time.
+    sortBy :: Prelude.Maybe HubContentSortBy,
+    -- | Sort hubs by ascending or descending order.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The name of the hub to list the contents of.
+    hubName :: Prelude.Text,
+    -- | The type of hub content to list.
+    hubContentType :: HubContentType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHubContents' 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:
+--
+-- 'creationTimeAfter', 'listHubContents_creationTimeAfter' - Only list hub content that was created after the time specified.
+--
+-- 'creationTimeBefore', 'listHubContents_creationTimeBefore' - Only list hub content that was created before the time specified.
+--
+-- 'maxResults', 'listHubContents_maxResults' - The maximum amount of hub content to list.
+--
+-- 'maxSchemaVersion', 'listHubContents_maxSchemaVersion' - The upper bound of the hub content schema verion.
+--
+-- 'nameContains', 'listHubContents_nameContains' - Only list hub content if the name contains the specified string.
+--
+-- 'nextToken', 'listHubContents_nextToken' - If the response to a previous @ListHubContents@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of hub
+-- content, use the token in the next request.
+--
+-- 'sortBy', 'listHubContents_sortBy' - Sort hub content versions by either name or creation time.
+--
+-- 'sortOrder', 'listHubContents_sortOrder' - Sort hubs by ascending or descending order.
+--
+-- 'hubName', 'listHubContents_hubName' - The name of the hub to list the contents of.
+--
+-- 'hubContentType', 'listHubContents_hubContentType' - The type of hub content to list.
+newListHubContents ::
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  ListHubContents
+newListHubContents pHubName_ pHubContentType_ =
+  ListHubContents'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      maxSchemaVersion = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      hubName = pHubName_,
+      hubContentType = pHubContentType_
+    }
+
+-- | Only list hub content that was created after the time specified.
+listHubContents_creationTimeAfter :: Lens.Lens' ListHubContents (Prelude.Maybe Prelude.UTCTime)
+listHubContents_creationTimeAfter = Lens.lens (\ListHubContents' {creationTimeAfter} -> creationTimeAfter) (\s@ListHubContents' {} a -> s {creationTimeAfter = a} :: ListHubContents) Prelude.. Lens.mapping Data._Time
+
+-- | Only list hub content that was created before the time specified.
+listHubContents_creationTimeBefore :: Lens.Lens' ListHubContents (Prelude.Maybe Prelude.UTCTime)
+listHubContents_creationTimeBefore = Lens.lens (\ListHubContents' {creationTimeBefore} -> creationTimeBefore) (\s@ListHubContents' {} a -> s {creationTimeBefore = a} :: ListHubContents) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum amount of hub content to list.
+listHubContents_maxResults :: Lens.Lens' ListHubContents (Prelude.Maybe Prelude.Natural)
+listHubContents_maxResults = Lens.lens (\ListHubContents' {maxResults} -> maxResults) (\s@ListHubContents' {} a -> s {maxResults = a} :: ListHubContents)
+
+-- | The upper bound of the hub content schema verion.
+listHubContents_maxSchemaVersion :: Lens.Lens' ListHubContents (Prelude.Maybe Prelude.Text)
+listHubContents_maxSchemaVersion = Lens.lens (\ListHubContents' {maxSchemaVersion} -> maxSchemaVersion) (\s@ListHubContents' {} a -> s {maxSchemaVersion = a} :: ListHubContents)
+
+-- | Only list hub content if the name contains the specified string.
+listHubContents_nameContains :: Lens.Lens' ListHubContents (Prelude.Maybe Prelude.Text)
+listHubContents_nameContains = Lens.lens (\ListHubContents' {nameContains} -> nameContains) (\s@ListHubContents' {} a -> s {nameContains = a} :: ListHubContents)
+
+-- | If the response to a previous @ListHubContents@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of hub
+-- content, use the token in the next request.
+listHubContents_nextToken :: Lens.Lens' ListHubContents (Prelude.Maybe Prelude.Text)
+listHubContents_nextToken = Lens.lens (\ListHubContents' {nextToken} -> nextToken) (\s@ListHubContents' {} a -> s {nextToken = a} :: ListHubContents)
+
+-- | Sort hub content versions by either name or creation time.
+listHubContents_sortBy :: Lens.Lens' ListHubContents (Prelude.Maybe HubContentSortBy)
+listHubContents_sortBy = Lens.lens (\ListHubContents' {sortBy} -> sortBy) (\s@ListHubContents' {} a -> s {sortBy = a} :: ListHubContents)
+
+-- | Sort hubs by ascending or descending order.
+listHubContents_sortOrder :: Lens.Lens' ListHubContents (Prelude.Maybe SortOrder)
+listHubContents_sortOrder = Lens.lens (\ListHubContents' {sortOrder} -> sortOrder) (\s@ListHubContents' {} a -> s {sortOrder = a} :: ListHubContents)
+
+-- | The name of the hub to list the contents of.
+listHubContents_hubName :: Lens.Lens' ListHubContents Prelude.Text
+listHubContents_hubName = Lens.lens (\ListHubContents' {hubName} -> hubName) (\s@ListHubContents' {} a -> s {hubName = a} :: ListHubContents)
+
+-- | The type of hub content to list.
+listHubContents_hubContentType :: Lens.Lens' ListHubContents HubContentType
+listHubContents_hubContentType = Lens.lens (\ListHubContents' {hubContentType} -> hubContentType) (\s@ListHubContents' {} a -> s {hubContentType = a} :: ListHubContents)
+
+instance Core.AWSRequest ListHubContents where
+  type
+    AWSResponse ListHubContents =
+      ListHubContentsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListHubContentsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "HubContentSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListHubContents where
+  hashWithSalt _salt ListHubContents' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` maxSchemaVersion
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubContentType
+
+instance Prelude.NFData ListHubContents where
+  rnf ListHubContents' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf maxSchemaVersion
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubContentType
+
+instance Data.ToHeaders ListHubContents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListHubContents" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListHubContents where
+  toJSON ListHubContents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("MaxSchemaVersion" Data..=)
+              Prelude.<$> maxSchemaVersion,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("HubName" Data..= hubName),
+            Prelude.Just
+              ("HubContentType" Data..= hubContentType)
+          ]
+      )
+
+instance Data.ToPath ListHubContents where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListHubContents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListHubContentsResponse' smart constructor.
+data ListHubContentsResponse = ListHubContentsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of hub content, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The summaries of the listed hub content.
+    hubContentSummaries :: [HubContentInfo]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHubContentsResponse' 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:
+--
+-- 'nextToken', 'listHubContentsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of hub content, use it in the subsequent request.
+--
+-- 'httpStatus', 'listHubContentsResponse_httpStatus' - The response's http status code.
+--
+-- 'hubContentSummaries', 'listHubContentsResponse_hubContentSummaries' - The summaries of the listed hub content.
+newListHubContentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListHubContentsResponse
+newListHubContentsResponse pHttpStatus_ =
+  ListHubContentsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      hubContentSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of hub content, use it in the subsequent request.
+listHubContentsResponse_nextToken :: Lens.Lens' ListHubContentsResponse (Prelude.Maybe Prelude.Text)
+listHubContentsResponse_nextToken = Lens.lens (\ListHubContentsResponse' {nextToken} -> nextToken) (\s@ListHubContentsResponse' {} a -> s {nextToken = a} :: ListHubContentsResponse)
+
+-- | The response's http status code.
+listHubContentsResponse_httpStatus :: Lens.Lens' ListHubContentsResponse Prelude.Int
+listHubContentsResponse_httpStatus = Lens.lens (\ListHubContentsResponse' {httpStatus} -> httpStatus) (\s@ListHubContentsResponse' {} a -> s {httpStatus = a} :: ListHubContentsResponse)
+
+-- | The summaries of the listed hub content.
+listHubContentsResponse_hubContentSummaries :: Lens.Lens' ListHubContentsResponse [HubContentInfo]
+listHubContentsResponse_hubContentSummaries = Lens.lens (\ListHubContentsResponse' {hubContentSummaries} -> hubContentSummaries) (\s@ListHubContentsResponse' {} a -> s {hubContentSummaries = a} :: ListHubContentsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListHubContentsResponse where
+  rnf ListHubContentsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubContentSummaries
diff --git a/gen/Amazonka/SageMaker/ListHubs.hs b/gen/Amazonka/SageMaker/ListHubs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListHubs.hs
@@ -0,0 +1,295 @@
+{-# 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.ListHubs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all existing hubs.
+module Amazonka.SageMaker.ListHubs
+  ( -- * Creating a Request
+    ListHubs (..),
+    newListHubs,
+
+    -- * Request Lenses
+    listHubs_creationTimeAfter,
+    listHubs_creationTimeBefore,
+    listHubs_lastModifiedTimeAfter,
+    listHubs_lastModifiedTimeBefore,
+    listHubs_maxResults,
+    listHubs_nameContains,
+    listHubs_nextToken,
+    listHubs_sortBy,
+    listHubs_sortOrder,
+
+    -- * Destructuring the Response
+    ListHubsResponse (..),
+    newListHubsResponse,
+
+    -- * Response Lenses
+    listHubsResponse_nextToken,
+    listHubsResponse_httpStatus,
+    listHubsResponse_hubSummaries,
+  )
+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:/ 'newListHubs' smart constructor.
+data ListHubs = ListHubs'
+  { -- | Only list hubs that were created after the time specified.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list hubs that were created before the time specified.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Only list hubs that were last modified after the time specified.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list hubs that were last modified before the time specified.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of hubs to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Only list hubs with names that contain the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListHubs@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of hubs, use
+    -- the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort hubs by either name or creation time.
+    sortBy :: Prelude.Maybe HubSortBy,
+    -- | Sort hubs by ascending or descending order.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHubs' 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:
+--
+-- 'creationTimeAfter', 'listHubs_creationTimeAfter' - Only list hubs that were created after the time specified.
+--
+-- 'creationTimeBefore', 'listHubs_creationTimeBefore' - Only list hubs that were created before the time specified.
+--
+-- 'lastModifiedTimeAfter', 'listHubs_lastModifiedTimeAfter' - Only list hubs that were last modified after the time specified.
+--
+-- 'lastModifiedTimeBefore', 'listHubs_lastModifiedTimeBefore' - Only list hubs that were last modified before the time specified.
+--
+-- 'maxResults', 'listHubs_maxResults' - The maximum number of hubs to list.
+--
+-- 'nameContains', 'listHubs_nameContains' - Only list hubs with names that contain the specified string.
+--
+-- 'nextToken', 'listHubs_nextToken' - If the response to a previous @ListHubs@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of hubs, use
+-- the token in the next request.
+--
+-- 'sortBy', 'listHubs_sortBy' - Sort hubs by either name or creation time.
+--
+-- 'sortOrder', 'listHubs_sortOrder' - Sort hubs by ascending or descending order.
+newListHubs ::
+  ListHubs
+newListHubs =
+  ListHubs'
+    { creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | Only list hubs that were created after the time specified.
+listHubs_creationTimeAfter :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.UTCTime)
+listHubs_creationTimeAfter = Lens.lens (\ListHubs' {creationTimeAfter} -> creationTimeAfter) (\s@ListHubs' {} a -> s {creationTimeAfter = a} :: ListHubs) Prelude.. Lens.mapping Data._Time
+
+-- | Only list hubs that were created before the time specified.
+listHubs_creationTimeBefore :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.UTCTime)
+listHubs_creationTimeBefore = Lens.lens (\ListHubs' {creationTimeBefore} -> creationTimeBefore) (\s@ListHubs' {} a -> s {creationTimeBefore = a} :: ListHubs) Prelude.. Lens.mapping Data._Time
+
+-- | Only list hubs that were last modified after the time specified.
+listHubs_lastModifiedTimeAfter :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.UTCTime)
+listHubs_lastModifiedTimeAfter = Lens.lens (\ListHubs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListHubs' {} a -> s {lastModifiedTimeAfter = a} :: ListHubs) Prelude.. Lens.mapping Data._Time
+
+-- | Only list hubs that were last modified before the time specified.
+listHubs_lastModifiedTimeBefore :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.UTCTime)
+listHubs_lastModifiedTimeBefore = Lens.lens (\ListHubs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListHubs' {} a -> s {lastModifiedTimeBefore = a} :: ListHubs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of hubs to list.
+listHubs_maxResults :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.Natural)
+listHubs_maxResults = Lens.lens (\ListHubs' {maxResults} -> maxResults) (\s@ListHubs' {} a -> s {maxResults = a} :: ListHubs)
+
+-- | Only list hubs with names that contain the specified string.
+listHubs_nameContains :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.Text)
+listHubs_nameContains = Lens.lens (\ListHubs' {nameContains} -> nameContains) (\s@ListHubs' {} a -> s {nameContains = a} :: ListHubs)
+
+-- | If the response to a previous @ListHubs@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of hubs, use
+-- the token in the next request.
+listHubs_nextToken :: Lens.Lens' ListHubs (Prelude.Maybe Prelude.Text)
+listHubs_nextToken = Lens.lens (\ListHubs' {nextToken} -> nextToken) (\s@ListHubs' {} a -> s {nextToken = a} :: ListHubs)
+
+-- | Sort hubs by either name or creation time.
+listHubs_sortBy :: Lens.Lens' ListHubs (Prelude.Maybe HubSortBy)
+listHubs_sortBy = Lens.lens (\ListHubs' {sortBy} -> sortBy) (\s@ListHubs' {} a -> s {sortBy = a} :: ListHubs)
+
+-- | Sort hubs by ascending or descending order.
+listHubs_sortOrder :: Lens.Lens' ListHubs (Prelude.Maybe SortOrder)
+listHubs_sortOrder = Lens.lens (\ListHubs' {sortOrder} -> sortOrder) (\s@ListHubs' {} a -> s {sortOrder = a} :: ListHubs)
+
+instance Core.AWSRequest ListHubs where
+  type AWSResponse ListHubs = ListHubsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListHubsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "HubSummaries" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListHubs where
+  hashWithSalt _salt ListHubs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListHubs where
+  rnf ListHubs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListHubs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListHubs" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListHubs where
+  toJSON ListHubs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListHubs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListHubs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListHubsResponse' smart constructor.
+data ListHubsResponse = ListHubsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of hubs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The summaries of the listed hubs.
+    hubSummaries :: [HubInfo]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHubsResponse' 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:
+--
+-- 'nextToken', 'listHubsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of hubs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listHubsResponse_httpStatus' - The response's http status code.
+--
+-- 'hubSummaries', 'listHubsResponse_hubSummaries' - The summaries of the listed hubs.
+newListHubsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListHubsResponse
+newListHubsResponse pHttpStatus_ =
+  ListHubsResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      hubSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of hubs, use it in the subsequent request.
+listHubsResponse_nextToken :: Lens.Lens' ListHubsResponse (Prelude.Maybe Prelude.Text)
+listHubsResponse_nextToken = Lens.lens (\ListHubsResponse' {nextToken} -> nextToken) (\s@ListHubsResponse' {} a -> s {nextToken = a} :: ListHubsResponse)
+
+-- | The response's http status code.
+listHubsResponse_httpStatus :: Lens.Lens' ListHubsResponse Prelude.Int
+listHubsResponse_httpStatus = Lens.lens (\ListHubsResponse' {httpStatus} -> httpStatus) (\s@ListHubsResponse' {} a -> s {httpStatus = a} :: ListHubsResponse)
+
+-- | The summaries of the listed hubs.
+listHubsResponse_hubSummaries :: Lens.Lens' ListHubsResponse [HubInfo]
+listHubsResponse_hubSummaries = Lens.lens (\ListHubsResponse' {hubSummaries} -> hubSummaries) (\s@ListHubsResponse' {} a -> s {hubSummaries = a} :: ListHubsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListHubsResponse where
+  rnf ListHubsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubSummaries
diff --git a/gen/Amazonka/SageMaker/ListHumanTaskUis.hs b/gen/Amazonka/SageMaker/ListHumanTaskUis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListHumanTaskUis.hs
@@ -0,0 +1,281 @@
+{-# 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.ListHumanTaskUis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about the human task user interfaces in your
+-- account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListHumanTaskUis
+  ( -- * Creating a Request
+    ListHumanTaskUis (..),
+    newListHumanTaskUis,
+
+    -- * Request Lenses
+    listHumanTaskUis_creationTimeAfter,
+    listHumanTaskUis_creationTimeBefore,
+    listHumanTaskUis_maxResults,
+    listHumanTaskUis_nextToken,
+    listHumanTaskUis_sortOrder,
+
+    -- * Destructuring the Response
+    ListHumanTaskUisResponse (..),
+    newListHumanTaskUisResponse,
+
+    -- * Response Lenses
+    listHumanTaskUisResponse_nextToken,
+    listHumanTaskUisResponse_httpStatus,
+    listHumanTaskUisResponse_humanTaskUiSummaries,
+  )
+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:/ 'newListHumanTaskUis' smart constructor.
+data ListHumanTaskUis = ListHumanTaskUis'
+  { -- | A filter that returns only human task user interfaces with a creation
+    -- time greater than or equal to the specified timestamp.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only human task user interfaces that were created
+    -- before the specified timestamp.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The total number of items to return. If the total number of available
+    -- items is more than the value specified in @MaxResults@, then a
+    -- @NextToken@ will be provided in the output that you can use to resume
+    -- pagination.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token to resume pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An optional value that specifies whether you want the results sorted in
+    -- @Ascending@ or @Descending@ order.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHumanTaskUis' 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:
+--
+-- 'creationTimeAfter', 'listHumanTaskUis_creationTimeAfter' - A filter that returns only human task user interfaces with a creation
+-- time greater than or equal to the specified timestamp.
+--
+-- 'creationTimeBefore', 'listHumanTaskUis_creationTimeBefore' - A filter that returns only human task user interfaces that were created
+-- before the specified timestamp.
+--
+-- 'maxResults', 'listHumanTaskUis_maxResults' - The total number of items to return. If the total number of available
+-- items is more than the value specified in @MaxResults@, then a
+-- @NextToken@ will be provided in the output that you can use to resume
+-- pagination.
+--
+-- 'nextToken', 'listHumanTaskUis_nextToken' - A token to resume pagination.
+--
+-- 'sortOrder', 'listHumanTaskUis_sortOrder' - An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+newListHumanTaskUis ::
+  ListHumanTaskUis
+newListHumanTaskUis =
+  ListHumanTaskUis'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only human task user interfaces with a creation
+-- time greater than or equal to the specified timestamp.
+listHumanTaskUis_creationTimeAfter :: Lens.Lens' ListHumanTaskUis (Prelude.Maybe Prelude.UTCTime)
+listHumanTaskUis_creationTimeAfter = Lens.lens (\ListHumanTaskUis' {creationTimeAfter} -> creationTimeAfter) (\s@ListHumanTaskUis' {} a -> s {creationTimeAfter = a} :: ListHumanTaskUis) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only human task user interfaces that were created
+-- before the specified timestamp.
+listHumanTaskUis_creationTimeBefore :: Lens.Lens' ListHumanTaskUis (Prelude.Maybe Prelude.UTCTime)
+listHumanTaskUis_creationTimeBefore = Lens.lens (\ListHumanTaskUis' {creationTimeBefore} -> creationTimeBefore) (\s@ListHumanTaskUis' {} a -> s {creationTimeBefore = a} :: ListHumanTaskUis) Prelude.. Lens.mapping Data._Time
+
+-- | The total number of items to return. If the total number of available
+-- items is more than the value specified in @MaxResults@, then a
+-- @NextToken@ will be provided in the output that you can use to resume
+-- pagination.
+listHumanTaskUis_maxResults :: Lens.Lens' ListHumanTaskUis (Prelude.Maybe Prelude.Natural)
+listHumanTaskUis_maxResults = Lens.lens (\ListHumanTaskUis' {maxResults} -> maxResults) (\s@ListHumanTaskUis' {} a -> s {maxResults = a} :: ListHumanTaskUis)
+
+-- | A token to resume pagination.
+listHumanTaskUis_nextToken :: Lens.Lens' ListHumanTaskUis (Prelude.Maybe Prelude.Text)
+listHumanTaskUis_nextToken = Lens.lens (\ListHumanTaskUis' {nextToken} -> nextToken) (\s@ListHumanTaskUis' {} a -> s {nextToken = a} :: ListHumanTaskUis)
+
+-- | An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+listHumanTaskUis_sortOrder :: Lens.Lens' ListHumanTaskUis (Prelude.Maybe SortOrder)
+listHumanTaskUis_sortOrder = Lens.lens (\ListHumanTaskUis' {sortOrder} -> sortOrder) (\s@ListHumanTaskUis' {} a -> s {sortOrder = a} :: ListHumanTaskUis)
+
+instance Core.AWSPager ListHumanTaskUis where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listHumanTaskUisResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listHumanTaskUisResponse_humanTaskUiSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listHumanTaskUis_nextToken
+          Lens..~ rs
+          Lens.^? listHumanTaskUisResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListHumanTaskUis where
+  type
+    AWSResponse ListHumanTaskUis =
+      ListHumanTaskUisResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListHumanTaskUisResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "HumanTaskUiSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListHumanTaskUis where
+  hashWithSalt _salt ListHumanTaskUis' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListHumanTaskUis where
+  rnf ListHumanTaskUis' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListHumanTaskUis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListHumanTaskUis" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListHumanTaskUis where
+  toJSON ListHumanTaskUis' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListHumanTaskUis where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListHumanTaskUis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListHumanTaskUisResponse' smart constructor.
+data ListHumanTaskUisResponse = ListHumanTaskUisResponse'
+  { -- | A token to resume pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of objects describing the human task user interfaces.
+    humanTaskUiSummaries :: [HumanTaskUiSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHumanTaskUisResponse' 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:
+--
+-- 'nextToken', 'listHumanTaskUisResponse_nextToken' - A token to resume pagination.
+--
+-- 'httpStatus', 'listHumanTaskUisResponse_httpStatus' - The response's http status code.
+--
+-- 'humanTaskUiSummaries', 'listHumanTaskUisResponse_humanTaskUiSummaries' - An array of objects describing the human task user interfaces.
+newListHumanTaskUisResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListHumanTaskUisResponse
+newListHumanTaskUisResponse pHttpStatus_ =
+  ListHumanTaskUisResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      humanTaskUiSummaries = Prelude.mempty
+    }
+
+-- | A token to resume pagination.
+listHumanTaskUisResponse_nextToken :: Lens.Lens' ListHumanTaskUisResponse (Prelude.Maybe Prelude.Text)
+listHumanTaskUisResponse_nextToken = Lens.lens (\ListHumanTaskUisResponse' {nextToken} -> nextToken) (\s@ListHumanTaskUisResponse' {} a -> s {nextToken = a} :: ListHumanTaskUisResponse)
+
+-- | The response's http status code.
+listHumanTaskUisResponse_httpStatus :: Lens.Lens' ListHumanTaskUisResponse Prelude.Int
+listHumanTaskUisResponse_httpStatus = Lens.lens (\ListHumanTaskUisResponse' {httpStatus} -> httpStatus) (\s@ListHumanTaskUisResponse' {} a -> s {httpStatus = a} :: ListHumanTaskUisResponse)
+
+-- | An array of objects describing the human task user interfaces.
+listHumanTaskUisResponse_humanTaskUiSummaries :: Lens.Lens' ListHumanTaskUisResponse [HumanTaskUiSummary]
+listHumanTaskUisResponse_humanTaskUiSummaries = Lens.lens (\ListHumanTaskUisResponse' {humanTaskUiSummaries} -> humanTaskUiSummaries) (\s@ListHumanTaskUisResponse' {} a -> s {humanTaskUiSummaries = a} :: ListHumanTaskUisResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListHumanTaskUisResponse where
+  rnf ListHumanTaskUisResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf humanTaskUiSummaries
diff --git a/gen/Amazonka/SageMaker/ListHyperParameterTuningJobs.hs b/gen/Amazonka/SageMaker/ListHyperParameterTuningJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListHyperParameterTuningJobs.hs
@@ -0,0 +1,369 @@
+{-# 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.ListHyperParameterTuningJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of HyperParameterTuningJobSummary objects that describe the
+-- hyperparameter tuning jobs launched in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListHyperParameterTuningJobs
+  ( -- * Creating a Request
+    ListHyperParameterTuningJobs (..),
+    newListHyperParameterTuningJobs,
+
+    -- * Request Lenses
+    listHyperParameterTuningJobs_creationTimeAfter,
+    listHyperParameterTuningJobs_creationTimeBefore,
+    listHyperParameterTuningJobs_lastModifiedTimeAfter,
+    listHyperParameterTuningJobs_lastModifiedTimeBefore,
+    listHyperParameterTuningJobs_maxResults,
+    listHyperParameterTuningJobs_nameContains,
+    listHyperParameterTuningJobs_nextToken,
+    listHyperParameterTuningJobs_sortBy,
+    listHyperParameterTuningJobs_sortOrder,
+    listHyperParameterTuningJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListHyperParameterTuningJobsResponse (..),
+    newListHyperParameterTuningJobsResponse,
+
+    -- * Response Lenses
+    listHyperParameterTuningJobsResponse_nextToken,
+    listHyperParameterTuningJobsResponse_httpStatus,
+    listHyperParameterTuningJobsResponse_hyperParameterTuningJobSummaries,
+  )
+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:/ 'newListHyperParameterTuningJobs' smart constructor.
+data ListHyperParameterTuningJobs = ListHyperParameterTuningJobs'
+  { -- | A filter that returns only tuning jobs that were created after the
+    -- specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only tuning jobs that were created before the
+    -- specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only tuning jobs that were modified after the
+    -- specified time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only tuning jobs that were modified before the
+    -- specified time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of tuning jobs to return. The default value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the tuning job name. This filter returns only tuning jobs
+    -- whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListHyperParameterTuningJobs@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of tuning jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @Name@.
+    sortBy :: Prelude.Maybe HyperParameterTuningJobSortByOptions,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only tuning jobs with the specified status.
+    statusEquals :: Prelude.Maybe HyperParameterTuningJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHyperParameterTuningJobs' 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:
+--
+-- 'creationTimeAfter', 'listHyperParameterTuningJobs_creationTimeAfter' - A filter that returns only tuning jobs that were created after the
+-- specified time.
+--
+-- 'creationTimeBefore', 'listHyperParameterTuningJobs_creationTimeBefore' - A filter that returns only tuning jobs that were created before the
+-- specified time.
+--
+-- 'lastModifiedTimeAfter', 'listHyperParameterTuningJobs_lastModifiedTimeAfter' - A filter that returns only tuning jobs that were modified after the
+-- specified time.
+--
+-- 'lastModifiedTimeBefore', 'listHyperParameterTuningJobs_lastModifiedTimeBefore' - A filter that returns only tuning jobs that were modified before the
+-- specified time.
+--
+-- 'maxResults', 'listHyperParameterTuningJobs_maxResults' - The maximum number of tuning jobs to return. The default value is 10.
+--
+-- 'nameContains', 'listHyperParameterTuningJobs_nameContains' - A string in the tuning job name. This filter returns only tuning jobs
+-- whose name contains the specified string.
+--
+-- 'nextToken', 'listHyperParameterTuningJobs_nextToken' - If the result of the previous @ListHyperParameterTuningJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of tuning jobs, use the token in the next request.
+--
+-- 'sortBy', 'listHyperParameterTuningJobs_sortBy' - The field to sort results by. The default is @Name@.
+--
+-- 'sortOrder', 'listHyperParameterTuningJobs_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listHyperParameterTuningJobs_statusEquals' - A filter that returns only tuning jobs with the specified status.
+newListHyperParameterTuningJobs ::
+  ListHyperParameterTuningJobs
+newListHyperParameterTuningJobs =
+  ListHyperParameterTuningJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only tuning jobs that were created after the
+-- specified time.
+listHyperParameterTuningJobs_creationTimeAfter :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.UTCTime)
+listHyperParameterTuningJobs_creationTimeAfter = Lens.lens (\ListHyperParameterTuningJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListHyperParameterTuningJobs' {} a -> s {creationTimeAfter = a} :: ListHyperParameterTuningJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only tuning jobs that were created before the
+-- specified time.
+listHyperParameterTuningJobs_creationTimeBefore :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.UTCTime)
+listHyperParameterTuningJobs_creationTimeBefore = Lens.lens (\ListHyperParameterTuningJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListHyperParameterTuningJobs' {} a -> s {creationTimeBefore = a} :: ListHyperParameterTuningJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only tuning jobs that were modified after the
+-- specified time.
+listHyperParameterTuningJobs_lastModifiedTimeAfter :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.UTCTime)
+listHyperParameterTuningJobs_lastModifiedTimeAfter = Lens.lens (\ListHyperParameterTuningJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListHyperParameterTuningJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListHyperParameterTuningJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only tuning jobs that were modified before the
+-- specified time.
+listHyperParameterTuningJobs_lastModifiedTimeBefore :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.UTCTime)
+listHyperParameterTuningJobs_lastModifiedTimeBefore = Lens.lens (\ListHyperParameterTuningJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListHyperParameterTuningJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListHyperParameterTuningJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of tuning jobs to return. The default value is 10.
+listHyperParameterTuningJobs_maxResults :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.Natural)
+listHyperParameterTuningJobs_maxResults = Lens.lens (\ListHyperParameterTuningJobs' {maxResults} -> maxResults) (\s@ListHyperParameterTuningJobs' {} a -> s {maxResults = a} :: ListHyperParameterTuningJobs)
+
+-- | A string in the tuning job name. This filter returns only tuning jobs
+-- whose name contains the specified string.
+listHyperParameterTuningJobs_nameContains :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.Text)
+listHyperParameterTuningJobs_nameContains = Lens.lens (\ListHyperParameterTuningJobs' {nameContains} -> nameContains) (\s@ListHyperParameterTuningJobs' {} a -> s {nameContains = a} :: ListHyperParameterTuningJobs)
+
+-- | If the result of the previous @ListHyperParameterTuningJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of tuning jobs, use the token in the next request.
+listHyperParameterTuningJobs_nextToken :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe Prelude.Text)
+listHyperParameterTuningJobs_nextToken = Lens.lens (\ListHyperParameterTuningJobs' {nextToken} -> nextToken) (\s@ListHyperParameterTuningJobs' {} a -> s {nextToken = a} :: ListHyperParameterTuningJobs)
+
+-- | The field to sort results by. The default is @Name@.
+listHyperParameterTuningJobs_sortBy :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe HyperParameterTuningJobSortByOptions)
+listHyperParameterTuningJobs_sortBy = Lens.lens (\ListHyperParameterTuningJobs' {sortBy} -> sortBy) (\s@ListHyperParameterTuningJobs' {} a -> s {sortBy = a} :: ListHyperParameterTuningJobs)
+
+-- | The sort order for results. The default is @Ascending@.
+listHyperParameterTuningJobs_sortOrder :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe SortOrder)
+listHyperParameterTuningJobs_sortOrder = Lens.lens (\ListHyperParameterTuningJobs' {sortOrder} -> sortOrder) (\s@ListHyperParameterTuningJobs' {} a -> s {sortOrder = a} :: ListHyperParameterTuningJobs)
+
+-- | A filter that returns only tuning jobs with the specified status.
+listHyperParameterTuningJobs_statusEquals :: Lens.Lens' ListHyperParameterTuningJobs (Prelude.Maybe HyperParameterTuningJobStatus)
+listHyperParameterTuningJobs_statusEquals = Lens.lens (\ListHyperParameterTuningJobs' {statusEquals} -> statusEquals) (\s@ListHyperParameterTuningJobs' {} a -> s {statusEquals = a} :: ListHyperParameterTuningJobs)
+
+instance Core.AWSPager ListHyperParameterTuningJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listHyperParameterTuningJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listHyperParameterTuningJobsResponse_hyperParameterTuningJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listHyperParameterTuningJobs_nextToken
+          Lens..~ rs
+          Lens.^? listHyperParameterTuningJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListHyperParameterTuningJobs where
+  type
+    AWSResponse ListHyperParameterTuningJobs =
+      ListHyperParameterTuningJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListHyperParameterTuningJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "HyperParameterTuningJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    ListHyperParameterTuningJobs
+  where
+  hashWithSalt _salt ListHyperParameterTuningJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListHyperParameterTuningJobs where
+  rnf ListHyperParameterTuningJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListHyperParameterTuningJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListHyperParameterTuningJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListHyperParameterTuningJobs where
+  toJSON ListHyperParameterTuningJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListHyperParameterTuningJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListHyperParameterTuningJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListHyperParameterTuningJobsResponse' smart constructor.
+data ListHyperParameterTuningJobsResponse = ListHyperParameterTuningJobsResponse'
+  { -- | If the result of this @ListHyperParameterTuningJobs@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of tuning jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of HyperParameterTuningJobSummary objects that describe the
+    -- tuning jobs that the @ListHyperParameterTuningJobs@ request returned.
+    hyperParameterTuningJobSummaries :: [HyperParameterTuningJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHyperParameterTuningJobsResponse' 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:
+--
+-- 'nextToken', 'listHyperParameterTuningJobsResponse_nextToken' - If the result of this @ListHyperParameterTuningJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of tuning jobs, use the token in the next request.
+--
+-- 'httpStatus', 'listHyperParameterTuningJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'hyperParameterTuningJobSummaries', 'listHyperParameterTuningJobsResponse_hyperParameterTuningJobSummaries' - A list of HyperParameterTuningJobSummary objects that describe the
+-- tuning jobs that the @ListHyperParameterTuningJobs@ request returned.
+newListHyperParameterTuningJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListHyperParameterTuningJobsResponse
+newListHyperParameterTuningJobsResponse pHttpStatus_ =
+  ListHyperParameterTuningJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      hyperParameterTuningJobSummaries =
+        Prelude.mempty
+    }
+
+-- | If the result of this @ListHyperParameterTuningJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of tuning jobs, use the token in the next request.
+listHyperParameterTuningJobsResponse_nextToken :: Lens.Lens' ListHyperParameterTuningJobsResponse (Prelude.Maybe Prelude.Text)
+listHyperParameterTuningJobsResponse_nextToken = Lens.lens (\ListHyperParameterTuningJobsResponse' {nextToken} -> nextToken) (\s@ListHyperParameterTuningJobsResponse' {} a -> s {nextToken = a} :: ListHyperParameterTuningJobsResponse)
+
+-- | The response's http status code.
+listHyperParameterTuningJobsResponse_httpStatus :: Lens.Lens' ListHyperParameterTuningJobsResponse Prelude.Int
+listHyperParameterTuningJobsResponse_httpStatus = Lens.lens (\ListHyperParameterTuningJobsResponse' {httpStatus} -> httpStatus) (\s@ListHyperParameterTuningJobsResponse' {} a -> s {httpStatus = a} :: ListHyperParameterTuningJobsResponse)
+
+-- | A list of HyperParameterTuningJobSummary objects that describe the
+-- tuning jobs that the @ListHyperParameterTuningJobs@ request returned.
+listHyperParameterTuningJobsResponse_hyperParameterTuningJobSummaries :: Lens.Lens' ListHyperParameterTuningJobsResponse [HyperParameterTuningJobSummary]
+listHyperParameterTuningJobsResponse_hyperParameterTuningJobSummaries = Lens.lens (\ListHyperParameterTuningJobsResponse' {hyperParameterTuningJobSummaries} -> hyperParameterTuningJobSummaries) (\s@ListHyperParameterTuningJobsResponse' {} a -> s {hyperParameterTuningJobSummaries = a} :: ListHyperParameterTuningJobsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListHyperParameterTuningJobsResponse
+  where
+  rnf ListHyperParameterTuningJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListImageVersions.hs b/gen/Amazonka/SageMaker/ListImageVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListImageVersions.hs
@@ -0,0 +1,340 @@
+{-# 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.ListImageVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the versions of a specified image and their properties. The list
+-- can be filtered by creation time or modified time.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListImageVersions
+  ( -- * Creating a Request
+    ListImageVersions (..),
+    newListImageVersions,
+
+    -- * Request Lenses
+    listImageVersions_creationTimeAfter,
+    listImageVersions_creationTimeBefore,
+    listImageVersions_lastModifiedTimeAfter,
+    listImageVersions_lastModifiedTimeBefore,
+    listImageVersions_maxResults,
+    listImageVersions_nextToken,
+    listImageVersions_sortBy,
+    listImageVersions_sortOrder,
+    listImageVersions_imageName,
+
+    -- * Destructuring the Response
+    ListImageVersionsResponse (..),
+    newListImageVersionsResponse,
+
+    -- * Response Lenses
+    listImageVersionsResponse_imageVersions,
+    listImageVersionsResponse_nextToken,
+    listImageVersionsResponse_httpStatus,
+  )
+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:/ 'newListImageVersions' smart constructor.
+data ListImageVersions = ListImageVersions'
+  { -- | A filter that returns only versions created on or after the specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only versions created on or before the specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only versions modified on or after the specified
+    -- time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only versions modified on or before the specified
+    -- time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of versions to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListImageVersions@ didn\'t return the full set
+    -- of versions, the call returns a token for getting the next set of
+    -- versions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CREATION_TIME@.
+    sortBy :: Prelude.Maybe ImageVersionSortBy,
+    -- | The sort order. The default value is @DESCENDING@.
+    sortOrder :: Prelude.Maybe ImageVersionSortOrder,
+    -- | The name of the image to list the versions of.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListImageVersions' 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:
+--
+-- 'creationTimeAfter', 'listImageVersions_creationTimeAfter' - A filter that returns only versions created on or after the specified
+-- time.
+--
+-- 'creationTimeBefore', 'listImageVersions_creationTimeBefore' - A filter that returns only versions created on or before the specified
+-- time.
+--
+-- 'lastModifiedTimeAfter', 'listImageVersions_lastModifiedTimeAfter' - A filter that returns only versions modified on or after the specified
+-- time.
+--
+-- 'lastModifiedTimeBefore', 'listImageVersions_lastModifiedTimeBefore' - A filter that returns only versions modified on or before the specified
+-- time.
+--
+-- 'maxResults', 'listImageVersions_maxResults' - The maximum number of versions to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listImageVersions_nextToken' - If the previous call to @ListImageVersions@ didn\'t return the full set
+-- of versions, the call returns a token for getting the next set of
+-- versions.
+--
+-- 'sortBy', 'listImageVersions_sortBy' - The property used to sort results. The default value is @CREATION_TIME@.
+--
+-- 'sortOrder', 'listImageVersions_sortOrder' - The sort order. The default value is @DESCENDING@.
+--
+-- 'imageName', 'listImageVersions_imageName' - The name of the image to list the versions of.
+newListImageVersions ::
+  -- | 'imageName'
+  Prelude.Text ->
+  ListImageVersions
+newListImageVersions pImageName_ =
+  ListImageVersions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      imageName = pImageName_
+    }
+
+-- | A filter that returns only versions created on or after the specified
+-- time.
+listImageVersions_creationTimeAfter :: Lens.Lens' ListImageVersions (Prelude.Maybe Prelude.UTCTime)
+listImageVersions_creationTimeAfter = Lens.lens (\ListImageVersions' {creationTimeAfter} -> creationTimeAfter) (\s@ListImageVersions' {} a -> s {creationTimeAfter = a} :: ListImageVersions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only versions created on or before the specified
+-- time.
+listImageVersions_creationTimeBefore :: Lens.Lens' ListImageVersions (Prelude.Maybe Prelude.UTCTime)
+listImageVersions_creationTimeBefore = Lens.lens (\ListImageVersions' {creationTimeBefore} -> creationTimeBefore) (\s@ListImageVersions' {} a -> s {creationTimeBefore = a} :: ListImageVersions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only versions modified on or after the specified
+-- time.
+listImageVersions_lastModifiedTimeAfter :: Lens.Lens' ListImageVersions (Prelude.Maybe Prelude.UTCTime)
+listImageVersions_lastModifiedTimeAfter = Lens.lens (\ListImageVersions' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListImageVersions' {} a -> s {lastModifiedTimeAfter = a} :: ListImageVersions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only versions modified on or before the specified
+-- time.
+listImageVersions_lastModifiedTimeBefore :: Lens.Lens' ListImageVersions (Prelude.Maybe Prelude.UTCTime)
+listImageVersions_lastModifiedTimeBefore = Lens.lens (\ListImageVersions' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListImageVersions' {} a -> s {lastModifiedTimeBefore = a} :: ListImageVersions) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of versions to return in the response. The default
+-- value is 10.
+listImageVersions_maxResults :: Lens.Lens' ListImageVersions (Prelude.Maybe Prelude.Natural)
+listImageVersions_maxResults = Lens.lens (\ListImageVersions' {maxResults} -> maxResults) (\s@ListImageVersions' {} a -> s {maxResults = a} :: ListImageVersions)
+
+-- | If the previous call to @ListImageVersions@ didn\'t return the full set
+-- of versions, the call returns a token for getting the next set of
+-- versions.
+listImageVersions_nextToken :: Lens.Lens' ListImageVersions (Prelude.Maybe Prelude.Text)
+listImageVersions_nextToken = Lens.lens (\ListImageVersions' {nextToken} -> nextToken) (\s@ListImageVersions' {} a -> s {nextToken = a} :: ListImageVersions)
+
+-- | The property used to sort results. The default value is @CREATION_TIME@.
+listImageVersions_sortBy :: Lens.Lens' ListImageVersions (Prelude.Maybe ImageVersionSortBy)
+listImageVersions_sortBy = Lens.lens (\ListImageVersions' {sortBy} -> sortBy) (\s@ListImageVersions' {} a -> s {sortBy = a} :: ListImageVersions)
+
+-- | The sort order. The default value is @DESCENDING@.
+listImageVersions_sortOrder :: Lens.Lens' ListImageVersions (Prelude.Maybe ImageVersionSortOrder)
+listImageVersions_sortOrder = Lens.lens (\ListImageVersions' {sortOrder} -> sortOrder) (\s@ListImageVersions' {} a -> s {sortOrder = a} :: ListImageVersions)
+
+-- | The name of the image to list the versions of.
+listImageVersions_imageName :: Lens.Lens' ListImageVersions Prelude.Text
+listImageVersions_imageName = Lens.lens (\ListImageVersions' {imageName} -> imageName) (\s@ListImageVersions' {} a -> s {imageName = a} :: ListImageVersions)
+
+instance Core.AWSPager ListImageVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listImageVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listImageVersionsResponse_imageVersions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listImageVersions_nextToken
+          Lens..~ rs
+          Lens.^? listImageVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListImageVersions where
+  type
+    AWSResponse ListImageVersions =
+      ListImageVersionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListImageVersionsResponse'
+            Prelude.<$> (x Data..?> "ImageVersions" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListImageVersions where
+  hashWithSalt _salt ListImageVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData ListImageVersions where
+  rnf ListImageVersions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders ListImageVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListImageVersions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListImageVersions where
+  toJSON ListImageVersions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath ListImageVersions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListImageVersions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListImageVersionsResponse' smart constructor.
+data ListImageVersionsResponse = ListImageVersionsResponse'
+  { -- | A list of versions and their properties.
+    imageVersions :: Prelude.Maybe [ImageVersion],
+    -- | A token for getting the next set of versions, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListImageVersionsResponse' 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:
+--
+-- 'imageVersions', 'listImageVersionsResponse_imageVersions' - A list of versions and their properties.
+--
+-- 'nextToken', 'listImageVersionsResponse_nextToken' - A token for getting the next set of versions, if there are any.
+--
+-- 'httpStatus', 'listImageVersionsResponse_httpStatus' - The response's http status code.
+newListImageVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListImageVersionsResponse
+newListImageVersionsResponse pHttpStatus_ =
+  ListImageVersionsResponse'
+    { imageVersions =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of versions and their properties.
+listImageVersionsResponse_imageVersions :: Lens.Lens' ListImageVersionsResponse (Prelude.Maybe [ImageVersion])
+listImageVersionsResponse_imageVersions = Lens.lens (\ListImageVersionsResponse' {imageVersions} -> imageVersions) (\s@ListImageVersionsResponse' {} a -> s {imageVersions = a} :: ListImageVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of versions, if there are any.
+listImageVersionsResponse_nextToken :: Lens.Lens' ListImageVersionsResponse (Prelude.Maybe Prelude.Text)
+listImageVersionsResponse_nextToken = Lens.lens (\ListImageVersionsResponse' {nextToken} -> nextToken) (\s@ListImageVersionsResponse' {} a -> s {nextToken = a} :: ListImageVersionsResponse)
+
+-- | The response's http status code.
+listImageVersionsResponse_httpStatus :: Lens.Lens' ListImageVersionsResponse Prelude.Int
+listImageVersionsResponse_httpStatus = Lens.lens (\ListImageVersionsResponse' {httpStatus} -> httpStatus) (\s@ListImageVersionsResponse' {} a -> s {httpStatus = a} :: ListImageVersionsResponse)
+
+instance Prelude.NFData ListImageVersionsResponse where
+  rnf ListImageVersionsResponse' {..} =
+    Prelude.rnf imageVersions
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListImages.hs b/gen/Amazonka/SageMaker/ListImages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListImages.hs
@@ -0,0 +1,333 @@
+{-# 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.ListImages
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the images in your account and their properties. The list can be
+-- filtered by creation time or modified time, and whether the image name
+-- contains a specified string.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListImages
+  ( -- * Creating a Request
+    ListImages (..),
+    newListImages,
+
+    -- * Request Lenses
+    listImages_creationTimeAfter,
+    listImages_creationTimeBefore,
+    listImages_lastModifiedTimeAfter,
+    listImages_lastModifiedTimeBefore,
+    listImages_maxResults,
+    listImages_nameContains,
+    listImages_nextToken,
+    listImages_sortBy,
+    listImages_sortOrder,
+
+    -- * Destructuring the Response
+    ListImagesResponse (..),
+    newListImagesResponse,
+
+    -- * Response Lenses
+    listImagesResponse_images,
+    listImagesResponse_nextToken,
+    listImagesResponse_httpStatus,
+  )
+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:/ 'newListImages' smart constructor.
+data ListImages = ListImages'
+  { -- | A filter that returns only images created on or after the specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only images created on or before the specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only images modified on or after the specified
+    -- time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only images modified on or before the specified
+    -- time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of images to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter that returns only images whose name contains the specified
+    -- string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the previous call to @ListImages@ didn\'t return the full set of
+    -- images, the call returns a token for getting the next set of images.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CREATION_TIME@.
+    sortBy :: Prelude.Maybe ImageSortBy,
+    -- | The sort order. The default value is @DESCENDING@.
+    sortOrder :: Prelude.Maybe ImageSortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListImages' 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:
+--
+-- 'creationTimeAfter', 'listImages_creationTimeAfter' - A filter that returns only images created on or after the specified
+-- time.
+--
+-- 'creationTimeBefore', 'listImages_creationTimeBefore' - A filter that returns only images created on or before the specified
+-- time.
+--
+-- 'lastModifiedTimeAfter', 'listImages_lastModifiedTimeAfter' - A filter that returns only images modified on or after the specified
+-- time.
+--
+-- 'lastModifiedTimeBefore', 'listImages_lastModifiedTimeBefore' - A filter that returns only images modified on or before the specified
+-- time.
+--
+-- 'maxResults', 'listImages_maxResults' - The maximum number of images to return in the response. The default
+-- value is 10.
+--
+-- 'nameContains', 'listImages_nameContains' - A filter that returns only images whose name contains the specified
+-- string.
+--
+-- 'nextToken', 'listImages_nextToken' - If the previous call to @ListImages@ didn\'t return the full set of
+-- images, the call returns a token for getting the next set of images.
+--
+-- 'sortBy', 'listImages_sortBy' - The property used to sort results. The default value is @CREATION_TIME@.
+--
+-- 'sortOrder', 'listImages_sortOrder' - The sort order. The default value is @DESCENDING@.
+newListImages ::
+  ListImages
+newListImages =
+  ListImages'
+    { creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only images created on or after the specified
+-- time.
+listImages_creationTimeAfter :: Lens.Lens' ListImages (Prelude.Maybe Prelude.UTCTime)
+listImages_creationTimeAfter = Lens.lens (\ListImages' {creationTimeAfter} -> creationTimeAfter) (\s@ListImages' {} a -> s {creationTimeAfter = a} :: ListImages) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only images created on or before the specified
+-- time.
+listImages_creationTimeBefore :: Lens.Lens' ListImages (Prelude.Maybe Prelude.UTCTime)
+listImages_creationTimeBefore = Lens.lens (\ListImages' {creationTimeBefore} -> creationTimeBefore) (\s@ListImages' {} a -> s {creationTimeBefore = a} :: ListImages) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only images modified on or after the specified
+-- time.
+listImages_lastModifiedTimeAfter :: Lens.Lens' ListImages (Prelude.Maybe Prelude.UTCTime)
+listImages_lastModifiedTimeAfter = Lens.lens (\ListImages' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListImages' {} a -> s {lastModifiedTimeAfter = a} :: ListImages) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only images modified on or before the specified
+-- time.
+listImages_lastModifiedTimeBefore :: Lens.Lens' ListImages (Prelude.Maybe Prelude.UTCTime)
+listImages_lastModifiedTimeBefore = Lens.lens (\ListImages' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListImages' {} a -> s {lastModifiedTimeBefore = a} :: ListImages) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of images to return in the response. The default
+-- value is 10.
+listImages_maxResults :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Natural)
+listImages_maxResults = Lens.lens (\ListImages' {maxResults} -> maxResults) (\s@ListImages' {} a -> s {maxResults = a} :: ListImages)
+
+-- | A filter that returns only images whose name contains the specified
+-- string.
+listImages_nameContains :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Text)
+listImages_nameContains = Lens.lens (\ListImages' {nameContains} -> nameContains) (\s@ListImages' {} a -> s {nameContains = a} :: ListImages)
+
+-- | If the previous call to @ListImages@ didn\'t return the full set of
+-- images, the call returns a token for getting the next set of images.
+listImages_nextToken :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Text)
+listImages_nextToken = Lens.lens (\ListImages' {nextToken} -> nextToken) (\s@ListImages' {} a -> s {nextToken = a} :: ListImages)
+
+-- | The property used to sort results. The default value is @CREATION_TIME@.
+listImages_sortBy :: Lens.Lens' ListImages (Prelude.Maybe ImageSortBy)
+listImages_sortBy = Lens.lens (\ListImages' {sortBy} -> sortBy) (\s@ListImages' {} a -> s {sortBy = a} :: ListImages)
+
+-- | The sort order. The default value is @DESCENDING@.
+listImages_sortOrder :: Lens.Lens' ListImages (Prelude.Maybe ImageSortOrder)
+listImages_sortOrder = Lens.lens (\ListImages' {sortOrder} -> sortOrder) (\s@ListImages' {} a -> s {sortOrder = a} :: ListImages)
+
+instance Core.AWSPager ListImages where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listImagesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listImagesResponse_images
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listImages_nextToken
+          Lens..~ rs
+          Lens.^? listImagesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListImages where
+  type AWSResponse ListImages = ListImagesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListImagesResponse'
+            Prelude.<$> (x Data..?> "Images" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListImages where
+  hashWithSalt _salt ListImages' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListImages where
+  rnf ListImages' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListImages where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListImages" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListImages where
+  toJSON ListImages' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListImages where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListImages where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListImagesResponse' smart constructor.
+data ListImagesResponse = ListImagesResponse'
+  { -- | A list of images and their properties.
+    images :: Prelude.Maybe [Image],
+    -- | A token for getting the next set of images, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListImagesResponse' 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:
+--
+-- 'images', 'listImagesResponse_images' - A list of images and their properties.
+--
+-- 'nextToken', 'listImagesResponse_nextToken' - A token for getting the next set of images, if there are any.
+--
+-- 'httpStatus', 'listImagesResponse_httpStatus' - The response's http status code.
+newListImagesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListImagesResponse
+newListImagesResponse pHttpStatus_ =
+  ListImagesResponse'
+    { images = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of images and their properties.
+listImagesResponse_images :: Lens.Lens' ListImagesResponse (Prelude.Maybe [Image])
+listImagesResponse_images = Lens.lens (\ListImagesResponse' {images} -> images) (\s@ListImagesResponse' {} a -> s {images = a} :: ListImagesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token for getting the next set of images, if there are any.
+listImagesResponse_nextToken :: Lens.Lens' ListImagesResponse (Prelude.Maybe Prelude.Text)
+listImagesResponse_nextToken = Lens.lens (\ListImagesResponse' {nextToken} -> nextToken) (\s@ListImagesResponse' {} a -> s {nextToken = a} :: ListImagesResponse)
+
+-- | The response's http status code.
+listImagesResponse_httpStatus :: Lens.Lens' ListImagesResponse Prelude.Int
+listImagesResponse_httpStatus = Lens.lens (\ListImagesResponse' {httpStatus} -> httpStatus) (\s@ListImagesResponse' {} a -> s {httpStatus = a} :: ListImagesResponse)
+
+instance Prelude.NFData ListImagesResponse where
+  rnf ListImagesResponse' {..} =
+    Prelude.rnf images
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListInferenceExperiments.hs b/gen/Amazonka/SageMaker/ListInferenceExperiments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListInferenceExperiments.hs
@@ -0,0 +1,363 @@
+{-# 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.ListInferenceExperiments
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the list of all inference experiments.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListInferenceExperiments
+  ( -- * Creating a Request
+    ListInferenceExperiments (..),
+    newListInferenceExperiments,
+
+    -- * Request Lenses
+    listInferenceExperiments_creationTimeAfter,
+    listInferenceExperiments_creationTimeBefore,
+    listInferenceExperiments_lastModifiedTimeAfter,
+    listInferenceExperiments_lastModifiedTimeBefore,
+    listInferenceExperiments_maxResults,
+    listInferenceExperiments_nameContains,
+    listInferenceExperiments_nextToken,
+    listInferenceExperiments_sortBy,
+    listInferenceExperiments_sortOrder,
+    listInferenceExperiments_statusEquals,
+    listInferenceExperiments_type,
+
+    -- * Destructuring the Response
+    ListInferenceExperimentsResponse (..),
+    newListInferenceExperimentsResponse,
+
+    -- * Response Lenses
+    listInferenceExperimentsResponse_inferenceExperiments,
+    listInferenceExperimentsResponse_nextToken,
+    listInferenceExperimentsResponse_httpStatus,
+  )
+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:/ 'newListInferenceExperiments' smart constructor.
+data ListInferenceExperiments = ListInferenceExperiments'
+  { -- | Selects inference experiments which were created after this timestamp.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Selects inference experiments which were created before this timestamp.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Selects inference experiments which were last modified after this
+    -- timestamp.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Selects inference experiments which were last modified before this
+    -- timestamp.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of results to select.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Selects inference experiments whose names contain this name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The response from the last list when returning a list large enough to
+    -- need tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The column by which to sort the listed inference experiments.
+    sortBy :: Prelude.Maybe SortInferenceExperimentsBy,
+    -- | The direction of sorting (ascending or descending).
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | Selects inference experiments which are in this status. For the possible
+    -- statuses, see DescribeInferenceExperimentResponse$Status.
+    statusEquals :: Prelude.Maybe InferenceExperimentStatus,
+    -- | Selects inference experiments of this type. For the possible types of
+    -- inference experiments, see CreateInferenceExperimentRequest$Type.
+    type' :: Prelude.Maybe InferenceExperimentType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceExperiments' 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:
+--
+-- 'creationTimeAfter', 'listInferenceExperiments_creationTimeAfter' - Selects inference experiments which were created after this timestamp.
+--
+-- 'creationTimeBefore', 'listInferenceExperiments_creationTimeBefore' - Selects inference experiments which were created before this timestamp.
+--
+-- 'lastModifiedTimeAfter', 'listInferenceExperiments_lastModifiedTimeAfter' - Selects inference experiments which were last modified after this
+-- timestamp.
+--
+-- 'lastModifiedTimeBefore', 'listInferenceExperiments_lastModifiedTimeBefore' - Selects inference experiments which were last modified before this
+-- timestamp.
+--
+-- 'maxResults', 'listInferenceExperiments_maxResults' - The maximum number of results to select.
+--
+-- 'nameContains', 'listInferenceExperiments_nameContains' - Selects inference experiments whose names contain this name.
+--
+-- 'nextToken', 'listInferenceExperiments_nextToken' - The response from the last list when returning a list large enough to
+-- need tokening.
+--
+-- 'sortBy', 'listInferenceExperiments_sortBy' - The column by which to sort the listed inference experiments.
+--
+-- 'sortOrder', 'listInferenceExperiments_sortOrder' - The direction of sorting (ascending or descending).
+--
+-- 'statusEquals', 'listInferenceExperiments_statusEquals' - Selects inference experiments which are in this status. For the possible
+-- statuses, see DescribeInferenceExperimentResponse$Status.
+--
+-- 'type'', 'listInferenceExperiments_type' - Selects inference experiments of this type. For the possible types of
+-- inference experiments, see CreateInferenceExperimentRequest$Type.
+newListInferenceExperiments ::
+  ListInferenceExperiments
+newListInferenceExperiments =
+  ListInferenceExperiments'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Selects inference experiments which were created after this timestamp.
+listInferenceExperiments_creationTimeAfter :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.UTCTime)
+listInferenceExperiments_creationTimeAfter = Lens.lens (\ListInferenceExperiments' {creationTimeAfter} -> creationTimeAfter) (\s@ListInferenceExperiments' {} a -> s {creationTimeAfter = a} :: ListInferenceExperiments) Prelude.. Lens.mapping Data._Time
+
+-- | Selects inference experiments which were created before this timestamp.
+listInferenceExperiments_creationTimeBefore :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.UTCTime)
+listInferenceExperiments_creationTimeBefore = Lens.lens (\ListInferenceExperiments' {creationTimeBefore} -> creationTimeBefore) (\s@ListInferenceExperiments' {} a -> s {creationTimeBefore = a} :: ListInferenceExperiments) Prelude.. Lens.mapping Data._Time
+
+-- | Selects inference experiments which were last modified after this
+-- timestamp.
+listInferenceExperiments_lastModifiedTimeAfter :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.UTCTime)
+listInferenceExperiments_lastModifiedTimeAfter = Lens.lens (\ListInferenceExperiments' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListInferenceExperiments' {} a -> s {lastModifiedTimeAfter = a} :: ListInferenceExperiments) Prelude.. Lens.mapping Data._Time
+
+-- | Selects inference experiments which were last modified before this
+-- timestamp.
+listInferenceExperiments_lastModifiedTimeBefore :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.UTCTime)
+listInferenceExperiments_lastModifiedTimeBefore = Lens.lens (\ListInferenceExperiments' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListInferenceExperiments' {} a -> s {lastModifiedTimeBefore = a} :: ListInferenceExperiments) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of results to select.
+listInferenceExperiments_maxResults :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.Natural)
+listInferenceExperiments_maxResults = Lens.lens (\ListInferenceExperiments' {maxResults} -> maxResults) (\s@ListInferenceExperiments' {} a -> s {maxResults = a} :: ListInferenceExperiments)
+
+-- | Selects inference experiments whose names contain this name.
+listInferenceExperiments_nameContains :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.Text)
+listInferenceExperiments_nameContains = Lens.lens (\ListInferenceExperiments' {nameContains} -> nameContains) (\s@ListInferenceExperiments' {} a -> s {nameContains = a} :: ListInferenceExperiments)
+
+-- | The response from the last list when returning a list large enough to
+-- need tokening.
+listInferenceExperiments_nextToken :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe Prelude.Text)
+listInferenceExperiments_nextToken = Lens.lens (\ListInferenceExperiments' {nextToken} -> nextToken) (\s@ListInferenceExperiments' {} a -> s {nextToken = a} :: ListInferenceExperiments)
+
+-- | The column by which to sort the listed inference experiments.
+listInferenceExperiments_sortBy :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe SortInferenceExperimentsBy)
+listInferenceExperiments_sortBy = Lens.lens (\ListInferenceExperiments' {sortBy} -> sortBy) (\s@ListInferenceExperiments' {} a -> s {sortBy = a} :: ListInferenceExperiments)
+
+-- | The direction of sorting (ascending or descending).
+listInferenceExperiments_sortOrder :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe SortOrder)
+listInferenceExperiments_sortOrder = Lens.lens (\ListInferenceExperiments' {sortOrder} -> sortOrder) (\s@ListInferenceExperiments' {} a -> s {sortOrder = a} :: ListInferenceExperiments)
+
+-- | Selects inference experiments which are in this status. For the possible
+-- statuses, see DescribeInferenceExperimentResponse$Status.
+listInferenceExperiments_statusEquals :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe InferenceExperimentStatus)
+listInferenceExperiments_statusEquals = Lens.lens (\ListInferenceExperiments' {statusEquals} -> statusEquals) (\s@ListInferenceExperiments' {} a -> s {statusEquals = a} :: ListInferenceExperiments)
+
+-- | Selects inference experiments of this type. For the possible types of
+-- inference experiments, see CreateInferenceExperimentRequest$Type.
+listInferenceExperiments_type :: Lens.Lens' ListInferenceExperiments (Prelude.Maybe InferenceExperimentType)
+listInferenceExperiments_type = Lens.lens (\ListInferenceExperiments' {type'} -> type') (\s@ListInferenceExperiments' {} a -> s {type' = a} :: ListInferenceExperiments)
+
+instance Core.AWSPager ListInferenceExperiments where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listInferenceExperimentsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listInferenceExperimentsResponse_inferenceExperiments
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listInferenceExperiments_nextToken
+          Lens..~ rs
+          Lens.^? listInferenceExperimentsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListInferenceExperiments where
+  type
+    AWSResponse ListInferenceExperiments =
+      ListInferenceExperimentsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInferenceExperimentsResponse'
+            Prelude.<$> ( x
+                            Data..?> "InferenceExperiments"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListInferenceExperiments where
+  hashWithSalt _salt ListInferenceExperiments' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ListInferenceExperiments where
+  rnf ListInferenceExperiments' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders ListInferenceExperiments where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListInferenceExperiments" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListInferenceExperiments where
+  toJSON ListInferenceExperiments' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals,
+            ("Type" Data..=) Prelude.<$> type'
+          ]
+      )
+
+instance Data.ToPath ListInferenceExperiments where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListInferenceExperiments where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInferenceExperimentsResponse' smart constructor.
+data ListInferenceExperimentsResponse = ListInferenceExperimentsResponse'
+  { -- | List of inference experiments.
+    inferenceExperiments :: Prelude.Maybe [InferenceExperimentSummary],
+    -- | The token to use when calling the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceExperimentsResponse' 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:
+--
+-- 'inferenceExperiments', 'listInferenceExperimentsResponse_inferenceExperiments' - List of inference experiments.
+--
+-- 'nextToken', 'listInferenceExperimentsResponse_nextToken' - The token to use when calling the next page of results.
+--
+-- 'httpStatus', 'listInferenceExperimentsResponse_httpStatus' - The response's http status code.
+newListInferenceExperimentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInferenceExperimentsResponse
+newListInferenceExperimentsResponse pHttpStatus_ =
+  ListInferenceExperimentsResponse'
+    { inferenceExperiments =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of inference experiments.
+listInferenceExperimentsResponse_inferenceExperiments :: Lens.Lens' ListInferenceExperimentsResponse (Prelude.Maybe [InferenceExperimentSummary])
+listInferenceExperimentsResponse_inferenceExperiments = Lens.lens (\ListInferenceExperimentsResponse' {inferenceExperiments} -> inferenceExperiments) (\s@ListInferenceExperimentsResponse' {} a -> s {inferenceExperiments = a} :: ListInferenceExperimentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to use when calling the next page of results.
+listInferenceExperimentsResponse_nextToken :: Lens.Lens' ListInferenceExperimentsResponse (Prelude.Maybe Prelude.Text)
+listInferenceExperimentsResponse_nextToken = Lens.lens (\ListInferenceExperimentsResponse' {nextToken} -> nextToken) (\s@ListInferenceExperimentsResponse' {} a -> s {nextToken = a} :: ListInferenceExperimentsResponse)
+
+-- | The response's http status code.
+listInferenceExperimentsResponse_httpStatus :: Lens.Lens' ListInferenceExperimentsResponse Prelude.Int
+listInferenceExperimentsResponse_httpStatus = Lens.lens (\ListInferenceExperimentsResponse' {httpStatus} -> httpStatus) (\s@ListInferenceExperimentsResponse' {} a -> s {httpStatus = a} :: ListInferenceExperimentsResponse)
+
+instance
+  Prelude.NFData
+    ListInferenceExperimentsResponse
+  where
+  rnf ListInferenceExperimentsResponse' {..} =
+    Prelude.rnf inferenceExperiments
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListInferenceRecommendationsJobSteps.hs b/gen/Amazonka/SageMaker/ListInferenceRecommendationsJobSteps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListInferenceRecommendationsJobSteps.hs
@@ -0,0 +1,316 @@
+{-# 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.ListInferenceRecommendationsJobSteps
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of the subtasks for an Inference Recommender job.
+--
+-- The supported subtasks are benchmarks, which evaluate the performance of
+-- your model on different instance types.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListInferenceRecommendationsJobSteps
+  ( -- * Creating a Request
+    ListInferenceRecommendationsJobSteps (..),
+    newListInferenceRecommendationsJobSteps,
+
+    -- * Request Lenses
+    listInferenceRecommendationsJobSteps_maxResults,
+    listInferenceRecommendationsJobSteps_nextToken,
+    listInferenceRecommendationsJobSteps_status,
+    listInferenceRecommendationsJobSteps_stepType,
+    listInferenceRecommendationsJobSteps_jobName,
+
+    -- * Destructuring the Response
+    ListInferenceRecommendationsJobStepsResponse (..),
+    newListInferenceRecommendationsJobStepsResponse,
+
+    -- * Response Lenses
+    listInferenceRecommendationsJobStepsResponse_nextToken,
+    listInferenceRecommendationsJobStepsResponse_steps,
+    listInferenceRecommendationsJobStepsResponse_httpStatus,
+  )
+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:/ 'newListInferenceRecommendationsJobSteps' smart constructor.
+data ListInferenceRecommendationsJobSteps = ListInferenceRecommendationsJobSteps'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token that you can specify to return more results from the list.
+    -- Specify this field if you have a token that was returned from a previous
+    -- request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A filter to return benchmarks of a specified status. If this field is
+    -- left empty, then all benchmarks are returned.
+    status :: Prelude.Maybe RecommendationJobStatus,
+    -- | A filter to return details about the specified type of subtask.
+    --
+    -- @BENCHMARK@: Evaluate the performance of your model on different
+    -- instance types.
+    stepType :: Prelude.Maybe RecommendationStepType,
+    -- | The name for the Inference Recommender job.
+    jobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceRecommendationsJobSteps' 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:
+--
+-- 'maxResults', 'listInferenceRecommendationsJobSteps_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listInferenceRecommendationsJobSteps_nextToken' - A token that you can specify to return more results from the list.
+-- Specify this field if you have a token that was returned from a previous
+-- request.
+--
+-- 'status', 'listInferenceRecommendationsJobSteps_status' - A filter to return benchmarks of a specified status. If this field is
+-- left empty, then all benchmarks are returned.
+--
+-- 'stepType', 'listInferenceRecommendationsJobSteps_stepType' - A filter to return details about the specified type of subtask.
+--
+-- @BENCHMARK@: Evaluate the performance of your model on different
+-- instance types.
+--
+-- 'jobName', 'listInferenceRecommendationsJobSteps_jobName' - The name for the Inference Recommender job.
+newListInferenceRecommendationsJobSteps ::
+  -- | 'jobName'
+  Prelude.Text ->
+  ListInferenceRecommendationsJobSteps
+newListInferenceRecommendationsJobSteps pJobName_ =
+  ListInferenceRecommendationsJobSteps'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing,
+      stepType = Prelude.Nothing,
+      jobName = pJobName_
+    }
+
+-- | The maximum number of results to return.
+listInferenceRecommendationsJobSteps_maxResults :: Lens.Lens' ListInferenceRecommendationsJobSteps (Prelude.Maybe Prelude.Natural)
+listInferenceRecommendationsJobSteps_maxResults = Lens.lens (\ListInferenceRecommendationsJobSteps' {maxResults} -> maxResults) (\s@ListInferenceRecommendationsJobSteps' {} a -> s {maxResults = a} :: ListInferenceRecommendationsJobSteps)
+
+-- | A token that you can specify to return more results from the list.
+-- Specify this field if you have a token that was returned from a previous
+-- request.
+listInferenceRecommendationsJobSteps_nextToken :: Lens.Lens' ListInferenceRecommendationsJobSteps (Prelude.Maybe Prelude.Text)
+listInferenceRecommendationsJobSteps_nextToken = Lens.lens (\ListInferenceRecommendationsJobSteps' {nextToken} -> nextToken) (\s@ListInferenceRecommendationsJobSteps' {} a -> s {nextToken = a} :: ListInferenceRecommendationsJobSteps)
+
+-- | A filter to return benchmarks of a specified status. If this field is
+-- left empty, then all benchmarks are returned.
+listInferenceRecommendationsJobSteps_status :: Lens.Lens' ListInferenceRecommendationsJobSteps (Prelude.Maybe RecommendationJobStatus)
+listInferenceRecommendationsJobSteps_status = Lens.lens (\ListInferenceRecommendationsJobSteps' {status} -> status) (\s@ListInferenceRecommendationsJobSteps' {} a -> s {status = a} :: ListInferenceRecommendationsJobSteps)
+
+-- | A filter to return details about the specified type of subtask.
+--
+-- @BENCHMARK@: Evaluate the performance of your model on different
+-- instance types.
+listInferenceRecommendationsJobSteps_stepType :: Lens.Lens' ListInferenceRecommendationsJobSteps (Prelude.Maybe RecommendationStepType)
+listInferenceRecommendationsJobSteps_stepType = Lens.lens (\ListInferenceRecommendationsJobSteps' {stepType} -> stepType) (\s@ListInferenceRecommendationsJobSteps' {} a -> s {stepType = a} :: ListInferenceRecommendationsJobSteps)
+
+-- | The name for the Inference Recommender job.
+listInferenceRecommendationsJobSteps_jobName :: Lens.Lens' ListInferenceRecommendationsJobSteps Prelude.Text
+listInferenceRecommendationsJobSteps_jobName = Lens.lens (\ListInferenceRecommendationsJobSteps' {jobName} -> jobName) (\s@ListInferenceRecommendationsJobSteps' {} a -> s {jobName = a} :: ListInferenceRecommendationsJobSteps)
+
+instance
+  Core.AWSPager
+    ListInferenceRecommendationsJobSteps
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listInferenceRecommendationsJobStepsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listInferenceRecommendationsJobStepsResponse_steps
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listInferenceRecommendationsJobSteps_nextToken
+          Lens..~ rs
+          Lens.^? listInferenceRecommendationsJobStepsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListInferenceRecommendationsJobSteps
+  where
+  type
+    AWSResponse ListInferenceRecommendationsJobSteps =
+      ListInferenceRecommendationsJobStepsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInferenceRecommendationsJobStepsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Steps" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListInferenceRecommendationsJobSteps
+  where
+  hashWithSalt
+    _salt
+    ListInferenceRecommendationsJobSteps' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` status
+        `Prelude.hashWithSalt` stepType
+        `Prelude.hashWithSalt` jobName
+
+instance
+  Prelude.NFData
+    ListInferenceRecommendationsJobSteps
+  where
+  rnf ListInferenceRecommendationsJobSteps' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf stepType
+      `Prelude.seq` Prelude.rnf jobName
+
+instance
+  Data.ToHeaders
+    ListInferenceRecommendationsJobSteps
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListInferenceRecommendationsJobSteps" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListInferenceRecommendationsJobSteps
+  where
+  toJSON ListInferenceRecommendationsJobSteps' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Status" Data..=) Prelude.<$> status,
+            ("StepType" Data..=) Prelude.<$> stepType,
+            Prelude.Just ("JobName" Data..= jobName)
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListInferenceRecommendationsJobSteps
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListInferenceRecommendationsJobSteps
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInferenceRecommendationsJobStepsResponse' smart constructor.
+data ListInferenceRecommendationsJobStepsResponse = ListInferenceRecommendationsJobStepsResponse'
+  { -- | A token that you can specify in your next request to return more results
+    -- from the list.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of all subtask details in Inference Recommender.
+    steps :: Prelude.Maybe [InferenceRecommendationsJobStep],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceRecommendationsJobStepsResponse' 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:
+--
+-- 'nextToken', 'listInferenceRecommendationsJobStepsResponse_nextToken' - A token that you can specify in your next request to return more results
+-- from the list.
+--
+-- 'steps', 'listInferenceRecommendationsJobStepsResponse_steps' - A list of all subtask details in Inference Recommender.
+--
+-- 'httpStatus', 'listInferenceRecommendationsJobStepsResponse_httpStatus' - The response's http status code.
+newListInferenceRecommendationsJobStepsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInferenceRecommendationsJobStepsResponse
+newListInferenceRecommendationsJobStepsResponse
+  pHttpStatus_ =
+    ListInferenceRecommendationsJobStepsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        steps = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A token that you can specify in your next request to return more results
+-- from the list.
+listInferenceRecommendationsJobStepsResponse_nextToken :: Lens.Lens' ListInferenceRecommendationsJobStepsResponse (Prelude.Maybe Prelude.Text)
+listInferenceRecommendationsJobStepsResponse_nextToken = Lens.lens (\ListInferenceRecommendationsJobStepsResponse' {nextToken} -> nextToken) (\s@ListInferenceRecommendationsJobStepsResponse' {} a -> s {nextToken = a} :: ListInferenceRecommendationsJobStepsResponse)
+
+-- | A list of all subtask details in Inference Recommender.
+listInferenceRecommendationsJobStepsResponse_steps :: Lens.Lens' ListInferenceRecommendationsJobStepsResponse (Prelude.Maybe [InferenceRecommendationsJobStep])
+listInferenceRecommendationsJobStepsResponse_steps = Lens.lens (\ListInferenceRecommendationsJobStepsResponse' {steps} -> steps) (\s@ListInferenceRecommendationsJobStepsResponse' {} a -> s {steps = a} :: ListInferenceRecommendationsJobStepsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listInferenceRecommendationsJobStepsResponse_httpStatus :: Lens.Lens' ListInferenceRecommendationsJobStepsResponse Prelude.Int
+listInferenceRecommendationsJobStepsResponse_httpStatus = Lens.lens (\ListInferenceRecommendationsJobStepsResponse' {httpStatus} -> httpStatus) (\s@ListInferenceRecommendationsJobStepsResponse' {} a -> s {httpStatus = a} :: ListInferenceRecommendationsJobStepsResponse)
+
+instance
+  Prelude.NFData
+    ListInferenceRecommendationsJobStepsResponse
+  where
+  rnf ListInferenceRecommendationsJobStepsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf steps
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListInferenceRecommendationsJobs.hs b/gen/Amazonka/SageMaker/ListInferenceRecommendationsJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListInferenceRecommendationsJobs.hs
@@ -0,0 +1,383 @@
+{-# 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.ListInferenceRecommendationsJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists recommendation jobs that satisfy various filters.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListInferenceRecommendationsJobs
+  ( -- * Creating a Request
+    ListInferenceRecommendationsJobs (..),
+    newListInferenceRecommendationsJobs,
+
+    -- * Request Lenses
+    listInferenceRecommendationsJobs_creationTimeAfter,
+    listInferenceRecommendationsJobs_creationTimeBefore,
+    listInferenceRecommendationsJobs_lastModifiedTimeAfter,
+    listInferenceRecommendationsJobs_lastModifiedTimeBefore,
+    listInferenceRecommendationsJobs_maxResults,
+    listInferenceRecommendationsJobs_nameContains,
+    listInferenceRecommendationsJobs_nextToken,
+    listInferenceRecommendationsJobs_sortBy,
+    listInferenceRecommendationsJobs_sortOrder,
+    listInferenceRecommendationsJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListInferenceRecommendationsJobsResponse (..),
+    newListInferenceRecommendationsJobsResponse,
+
+    -- * Response Lenses
+    listInferenceRecommendationsJobsResponse_nextToken,
+    listInferenceRecommendationsJobsResponse_httpStatus,
+    listInferenceRecommendationsJobsResponse_inferenceRecommendationsJobs,
+  )
+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:/ 'newListInferenceRecommendationsJobs' smart constructor.
+data ListInferenceRecommendationsJobs = ListInferenceRecommendationsJobs'
+  { -- | A filter that returns only jobs created after the specified time
+    -- (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only jobs created before the specified time
+    -- (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only jobs that were last modified after the
+    -- specified time (timestamp).
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only jobs that were last modified before the
+    -- specified time (timestamp).
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of recommendations to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the job name. This filter returns only recommendations whose
+    -- name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListInferenceRecommendationsJobsRequest@
+    -- request was truncated, the response includes a @NextToken@. To retrieve
+    -- the next set of recommendations, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results.
+    sortBy :: Prelude.Maybe ListInferenceRecommendationsJobsSortBy,
+    -- | The sort order for the results.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only inference recommendations jobs with a
+    -- specific status.
+    statusEquals :: Prelude.Maybe RecommendationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceRecommendationsJobs' 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:
+--
+-- 'creationTimeAfter', 'listInferenceRecommendationsJobs_creationTimeAfter' - A filter that returns only jobs created after the specified time
+-- (timestamp).
+--
+-- 'creationTimeBefore', 'listInferenceRecommendationsJobs_creationTimeBefore' - A filter that returns only jobs created before the specified time
+-- (timestamp).
+--
+-- 'lastModifiedTimeAfter', 'listInferenceRecommendationsJobs_lastModifiedTimeAfter' - A filter that returns only jobs that were last modified after the
+-- specified time (timestamp).
+--
+-- 'lastModifiedTimeBefore', 'listInferenceRecommendationsJobs_lastModifiedTimeBefore' - A filter that returns only jobs that were last modified before the
+-- specified time (timestamp).
+--
+-- 'maxResults', 'listInferenceRecommendationsJobs_maxResults' - The maximum number of recommendations to return in the response.
+--
+-- 'nameContains', 'listInferenceRecommendationsJobs_nameContains' - A string in the job name. This filter returns only recommendations whose
+-- name contains the specified string.
+--
+-- 'nextToken', 'listInferenceRecommendationsJobs_nextToken' - If the response to a previous @ListInferenceRecommendationsJobsRequest@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of recommendations, use the token in the next request.
+--
+-- 'sortBy', 'listInferenceRecommendationsJobs_sortBy' - The parameter by which to sort the results.
+--
+-- 'sortOrder', 'listInferenceRecommendationsJobs_sortOrder' - The sort order for the results.
+--
+-- 'statusEquals', 'listInferenceRecommendationsJobs_statusEquals' - A filter that retrieves only inference recommendations jobs with a
+-- specific status.
+newListInferenceRecommendationsJobs ::
+  ListInferenceRecommendationsJobs
+newListInferenceRecommendationsJobs =
+  ListInferenceRecommendationsJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only jobs created after the specified time
+-- (timestamp).
+listInferenceRecommendationsJobs_creationTimeAfter :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.UTCTime)
+listInferenceRecommendationsJobs_creationTimeAfter = Lens.lens (\ListInferenceRecommendationsJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListInferenceRecommendationsJobs' {} a -> s {creationTimeAfter = a} :: ListInferenceRecommendationsJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only jobs created before the specified time
+-- (timestamp).
+listInferenceRecommendationsJobs_creationTimeBefore :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.UTCTime)
+listInferenceRecommendationsJobs_creationTimeBefore = Lens.lens (\ListInferenceRecommendationsJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListInferenceRecommendationsJobs' {} a -> s {creationTimeBefore = a} :: ListInferenceRecommendationsJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only jobs that were last modified after the
+-- specified time (timestamp).
+listInferenceRecommendationsJobs_lastModifiedTimeAfter :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.UTCTime)
+listInferenceRecommendationsJobs_lastModifiedTimeAfter = Lens.lens (\ListInferenceRecommendationsJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListInferenceRecommendationsJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListInferenceRecommendationsJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only jobs that were last modified before the
+-- specified time (timestamp).
+listInferenceRecommendationsJobs_lastModifiedTimeBefore :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.UTCTime)
+listInferenceRecommendationsJobs_lastModifiedTimeBefore = Lens.lens (\ListInferenceRecommendationsJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListInferenceRecommendationsJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListInferenceRecommendationsJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of recommendations to return in the response.
+listInferenceRecommendationsJobs_maxResults :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.Natural)
+listInferenceRecommendationsJobs_maxResults = Lens.lens (\ListInferenceRecommendationsJobs' {maxResults} -> maxResults) (\s@ListInferenceRecommendationsJobs' {} a -> s {maxResults = a} :: ListInferenceRecommendationsJobs)
+
+-- | A string in the job name. This filter returns only recommendations whose
+-- name contains the specified string.
+listInferenceRecommendationsJobs_nameContains :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.Text)
+listInferenceRecommendationsJobs_nameContains = Lens.lens (\ListInferenceRecommendationsJobs' {nameContains} -> nameContains) (\s@ListInferenceRecommendationsJobs' {} a -> s {nameContains = a} :: ListInferenceRecommendationsJobs)
+
+-- | If the response to a previous @ListInferenceRecommendationsJobsRequest@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of recommendations, use the token in the next request.
+listInferenceRecommendationsJobs_nextToken :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe Prelude.Text)
+listInferenceRecommendationsJobs_nextToken = Lens.lens (\ListInferenceRecommendationsJobs' {nextToken} -> nextToken) (\s@ListInferenceRecommendationsJobs' {} a -> s {nextToken = a} :: ListInferenceRecommendationsJobs)
+
+-- | The parameter by which to sort the results.
+listInferenceRecommendationsJobs_sortBy :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe ListInferenceRecommendationsJobsSortBy)
+listInferenceRecommendationsJobs_sortBy = Lens.lens (\ListInferenceRecommendationsJobs' {sortBy} -> sortBy) (\s@ListInferenceRecommendationsJobs' {} a -> s {sortBy = a} :: ListInferenceRecommendationsJobs)
+
+-- | The sort order for the results.
+listInferenceRecommendationsJobs_sortOrder :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe SortOrder)
+listInferenceRecommendationsJobs_sortOrder = Lens.lens (\ListInferenceRecommendationsJobs' {sortOrder} -> sortOrder) (\s@ListInferenceRecommendationsJobs' {} a -> s {sortOrder = a} :: ListInferenceRecommendationsJobs)
+
+-- | A filter that retrieves only inference recommendations jobs with a
+-- specific status.
+listInferenceRecommendationsJobs_statusEquals :: Lens.Lens' ListInferenceRecommendationsJobs (Prelude.Maybe RecommendationJobStatus)
+listInferenceRecommendationsJobs_statusEquals = Lens.lens (\ListInferenceRecommendationsJobs' {statusEquals} -> statusEquals) (\s@ListInferenceRecommendationsJobs' {} a -> s {statusEquals = a} :: ListInferenceRecommendationsJobs)
+
+instance
+  Core.AWSPager
+    ListInferenceRecommendationsJobs
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listInferenceRecommendationsJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listInferenceRecommendationsJobsResponse_inferenceRecommendationsJobs
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listInferenceRecommendationsJobs_nextToken
+          Lens..~ rs
+          Lens.^? listInferenceRecommendationsJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListInferenceRecommendationsJobs
+  where
+  type
+    AWSResponse ListInferenceRecommendationsJobs =
+      ListInferenceRecommendationsJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInferenceRecommendationsJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "InferenceRecommendationsJobs"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    ListInferenceRecommendationsJobs
+  where
+  hashWithSalt
+    _salt
+    ListInferenceRecommendationsJobs' {..} =
+      _salt
+        `Prelude.hashWithSalt` creationTimeAfter
+        `Prelude.hashWithSalt` creationTimeBefore
+        `Prelude.hashWithSalt` lastModifiedTimeAfter
+        `Prelude.hashWithSalt` lastModifiedTimeBefore
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nameContains
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` sortBy
+        `Prelude.hashWithSalt` sortOrder
+        `Prelude.hashWithSalt` statusEquals
+
+instance
+  Prelude.NFData
+    ListInferenceRecommendationsJobs
+  where
+  rnf ListInferenceRecommendationsJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance
+  Data.ToHeaders
+    ListInferenceRecommendationsJobs
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListInferenceRecommendationsJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListInferenceRecommendationsJobs where
+  toJSON ListInferenceRecommendationsJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListInferenceRecommendationsJobs where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListInferenceRecommendationsJobs
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInferenceRecommendationsJobsResponse' smart constructor.
+data ListInferenceRecommendationsJobsResponse = ListInferenceRecommendationsJobsResponse'
+  { -- | A token for getting the next set of recommendations, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The recommendations created from the Amazon SageMaker Inference
+    -- Recommender job.
+    inferenceRecommendationsJobs :: [InferenceRecommendationsJob]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceRecommendationsJobsResponse' 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:
+--
+-- 'nextToken', 'listInferenceRecommendationsJobsResponse_nextToken' - A token for getting the next set of recommendations, if there are any.
+--
+-- 'httpStatus', 'listInferenceRecommendationsJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'inferenceRecommendationsJobs', 'listInferenceRecommendationsJobsResponse_inferenceRecommendationsJobs' - The recommendations created from the Amazon SageMaker Inference
+-- Recommender job.
+newListInferenceRecommendationsJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInferenceRecommendationsJobsResponse
+newListInferenceRecommendationsJobsResponse
+  pHttpStatus_ =
+    ListInferenceRecommendationsJobsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        inferenceRecommendationsJobs =
+          Prelude.mempty
+      }
+
+-- | A token for getting the next set of recommendations, if there are any.
+listInferenceRecommendationsJobsResponse_nextToken :: Lens.Lens' ListInferenceRecommendationsJobsResponse (Prelude.Maybe Prelude.Text)
+listInferenceRecommendationsJobsResponse_nextToken = Lens.lens (\ListInferenceRecommendationsJobsResponse' {nextToken} -> nextToken) (\s@ListInferenceRecommendationsJobsResponse' {} a -> s {nextToken = a} :: ListInferenceRecommendationsJobsResponse)
+
+-- | The response's http status code.
+listInferenceRecommendationsJobsResponse_httpStatus :: Lens.Lens' ListInferenceRecommendationsJobsResponse Prelude.Int
+listInferenceRecommendationsJobsResponse_httpStatus = Lens.lens (\ListInferenceRecommendationsJobsResponse' {httpStatus} -> httpStatus) (\s@ListInferenceRecommendationsJobsResponse' {} a -> s {httpStatus = a} :: ListInferenceRecommendationsJobsResponse)
+
+-- | The recommendations created from the Amazon SageMaker Inference
+-- Recommender job.
+listInferenceRecommendationsJobsResponse_inferenceRecommendationsJobs :: Lens.Lens' ListInferenceRecommendationsJobsResponse [InferenceRecommendationsJob]
+listInferenceRecommendationsJobsResponse_inferenceRecommendationsJobs = Lens.lens (\ListInferenceRecommendationsJobsResponse' {inferenceRecommendationsJobs} -> inferenceRecommendationsJobs) (\s@ListInferenceRecommendationsJobsResponse' {} a -> s {inferenceRecommendationsJobs = a} :: ListInferenceRecommendationsJobsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListInferenceRecommendationsJobsResponse
+  where
+  rnf ListInferenceRecommendationsJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf inferenceRecommendationsJobs
diff --git a/gen/Amazonka/SageMaker/ListLabelingJobs.hs b/gen/Amazonka/SageMaker/ListLabelingJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListLabelingJobs.hs
@@ -0,0 +1,360 @@
+{-# 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.ListLabelingJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of labeling jobs.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListLabelingJobs
+  ( -- * Creating a Request
+    ListLabelingJobs (..),
+    newListLabelingJobs,
+
+    -- * Request Lenses
+    listLabelingJobs_creationTimeAfter,
+    listLabelingJobs_creationTimeBefore,
+    listLabelingJobs_lastModifiedTimeAfter,
+    listLabelingJobs_lastModifiedTimeBefore,
+    listLabelingJobs_maxResults,
+    listLabelingJobs_nameContains,
+    listLabelingJobs_nextToken,
+    listLabelingJobs_sortBy,
+    listLabelingJobs_sortOrder,
+    listLabelingJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListLabelingJobsResponse (..),
+    newListLabelingJobsResponse,
+
+    -- * Response Lenses
+    listLabelingJobsResponse_labelingJobSummaryList,
+    listLabelingJobsResponse_nextToken,
+    listLabelingJobsResponse_httpStatus,
+  )
+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:/ 'newListLabelingJobs' smart constructor.
+data ListLabelingJobs = ListLabelingJobs'
+  { -- | A filter that returns only labeling jobs created after the specified
+    -- time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only labeling jobs created before the specified
+    -- time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only labeling jobs modified after the specified
+    -- time (timestamp).
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only labeling jobs modified before the specified
+    -- time (timestamp).
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of labeling jobs to return in each page of the
+    -- response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the labeling job name. This filter returns only labeling
+    -- jobs whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListLabelingJobs@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of
+    -- labeling jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe SortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only labeling jobs with a specific status.
+    statusEquals :: Prelude.Maybe LabelingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelingJobs' 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:
+--
+-- 'creationTimeAfter', 'listLabelingJobs_creationTimeAfter' - A filter that returns only labeling jobs created after the specified
+-- time (timestamp).
+--
+-- 'creationTimeBefore', 'listLabelingJobs_creationTimeBefore' - A filter that returns only labeling jobs created before the specified
+-- time (timestamp).
+--
+-- 'lastModifiedTimeAfter', 'listLabelingJobs_lastModifiedTimeAfter' - A filter that returns only labeling jobs modified after the specified
+-- time (timestamp).
+--
+-- 'lastModifiedTimeBefore', 'listLabelingJobs_lastModifiedTimeBefore' - A filter that returns only labeling jobs modified before the specified
+-- time (timestamp).
+--
+-- 'maxResults', 'listLabelingJobs_maxResults' - The maximum number of labeling jobs to return in each page of the
+-- response.
+--
+-- 'nameContains', 'listLabelingJobs_nameContains' - A string in the labeling job name. This filter returns only labeling
+-- jobs whose name contains the specified string.
+--
+-- 'nextToken', 'listLabelingJobs_nextToken' - If the result of the previous @ListLabelingJobs@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- labeling jobs, use the token in the next request.
+--
+-- 'sortBy', 'listLabelingJobs_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listLabelingJobs_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listLabelingJobs_statusEquals' - A filter that retrieves only labeling jobs with a specific status.
+newListLabelingJobs ::
+  ListLabelingJobs
+newListLabelingJobs =
+  ListLabelingJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only labeling jobs created after the specified
+-- time (timestamp).
+listLabelingJobs_creationTimeAfter :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.UTCTime)
+listLabelingJobs_creationTimeAfter = Lens.lens (\ListLabelingJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListLabelingJobs' {} a -> s {creationTimeAfter = a} :: ListLabelingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only labeling jobs created before the specified
+-- time (timestamp).
+listLabelingJobs_creationTimeBefore :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.UTCTime)
+listLabelingJobs_creationTimeBefore = Lens.lens (\ListLabelingJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListLabelingJobs' {} a -> s {creationTimeBefore = a} :: ListLabelingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only labeling jobs modified after the specified
+-- time (timestamp).
+listLabelingJobs_lastModifiedTimeAfter :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.UTCTime)
+listLabelingJobs_lastModifiedTimeAfter = Lens.lens (\ListLabelingJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListLabelingJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListLabelingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only labeling jobs modified before the specified
+-- time (timestamp).
+listLabelingJobs_lastModifiedTimeBefore :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.UTCTime)
+listLabelingJobs_lastModifiedTimeBefore = Lens.lens (\ListLabelingJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListLabelingJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListLabelingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of labeling jobs to return in each page of the
+-- response.
+listLabelingJobs_maxResults :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.Natural)
+listLabelingJobs_maxResults = Lens.lens (\ListLabelingJobs' {maxResults} -> maxResults) (\s@ListLabelingJobs' {} a -> s {maxResults = a} :: ListLabelingJobs)
+
+-- | A string in the labeling job name. This filter returns only labeling
+-- jobs whose name contains the specified string.
+listLabelingJobs_nameContains :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.Text)
+listLabelingJobs_nameContains = Lens.lens (\ListLabelingJobs' {nameContains} -> nameContains) (\s@ListLabelingJobs' {} a -> s {nameContains = a} :: ListLabelingJobs)
+
+-- | If the result of the previous @ListLabelingJobs@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- labeling jobs, use the token in the next request.
+listLabelingJobs_nextToken :: Lens.Lens' ListLabelingJobs (Prelude.Maybe Prelude.Text)
+listLabelingJobs_nextToken = Lens.lens (\ListLabelingJobs' {nextToken} -> nextToken) (\s@ListLabelingJobs' {} a -> s {nextToken = a} :: ListLabelingJobs)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listLabelingJobs_sortBy :: Lens.Lens' ListLabelingJobs (Prelude.Maybe SortBy)
+listLabelingJobs_sortBy = Lens.lens (\ListLabelingJobs' {sortBy} -> sortBy) (\s@ListLabelingJobs' {} a -> s {sortBy = a} :: ListLabelingJobs)
+
+-- | The sort order for results. The default is @Ascending@.
+listLabelingJobs_sortOrder :: Lens.Lens' ListLabelingJobs (Prelude.Maybe SortOrder)
+listLabelingJobs_sortOrder = Lens.lens (\ListLabelingJobs' {sortOrder} -> sortOrder) (\s@ListLabelingJobs' {} a -> s {sortOrder = a} :: ListLabelingJobs)
+
+-- | A filter that retrieves only labeling jobs with a specific status.
+listLabelingJobs_statusEquals :: Lens.Lens' ListLabelingJobs (Prelude.Maybe LabelingJobStatus)
+listLabelingJobs_statusEquals = Lens.lens (\ListLabelingJobs' {statusEquals} -> statusEquals) (\s@ListLabelingJobs' {} a -> s {statusEquals = a} :: ListLabelingJobs)
+
+instance Core.AWSPager ListLabelingJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listLabelingJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listLabelingJobsResponse_labelingJobSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listLabelingJobs_nextToken
+          Lens..~ rs
+          Lens.^? listLabelingJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListLabelingJobs where
+  type
+    AWSResponse ListLabelingJobs =
+      ListLabelingJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLabelingJobsResponse'
+            Prelude.<$> ( x
+                            Data..?> "LabelingJobSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLabelingJobs where
+  hashWithSalt _salt ListLabelingJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListLabelingJobs where
+  rnf ListLabelingJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListLabelingJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListLabelingJobs" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLabelingJobs where
+  toJSON ListLabelingJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListLabelingJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLabelingJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLabelingJobsResponse' smart constructor.
+data ListLabelingJobsResponse = ListLabelingJobsResponse'
+  { -- | An array of @LabelingJobSummary@ objects, each describing a labeling
+    -- job.
+    labelingJobSummaryList :: Prelude.Maybe [LabelingJobSummary],
+    -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of labeling jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelingJobsResponse' 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:
+--
+-- 'labelingJobSummaryList', 'listLabelingJobsResponse_labelingJobSummaryList' - An array of @LabelingJobSummary@ objects, each describing a labeling
+-- job.
+--
+-- 'nextToken', 'listLabelingJobsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of labeling jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listLabelingJobsResponse_httpStatus' - The response's http status code.
+newListLabelingJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLabelingJobsResponse
+newListLabelingJobsResponse pHttpStatus_ =
+  ListLabelingJobsResponse'
+    { labelingJobSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of @LabelingJobSummary@ objects, each describing a labeling
+-- job.
+listLabelingJobsResponse_labelingJobSummaryList :: Lens.Lens' ListLabelingJobsResponse (Prelude.Maybe [LabelingJobSummary])
+listLabelingJobsResponse_labelingJobSummaryList = Lens.lens (\ListLabelingJobsResponse' {labelingJobSummaryList} -> labelingJobSummaryList) (\s@ListLabelingJobsResponse' {} a -> s {labelingJobSummaryList = a} :: ListLabelingJobsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of labeling jobs, use it in the subsequent request.
+listLabelingJobsResponse_nextToken :: Lens.Lens' ListLabelingJobsResponse (Prelude.Maybe Prelude.Text)
+listLabelingJobsResponse_nextToken = Lens.lens (\ListLabelingJobsResponse' {nextToken} -> nextToken) (\s@ListLabelingJobsResponse' {} a -> s {nextToken = a} :: ListLabelingJobsResponse)
+
+-- | The response's http status code.
+listLabelingJobsResponse_httpStatus :: Lens.Lens' ListLabelingJobsResponse Prelude.Int
+listLabelingJobsResponse_httpStatus = Lens.lens (\ListLabelingJobsResponse' {httpStatus} -> httpStatus) (\s@ListLabelingJobsResponse' {} a -> s {httpStatus = a} :: ListLabelingJobsResponse)
+
+instance Prelude.NFData ListLabelingJobsResponse where
+  rnf ListLabelingJobsResponse' {..} =
+    Prelude.rnf labelingJobSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListLabelingJobsForWorkteam.hs b/gen/Amazonka/SageMaker/ListLabelingJobsForWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListLabelingJobsForWorkteam.hs
@@ -0,0 +1,337 @@
+{-# 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.ListLabelingJobsForWorkteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of labeling jobs assigned to a specified work team.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListLabelingJobsForWorkteam
+  ( -- * Creating a Request
+    ListLabelingJobsForWorkteam (..),
+    newListLabelingJobsForWorkteam,
+
+    -- * Request Lenses
+    listLabelingJobsForWorkteam_creationTimeAfter,
+    listLabelingJobsForWorkteam_creationTimeBefore,
+    listLabelingJobsForWorkteam_jobReferenceCodeContains,
+    listLabelingJobsForWorkteam_maxResults,
+    listLabelingJobsForWorkteam_nextToken,
+    listLabelingJobsForWorkteam_sortBy,
+    listLabelingJobsForWorkteam_sortOrder,
+    listLabelingJobsForWorkteam_workteamArn,
+
+    -- * Destructuring the Response
+    ListLabelingJobsForWorkteamResponse (..),
+    newListLabelingJobsForWorkteamResponse,
+
+    -- * Response Lenses
+    listLabelingJobsForWorkteamResponse_nextToken,
+    listLabelingJobsForWorkteamResponse_httpStatus,
+    listLabelingJobsForWorkteamResponse_labelingJobSummaryList,
+  )
+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:/ 'newListLabelingJobsForWorkteam' smart constructor.
+data ListLabelingJobsForWorkteam = ListLabelingJobsForWorkteam'
+  { -- | A filter that returns only labeling jobs created after the specified
+    -- time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only labeling jobs created before the specified
+    -- time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter the limits jobs to only the ones whose job reference code
+    -- contains the specified string.
+    jobReferenceCodeContains :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of labeling jobs to return in each page of the
+    -- response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous @ListLabelingJobsForWorkteam@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of labeling jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe ListLabelingJobsForWorkteamSortByOptions,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The Amazon Resource Name (ARN) of the work team for which you want to
+    -- see labeling jobs for.
+    workteamArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelingJobsForWorkteam' 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:
+--
+-- 'creationTimeAfter', 'listLabelingJobsForWorkteam_creationTimeAfter' - A filter that returns only labeling jobs created after the specified
+-- time (timestamp).
+--
+-- 'creationTimeBefore', 'listLabelingJobsForWorkteam_creationTimeBefore' - A filter that returns only labeling jobs created before the specified
+-- time (timestamp).
+--
+-- 'jobReferenceCodeContains', 'listLabelingJobsForWorkteam_jobReferenceCodeContains' - A filter the limits jobs to only the ones whose job reference code
+-- contains the specified string.
+--
+-- 'maxResults', 'listLabelingJobsForWorkteam_maxResults' - The maximum number of labeling jobs to return in each page of the
+-- response.
+--
+-- 'nextToken', 'listLabelingJobsForWorkteam_nextToken' - If the result of the previous @ListLabelingJobsForWorkteam@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of labeling jobs, use the token in the next request.
+--
+-- 'sortBy', 'listLabelingJobsForWorkteam_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listLabelingJobsForWorkteam_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'workteamArn', 'listLabelingJobsForWorkteam_workteamArn' - The Amazon Resource Name (ARN) of the work team for which you want to
+-- see labeling jobs for.
+newListLabelingJobsForWorkteam ::
+  -- | 'workteamArn'
+  Prelude.Text ->
+  ListLabelingJobsForWorkteam
+newListLabelingJobsForWorkteam pWorkteamArn_ =
+  ListLabelingJobsForWorkteam'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      jobReferenceCodeContains = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      workteamArn = pWorkteamArn_
+    }
+
+-- | A filter that returns only labeling jobs created after the specified
+-- time (timestamp).
+listLabelingJobsForWorkteam_creationTimeAfter :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe Prelude.UTCTime)
+listLabelingJobsForWorkteam_creationTimeAfter = Lens.lens (\ListLabelingJobsForWorkteam' {creationTimeAfter} -> creationTimeAfter) (\s@ListLabelingJobsForWorkteam' {} a -> s {creationTimeAfter = a} :: ListLabelingJobsForWorkteam) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only labeling jobs created before the specified
+-- time (timestamp).
+listLabelingJobsForWorkteam_creationTimeBefore :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe Prelude.UTCTime)
+listLabelingJobsForWorkteam_creationTimeBefore = Lens.lens (\ListLabelingJobsForWorkteam' {creationTimeBefore} -> creationTimeBefore) (\s@ListLabelingJobsForWorkteam' {} a -> s {creationTimeBefore = a} :: ListLabelingJobsForWorkteam) Prelude.. Lens.mapping Data._Time
+
+-- | A filter the limits jobs to only the ones whose job reference code
+-- contains the specified string.
+listLabelingJobsForWorkteam_jobReferenceCodeContains :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe Prelude.Text)
+listLabelingJobsForWorkteam_jobReferenceCodeContains = Lens.lens (\ListLabelingJobsForWorkteam' {jobReferenceCodeContains} -> jobReferenceCodeContains) (\s@ListLabelingJobsForWorkteam' {} a -> s {jobReferenceCodeContains = a} :: ListLabelingJobsForWorkteam)
+
+-- | The maximum number of labeling jobs to return in each page of the
+-- response.
+listLabelingJobsForWorkteam_maxResults :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe Prelude.Natural)
+listLabelingJobsForWorkteam_maxResults = Lens.lens (\ListLabelingJobsForWorkteam' {maxResults} -> maxResults) (\s@ListLabelingJobsForWorkteam' {} a -> s {maxResults = a} :: ListLabelingJobsForWorkteam)
+
+-- | If the result of the previous @ListLabelingJobsForWorkteam@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of labeling jobs, use the token in the next request.
+listLabelingJobsForWorkteam_nextToken :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe Prelude.Text)
+listLabelingJobsForWorkteam_nextToken = Lens.lens (\ListLabelingJobsForWorkteam' {nextToken} -> nextToken) (\s@ListLabelingJobsForWorkteam' {} a -> s {nextToken = a} :: ListLabelingJobsForWorkteam)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listLabelingJobsForWorkteam_sortBy :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe ListLabelingJobsForWorkteamSortByOptions)
+listLabelingJobsForWorkteam_sortBy = Lens.lens (\ListLabelingJobsForWorkteam' {sortBy} -> sortBy) (\s@ListLabelingJobsForWorkteam' {} a -> s {sortBy = a} :: ListLabelingJobsForWorkteam)
+
+-- | The sort order for results. The default is @Ascending@.
+listLabelingJobsForWorkteam_sortOrder :: Lens.Lens' ListLabelingJobsForWorkteam (Prelude.Maybe SortOrder)
+listLabelingJobsForWorkteam_sortOrder = Lens.lens (\ListLabelingJobsForWorkteam' {sortOrder} -> sortOrder) (\s@ListLabelingJobsForWorkteam' {} a -> s {sortOrder = a} :: ListLabelingJobsForWorkteam)
+
+-- | The Amazon Resource Name (ARN) of the work team for which you want to
+-- see labeling jobs for.
+listLabelingJobsForWorkteam_workteamArn :: Lens.Lens' ListLabelingJobsForWorkteam Prelude.Text
+listLabelingJobsForWorkteam_workteamArn = Lens.lens (\ListLabelingJobsForWorkteam' {workteamArn} -> workteamArn) (\s@ListLabelingJobsForWorkteam' {} a -> s {workteamArn = a} :: ListLabelingJobsForWorkteam)
+
+instance Core.AWSPager ListLabelingJobsForWorkteam where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listLabelingJobsForWorkteamResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listLabelingJobsForWorkteamResponse_labelingJobSummaryList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listLabelingJobsForWorkteam_nextToken
+          Lens..~ rs
+          Lens.^? listLabelingJobsForWorkteamResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListLabelingJobsForWorkteam where
+  type
+    AWSResponse ListLabelingJobsForWorkteam =
+      ListLabelingJobsForWorkteamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLabelingJobsForWorkteamResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "LabelingJobSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListLabelingJobsForWorkteam where
+  hashWithSalt _salt ListLabelingJobsForWorkteam' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` jobReferenceCodeContains
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` workteamArn
+
+instance Prelude.NFData ListLabelingJobsForWorkteam where
+  rnf ListLabelingJobsForWorkteam' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf jobReferenceCodeContains
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf workteamArn
+
+instance Data.ToHeaders ListLabelingJobsForWorkteam where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListLabelingJobsForWorkteam" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLabelingJobsForWorkteam where
+  toJSON ListLabelingJobsForWorkteam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("JobReferenceCodeContains" Data..=)
+              Prelude.<$> jobReferenceCodeContains,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("WorkteamArn" Data..= workteamArn)
+          ]
+      )
+
+instance Data.ToPath ListLabelingJobsForWorkteam where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLabelingJobsForWorkteam where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLabelingJobsForWorkteamResponse' smart constructor.
+data ListLabelingJobsForWorkteamResponse = ListLabelingJobsForWorkteamResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of labeling jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @LabelingJobSummary@ objects, each describing a labeling
+    -- job.
+    labelingJobSummaryList :: [LabelingJobForWorkteamSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelingJobsForWorkteamResponse' 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:
+--
+-- 'nextToken', 'listLabelingJobsForWorkteamResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of labeling jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listLabelingJobsForWorkteamResponse_httpStatus' - The response's http status code.
+--
+-- 'labelingJobSummaryList', 'listLabelingJobsForWorkteamResponse_labelingJobSummaryList' - An array of @LabelingJobSummary@ objects, each describing a labeling
+-- job.
+newListLabelingJobsForWorkteamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLabelingJobsForWorkteamResponse
+newListLabelingJobsForWorkteamResponse pHttpStatus_ =
+  ListLabelingJobsForWorkteamResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      labelingJobSummaryList =
+        Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of labeling jobs, use it in the subsequent request.
+listLabelingJobsForWorkteamResponse_nextToken :: Lens.Lens' ListLabelingJobsForWorkteamResponse (Prelude.Maybe Prelude.Text)
+listLabelingJobsForWorkteamResponse_nextToken = Lens.lens (\ListLabelingJobsForWorkteamResponse' {nextToken} -> nextToken) (\s@ListLabelingJobsForWorkteamResponse' {} a -> s {nextToken = a} :: ListLabelingJobsForWorkteamResponse)
+
+-- | The response's http status code.
+listLabelingJobsForWorkteamResponse_httpStatus :: Lens.Lens' ListLabelingJobsForWorkteamResponse Prelude.Int
+listLabelingJobsForWorkteamResponse_httpStatus = Lens.lens (\ListLabelingJobsForWorkteamResponse' {httpStatus} -> httpStatus) (\s@ListLabelingJobsForWorkteamResponse' {} a -> s {httpStatus = a} :: ListLabelingJobsForWorkteamResponse)
+
+-- | An array of @LabelingJobSummary@ objects, each describing a labeling
+-- job.
+listLabelingJobsForWorkteamResponse_labelingJobSummaryList :: Lens.Lens' ListLabelingJobsForWorkteamResponse [LabelingJobForWorkteamSummary]
+listLabelingJobsForWorkteamResponse_labelingJobSummaryList = Lens.lens (\ListLabelingJobsForWorkteamResponse' {labelingJobSummaryList} -> labelingJobSummaryList) (\s@ListLabelingJobsForWorkteamResponse' {} a -> s {labelingJobSummaryList = a} :: ListLabelingJobsForWorkteamResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListLabelingJobsForWorkteamResponse
+  where
+  rnf ListLabelingJobsForWorkteamResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf labelingJobSummaryList
diff --git a/gen/Amazonka/SageMaker/ListLineageGroups.hs b/gen/Amazonka/SageMaker/ListLineageGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListLineageGroups.hs
@@ -0,0 +1,296 @@
+{-# 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.ListLineageGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A list of lineage groups shared with your Amazon Web Services account.
+-- For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/xaccount-lineage-tracking.html Cross-Account Lineage Tracking>
+-- in the /Amazon SageMaker Developer Guide/.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListLineageGroups
+  ( -- * Creating a Request
+    ListLineageGroups (..),
+    newListLineageGroups,
+
+    -- * Request Lenses
+    listLineageGroups_createdAfter,
+    listLineageGroups_createdBefore,
+    listLineageGroups_maxResults,
+    listLineageGroups_nextToken,
+    listLineageGroups_sortBy,
+    listLineageGroups_sortOrder,
+
+    -- * Destructuring the Response
+    ListLineageGroupsResponse (..),
+    newListLineageGroupsResponse,
+
+    -- * Response Lenses
+    listLineageGroupsResponse_lineageGroupSummaries,
+    listLineageGroupsResponse_nextToken,
+    listLineageGroupsResponse_httpStatus,
+  )
+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:/ 'newListLineageGroups' smart constructor.
+data ListLineageGroups = ListLineageGroups'
+  { -- | A timestamp to filter against lineage groups created after a certain
+    -- point in time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A timestamp to filter against lineage groups created before a certain
+    -- point in time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of endpoints to return in the response. This value
+    -- defaults to 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of algorithms, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is
+    -- @CreationTime@.
+    sortBy :: Prelude.Maybe SortLineageGroupsBy,
+    -- | The sort order for the results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLineageGroups' 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:
+--
+-- 'createdAfter', 'listLineageGroups_createdAfter' - A timestamp to filter against lineage groups created after a certain
+-- point in time.
+--
+-- 'createdBefore', 'listLineageGroups_createdBefore' - A timestamp to filter against lineage groups created before a certain
+-- point in time.
+--
+-- 'maxResults', 'listLineageGroups_maxResults' - The maximum number of endpoints to return in the response. This value
+-- defaults to 10.
+--
+-- 'nextToken', 'listLineageGroups_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of algorithms, use it in the subsequent request.
+--
+-- 'sortBy', 'listLineageGroups_sortBy' - The parameter by which to sort the results. The default is
+-- @CreationTime@.
+--
+-- 'sortOrder', 'listLineageGroups_sortOrder' - The sort order for the results. The default is @Ascending@.
+newListLineageGroups ::
+  ListLineageGroups
+newListLineageGroups =
+  ListLineageGroups'
+    { createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A timestamp to filter against lineage groups created after a certain
+-- point in time.
+listLineageGroups_createdAfter :: Lens.Lens' ListLineageGroups (Prelude.Maybe Prelude.UTCTime)
+listLineageGroups_createdAfter = Lens.lens (\ListLineageGroups' {createdAfter} -> createdAfter) (\s@ListLineageGroups' {} a -> s {createdAfter = a} :: ListLineageGroups) Prelude.. Lens.mapping Data._Time
+
+-- | A timestamp to filter against lineage groups created before a certain
+-- point in time.
+listLineageGroups_createdBefore :: Lens.Lens' ListLineageGroups (Prelude.Maybe Prelude.UTCTime)
+listLineageGroups_createdBefore = Lens.lens (\ListLineageGroups' {createdBefore} -> createdBefore) (\s@ListLineageGroups' {} a -> s {createdBefore = a} :: ListLineageGroups) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of endpoints to return in the response. This value
+-- defaults to 10.
+listLineageGroups_maxResults :: Lens.Lens' ListLineageGroups (Prelude.Maybe Prelude.Natural)
+listLineageGroups_maxResults = Lens.lens (\ListLineageGroups' {maxResults} -> maxResults) (\s@ListLineageGroups' {} a -> s {maxResults = a} :: ListLineageGroups)
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of algorithms, use it in the subsequent request.
+listLineageGroups_nextToken :: Lens.Lens' ListLineageGroups (Prelude.Maybe Prelude.Text)
+listLineageGroups_nextToken = Lens.lens (\ListLineageGroups' {nextToken} -> nextToken) (\s@ListLineageGroups' {} a -> s {nextToken = a} :: ListLineageGroups)
+
+-- | The parameter by which to sort the results. The default is
+-- @CreationTime@.
+listLineageGroups_sortBy :: Lens.Lens' ListLineageGroups (Prelude.Maybe SortLineageGroupsBy)
+listLineageGroups_sortBy = Lens.lens (\ListLineageGroups' {sortBy} -> sortBy) (\s@ListLineageGroups' {} a -> s {sortBy = a} :: ListLineageGroups)
+
+-- | The sort order for the results. The default is @Ascending@.
+listLineageGroups_sortOrder :: Lens.Lens' ListLineageGroups (Prelude.Maybe SortOrder)
+listLineageGroups_sortOrder = Lens.lens (\ListLineageGroups' {sortOrder} -> sortOrder) (\s@ListLineageGroups' {} a -> s {sortOrder = a} :: ListLineageGroups)
+
+instance Core.AWSPager ListLineageGroups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listLineageGroupsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listLineageGroupsResponse_lineageGroupSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listLineageGroups_nextToken
+          Lens..~ rs
+          Lens.^? listLineageGroupsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListLineageGroups where
+  type
+    AWSResponse ListLineageGroups =
+      ListLineageGroupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLineageGroupsResponse'
+            Prelude.<$> ( x
+                            Data..?> "LineageGroupSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLineageGroups where
+  hashWithSalt _salt ListLineageGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListLineageGroups where
+  rnf ListLineageGroups' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListLineageGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListLineageGroups" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLineageGroups where
+  toJSON ListLineageGroups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListLineageGroups where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLineageGroups where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLineageGroupsResponse' smart constructor.
+data ListLineageGroupsResponse = ListLineageGroupsResponse'
+  { -- | A list of lineage groups and their properties.
+    lineageGroupSummaries :: Prelude.Maybe [LineageGroupSummary],
+    -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of algorithms, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLineageGroupsResponse' 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:
+--
+-- 'lineageGroupSummaries', 'listLineageGroupsResponse_lineageGroupSummaries' - A list of lineage groups and their properties.
+--
+-- 'nextToken', 'listLineageGroupsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of algorithms, use it in the subsequent request.
+--
+-- 'httpStatus', 'listLineageGroupsResponse_httpStatus' - The response's http status code.
+newListLineageGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLineageGroupsResponse
+newListLineageGroupsResponse pHttpStatus_ =
+  ListLineageGroupsResponse'
+    { lineageGroupSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of lineage groups and their properties.
+listLineageGroupsResponse_lineageGroupSummaries :: Lens.Lens' ListLineageGroupsResponse (Prelude.Maybe [LineageGroupSummary])
+listLineageGroupsResponse_lineageGroupSummaries = Lens.lens (\ListLineageGroupsResponse' {lineageGroupSummaries} -> lineageGroupSummaries) (\s@ListLineageGroupsResponse' {} a -> s {lineageGroupSummaries = a} :: ListLineageGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of algorithms, use it in the subsequent request.
+listLineageGroupsResponse_nextToken :: Lens.Lens' ListLineageGroupsResponse (Prelude.Maybe Prelude.Text)
+listLineageGroupsResponse_nextToken = Lens.lens (\ListLineageGroupsResponse' {nextToken} -> nextToken) (\s@ListLineageGroupsResponse' {} a -> s {nextToken = a} :: ListLineageGroupsResponse)
+
+-- | The response's http status code.
+listLineageGroupsResponse_httpStatus :: Lens.Lens' ListLineageGroupsResponse Prelude.Int
+listLineageGroupsResponse_httpStatus = Lens.lens (\ListLineageGroupsResponse' {httpStatus} -> httpStatus) (\s@ListLineageGroupsResponse' {} a -> s {httpStatus = a} :: ListLineageGroupsResponse)
+
+instance Prelude.NFData ListLineageGroupsResponse where
+  rnf ListLineageGroupsResponse' {..} =
+    Prelude.rnf lineageGroupSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListModelBiasJobDefinitions.hs b/gen/Amazonka/SageMaker/ListModelBiasJobDefinitions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelBiasJobDefinitions.hs
@@ -0,0 +1,328 @@
+{-# 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.ListModelBiasJobDefinitions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists model bias jobs definitions that satisfy various filters.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelBiasJobDefinitions
+  ( -- * Creating a Request
+    ListModelBiasJobDefinitions (..),
+    newListModelBiasJobDefinitions,
+
+    -- * Request Lenses
+    listModelBiasJobDefinitions_creationTimeAfter,
+    listModelBiasJobDefinitions_creationTimeBefore,
+    listModelBiasJobDefinitions_endpointName,
+    listModelBiasJobDefinitions_maxResults,
+    listModelBiasJobDefinitions_nameContains,
+    listModelBiasJobDefinitions_nextToken,
+    listModelBiasJobDefinitions_sortBy,
+    listModelBiasJobDefinitions_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelBiasJobDefinitionsResponse (..),
+    newListModelBiasJobDefinitionsResponse,
+
+    -- * Response Lenses
+    listModelBiasJobDefinitionsResponse_nextToken,
+    listModelBiasJobDefinitionsResponse_httpStatus,
+    listModelBiasJobDefinitionsResponse_jobDefinitionSummaries,
+  )
+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:/ 'newListModelBiasJobDefinitions' smart constructor.
+data ListModelBiasJobDefinitions = ListModelBiasJobDefinitions'
+  { -- | A filter that returns only model bias jobs created after a specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only model bias jobs created before a specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Name of the endpoint to monitor for model bias.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of model bias jobs to return in the response. The
+    -- default value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Filter for model bias jobs whose name contains a specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The token returned if the response is truncated. To retrieve the next
+    -- set of job executions, use it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Whether to sort results by the @Name@ or @CreationTime@ field. The
+    -- default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringJobDefinitionSortKey,
+    -- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+    -- default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelBiasJobDefinitions' 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:
+--
+-- 'creationTimeAfter', 'listModelBiasJobDefinitions_creationTimeAfter' - A filter that returns only model bias jobs created after a specified
+-- time.
+--
+-- 'creationTimeBefore', 'listModelBiasJobDefinitions_creationTimeBefore' - A filter that returns only model bias jobs created before a specified
+-- time.
+--
+-- 'endpointName', 'listModelBiasJobDefinitions_endpointName' - Name of the endpoint to monitor for model bias.
+--
+-- 'maxResults', 'listModelBiasJobDefinitions_maxResults' - The maximum number of model bias jobs to return in the response. The
+-- default value is 10.
+--
+-- 'nameContains', 'listModelBiasJobDefinitions_nameContains' - Filter for model bias jobs whose name contains a specified string.
+--
+-- 'nextToken', 'listModelBiasJobDefinitions_nextToken' - The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+--
+-- 'sortBy', 'listModelBiasJobDefinitions_sortBy' - Whether to sort results by the @Name@ or @CreationTime@ field. The
+-- default is @CreationTime@.
+--
+-- 'sortOrder', 'listModelBiasJobDefinitions_sortOrder' - Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+newListModelBiasJobDefinitions ::
+  ListModelBiasJobDefinitions
+newListModelBiasJobDefinitions =
+  ListModelBiasJobDefinitions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only model bias jobs created after a specified
+-- time.
+listModelBiasJobDefinitions_creationTimeAfter :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listModelBiasJobDefinitions_creationTimeAfter = Lens.lens (\ListModelBiasJobDefinitions' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelBiasJobDefinitions' {} a -> s {creationTimeAfter = a} :: ListModelBiasJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only model bias jobs created before a specified
+-- time.
+listModelBiasJobDefinitions_creationTimeBefore :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listModelBiasJobDefinitions_creationTimeBefore = Lens.lens (\ListModelBiasJobDefinitions' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelBiasJobDefinitions' {} a -> s {creationTimeBefore = a} :: ListModelBiasJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | Name of the endpoint to monitor for model bias.
+listModelBiasJobDefinitions_endpointName :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelBiasJobDefinitions_endpointName = Lens.lens (\ListModelBiasJobDefinitions' {endpointName} -> endpointName) (\s@ListModelBiasJobDefinitions' {} a -> s {endpointName = a} :: ListModelBiasJobDefinitions)
+
+-- | The maximum number of model bias jobs to return in the response. The
+-- default value is 10.
+listModelBiasJobDefinitions_maxResults :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe Prelude.Natural)
+listModelBiasJobDefinitions_maxResults = Lens.lens (\ListModelBiasJobDefinitions' {maxResults} -> maxResults) (\s@ListModelBiasJobDefinitions' {} a -> s {maxResults = a} :: ListModelBiasJobDefinitions)
+
+-- | Filter for model bias jobs whose name contains a specified string.
+listModelBiasJobDefinitions_nameContains :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelBiasJobDefinitions_nameContains = Lens.lens (\ListModelBiasJobDefinitions' {nameContains} -> nameContains) (\s@ListModelBiasJobDefinitions' {} a -> s {nameContains = a} :: ListModelBiasJobDefinitions)
+
+-- | The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+listModelBiasJobDefinitions_nextToken :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelBiasJobDefinitions_nextToken = Lens.lens (\ListModelBiasJobDefinitions' {nextToken} -> nextToken) (\s@ListModelBiasJobDefinitions' {} a -> s {nextToken = a} :: ListModelBiasJobDefinitions)
+
+-- | Whether to sort results by the @Name@ or @CreationTime@ field. The
+-- default is @CreationTime@.
+listModelBiasJobDefinitions_sortBy :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe MonitoringJobDefinitionSortKey)
+listModelBiasJobDefinitions_sortBy = Lens.lens (\ListModelBiasJobDefinitions' {sortBy} -> sortBy) (\s@ListModelBiasJobDefinitions' {} a -> s {sortBy = a} :: ListModelBiasJobDefinitions)
+
+-- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+listModelBiasJobDefinitions_sortOrder :: Lens.Lens' ListModelBiasJobDefinitions (Prelude.Maybe SortOrder)
+listModelBiasJobDefinitions_sortOrder = Lens.lens (\ListModelBiasJobDefinitions' {sortOrder} -> sortOrder) (\s@ListModelBiasJobDefinitions' {} a -> s {sortOrder = a} :: ListModelBiasJobDefinitions)
+
+instance Core.AWSPager ListModelBiasJobDefinitions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelBiasJobDefinitionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelBiasJobDefinitionsResponse_jobDefinitionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelBiasJobDefinitions_nextToken
+          Lens..~ rs
+          Lens.^? listModelBiasJobDefinitionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelBiasJobDefinitions where
+  type
+    AWSResponse ListModelBiasJobDefinitions =
+      ListModelBiasJobDefinitionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelBiasJobDefinitionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "JobDefinitionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelBiasJobDefinitions where
+  hashWithSalt _salt ListModelBiasJobDefinitions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListModelBiasJobDefinitions where
+  rnf ListModelBiasJobDefinitions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListModelBiasJobDefinitions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelBiasJobDefinitions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelBiasJobDefinitions where
+  toJSON ListModelBiasJobDefinitions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("EndpointName" Data..=) Prelude.<$> endpointName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListModelBiasJobDefinitions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelBiasJobDefinitions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelBiasJobDefinitionsResponse' smart constructor.
+data ListModelBiasJobDefinitionsResponse = ListModelBiasJobDefinitionsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A JSON array in which each element is a summary for a model bias jobs.
+    jobDefinitionSummaries :: [MonitoringJobDefinitionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelBiasJobDefinitionsResponse' 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:
+--
+-- 'nextToken', 'listModelBiasJobDefinitionsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelBiasJobDefinitionsResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionSummaries', 'listModelBiasJobDefinitionsResponse_jobDefinitionSummaries' - A JSON array in which each element is a summary for a model bias jobs.
+newListModelBiasJobDefinitionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelBiasJobDefinitionsResponse
+newListModelBiasJobDefinitionsResponse pHttpStatus_ =
+  ListModelBiasJobDefinitionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      jobDefinitionSummaries =
+        Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent request.
+listModelBiasJobDefinitionsResponse_nextToken :: Lens.Lens' ListModelBiasJobDefinitionsResponse (Prelude.Maybe Prelude.Text)
+listModelBiasJobDefinitionsResponse_nextToken = Lens.lens (\ListModelBiasJobDefinitionsResponse' {nextToken} -> nextToken) (\s@ListModelBiasJobDefinitionsResponse' {} a -> s {nextToken = a} :: ListModelBiasJobDefinitionsResponse)
+
+-- | The response's http status code.
+listModelBiasJobDefinitionsResponse_httpStatus :: Lens.Lens' ListModelBiasJobDefinitionsResponse Prelude.Int
+listModelBiasJobDefinitionsResponse_httpStatus = Lens.lens (\ListModelBiasJobDefinitionsResponse' {httpStatus} -> httpStatus) (\s@ListModelBiasJobDefinitionsResponse' {} a -> s {httpStatus = a} :: ListModelBiasJobDefinitionsResponse)
+
+-- | A JSON array in which each element is a summary for a model bias jobs.
+listModelBiasJobDefinitionsResponse_jobDefinitionSummaries :: Lens.Lens' ListModelBiasJobDefinitionsResponse [MonitoringJobDefinitionSummary]
+listModelBiasJobDefinitionsResponse_jobDefinitionSummaries = Lens.lens (\ListModelBiasJobDefinitionsResponse' {jobDefinitionSummaries} -> jobDefinitionSummaries) (\s@ListModelBiasJobDefinitionsResponse' {} a -> s {jobDefinitionSummaries = a} :: ListModelBiasJobDefinitionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListModelBiasJobDefinitionsResponse
+  where
+  rnf ListModelBiasJobDefinitionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionSummaries
diff --git a/gen/Amazonka/SageMaker/ListModelCardExportJobs.hs b/gen/Amazonka/SageMaker/ListModelCardExportJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelCardExportJobs.hs
@@ -0,0 +1,362 @@
+{-# 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.ListModelCardExportJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the export jobs for the Amazon SageMaker Model Card.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelCardExportJobs
+  ( -- * Creating a Request
+    ListModelCardExportJobs (..),
+    newListModelCardExportJobs,
+
+    -- * Request Lenses
+    listModelCardExportJobs_creationTimeAfter,
+    listModelCardExportJobs_creationTimeBefore,
+    listModelCardExportJobs_maxResults,
+    listModelCardExportJobs_modelCardExportJobNameContains,
+    listModelCardExportJobs_modelCardVersion,
+    listModelCardExportJobs_nextToken,
+    listModelCardExportJobs_sortBy,
+    listModelCardExportJobs_sortOrder,
+    listModelCardExportJobs_statusEquals,
+    listModelCardExportJobs_modelCardName,
+
+    -- * Destructuring the Response
+    ListModelCardExportJobsResponse (..),
+    newListModelCardExportJobsResponse,
+
+    -- * Response Lenses
+    listModelCardExportJobsResponse_nextToken,
+    listModelCardExportJobsResponse_httpStatus,
+    listModelCardExportJobsResponse_modelCardExportJobSummaries,
+  )
+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:/ 'newListModelCardExportJobs' smart constructor.
+data ListModelCardExportJobs = ListModelCardExportJobs'
+  { -- | Only list model card export jobs that were created after the time
+    -- specified.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list model card export jobs that were created before the time
+    -- specified.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of model card export jobs to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Only list model card export jobs with names that contain the specified
+    -- string.
+    modelCardExportJobNameContains :: Prelude.Maybe Prelude.Text,
+    -- | List export jobs for the model card with the specified version.
+    modelCardVersion :: Prelude.Maybe Prelude.Int,
+    -- | If the response to a previous @ListModelCardExportJobs@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of model card export jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort model card export jobs by either name or creation time. Sorts by
+    -- creation time by default.
+    sortBy :: Prelude.Maybe ModelCardExportJobSortBy,
+    -- | Sort model card export jobs by ascending or descending order.
+    sortOrder :: Prelude.Maybe ModelCardExportJobSortOrder,
+    -- | Only list model card export jobs with the specified status.
+    statusEquals :: Prelude.Maybe ModelCardExportJobStatus,
+    -- | List export jobs for the model card with the specified name.
+    modelCardName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelCardExportJobs' 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:
+--
+-- 'creationTimeAfter', 'listModelCardExportJobs_creationTimeAfter' - Only list model card export jobs that were created after the time
+-- specified.
+--
+-- 'creationTimeBefore', 'listModelCardExportJobs_creationTimeBefore' - Only list model card export jobs that were created before the time
+-- specified.
+--
+-- 'maxResults', 'listModelCardExportJobs_maxResults' - The maximum number of model card export jobs to list.
+--
+-- 'modelCardExportJobNameContains', 'listModelCardExportJobs_modelCardExportJobNameContains' - Only list model card export jobs with names that contain the specified
+-- string.
+--
+-- 'modelCardVersion', 'listModelCardExportJobs_modelCardVersion' - List export jobs for the model card with the specified version.
+--
+-- 'nextToken', 'listModelCardExportJobs_nextToken' - If the response to a previous @ListModelCardExportJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model card export jobs, use the token in the next request.
+--
+-- 'sortBy', 'listModelCardExportJobs_sortBy' - Sort model card export jobs by either name or creation time. Sorts by
+-- creation time by default.
+--
+-- 'sortOrder', 'listModelCardExportJobs_sortOrder' - Sort model card export jobs by ascending or descending order.
+--
+-- 'statusEquals', 'listModelCardExportJobs_statusEquals' - Only list model card export jobs with the specified status.
+--
+-- 'modelCardName', 'listModelCardExportJobs_modelCardName' - List export jobs for the model card with the specified name.
+newListModelCardExportJobs ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  ListModelCardExportJobs
+newListModelCardExportJobs pModelCardName_ =
+  ListModelCardExportJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelCardExportJobNameContains = Prelude.Nothing,
+      modelCardVersion = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing,
+      modelCardName = pModelCardName_
+    }
+
+-- | Only list model card export jobs that were created after the time
+-- specified.
+listModelCardExportJobs_creationTimeAfter :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe Prelude.UTCTime)
+listModelCardExportJobs_creationTimeAfter = Lens.lens (\ListModelCardExportJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelCardExportJobs' {} a -> s {creationTimeAfter = a} :: ListModelCardExportJobs) Prelude.. Lens.mapping Data._Time
+
+-- | Only list model card export jobs that were created before the time
+-- specified.
+listModelCardExportJobs_creationTimeBefore :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe Prelude.UTCTime)
+listModelCardExportJobs_creationTimeBefore = Lens.lens (\ListModelCardExportJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelCardExportJobs' {} a -> s {creationTimeBefore = a} :: ListModelCardExportJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of model card export jobs to list.
+listModelCardExportJobs_maxResults :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe Prelude.Natural)
+listModelCardExportJobs_maxResults = Lens.lens (\ListModelCardExportJobs' {maxResults} -> maxResults) (\s@ListModelCardExportJobs' {} a -> s {maxResults = a} :: ListModelCardExportJobs)
+
+-- | Only list model card export jobs with names that contain the specified
+-- string.
+listModelCardExportJobs_modelCardExportJobNameContains :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe Prelude.Text)
+listModelCardExportJobs_modelCardExportJobNameContains = Lens.lens (\ListModelCardExportJobs' {modelCardExportJobNameContains} -> modelCardExportJobNameContains) (\s@ListModelCardExportJobs' {} a -> s {modelCardExportJobNameContains = a} :: ListModelCardExportJobs)
+
+-- | List export jobs for the model card with the specified version.
+listModelCardExportJobs_modelCardVersion :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe Prelude.Int)
+listModelCardExportJobs_modelCardVersion = Lens.lens (\ListModelCardExportJobs' {modelCardVersion} -> modelCardVersion) (\s@ListModelCardExportJobs' {} a -> s {modelCardVersion = a} :: ListModelCardExportJobs)
+
+-- | If the response to a previous @ListModelCardExportJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model card export jobs, use the token in the next request.
+listModelCardExportJobs_nextToken :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe Prelude.Text)
+listModelCardExportJobs_nextToken = Lens.lens (\ListModelCardExportJobs' {nextToken} -> nextToken) (\s@ListModelCardExportJobs' {} a -> s {nextToken = a} :: ListModelCardExportJobs)
+
+-- | Sort model card export jobs by either name or creation time. Sorts by
+-- creation time by default.
+listModelCardExportJobs_sortBy :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe ModelCardExportJobSortBy)
+listModelCardExportJobs_sortBy = Lens.lens (\ListModelCardExportJobs' {sortBy} -> sortBy) (\s@ListModelCardExportJobs' {} a -> s {sortBy = a} :: ListModelCardExportJobs)
+
+-- | Sort model card export jobs by ascending or descending order.
+listModelCardExportJobs_sortOrder :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe ModelCardExportJobSortOrder)
+listModelCardExportJobs_sortOrder = Lens.lens (\ListModelCardExportJobs' {sortOrder} -> sortOrder) (\s@ListModelCardExportJobs' {} a -> s {sortOrder = a} :: ListModelCardExportJobs)
+
+-- | Only list model card export jobs with the specified status.
+listModelCardExportJobs_statusEquals :: Lens.Lens' ListModelCardExportJobs (Prelude.Maybe ModelCardExportJobStatus)
+listModelCardExportJobs_statusEquals = Lens.lens (\ListModelCardExportJobs' {statusEquals} -> statusEquals) (\s@ListModelCardExportJobs' {} a -> s {statusEquals = a} :: ListModelCardExportJobs)
+
+-- | List export jobs for the model card with the specified name.
+listModelCardExportJobs_modelCardName :: Lens.Lens' ListModelCardExportJobs Prelude.Text
+listModelCardExportJobs_modelCardName = Lens.lens (\ListModelCardExportJobs' {modelCardName} -> modelCardName) (\s@ListModelCardExportJobs' {} a -> s {modelCardName = a} :: ListModelCardExportJobs)
+
+instance Core.AWSPager ListModelCardExportJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelCardExportJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelCardExportJobsResponse_modelCardExportJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelCardExportJobs_nextToken
+          Lens..~ rs
+          Lens.^? listModelCardExportJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelCardExportJobs where
+  type
+    AWSResponse ListModelCardExportJobs =
+      ListModelCardExportJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelCardExportJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ModelCardExportJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelCardExportJobs where
+  hashWithSalt _salt ListModelCardExportJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelCardExportJobNameContains
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+      `Prelude.hashWithSalt` modelCardName
+
+instance Prelude.NFData ListModelCardExportJobs where
+  rnf ListModelCardExportJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelCardExportJobNameContains
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+      `Prelude.seq` Prelude.rnf modelCardName
+
+instance Data.ToHeaders ListModelCardExportJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelCardExportJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelCardExportJobs where
+  toJSON ListModelCardExportJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelCardExportJobNameContains" Data..=)
+              Prelude.<$> modelCardExportJobNameContains,
+            ("ModelCardVersion" Data..=)
+              Prelude.<$> modelCardVersion,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals,
+            Prelude.Just
+              ("ModelCardName" Data..= modelCardName)
+          ]
+      )
+
+instance Data.ToPath ListModelCardExportJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelCardExportJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelCardExportJobsResponse' smart constructor.
+data ListModelCardExportJobsResponse = ListModelCardExportJobsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of model card export jobs, use it in the subsequent
+    -- request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The summaries of the listed model card export jobs.
+    modelCardExportJobSummaries :: [ModelCardExportJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelCardExportJobsResponse' 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:
+--
+-- 'nextToken', 'listModelCardExportJobsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model card export jobs, use it in the subsequent
+-- request.
+--
+-- 'httpStatus', 'listModelCardExportJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardExportJobSummaries', 'listModelCardExportJobsResponse_modelCardExportJobSummaries' - The summaries of the listed model card export jobs.
+newListModelCardExportJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelCardExportJobsResponse
+newListModelCardExportJobsResponse pHttpStatus_ =
+  ListModelCardExportJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      modelCardExportJobSummaries =
+        Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model card export jobs, use it in the subsequent
+-- request.
+listModelCardExportJobsResponse_nextToken :: Lens.Lens' ListModelCardExportJobsResponse (Prelude.Maybe Prelude.Text)
+listModelCardExportJobsResponse_nextToken = Lens.lens (\ListModelCardExportJobsResponse' {nextToken} -> nextToken) (\s@ListModelCardExportJobsResponse' {} a -> s {nextToken = a} :: ListModelCardExportJobsResponse)
+
+-- | The response's http status code.
+listModelCardExportJobsResponse_httpStatus :: Lens.Lens' ListModelCardExportJobsResponse Prelude.Int
+listModelCardExportJobsResponse_httpStatus = Lens.lens (\ListModelCardExportJobsResponse' {httpStatus} -> httpStatus) (\s@ListModelCardExportJobsResponse' {} a -> s {httpStatus = a} :: ListModelCardExportJobsResponse)
+
+-- | The summaries of the listed model card export jobs.
+listModelCardExportJobsResponse_modelCardExportJobSummaries :: Lens.Lens' ListModelCardExportJobsResponse [ModelCardExportJobSummary]
+listModelCardExportJobsResponse_modelCardExportJobSummaries = Lens.lens (\ListModelCardExportJobsResponse' {modelCardExportJobSummaries} -> modelCardExportJobSummaries) (\s@ListModelCardExportJobsResponse' {} a -> s {modelCardExportJobSummaries = a} :: ListModelCardExportJobsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListModelCardExportJobsResponse
+  where
+  rnf ListModelCardExportJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardExportJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListModelCardVersions.hs b/gen/Amazonka/SageMaker/ListModelCardVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelCardVersions.hs
@@ -0,0 +1,322 @@
+{-# 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.ListModelCardVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List existing versions of an Amazon SageMaker Model Card.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelCardVersions
+  ( -- * Creating a Request
+    ListModelCardVersions (..),
+    newListModelCardVersions,
+
+    -- * Request Lenses
+    listModelCardVersions_creationTimeAfter,
+    listModelCardVersions_creationTimeBefore,
+    listModelCardVersions_maxResults,
+    listModelCardVersions_modelCardStatus,
+    listModelCardVersions_nextToken,
+    listModelCardVersions_sortBy,
+    listModelCardVersions_sortOrder,
+    listModelCardVersions_modelCardName,
+
+    -- * Destructuring the Response
+    ListModelCardVersionsResponse (..),
+    newListModelCardVersionsResponse,
+
+    -- * Response Lenses
+    listModelCardVersionsResponse_nextToken,
+    listModelCardVersionsResponse_httpStatus,
+    listModelCardVersionsResponse_modelCardVersionSummaryList,
+  )
+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:/ 'newListModelCardVersions' smart constructor.
+data ListModelCardVersions = ListModelCardVersions'
+  { -- | Only list model card versions that were created after the time
+    -- specified.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list model card versions that were created before the time
+    -- specified.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of model card versions to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Only list model card versions with the specified approval status.
+    modelCardStatus :: Prelude.Maybe ModelCardStatus,
+    -- | If the response to a previous @ListModelCardVersions@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of model card versions, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort listed model card versions by version. Sorts by version by default.
+    sortBy :: Prelude.Maybe ModelCardVersionSortBy,
+    -- | Sort model card versions by ascending or descending order.
+    sortOrder :: Prelude.Maybe ModelCardSortOrder,
+    -- | List model card versions for the model card with the specified name.
+    modelCardName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelCardVersions' 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:
+--
+-- 'creationTimeAfter', 'listModelCardVersions_creationTimeAfter' - Only list model card versions that were created after the time
+-- specified.
+--
+-- 'creationTimeBefore', 'listModelCardVersions_creationTimeBefore' - Only list model card versions that were created before the time
+-- specified.
+--
+-- 'maxResults', 'listModelCardVersions_maxResults' - The maximum number of model card versions to list.
+--
+-- 'modelCardStatus', 'listModelCardVersions_modelCardStatus' - Only list model card versions with the specified approval status.
+--
+-- 'nextToken', 'listModelCardVersions_nextToken' - If the response to a previous @ListModelCardVersions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model card versions, use the token in the next request.
+--
+-- 'sortBy', 'listModelCardVersions_sortBy' - Sort listed model card versions by version. Sorts by version by default.
+--
+-- 'sortOrder', 'listModelCardVersions_sortOrder' - Sort model card versions by ascending or descending order.
+--
+-- 'modelCardName', 'listModelCardVersions_modelCardName' - List model card versions for the model card with the specified name.
+newListModelCardVersions ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  ListModelCardVersions
+newListModelCardVersions pModelCardName_ =
+  ListModelCardVersions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelCardStatus = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      modelCardName = pModelCardName_
+    }
+
+-- | Only list model card versions that were created after the time
+-- specified.
+listModelCardVersions_creationTimeAfter :: Lens.Lens' ListModelCardVersions (Prelude.Maybe Prelude.UTCTime)
+listModelCardVersions_creationTimeAfter = Lens.lens (\ListModelCardVersions' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelCardVersions' {} a -> s {creationTimeAfter = a} :: ListModelCardVersions) Prelude.. Lens.mapping Data._Time
+
+-- | Only list model card versions that were created before the time
+-- specified.
+listModelCardVersions_creationTimeBefore :: Lens.Lens' ListModelCardVersions (Prelude.Maybe Prelude.UTCTime)
+listModelCardVersions_creationTimeBefore = Lens.lens (\ListModelCardVersions' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelCardVersions' {} a -> s {creationTimeBefore = a} :: ListModelCardVersions) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of model card versions to list.
+listModelCardVersions_maxResults :: Lens.Lens' ListModelCardVersions (Prelude.Maybe Prelude.Natural)
+listModelCardVersions_maxResults = Lens.lens (\ListModelCardVersions' {maxResults} -> maxResults) (\s@ListModelCardVersions' {} a -> s {maxResults = a} :: ListModelCardVersions)
+
+-- | Only list model card versions with the specified approval status.
+listModelCardVersions_modelCardStatus :: Lens.Lens' ListModelCardVersions (Prelude.Maybe ModelCardStatus)
+listModelCardVersions_modelCardStatus = Lens.lens (\ListModelCardVersions' {modelCardStatus} -> modelCardStatus) (\s@ListModelCardVersions' {} a -> s {modelCardStatus = a} :: ListModelCardVersions)
+
+-- | If the response to a previous @ListModelCardVersions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model card versions, use the token in the next request.
+listModelCardVersions_nextToken :: Lens.Lens' ListModelCardVersions (Prelude.Maybe Prelude.Text)
+listModelCardVersions_nextToken = Lens.lens (\ListModelCardVersions' {nextToken} -> nextToken) (\s@ListModelCardVersions' {} a -> s {nextToken = a} :: ListModelCardVersions)
+
+-- | Sort listed model card versions by version. Sorts by version by default.
+listModelCardVersions_sortBy :: Lens.Lens' ListModelCardVersions (Prelude.Maybe ModelCardVersionSortBy)
+listModelCardVersions_sortBy = Lens.lens (\ListModelCardVersions' {sortBy} -> sortBy) (\s@ListModelCardVersions' {} a -> s {sortBy = a} :: ListModelCardVersions)
+
+-- | Sort model card versions by ascending or descending order.
+listModelCardVersions_sortOrder :: Lens.Lens' ListModelCardVersions (Prelude.Maybe ModelCardSortOrder)
+listModelCardVersions_sortOrder = Lens.lens (\ListModelCardVersions' {sortOrder} -> sortOrder) (\s@ListModelCardVersions' {} a -> s {sortOrder = a} :: ListModelCardVersions)
+
+-- | List model card versions for the model card with the specified name.
+listModelCardVersions_modelCardName :: Lens.Lens' ListModelCardVersions Prelude.Text
+listModelCardVersions_modelCardName = Lens.lens (\ListModelCardVersions' {modelCardName} -> modelCardName) (\s@ListModelCardVersions' {} a -> s {modelCardName = a} :: ListModelCardVersions)
+
+instance Core.AWSPager ListModelCardVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelCardVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelCardVersionsResponse_modelCardVersionSummaryList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelCardVersions_nextToken
+          Lens..~ rs
+          Lens.^? listModelCardVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelCardVersions where
+  type
+    AWSResponse ListModelCardVersions =
+      ListModelCardVersionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelCardVersionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ModelCardVersionSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelCardVersions where
+  hashWithSalt _salt ListModelCardVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` modelCardName
+
+instance Prelude.NFData ListModelCardVersions where
+  rnf ListModelCardVersions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf modelCardName
+
+instance Data.ToHeaders ListModelCardVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelCardVersions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelCardVersions where
+  toJSON ListModelCardVersions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelCardStatus" Data..=)
+              Prelude.<$> modelCardStatus,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just
+              ("ModelCardName" Data..= modelCardName)
+          ]
+      )
+
+instance Data.ToPath ListModelCardVersions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelCardVersions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelCardVersionsResponse' smart constructor.
+data ListModelCardVersionsResponse = ListModelCardVersionsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of model card versions, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The summaries of the listed versions of the model card.
+    modelCardVersionSummaryList :: [ModelCardVersionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelCardVersionsResponse' 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:
+--
+-- 'nextToken', 'listModelCardVersionsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model card versions, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelCardVersionsResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardVersionSummaryList', 'listModelCardVersionsResponse_modelCardVersionSummaryList' - The summaries of the listed versions of the model card.
+newListModelCardVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelCardVersionsResponse
+newListModelCardVersionsResponse pHttpStatus_ =
+  ListModelCardVersionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      modelCardVersionSummaryList = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model card versions, use it in the subsequent request.
+listModelCardVersionsResponse_nextToken :: Lens.Lens' ListModelCardVersionsResponse (Prelude.Maybe Prelude.Text)
+listModelCardVersionsResponse_nextToken = Lens.lens (\ListModelCardVersionsResponse' {nextToken} -> nextToken) (\s@ListModelCardVersionsResponse' {} a -> s {nextToken = a} :: ListModelCardVersionsResponse)
+
+-- | The response's http status code.
+listModelCardVersionsResponse_httpStatus :: Lens.Lens' ListModelCardVersionsResponse Prelude.Int
+listModelCardVersionsResponse_httpStatus = Lens.lens (\ListModelCardVersionsResponse' {httpStatus} -> httpStatus) (\s@ListModelCardVersionsResponse' {} a -> s {httpStatus = a} :: ListModelCardVersionsResponse)
+
+-- | The summaries of the listed versions of the model card.
+listModelCardVersionsResponse_modelCardVersionSummaryList :: Lens.Lens' ListModelCardVersionsResponse [ModelCardVersionSummary]
+listModelCardVersionsResponse_modelCardVersionSummaryList = Lens.lens (\ListModelCardVersionsResponse' {modelCardVersionSummaryList} -> modelCardVersionSummaryList) (\s@ListModelCardVersionsResponse' {} a -> s {modelCardVersionSummaryList = a} :: ListModelCardVersionsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListModelCardVersionsResponse where
+  rnf ListModelCardVersionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardVersionSummaryList
diff --git a/gen/Amazonka/SageMaker/ListModelCards.hs b/gen/Amazonka/SageMaker/ListModelCards.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelCards.hs
@@ -0,0 +1,314 @@
+{-# 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.ListModelCards
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List existing model cards.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelCards
+  ( -- * Creating a Request
+    ListModelCards (..),
+    newListModelCards,
+
+    -- * Request Lenses
+    listModelCards_creationTimeAfter,
+    listModelCards_creationTimeBefore,
+    listModelCards_maxResults,
+    listModelCards_modelCardStatus,
+    listModelCards_nameContains,
+    listModelCards_nextToken,
+    listModelCards_sortBy,
+    listModelCards_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelCardsResponse (..),
+    newListModelCardsResponse,
+
+    -- * Response Lenses
+    listModelCardsResponse_nextToken,
+    listModelCardsResponse_httpStatus,
+    listModelCardsResponse_modelCardSummaries,
+  )
+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:/ 'newListModelCards' smart constructor.
+data ListModelCards = ListModelCards'
+  { -- | Only list model cards that were created after the time specified.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Only list model cards that were created before the time specified.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of model cards to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Only list model cards with the specified approval status.
+    modelCardStatus :: Prelude.Maybe ModelCardStatus,
+    -- | Only list model cards with names that contain the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListModelCards@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of model
+    -- cards, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort model cards by either name or creation time. Sorts by creation time
+    -- by default.
+    sortBy :: Prelude.Maybe ModelCardSortBy,
+    -- | Sort model cards by ascending or descending order.
+    sortOrder :: Prelude.Maybe ModelCardSortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelCards' 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:
+--
+-- 'creationTimeAfter', 'listModelCards_creationTimeAfter' - Only list model cards that were created after the time specified.
+--
+-- 'creationTimeBefore', 'listModelCards_creationTimeBefore' - Only list model cards that were created before the time specified.
+--
+-- 'maxResults', 'listModelCards_maxResults' - The maximum number of model cards to list.
+--
+-- 'modelCardStatus', 'listModelCards_modelCardStatus' - Only list model cards with the specified approval status.
+--
+-- 'nameContains', 'listModelCards_nameContains' - Only list model cards with names that contain the specified string.
+--
+-- 'nextToken', 'listModelCards_nextToken' - If the response to a previous @ListModelCards@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of model
+-- cards, use the token in the next request.
+--
+-- 'sortBy', 'listModelCards_sortBy' - Sort model cards by either name or creation time. Sorts by creation time
+-- by default.
+--
+-- 'sortOrder', 'listModelCards_sortOrder' - Sort model cards by ascending or descending order.
+newListModelCards ::
+  ListModelCards
+newListModelCards =
+  ListModelCards'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelCardStatus = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | Only list model cards that were created after the time specified.
+listModelCards_creationTimeAfter :: Lens.Lens' ListModelCards (Prelude.Maybe Prelude.UTCTime)
+listModelCards_creationTimeAfter = Lens.lens (\ListModelCards' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelCards' {} a -> s {creationTimeAfter = a} :: ListModelCards) Prelude.. Lens.mapping Data._Time
+
+-- | Only list model cards that were created before the time specified.
+listModelCards_creationTimeBefore :: Lens.Lens' ListModelCards (Prelude.Maybe Prelude.UTCTime)
+listModelCards_creationTimeBefore = Lens.lens (\ListModelCards' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelCards' {} a -> s {creationTimeBefore = a} :: ListModelCards) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of model cards to list.
+listModelCards_maxResults :: Lens.Lens' ListModelCards (Prelude.Maybe Prelude.Natural)
+listModelCards_maxResults = Lens.lens (\ListModelCards' {maxResults} -> maxResults) (\s@ListModelCards' {} a -> s {maxResults = a} :: ListModelCards)
+
+-- | Only list model cards with the specified approval status.
+listModelCards_modelCardStatus :: Lens.Lens' ListModelCards (Prelude.Maybe ModelCardStatus)
+listModelCards_modelCardStatus = Lens.lens (\ListModelCards' {modelCardStatus} -> modelCardStatus) (\s@ListModelCards' {} a -> s {modelCardStatus = a} :: ListModelCards)
+
+-- | Only list model cards with names that contain the specified string.
+listModelCards_nameContains :: Lens.Lens' ListModelCards (Prelude.Maybe Prelude.Text)
+listModelCards_nameContains = Lens.lens (\ListModelCards' {nameContains} -> nameContains) (\s@ListModelCards' {} a -> s {nameContains = a} :: ListModelCards)
+
+-- | If the response to a previous @ListModelCards@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of model
+-- cards, use the token in the next request.
+listModelCards_nextToken :: Lens.Lens' ListModelCards (Prelude.Maybe Prelude.Text)
+listModelCards_nextToken = Lens.lens (\ListModelCards' {nextToken} -> nextToken) (\s@ListModelCards' {} a -> s {nextToken = a} :: ListModelCards)
+
+-- | Sort model cards by either name or creation time. Sorts by creation time
+-- by default.
+listModelCards_sortBy :: Lens.Lens' ListModelCards (Prelude.Maybe ModelCardSortBy)
+listModelCards_sortBy = Lens.lens (\ListModelCards' {sortBy} -> sortBy) (\s@ListModelCards' {} a -> s {sortBy = a} :: ListModelCards)
+
+-- | Sort model cards by ascending or descending order.
+listModelCards_sortOrder :: Lens.Lens' ListModelCards (Prelude.Maybe ModelCardSortOrder)
+listModelCards_sortOrder = Lens.lens (\ListModelCards' {sortOrder} -> sortOrder) (\s@ListModelCards' {} a -> s {sortOrder = a} :: ListModelCards)
+
+instance Core.AWSPager ListModelCards where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelCardsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelCardsResponse_modelCardSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelCards_nextToken
+          Lens..~ rs
+          Lens.^? listModelCardsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelCards where
+  type
+    AWSResponse ListModelCards =
+      ListModelCardsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelCardsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ModelCardSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelCards where
+  hashWithSalt _salt ListModelCards' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListModelCards where
+  rnf ListModelCards' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListModelCards where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListModelCards" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelCards where
+  toJSON ListModelCards' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelCardStatus" Data..=)
+              Prelude.<$> modelCardStatus,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListModelCards where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelCards where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelCardsResponse' smart constructor.
+data ListModelCardsResponse = ListModelCardsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of model cards, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The summaries of the listed model cards.
+    modelCardSummaries :: [ModelCardSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelCardsResponse' 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:
+--
+-- 'nextToken', 'listModelCardsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model cards, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelCardsResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardSummaries', 'listModelCardsResponse_modelCardSummaries' - The summaries of the listed model cards.
+newListModelCardsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelCardsResponse
+newListModelCardsResponse pHttpStatus_ =
+  ListModelCardsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      modelCardSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model cards, use it in the subsequent request.
+listModelCardsResponse_nextToken :: Lens.Lens' ListModelCardsResponse (Prelude.Maybe Prelude.Text)
+listModelCardsResponse_nextToken = Lens.lens (\ListModelCardsResponse' {nextToken} -> nextToken) (\s@ListModelCardsResponse' {} a -> s {nextToken = a} :: ListModelCardsResponse)
+
+-- | The response's http status code.
+listModelCardsResponse_httpStatus :: Lens.Lens' ListModelCardsResponse Prelude.Int
+listModelCardsResponse_httpStatus = Lens.lens (\ListModelCardsResponse' {httpStatus} -> httpStatus) (\s@ListModelCardsResponse' {} a -> s {httpStatus = a} :: ListModelCardsResponse)
+
+-- | The summaries of the listed model cards.
+listModelCardsResponse_modelCardSummaries :: Lens.Lens' ListModelCardsResponse [ModelCardSummary]
+listModelCardsResponse_modelCardSummaries = Lens.lens (\ListModelCardsResponse' {modelCardSummaries} -> modelCardSummaries) (\s@ListModelCardsResponse' {} a -> s {modelCardSummaries = a} :: ListModelCardsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListModelCardsResponse where
+  rnf ListModelCardsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardSummaries
diff --git a/gen/Amazonka/SageMaker/ListModelExplainabilityJobDefinitions.hs b/gen/Amazonka/SageMaker/ListModelExplainabilityJobDefinitions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelExplainabilityJobDefinitions.hs
@@ -0,0 +1,363 @@
+{-# 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.ListModelExplainabilityJobDefinitions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists model explainability job definitions that satisfy various filters.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelExplainabilityJobDefinitions
+  ( -- * Creating a Request
+    ListModelExplainabilityJobDefinitions (..),
+    newListModelExplainabilityJobDefinitions,
+
+    -- * Request Lenses
+    listModelExplainabilityJobDefinitions_creationTimeAfter,
+    listModelExplainabilityJobDefinitions_creationTimeBefore,
+    listModelExplainabilityJobDefinitions_endpointName,
+    listModelExplainabilityJobDefinitions_maxResults,
+    listModelExplainabilityJobDefinitions_nameContains,
+    listModelExplainabilityJobDefinitions_nextToken,
+    listModelExplainabilityJobDefinitions_sortBy,
+    listModelExplainabilityJobDefinitions_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelExplainabilityJobDefinitionsResponse (..),
+    newListModelExplainabilityJobDefinitionsResponse,
+
+    -- * Response Lenses
+    listModelExplainabilityJobDefinitionsResponse_nextToken,
+    listModelExplainabilityJobDefinitionsResponse_httpStatus,
+    listModelExplainabilityJobDefinitionsResponse_jobDefinitionSummaries,
+  )
+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:/ 'newListModelExplainabilityJobDefinitions' smart constructor.
+data ListModelExplainabilityJobDefinitions = ListModelExplainabilityJobDefinitions'
+  { -- | A filter that returns only model explainability jobs created after a
+    -- specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only model explainability jobs created before a
+    -- specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Name of the endpoint to monitor for model explainability.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of jobs to return in the response. The default value
+    -- is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Filter for model explainability jobs whose name contains a specified
+    -- string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The token returned if the response is truncated. To retrieve the next
+    -- set of job executions, use it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Whether to sort results by the @Name@ or @CreationTime@ field. The
+    -- default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringJobDefinitionSortKey,
+    -- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+    -- default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelExplainabilityJobDefinitions' 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:
+--
+-- 'creationTimeAfter', 'listModelExplainabilityJobDefinitions_creationTimeAfter' - A filter that returns only model explainability jobs created after a
+-- specified time.
+--
+-- 'creationTimeBefore', 'listModelExplainabilityJobDefinitions_creationTimeBefore' - A filter that returns only model explainability jobs created before a
+-- specified time.
+--
+-- 'endpointName', 'listModelExplainabilityJobDefinitions_endpointName' - Name of the endpoint to monitor for model explainability.
+--
+-- 'maxResults', 'listModelExplainabilityJobDefinitions_maxResults' - The maximum number of jobs to return in the response. The default value
+-- is 10.
+--
+-- 'nameContains', 'listModelExplainabilityJobDefinitions_nameContains' - Filter for model explainability jobs whose name contains a specified
+-- string.
+--
+-- 'nextToken', 'listModelExplainabilityJobDefinitions_nextToken' - The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+--
+-- 'sortBy', 'listModelExplainabilityJobDefinitions_sortBy' - Whether to sort results by the @Name@ or @CreationTime@ field. The
+-- default is @CreationTime@.
+--
+-- 'sortOrder', 'listModelExplainabilityJobDefinitions_sortOrder' - Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+newListModelExplainabilityJobDefinitions ::
+  ListModelExplainabilityJobDefinitions
+newListModelExplainabilityJobDefinitions =
+  ListModelExplainabilityJobDefinitions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only model explainability jobs created after a
+-- specified time.
+listModelExplainabilityJobDefinitions_creationTimeAfter :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listModelExplainabilityJobDefinitions_creationTimeAfter = Lens.lens (\ListModelExplainabilityJobDefinitions' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {creationTimeAfter = a} :: ListModelExplainabilityJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only model explainability jobs created before a
+-- specified time.
+listModelExplainabilityJobDefinitions_creationTimeBefore :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listModelExplainabilityJobDefinitions_creationTimeBefore = Lens.lens (\ListModelExplainabilityJobDefinitions' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {creationTimeBefore = a} :: ListModelExplainabilityJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | Name of the endpoint to monitor for model explainability.
+listModelExplainabilityJobDefinitions_endpointName :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelExplainabilityJobDefinitions_endpointName = Lens.lens (\ListModelExplainabilityJobDefinitions' {endpointName} -> endpointName) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {endpointName = a} :: ListModelExplainabilityJobDefinitions)
+
+-- | The maximum number of jobs to return in the response. The default value
+-- is 10.
+listModelExplainabilityJobDefinitions_maxResults :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe Prelude.Natural)
+listModelExplainabilityJobDefinitions_maxResults = Lens.lens (\ListModelExplainabilityJobDefinitions' {maxResults} -> maxResults) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {maxResults = a} :: ListModelExplainabilityJobDefinitions)
+
+-- | Filter for model explainability jobs whose name contains a specified
+-- string.
+listModelExplainabilityJobDefinitions_nameContains :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelExplainabilityJobDefinitions_nameContains = Lens.lens (\ListModelExplainabilityJobDefinitions' {nameContains} -> nameContains) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {nameContains = a} :: ListModelExplainabilityJobDefinitions)
+
+-- | The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+listModelExplainabilityJobDefinitions_nextToken :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelExplainabilityJobDefinitions_nextToken = Lens.lens (\ListModelExplainabilityJobDefinitions' {nextToken} -> nextToken) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {nextToken = a} :: ListModelExplainabilityJobDefinitions)
+
+-- | Whether to sort results by the @Name@ or @CreationTime@ field. The
+-- default is @CreationTime@.
+listModelExplainabilityJobDefinitions_sortBy :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe MonitoringJobDefinitionSortKey)
+listModelExplainabilityJobDefinitions_sortBy = Lens.lens (\ListModelExplainabilityJobDefinitions' {sortBy} -> sortBy) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {sortBy = a} :: ListModelExplainabilityJobDefinitions)
+
+-- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+listModelExplainabilityJobDefinitions_sortOrder :: Lens.Lens' ListModelExplainabilityJobDefinitions (Prelude.Maybe SortOrder)
+listModelExplainabilityJobDefinitions_sortOrder = Lens.lens (\ListModelExplainabilityJobDefinitions' {sortOrder} -> sortOrder) (\s@ListModelExplainabilityJobDefinitions' {} a -> s {sortOrder = a} :: ListModelExplainabilityJobDefinitions)
+
+instance
+  Core.AWSPager
+    ListModelExplainabilityJobDefinitions
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelExplainabilityJobDefinitionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelExplainabilityJobDefinitionsResponse_jobDefinitionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelExplainabilityJobDefinitions_nextToken
+          Lens..~ rs
+          Lens.^? listModelExplainabilityJobDefinitionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListModelExplainabilityJobDefinitions
+  where
+  type
+    AWSResponse
+      ListModelExplainabilityJobDefinitions =
+      ListModelExplainabilityJobDefinitionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelExplainabilityJobDefinitionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "JobDefinitionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    ListModelExplainabilityJobDefinitions
+  where
+  hashWithSalt
+    _salt
+    ListModelExplainabilityJobDefinitions' {..} =
+      _salt
+        `Prelude.hashWithSalt` creationTimeAfter
+        `Prelude.hashWithSalt` creationTimeBefore
+        `Prelude.hashWithSalt` endpointName
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nameContains
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` sortBy
+        `Prelude.hashWithSalt` sortOrder
+
+instance
+  Prelude.NFData
+    ListModelExplainabilityJobDefinitions
+  where
+  rnf ListModelExplainabilityJobDefinitions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance
+  Data.ToHeaders
+    ListModelExplainabilityJobDefinitions
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelExplainabilityJobDefinitions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListModelExplainabilityJobDefinitions
+  where
+  toJSON ListModelExplainabilityJobDefinitions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("EndpointName" Data..=) Prelude.<$> endpointName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListModelExplainabilityJobDefinitions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListModelExplainabilityJobDefinitions
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelExplainabilityJobDefinitionsResponse' smart constructor.
+data ListModelExplainabilityJobDefinitionsResponse = ListModelExplainabilityJobDefinitionsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A JSON array in which each element is a summary for a explainability
+    -- bias jobs.
+    jobDefinitionSummaries :: [MonitoringJobDefinitionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelExplainabilityJobDefinitionsResponse' 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:
+--
+-- 'nextToken', 'listModelExplainabilityJobDefinitionsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelExplainabilityJobDefinitionsResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionSummaries', 'listModelExplainabilityJobDefinitionsResponse_jobDefinitionSummaries' - A JSON array in which each element is a summary for a explainability
+-- bias jobs.
+newListModelExplainabilityJobDefinitionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelExplainabilityJobDefinitionsResponse
+newListModelExplainabilityJobDefinitionsResponse
+  pHttpStatus_ =
+    ListModelExplainabilityJobDefinitionsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobDefinitionSummaries =
+          Prelude.mempty
+      }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent request.
+listModelExplainabilityJobDefinitionsResponse_nextToken :: Lens.Lens' ListModelExplainabilityJobDefinitionsResponse (Prelude.Maybe Prelude.Text)
+listModelExplainabilityJobDefinitionsResponse_nextToken = Lens.lens (\ListModelExplainabilityJobDefinitionsResponse' {nextToken} -> nextToken) (\s@ListModelExplainabilityJobDefinitionsResponse' {} a -> s {nextToken = a} :: ListModelExplainabilityJobDefinitionsResponse)
+
+-- | The response's http status code.
+listModelExplainabilityJobDefinitionsResponse_httpStatus :: Lens.Lens' ListModelExplainabilityJobDefinitionsResponse Prelude.Int
+listModelExplainabilityJobDefinitionsResponse_httpStatus = Lens.lens (\ListModelExplainabilityJobDefinitionsResponse' {httpStatus} -> httpStatus) (\s@ListModelExplainabilityJobDefinitionsResponse' {} a -> s {httpStatus = a} :: ListModelExplainabilityJobDefinitionsResponse)
+
+-- | A JSON array in which each element is a summary for a explainability
+-- bias jobs.
+listModelExplainabilityJobDefinitionsResponse_jobDefinitionSummaries :: Lens.Lens' ListModelExplainabilityJobDefinitionsResponse [MonitoringJobDefinitionSummary]
+listModelExplainabilityJobDefinitionsResponse_jobDefinitionSummaries = Lens.lens (\ListModelExplainabilityJobDefinitionsResponse' {jobDefinitionSummaries} -> jobDefinitionSummaries) (\s@ListModelExplainabilityJobDefinitionsResponse' {} a -> s {jobDefinitionSummaries = a} :: ListModelExplainabilityJobDefinitionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListModelExplainabilityJobDefinitionsResponse
+  where
+  rnf
+    ListModelExplainabilityJobDefinitionsResponse' {..} =
+      Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf httpStatus
+        `Prelude.seq` Prelude.rnf jobDefinitionSummaries
diff --git a/gen/Amazonka/SageMaker/ListModelMetadata.hs b/gen/Amazonka/SageMaker/ListModelMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelMetadata.hs
@@ -0,0 +1,255 @@
+{-# 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.ListModelMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the domain, framework, task, and model name of standard machine
+-- learning models found in common model zoos.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelMetadata
+  ( -- * Creating a Request
+    ListModelMetadata (..),
+    newListModelMetadata,
+
+    -- * Request Lenses
+    listModelMetadata_maxResults,
+    listModelMetadata_nextToken,
+    listModelMetadata_searchExpression,
+
+    -- * Destructuring the Response
+    ListModelMetadataResponse (..),
+    newListModelMetadataResponse,
+
+    -- * Response Lenses
+    listModelMetadataResponse_nextToken,
+    listModelMetadataResponse_httpStatus,
+    listModelMetadataResponse_modelMetadataSummaries,
+  )
+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:/ 'newListModelMetadata' smart constructor.
+data ListModelMetadata = ListModelMetadata'
+  { -- | The maximum number of models to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the response to a previous @ListModelMetadataResponse@ request was
+    -- truncated, the response includes a NextToken. To retrieve the next set
+    -- of model metadata, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | One or more filters that searches for the specified resource or
+    -- resources in a search. All resource objects that satisfy the
+    -- expression\'s condition are included in the search results. Specify the
+    -- Framework, FrameworkVersion, Domain or Task to filter supported. Filter
+    -- names and values are case-sensitive.
+    searchExpression :: Prelude.Maybe ModelMetadataSearchExpression
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelMetadata' 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:
+--
+-- 'maxResults', 'listModelMetadata_maxResults' - The maximum number of models to return in the response.
+--
+-- 'nextToken', 'listModelMetadata_nextToken' - If the response to a previous @ListModelMetadataResponse@ request was
+-- truncated, the response includes a NextToken. To retrieve the next set
+-- of model metadata, use the token in the next request.
+--
+-- 'searchExpression', 'listModelMetadata_searchExpression' - One or more filters that searches for the specified resource or
+-- resources in a search. All resource objects that satisfy the
+-- expression\'s condition are included in the search results. Specify the
+-- Framework, FrameworkVersion, Domain or Task to filter supported. Filter
+-- names and values are case-sensitive.
+newListModelMetadata ::
+  ListModelMetadata
+newListModelMetadata =
+  ListModelMetadata'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      searchExpression = Prelude.Nothing
+    }
+
+-- | The maximum number of models to return in the response.
+listModelMetadata_maxResults :: Lens.Lens' ListModelMetadata (Prelude.Maybe Prelude.Natural)
+listModelMetadata_maxResults = Lens.lens (\ListModelMetadata' {maxResults} -> maxResults) (\s@ListModelMetadata' {} a -> s {maxResults = a} :: ListModelMetadata)
+
+-- | If the response to a previous @ListModelMetadataResponse@ request was
+-- truncated, the response includes a NextToken. To retrieve the next set
+-- of model metadata, use the token in the next request.
+listModelMetadata_nextToken :: Lens.Lens' ListModelMetadata (Prelude.Maybe Prelude.Text)
+listModelMetadata_nextToken = Lens.lens (\ListModelMetadata' {nextToken} -> nextToken) (\s@ListModelMetadata' {} a -> s {nextToken = a} :: ListModelMetadata)
+
+-- | One or more filters that searches for the specified resource or
+-- resources in a search. All resource objects that satisfy the
+-- expression\'s condition are included in the search results. Specify the
+-- Framework, FrameworkVersion, Domain or Task to filter supported. Filter
+-- names and values are case-sensitive.
+listModelMetadata_searchExpression :: Lens.Lens' ListModelMetadata (Prelude.Maybe ModelMetadataSearchExpression)
+listModelMetadata_searchExpression = Lens.lens (\ListModelMetadata' {searchExpression} -> searchExpression) (\s@ListModelMetadata' {} a -> s {searchExpression = a} :: ListModelMetadata)
+
+instance Core.AWSPager ListModelMetadata where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelMetadataResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelMetadataResponse_modelMetadataSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelMetadata_nextToken
+          Lens..~ rs
+          Lens.^? listModelMetadataResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelMetadata where
+  type
+    AWSResponse ListModelMetadata =
+      ListModelMetadataResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelMetadataResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ModelMetadataSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelMetadata where
+  hashWithSalt _salt ListModelMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` searchExpression
+
+instance Prelude.NFData ListModelMetadata where
+  rnf ListModelMetadata' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf searchExpression
+
+instance Data.ToHeaders ListModelMetadata where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelMetadata" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelMetadata where
+  toJSON ListModelMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SearchExpression" Data..=)
+              Prelude.<$> searchExpression
+          ]
+      )
+
+instance Data.ToPath ListModelMetadata where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelMetadata where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelMetadataResponse' smart constructor.
+data ListModelMetadataResponse = ListModelMetadataResponse'
+  { -- | A token for getting the next set of recommendations, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A structure that holds model metadata.
+    modelMetadataSummaries :: [ModelMetadataSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelMetadataResponse' 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:
+--
+-- 'nextToken', 'listModelMetadataResponse_nextToken' - A token for getting the next set of recommendations, if there are any.
+--
+-- 'httpStatus', 'listModelMetadataResponse_httpStatus' - The response's http status code.
+--
+-- 'modelMetadataSummaries', 'listModelMetadataResponse_modelMetadataSummaries' - A structure that holds model metadata.
+newListModelMetadataResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelMetadataResponse
+newListModelMetadataResponse pHttpStatus_ =
+  ListModelMetadataResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      modelMetadataSummaries = Prelude.mempty
+    }
+
+-- | A token for getting the next set of recommendations, if there are any.
+listModelMetadataResponse_nextToken :: Lens.Lens' ListModelMetadataResponse (Prelude.Maybe Prelude.Text)
+listModelMetadataResponse_nextToken = Lens.lens (\ListModelMetadataResponse' {nextToken} -> nextToken) (\s@ListModelMetadataResponse' {} a -> s {nextToken = a} :: ListModelMetadataResponse)
+
+-- | The response's http status code.
+listModelMetadataResponse_httpStatus :: Lens.Lens' ListModelMetadataResponse Prelude.Int
+listModelMetadataResponse_httpStatus = Lens.lens (\ListModelMetadataResponse' {httpStatus} -> httpStatus) (\s@ListModelMetadataResponse' {} a -> s {httpStatus = a} :: ListModelMetadataResponse)
+
+-- | A structure that holds model metadata.
+listModelMetadataResponse_modelMetadataSummaries :: Lens.Lens' ListModelMetadataResponse [ModelMetadataSummary]
+listModelMetadataResponse_modelMetadataSummaries = Lens.lens (\ListModelMetadataResponse' {modelMetadataSummaries} -> modelMetadataSummaries) (\s@ListModelMetadataResponse' {} a -> s {modelMetadataSummaries = a} :: ListModelMetadataResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListModelMetadataResponse where
+  rnf ListModelMetadataResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelMetadataSummaries
diff --git a/gen/Amazonka/SageMaker/ListModelPackageGroups.hs b/gen/Amazonka/SageMaker/ListModelPackageGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelPackageGroups.hs
@@ -0,0 +1,315 @@
+{-# 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.ListModelPackageGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of the model groups in your Amazon Web Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelPackageGroups
+  ( -- * Creating a Request
+    ListModelPackageGroups (..),
+    newListModelPackageGroups,
+
+    -- * Request Lenses
+    listModelPackageGroups_creationTimeAfter,
+    listModelPackageGroups_creationTimeBefore,
+    listModelPackageGroups_maxResults,
+    listModelPackageGroups_nameContains,
+    listModelPackageGroups_nextToken,
+    listModelPackageGroups_sortBy,
+    listModelPackageGroups_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelPackageGroupsResponse (..),
+    newListModelPackageGroupsResponse,
+
+    -- * Response Lenses
+    listModelPackageGroupsResponse_nextToken,
+    listModelPackageGroupsResponse_httpStatus,
+    listModelPackageGroupsResponse_modelPackageGroupSummaryList,
+  )
+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:/ 'newListModelPackageGroups' smart constructor.
+data ListModelPackageGroups = ListModelPackageGroups'
+  { -- | A filter that returns only model groups created after the specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only model groups created before the specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of results to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the model group name. This filter returns only model groups
+    -- whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListModelPackageGroups@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of model groups, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe ModelPackageGroupSortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelPackageGroups' 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:
+--
+-- 'creationTimeAfter', 'listModelPackageGroups_creationTimeAfter' - A filter that returns only model groups created after the specified
+-- time.
+--
+-- 'creationTimeBefore', 'listModelPackageGroups_creationTimeBefore' - A filter that returns only model groups created before the specified
+-- time.
+--
+-- 'maxResults', 'listModelPackageGroups_maxResults' - The maximum number of results to return in the response.
+--
+-- 'nameContains', 'listModelPackageGroups_nameContains' - A string in the model group name. This filter returns only model groups
+-- whose name contains the specified string.
+--
+-- 'nextToken', 'listModelPackageGroups_nextToken' - If the result of the previous @ListModelPackageGroups@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model groups, use the token in the next request.
+--
+-- 'sortBy', 'listModelPackageGroups_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listModelPackageGroups_sortOrder' - The sort order for results. The default is @Ascending@.
+newListModelPackageGroups ::
+  ListModelPackageGroups
+newListModelPackageGroups =
+  ListModelPackageGroups'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only model groups created after the specified
+-- time.
+listModelPackageGroups_creationTimeAfter :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe Prelude.UTCTime)
+listModelPackageGroups_creationTimeAfter = Lens.lens (\ListModelPackageGroups' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelPackageGroups' {} a -> s {creationTimeAfter = a} :: ListModelPackageGroups) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only model groups created before the specified
+-- time.
+listModelPackageGroups_creationTimeBefore :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe Prelude.UTCTime)
+listModelPackageGroups_creationTimeBefore = Lens.lens (\ListModelPackageGroups' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelPackageGroups' {} a -> s {creationTimeBefore = a} :: ListModelPackageGroups) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of results to return in the response.
+listModelPackageGroups_maxResults :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe Prelude.Natural)
+listModelPackageGroups_maxResults = Lens.lens (\ListModelPackageGroups' {maxResults} -> maxResults) (\s@ListModelPackageGroups' {} a -> s {maxResults = a} :: ListModelPackageGroups)
+
+-- | A string in the model group name. This filter returns only model groups
+-- whose name contains the specified string.
+listModelPackageGroups_nameContains :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe Prelude.Text)
+listModelPackageGroups_nameContains = Lens.lens (\ListModelPackageGroups' {nameContains} -> nameContains) (\s@ListModelPackageGroups' {} a -> s {nameContains = a} :: ListModelPackageGroups)
+
+-- | If the result of the previous @ListModelPackageGroups@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model groups, use the token in the next request.
+listModelPackageGroups_nextToken :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe Prelude.Text)
+listModelPackageGroups_nextToken = Lens.lens (\ListModelPackageGroups' {nextToken} -> nextToken) (\s@ListModelPackageGroups' {} a -> s {nextToken = a} :: ListModelPackageGroups)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listModelPackageGroups_sortBy :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe ModelPackageGroupSortBy)
+listModelPackageGroups_sortBy = Lens.lens (\ListModelPackageGroups' {sortBy} -> sortBy) (\s@ListModelPackageGroups' {} a -> s {sortBy = a} :: ListModelPackageGroups)
+
+-- | The sort order for results. The default is @Ascending@.
+listModelPackageGroups_sortOrder :: Lens.Lens' ListModelPackageGroups (Prelude.Maybe SortOrder)
+listModelPackageGroups_sortOrder = Lens.lens (\ListModelPackageGroups' {sortOrder} -> sortOrder) (\s@ListModelPackageGroups' {} a -> s {sortOrder = a} :: ListModelPackageGroups)
+
+instance Core.AWSPager ListModelPackageGroups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelPackageGroupsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelPackageGroupsResponse_modelPackageGroupSummaryList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelPackageGroups_nextToken
+          Lens..~ rs
+          Lens.^? listModelPackageGroupsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelPackageGroups where
+  type
+    AWSResponse ListModelPackageGroups =
+      ListModelPackageGroupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelPackageGroupsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ModelPackageGroupSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelPackageGroups where
+  hashWithSalt _salt ListModelPackageGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListModelPackageGroups where
+  rnf ListModelPackageGroups' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListModelPackageGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelPackageGroups" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelPackageGroups where
+  toJSON ListModelPackageGroups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListModelPackageGroups where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelPackageGroups where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelPackageGroupsResponse' smart constructor.
+data ListModelPackageGroupsResponse = ListModelPackageGroupsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of model groups, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of summaries of the model groups in your Amazon Web Services
+    -- account.
+    modelPackageGroupSummaryList :: [ModelPackageGroupSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelPackageGroupsResponse' 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:
+--
+-- 'nextToken', 'listModelPackageGroupsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model groups, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelPackageGroupsResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageGroupSummaryList', 'listModelPackageGroupsResponse_modelPackageGroupSummaryList' - A list of summaries of the model groups in your Amazon Web Services
+-- account.
+newListModelPackageGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelPackageGroupsResponse
+newListModelPackageGroupsResponse pHttpStatus_ =
+  ListModelPackageGroupsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      modelPackageGroupSummaryList =
+        Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model groups, use it in the subsequent request.
+listModelPackageGroupsResponse_nextToken :: Lens.Lens' ListModelPackageGroupsResponse (Prelude.Maybe Prelude.Text)
+listModelPackageGroupsResponse_nextToken = Lens.lens (\ListModelPackageGroupsResponse' {nextToken} -> nextToken) (\s@ListModelPackageGroupsResponse' {} a -> s {nextToken = a} :: ListModelPackageGroupsResponse)
+
+-- | The response's http status code.
+listModelPackageGroupsResponse_httpStatus :: Lens.Lens' ListModelPackageGroupsResponse Prelude.Int
+listModelPackageGroupsResponse_httpStatus = Lens.lens (\ListModelPackageGroupsResponse' {httpStatus} -> httpStatus) (\s@ListModelPackageGroupsResponse' {} a -> s {httpStatus = a} :: ListModelPackageGroupsResponse)
+
+-- | A list of summaries of the model groups in your Amazon Web Services
+-- account.
+listModelPackageGroupsResponse_modelPackageGroupSummaryList :: Lens.Lens' ListModelPackageGroupsResponse [ModelPackageGroupSummary]
+listModelPackageGroupsResponse_modelPackageGroupSummaryList = Lens.lens (\ListModelPackageGroupsResponse' {modelPackageGroupSummaryList} -> modelPackageGroupSummaryList) (\s@ListModelPackageGroupsResponse' {} a -> s {modelPackageGroupSummaryList = a} :: ListModelPackageGroupsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListModelPackageGroupsResponse
+  where
+  rnf ListModelPackageGroupsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageGroupSummaryList
diff --git a/gen/Amazonka/SageMaker/ListModelPackages.hs b/gen/Amazonka/SageMaker/ListModelPackages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelPackages.hs
@@ -0,0 +1,386 @@
+{-# 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.ListModelPackages
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the model packages that have been created.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelPackages
+  ( -- * Creating a Request
+    ListModelPackages (..),
+    newListModelPackages,
+
+    -- * Request Lenses
+    listModelPackages_creationTimeAfter,
+    listModelPackages_creationTimeBefore,
+    listModelPackages_maxResults,
+    listModelPackages_modelApprovalStatus,
+    listModelPackages_modelPackageGroupName,
+    listModelPackages_modelPackageType,
+    listModelPackages_nameContains,
+    listModelPackages_nextToken,
+    listModelPackages_sortBy,
+    listModelPackages_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelPackagesResponse (..),
+    newListModelPackagesResponse,
+
+    -- * Response Lenses
+    listModelPackagesResponse_nextToken,
+    listModelPackagesResponse_httpStatus,
+    listModelPackagesResponse_modelPackageSummaryList,
+  )
+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:/ 'newListModelPackages' smart constructor.
+data ListModelPackages = ListModelPackages'
+  { -- | A filter that returns only model packages created after the specified
+    -- time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only model packages created before the specified
+    -- time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of model packages to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter that returns only the model packages with the specified
+    -- approval status.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | A filter that returns only model versions that belong to the specified
+    -- model group.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only the model packages of the specified type.
+    -- This can be one of the following values.
+    --
+    -- -   @UNVERSIONED@ - List only unversioined models. This is the default
+    --     value if no @ModelPackageType@ is specified.
+    --
+    -- -   @VERSIONED@ - List only versioned models.
+    --
+    -- -   @BOTH@ - List both versioned and unversioned models.
+    modelPackageType :: Prelude.Maybe ModelPackageType,
+    -- | A string in the model package name. This filter returns only model
+    -- packages whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListModelPackages@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of model
+    -- packages, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is
+    -- @CreationTime@.
+    sortBy :: Prelude.Maybe ModelPackageSortBy,
+    -- | The sort order for the results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelPackages' 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:
+--
+-- 'creationTimeAfter', 'listModelPackages_creationTimeAfter' - A filter that returns only model packages created after the specified
+-- time (timestamp).
+--
+-- 'creationTimeBefore', 'listModelPackages_creationTimeBefore' - A filter that returns only model packages created before the specified
+-- time (timestamp).
+--
+-- 'maxResults', 'listModelPackages_maxResults' - The maximum number of model packages to return in the response.
+--
+-- 'modelApprovalStatus', 'listModelPackages_modelApprovalStatus' - A filter that returns only the model packages with the specified
+-- approval status.
+--
+-- 'modelPackageGroupName', 'listModelPackages_modelPackageGroupName' - A filter that returns only model versions that belong to the specified
+-- model group.
+--
+-- 'modelPackageType', 'listModelPackages_modelPackageType' - A filter that returns only the model packages of the specified type.
+-- This can be one of the following values.
+--
+-- -   @UNVERSIONED@ - List only unversioined models. This is the default
+--     value if no @ModelPackageType@ is specified.
+--
+-- -   @VERSIONED@ - List only versioned models.
+--
+-- -   @BOTH@ - List both versioned and unversioned models.
+--
+-- 'nameContains', 'listModelPackages_nameContains' - A string in the model package name. This filter returns only model
+-- packages whose name contains the specified string.
+--
+-- 'nextToken', 'listModelPackages_nextToken' - If the response to a previous @ListModelPackages@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of model
+-- packages, use the token in the next request.
+--
+-- 'sortBy', 'listModelPackages_sortBy' - The parameter by which to sort the results. The default is
+-- @CreationTime@.
+--
+-- 'sortOrder', 'listModelPackages_sortOrder' - The sort order for the results. The default is @Ascending@.
+newListModelPackages ::
+  ListModelPackages
+newListModelPackages =
+  ListModelPackages'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelApprovalStatus = Prelude.Nothing,
+      modelPackageGroupName = Prelude.Nothing,
+      modelPackageType = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only model packages created after the specified
+-- time (timestamp).
+listModelPackages_creationTimeAfter :: Lens.Lens' ListModelPackages (Prelude.Maybe Prelude.UTCTime)
+listModelPackages_creationTimeAfter = Lens.lens (\ListModelPackages' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelPackages' {} a -> s {creationTimeAfter = a} :: ListModelPackages) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only model packages created before the specified
+-- time (timestamp).
+listModelPackages_creationTimeBefore :: Lens.Lens' ListModelPackages (Prelude.Maybe Prelude.UTCTime)
+listModelPackages_creationTimeBefore = Lens.lens (\ListModelPackages' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelPackages' {} a -> s {creationTimeBefore = a} :: ListModelPackages) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of model packages to return in the response.
+listModelPackages_maxResults :: Lens.Lens' ListModelPackages (Prelude.Maybe Prelude.Natural)
+listModelPackages_maxResults = Lens.lens (\ListModelPackages' {maxResults} -> maxResults) (\s@ListModelPackages' {} a -> s {maxResults = a} :: ListModelPackages)
+
+-- | A filter that returns only the model packages with the specified
+-- approval status.
+listModelPackages_modelApprovalStatus :: Lens.Lens' ListModelPackages (Prelude.Maybe ModelApprovalStatus)
+listModelPackages_modelApprovalStatus = Lens.lens (\ListModelPackages' {modelApprovalStatus} -> modelApprovalStatus) (\s@ListModelPackages' {} a -> s {modelApprovalStatus = a} :: ListModelPackages)
+
+-- | A filter that returns only model versions that belong to the specified
+-- model group.
+listModelPackages_modelPackageGroupName :: Lens.Lens' ListModelPackages (Prelude.Maybe Prelude.Text)
+listModelPackages_modelPackageGroupName = Lens.lens (\ListModelPackages' {modelPackageGroupName} -> modelPackageGroupName) (\s@ListModelPackages' {} a -> s {modelPackageGroupName = a} :: ListModelPackages)
+
+-- | A filter that returns only the model packages of the specified type.
+-- This can be one of the following values.
+--
+-- -   @UNVERSIONED@ - List only unversioined models. This is the default
+--     value if no @ModelPackageType@ is specified.
+--
+-- -   @VERSIONED@ - List only versioned models.
+--
+-- -   @BOTH@ - List both versioned and unversioned models.
+listModelPackages_modelPackageType :: Lens.Lens' ListModelPackages (Prelude.Maybe ModelPackageType)
+listModelPackages_modelPackageType = Lens.lens (\ListModelPackages' {modelPackageType} -> modelPackageType) (\s@ListModelPackages' {} a -> s {modelPackageType = a} :: ListModelPackages)
+
+-- | A string in the model package name. This filter returns only model
+-- packages whose name contains the specified string.
+listModelPackages_nameContains :: Lens.Lens' ListModelPackages (Prelude.Maybe Prelude.Text)
+listModelPackages_nameContains = Lens.lens (\ListModelPackages' {nameContains} -> nameContains) (\s@ListModelPackages' {} a -> s {nameContains = a} :: ListModelPackages)
+
+-- | If the response to a previous @ListModelPackages@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of model
+-- packages, use the token in the next request.
+listModelPackages_nextToken :: Lens.Lens' ListModelPackages (Prelude.Maybe Prelude.Text)
+listModelPackages_nextToken = Lens.lens (\ListModelPackages' {nextToken} -> nextToken) (\s@ListModelPackages' {} a -> s {nextToken = a} :: ListModelPackages)
+
+-- | The parameter by which to sort the results. The default is
+-- @CreationTime@.
+listModelPackages_sortBy :: Lens.Lens' ListModelPackages (Prelude.Maybe ModelPackageSortBy)
+listModelPackages_sortBy = Lens.lens (\ListModelPackages' {sortBy} -> sortBy) (\s@ListModelPackages' {} a -> s {sortBy = a} :: ListModelPackages)
+
+-- | The sort order for the results. The default is @Ascending@.
+listModelPackages_sortOrder :: Lens.Lens' ListModelPackages (Prelude.Maybe SortOrder)
+listModelPackages_sortOrder = Lens.lens (\ListModelPackages' {sortOrder} -> sortOrder) (\s@ListModelPackages' {} a -> s {sortOrder = a} :: ListModelPackages)
+
+instance Core.AWSPager ListModelPackages where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelPackagesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelPackagesResponse_modelPackageSummaryList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelPackages_nextToken
+          Lens..~ rs
+          Lens.^? listModelPackagesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModelPackages where
+  type
+    AWSResponse ListModelPackages =
+      ListModelPackagesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelPackagesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ModelPackageSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListModelPackages where
+  hashWithSalt _salt ListModelPackages' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelApprovalStatus
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` modelPackageType
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListModelPackages where
+  rnf ListModelPackages' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageType
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListModelPackages where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelPackages" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelPackages where
+  toJSON ListModelPackages' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelApprovalStatus" Data..=)
+              Prelude.<$> modelApprovalStatus,
+            ("ModelPackageGroupName" Data..=)
+              Prelude.<$> modelPackageGroupName,
+            ("ModelPackageType" Data..=)
+              Prelude.<$> modelPackageType,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListModelPackages where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelPackages where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelPackagesResponse' smart constructor.
+data ListModelPackagesResponse = ListModelPackagesResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of model packages, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @ModelPackageSummary@ objects, each of which lists a model
+    -- package.
+    modelPackageSummaryList :: [ModelPackageSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelPackagesResponse' 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:
+--
+-- 'nextToken', 'listModelPackagesResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model packages, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelPackagesResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageSummaryList', 'listModelPackagesResponse_modelPackageSummaryList' - An array of @ModelPackageSummary@ objects, each of which lists a model
+-- package.
+newListModelPackagesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelPackagesResponse
+newListModelPackagesResponse pHttpStatus_ =
+  ListModelPackagesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      modelPackageSummaryList = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of model packages, use it in the subsequent request.
+listModelPackagesResponse_nextToken :: Lens.Lens' ListModelPackagesResponse (Prelude.Maybe Prelude.Text)
+listModelPackagesResponse_nextToken = Lens.lens (\ListModelPackagesResponse' {nextToken} -> nextToken) (\s@ListModelPackagesResponse' {} a -> s {nextToken = a} :: ListModelPackagesResponse)
+
+-- | The response's http status code.
+listModelPackagesResponse_httpStatus :: Lens.Lens' ListModelPackagesResponse Prelude.Int
+listModelPackagesResponse_httpStatus = Lens.lens (\ListModelPackagesResponse' {httpStatus} -> httpStatus) (\s@ListModelPackagesResponse' {} a -> s {httpStatus = a} :: ListModelPackagesResponse)
+
+-- | An array of @ModelPackageSummary@ objects, each of which lists a model
+-- package.
+listModelPackagesResponse_modelPackageSummaryList :: Lens.Lens' ListModelPackagesResponse [ModelPackageSummary]
+listModelPackagesResponse_modelPackageSummaryList = Lens.lens (\ListModelPackagesResponse' {modelPackageSummaryList} -> modelPackageSummaryList) (\s@ListModelPackagesResponse' {} a -> s {modelPackageSummaryList = a} :: ListModelPackagesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListModelPackagesResponse where
+  rnf ListModelPackagesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageSummaryList
diff --git a/gen/Amazonka/SageMaker/ListModelQualityJobDefinitions.hs b/gen/Amazonka/SageMaker/ListModelQualityJobDefinitions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModelQualityJobDefinitions.hs
@@ -0,0 +1,355 @@
+{-# 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.ListModelQualityJobDefinitions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of model quality monitoring job definitions in your account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModelQualityJobDefinitions
+  ( -- * Creating a Request
+    ListModelQualityJobDefinitions (..),
+    newListModelQualityJobDefinitions,
+
+    -- * Request Lenses
+    listModelQualityJobDefinitions_creationTimeAfter,
+    listModelQualityJobDefinitions_creationTimeBefore,
+    listModelQualityJobDefinitions_endpointName,
+    listModelQualityJobDefinitions_maxResults,
+    listModelQualityJobDefinitions_nameContains,
+    listModelQualityJobDefinitions_nextToken,
+    listModelQualityJobDefinitions_sortBy,
+    listModelQualityJobDefinitions_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelQualityJobDefinitionsResponse (..),
+    newListModelQualityJobDefinitionsResponse,
+
+    -- * Response Lenses
+    listModelQualityJobDefinitionsResponse_nextToken,
+    listModelQualityJobDefinitionsResponse_httpStatus,
+    listModelQualityJobDefinitionsResponse_jobDefinitionSummaries,
+  )
+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:/ 'newListModelQualityJobDefinitions' smart constructor.
+data ListModelQualityJobDefinitions = ListModelQualityJobDefinitions'
+  { -- | A filter that returns only model quality monitoring job definitions
+    -- created after the specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only model quality monitoring job definitions
+    -- created before the specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only model quality monitoring job definitions that
+    -- are associated with the specified endpoint.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return in a call to
+    -- @ListModelQualityJobDefinitions@.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the transform job name. This filter returns only model
+    -- quality monitoring job definitions whose name contains the specified
+    -- string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListModelQualityJobDefinitions@ request
+    -- was truncated, the response includes a @NextToken@. To retrieve the next
+    -- set of model quality monitoring job definitions, use the token in the
+    -- next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringJobDefinitionSortKey,
+    -- | The sort order for results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelQualityJobDefinitions' 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:
+--
+-- 'creationTimeAfter', 'listModelQualityJobDefinitions_creationTimeAfter' - A filter that returns only model quality monitoring job definitions
+-- created after the specified time.
+--
+-- 'creationTimeBefore', 'listModelQualityJobDefinitions_creationTimeBefore' - A filter that returns only model quality monitoring job definitions
+-- created before the specified time.
+--
+-- 'endpointName', 'listModelQualityJobDefinitions_endpointName' - A filter that returns only model quality monitoring job definitions that
+-- are associated with the specified endpoint.
+--
+-- 'maxResults', 'listModelQualityJobDefinitions_maxResults' - The maximum number of results to return in a call to
+-- @ListModelQualityJobDefinitions@.
+--
+-- 'nameContains', 'listModelQualityJobDefinitions_nameContains' - A string in the transform job name. This filter returns only model
+-- quality monitoring job definitions whose name contains the specified
+-- string.
+--
+-- 'nextToken', 'listModelQualityJobDefinitions_nextToken' - If the result of the previous @ListModelQualityJobDefinitions@ request
+-- was truncated, the response includes a @NextToken@. To retrieve the next
+-- set of model quality monitoring job definitions, use the token in the
+-- next request.
+--
+-- 'sortBy', 'listModelQualityJobDefinitions_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listModelQualityJobDefinitions_sortOrder' - The sort order for results. The default is @Descending@.
+newListModelQualityJobDefinitions ::
+  ListModelQualityJobDefinitions
+newListModelQualityJobDefinitions =
+  ListModelQualityJobDefinitions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only model quality monitoring job definitions
+-- created after the specified time.
+listModelQualityJobDefinitions_creationTimeAfter :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listModelQualityJobDefinitions_creationTimeAfter = Lens.lens (\ListModelQualityJobDefinitions' {creationTimeAfter} -> creationTimeAfter) (\s@ListModelQualityJobDefinitions' {} a -> s {creationTimeAfter = a} :: ListModelQualityJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only model quality monitoring job definitions
+-- created before the specified time.
+listModelQualityJobDefinitions_creationTimeBefore :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe Prelude.UTCTime)
+listModelQualityJobDefinitions_creationTimeBefore = Lens.lens (\ListModelQualityJobDefinitions' {creationTimeBefore} -> creationTimeBefore) (\s@ListModelQualityJobDefinitions' {} a -> s {creationTimeBefore = a} :: ListModelQualityJobDefinitions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only model quality monitoring job definitions that
+-- are associated with the specified endpoint.
+listModelQualityJobDefinitions_endpointName :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelQualityJobDefinitions_endpointName = Lens.lens (\ListModelQualityJobDefinitions' {endpointName} -> endpointName) (\s@ListModelQualityJobDefinitions' {} a -> s {endpointName = a} :: ListModelQualityJobDefinitions)
+
+-- | The maximum number of results to return in a call to
+-- @ListModelQualityJobDefinitions@.
+listModelQualityJobDefinitions_maxResults :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe Prelude.Natural)
+listModelQualityJobDefinitions_maxResults = Lens.lens (\ListModelQualityJobDefinitions' {maxResults} -> maxResults) (\s@ListModelQualityJobDefinitions' {} a -> s {maxResults = a} :: ListModelQualityJobDefinitions)
+
+-- | A string in the transform job name. This filter returns only model
+-- quality monitoring job definitions whose name contains the specified
+-- string.
+listModelQualityJobDefinitions_nameContains :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelQualityJobDefinitions_nameContains = Lens.lens (\ListModelQualityJobDefinitions' {nameContains} -> nameContains) (\s@ListModelQualityJobDefinitions' {} a -> s {nameContains = a} :: ListModelQualityJobDefinitions)
+
+-- | If the result of the previous @ListModelQualityJobDefinitions@ request
+-- was truncated, the response includes a @NextToken@. To retrieve the next
+-- set of model quality monitoring job definitions, use the token in the
+-- next request.
+listModelQualityJobDefinitions_nextToken :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe Prelude.Text)
+listModelQualityJobDefinitions_nextToken = Lens.lens (\ListModelQualityJobDefinitions' {nextToken} -> nextToken) (\s@ListModelQualityJobDefinitions' {} a -> s {nextToken = a} :: ListModelQualityJobDefinitions)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listModelQualityJobDefinitions_sortBy :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe MonitoringJobDefinitionSortKey)
+listModelQualityJobDefinitions_sortBy = Lens.lens (\ListModelQualityJobDefinitions' {sortBy} -> sortBy) (\s@ListModelQualityJobDefinitions' {} a -> s {sortBy = a} :: ListModelQualityJobDefinitions)
+
+-- | The sort order for results. The default is @Descending@.
+listModelQualityJobDefinitions_sortOrder :: Lens.Lens' ListModelQualityJobDefinitions (Prelude.Maybe SortOrder)
+listModelQualityJobDefinitions_sortOrder = Lens.lens (\ListModelQualityJobDefinitions' {sortOrder} -> sortOrder) (\s@ListModelQualityJobDefinitions' {} a -> s {sortOrder = a} :: ListModelQualityJobDefinitions)
+
+instance Core.AWSPager ListModelQualityJobDefinitions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelQualityJobDefinitionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listModelQualityJobDefinitionsResponse_jobDefinitionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModelQualityJobDefinitions_nextToken
+          Lens..~ rs
+          Lens.^? listModelQualityJobDefinitionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListModelQualityJobDefinitions
+  where
+  type
+    AWSResponse ListModelQualityJobDefinitions =
+      ListModelQualityJobDefinitionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelQualityJobDefinitionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "JobDefinitionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    ListModelQualityJobDefinitions
+  where
+  hashWithSalt
+    _salt
+    ListModelQualityJobDefinitions' {..} =
+      _salt
+        `Prelude.hashWithSalt` creationTimeAfter
+        `Prelude.hashWithSalt` creationTimeBefore
+        `Prelude.hashWithSalt` endpointName
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nameContains
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` sortBy
+        `Prelude.hashWithSalt` sortOrder
+
+instance
+  Prelude.NFData
+    ListModelQualityJobDefinitions
+  where
+  rnf ListModelQualityJobDefinitions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance
+  Data.ToHeaders
+    ListModelQualityJobDefinitions
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListModelQualityJobDefinitions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModelQualityJobDefinitions where
+  toJSON ListModelQualityJobDefinitions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("EndpointName" Data..=) Prelude.<$> endpointName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListModelQualityJobDefinitions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModelQualityJobDefinitions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelQualityJobDefinitionsResponse' smart constructor.
+data ListModelQualityJobDefinitionsResponse = ListModelQualityJobDefinitionsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of model quality monitoring job definitions, use
+    -- it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of summaries of model quality monitoring job definitions.
+    jobDefinitionSummaries :: [MonitoringJobDefinitionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelQualityJobDefinitionsResponse' 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:
+--
+-- 'nextToken', 'listModelQualityJobDefinitionsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of model quality monitoring job definitions, use
+-- it in the next request.
+--
+-- 'httpStatus', 'listModelQualityJobDefinitionsResponse_httpStatus' - The response's http status code.
+--
+-- 'jobDefinitionSummaries', 'listModelQualityJobDefinitionsResponse_jobDefinitionSummaries' - A list of summaries of model quality monitoring job definitions.
+newListModelQualityJobDefinitionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelQualityJobDefinitionsResponse
+newListModelQualityJobDefinitionsResponse
+  pHttpStatus_ =
+    ListModelQualityJobDefinitionsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobDefinitionSummaries =
+          Prelude.mempty
+      }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of model quality monitoring job definitions, use
+-- it in the next request.
+listModelQualityJobDefinitionsResponse_nextToken :: Lens.Lens' ListModelQualityJobDefinitionsResponse (Prelude.Maybe Prelude.Text)
+listModelQualityJobDefinitionsResponse_nextToken = Lens.lens (\ListModelQualityJobDefinitionsResponse' {nextToken} -> nextToken) (\s@ListModelQualityJobDefinitionsResponse' {} a -> s {nextToken = a} :: ListModelQualityJobDefinitionsResponse)
+
+-- | The response's http status code.
+listModelQualityJobDefinitionsResponse_httpStatus :: Lens.Lens' ListModelQualityJobDefinitionsResponse Prelude.Int
+listModelQualityJobDefinitionsResponse_httpStatus = Lens.lens (\ListModelQualityJobDefinitionsResponse' {httpStatus} -> httpStatus) (\s@ListModelQualityJobDefinitionsResponse' {} a -> s {httpStatus = a} :: ListModelQualityJobDefinitionsResponse)
+
+-- | A list of summaries of model quality monitoring job definitions.
+listModelQualityJobDefinitionsResponse_jobDefinitionSummaries :: Lens.Lens' ListModelQualityJobDefinitionsResponse [MonitoringJobDefinitionSummary]
+listModelQualityJobDefinitionsResponse_jobDefinitionSummaries = Lens.lens (\ListModelQualityJobDefinitionsResponse' {jobDefinitionSummaries} -> jobDefinitionSummaries) (\s@ListModelQualityJobDefinitionsResponse' {} a -> s {jobDefinitionSummaries = a} :: ListModelQualityJobDefinitionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListModelQualityJobDefinitionsResponse
+  where
+  rnf ListModelQualityJobDefinitionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobDefinitionSummaries
diff --git a/gen/Amazonka/SageMaker/ListModels.hs b/gen/Amazonka/SageMaker/ListModels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListModels.hs
@@ -0,0 +1,296 @@
+{-# 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.ListModels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists models created with the @CreateModel@ API.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListModels
+  ( -- * Creating a Request
+    ListModels (..),
+    newListModels,
+
+    -- * Request Lenses
+    listModels_creationTimeAfter,
+    listModels_creationTimeBefore,
+    listModels_maxResults,
+    listModels_nameContains,
+    listModels_nextToken,
+    listModels_sortBy,
+    listModels_sortOrder,
+
+    -- * Destructuring the Response
+    ListModelsResponse (..),
+    newListModelsResponse,
+
+    -- * Response Lenses
+    listModelsResponse_nextToken,
+    listModelsResponse_httpStatus,
+    listModelsResponse_models,
+  )
+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:/ 'newListModels' smart constructor.
+data ListModels = ListModels'
+  { -- | A filter that returns only models with a creation time greater than or
+    -- equal to the specified time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only models created before the specified time
+    -- (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of models to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the model name. This filter returns only models whose name
+    -- contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the response to a previous @ListModels@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of models, use
+    -- the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sorts the list of results. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe ModelSortKey,
+    -- | The sort order for results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe OrderKey
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModels' 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:
+--
+-- 'creationTimeAfter', 'listModels_creationTimeAfter' - A filter that returns only models with a creation time greater than or
+-- equal to the specified time (timestamp).
+--
+-- 'creationTimeBefore', 'listModels_creationTimeBefore' - A filter that returns only models created before the specified time
+-- (timestamp).
+--
+-- 'maxResults', 'listModels_maxResults' - The maximum number of models to return in the response.
+--
+-- 'nameContains', 'listModels_nameContains' - A string in the model name. This filter returns only models whose name
+-- contains the specified string.
+--
+-- 'nextToken', 'listModels_nextToken' - If the response to a previous @ListModels@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of models, use
+-- the token in the next request.
+--
+-- 'sortBy', 'listModels_sortBy' - Sorts the list of results. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listModels_sortOrder' - The sort order for results. The default is @Descending@.
+newListModels ::
+  ListModels
+newListModels =
+  ListModels'
+    { creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only models with a creation time greater than or
+-- equal to the specified time (timestamp).
+listModels_creationTimeAfter :: Lens.Lens' ListModels (Prelude.Maybe Prelude.UTCTime)
+listModels_creationTimeAfter = Lens.lens (\ListModels' {creationTimeAfter} -> creationTimeAfter) (\s@ListModels' {} a -> s {creationTimeAfter = a} :: ListModels) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only models created before the specified time
+-- (timestamp).
+listModels_creationTimeBefore :: Lens.Lens' ListModels (Prelude.Maybe Prelude.UTCTime)
+listModels_creationTimeBefore = Lens.lens (\ListModels' {creationTimeBefore} -> creationTimeBefore) (\s@ListModels' {} a -> s {creationTimeBefore = a} :: ListModels) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of models to return in the response.
+listModels_maxResults :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Natural)
+listModels_maxResults = Lens.lens (\ListModels' {maxResults} -> maxResults) (\s@ListModels' {} a -> s {maxResults = a} :: ListModels)
+
+-- | A string in the model name. This filter returns only models whose name
+-- contains the specified string.
+listModels_nameContains :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Text)
+listModels_nameContains = Lens.lens (\ListModels' {nameContains} -> nameContains) (\s@ListModels' {} a -> s {nameContains = a} :: ListModels)
+
+-- | If the response to a previous @ListModels@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of models, use
+-- the token in the next request.
+listModels_nextToken :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Text)
+listModels_nextToken = Lens.lens (\ListModels' {nextToken} -> nextToken) (\s@ListModels' {} a -> s {nextToken = a} :: ListModels)
+
+-- | Sorts the list of results. The default is @CreationTime@.
+listModels_sortBy :: Lens.Lens' ListModels (Prelude.Maybe ModelSortKey)
+listModels_sortBy = Lens.lens (\ListModels' {sortBy} -> sortBy) (\s@ListModels' {} a -> s {sortBy = a} :: ListModels)
+
+-- | The sort order for results. The default is @Descending@.
+listModels_sortOrder :: Lens.Lens' ListModels (Prelude.Maybe OrderKey)
+listModels_sortOrder = Lens.lens (\ListModels' {sortOrder} -> sortOrder) (\s@ListModels' {} a -> s {sortOrder = a} :: ListModels)
+
+instance Core.AWSPager ListModels where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listModelsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop (rs Lens.^. listModelsResponse_models) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listModels_nextToken
+          Lens..~ rs
+          Lens.^? listModelsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListModels where
+  type AWSResponse ListModels = ListModelsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "Models" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListModels where
+  hashWithSalt _salt ListModels' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListModels where
+  rnf ListModels' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListModels where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListModels" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModels where
+  toJSON ListModels' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListModels where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModels where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelsResponse' smart constructor.
+data ListModelsResponse = ListModelsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of models, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @ModelSummary@ objects, each of which lists a model.
+    models :: [ModelSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelsResponse' 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:
+--
+-- 'nextToken', 'listModelsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of models, use it in the subsequent request.
+--
+-- 'httpStatus', 'listModelsResponse_httpStatus' - The response's http status code.
+--
+-- 'models', 'listModelsResponse_models' - An array of @ModelSummary@ objects, each of which lists a model.
+newListModelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelsResponse
+newListModelsResponse pHttpStatus_ =
+  ListModelsResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      models = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of models, use it in the subsequent request.
+listModelsResponse_nextToken :: Lens.Lens' ListModelsResponse (Prelude.Maybe Prelude.Text)
+listModelsResponse_nextToken = Lens.lens (\ListModelsResponse' {nextToken} -> nextToken) (\s@ListModelsResponse' {} a -> s {nextToken = a} :: ListModelsResponse)
+
+-- | The response's http status code.
+listModelsResponse_httpStatus :: Lens.Lens' ListModelsResponse Prelude.Int
+listModelsResponse_httpStatus = Lens.lens (\ListModelsResponse' {httpStatus} -> httpStatus) (\s@ListModelsResponse' {} a -> s {httpStatus = a} :: ListModelsResponse)
+
+-- | An array of @ModelSummary@ objects, each of which lists a model.
+listModelsResponse_models :: Lens.Lens' ListModelsResponse [ModelSummary]
+listModelsResponse_models = Lens.lens (\ListModelsResponse' {models} -> models) (\s@ListModelsResponse' {} a -> s {models = a} :: ListModelsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListModelsResponse where
+  rnf ListModelsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf models
diff --git a/gen/Amazonka/SageMaker/ListMonitoringAlertHistory.hs b/gen/Amazonka/SageMaker/ListMonitoringAlertHistory.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListMonitoringAlertHistory.hs
@@ -0,0 +1,340 @@
+{-# 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.ListMonitoringAlertHistory
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of past alerts in a model monitoring schedule.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListMonitoringAlertHistory
+  ( -- * Creating a Request
+    ListMonitoringAlertHistory (..),
+    newListMonitoringAlertHistory,
+
+    -- * Request Lenses
+    listMonitoringAlertHistory_creationTimeAfter,
+    listMonitoringAlertHistory_creationTimeBefore,
+    listMonitoringAlertHistory_maxResults,
+    listMonitoringAlertHistory_monitoringAlertName,
+    listMonitoringAlertHistory_monitoringScheduleName,
+    listMonitoringAlertHistory_nextToken,
+    listMonitoringAlertHistory_sortBy,
+    listMonitoringAlertHistory_sortOrder,
+    listMonitoringAlertHistory_statusEquals,
+
+    -- * Destructuring the Response
+    ListMonitoringAlertHistoryResponse (..),
+    newListMonitoringAlertHistoryResponse,
+
+    -- * Response Lenses
+    listMonitoringAlertHistoryResponse_monitoringAlertHistory,
+    listMonitoringAlertHistoryResponse_nextToken,
+    listMonitoringAlertHistoryResponse_httpStatus,
+  )
+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:/ 'newListMonitoringAlertHistory' smart constructor.
+data ListMonitoringAlertHistory = ListMonitoringAlertHistory'
+  { -- | A filter that returns only alerts created on or after the specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only alerts created on or before the specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of results to display. The default is 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The name of a monitoring alert.
+    monitoringAlertName :: Prelude.Maybe Prelude.Text,
+    -- | The name of a monitoring schedule.
+    monitoringScheduleName :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListMonitoringAlertHistory@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of alerts in the history, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field used to sort results. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringAlertHistorySortKey,
+    -- | The sort order, whether @Ascending@ or @Descending@, of the alert
+    -- history. The default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only alerts with a specific status.
+    statusEquals :: Prelude.Maybe MonitoringAlertStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringAlertHistory' 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:
+--
+-- 'creationTimeAfter', 'listMonitoringAlertHistory_creationTimeAfter' - A filter that returns only alerts created on or after the specified
+-- time.
+--
+-- 'creationTimeBefore', 'listMonitoringAlertHistory_creationTimeBefore' - A filter that returns only alerts created on or before the specified
+-- time.
+--
+-- 'maxResults', 'listMonitoringAlertHistory_maxResults' - The maximum number of results to display. The default is 100.
+--
+-- 'monitoringAlertName', 'listMonitoringAlertHistory_monitoringAlertName' - The name of a monitoring alert.
+--
+-- 'monitoringScheduleName', 'listMonitoringAlertHistory_monitoringScheduleName' - The name of a monitoring schedule.
+--
+-- 'nextToken', 'listMonitoringAlertHistory_nextToken' - If the result of the previous @ListMonitoringAlertHistory@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of alerts in the history, use the token in the next request.
+--
+-- 'sortBy', 'listMonitoringAlertHistory_sortBy' - The field used to sort results. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listMonitoringAlertHistory_sortOrder' - The sort order, whether @Ascending@ or @Descending@, of the alert
+-- history. The default is @Descending@.
+--
+-- 'statusEquals', 'listMonitoringAlertHistory_statusEquals' - A filter that retrieves only alerts with a specific status.
+newListMonitoringAlertHistory ::
+  ListMonitoringAlertHistory
+newListMonitoringAlertHistory =
+  ListMonitoringAlertHistory'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      monitoringAlertName = Prelude.Nothing,
+      monitoringScheduleName = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only alerts created on or after the specified
+-- time.
+listMonitoringAlertHistory_creationTimeAfter :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe Prelude.UTCTime)
+listMonitoringAlertHistory_creationTimeAfter = Lens.lens (\ListMonitoringAlertHistory' {creationTimeAfter} -> creationTimeAfter) (\s@ListMonitoringAlertHistory' {} a -> s {creationTimeAfter = a} :: ListMonitoringAlertHistory) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only alerts created on or before the specified
+-- time.
+listMonitoringAlertHistory_creationTimeBefore :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe Prelude.UTCTime)
+listMonitoringAlertHistory_creationTimeBefore = Lens.lens (\ListMonitoringAlertHistory' {creationTimeBefore} -> creationTimeBefore) (\s@ListMonitoringAlertHistory' {} a -> s {creationTimeBefore = a} :: ListMonitoringAlertHistory) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of results to display. The default is 100.
+listMonitoringAlertHistory_maxResults :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe Prelude.Natural)
+listMonitoringAlertHistory_maxResults = Lens.lens (\ListMonitoringAlertHistory' {maxResults} -> maxResults) (\s@ListMonitoringAlertHistory' {} a -> s {maxResults = a} :: ListMonitoringAlertHistory)
+
+-- | The name of a monitoring alert.
+listMonitoringAlertHistory_monitoringAlertName :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe Prelude.Text)
+listMonitoringAlertHistory_monitoringAlertName = Lens.lens (\ListMonitoringAlertHistory' {monitoringAlertName} -> monitoringAlertName) (\s@ListMonitoringAlertHistory' {} a -> s {monitoringAlertName = a} :: ListMonitoringAlertHistory)
+
+-- | The name of a monitoring schedule.
+listMonitoringAlertHistory_monitoringScheduleName :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe Prelude.Text)
+listMonitoringAlertHistory_monitoringScheduleName = Lens.lens (\ListMonitoringAlertHistory' {monitoringScheduleName} -> monitoringScheduleName) (\s@ListMonitoringAlertHistory' {} a -> s {monitoringScheduleName = a} :: ListMonitoringAlertHistory)
+
+-- | If the result of the previous @ListMonitoringAlertHistory@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of alerts in the history, use the token in the next request.
+listMonitoringAlertHistory_nextToken :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe Prelude.Text)
+listMonitoringAlertHistory_nextToken = Lens.lens (\ListMonitoringAlertHistory' {nextToken} -> nextToken) (\s@ListMonitoringAlertHistory' {} a -> s {nextToken = a} :: ListMonitoringAlertHistory)
+
+-- | The field used to sort results. The default is @CreationTime@.
+listMonitoringAlertHistory_sortBy :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe MonitoringAlertHistorySortKey)
+listMonitoringAlertHistory_sortBy = Lens.lens (\ListMonitoringAlertHistory' {sortBy} -> sortBy) (\s@ListMonitoringAlertHistory' {} a -> s {sortBy = a} :: ListMonitoringAlertHistory)
+
+-- | The sort order, whether @Ascending@ or @Descending@, of the alert
+-- history. The default is @Descending@.
+listMonitoringAlertHistory_sortOrder :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe SortOrder)
+listMonitoringAlertHistory_sortOrder = Lens.lens (\ListMonitoringAlertHistory' {sortOrder} -> sortOrder) (\s@ListMonitoringAlertHistory' {} a -> s {sortOrder = a} :: ListMonitoringAlertHistory)
+
+-- | A filter that retrieves only alerts with a specific status.
+listMonitoringAlertHistory_statusEquals :: Lens.Lens' ListMonitoringAlertHistory (Prelude.Maybe MonitoringAlertStatus)
+listMonitoringAlertHistory_statusEquals = Lens.lens (\ListMonitoringAlertHistory' {statusEquals} -> statusEquals) (\s@ListMonitoringAlertHistory' {} a -> s {statusEquals = a} :: ListMonitoringAlertHistory)
+
+instance Core.AWSPager ListMonitoringAlertHistory where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listMonitoringAlertHistoryResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listMonitoringAlertHistoryResponse_monitoringAlertHistory
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listMonitoringAlertHistory_nextToken
+          Lens..~ rs
+          Lens.^? listMonitoringAlertHistoryResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListMonitoringAlertHistory where
+  type
+    AWSResponse ListMonitoringAlertHistory =
+      ListMonitoringAlertHistoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMonitoringAlertHistoryResponse'
+            Prelude.<$> ( x
+                            Data..?> "MonitoringAlertHistory"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMonitoringAlertHistory where
+  hashWithSalt _salt ListMonitoringAlertHistory' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` monitoringAlertName
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListMonitoringAlertHistory where
+  rnf ListMonitoringAlertHistory' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf monitoringAlertName
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListMonitoringAlertHistory where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListMonitoringAlertHistory" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListMonitoringAlertHistory where
+  toJSON ListMonitoringAlertHistory' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("MonitoringAlertName" Data..=)
+              Prelude.<$> monitoringAlertName,
+            ("MonitoringScheduleName" Data..=)
+              Prelude.<$> monitoringScheduleName,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListMonitoringAlertHistory where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListMonitoringAlertHistory where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListMonitoringAlertHistoryResponse' smart constructor.
+data ListMonitoringAlertHistoryResponse = ListMonitoringAlertHistoryResponse'
+  { -- | An alert history for a model monitoring schedule.
+    monitoringAlertHistory :: Prelude.Maybe [MonitoringAlertHistorySummary],
+    -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of alerts, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringAlertHistoryResponse' 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:
+--
+-- 'monitoringAlertHistory', 'listMonitoringAlertHistoryResponse_monitoringAlertHistory' - An alert history for a model monitoring schedule.
+--
+-- 'nextToken', 'listMonitoringAlertHistoryResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of alerts, use it in the subsequent request.
+--
+-- 'httpStatus', 'listMonitoringAlertHistoryResponse_httpStatus' - The response's http status code.
+newListMonitoringAlertHistoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMonitoringAlertHistoryResponse
+newListMonitoringAlertHistoryResponse pHttpStatus_ =
+  ListMonitoringAlertHistoryResponse'
+    { monitoringAlertHistory =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An alert history for a model monitoring schedule.
+listMonitoringAlertHistoryResponse_monitoringAlertHistory :: Lens.Lens' ListMonitoringAlertHistoryResponse (Prelude.Maybe [MonitoringAlertHistorySummary])
+listMonitoringAlertHistoryResponse_monitoringAlertHistory = Lens.lens (\ListMonitoringAlertHistoryResponse' {monitoringAlertHistory} -> monitoringAlertHistory) (\s@ListMonitoringAlertHistoryResponse' {} a -> s {monitoringAlertHistory = a} :: ListMonitoringAlertHistoryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of alerts, use it in the subsequent request.
+listMonitoringAlertHistoryResponse_nextToken :: Lens.Lens' ListMonitoringAlertHistoryResponse (Prelude.Maybe Prelude.Text)
+listMonitoringAlertHistoryResponse_nextToken = Lens.lens (\ListMonitoringAlertHistoryResponse' {nextToken} -> nextToken) (\s@ListMonitoringAlertHistoryResponse' {} a -> s {nextToken = a} :: ListMonitoringAlertHistoryResponse)
+
+-- | The response's http status code.
+listMonitoringAlertHistoryResponse_httpStatus :: Lens.Lens' ListMonitoringAlertHistoryResponse Prelude.Int
+listMonitoringAlertHistoryResponse_httpStatus = Lens.lens (\ListMonitoringAlertHistoryResponse' {httpStatus} -> httpStatus) (\s@ListMonitoringAlertHistoryResponse' {} a -> s {httpStatus = a} :: ListMonitoringAlertHistoryResponse)
+
+instance
+  Prelude.NFData
+    ListMonitoringAlertHistoryResponse
+  where
+  rnf ListMonitoringAlertHistoryResponse' {..} =
+    Prelude.rnf monitoringAlertHistory
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListMonitoringAlerts.hs b/gen/Amazonka/SageMaker/ListMonitoringAlerts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListMonitoringAlerts.hs
@@ -0,0 +1,248 @@
+{-# 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.ListMonitoringAlerts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the alerts for a single monitoring schedule.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListMonitoringAlerts
+  ( -- * Creating a Request
+    ListMonitoringAlerts (..),
+    newListMonitoringAlerts,
+
+    -- * Request Lenses
+    listMonitoringAlerts_maxResults,
+    listMonitoringAlerts_nextToken,
+    listMonitoringAlerts_monitoringScheduleName,
+
+    -- * Destructuring the Response
+    ListMonitoringAlertsResponse (..),
+    newListMonitoringAlertsResponse,
+
+    -- * Response Lenses
+    listMonitoringAlertsResponse_monitoringAlertSummaries,
+    listMonitoringAlertsResponse_nextToken,
+    listMonitoringAlertsResponse_httpStatus,
+  )
+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:/ 'newListMonitoringAlerts' smart constructor.
+data ListMonitoringAlerts = ListMonitoringAlerts'
+  { -- | The maximum number of results to display. The default is 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous @ListMonitoringAlerts@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of alerts in the history, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of a monitoring schedule.
+    monitoringScheduleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringAlerts' 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:
+--
+-- 'maxResults', 'listMonitoringAlerts_maxResults' - The maximum number of results to display. The default is 100.
+--
+-- 'nextToken', 'listMonitoringAlerts_nextToken' - If the result of the previous @ListMonitoringAlerts@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of alerts in the history, use the token in the next request.
+--
+-- 'monitoringScheduleName', 'listMonitoringAlerts_monitoringScheduleName' - The name of a monitoring schedule.
+newListMonitoringAlerts ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  ListMonitoringAlerts
+newListMonitoringAlerts pMonitoringScheduleName_ =
+  ListMonitoringAlerts'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      monitoringScheduleName = pMonitoringScheduleName_
+    }
+
+-- | The maximum number of results to display. The default is 100.
+listMonitoringAlerts_maxResults :: Lens.Lens' ListMonitoringAlerts (Prelude.Maybe Prelude.Natural)
+listMonitoringAlerts_maxResults = Lens.lens (\ListMonitoringAlerts' {maxResults} -> maxResults) (\s@ListMonitoringAlerts' {} a -> s {maxResults = a} :: ListMonitoringAlerts)
+
+-- | If the result of the previous @ListMonitoringAlerts@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of alerts in the history, use the token in the next request.
+listMonitoringAlerts_nextToken :: Lens.Lens' ListMonitoringAlerts (Prelude.Maybe Prelude.Text)
+listMonitoringAlerts_nextToken = Lens.lens (\ListMonitoringAlerts' {nextToken} -> nextToken) (\s@ListMonitoringAlerts' {} a -> s {nextToken = a} :: ListMonitoringAlerts)
+
+-- | The name of a monitoring schedule.
+listMonitoringAlerts_monitoringScheduleName :: Lens.Lens' ListMonitoringAlerts Prelude.Text
+listMonitoringAlerts_monitoringScheduleName = Lens.lens (\ListMonitoringAlerts' {monitoringScheduleName} -> monitoringScheduleName) (\s@ListMonitoringAlerts' {} a -> s {monitoringScheduleName = a} :: ListMonitoringAlerts)
+
+instance Core.AWSPager ListMonitoringAlerts where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listMonitoringAlertsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listMonitoringAlertsResponse_monitoringAlertSummaries
+            Prelude.. Lens._Just
+            Prelude.. Lens.to Prelude.toList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listMonitoringAlerts_nextToken
+          Lens..~ rs
+          Lens.^? listMonitoringAlertsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListMonitoringAlerts where
+  type
+    AWSResponse ListMonitoringAlerts =
+      ListMonitoringAlertsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMonitoringAlertsResponse'
+            Prelude.<$> (x Data..?> "MonitoringAlertSummaries")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMonitoringAlerts where
+  hashWithSalt _salt ListMonitoringAlerts' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` monitoringScheduleName
+
+instance Prelude.NFData ListMonitoringAlerts where
+  rnf ListMonitoringAlerts' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+
+instance Data.ToHeaders ListMonitoringAlerts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListMonitoringAlerts" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListMonitoringAlerts where
+  toJSON ListMonitoringAlerts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              )
+          ]
+      )
+
+instance Data.ToPath ListMonitoringAlerts where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListMonitoringAlerts where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListMonitoringAlertsResponse' smart constructor.
+data ListMonitoringAlertsResponse = ListMonitoringAlertsResponse'
+  { -- | A JSON array where each element is a summary for a monitoring alert.
+    monitoringAlertSummaries :: Prelude.Maybe (Prelude.NonEmpty MonitoringAlertSummary),
+    -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of alerts, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringAlertsResponse' 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:
+--
+-- 'monitoringAlertSummaries', 'listMonitoringAlertsResponse_monitoringAlertSummaries' - A JSON array where each element is a summary for a monitoring alert.
+--
+-- 'nextToken', 'listMonitoringAlertsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of alerts, use it in the subsequent request.
+--
+-- 'httpStatus', 'listMonitoringAlertsResponse_httpStatus' - The response's http status code.
+newListMonitoringAlertsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMonitoringAlertsResponse
+newListMonitoringAlertsResponse pHttpStatus_ =
+  ListMonitoringAlertsResponse'
+    { monitoringAlertSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A JSON array where each element is a summary for a monitoring alert.
+listMonitoringAlertsResponse_monitoringAlertSummaries :: Lens.Lens' ListMonitoringAlertsResponse (Prelude.Maybe (Prelude.NonEmpty MonitoringAlertSummary))
+listMonitoringAlertsResponse_monitoringAlertSummaries = Lens.lens (\ListMonitoringAlertsResponse' {monitoringAlertSummaries} -> monitoringAlertSummaries) (\s@ListMonitoringAlertsResponse' {} a -> s {monitoringAlertSummaries = a} :: ListMonitoringAlertsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of alerts, use it in the subsequent request.
+listMonitoringAlertsResponse_nextToken :: Lens.Lens' ListMonitoringAlertsResponse (Prelude.Maybe Prelude.Text)
+listMonitoringAlertsResponse_nextToken = Lens.lens (\ListMonitoringAlertsResponse' {nextToken} -> nextToken) (\s@ListMonitoringAlertsResponse' {} a -> s {nextToken = a} :: ListMonitoringAlertsResponse)
+
+-- | The response's http status code.
+listMonitoringAlertsResponse_httpStatus :: Lens.Lens' ListMonitoringAlertsResponse Prelude.Int
+listMonitoringAlertsResponse_httpStatus = Lens.lens (\ListMonitoringAlertsResponse' {httpStatus} -> httpStatus) (\s@ListMonitoringAlertsResponse' {} a -> s {httpStatus = a} :: ListMonitoringAlertsResponse)
+
+instance Prelude.NFData ListMonitoringAlertsResponse where
+  rnf ListMonitoringAlertsResponse' {..} =
+    Prelude.rnf monitoringAlertSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListMonitoringExecutions.hs b/gen/Amazonka/SageMaker/ListMonitoringExecutions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListMonitoringExecutions.hs
@@ -0,0 +1,429 @@
+{-# 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.ListMonitoringExecutions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns list of all monitoring job executions.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListMonitoringExecutions
+  ( -- * Creating a Request
+    ListMonitoringExecutions (..),
+    newListMonitoringExecutions,
+
+    -- * Request Lenses
+    listMonitoringExecutions_creationTimeAfter,
+    listMonitoringExecutions_creationTimeBefore,
+    listMonitoringExecutions_endpointName,
+    listMonitoringExecutions_lastModifiedTimeAfter,
+    listMonitoringExecutions_lastModifiedTimeBefore,
+    listMonitoringExecutions_maxResults,
+    listMonitoringExecutions_monitoringJobDefinitionName,
+    listMonitoringExecutions_monitoringScheduleName,
+    listMonitoringExecutions_monitoringTypeEquals,
+    listMonitoringExecutions_nextToken,
+    listMonitoringExecutions_scheduledTimeAfter,
+    listMonitoringExecutions_scheduledTimeBefore,
+    listMonitoringExecutions_sortBy,
+    listMonitoringExecutions_sortOrder,
+    listMonitoringExecutions_statusEquals,
+
+    -- * Destructuring the Response
+    ListMonitoringExecutionsResponse (..),
+    newListMonitoringExecutionsResponse,
+
+    -- * Response Lenses
+    listMonitoringExecutionsResponse_nextToken,
+    listMonitoringExecutionsResponse_httpStatus,
+    listMonitoringExecutionsResponse_monitoringExecutionSummaries,
+  )
+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:/ 'newListMonitoringExecutions' smart constructor.
+data ListMonitoringExecutions = ListMonitoringExecutions'
+  { -- | A filter that returns only jobs created after a specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only jobs created before a specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Name of a specific endpoint to fetch jobs for.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only jobs modified before a specified time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only jobs modified after a specified time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of jobs to return in the response. The default value
+    -- is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Gets a list of the monitoring job runs of the specified monitoring job
+    -- definitions.
+    monitoringJobDefinitionName :: Prelude.Maybe Prelude.Text,
+    -- | Name of a specific schedule to fetch jobs for.
+    monitoringScheduleName :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only the monitoring job runs of the specified
+    -- monitoring type.
+    monitoringTypeEquals :: Prelude.Maybe MonitoringType,
+    -- | The token returned if the response is truncated. To retrieve the next
+    -- set of job executions, use it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Filter for jobs scheduled after a specified time.
+    scheduledTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Filter for jobs scheduled before a specified time.
+    scheduledTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Whether to sort results by @Status@, @CreationTime@, @ScheduledTime@
+    -- field. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringExecutionSortKey,
+    -- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+    -- default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only jobs with a specific status.
+    statusEquals :: Prelude.Maybe ExecutionStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringExecutions' 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:
+--
+-- 'creationTimeAfter', 'listMonitoringExecutions_creationTimeAfter' - A filter that returns only jobs created after a specified time.
+--
+-- 'creationTimeBefore', 'listMonitoringExecutions_creationTimeBefore' - A filter that returns only jobs created before a specified time.
+--
+-- 'endpointName', 'listMonitoringExecutions_endpointName' - Name of a specific endpoint to fetch jobs for.
+--
+-- 'lastModifiedTimeAfter', 'listMonitoringExecutions_lastModifiedTimeAfter' - A filter that returns only jobs modified before a specified time.
+--
+-- 'lastModifiedTimeBefore', 'listMonitoringExecutions_lastModifiedTimeBefore' - A filter that returns only jobs modified after a specified time.
+--
+-- 'maxResults', 'listMonitoringExecutions_maxResults' - The maximum number of jobs to return in the response. The default value
+-- is 10.
+--
+-- 'monitoringJobDefinitionName', 'listMonitoringExecutions_monitoringJobDefinitionName' - Gets a list of the monitoring job runs of the specified monitoring job
+-- definitions.
+--
+-- 'monitoringScheduleName', 'listMonitoringExecutions_monitoringScheduleName' - Name of a specific schedule to fetch jobs for.
+--
+-- 'monitoringTypeEquals', 'listMonitoringExecutions_monitoringTypeEquals' - A filter that returns only the monitoring job runs of the specified
+-- monitoring type.
+--
+-- 'nextToken', 'listMonitoringExecutions_nextToken' - The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+--
+-- 'scheduledTimeAfter', 'listMonitoringExecutions_scheduledTimeAfter' - Filter for jobs scheduled after a specified time.
+--
+-- 'scheduledTimeBefore', 'listMonitoringExecutions_scheduledTimeBefore' - Filter for jobs scheduled before a specified time.
+--
+-- 'sortBy', 'listMonitoringExecutions_sortBy' - Whether to sort results by @Status@, @CreationTime@, @ScheduledTime@
+-- field. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listMonitoringExecutions_sortOrder' - Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+--
+-- 'statusEquals', 'listMonitoringExecutions_statusEquals' - A filter that retrieves only jobs with a specific status.
+newListMonitoringExecutions ::
+  ListMonitoringExecutions
+newListMonitoringExecutions =
+  ListMonitoringExecutions'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      monitoringJobDefinitionName = Prelude.Nothing,
+      monitoringScheduleName = Prelude.Nothing,
+      monitoringTypeEquals = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      scheduledTimeAfter = Prelude.Nothing,
+      scheduledTimeBefore = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only jobs created after a specified time.
+listMonitoringExecutions_creationTimeAfter :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.UTCTime)
+listMonitoringExecutions_creationTimeAfter = Lens.lens (\ListMonitoringExecutions' {creationTimeAfter} -> creationTimeAfter) (\s@ListMonitoringExecutions' {} a -> s {creationTimeAfter = a} :: ListMonitoringExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only jobs created before a specified time.
+listMonitoringExecutions_creationTimeBefore :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.UTCTime)
+listMonitoringExecutions_creationTimeBefore = Lens.lens (\ListMonitoringExecutions' {creationTimeBefore} -> creationTimeBefore) (\s@ListMonitoringExecutions' {} a -> s {creationTimeBefore = a} :: ListMonitoringExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | Name of a specific endpoint to fetch jobs for.
+listMonitoringExecutions_endpointName :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.Text)
+listMonitoringExecutions_endpointName = Lens.lens (\ListMonitoringExecutions' {endpointName} -> endpointName) (\s@ListMonitoringExecutions' {} a -> s {endpointName = a} :: ListMonitoringExecutions)
+
+-- | A filter that returns only jobs modified before a specified time.
+listMonitoringExecutions_lastModifiedTimeAfter :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.UTCTime)
+listMonitoringExecutions_lastModifiedTimeAfter = Lens.lens (\ListMonitoringExecutions' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListMonitoringExecutions' {} a -> s {lastModifiedTimeAfter = a} :: ListMonitoringExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only jobs modified after a specified time.
+listMonitoringExecutions_lastModifiedTimeBefore :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.UTCTime)
+listMonitoringExecutions_lastModifiedTimeBefore = Lens.lens (\ListMonitoringExecutions' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListMonitoringExecutions' {} a -> s {lastModifiedTimeBefore = a} :: ListMonitoringExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of jobs to return in the response. The default value
+-- is 10.
+listMonitoringExecutions_maxResults :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.Natural)
+listMonitoringExecutions_maxResults = Lens.lens (\ListMonitoringExecutions' {maxResults} -> maxResults) (\s@ListMonitoringExecutions' {} a -> s {maxResults = a} :: ListMonitoringExecutions)
+
+-- | Gets a list of the monitoring job runs of the specified monitoring job
+-- definitions.
+listMonitoringExecutions_monitoringJobDefinitionName :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.Text)
+listMonitoringExecutions_monitoringJobDefinitionName = Lens.lens (\ListMonitoringExecutions' {monitoringJobDefinitionName} -> monitoringJobDefinitionName) (\s@ListMonitoringExecutions' {} a -> s {monitoringJobDefinitionName = a} :: ListMonitoringExecutions)
+
+-- | Name of a specific schedule to fetch jobs for.
+listMonitoringExecutions_monitoringScheduleName :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.Text)
+listMonitoringExecutions_monitoringScheduleName = Lens.lens (\ListMonitoringExecutions' {monitoringScheduleName} -> monitoringScheduleName) (\s@ListMonitoringExecutions' {} a -> s {monitoringScheduleName = a} :: ListMonitoringExecutions)
+
+-- | A filter that returns only the monitoring job runs of the specified
+-- monitoring type.
+listMonitoringExecutions_monitoringTypeEquals :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe MonitoringType)
+listMonitoringExecutions_monitoringTypeEquals = Lens.lens (\ListMonitoringExecutions' {monitoringTypeEquals} -> monitoringTypeEquals) (\s@ListMonitoringExecutions' {} a -> s {monitoringTypeEquals = a} :: ListMonitoringExecutions)
+
+-- | The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+listMonitoringExecutions_nextToken :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.Text)
+listMonitoringExecutions_nextToken = Lens.lens (\ListMonitoringExecutions' {nextToken} -> nextToken) (\s@ListMonitoringExecutions' {} a -> s {nextToken = a} :: ListMonitoringExecutions)
+
+-- | Filter for jobs scheduled after a specified time.
+listMonitoringExecutions_scheduledTimeAfter :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.UTCTime)
+listMonitoringExecutions_scheduledTimeAfter = Lens.lens (\ListMonitoringExecutions' {scheduledTimeAfter} -> scheduledTimeAfter) (\s@ListMonitoringExecutions' {} a -> s {scheduledTimeAfter = a} :: ListMonitoringExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | Filter for jobs scheduled before a specified time.
+listMonitoringExecutions_scheduledTimeBefore :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe Prelude.UTCTime)
+listMonitoringExecutions_scheduledTimeBefore = Lens.lens (\ListMonitoringExecutions' {scheduledTimeBefore} -> scheduledTimeBefore) (\s@ListMonitoringExecutions' {} a -> s {scheduledTimeBefore = a} :: ListMonitoringExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | Whether to sort results by @Status@, @CreationTime@, @ScheduledTime@
+-- field. The default is @CreationTime@.
+listMonitoringExecutions_sortBy :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe MonitoringExecutionSortKey)
+listMonitoringExecutions_sortBy = Lens.lens (\ListMonitoringExecutions' {sortBy} -> sortBy) (\s@ListMonitoringExecutions' {} a -> s {sortBy = a} :: ListMonitoringExecutions)
+
+-- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+listMonitoringExecutions_sortOrder :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe SortOrder)
+listMonitoringExecutions_sortOrder = Lens.lens (\ListMonitoringExecutions' {sortOrder} -> sortOrder) (\s@ListMonitoringExecutions' {} a -> s {sortOrder = a} :: ListMonitoringExecutions)
+
+-- | A filter that retrieves only jobs with a specific status.
+listMonitoringExecutions_statusEquals :: Lens.Lens' ListMonitoringExecutions (Prelude.Maybe ExecutionStatus)
+listMonitoringExecutions_statusEquals = Lens.lens (\ListMonitoringExecutions' {statusEquals} -> statusEquals) (\s@ListMonitoringExecutions' {} a -> s {statusEquals = a} :: ListMonitoringExecutions)
+
+instance Core.AWSPager ListMonitoringExecutions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listMonitoringExecutionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listMonitoringExecutionsResponse_monitoringExecutionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listMonitoringExecutions_nextToken
+          Lens..~ rs
+          Lens.^? listMonitoringExecutionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListMonitoringExecutions where
+  type
+    AWSResponse ListMonitoringExecutions =
+      ListMonitoringExecutionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMonitoringExecutionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "MonitoringExecutionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListMonitoringExecutions where
+  hashWithSalt _salt ListMonitoringExecutions' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` monitoringJobDefinitionName
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringTypeEquals
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` scheduledTimeAfter
+      `Prelude.hashWithSalt` scheduledTimeBefore
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListMonitoringExecutions where
+  rnf ListMonitoringExecutions' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf monitoringJobDefinitionName
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringTypeEquals
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf scheduledTimeAfter
+      `Prelude.seq` Prelude.rnf scheduledTimeBefore
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListMonitoringExecutions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListMonitoringExecutions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListMonitoringExecutions where
+  toJSON ListMonitoringExecutions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("EndpointName" Data..=) Prelude.<$> endpointName,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("MonitoringJobDefinitionName" Data..=)
+              Prelude.<$> monitoringJobDefinitionName,
+            ("MonitoringScheduleName" Data..=)
+              Prelude.<$> monitoringScheduleName,
+            ("MonitoringTypeEquals" Data..=)
+              Prelude.<$> monitoringTypeEquals,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("ScheduledTimeAfter" Data..=)
+              Prelude.<$> scheduledTimeAfter,
+            ("ScheduledTimeBefore" Data..=)
+              Prelude.<$> scheduledTimeBefore,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListMonitoringExecutions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListMonitoringExecutions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListMonitoringExecutionsResponse' smart constructor.
+data ListMonitoringExecutionsResponse = ListMonitoringExecutionsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of jobs, use it in the subsequent reques
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A JSON array in which each element is a summary for a monitoring
+    -- execution.
+    monitoringExecutionSummaries :: [MonitoringExecutionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringExecutionsResponse' 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:
+--
+-- 'nextToken', 'listMonitoringExecutionsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent reques
+--
+-- 'httpStatus', 'listMonitoringExecutionsResponse_httpStatus' - The response's http status code.
+--
+-- 'monitoringExecutionSummaries', 'listMonitoringExecutionsResponse_monitoringExecutionSummaries' - A JSON array in which each element is a summary for a monitoring
+-- execution.
+newListMonitoringExecutionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMonitoringExecutionsResponse
+newListMonitoringExecutionsResponse pHttpStatus_ =
+  ListMonitoringExecutionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      monitoringExecutionSummaries =
+        Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent reques
+listMonitoringExecutionsResponse_nextToken :: Lens.Lens' ListMonitoringExecutionsResponse (Prelude.Maybe Prelude.Text)
+listMonitoringExecutionsResponse_nextToken = Lens.lens (\ListMonitoringExecutionsResponse' {nextToken} -> nextToken) (\s@ListMonitoringExecutionsResponse' {} a -> s {nextToken = a} :: ListMonitoringExecutionsResponse)
+
+-- | The response's http status code.
+listMonitoringExecutionsResponse_httpStatus :: Lens.Lens' ListMonitoringExecutionsResponse Prelude.Int
+listMonitoringExecutionsResponse_httpStatus = Lens.lens (\ListMonitoringExecutionsResponse' {httpStatus} -> httpStatus) (\s@ListMonitoringExecutionsResponse' {} a -> s {httpStatus = a} :: ListMonitoringExecutionsResponse)
+
+-- | A JSON array in which each element is a summary for a monitoring
+-- execution.
+listMonitoringExecutionsResponse_monitoringExecutionSummaries :: Lens.Lens' ListMonitoringExecutionsResponse [MonitoringExecutionSummary]
+listMonitoringExecutionsResponse_monitoringExecutionSummaries = Lens.lens (\ListMonitoringExecutionsResponse' {monitoringExecutionSummaries} -> monitoringExecutionSummaries) (\s@ListMonitoringExecutionsResponse' {} a -> s {monitoringExecutionSummaries = a} :: ListMonitoringExecutionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListMonitoringExecutionsResponse
+  where
+  rnf ListMonitoringExecutionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf monitoringExecutionSummaries
diff --git a/gen/Amazonka/SageMaker/ListMonitoringSchedules.hs b/gen/Amazonka/SageMaker/ListMonitoringSchedules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListMonitoringSchedules.hs
@@ -0,0 +1,415 @@
+{-# 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.ListMonitoringSchedules
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns list of all monitoring schedules.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListMonitoringSchedules
+  ( -- * Creating a Request
+    ListMonitoringSchedules (..),
+    newListMonitoringSchedules,
+
+    -- * Request Lenses
+    listMonitoringSchedules_creationTimeAfter,
+    listMonitoringSchedules_creationTimeBefore,
+    listMonitoringSchedules_endpointName,
+    listMonitoringSchedules_lastModifiedTimeAfter,
+    listMonitoringSchedules_lastModifiedTimeBefore,
+    listMonitoringSchedules_maxResults,
+    listMonitoringSchedules_monitoringJobDefinitionName,
+    listMonitoringSchedules_monitoringTypeEquals,
+    listMonitoringSchedules_nameContains,
+    listMonitoringSchedules_nextToken,
+    listMonitoringSchedules_sortBy,
+    listMonitoringSchedules_sortOrder,
+    listMonitoringSchedules_statusEquals,
+
+    -- * Destructuring the Response
+    ListMonitoringSchedulesResponse (..),
+    newListMonitoringSchedulesResponse,
+
+    -- * Response Lenses
+    listMonitoringSchedulesResponse_nextToken,
+    listMonitoringSchedulesResponse_httpStatus,
+    listMonitoringSchedulesResponse_monitoringScheduleSummaries,
+  )
+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:/ 'newListMonitoringSchedules' smart constructor.
+data ListMonitoringSchedules = ListMonitoringSchedules'
+  { -- | A filter that returns only monitoring schedules created after a
+    -- specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only monitoring schedules created before a
+    -- specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | Name of a specific endpoint to fetch schedules for.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only monitoring schedules modified after a
+    -- specified time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only monitoring schedules modified before a
+    -- specified time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of jobs to return in the response. The default value
+    -- is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Gets a list of the monitoring schedules for the specified monitoring job
+    -- definition.
+    monitoringJobDefinitionName :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only the monitoring schedules for the specified
+    -- monitoring type.
+    monitoringTypeEquals :: Prelude.Maybe MonitoringType,
+    -- | Filter for monitoring schedules whose name contains a specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | The token returned if the response is truncated. To retrieve the next
+    -- set of job executions, use it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Whether to sort results by @Status@, @CreationTime@, @ScheduledTime@
+    -- field. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe MonitoringScheduleSortKey,
+    -- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+    -- default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only monitoring schedules modified before a
+    -- specified time.
+    statusEquals :: Prelude.Maybe ScheduleStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringSchedules' 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:
+--
+-- 'creationTimeAfter', 'listMonitoringSchedules_creationTimeAfter' - A filter that returns only monitoring schedules created after a
+-- specified time.
+--
+-- 'creationTimeBefore', 'listMonitoringSchedules_creationTimeBefore' - A filter that returns only monitoring schedules created before a
+-- specified time.
+--
+-- 'endpointName', 'listMonitoringSchedules_endpointName' - Name of a specific endpoint to fetch schedules for.
+--
+-- 'lastModifiedTimeAfter', 'listMonitoringSchedules_lastModifiedTimeAfter' - A filter that returns only monitoring schedules modified after a
+-- specified time.
+--
+-- 'lastModifiedTimeBefore', 'listMonitoringSchedules_lastModifiedTimeBefore' - A filter that returns only monitoring schedules modified before a
+-- specified time.
+--
+-- 'maxResults', 'listMonitoringSchedules_maxResults' - The maximum number of jobs to return in the response. The default value
+-- is 10.
+--
+-- 'monitoringJobDefinitionName', 'listMonitoringSchedules_monitoringJobDefinitionName' - Gets a list of the monitoring schedules for the specified monitoring job
+-- definition.
+--
+-- 'monitoringTypeEquals', 'listMonitoringSchedules_monitoringTypeEquals' - A filter that returns only the monitoring schedules for the specified
+-- monitoring type.
+--
+-- 'nameContains', 'listMonitoringSchedules_nameContains' - Filter for monitoring schedules whose name contains a specified string.
+--
+-- 'nextToken', 'listMonitoringSchedules_nextToken' - The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+--
+-- 'sortBy', 'listMonitoringSchedules_sortBy' - Whether to sort results by @Status@, @CreationTime@, @ScheduledTime@
+-- field. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listMonitoringSchedules_sortOrder' - Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+--
+-- 'statusEquals', 'listMonitoringSchedules_statusEquals' - A filter that returns only monitoring schedules modified before a
+-- specified time.
+newListMonitoringSchedules ::
+  ListMonitoringSchedules
+newListMonitoringSchedules =
+  ListMonitoringSchedules'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      monitoringJobDefinitionName = Prelude.Nothing,
+      monitoringTypeEquals = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only monitoring schedules created after a
+-- specified time.
+listMonitoringSchedules_creationTimeAfter :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.UTCTime)
+listMonitoringSchedules_creationTimeAfter = Lens.lens (\ListMonitoringSchedules' {creationTimeAfter} -> creationTimeAfter) (\s@ListMonitoringSchedules' {} a -> s {creationTimeAfter = a} :: ListMonitoringSchedules) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only monitoring schedules created before a
+-- specified time.
+listMonitoringSchedules_creationTimeBefore :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.UTCTime)
+listMonitoringSchedules_creationTimeBefore = Lens.lens (\ListMonitoringSchedules' {creationTimeBefore} -> creationTimeBefore) (\s@ListMonitoringSchedules' {} a -> s {creationTimeBefore = a} :: ListMonitoringSchedules) Prelude.. Lens.mapping Data._Time
+
+-- | Name of a specific endpoint to fetch schedules for.
+listMonitoringSchedules_endpointName :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.Text)
+listMonitoringSchedules_endpointName = Lens.lens (\ListMonitoringSchedules' {endpointName} -> endpointName) (\s@ListMonitoringSchedules' {} a -> s {endpointName = a} :: ListMonitoringSchedules)
+
+-- | A filter that returns only monitoring schedules modified after a
+-- specified time.
+listMonitoringSchedules_lastModifiedTimeAfter :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.UTCTime)
+listMonitoringSchedules_lastModifiedTimeAfter = Lens.lens (\ListMonitoringSchedules' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListMonitoringSchedules' {} a -> s {lastModifiedTimeAfter = a} :: ListMonitoringSchedules) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only monitoring schedules modified before a
+-- specified time.
+listMonitoringSchedules_lastModifiedTimeBefore :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.UTCTime)
+listMonitoringSchedules_lastModifiedTimeBefore = Lens.lens (\ListMonitoringSchedules' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListMonitoringSchedules' {} a -> s {lastModifiedTimeBefore = a} :: ListMonitoringSchedules) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of jobs to return in the response. The default value
+-- is 10.
+listMonitoringSchedules_maxResults :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.Natural)
+listMonitoringSchedules_maxResults = Lens.lens (\ListMonitoringSchedules' {maxResults} -> maxResults) (\s@ListMonitoringSchedules' {} a -> s {maxResults = a} :: ListMonitoringSchedules)
+
+-- | Gets a list of the monitoring schedules for the specified monitoring job
+-- definition.
+listMonitoringSchedules_monitoringJobDefinitionName :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.Text)
+listMonitoringSchedules_monitoringJobDefinitionName = Lens.lens (\ListMonitoringSchedules' {monitoringJobDefinitionName} -> monitoringJobDefinitionName) (\s@ListMonitoringSchedules' {} a -> s {monitoringJobDefinitionName = a} :: ListMonitoringSchedules)
+
+-- | A filter that returns only the monitoring schedules for the specified
+-- monitoring type.
+listMonitoringSchedules_monitoringTypeEquals :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe MonitoringType)
+listMonitoringSchedules_monitoringTypeEquals = Lens.lens (\ListMonitoringSchedules' {monitoringTypeEquals} -> monitoringTypeEquals) (\s@ListMonitoringSchedules' {} a -> s {monitoringTypeEquals = a} :: ListMonitoringSchedules)
+
+-- | Filter for monitoring schedules whose name contains a specified string.
+listMonitoringSchedules_nameContains :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.Text)
+listMonitoringSchedules_nameContains = Lens.lens (\ListMonitoringSchedules' {nameContains} -> nameContains) (\s@ListMonitoringSchedules' {} a -> s {nameContains = a} :: ListMonitoringSchedules)
+
+-- | The token returned if the response is truncated. To retrieve the next
+-- set of job executions, use it in the next request.
+listMonitoringSchedules_nextToken :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe Prelude.Text)
+listMonitoringSchedules_nextToken = Lens.lens (\ListMonitoringSchedules' {nextToken} -> nextToken) (\s@ListMonitoringSchedules' {} a -> s {nextToken = a} :: ListMonitoringSchedules)
+
+-- | Whether to sort results by @Status@, @CreationTime@, @ScheduledTime@
+-- field. The default is @CreationTime@.
+listMonitoringSchedules_sortBy :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe MonitoringScheduleSortKey)
+listMonitoringSchedules_sortBy = Lens.lens (\ListMonitoringSchedules' {sortBy} -> sortBy) (\s@ListMonitoringSchedules' {} a -> s {sortBy = a} :: ListMonitoringSchedules)
+
+-- | Whether to sort the results in @Ascending@ or @Descending@ order. The
+-- default is @Descending@.
+listMonitoringSchedules_sortOrder :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe SortOrder)
+listMonitoringSchedules_sortOrder = Lens.lens (\ListMonitoringSchedules' {sortOrder} -> sortOrder) (\s@ListMonitoringSchedules' {} a -> s {sortOrder = a} :: ListMonitoringSchedules)
+
+-- | A filter that returns only monitoring schedules modified before a
+-- specified time.
+listMonitoringSchedules_statusEquals :: Lens.Lens' ListMonitoringSchedules (Prelude.Maybe ScheduleStatus)
+listMonitoringSchedules_statusEquals = Lens.lens (\ListMonitoringSchedules' {statusEquals} -> statusEquals) (\s@ListMonitoringSchedules' {} a -> s {statusEquals = a} :: ListMonitoringSchedules)
+
+instance Core.AWSPager ListMonitoringSchedules where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listMonitoringSchedulesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listMonitoringSchedulesResponse_monitoringScheduleSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listMonitoringSchedules_nextToken
+          Lens..~ rs
+          Lens.^? listMonitoringSchedulesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListMonitoringSchedules where
+  type
+    AWSResponse ListMonitoringSchedules =
+      ListMonitoringSchedulesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMonitoringSchedulesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "MonitoringScheduleSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListMonitoringSchedules where
+  hashWithSalt _salt ListMonitoringSchedules' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` monitoringJobDefinitionName
+      `Prelude.hashWithSalt` monitoringTypeEquals
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListMonitoringSchedules where
+  rnf ListMonitoringSchedules' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf monitoringJobDefinitionName
+      `Prelude.seq` Prelude.rnf monitoringTypeEquals
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListMonitoringSchedules where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListMonitoringSchedules" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListMonitoringSchedules where
+  toJSON ListMonitoringSchedules' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("EndpointName" Data..=) Prelude.<$> endpointName,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("MonitoringJobDefinitionName" Data..=)
+              Prelude.<$> monitoringJobDefinitionName,
+            ("MonitoringTypeEquals" Data..=)
+              Prelude.<$> monitoringTypeEquals,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListMonitoringSchedules where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListMonitoringSchedules where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListMonitoringSchedulesResponse' smart constructor.
+data ListMonitoringSchedulesResponse = ListMonitoringSchedulesResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A JSON array in which each element is a summary for a monitoring
+    -- schedule.
+    monitoringScheduleSummaries :: [MonitoringScheduleSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMonitoringSchedulesResponse' 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:
+--
+-- 'nextToken', 'listMonitoringSchedulesResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listMonitoringSchedulesResponse_httpStatus' - The response's http status code.
+--
+-- 'monitoringScheduleSummaries', 'listMonitoringSchedulesResponse_monitoringScheduleSummaries' - A JSON array in which each element is a summary for a monitoring
+-- schedule.
+newListMonitoringSchedulesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMonitoringSchedulesResponse
+newListMonitoringSchedulesResponse pHttpStatus_ =
+  ListMonitoringSchedulesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      monitoringScheduleSummaries =
+        Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of jobs, use it in the subsequent request.
+listMonitoringSchedulesResponse_nextToken :: Lens.Lens' ListMonitoringSchedulesResponse (Prelude.Maybe Prelude.Text)
+listMonitoringSchedulesResponse_nextToken = Lens.lens (\ListMonitoringSchedulesResponse' {nextToken} -> nextToken) (\s@ListMonitoringSchedulesResponse' {} a -> s {nextToken = a} :: ListMonitoringSchedulesResponse)
+
+-- | The response's http status code.
+listMonitoringSchedulesResponse_httpStatus :: Lens.Lens' ListMonitoringSchedulesResponse Prelude.Int
+listMonitoringSchedulesResponse_httpStatus = Lens.lens (\ListMonitoringSchedulesResponse' {httpStatus} -> httpStatus) (\s@ListMonitoringSchedulesResponse' {} a -> s {httpStatus = a} :: ListMonitoringSchedulesResponse)
+
+-- | A JSON array in which each element is a summary for a monitoring
+-- schedule.
+listMonitoringSchedulesResponse_monitoringScheduleSummaries :: Lens.Lens' ListMonitoringSchedulesResponse [MonitoringScheduleSummary]
+listMonitoringSchedulesResponse_monitoringScheduleSummaries = Lens.lens (\ListMonitoringSchedulesResponse' {monitoringScheduleSummaries} -> monitoringScheduleSummaries) (\s@ListMonitoringSchedulesResponse' {} a -> s {monitoringScheduleSummaries = a} :: ListMonitoringSchedulesResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListMonitoringSchedulesResponse
+  where
+  rnf ListMonitoringSchedulesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf monitoringScheduleSummaries
diff --git a/gen/Amazonka/SageMaker/ListNotebookInstanceLifecycleConfigs.hs b/gen/Amazonka/SageMaker/ListNotebookInstanceLifecycleConfigs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListNotebookInstanceLifecycleConfigs.hs
@@ -0,0 +1,383 @@
+{-# 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.ListNotebookInstanceLifecycleConfigs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists notebook instance lifestyle configurations created with the
+-- CreateNotebookInstanceLifecycleConfig API.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListNotebookInstanceLifecycleConfigs
+  ( -- * Creating a Request
+    ListNotebookInstanceLifecycleConfigs (..),
+    newListNotebookInstanceLifecycleConfigs,
+
+    -- * Request Lenses
+    listNotebookInstanceLifecycleConfigs_creationTimeAfter,
+    listNotebookInstanceLifecycleConfigs_creationTimeBefore,
+    listNotebookInstanceLifecycleConfigs_lastModifiedTimeAfter,
+    listNotebookInstanceLifecycleConfigs_lastModifiedTimeBefore,
+    listNotebookInstanceLifecycleConfigs_maxResults,
+    listNotebookInstanceLifecycleConfigs_nameContains,
+    listNotebookInstanceLifecycleConfigs_nextToken,
+    listNotebookInstanceLifecycleConfigs_sortBy,
+    listNotebookInstanceLifecycleConfigs_sortOrder,
+
+    -- * Destructuring the Response
+    ListNotebookInstanceLifecycleConfigsResponse (..),
+    newListNotebookInstanceLifecycleConfigsResponse,
+
+    -- * Response Lenses
+    listNotebookInstanceLifecycleConfigsResponse_nextToken,
+    listNotebookInstanceLifecycleConfigsResponse_notebookInstanceLifecycleConfigs,
+    listNotebookInstanceLifecycleConfigsResponse_httpStatus,
+  )
+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:/ 'newListNotebookInstanceLifecycleConfigs' smart constructor.
+data ListNotebookInstanceLifecycleConfigs = ListNotebookInstanceLifecycleConfigs'
+  { -- | A filter that returns only lifecycle configurations that were created
+    -- after the specified time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only lifecycle configurations that were created
+    -- before the specified time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only lifecycle configurations that were modified
+    -- after the specified time (timestamp).
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only lifecycle configurations that were modified
+    -- before the specified time (timestamp).
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of lifecycle configurations to return in the
+    -- response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the lifecycle configuration name. This filter returns only
+    -- lifecycle configurations whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of a @ListNotebookInstanceLifecycleConfigs@ request was
+    -- truncated, the response includes a @NextToken@. To get the next set of
+    -- lifecycle configurations, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sorts the list of results. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe NotebookInstanceLifecycleConfigSortKey,
+    -- | The sort order for results.
+    sortOrder :: Prelude.Maybe NotebookInstanceLifecycleConfigSortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNotebookInstanceLifecycleConfigs' 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:
+--
+-- 'creationTimeAfter', 'listNotebookInstanceLifecycleConfigs_creationTimeAfter' - A filter that returns only lifecycle configurations that were created
+-- after the specified time (timestamp).
+--
+-- 'creationTimeBefore', 'listNotebookInstanceLifecycleConfigs_creationTimeBefore' - A filter that returns only lifecycle configurations that were created
+-- before the specified time (timestamp).
+--
+-- 'lastModifiedTimeAfter', 'listNotebookInstanceLifecycleConfigs_lastModifiedTimeAfter' - A filter that returns only lifecycle configurations that were modified
+-- after the specified time (timestamp).
+--
+-- 'lastModifiedTimeBefore', 'listNotebookInstanceLifecycleConfigs_lastModifiedTimeBefore' - A filter that returns only lifecycle configurations that were modified
+-- before the specified time (timestamp).
+--
+-- 'maxResults', 'listNotebookInstanceLifecycleConfigs_maxResults' - The maximum number of lifecycle configurations to return in the
+-- response.
+--
+-- 'nameContains', 'listNotebookInstanceLifecycleConfigs_nameContains' - A string in the lifecycle configuration name. This filter returns only
+-- lifecycle configurations whose name contains the specified string.
+--
+-- 'nextToken', 'listNotebookInstanceLifecycleConfigs_nextToken' - If the result of a @ListNotebookInstanceLifecycleConfigs@ request was
+-- truncated, the response includes a @NextToken@. To get the next set of
+-- lifecycle configurations, use the token in the next request.
+--
+-- 'sortBy', 'listNotebookInstanceLifecycleConfigs_sortBy' - Sorts the list of results. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listNotebookInstanceLifecycleConfigs_sortOrder' - The sort order for results.
+newListNotebookInstanceLifecycleConfigs ::
+  ListNotebookInstanceLifecycleConfigs
+newListNotebookInstanceLifecycleConfigs =
+  ListNotebookInstanceLifecycleConfigs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter =
+        Prelude.Nothing,
+      lastModifiedTimeBefore =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns only lifecycle configurations that were created
+-- after the specified time (timestamp).
+listNotebookInstanceLifecycleConfigs_creationTimeAfter :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstanceLifecycleConfigs_creationTimeAfter = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {creationTimeAfter} -> creationTimeAfter) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {creationTimeAfter = a} :: ListNotebookInstanceLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only lifecycle configurations that were created
+-- before the specified time (timestamp).
+listNotebookInstanceLifecycleConfigs_creationTimeBefore :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstanceLifecycleConfigs_creationTimeBefore = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {creationTimeBefore} -> creationTimeBefore) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {creationTimeBefore = a} :: ListNotebookInstanceLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only lifecycle configurations that were modified
+-- after the specified time (timestamp).
+listNotebookInstanceLifecycleConfigs_lastModifiedTimeAfter :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstanceLifecycleConfigs_lastModifiedTimeAfter = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {lastModifiedTimeAfter = a} :: ListNotebookInstanceLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only lifecycle configurations that were modified
+-- before the specified time (timestamp).
+listNotebookInstanceLifecycleConfigs_lastModifiedTimeBefore :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstanceLifecycleConfigs_lastModifiedTimeBefore = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {lastModifiedTimeBefore = a} :: ListNotebookInstanceLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of lifecycle configurations to return in the
+-- response.
+listNotebookInstanceLifecycleConfigs_maxResults :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.Natural)
+listNotebookInstanceLifecycleConfigs_maxResults = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {maxResults} -> maxResults) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {maxResults = a} :: ListNotebookInstanceLifecycleConfigs)
+
+-- | A string in the lifecycle configuration name. This filter returns only
+-- lifecycle configurations whose name contains the specified string.
+listNotebookInstanceLifecycleConfigs_nameContains :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.Text)
+listNotebookInstanceLifecycleConfigs_nameContains = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {nameContains} -> nameContains) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {nameContains = a} :: ListNotebookInstanceLifecycleConfigs)
+
+-- | If the result of a @ListNotebookInstanceLifecycleConfigs@ request was
+-- truncated, the response includes a @NextToken@. To get the next set of
+-- lifecycle configurations, use the token in the next request.
+listNotebookInstanceLifecycleConfigs_nextToken :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe Prelude.Text)
+listNotebookInstanceLifecycleConfigs_nextToken = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {nextToken} -> nextToken) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {nextToken = a} :: ListNotebookInstanceLifecycleConfigs)
+
+-- | Sorts the list of results. The default is @CreationTime@.
+listNotebookInstanceLifecycleConfigs_sortBy :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe NotebookInstanceLifecycleConfigSortKey)
+listNotebookInstanceLifecycleConfigs_sortBy = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {sortBy} -> sortBy) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {sortBy = a} :: ListNotebookInstanceLifecycleConfigs)
+
+-- | The sort order for results.
+listNotebookInstanceLifecycleConfigs_sortOrder :: Lens.Lens' ListNotebookInstanceLifecycleConfigs (Prelude.Maybe NotebookInstanceLifecycleConfigSortOrder)
+listNotebookInstanceLifecycleConfigs_sortOrder = Lens.lens (\ListNotebookInstanceLifecycleConfigs' {sortOrder} -> sortOrder) (\s@ListNotebookInstanceLifecycleConfigs' {} a -> s {sortOrder = a} :: ListNotebookInstanceLifecycleConfigs)
+
+instance
+  Core.AWSPager
+    ListNotebookInstanceLifecycleConfigs
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listNotebookInstanceLifecycleConfigsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listNotebookInstanceLifecycleConfigsResponse_notebookInstanceLifecycleConfigs
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listNotebookInstanceLifecycleConfigs_nextToken
+          Lens..~ rs
+          Lens.^? listNotebookInstanceLifecycleConfigsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListNotebookInstanceLifecycleConfigs
+  where
+  type
+    AWSResponse ListNotebookInstanceLifecycleConfigs =
+      ListNotebookInstanceLifecycleConfigsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNotebookInstanceLifecycleConfigsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "NotebookInstanceLifecycleConfigs"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListNotebookInstanceLifecycleConfigs
+  where
+  hashWithSalt
+    _salt
+    ListNotebookInstanceLifecycleConfigs' {..} =
+      _salt
+        `Prelude.hashWithSalt` creationTimeAfter
+        `Prelude.hashWithSalt` creationTimeBefore
+        `Prelude.hashWithSalt` lastModifiedTimeAfter
+        `Prelude.hashWithSalt` lastModifiedTimeBefore
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nameContains
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` sortBy
+        `Prelude.hashWithSalt` sortOrder
+
+instance
+  Prelude.NFData
+    ListNotebookInstanceLifecycleConfigs
+  where
+  rnf ListNotebookInstanceLifecycleConfigs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance
+  Data.ToHeaders
+    ListNotebookInstanceLifecycleConfigs
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListNotebookInstanceLifecycleConfigs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListNotebookInstanceLifecycleConfigs
+  where
+  toJSON ListNotebookInstanceLifecycleConfigs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListNotebookInstanceLifecycleConfigs
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListNotebookInstanceLifecycleConfigs
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListNotebookInstanceLifecycleConfigsResponse' smart constructor.
+data ListNotebookInstanceLifecycleConfigsResponse = ListNotebookInstanceLifecycleConfigsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To get the
+    -- next set of lifecycle configurations, use it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of @NotebookInstanceLifecycleConfiguration@ objects, each
+    -- listing a lifecycle configuration.
+    notebookInstanceLifecycleConfigs :: Prelude.Maybe [NotebookInstanceLifecycleConfigSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNotebookInstanceLifecycleConfigsResponse' 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:
+--
+-- 'nextToken', 'listNotebookInstanceLifecycleConfigsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To get the
+-- next set of lifecycle configurations, use it in the next request.
+--
+-- 'notebookInstanceLifecycleConfigs', 'listNotebookInstanceLifecycleConfigsResponse_notebookInstanceLifecycleConfigs' - An array of @NotebookInstanceLifecycleConfiguration@ objects, each
+-- listing a lifecycle configuration.
+--
+-- 'httpStatus', 'listNotebookInstanceLifecycleConfigsResponse_httpStatus' - The response's http status code.
+newListNotebookInstanceLifecycleConfigsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListNotebookInstanceLifecycleConfigsResponse
+newListNotebookInstanceLifecycleConfigsResponse
+  pHttpStatus_ =
+    ListNotebookInstanceLifecycleConfigsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        notebookInstanceLifecycleConfigs =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | If the response is truncated, SageMaker returns this token. To get the
+-- next set of lifecycle configurations, use it in the next request.
+listNotebookInstanceLifecycleConfigsResponse_nextToken :: Lens.Lens' ListNotebookInstanceLifecycleConfigsResponse (Prelude.Maybe Prelude.Text)
+listNotebookInstanceLifecycleConfigsResponse_nextToken = Lens.lens (\ListNotebookInstanceLifecycleConfigsResponse' {nextToken} -> nextToken) (\s@ListNotebookInstanceLifecycleConfigsResponse' {} a -> s {nextToken = a} :: ListNotebookInstanceLifecycleConfigsResponse)
+
+-- | An array of @NotebookInstanceLifecycleConfiguration@ objects, each
+-- listing a lifecycle configuration.
+listNotebookInstanceLifecycleConfigsResponse_notebookInstanceLifecycleConfigs :: Lens.Lens' ListNotebookInstanceLifecycleConfigsResponse (Prelude.Maybe [NotebookInstanceLifecycleConfigSummary])
+listNotebookInstanceLifecycleConfigsResponse_notebookInstanceLifecycleConfigs = Lens.lens (\ListNotebookInstanceLifecycleConfigsResponse' {notebookInstanceLifecycleConfigs} -> notebookInstanceLifecycleConfigs) (\s@ListNotebookInstanceLifecycleConfigsResponse' {} a -> s {notebookInstanceLifecycleConfigs = a} :: ListNotebookInstanceLifecycleConfigsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listNotebookInstanceLifecycleConfigsResponse_httpStatus :: Lens.Lens' ListNotebookInstanceLifecycleConfigsResponse Prelude.Int
+listNotebookInstanceLifecycleConfigsResponse_httpStatus = Lens.lens (\ListNotebookInstanceLifecycleConfigsResponse' {httpStatus} -> httpStatus) (\s@ListNotebookInstanceLifecycleConfigsResponse' {} a -> s {httpStatus = a} :: ListNotebookInstanceLifecycleConfigsResponse)
+
+instance
+  Prelude.NFData
+    ListNotebookInstanceLifecycleConfigsResponse
+  where
+  rnf ListNotebookInstanceLifecycleConfigsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigs
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListNotebookInstances.hs b/gen/Amazonka/SageMaker/ListNotebookInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListNotebookInstances.hs
@@ -0,0 +1,445 @@
+{-# 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.ListNotebookInstances
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of the SageMaker notebook instances in the requester\'s
+-- account in an Amazon Web Services Region.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListNotebookInstances
+  ( -- * Creating a Request
+    ListNotebookInstances (..),
+    newListNotebookInstances,
+
+    -- * Request Lenses
+    listNotebookInstances_additionalCodeRepositoryEquals,
+    listNotebookInstances_creationTimeAfter,
+    listNotebookInstances_creationTimeBefore,
+    listNotebookInstances_defaultCodeRepositoryContains,
+    listNotebookInstances_lastModifiedTimeAfter,
+    listNotebookInstances_lastModifiedTimeBefore,
+    listNotebookInstances_maxResults,
+    listNotebookInstances_nameContains,
+    listNotebookInstances_nextToken,
+    listNotebookInstances_notebookInstanceLifecycleConfigNameContains,
+    listNotebookInstances_sortBy,
+    listNotebookInstances_sortOrder,
+    listNotebookInstances_statusEquals,
+
+    -- * Destructuring the Response
+    ListNotebookInstancesResponse (..),
+    newListNotebookInstancesResponse,
+
+    -- * Response Lenses
+    listNotebookInstancesResponse_nextToken,
+    listNotebookInstancesResponse_notebookInstances,
+    listNotebookInstancesResponse_httpStatus,
+  )
+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:/ 'newListNotebookInstances' smart constructor.
+data ListNotebookInstances = ListNotebookInstances'
+  { -- | A filter that returns only notebook instances with associated with the
+    -- specified git repository.
+    additionalCodeRepositoryEquals :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only notebook instances that were created after
+    -- the specified time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only notebook instances that were created before
+    -- the specified time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A string in the name or URL of a Git repository associated with this
+    -- notebook instance. This filter returns only notebook instances
+    -- associated with a git repository with a name that contains the specified
+    -- string.
+    defaultCodeRepositoryContains :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only notebook instances that were modified after
+    -- the specified time (timestamp).
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only notebook instances that were modified before
+    -- the specified time (timestamp).
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of notebook instances to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the notebook instances\' name. This filter returns only
+    -- notebook instances whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the previous call to the @ListNotebookInstances@ is truncated, the
+    -- response includes a @NextToken@. You can use this token in your
+    -- subsequent @ListNotebookInstances@ request to fetch the next set of
+    -- notebook instances.
+    --
+    -- You might specify a filter or a sort order in your request. When
+    -- response is truncated, you must use the same values for the filer and
+    -- sort order in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A string in the name of a notebook instances lifecycle configuration
+    -- associated with this notebook instance. This filter returns only
+    -- notebook instances associated with a lifecycle configuration with a name
+    -- that contains the specified string.
+    notebookInstanceLifecycleConfigNameContains :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @Name@.
+    sortBy :: Prelude.Maybe NotebookInstanceSortKey,
+    -- | The sort order for results.
+    sortOrder :: Prelude.Maybe NotebookInstanceSortOrder,
+    -- | A filter that returns only notebook instances with the specified status.
+    statusEquals :: Prelude.Maybe NotebookInstanceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNotebookInstances' 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:
+--
+-- 'additionalCodeRepositoryEquals', 'listNotebookInstances_additionalCodeRepositoryEquals' - A filter that returns only notebook instances with associated with the
+-- specified git repository.
+--
+-- 'creationTimeAfter', 'listNotebookInstances_creationTimeAfter' - A filter that returns only notebook instances that were created after
+-- the specified time (timestamp).
+--
+-- 'creationTimeBefore', 'listNotebookInstances_creationTimeBefore' - A filter that returns only notebook instances that were created before
+-- the specified time (timestamp).
+--
+-- 'defaultCodeRepositoryContains', 'listNotebookInstances_defaultCodeRepositoryContains' - A string in the name or URL of a Git repository associated with this
+-- notebook instance. This filter returns only notebook instances
+-- associated with a git repository with a name that contains the specified
+-- string.
+--
+-- 'lastModifiedTimeAfter', 'listNotebookInstances_lastModifiedTimeAfter' - A filter that returns only notebook instances that were modified after
+-- the specified time (timestamp).
+--
+-- 'lastModifiedTimeBefore', 'listNotebookInstances_lastModifiedTimeBefore' - A filter that returns only notebook instances that were modified before
+-- the specified time (timestamp).
+--
+-- 'maxResults', 'listNotebookInstances_maxResults' - The maximum number of notebook instances to return.
+--
+-- 'nameContains', 'listNotebookInstances_nameContains' - A string in the notebook instances\' name. This filter returns only
+-- notebook instances whose name contains the specified string.
+--
+-- 'nextToken', 'listNotebookInstances_nextToken' - If the previous call to the @ListNotebookInstances@ is truncated, the
+-- response includes a @NextToken@. You can use this token in your
+-- subsequent @ListNotebookInstances@ request to fetch the next set of
+-- notebook instances.
+--
+-- You might specify a filter or a sort order in your request. When
+-- response is truncated, you must use the same values for the filer and
+-- sort order in the next request.
+--
+-- 'notebookInstanceLifecycleConfigNameContains', 'listNotebookInstances_notebookInstanceLifecycleConfigNameContains' - A string in the name of a notebook instances lifecycle configuration
+-- associated with this notebook instance. This filter returns only
+-- notebook instances associated with a lifecycle configuration with a name
+-- that contains the specified string.
+--
+-- 'sortBy', 'listNotebookInstances_sortBy' - The field to sort results by. The default is @Name@.
+--
+-- 'sortOrder', 'listNotebookInstances_sortOrder' - The sort order for results.
+--
+-- 'statusEquals', 'listNotebookInstances_statusEquals' - A filter that returns only notebook instances with the specified status.
+newListNotebookInstances ::
+  ListNotebookInstances
+newListNotebookInstances =
+  ListNotebookInstances'
+    { additionalCodeRepositoryEquals =
+        Prelude.Nothing,
+      creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      defaultCodeRepositoryContains = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      notebookInstanceLifecycleConfigNameContains =
+        Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only notebook instances with associated with the
+-- specified git repository.
+listNotebookInstances_additionalCodeRepositoryEquals :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.Text)
+listNotebookInstances_additionalCodeRepositoryEquals = Lens.lens (\ListNotebookInstances' {additionalCodeRepositoryEquals} -> additionalCodeRepositoryEquals) (\s@ListNotebookInstances' {} a -> s {additionalCodeRepositoryEquals = a} :: ListNotebookInstances)
+
+-- | A filter that returns only notebook instances that were created after
+-- the specified time (timestamp).
+listNotebookInstances_creationTimeAfter :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstances_creationTimeAfter = Lens.lens (\ListNotebookInstances' {creationTimeAfter} -> creationTimeAfter) (\s@ListNotebookInstances' {} a -> s {creationTimeAfter = a} :: ListNotebookInstances) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only notebook instances that were created before
+-- the specified time (timestamp).
+listNotebookInstances_creationTimeBefore :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstances_creationTimeBefore = Lens.lens (\ListNotebookInstances' {creationTimeBefore} -> creationTimeBefore) (\s@ListNotebookInstances' {} a -> s {creationTimeBefore = a} :: ListNotebookInstances) Prelude.. Lens.mapping Data._Time
+
+-- | A string in the name or URL of a Git repository associated with this
+-- notebook instance. This filter returns only notebook instances
+-- associated with a git repository with a name that contains the specified
+-- string.
+listNotebookInstances_defaultCodeRepositoryContains :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.Text)
+listNotebookInstances_defaultCodeRepositoryContains = Lens.lens (\ListNotebookInstances' {defaultCodeRepositoryContains} -> defaultCodeRepositoryContains) (\s@ListNotebookInstances' {} a -> s {defaultCodeRepositoryContains = a} :: ListNotebookInstances)
+
+-- | A filter that returns only notebook instances that were modified after
+-- the specified time (timestamp).
+listNotebookInstances_lastModifiedTimeAfter :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstances_lastModifiedTimeAfter = Lens.lens (\ListNotebookInstances' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListNotebookInstances' {} a -> s {lastModifiedTimeAfter = a} :: ListNotebookInstances) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only notebook instances that were modified before
+-- the specified time (timestamp).
+listNotebookInstances_lastModifiedTimeBefore :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.UTCTime)
+listNotebookInstances_lastModifiedTimeBefore = Lens.lens (\ListNotebookInstances' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListNotebookInstances' {} a -> s {lastModifiedTimeBefore = a} :: ListNotebookInstances) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of notebook instances to return.
+listNotebookInstances_maxResults :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.Natural)
+listNotebookInstances_maxResults = Lens.lens (\ListNotebookInstances' {maxResults} -> maxResults) (\s@ListNotebookInstances' {} a -> s {maxResults = a} :: ListNotebookInstances)
+
+-- | A string in the notebook instances\' name. This filter returns only
+-- notebook instances whose name contains the specified string.
+listNotebookInstances_nameContains :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.Text)
+listNotebookInstances_nameContains = Lens.lens (\ListNotebookInstances' {nameContains} -> nameContains) (\s@ListNotebookInstances' {} a -> s {nameContains = a} :: ListNotebookInstances)
+
+-- | If the previous call to the @ListNotebookInstances@ is truncated, the
+-- response includes a @NextToken@. You can use this token in your
+-- subsequent @ListNotebookInstances@ request to fetch the next set of
+-- notebook instances.
+--
+-- You might specify a filter or a sort order in your request. When
+-- response is truncated, you must use the same values for the filer and
+-- sort order in the next request.
+listNotebookInstances_nextToken :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.Text)
+listNotebookInstances_nextToken = Lens.lens (\ListNotebookInstances' {nextToken} -> nextToken) (\s@ListNotebookInstances' {} a -> s {nextToken = a} :: ListNotebookInstances)
+
+-- | A string in the name of a notebook instances lifecycle configuration
+-- associated with this notebook instance. This filter returns only
+-- notebook instances associated with a lifecycle configuration with a name
+-- that contains the specified string.
+listNotebookInstances_notebookInstanceLifecycleConfigNameContains :: Lens.Lens' ListNotebookInstances (Prelude.Maybe Prelude.Text)
+listNotebookInstances_notebookInstanceLifecycleConfigNameContains = Lens.lens (\ListNotebookInstances' {notebookInstanceLifecycleConfigNameContains} -> notebookInstanceLifecycleConfigNameContains) (\s@ListNotebookInstances' {} a -> s {notebookInstanceLifecycleConfigNameContains = a} :: ListNotebookInstances)
+
+-- | The field to sort results by. The default is @Name@.
+listNotebookInstances_sortBy :: Lens.Lens' ListNotebookInstances (Prelude.Maybe NotebookInstanceSortKey)
+listNotebookInstances_sortBy = Lens.lens (\ListNotebookInstances' {sortBy} -> sortBy) (\s@ListNotebookInstances' {} a -> s {sortBy = a} :: ListNotebookInstances)
+
+-- | The sort order for results.
+listNotebookInstances_sortOrder :: Lens.Lens' ListNotebookInstances (Prelude.Maybe NotebookInstanceSortOrder)
+listNotebookInstances_sortOrder = Lens.lens (\ListNotebookInstances' {sortOrder} -> sortOrder) (\s@ListNotebookInstances' {} a -> s {sortOrder = a} :: ListNotebookInstances)
+
+-- | A filter that returns only notebook instances with the specified status.
+listNotebookInstances_statusEquals :: Lens.Lens' ListNotebookInstances (Prelude.Maybe NotebookInstanceStatus)
+listNotebookInstances_statusEquals = Lens.lens (\ListNotebookInstances' {statusEquals} -> statusEquals) (\s@ListNotebookInstances' {} a -> s {statusEquals = a} :: ListNotebookInstances)
+
+instance Core.AWSPager ListNotebookInstances where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listNotebookInstancesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listNotebookInstancesResponse_notebookInstances
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listNotebookInstances_nextToken
+          Lens..~ rs
+          Lens.^? listNotebookInstancesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListNotebookInstances where
+  type
+    AWSResponse ListNotebookInstances =
+      ListNotebookInstancesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNotebookInstancesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "NotebookInstances"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListNotebookInstances where
+  hashWithSalt _salt ListNotebookInstances' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalCodeRepositoryEquals
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` defaultCodeRepositoryContains
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` notebookInstanceLifecycleConfigNameContains
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListNotebookInstances where
+  rnf ListNotebookInstances' {..} =
+    Prelude.rnf additionalCodeRepositoryEquals
+      `Prelude.seq` Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf defaultCodeRepositoryContains
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf
+        notebookInstanceLifecycleConfigNameContains
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListNotebookInstances where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListNotebookInstances" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListNotebookInstances where
+  toJSON ListNotebookInstances' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AdditionalCodeRepositoryEquals" Data..=)
+              Prelude.<$> additionalCodeRepositoryEquals,
+            ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("DefaultCodeRepositoryContains" Data..=)
+              Prelude.<$> defaultCodeRepositoryContains,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ( "NotebookInstanceLifecycleConfigNameContains"
+                Data..=
+            )
+              Prelude.<$> notebookInstanceLifecycleConfigNameContains,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListNotebookInstances where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListNotebookInstances where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListNotebookInstancesResponse' smart constructor.
+data ListNotebookInstancesResponse = ListNotebookInstancesResponse'
+  { -- | If the response to the previous @ListNotebookInstances@ request was
+    -- truncated, SageMaker returns this token. To retrieve the next set of
+    -- notebook instances, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of @NotebookInstanceSummary@ objects, one for each notebook
+    -- instance.
+    notebookInstances :: Prelude.Maybe [NotebookInstanceSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNotebookInstancesResponse' 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:
+--
+-- 'nextToken', 'listNotebookInstancesResponse_nextToken' - If the response to the previous @ListNotebookInstances@ request was
+-- truncated, SageMaker returns this token. To retrieve the next set of
+-- notebook instances, use the token in the next request.
+--
+-- 'notebookInstances', 'listNotebookInstancesResponse_notebookInstances' - An array of @NotebookInstanceSummary@ objects, one for each notebook
+-- instance.
+--
+-- 'httpStatus', 'listNotebookInstancesResponse_httpStatus' - The response's http status code.
+newListNotebookInstancesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListNotebookInstancesResponse
+newListNotebookInstancesResponse pHttpStatus_ =
+  ListNotebookInstancesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      notebookInstances = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the response to the previous @ListNotebookInstances@ request was
+-- truncated, SageMaker returns this token. To retrieve the next set of
+-- notebook instances, use the token in the next request.
+listNotebookInstancesResponse_nextToken :: Lens.Lens' ListNotebookInstancesResponse (Prelude.Maybe Prelude.Text)
+listNotebookInstancesResponse_nextToken = Lens.lens (\ListNotebookInstancesResponse' {nextToken} -> nextToken) (\s@ListNotebookInstancesResponse' {} a -> s {nextToken = a} :: ListNotebookInstancesResponse)
+
+-- | An array of @NotebookInstanceSummary@ objects, one for each notebook
+-- instance.
+listNotebookInstancesResponse_notebookInstances :: Lens.Lens' ListNotebookInstancesResponse (Prelude.Maybe [NotebookInstanceSummary])
+listNotebookInstancesResponse_notebookInstances = Lens.lens (\ListNotebookInstancesResponse' {notebookInstances} -> notebookInstances) (\s@ListNotebookInstancesResponse' {} a -> s {notebookInstances = a} :: ListNotebookInstancesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listNotebookInstancesResponse_httpStatus :: Lens.Lens' ListNotebookInstancesResponse Prelude.Int
+listNotebookInstancesResponse_httpStatus = Lens.lens (\ListNotebookInstancesResponse' {httpStatus} -> httpStatus) (\s@ListNotebookInstancesResponse' {} a -> s {httpStatus = a} :: ListNotebookInstancesResponse)
+
+instance Prelude.NFData ListNotebookInstancesResponse where
+  rnf ListNotebookInstancesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf notebookInstances
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListPipelineExecutionSteps.hs b/gen/Amazonka/SageMaker/ListPipelineExecutionSteps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListPipelineExecutionSteps.hs
@@ -0,0 +1,279 @@
+{-# 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.ListPipelineExecutionSteps
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of @PipeLineExecutionStep@ objects.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListPipelineExecutionSteps
+  ( -- * Creating a Request
+    ListPipelineExecutionSteps (..),
+    newListPipelineExecutionSteps,
+
+    -- * Request Lenses
+    listPipelineExecutionSteps_maxResults,
+    listPipelineExecutionSteps_nextToken,
+    listPipelineExecutionSteps_pipelineExecutionArn,
+    listPipelineExecutionSteps_sortOrder,
+
+    -- * Destructuring the Response
+    ListPipelineExecutionStepsResponse (..),
+    newListPipelineExecutionStepsResponse,
+
+    -- * Response Lenses
+    listPipelineExecutionStepsResponse_nextToken,
+    listPipelineExecutionStepsResponse_pipelineExecutionSteps,
+    listPipelineExecutionStepsResponse_httpStatus,
+  )
+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:/ 'newListPipelineExecutionSteps' smart constructor.
+data ListPipelineExecutionSteps = ListPipelineExecutionSteps'
+  { -- | The maximum number of pipeline execution steps to return in the
+    -- response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous @ListPipelineExecutionSteps@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of pipeline execution steps, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The field by which to sort results. The default is @CreatedTime@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelineExecutionSteps' 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:
+--
+-- 'maxResults', 'listPipelineExecutionSteps_maxResults' - The maximum number of pipeline execution steps to return in the
+-- response.
+--
+-- 'nextToken', 'listPipelineExecutionSteps_nextToken' - If the result of the previous @ListPipelineExecutionSteps@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline execution steps, use the token in the next request.
+--
+-- 'pipelineExecutionArn', 'listPipelineExecutionSteps_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'sortOrder', 'listPipelineExecutionSteps_sortOrder' - The field by which to sort results. The default is @CreatedTime@.
+newListPipelineExecutionSteps ::
+  ListPipelineExecutionSteps
+newListPipelineExecutionSteps =
+  ListPipelineExecutionSteps'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      pipelineExecutionArn = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | The maximum number of pipeline execution steps to return in the
+-- response.
+listPipelineExecutionSteps_maxResults :: Lens.Lens' ListPipelineExecutionSteps (Prelude.Maybe Prelude.Natural)
+listPipelineExecutionSteps_maxResults = Lens.lens (\ListPipelineExecutionSteps' {maxResults} -> maxResults) (\s@ListPipelineExecutionSteps' {} a -> s {maxResults = a} :: ListPipelineExecutionSteps)
+
+-- | If the result of the previous @ListPipelineExecutionSteps@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline execution steps, use the token in the next request.
+listPipelineExecutionSteps_nextToken :: Lens.Lens' ListPipelineExecutionSteps (Prelude.Maybe Prelude.Text)
+listPipelineExecutionSteps_nextToken = Lens.lens (\ListPipelineExecutionSteps' {nextToken} -> nextToken) (\s@ListPipelineExecutionSteps' {} a -> s {nextToken = a} :: ListPipelineExecutionSteps)
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+listPipelineExecutionSteps_pipelineExecutionArn :: Lens.Lens' ListPipelineExecutionSteps (Prelude.Maybe Prelude.Text)
+listPipelineExecutionSteps_pipelineExecutionArn = Lens.lens (\ListPipelineExecutionSteps' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@ListPipelineExecutionSteps' {} a -> s {pipelineExecutionArn = a} :: ListPipelineExecutionSteps)
+
+-- | The field by which to sort results. The default is @CreatedTime@.
+listPipelineExecutionSteps_sortOrder :: Lens.Lens' ListPipelineExecutionSteps (Prelude.Maybe SortOrder)
+listPipelineExecutionSteps_sortOrder = Lens.lens (\ListPipelineExecutionSteps' {sortOrder} -> sortOrder) (\s@ListPipelineExecutionSteps' {} a -> s {sortOrder = a} :: ListPipelineExecutionSteps)
+
+instance Core.AWSPager ListPipelineExecutionSteps where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPipelineExecutionStepsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPipelineExecutionStepsResponse_pipelineExecutionSteps
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPipelineExecutionSteps_nextToken
+          Lens..~ rs
+          Lens.^? listPipelineExecutionStepsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPipelineExecutionSteps where
+  type
+    AWSResponse ListPipelineExecutionSteps =
+      ListPipelineExecutionStepsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPipelineExecutionStepsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "PipelineExecutionSteps"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPipelineExecutionSteps where
+  hashWithSalt _salt ListPipelineExecutionSteps' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` pipelineExecutionArn
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListPipelineExecutionSteps where
+  rnf ListPipelineExecutionSteps' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListPipelineExecutionSteps where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListPipelineExecutionSteps" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListPipelineExecutionSteps where
+  toJSON ListPipelineExecutionSteps' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("PipelineExecutionArn" Data..=)
+              Prelude.<$> pipelineExecutionArn,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListPipelineExecutionSteps where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListPipelineExecutionSteps where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPipelineExecutionStepsResponse' smart constructor.
+data ListPipelineExecutionStepsResponse = ListPipelineExecutionStepsResponse'
+  { -- | If the result of the previous @ListPipelineExecutionSteps@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of pipeline execution steps, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of @PipeLineExecutionStep@ objects. Each @PipeLineExecutionStep@
+    -- consists of StepName, StartTime, EndTime, StepStatus, and Metadata.
+    -- Metadata is an object with properties for each job that contains
+    -- relevant information about the job created by the step.
+    pipelineExecutionSteps :: Prelude.Maybe [PipelineExecutionStep],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelineExecutionStepsResponse' 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:
+--
+-- 'nextToken', 'listPipelineExecutionStepsResponse_nextToken' - If the result of the previous @ListPipelineExecutionSteps@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline execution steps, use the token in the next request.
+--
+-- 'pipelineExecutionSteps', 'listPipelineExecutionStepsResponse_pipelineExecutionSteps' - A list of @PipeLineExecutionStep@ objects. Each @PipeLineExecutionStep@
+-- consists of StepName, StartTime, EndTime, StepStatus, and Metadata.
+-- Metadata is an object with properties for each job that contains
+-- relevant information about the job created by the step.
+--
+-- 'httpStatus', 'listPipelineExecutionStepsResponse_httpStatus' - The response's http status code.
+newListPipelineExecutionStepsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPipelineExecutionStepsResponse
+newListPipelineExecutionStepsResponse pHttpStatus_ =
+  ListPipelineExecutionStepsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      pipelineExecutionSteps =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the result of the previous @ListPipelineExecutionSteps@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline execution steps, use the token in the next request.
+listPipelineExecutionStepsResponse_nextToken :: Lens.Lens' ListPipelineExecutionStepsResponse (Prelude.Maybe Prelude.Text)
+listPipelineExecutionStepsResponse_nextToken = Lens.lens (\ListPipelineExecutionStepsResponse' {nextToken} -> nextToken) (\s@ListPipelineExecutionStepsResponse' {} a -> s {nextToken = a} :: ListPipelineExecutionStepsResponse)
+
+-- | A list of @PipeLineExecutionStep@ objects. Each @PipeLineExecutionStep@
+-- consists of StepName, StartTime, EndTime, StepStatus, and Metadata.
+-- Metadata is an object with properties for each job that contains
+-- relevant information about the job created by the step.
+listPipelineExecutionStepsResponse_pipelineExecutionSteps :: Lens.Lens' ListPipelineExecutionStepsResponse (Prelude.Maybe [PipelineExecutionStep])
+listPipelineExecutionStepsResponse_pipelineExecutionSteps = Lens.lens (\ListPipelineExecutionStepsResponse' {pipelineExecutionSteps} -> pipelineExecutionSteps) (\s@ListPipelineExecutionStepsResponse' {} a -> s {pipelineExecutionSteps = a} :: ListPipelineExecutionStepsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPipelineExecutionStepsResponse_httpStatus :: Lens.Lens' ListPipelineExecutionStepsResponse Prelude.Int
+listPipelineExecutionStepsResponse_httpStatus = Lens.lens (\ListPipelineExecutionStepsResponse' {httpStatus} -> httpStatus) (\s@ListPipelineExecutionStepsResponse' {} a -> s {httpStatus = a} :: ListPipelineExecutionStepsResponse)
+
+instance
+  Prelude.NFData
+    ListPipelineExecutionStepsResponse
+  where
+  rnf ListPipelineExecutionStepsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineExecutionSteps
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListPipelineExecutions.hs b/gen/Amazonka/SageMaker/ListPipelineExecutions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListPipelineExecutions.hs
@@ -0,0 +1,322 @@
+{-# 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.ListPipelineExecutions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of the pipeline executions.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListPipelineExecutions
+  ( -- * Creating a Request
+    ListPipelineExecutions (..),
+    newListPipelineExecutions,
+
+    -- * Request Lenses
+    listPipelineExecutions_createdAfter,
+    listPipelineExecutions_createdBefore,
+    listPipelineExecutions_maxResults,
+    listPipelineExecutions_nextToken,
+    listPipelineExecutions_sortBy,
+    listPipelineExecutions_sortOrder,
+    listPipelineExecutions_pipelineName,
+
+    -- * Destructuring the Response
+    ListPipelineExecutionsResponse (..),
+    newListPipelineExecutionsResponse,
+
+    -- * Response Lenses
+    listPipelineExecutionsResponse_nextToken,
+    listPipelineExecutionsResponse_pipelineExecutionSummaries,
+    listPipelineExecutionsResponse_httpStatus,
+  )
+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:/ 'newListPipelineExecutions' smart constructor.
+data ListPipelineExecutions = ListPipelineExecutions'
+  { -- | A filter that returns the pipeline executions that were created after a
+    -- specified time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns the pipeline executions that were created before a
+    -- specified time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of pipeline executions to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous @ListPipelineExecutions@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of pipeline executions, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field by which to sort results. The default is @CreatedTime@.
+    sortBy :: Prelude.Maybe SortPipelineExecutionsBy,
+    -- | The sort order for results.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | The name of the pipeline.
+    pipelineName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelineExecutions' 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:
+--
+-- 'createdAfter', 'listPipelineExecutions_createdAfter' - A filter that returns the pipeline executions that were created after a
+-- specified time.
+--
+-- 'createdBefore', 'listPipelineExecutions_createdBefore' - A filter that returns the pipeline executions that were created before a
+-- specified time.
+--
+-- 'maxResults', 'listPipelineExecutions_maxResults' - The maximum number of pipeline executions to return in the response.
+--
+-- 'nextToken', 'listPipelineExecutions_nextToken' - If the result of the previous @ListPipelineExecutions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline executions, use the token in the next request.
+--
+-- 'sortBy', 'listPipelineExecutions_sortBy' - The field by which to sort results. The default is @CreatedTime@.
+--
+-- 'sortOrder', 'listPipelineExecutions_sortOrder' - The sort order for results.
+--
+-- 'pipelineName', 'listPipelineExecutions_pipelineName' - The name of the pipeline.
+newListPipelineExecutions ::
+  -- | 'pipelineName'
+  Prelude.Text ->
+  ListPipelineExecutions
+newListPipelineExecutions pPipelineName_ =
+  ListPipelineExecutions'
+    { createdAfter =
+        Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      pipelineName = pPipelineName_
+    }
+
+-- | A filter that returns the pipeline executions that were created after a
+-- specified time.
+listPipelineExecutions_createdAfter :: Lens.Lens' ListPipelineExecutions (Prelude.Maybe Prelude.UTCTime)
+listPipelineExecutions_createdAfter = Lens.lens (\ListPipelineExecutions' {createdAfter} -> createdAfter) (\s@ListPipelineExecutions' {} a -> s {createdAfter = a} :: ListPipelineExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns the pipeline executions that were created before a
+-- specified time.
+listPipelineExecutions_createdBefore :: Lens.Lens' ListPipelineExecutions (Prelude.Maybe Prelude.UTCTime)
+listPipelineExecutions_createdBefore = Lens.lens (\ListPipelineExecutions' {createdBefore} -> createdBefore) (\s@ListPipelineExecutions' {} a -> s {createdBefore = a} :: ListPipelineExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of pipeline executions to return in the response.
+listPipelineExecutions_maxResults :: Lens.Lens' ListPipelineExecutions (Prelude.Maybe Prelude.Natural)
+listPipelineExecutions_maxResults = Lens.lens (\ListPipelineExecutions' {maxResults} -> maxResults) (\s@ListPipelineExecutions' {} a -> s {maxResults = a} :: ListPipelineExecutions)
+
+-- | If the result of the previous @ListPipelineExecutions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline executions, use the token in the next request.
+listPipelineExecutions_nextToken :: Lens.Lens' ListPipelineExecutions (Prelude.Maybe Prelude.Text)
+listPipelineExecutions_nextToken = Lens.lens (\ListPipelineExecutions' {nextToken} -> nextToken) (\s@ListPipelineExecutions' {} a -> s {nextToken = a} :: ListPipelineExecutions)
+
+-- | The field by which to sort results. The default is @CreatedTime@.
+listPipelineExecutions_sortBy :: Lens.Lens' ListPipelineExecutions (Prelude.Maybe SortPipelineExecutionsBy)
+listPipelineExecutions_sortBy = Lens.lens (\ListPipelineExecutions' {sortBy} -> sortBy) (\s@ListPipelineExecutions' {} a -> s {sortBy = a} :: ListPipelineExecutions)
+
+-- | The sort order for results.
+listPipelineExecutions_sortOrder :: Lens.Lens' ListPipelineExecutions (Prelude.Maybe SortOrder)
+listPipelineExecutions_sortOrder = Lens.lens (\ListPipelineExecutions' {sortOrder} -> sortOrder) (\s@ListPipelineExecutions' {} a -> s {sortOrder = a} :: ListPipelineExecutions)
+
+-- | The name of the pipeline.
+listPipelineExecutions_pipelineName :: Lens.Lens' ListPipelineExecutions Prelude.Text
+listPipelineExecutions_pipelineName = Lens.lens (\ListPipelineExecutions' {pipelineName} -> pipelineName) (\s@ListPipelineExecutions' {} a -> s {pipelineName = a} :: ListPipelineExecutions)
+
+instance Core.AWSPager ListPipelineExecutions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPipelineExecutionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPipelineExecutionsResponse_pipelineExecutionSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPipelineExecutions_nextToken
+          Lens..~ rs
+          Lens.^? listPipelineExecutionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPipelineExecutions where
+  type
+    AWSResponse ListPipelineExecutions =
+      ListPipelineExecutionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPipelineExecutionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "PipelineExecutionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPipelineExecutions where
+  hashWithSalt _salt ListPipelineExecutions' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` pipelineName
+
+instance Prelude.NFData ListPipelineExecutions where
+  rnf ListPipelineExecutions' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf pipelineName
+
+instance Data.ToHeaders ListPipelineExecutions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListPipelineExecutions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListPipelineExecutions where
+  toJSON ListPipelineExecutions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("PipelineName" Data..= pipelineName)
+          ]
+      )
+
+instance Data.ToPath ListPipelineExecutions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListPipelineExecutions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPipelineExecutionsResponse' smart constructor.
+data ListPipelineExecutionsResponse = ListPipelineExecutionsResponse'
+  { -- | If the result of the previous @ListPipelineExecutions@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of pipeline executions, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Contains a sorted list of pipeline execution summary objects matching
+    -- the specified filters. Each run summary includes the Amazon Resource
+    -- Name (ARN) of the pipeline execution, the run date, and the status. This
+    -- list can be empty.
+    pipelineExecutionSummaries :: Prelude.Maybe [PipelineExecutionSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelineExecutionsResponse' 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:
+--
+-- 'nextToken', 'listPipelineExecutionsResponse_nextToken' - If the result of the previous @ListPipelineExecutions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline executions, use the token in the next request.
+--
+-- 'pipelineExecutionSummaries', 'listPipelineExecutionsResponse_pipelineExecutionSummaries' - Contains a sorted list of pipeline execution summary objects matching
+-- the specified filters. Each run summary includes the Amazon Resource
+-- Name (ARN) of the pipeline execution, the run date, and the status. This
+-- list can be empty.
+--
+-- 'httpStatus', 'listPipelineExecutionsResponse_httpStatus' - The response's http status code.
+newListPipelineExecutionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPipelineExecutionsResponse
+newListPipelineExecutionsResponse pHttpStatus_ =
+  ListPipelineExecutionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      pipelineExecutionSummaries =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the result of the previous @ListPipelineExecutions@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of pipeline executions, use the token in the next request.
+listPipelineExecutionsResponse_nextToken :: Lens.Lens' ListPipelineExecutionsResponse (Prelude.Maybe Prelude.Text)
+listPipelineExecutionsResponse_nextToken = Lens.lens (\ListPipelineExecutionsResponse' {nextToken} -> nextToken) (\s@ListPipelineExecutionsResponse' {} a -> s {nextToken = a} :: ListPipelineExecutionsResponse)
+
+-- | Contains a sorted list of pipeline execution summary objects matching
+-- the specified filters. Each run summary includes the Amazon Resource
+-- Name (ARN) of the pipeline execution, the run date, and the status. This
+-- list can be empty.
+listPipelineExecutionsResponse_pipelineExecutionSummaries :: Lens.Lens' ListPipelineExecutionsResponse (Prelude.Maybe [PipelineExecutionSummary])
+listPipelineExecutionsResponse_pipelineExecutionSummaries = Lens.lens (\ListPipelineExecutionsResponse' {pipelineExecutionSummaries} -> pipelineExecutionSummaries) (\s@ListPipelineExecutionsResponse' {} a -> s {pipelineExecutionSummaries = a} :: ListPipelineExecutionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPipelineExecutionsResponse_httpStatus :: Lens.Lens' ListPipelineExecutionsResponse Prelude.Int
+listPipelineExecutionsResponse_httpStatus = Lens.lens (\ListPipelineExecutionsResponse' {httpStatus} -> httpStatus) (\s@ListPipelineExecutionsResponse' {} a -> s {httpStatus = a} :: ListPipelineExecutionsResponse)
+
+instance
+  Prelude.NFData
+    ListPipelineExecutionsResponse
+  where
+  rnf ListPipelineExecutionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineExecutionSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListPipelineParametersForExecution.hs b/gen/Amazonka/SageMaker/ListPipelineParametersForExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListPipelineParametersForExecution.hs
@@ -0,0 +1,287 @@
+{-# 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.ListPipelineParametersForExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of parameters for a pipeline execution.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListPipelineParametersForExecution
+  ( -- * Creating a Request
+    ListPipelineParametersForExecution (..),
+    newListPipelineParametersForExecution,
+
+    -- * Request Lenses
+    listPipelineParametersForExecution_maxResults,
+    listPipelineParametersForExecution_nextToken,
+    listPipelineParametersForExecution_pipelineExecutionArn,
+
+    -- * Destructuring the Response
+    ListPipelineParametersForExecutionResponse (..),
+    newListPipelineParametersForExecutionResponse,
+
+    -- * Response Lenses
+    listPipelineParametersForExecutionResponse_nextToken,
+    listPipelineParametersForExecutionResponse_pipelineParameters,
+    listPipelineParametersForExecutionResponse_httpStatus,
+  )
+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:/ 'newListPipelineParametersForExecution' smart constructor.
+data ListPipelineParametersForExecution = ListPipelineParametersForExecution'
+  { -- | The maximum number of parameters to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous @ListPipelineParametersForExecution@
+    -- request was truncated, the response includes a @NextToken@. To retrieve
+    -- the next set of parameters, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelineParametersForExecution' 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:
+--
+-- 'maxResults', 'listPipelineParametersForExecution_maxResults' - The maximum number of parameters to return in the response.
+--
+-- 'nextToken', 'listPipelineParametersForExecution_nextToken' - If the result of the previous @ListPipelineParametersForExecution@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of parameters, use the token in the next request.
+--
+-- 'pipelineExecutionArn', 'listPipelineParametersForExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+newListPipelineParametersForExecution ::
+  -- | 'pipelineExecutionArn'
+  Prelude.Text ->
+  ListPipelineParametersForExecution
+newListPipelineParametersForExecution
+  pPipelineExecutionArn_ =
+    ListPipelineParametersForExecution'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        pipelineExecutionArn =
+          pPipelineExecutionArn_
+      }
+
+-- | The maximum number of parameters to return in the response.
+listPipelineParametersForExecution_maxResults :: Lens.Lens' ListPipelineParametersForExecution (Prelude.Maybe Prelude.Natural)
+listPipelineParametersForExecution_maxResults = Lens.lens (\ListPipelineParametersForExecution' {maxResults} -> maxResults) (\s@ListPipelineParametersForExecution' {} a -> s {maxResults = a} :: ListPipelineParametersForExecution)
+
+-- | If the result of the previous @ListPipelineParametersForExecution@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of parameters, use the token in the next request.
+listPipelineParametersForExecution_nextToken :: Lens.Lens' ListPipelineParametersForExecution (Prelude.Maybe Prelude.Text)
+listPipelineParametersForExecution_nextToken = Lens.lens (\ListPipelineParametersForExecution' {nextToken} -> nextToken) (\s@ListPipelineParametersForExecution' {} a -> s {nextToken = a} :: ListPipelineParametersForExecution)
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+listPipelineParametersForExecution_pipelineExecutionArn :: Lens.Lens' ListPipelineParametersForExecution Prelude.Text
+listPipelineParametersForExecution_pipelineExecutionArn = Lens.lens (\ListPipelineParametersForExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@ListPipelineParametersForExecution' {} a -> s {pipelineExecutionArn = a} :: ListPipelineParametersForExecution)
+
+instance
+  Core.AWSPager
+    ListPipelineParametersForExecution
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPipelineParametersForExecutionResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPipelineParametersForExecutionResponse_pipelineParameters
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPipelineParametersForExecution_nextToken
+          Lens..~ rs
+          Lens.^? listPipelineParametersForExecutionResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListPipelineParametersForExecution
+  where
+  type
+    AWSResponse ListPipelineParametersForExecution =
+      ListPipelineParametersForExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPipelineParametersForExecutionResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "PipelineParameters"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListPipelineParametersForExecution
+  where
+  hashWithSalt
+    _salt
+    ListPipelineParametersForExecution' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` pipelineExecutionArn
+
+instance
+  Prelude.NFData
+    ListPipelineParametersForExecution
+  where
+  rnf ListPipelineParametersForExecution' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineExecutionArn
+
+instance
+  Data.ToHeaders
+    ListPipelineParametersForExecution
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListPipelineParametersForExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListPipelineParametersForExecution
+  where
+  toJSON ListPipelineParametersForExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "PipelineExecutionArn"
+                  Data..= pipelineExecutionArn
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListPipelineParametersForExecution
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListPipelineParametersForExecution
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPipelineParametersForExecutionResponse' smart constructor.
+data ListPipelineParametersForExecutionResponse = ListPipelineParametersForExecutionResponse'
+  { -- | If the result of the previous @ListPipelineParametersForExecution@
+    -- request was truncated, the response includes a @NextToken@. To retrieve
+    -- the next set of parameters, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Contains a list of pipeline parameters. This list can be empty.
+    pipelineParameters :: Prelude.Maybe [Parameter],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelineParametersForExecutionResponse' 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:
+--
+-- 'nextToken', 'listPipelineParametersForExecutionResponse_nextToken' - If the result of the previous @ListPipelineParametersForExecution@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of parameters, use the token in the next request.
+--
+-- 'pipelineParameters', 'listPipelineParametersForExecutionResponse_pipelineParameters' - Contains a list of pipeline parameters. This list can be empty.
+--
+-- 'httpStatus', 'listPipelineParametersForExecutionResponse_httpStatus' - The response's http status code.
+newListPipelineParametersForExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPipelineParametersForExecutionResponse
+newListPipelineParametersForExecutionResponse
+  pHttpStatus_ =
+    ListPipelineParametersForExecutionResponse'
+      { nextToken =
+          Prelude.Nothing,
+        pipelineParameters =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | If the result of the previous @ListPipelineParametersForExecution@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of parameters, use the token in the next request.
+listPipelineParametersForExecutionResponse_nextToken :: Lens.Lens' ListPipelineParametersForExecutionResponse (Prelude.Maybe Prelude.Text)
+listPipelineParametersForExecutionResponse_nextToken = Lens.lens (\ListPipelineParametersForExecutionResponse' {nextToken} -> nextToken) (\s@ListPipelineParametersForExecutionResponse' {} a -> s {nextToken = a} :: ListPipelineParametersForExecutionResponse)
+
+-- | Contains a list of pipeline parameters. This list can be empty.
+listPipelineParametersForExecutionResponse_pipelineParameters :: Lens.Lens' ListPipelineParametersForExecutionResponse (Prelude.Maybe [Parameter])
+listPipelineParametersForExecutionResponse_pipelineParameters = Lens.lens (\ListPipelineParametersForExecutionResponse' {pipelineParameters} -> pipelineParameters) (\s@ListPipelineParametersForExecutionResponse' {} a -> s {pipelineParameters = a} :: ListPipelineParametersForExecutionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPipelineParametersForExecutionResponse_httpStatus :: Lens.Lens' ListPipelineParametersForExecutionResponse Prelude.Int
+listPipelineParametersForExecutionResponse_httpStatus = Lens.lens (\ListPipelineParametersForExecutionResponse' {httpStatus} -> httpStatus) (\s@ListPipelineParametersForExecutionResponse' {} a -> s {httpStatus = a} :: ListPipelineParametersForExecutionResponse)
+
+instance
+  Prelude.NFData
+    ListPipelineParametersForExecutionResponse
+  where
+  rnf ListPipelineParametersForExecutionResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineParameters
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListPipelines.hs b/gen/Amazonka/SageMaker/ListPipelines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListPipelines.hs
@@ -0,0 +1,313 @@
+{-# 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.ListPipelines
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of pipelines.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListPipelines
+  ( -- * Creating a Request
+    ListPipelines (..),
+    newListPipelines,
+
+    -- * Request Lenses
+    listPipelines_createdAfter,
+    listPipelines_createdBefore,
+    listPipelines_maxResults,
+    listPipelines_nextToken,
+    listPipelines_pipelineNamePrefix,
+    listPipelines_sortBy,
+    listPipelines_sortOrder,
+
+    -- * Destructuring the Response
+    ListPipelinesResponse (..),
+    newListPipelinesResponse,
+
+    -- * Response Lenses
+    listPipelinesResponse_nextToken,
+    listPipelinesResponse_pipelineSummaries,
+    listPipelinesResponse_httpStatus,
+  )
+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:/ 'newListPipelines' smart constructor.
+data ListPipelines = ListPipelines'
+  { -- | A filter that returns the pipelines that were created after a specified
+    -- time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns the pipelines that were created before a specified
+    -- time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of pipelines to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous @ListPipelines@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of pipelines,
+    -- use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The prefix of the pipeline name.
+    pipelineNamePrefix :: Prelude.Maybe Prelude.Text,
+    -- | The field by which to sort results. The default is @CreatedTime@.
+    sortBy :: Prelude.Maybe SortPipelinesBy,
+    -- | The sort order for results.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelines' 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:
+--
+-- 'createdAfter', 'listPipelines_createdAfter' - A filter that returns the pipelines that were created after a specified
+-- time.
+--
+-- 'createdBefore', 'listPipelines_createdBefore' - A filter that returns the pipelines that were created before a specified
+-- time.
+--
+-- 'maxResults', 'listPipelines_maxResults' - The maximum number of pipelines to return in the response.
+--
+-- 'nextToken', 'listPipelines_nextToken' - If the result of the previous @ListPipelines@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of pipelines,
+-- use the token in the next request.
+--
+-- 'pipelineNamePrefix', 'listPipelines_pipelineNamePrefix' - The prefix of the pipeline name.
+--
+-- 'sortBy', 'listPipelines_sortBy' - The field by which to sort results. The default is @CreatedTime@.
+--
+-- 'sortOrder', 'listPipelines_sortOrder' - The sort order for results.
+newListPipelines ::
+  ListPipelines
+newListPipelines =
+  ListPipelines'
+    { createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      pipelineNamePrefix = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns the pipelines that were created after a specified
+-- time.
+listPipelines_createdAfter :: Lens.Lens' ListPipelines (Prelude.Maybe Prelude.UTCTime)
+listPipelines_createdAfter = Lens.lens (\ListPipelines' {createdAfter} -> createdAfter) (\s@ListPipelines' {} a -> s {createdAfter = a} :: ListPipelines) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns the pipelines that were created before a specified
+-- time.
+listPipelines_createdBefore :: Lens.Lens' ListPipelines (Prelude.Maybe Prelude.UTCTime)
+listPipelines_createdBefore = Lens.lens (\ListPipelines' {createdBefore} -> createdBefore) (\s@ListPipelines' {} a -> s {createdBefore = a} :: ListPipelines) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of pipelines to return in the response.
+listPipelines_maxResults :: Lens.Lens' ListPipelines (Prelude.Maybe Prelude.Natural)
+listPipelines_maxResults = Lens.lens (\ListPipelines' {maxResults} -> maxResults) (\s@ListPipelines' {} a -> s {maxResults = a} :: ListPipelines)
+
+-- | If the result of the previous @ListPipelines@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of pipelines,
+-- use the token in the next request.
+listPipelines_nextToken :: Lens.Lens' ListPipelines (Prelude.Maybe Prelude.Text)
+listPipelines_nextToken = Lens.lens (\ListPipelines' {nextToken} -> nextToken) (\s@ListPipelines' {} a -> s {nextToken = a} :: ListPipelines)
+
+-- | The prefix of the pipeline name.
+listPipelines_pipelineNamePrefix :: Lens.Lens' ListPipelines (Prelude.Maybe Prelude.Text)
+listPipelines_pipelineNamePrefix = Lens.lens (\ListPipelines' {pipelineNamePrefix} -> pipelineNamePrefix) (\s@ListPipelines' {} a -> s {pipelineNamePrefix = a} :: ListPipelines)
+
+-- | The field by which to sort results. The default is @CreatedTime@.
+listPipelines_sortBy :: Lens.Lens' ListPipelines (Prelude.Maybe SortPipelinesBy)
+listPipelines_sortBy = Lens.lens (\ListPipelines' {sortBy} -> sortBy) (\s@ListPipelines' {} a -> s {sortBy = a} :: ListPipelines)
+
+-- | The sort order for results.
+listPipelines_sortOrder :: Lens.Lens' ListPipelines (Prelude.Maybe SortOrder)
+listPipelines_sortOrder = Lens.lens (\ListPipelines' {sortOrder} -> sortOrder) (\s@ListPipelines' {} a -> s {sortOrder = a} :: ListPipelines)
+
+instance Core.AWSPager ListPipelines where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPipelinesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPipelinesResponse_pipelineSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPipelines_nextToken
+          Lens..~ rs
+          Lens.^? listPipelinesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPipelines where
+  type
+    AWSResponse ListPipelines =
+      ListPipelinesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPipelinesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "PipelineSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPipelines where
+  hashWithSalt _salt ListPipelines' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` pipelineNamePrefix
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListPipelines where
+  rnf ListPipelines' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineNamePrefix
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListPipelines where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListPipelines" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListPipelines where
+  toJSON ListPipelines' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("PipelineNamePrefix" Data..=)
+              Prelude.<$> pipelineNamePrefix,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListPipelines where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListPipelines where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPipelinesResponse' smart constructor.
+data ListPipelinesResponse = ListPipelinesResponse'
+  { -- | If the result of the previous @ListPipelines@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of pipelines,
+    -- use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Contains a sorted list of @PipelineSummary@ objects matching the
+    -- specified filters. Each @PipelineSummary@ consists of PipelineArn,
+    -- PipelineName, ExperimentName, PipelineDescription, CreationTime,
+    -- LastModifiedTime, LastRunTime, and RoleArn. This list can be empty.
+    pipelineSummaries :: Prelude.Maybe [PipelineSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipelinesResponse' 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:
+--
+-- 'nextToken', 'listPipelinesResponse_nextToken' - If the result of the previous @ListPipelines@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of pipelines,
+-- use the token in the next request.
+--
+-- 'pipelineSummaries', 'listPipelinesResponse_pipelineSummaries' - Contains a sorted list of @PipelineSummary@ objects matching the
+-- specified filters. Each @PipelineSummary@ consists of PipelineArn,
+-- PipelineName, ExperimentName, PipelineDescription, CreationTime,
+-- LastModifiedTime, LastRunTime, and RoleArn. This list can be empty.
+--
+-- 'httpStatus', 'listPipelinesResponse_httpStatus' - The response's http status code.
+newListPipelinesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPipelinesResponse
+newListPipelinesResponse pHttpStatus_ =
+  ListPipelinesResponse'
+    { nextToken = Prelude.Nothing,
+      pipelineSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the result of the previous @ListPipelines@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of pipelines,
+-- use the token in the next request.
+listPipelinesResponse_nextToken :: Lens.Lens' ListPipelinesResponse (Prelude.Maybe Prelude.Text)
+listPipelinesResponse_nextToken = Lens.lens (\ListPipelinesResponse' {nextToken} -> nextToken) (\s@ListPipelinesResponse' {} a -> s {nextToken = a} :: ListPipelinesResponse)
+
+-- | Contains a sorted list of @PipelineSummary@ objects matching the
+-- specified filters. Each @PipelineSummary@ consists of PipelineArn,
+-- PipelineName, ExperimentName, PipelineDescription, CreationTime,
+-- LastModifiedTime, LastRunTime, and RoleArn. This list can be empty.
+listPipelinesResponse_pipelineSummaries :: Lens.Lens' ListPipelinesResponse (Prelude.Maybe [PipelineSummary])
+listPipelinesResponse_pipelineSummaries = Lens.lens (\ListPipelinesResponse' {pipelineSummaries} -> pipelineSummaries) (\s@ListPipelinesResponse' {} a -> s {pipelineSummaries = a} :: ListPipelinesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPipelinesResponse_httpStatus :: Lens.Lens' ListPipelinesResponse Prelude.Int
+listPipelinesResponse_httpStatus = Lens.lens (\ListPipelinesResponse' {httpStatus} -> httpStatus) (\s@ListPipelinesResponse' {} a -> s {httpStatus = a} :: ListPipelinesResponse)
+
+instance Prelude.NFData ListPipelinesResponse where
+  rnf ListPipelinesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipelineSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListProcessingJobs.hs b/gen/Amazonka/SageMaker/ListProcessingJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListProcessingJobs.hs
@@ -0,0 +1,361 @@
+{-# 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.ListProcessingJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists processing jobs that satisfy various filters.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListProcessingJobs
+  ( -- * Creating a Request
+    ListProcessingJobs (..),
+    newListProcessingJobs,
+
+    -- * Request Lenses
+    listProcessingJobs_creationTimeAfter,
+    listProcessingJobs_creationTimeBefore,
+    listProcessingJobs_lastModifiedTimeAfter,
+    listProcessingJobs_lastModifiedTimeBefore,
+    listProcessingJobs_maxResults,
+    listProcessingJobs_nameContains,
+    listProcessingJobs_nextToken,
+    listProcessingJobs_sortBy,
+    listProcessingJobs_sortOrder,
+    listProcessingJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListProcessingJobsResponse (..),
+    newListProcessingJobsResponse,
+
+    -- * Response Lenses
+    listProcessingJobsResponse_nextToken,
+    listProcessingJobsResponse_httpStatus,
+    listProcessingJobsResponse_processingJobSummaries,
+  )
+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:/ 'newListProcessingJobs' smart constructor.
+data ListProcessingJobs = ListProcessingJobs'
+  { -- | A filter that returns only processing jobs created after the specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only processing jobs created after the specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only processing jobs modified after the specified
+    -- time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only processing jobs modified before the specified
+    -- time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of processing jobs to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the processing job name. This filter returns only processing
+    -- jobs whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListProcessingJobs@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of processing jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe SortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only processing jobs with a specific status.
+    statusEquals :: Prelude.Maybe ProcessingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProcessingJobs' 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:
+--
+-- 'creationTimeAfter', 'listProcessingJobs_creationTimeAfter' - A filter that returns only processing jobs created after the specified
+-- time.
+--
+-- 'creationTimeBefore', 'listProcessingJobs_creationTimeBefore' - A filter that returns only processing jobs created after the specified
+-- time.
+--
+-- 'lastModifiedTimeAfter', 'listProcessingJobs_lastModifiedTimeAfter' - A filter that returns only processing jobs modified after the specified
+-- time.
+--
+-- 'lastModifiedTimeBefore', 'listProcessingJobs_lastModifiedTimeBefore' - A filter that returns only processing jobs modified before the specified
+-- time.
+--
+-- 'maxResults', 'listProcessingJobs_maxResults' - The maximum number of processing jobs to return in the response.
+--
+-- 'nameContains', 'listProcessingJobs_nameContains' - A string in the processing job name. This filter returns only processing
+-- jobs whose name contains the specified string.
+--
+-- 'nextToken', 'listProcessingJobs_nextToken' - If the result of the previous @ListProcessingJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of processing jobs, use the token in the next request.
+--
+-- 'sortBy', 'listProcessingJobs_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listProcessingJobs_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listProcessingJobs_statusEquals' - A filter that retrieves only processing jobs with a specific status.
+newListProcessingJobs ::
+  ListProcessingJobs
+newListProcessingJobs =
+  ListProcessingJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only processing jobs created after the specified
+-- time.
+listProcessingJobs_creationTimeAfter :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.UTCTime)
+listProcessingJobs_creationTimeAfter = Lens.lens (\ListProcessingJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListProcessingJobs' {} a -> s {creationTimeAfter = a} :: ListProcessingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only processing jobs created after the specified
+-- time.
+listProcessingJobs_creationTimeBefore :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.UTCTime)
+listProcessingJobs_creationTimeBefore = Lens.lens (\ListProcessingJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListProcessingJobs' {} a -> s {creationTimeBefore = a} :: ListProcessingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only processing jobs modified after the specified
+-- time.
+listProcessingJobs_lastModifiedTimeAfter :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.UTCTime)
+listProcessingJobs_lastModifiedTimeAfter = Lens.lens (\ListProcessingJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListProcessingJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListProcessingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only processing jobs modified before the specified
+-- time.
+listProcessingJobs_lastModifiedTimeBefore :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.UTCTime)
+listProcessingJobs_lastModifiedTimeBefore = Lens.lens (\ListProcessingJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListProcessingJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListProcessingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of processing jobs to return in the response.
+listProcessingJobs_maxResults :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.Natural)
+listProcessingJobs_maxResults = Lens.lens (\ListProcessingJobs' {maxResults} -> maxResults) (\s@ListProcessingJobs' {} a -> s {maxResults = a} :: ListProcessingJobs)
+
+-- | A string in the processing job name. This filter returns only processing
+-- jobs whose name contains the specified string.
+listProcessingJobs_nameContains :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.Text)
+listProcessingJobs_nameContains = Lens.lens (\ListProcessingJobs' {nameContains} -> nameContains) (\s@ListProcessingJobs' {} a -> s {nameContains = a} :: ListProcessingJobs)
+
+-- | If the result of the previous @ListProcessingJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of processing jobs, use the token in the next request.
+listProcessingJobs_nextToken :: Lens.Lens' ListProcessingJobs (Prelude.Maybe Prelude.Text)
+listProcessingJobs_nextToken = Lens.lens (\ListProcessingJobs' {nextToken} -> nextToken) (\s@ListProcessingJobs' {} a -> s {nextToken = a} :: ListProcessingJobs)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listProcessingJobs_sortBy :: Lens.Lens' ListProcessingJobs (Prelude.Maybe SortBy)
+listProcessingJobs_sortBy = Lens.lens (\ListProcessingJobs' {sortBy} -> sortBy) (\s@ListProcessingJobs' {} a -> s {sortBy = a} :: ListProcessingJobs)
+
+-- | The sort order for results. The default is @Ascending@.
+listProcessingJobs_sortOrder :: Lens.Lens' ListProcessingJobs (Prelude.Maybe SortOrder)
+listProcessingJobs_sortOrder = Lens.lens (\ListProcessingJobs' {sortOrder} -> sortOrder) (\s@ListProcessingJobs' {} a -> s {sortOrder = a} :: ListProcessingJobs)
+
+-- | A filter that retrieves only processing jobs with a specific status.
+listProcessingJobs_statusEquals :: Lens.Lens' ListProcessingJobs (Prelude.Maybe ProcessingJobStatus)
+listProcessingJobs_statusEquals = Lens.lens (\ListProcessingJobs' {statusEquals} -> statusEquals) (\s@ListProcessingJobs' {} a -> s {statusEquals = a} :: ListProcessingJobs)
+
+instance Core.AWSPager ListProcessingJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listProcessingJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listProcessingJobsResponse_processingJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listProcessingJobs_nextToken
+          Lens..~ rs
+          Lens.^? listProcessingJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListProcessingJobs where
+  type
+    AWSResponse ListProcessingJobs =
+      ListProcessingJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListProcessingJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ProcessingJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListProcessingJobs where
+  hashWithSalt _salt ListProcessingJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListProcessingJobs where
+  rnf ListProcessingJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListProcessingJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListProcessingJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListProcessingJobs where
+  toJSON ListProcessingJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListProcessingJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListProcessingJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListProcessingJobsResponse' smart constructor.
+data ListProcessingJobsResponse = ListProcessingJobsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of processing jobs, use it in the subsequent
+    -- request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @ProcessingJobSummary@ objects, each listing a processing
+    -- job.
+    processingJobSummaries :: [ProcessingJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProcessingJobsResponse' 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:
+--
+-- 'nextToken', 'listProcessingJobsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of processing jobs, use it in the subsequent
+-- request.
+--
+-- 'httpStatus', 'listProcessingJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'processingJobSummaries', 'listProcessingJobsResponse_processingJobSummaries' - An array of @ProcessingJobSummary@ objects, each listing a processing
+-- job.
+newListProcessingJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListProcessingJobsResponse
+newListProcessingJobsResponse pHttpStatus_ =
+  ListProcessingJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      processingJobSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of processing jobs, use it in the subsequent
+-- request.
+listProcessingJobsResponse_nextToken :: Lens.Lens' ListProcessingJobsResponse (Prelude.Maybe Prelude.Text)
+listProcessingJobsResponse_nextToken = Lens.lens (\ListProcessingJobsResponse' {nextToken} -> nextToken) (\s@ListProcessingJobsResponse' {} a -> s {nextToken = a} :: ListProcessingJobsResponse)
+
+-- | The response's http status code.
+listProcessingJobsResponse_httpStatus :: Lens.Lens' ListProcessingJobsResponse Prelude.Int
+listProcessingJobsResponse_httpStatus = Lens.lens (\ListProcessingJobsResponse' {httpStatus} -> httpStatus) (\s@ListProcessingJobsResponse' {} a -> s {httpStatus = a} :: ListProcessingJobsResponse)
+
+-- | An array of @ProcessingJobSummary@ objects, each listing a processing
+-- job.
+listProcessingJobsResponse_processingJobSummaries :: Lens.Lens' ListProcessingJobsResponse [ProcessingJobSummary]
+listProcessingJobsResponse_processingJobSummaries = Lens.lens (\ListProcessingJobsResponse' {processingJobSummaries} -> processingJobSummaries) (\s@ListProcessingJobsResponse' {} a -> s {processingJobSummaries = a} :: ListProcessingJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListProcessingJobsResponse where
+  rnf ListProcessingJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf processingJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListProjects.hs b/gen/Amazonka/SageMaker/ListProjects.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListProjects.hs
@@ -0,0 +1,282 @@
+{-# 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.ListProjects
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of the projects in an Amazon Web Services account.
+module Amazonka.SageMaker.ListProjects
+  ( -- * Creating a Request
+    ListProjects (..),
+    newListProjects,
+
+    -- * Request Lenses
+    listProjects_creationTimeAfter,
+    listProjects_creationTimeBefore,
+    listProjects_maxResults,
+    listProjects_nameContains,
+    listProjects_nextToken,
+    listProjects_sortBy,
+    listProjects_sortOrder,
+
+    -- * Destructuring the Response
+    ListProjectsResponse (..),
+    newListProjectsResponse,
+
+    -- * Response Lenses
+    listProjectsResponse_nextToken,
+    listProjectsResponse_httpStatus,
+    listProjectsResponse_projectSummaryList,
+  )
+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:/ 'newListProjects' smart constructor.
+data ListProjects = ListProjects'
+  { -- | A filter that returns the projects that were created after a specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns the projects that were created before a specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of projects to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter that returns the projects whose name contains a specified
+    -- string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListProjects@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of projects,
+    -- use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field by which to sort results. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe ProjectSortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe ProjectSortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProjects' 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:
+--
+-- 'creationTimeAfter', 'listProjects_creationTimeAfter' - A filter that returns the projects that were created after a specified
+-- time.
+--
+-- 'creationTimeBefore', 'listProjects_creationTimeBefore' - A filter that returns the projects that were created before a specified
+-- time.
+--
+-- 'maxResults', 'listProjects_maxResults' - The maximum number of projects to return in the response.
+--
+-- 'nameContains', 'listProjects_nameContains' - A filter that returns the projects whose name contains a specified
+-- string.
+--
+-- 'nextToken', 'listProjects_nextToken' - If the result of the previous @ListProjects@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of projects,
+-- use the token in the next request.
+--
+-- 'sortBy', 'listProjects_sortBy' - The field by which to sort results. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listProjects_sortOrder' - The sort order for results. The default is @Ascending@.
+newListProjects ::
+  ListProjects
+newListProjects =
+  ListProjects'
+    { creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A filter that returns the projects that were created after a specified
+-- time.
+listProjects_creationTimeAfter :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.UTCTime)
+listProjects_creationTimeAfter = Lens.lens (\ListProjects' {creationTimeAfter} -> creationTimeAfter) (\s@ListProjects' {} a -> s {creationTimeAfter = a} :: ListProjects) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns the projects that were created before a specified
+-- time.
+listProjects_creationTimeBefore :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.UTCTime)
+listProjects_creationTimeBefore = Lens.lens (\ListProjects' {creationTimeBefore} -> creationTimeBefore) (\s@ListProjects' {} a -> s {creationTimeBefore = a} :: ListProjects) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of projects to return in the response.
+listProjects_maxResults :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Natural)
+listProjects_maxResults = Lens.lens (\ListProjects' {maxResults} -> maxResults) (\s@ListProjects' {} a -> s {maxResults = a} :: ListProjects)
+
+-- | A filter that returns the projects whose name contains a specified
+-- string.
+listProjects_nameContains :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Text)
+listProjects_nameContains = Lens.lens (\ListProjects' {nameContains} -> nameContains) (\s@ListProjects' {} a -> s {nameContains = a} :: ListProjects)
+
+-- | If the result of the previous @ListProjects@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of projects,
+-- use the token in the next request.
+listProjects_nextToken :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Text)
+listProjects_nextToken = Lens.lens (\ListProjects' {nextToken} -> nextToken) (\s@ListProjects' {} a -> s {nextToken = a} :: ListProjects)
+
+-- | The field by which to sort results. The default is @CreationTime@.
+listProjects_sortBy :: Lens.Lens' ListProjects (Prelude.Maybe ProjectSortBy)
+listProjects_sortBy = Lens.lens (\ListProjects' {sortBy} -> sortBy) (\s@ListProjects' {} a -> s {sortBy = a} :: ListProjects)
+
+-- | The sort order for results. The default is @Ascending@.
+listProjects_sortOrder :: Lens.Lens' ListProjects (Prelude.Maybe ProjectSortOrder)
+listProjects_sortOrder = Lens.lens (\ListProjects' {sortOrder} -> sortOrder) (\s@ListProjects' {} a -> s {sortOrder = a} :: ListProjects)
+
+instance Core.AWSRequest ListProjects where
+  type AWSResponse ListProjects = ListProjectsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListProjectsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ProjectSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListProjects where
+  hashWithSalt _salt ListProjects' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListProjects where
+  rnf ListProjects' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListProjects where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListProjects" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListProjects where
+  toJSON ListProjects' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListProjects where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListProjects where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListProjectsResponse' smart constructor.
+data ListProjectsResponse = ListProjectsResponse'
+  { -- | If the result of the previous @ListCompilationJobs@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of model compilation jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of summaries of projects.
+    projectSummaryList :: [ProjectSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProjectsResponse' 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:
+--
+-- 'nextToken', 'listProjectsResponse_nextToken' - If the result of the previous @ListCompilationJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model compilation jobs, use the token in the next request.
+--
+-- 'httpStatus', 'listProjectsResponse_httpStatus' - The response's http status code.
+--
+-- 'projectSummaryList', 'listProjectsResponse_projectSummaryList' - A list of summaries of projects.
+newListProjectsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListProjectsResponse
+newListProjectsResponse pHttpStatus_ =
+  ListProjectsResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      projectSummaryList = Prelude.mempty
+    }
+
+-- | If the result of the previous @ListCompilationJobs@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of model compilation jobs, use the token in the next request.
+listProjectsResponse_nextToken :: Lens.Lens' ListProjectsResponse (Prelude.Maybe Prelude.Text)
+listProjectsResponse_nextToken = Lens.lens (\ListProjectsResponse' {nextToken} -> nextToken) (\s@ListProjectsResponse' {} a -> s {nextToken = a} :: ListProjectsResponse)
+
+-- | The response's http status code.
+listProjectsResponse_httpStatus :: Lens.Lens' ListProjectsResponse Prelude.Int
+listProjectsResponse_httpStatus = Lens.lens (\ListProjectsResponse' {httpStatus} -> httpStatus) (\s@ListProjectsResponse' {} a -> s {httpStatus = a} :: ListProjectsResponse)
+
+-- | A list of summaries of projects.
+listProjectsResponse_projectSummaryList :: Lens.Lens' ListProjectsResponse [ProjectSummary]
+listProjectsResponse_projectSummaryList = Lens.lens (\ListProjectsResponse' {projectSummaryList} -> projectSummaryList) (\s@ListProjectsResponse' {} a -> s {projectSummaryList = a} :: ListProjectsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListProjectsResponse where
+  rnf ListProjectsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf projectSummaryList
diff --git a/gen/Amazonka/SageMaker/ListSpaces.hs b/gen/Amazonka/SageMaker/ListSpaces.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListSpaces.hs
@@ -0,0 +1,278 @@
+{-# 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.ListSpaces
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists spaces.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListSpaces
+  ( -- * Creating a Request
+    ListSpaces (..),
+    newListSpaces,
+
+    -- * Request Lenses
+    listSpaces_domainIdEquals,
+    listSpaces_maxResults,
+    listSpaces_nextToken,
+    listSpaces_sortBy,
+    listSpaces_sortOrder,
+    listSpaces_spaceNameContains,
+
+    -- * Destructuring the Response
+    ListSpacesResponse (..),
+    newListSpacesResponse,
+
+    -- * Response Lenses
+    listSpacesResponse_nextToken,
+    listSpacesResponse_spaces,
+    listSpacesResponse_httpStatus,
+  )
+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:/ 'newListSpaces' smart constructor.
+data ListSpaces = ListSpaces'
+  { -- | A parameter to search for the Domain ID.
+    domainIdEquals :: Prelude.Maybe Prelude.Text,
+    -- | Returns a list up to a specified limit.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is
+    -- @CreationTime@.
+    sortBy :: Prelude.Maybe SpaceSortKey,
+    -- | The sort order for the results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A parameter by which to filter the results.
+    spaceNameContains :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSpaces' 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:
+--
+-- 'domainIdEquals', 'listSpaces_domainIdEquals' - A parameter to search for the Domain ID.
+--
+-- 'maxResults', 'listSpaces_maxResults' - Returns a list up to a specified limit.
+--
+-- 'nextToken', 'listSpaces_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'sortBy', 'listSpaces_sortBy' - The parameter by which to sort the results. The default is
+-- @CreationTime@.
+--
+-- 'sortOrder', 'listSpaces_sortOrder' - The sort order for the results. The default is @Ascending@.
+--
+-- 'spaceNameContains', 'listSpaces_spaceNameContains' - A parameter by which to filter the results.
+newListSpaces ::
+  ListSpaces
+newListSpaces =
+  ListSpaces'
+    { domainIdEquals = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      spaceNameContains = Prelude.Nothing
+    }
+
+-- | A parameter to search for the Domain ID.
+listSpaces_domainIdEquals :: Lens.Lens' ListSpaces (Prelude.Maybe Prelude.Text)
+listSpaces_domainIdEquals = Lens.lens (\ListSpaces' {domainIdEquals} -> domainIdEquals) (\s@ListSpaces' {} a -> s {domainIdEquals = a} :: ListSpaces)
+
+-- | Returns a list up to a specified limit.
+listSpaces_maxResults :: Lens.Lens' ListSpaces (Prelude.Maybe Prelude.Natural)
+listSpaces_maxResults = Lens.lens (\ListSpaces' {maxResults} -> maxResults) (\s@ListSpaces' {} a -> s {maxResults = a} :: ListSpaces)
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listSpaces_nextToken :: Lens.Lens' ListSpaces (Prelude.Maybe Prelude.Text)
+listSpaces_nextToken = Lens.lens (\ListSpaces' {nextToken} -> nextToken) (\s@ListSpaces' {} a -> s {nextToken = a} :: ListSpaces)
+
+-- | The parameter by which to sort the results. The default is
+-- @CreationTime@.
+listSpaces_sortBy :: Lens.Lens' ListSpaces (Prelude.Maybe SpaceSortKey)
+listSpaces_sortBy = Lens.lens (\ListSpaces' {sortBy} -> sortBy) (\s@ListSpaces' {} a -> s {sortBy = a} :: ListSpaces)
+
+-- | The sort order for the results. The default is @Ascending@.
+listSpaces_sortOrder :: Lens.Lens' ListSpaces (Prelude.Maybe SortOrder)
+listSpaces_sortOrder = Lens.lens (\ListSpaces' {sortOrder} -> sortOrder) (\s@ListSpaces' {} a -> s {sortOrder = a} :: ListSpaces)
+
+-- | A parameter by which to filter the results.
+listSpaces_spaceNameContains :: Lens.Lens' ListSpaces (Prelude.Maybe Prelude.Text)
+listSpaces_spaceNameContains = Lens.lens (\ListSpaces' {spaceNameContains} -> spaceNameContains) (\s@ListSpaces' {} a -> s {spaceNameContains = a} :: ListSpaces)
+
+instance Core.AWSPager ListSpaces where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSpacesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listSpacesResponse_spaces
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSpaces_nextToken
+          Lens..~ rs
+          Lens.^? listSpacesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListSpaces where
+  type AWSResponse ListSpaces = ListSpacesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSpacesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Spaces" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSpaces where
+  hashWithSalt _salt ListSpaces' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainIdEquals
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` spaceNameContains
+
+instance Prelude.NFData ListSpaces where
+  rnf ListSpaces' {..} =
+    Prelude.rnf domainIdEquals
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf spaceNameContains
+
+instance Data.ToHeaders ListSpaces where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListSpaces" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListSpaces where
+  toJSON ListSpaces' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DomainIdEquals" Data..=)
+              Prelude.<$> domainIdEquals,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SpaceNameContains" Data..=)
+              Prelude.<$> spaceNameContains
+          ]
+      )
+
+instance Data.ToPath ListSpaces where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListSpaces where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListSpacesResponse' smart constructor.
+data ListSpacesResponse = ListSpacesResponse'
+  { -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of spaces.
+    spaces :: Prelude.Maybe [SpaceDetails],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSpacesResponse' 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:
+--
+-- 'nextToken', 'listSpacesResponse_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'spaces', 'listSpacesResponse_spaces' - The list of spaces.
+--
+-- 'httpStatus', 'listSpacesResponse_httpStatus' - The response's http status code.
+newListSpacesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSpacesResponse
+newListSpacesResponse pHttpStatus_ =
+  ListSpacesResponse'
+    { nextToken = Prelude.Nothing,
+      spaces = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listSpacesResponse_nextToken :: Lens.Lens' ListSpacesResponse (Prelude.Maybe Prelude.Text)
+listSpacesResponse_nextToken = Lens.lens (\ListSpacesResponse' {nextToken} -> nextToken) (\s@ListSpacesResponse' {} a -> s {nextToken = a} :: ListSpacesResponse)
+
+-- | The list of spaces.
+listSpacesResponse_spaces :: Lens.Lens' ListSpacesResponse (Prelude.Maybe [SpaceDetails])
+listSpacesResponse_spaces = Lens.lens (\ListSpacesResponse' {spaces} -> spaces) (\s@ListSpacesResponse' {} a -> s {spaces = a} :: ListSpacesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSpacesResponse_httpStatus :: Lens.Lens' ListSpacesResponse Prelude.Int
+listSpacesResponse_httpStatus = Lens.lens (\ListSpacesResponse' {httpStatus} -> httpStatus) (\s@ListSpacesResponse' {} a -> s {httpStatus = a} :: ListSpacesResponse)
+
+instance Prelude.NFData ListSpacesResponse where
+  rnf ListSpacesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf spaces
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListStageDevices.hs b/gen/Amazonka/SageMaker/ListStageDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListStageDevices.hs
@@ -0,0 +1,274 @@
+{-# 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.ListStageDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists devices allocated to the stage, containing detailed device
+-- information and deployment status.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListStageDevices
+  ( -- * Creating a Request
+    ListStageDevices (..),
+    newListStageDevices,
+
+    -- * Request Lenses
+    listStageDevices_excludeDevicesDeployedInOtherStage,
+    listStageDevices_maxResults,
+    listStageDevices_nextToken,
+    listStageDevices_edgeDeploymentPlanName,
+    listStageDevices_stageName,
+
+    -- * Destructuring the Response
+    ListStageDevicesResponse (..),
+    newListStageDevicesResponse,
+
+    -- * Response Lenses
+    listStageDevicesResponse_nextToken,
+    listStageDevicesResponse_httpStatus,
+    listStageDevicesResponse_deviceDeploymentSummaries,
+  )
+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:/ 'newListStageDevices' smart constructor.
+data ListStageDevices = ListStageDevices'
+  { -- | Toggle for excluding devices deployed in other stages.
+    excludeDevicesDeployedInOtherStage :: Prelude.Maybe Prelude.Bool,
+    -- | The maximum number of requests to select.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | The response from the last list when returning a list large enough to
+    -- neeed tokening.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the edge deployment plan.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | The name of the stage in the deployment.
+    stageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListStageDevices' 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:
+--
+-- 'excludeDevicesDeployedInOtherStage', 'listStageDevices_excludeDevicesDeployedInOtherStage' - Toggle for excluding devices deployed in other stages.
+--
+-- 'maxResults', 'listStageDevices_maxResults' - The maximum number of requests to select.
+--
+-- 'nextToken', 'listStageDevices_nextToken' - The response from the last list when returning a list large enough to
+-- neeed tokening.
+--
+-- 'edgeDeploymentPlanName', 'listStageDevices_edgeDeploymentPlanName' - The name of the edge deployment plan.
+--
+-- 'stageName', 'listStageDevices_stageName' - The name of the stage in the deployment.
+newListStageDevices ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'stageName'
+  Prelude.Text ->
+  ListStageDevices
+newListStageDevices
+  pEdgeDeploymentPlanName_
+  pStageName_ =
+    ListStageDevices'
+      { excludeDevicesDeployedInOtherStage =
+          Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        edgeDeploymentPlanName = pEdgeDeploymentPlanName_,
+        stageName = pStageName_
+      }
+
+-- | Toggle for excluding devices deployed in other stages.
+listStageDevices_excludeDevicesDeployedInOtherStage :: Lens.Lens' ListStageDevices (Prelude.Maybe Prelude.Bool)
+listStageDevices_excludeDevicesDeployedInOtherStage = Lens.lens (\ListStageDevices' {excludeDevicesDeployedInOtherStage} -> excludeDevicesDeployedInOtherStage) (\s@ListStageDevices' {} a -> s {excludeDevicesDeployedInOtherStage = a} :: ListStageDevices)
+
+-- | The maximum number of requests to select.
+listStageDevices_maxResults :: Lens.Lens' ListStageDevices (Prelude.Maybe Prelude.Int)
+listStageDevices_maxResults = Lens.lens (\ListStageDevices' {maxResults} -> maxResults) (\s@ListStageDevices' {} a -> s {maxResults = a} :: ListStageDevices)
+
+-- | The response from the last list when returning a list large enough to
+-- neeed tokening.
+listStageDevices_nextToken :: Lens.Lens' ListStageDevices (Prelude.Maybe Prelude.Text)
+listStageDevices_nextToken = Lens.lens (\ListStageDevices' {nextToken} -> nextToken) (\s@ListStageDevices' {} a -> s {nextToken = a} :: ListStageDevices)
+
+-- | The name of the edge deployment plan.
+listStageDevices_edgeDeploymentPlanName :: Lens.Lens' ListStageDevices Prelude.Text
+listStageDevices_edgeDeploymentPlanName = Lens.lens (\ListStageDevices' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@ListStageDevices' {} a -> s {edgeDeploymentPlanName = a} :: ListStageDevices)
+
+-- | The name of the stage in the deployment.
+listStageDevices_stageName :: Lens.Lens' ListStageDevices Prelude.Text
+listStageDevices_stageName = Lens.lens (\ListStageDevices' {stageName} -> stageName) (\s@ListStageDevices' {} a -> s {stageName = a} :: ListStageDevices)
+
+instance Core.AWSPager ListStageDevices where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listStageDevicesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listStageDevicesResponse_deviceDeploymentSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listStageDevices_nextToken
+          Lens..~ rs
+          Lens.^? listStageDevicesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListStageDevices where
+  type
+    AWSResponse ListStageDevices =
+      ListStageDevicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListStageDevicesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "DeviceDeploymentSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListStageDevices where
+  hashWithSalt _salt ListStageDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` excludeDevicesDeployedInOtherStage
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` stageName
+
+instance Prelude.NFData ListStageDevices where
+  rnf ListStageDevices' {..} =
+    Prelude.rnf excludeDevicesDeployedInOtherStage
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf stageName
+
+instance Data.ToHeaders ListStageDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListStageDevices" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListStageDevices where
+  toJSON ListStageDevices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExcludeDevicesDeployedInOtherStage" Data..=)
+              Prelude.<$> excludeDevicesDeployedInOtherStage,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              ),
+            Prelude.Just ("StageName" Data..= stageName)
+          ]
+      )
+
+instance Data.ToPath ListStageDevices where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListStageDevices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListStageDevicesResponse' smart constructor.
+data ListStageDevicesResponse = ListStageDevicesResponse'
+  { -- | The token to use when calling the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | List of summaries of devices allocated to the stage.
+    deviceDeploymentSummaries :: [DeviceDeploymentSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListStageDevicesResponse' 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:
+--
+-- 'nextToken', 'listStageDevicesResponse_nextToken' - The token to use when calling the next page of results.
+--
+-- 'httpStatus', 'listStageDevicesResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceDeploymentSummaries', 'listStageDevicesResponse_deviceDeploymentSummaries' - List of summaries of devices allocated to the stage.
+newListStageDevicesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListStageDevicesResponse
+newListStageDevicesResponse pHttpStatus_ =
+  ListStageDevicesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      deviceDeploymentSummaries = Prelude.mempty
+    }
+
+-- | The token to use when calling the next page of results.
+listStageDevicesResponse_nextToken :: Lens.Lens' ListStageDevicesResponse (Prelude.Maybe Prelude.Text)
+listStageDevicesResponse_nextToken = Lens.lens (\ListStageDevicesResponse' {nextToken} -> nextToken) (\s@ListStageDevicesResponse' {} a -> s {nextToken = a} :: ListStageDevicesResponse)
+
+-- | The response's http status code.
+listStageDevicesResponse_httpStatus :: Lens.Lens' ListStageDevicesResponse Prelude.Int
+listStageDevicesResponse_httpStatus = Lens.lens (\ListStageDevicesResponse' {httpStatus} -> httpStatus) (\s@ListStageDevicesResponse' {} a -> s {httpStatus = a} :: ListStageDevicesResponse)
+
+-- | List of summaries of devices allocated to the stage.
+listStageDevicesResponse_deviceDeploymentSummaries :: Lens.Lens' ListStageDevicesResponse [DeviceDeploymentSummary]
+listStageDevicesResponse_deviceDeploymentSummaries = Lens.lens (\ListStageDevicesResponse' {deviceDeploymentSummaries} -> deviceDeploymentSummaries) (\s@ListStageDevicesResponse' {} a -> s {deviceDeploymentSummaries = a} :: ListStageDevicesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListStageDevicesResponse where
+  rnf ListStageDevicesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceDeploymentSummaries
diff --git a/gen/Amazonka/SageMaker/ListStudioLifecycleConfigs.hs b/gen/Amazonka/SageMaker/ListStudioLifecycleConfigs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListStudioLifecycleConfigs.hs
@@ -0,0 +1,364 @@
+{-# 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.ListStudioLifecycleConfigs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the Studio Lifecycle Configurations in your Amazon Web Services
+-- Account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListStudioLifecycleConfigs
+  ( -- * Creating a Request
+    ListStudioLifecycleConfigs (..),
+    newListStudioLifecycleConfigs,
+
+    -- * Request Lenses
+    listStudioLifecycleConfigs_appTypeEquals,
+    listStudioLifecycleConfigs_creationTimeAfter,
+    listStudioLifecycleConfigs_creationTimeBefore,
+    listStudioLifecycleConfigs_maxResults,
+    listStudioLifecycleConfigs_modifiedTimeAfter,
+    listStudioLifecycleConfigs_modifiedTimeBefore,
+    listStudioLifecycleConfigs_nameContains,
+    listStudioLifecycleConfigs_nextToken,
+    listStudioLifecycleConfigs_sortBy,
+    listStudioLifecycleConfigs_sortOrder,
+
+    -- * Destructuring the Response
+    ListStudioLifecycleConfigsResponse (..),
+    newListStudioLifecycleConfigsResponse,
+
+    -- * Response Lenses
+    listStudioLifecycleConfigsResponse_nextToken,
+    listStudioLifecycleConfigsResponse_studioLifecycleConfigs,
+    listStudioLifecycleConfigsResponse_httpStatus,
+  )
+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:/ 'newListStudioLifecycleConfigs' smart constructor.
+data ListStudioLifecycleConfigs = ListStudioLifecycleConfigs'
+  { -- | A parameter to search for the App Type to which the Lifecycle
+    -- Configuration is attached.
+    appTypeEquals :: Prelude.Maybe StudioLifecycleConfigAppType,
+    -- | A filter that returns only Lifecycle Configurations created on or after
+    -- the specified time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only Lifecycle Configurations created on or before
+    -- the specified time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of Studio Lifecycle Configurations to return in the
+    -- response. The default value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter that returns only Lifecycle Configurations modified after the
+    -- specified time.
+    modifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only Lifecycle Configurations modified before the
+    -- specified time.
+    modifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A string in the Lifecycle Configuration name. This filter returns only
+    -- Lifecycle Configurations whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the previous call to ListStudioLifecycleConfigs didn\'t return the
+    -- full set of Lifecycle Configurations, the call returns a token for
+    -- getting the next set of Lifecycle Configurations.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is CreationTime.
+    sortBy :: Prelude.Maybe StudioLifecycleConfigSortKey,
+    -- | The sort order. The default value is Descending.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListStudioLifecycleConfigs' 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:
+--
+-- 'appTypeEquals', 'listStudioLifecycleConfigs_appTypeEquals' - A parameter to search for the App Type to which the Lifecycle
+-- Configuration is attached.
+--
+-- 'creationTimeAfter', 'listStudioLifecycleConfigs_creationTimeAfter' - A filter that returns only Lifecycle Configurations created on or after
+-- the specified time.
+--
+-- 'creationTimeBefore', 'listStudioLifecycleConfigs_creationTimeBefore' - A filter that returns only Lifecycle Configurations created on or before
+-- the specified time.
+--
+-- 'maxResults', 'listStudioLifecycleConfigs_maxResults' - The maximum number of Studio Lifecycle Configurations to return in the
+-- response. The default value is 10.
+--
+-- 'modifiedTimeAfter', 'listStudioLifecycleConfigs_modifiedTimeAfter' - A filter that returns only Lifecycle Configurations modified after the
+-- specified time.
+--
+-- 'modifiedTimeBefore', 'listStudioLifecycleConfigs_modifiedTimeBefore' - A filter that returns only Lifecycle Configurations modified before the
+-- specified time.
+--
+-- 'nameContains', 'listStudioLifecycleConfigs_nameContains' - A string in the Lifecycle Configuration name. This filter returns only
+-- Lifecycle Configurations whose name contains the specified string.
+--
+-- 'nextToken', 'listStudioLifecycleConfigs_nextToken' - If the previous call to ListStudioLifecycleConfigs didn\'t return the
+-- full set of Lifecycle Configurations, the call returns a token for
+-- getting the next set of Lifecycle Configurations.
+--
+-- 'sortBy', 'listStudioLifecycleConfigs_sortBy' - The property used to sort results. The default value is CreationTime.
+--
+-- 'sortOrder', 'listStudioLifecycleConfigs_sortOrder' - The sort order. The default value is Descending.
+newListStudioLifecycleConfigs ::
+  ListStudioLifecycleConfigs
+newListStudioLifecycleConfigs =
+  ListStudioLifecycleConfigs'
+    { appTypeEquals =
+        Prelude.Nothing,
+      creationTimeAfter = Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modifiedTimeAfter = Prelude.Nothing,
+      modifiedTimeBefore = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | A parameter to search for the App Type to which the Lifecycle
+-- Configuration is attached.
+listStudioLifecycleConfigs_appTypeEquals :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe StudioLifecycleConfigAppType)
+listStudioLifecycleConfigs_appTypeEquals = Lens.lens (\ListStudioLifecycleConfigs' {appTypeEquals} -> appTypeEquals) (\s@ListStudioLifecycleConfigs' {} a -> s {appTypeEquals = a} :: ListStudioLifecycleConfigs)
+
+-- | A filter that returns only Lifecycle Configurations created on or after
+-- the specified time.
+listStudioLifecycleConfigs_creationTimeAfter :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listStudioLifecycleConfigs_creationTimeAfter = Lens.lens (\ListStudioLifecycleConfigs' {creationTimeAfter} -> creationTimeAfter) (\s@ListStudioLifecycleConfigs' {} a -> s {creationTimeAfter = a} :: ListStudioLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only Lifecycle Configurations created on or before
+-- the specified time.
+listStudioLifecycleConfigs_creationTimeBefore :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listStudioLifecycleConfigs_creationTimeBefore = Lens.lens (\ListStudioLifecycleConfigs' {creationTimeBefore} -> creationTimeBefore) (\s@ListStudioLifecycleConfigs' {} a -> s {creationTimeBefore = a} :: ListStudioLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of Studio Lifecycle Configurations to return in the
+-- response. The default value is 10.
+listStudioLifecycleConfigs_maxResults :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.Natural)
+listStudioLifecycleConfigs_maxResults = Lens.lens (\ListStudioLifecycleConfigs' {maxResults} -> maxResults) (\s@ListStudioLifecycleConfigs' {} a -> s {maxResults = a} :: ListStudioLifecycleConfigs)
+
+-- | A filter that returns only Lifecycle Configurations modified after the
+-- specified time.
+listStudioLifecycleConfigs_modifiedTimeAfter :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listStudioLifecycleConfigs_modifiedTimeAfter = Lens.lens (\ListStudioLifecycleConfigs' {modifiedTimeAfter} -> modifiedTimeAfter) (\s@ListStudioLifecycleConfigs' {} a -> s {modifiedTimeAfter = a} :: ListStudioLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only Lifecycle Configurations modified before the
+-- specified time.
+listStudioLifecycleConfigs_modifiedTimeBefore :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.UTCTime)
+listStudioLifecycleConfigs_modifiedTimeBefore = Lens.lens (\ListStudioLifecycleConfigs' {modifiedTimeBefore} -> modifiedTimeBefore) (\s@ListStudioLifecycleConfigs' {} a -> s {modifiedTimeBefore = a} :: ListStudioLifecycleConfigs) Prelude.. Lens.mapping Data._Time
+
+-- | A string in the Lifecycle Configuration name. This filter returns only
+-- Lifecycle Configurations whose name contains the specified string.
+listStudioLifecycleConfigs_nameContains :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.Text)
+listStudioLifecycleConfigs_nameContains = Lens.lens (\ListStudioLifecycleConfigs' {nameContains} -> nameContains) (\s@ListStudioLifecycleConfigs' {} a -> s {nameContains = a} :: ListStudioLifecycleConfigs)
+
+-- | If the previous call to ListStudioLifecycleConfigs didn\'t return the
+-- full set of Lifecycle Configurations, the call returns a token for
+-- getting the next set of Lifecycle Configurations.
+listStudioLifecycleConfigs_nextToken :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe Prelude.Text)
+listStudioLifecycleConfigs_nextToken = Lens.lens (\ListStudioLifecycleConfigs' {nextToken} -> nextToken) (\s@ListStudioLifecycleConfigs' {} a -> s {nextToken = a} :: ListStudioLifecycleConfigs)
+
+-- | The property used to sort results. The default value is CreationTime.
+listStudioLifecycleConfigs_sortBy :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe StudioLifecycleConfigSortKey)
+listStudioLifecycleConfigs_sortBy = Lens.lens (\ListStudioLifecycleConfigs' {sortBy} -> sortBy) (\s@ListStudioLifecycleConfigs' {} a -> s {sortBy = a} :: ListStudioLifecycleConfigs)
+
+-- | The sort order. The default value is Descending.
+listStudioLifecycleConfigs_sortOrder :: Lens.Lens' ListStudioLifecycleConfigs (Prelude.Maybe SortOrder)
+listStudioLifecycleConfigs_sortOrder = Lens.lens (\ListStudioLifecycleConfigs' {sortOrder} -> sortOrder) (\s@ListStudioLifecycleConfigs' {} a -> s {sortOrder = a} :: ListStudioLifecycleConfigs)
+
+instance Core.AWSPager ListStudioLifecycleConfigs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listStudioLifecycleConfigsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listStudioLifecycleConfigsResponse_studioLifecycleConfigs
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listStudioLifecycleConfigs_nextToken
+          Lens..~ rs
+          Lens.^? listStudioLifecycleConfigsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListStudioLifecycleConfigs where
+  type
+    AWSResponse ListStudioLifecycleConfigs =
+      ListStudioLifecycleConfigsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListStudioLifecycleConfigsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "StudioLifecycleConfigs"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListStudioLifecycleConfigs where
+  hashWithSalt _salt ListStudioLifecycleConfigs' {..} =
+    _salt
+      `Prelude.hashWithSalt` appTypeEquals
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modifiedTimeAfter
+      `Prelude.hashWithSalt` modifiedTimeBefore
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListStudioLifecycleConfigs where
+  rnf ListStudioLifecycleConfigs' {..} =
+    Prelude.rnf appTypeEquals
+      `Prelude.seq` Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modifiedTimeAfter
+      `Prelude.seq` Prelude.rnf modifiedTimeBefore
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListStudioLifecycleConfigs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListStudioLifecycleConfigs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListStudioLifecycleConfigs where
+  toJSON ListStudioLifecycleConfigs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AppTypeEquals" Data..=) Prelude.<$> appTypeEquals,
+            ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModifiedTimeAfter" Data..=)
+              Prelude.<$> modifiedTimeAfter,
+            ("ModifiedTimeBefore" Data..=)
+              Prelude.<$> modifiedTimeBefore,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListStudioLifecycleConfigs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListStudioLifecycleConfigs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListStudioLifecycleConfigsResponse' smart constructor.
+data ListStudioLifecycleConfigsResponse = ListStudioLifecycleConfigsResponse'
+  { -- | A token for getting the next set of actions, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of Lifecycle Configurations and their properties.
+    studioLifecycleConfigs :: Prelude.Maybe [StudioLifecycleConfigDetails],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListStudioLifecycleConfigsResponse' 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:
+--
+-- 'nextToken', 'listStudioLifecycleConfigsResponse_nextToken' - A token for getting the next set of actions, if there are any.
+--
+-- 'studioLifecycleConfigs', 'listStudioLifecycleConfigsResponse_studioLifecycleConfigs' - A list of Lifecycle Configurations and their properties.
+--
+-- 'httpStatus', 'listStudioLifecycleConfigsResponse_httpStatus' - The response's http status code.
+newListStudioLifecycleConfigsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListStudioLifecycleConfigsResponse
+newListStudioLifecycleConfigsResponse pHttpStatus_ =
+  ListStudioLifecycleConfigsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      studioLifecycleConfigs =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A token for getting the next set of actions, if there are any.
+listStudioLifecycleConfigsResponse_nextToken :: Lens.Lens' ListStudioLifecycleConfigsResponse (Prelude.Maybe Prelude.Text)
+listStudioLifecycleConfigsResponse_nextToken = Lens.lens (\ListStudioLifecycleConfigsResponse' {nextToken} -> nextToken) (\s@ListStudioLifecycleConfigsResponse' {} a -> s {nextToken = a} :: ListStudioLifecycleConfigsResponse)
+
+-- | A list of Lifecycle Configurations and their properties.
+listStudioLifecycleConfigsResponse_studioLifecycleConfigs :: Lens.Lens' ListStudioLifecycleConfigsResponse (Prelude.Maybe [StudioLifecycleConfigDetails])
+listStudioLifecycleConfigsResponse_studioLifecycleConfigs = Lens.lens (\ListStudioLifecycleConfigsResponse' {studioLifecycleConfigs} -> studioLifecycleConfigs) (\s@ListStudioLifecycleConfigsResponse' {} a -> s {studioLifecycleConfigs = a} :: ListStudioLifecycleConfigsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listStudioLifecycleConfigsResponse_httpStatus :: Lens.Lens' ListStudioLifecycleConfigsResponse Prelude.Int
+listStudioLifecycleConfigsResponse_httpStatus = Lens.lens (\ListStudioLifecycleConfigsResponse' {httpStatus} -> httpStatus) (\s@ListStudioLifecycleConfigsResponse' {} a -> s {httpStatus = a} :: ListStudioLifecycleConfigsResponse)
+
+instance
+  Prelude.NFData
+    ListStudioLifecycleConfigsResponse
+  where
+  rnf ListStudioLifecycleConfigsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigs
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListSubscribedWorkteams.hs b/gen/Amazonka/SageMaker/ListSubscribedWorkteams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListSubscribedWorkteams.hs
@@ -0,0 +1,253 @@
+{-# 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.ListSubscribedWorkteams
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of the work teams that you are subscribed to in the Amazon
+-- Web Services Marketplace. The list may be empty if no work team
+-- satisfies the filter specified in the @NameContains@ parameter.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListSubscribedWorkteams
+  ( -- * Creating a Request
+    ListSubscribedWorkteams (..),
+    newListSubscribedWorkteams,
+
+    -- * Request Lenses
+    listSubscribedWorkteams_maxResults,
+    listSubscribedWorkteams_nameContains,
+    listSubscribedWorkteams_nextToken,
+
+    -- * Destructuring the Response
+    ListSubscribedWorkteamsResponse (..),
+    newListSubscribedWorkteamsResponse,
+
+    -- * Response Lenses
+    listSubscribedWorkteamsResponse_nextToken,
+    listSubscribedWorkteamsResponse_httpStatus,
+    listSubscribedWorkteamsResponse_subscribedWorkteams,
+  )
+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:/ 'newListSubscribedWorkteams' smart constructor.
+data ListSubscribedWorkteams = ListSubscribedWorkteams'
+  { -- | The maximum number of work teams to return in each page of the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the work team name. This filter returns only work teams
+    -- whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListSubscribedWorkteams@ request was
+    -- truncated, the response includes a @NextToken@. To retrieve the next set
+    -- of labeling jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSubscribedWorkteams' 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:
+--
+-- 'maxResults', 'listSubscribedWorkteams_maxResults' - The maximum number of work teams to return in each page of the response.
+--
+-- 'nameContains', 'listSubscribedWorkteams_nameContains' - A string in the work team name. This filter returns only work teams
+-- whose name contains the specified string.
+--
+-- 'nextToken', 'listSubscribedWorkteams_nextToken' - If the result of the previous @ListSubscribedWorkteams@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of labeling jobs, use the token in the next request.
+newListSubscribedWorkteams ::
+  ListSubscribedWorkteams
+newListSubscribedWorkteams =
+  ListSubscribedWorkteams'
+    { maxResults =
+        Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of work teams to return in each page of the response.
+listSubscribedWorkteams_maxResults :: Lens.Lens' ListSubscribedWorkteams (Prelude.Maybe Prelude.Natural)
+listSubscribedWorkteams_maxResults = Lens.lens (\ListSubscribedWorkteams' {maxResults} -> maxResults) (\s@ListSubscribedWorkteams' {} a -> s {maxResults = a} :: ListSubscribedWorkteams)
+
+-- | A string in the work team name. This filter returns only work teams
+-- whose name contains the specified string.
+listSubscribedWorkteams_nameContains :: Lens.Lens' ListSubscribedWorkteams (Prelude.Maybe Prelude.Text)
+listSubscribedWorkteams_nameContains = Lens.lens (\ListSubscribedWorkteams' {nameContains} -> nameContains) (\s@ListSubscribedWorkteams' {} a -> s {nameContains = a} :: ListSubscribedWorkteams)
+
+-- | If the result of the previous @ListSubscribedWorkteams@ request was
+-- truncated, the response includes a @NextToken@. To retrieve the next set
+-- of labeling jobs, use the token in the next request.
+listSubscribedWorkteams_nextToken :: Lens.Lens' ListSubscribedWorkteams (Prelude.Maybe Prelude.Text)
+listSubscribedWorkteams_nextToken = Lens.lens (\ListSubscribedWorkteams' {nextToken} -> nextToken) (\s@ListSubscribedWorkteams' {} a -> s {nextToken = a} :: ListSubscribedWorkteams)
+
+instance Core.AWSPager ListSubscribedWorkteams where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSubscribedWorkteamsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listSubscribedWorkteamsResponse_subscribedWorkteams
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSubscribedWorkteams_nextToken
+          Lens..~ rs
+          Lens.^? listSubscribedWorkteamsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListSubscribedWorkteams where
+  type
+    AWSResponse ListSubscribedWorkteams =
+      ListSubscribedWorkteamsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSubscribedWorkteamsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "SubscribedWorkteams"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListSubscribedWorkteams where
+  hashWithSalt _salt ListSubscribedWorkteams' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListSubscribedWorkteams where
+  rnf ListSubscribedWorkteams' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListSubscribedWorkteams where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListSubscribedWorkteams" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListSubscribedWorkteams where
+  toJSON ListSubscribedWorkteams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListSubscribedWorkteams where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListSubscribedWorkteams where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListSubscribedWorkteamsResponse' smart constructor.
+data ListSubscribedWorkteamsResponse = ListSubscribedWorkteamsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of work teams, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @Workteam@ objects, each describing a work team.
+    subscribedWorkteams :: [SubscribedWorkteam]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSubscribedWorkteamsResponse' 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:
+--
+-- 'nextToken', 'listSubscribedWorkteamsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of work teams, use it in the subsequent request.
+--
+-- 'httpStatus', 'listSubscribedWorkteamsResponse_httpStatus' - The response's http status code.
+--
+-- 'subscribedWorkteams', 'listSubscribedWorkteamsResponse_subscribedWorkteams' - An array of @Workteam@ objects, each describing a work team.
+newListSubscribedWorkteamsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSubscribedWorkteamsResponse
+newListSubscribedWorkteamsResponse pHttpStatus_ =
+  ListSubscribedWorkteamsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      subscribedWorkteams = Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of work teams, use it in the subsequent request.
+listSubscribedWorkteamsResponse_nextToken :: Lens.Lens' ListSubscribedWorkteamsResponse (Prelude.Maybe Prelude.Text)
+listSubscribedWorkteamsResponse_nextToken = Lens.lens (\ListSubscribedWorkteamsResponse' {nextToken} -> nextToken) (\s@ListSubscribedWorkteamsResponse' {} a -> s {nextToken = a} :: ListSubscribedWorkteamsResponse)
+
+-- | The response's http status code.
+listSubscribedWorkteamsResponse_httpStatus :: Lens.Lens' ListSubscribedWorkteamsResponse Prelude.Int
+listSubscribedWorkteamsResponse_httpStatus = Lens.lens (\ListSubscribedWorkteamsResponse' {httpStatus} -> httpStatus) (\s@ListSubscribedWorkteamsResponse' {} a -> s {httpStatus = a} :: ListSubscribedWorkteamsResponse)
+
+-- | An array of @Workteam@ objects, each describing a work team.
+listSubscribedWorkteamsResponse_subscribedWorkteams :: Lens.Lens' ListSubscribedWorkteamsResponse [SubscribedWorkteam]
+listSubscribedWorkteamsResponse_subscribedWorkteams = Lens.lens (\ListSubscribedWorkteamsResponse' {subscribedWorkteams} -> subscribedWorkteams) (\s@ListSubscribedWorkteamsResponse' {} a -> s {subscribedWorkteams = a} :: ListSubscribedWorkteamsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListSubscribedWorkteamsResponse
+  where
+  rnf ListSubscribedWorkteamsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf subscribedWorkteams
diff --git a/gen/Amazonka/SageMaker/ListTags.hs b/gen/Amazonka/SageMaker/ListTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListTags.hs
@@ -0,0 +1,245 @@
+{-# 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.ListTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the tags for the specified SageMaker resource.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListTags
+  ( -- * Creating a Request
+    ListTags (..),
+    newListTags,
+
+    -- * Request Lenses
+    listTags_maxResults,
+    listTags_nextToken,
+    listTags_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsResponse (..),
+    newListTagsResponse,
+
+    -- * Response Lenses
+    listTagsResponse_nextToken,
+    listTagsResponse_tags,
+    listTagsResponse_httpStatus,
+  )
+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:/ 'newListTags' smart constructor.
+data ListTags = ListTags'
+  { -- | Maximum number of tags to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the response to the previous @ListTags@ request is truncated,
+    -- SageMaker returns this token. To retrieve the next set of tags, use it
+    -- in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the resource whose tags you want to
+    -- retrieve.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTags' 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:
+--
+-- 'maxResults', 'listTags_maxResults' - Maximum number of tags to return.
+--
+-- 'nextToken', 'listTags_nextToken' - If the response to the previous @ListTags@ request is truncated,
+-- SageMaker returns this token. To retrieve the next set of tags, use it
+-- in the subsequent request.
+--
+-- 'resourceArn', 'listTags_resourceArn' - The Amazon Resource Name (ARN) of the resource whose tags you want to
+-- retrieve.
+newListTags ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTags
+newListTags pResourceArn_ =
+  ListTags'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceArn = pResourceArn_
+    }
+
+-- | Maximum number of tags to return.
+listTags_maxResults :: Lens.Lens' ListTags (Prelude.Maybe Prelude.Natural)
+listTags_maxResults = Lens.lens (\ListTags' {maxResults} -> maxResults) (\s@ListTags' {} a -> s {maxResults = a} :: ListTags)
+
+-- | If the response to the previous @ListTags@ request is truncated,
+-- SageMaker returns this token. To retrieve the next set of tags, use it
+-- in the subsequent request.
+listTags_nextToken :: Lens.Lens' ListTags (Prelude.Maybe Prelude.Text)
+listTags_nextToken = Lens.lens (\ListTags' {nextToken} -> nextToken) (\s@ListTags' {} a -> s {nextToken = a} :: ListTags)
+
+-- | The Amazon Resource Name (ARN) of the resource whose tags you want to
+-- retrieve.
+listTags_resourceArn :: Lens.Lens' ListTags Prelude.Text
+listTags_resourceArn = Lens.lens (\ListTags' {resourceArn} -> resourceArn) (\s@ListTags' {} a -> s {resourceArn = a} :: ListTags)
+
+instance Core.AWSPager ListTags where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTagsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTagsResponse_tags
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTags_nextToken
+          Lens..~ rs
+          Lens.^? listTagsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTags where
+  type AWSResponse ListTags = ListTagsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTags where
+  hashWithSalt _salt ListTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTags where
+  rnf ListTags' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTags where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListTags" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTags where
+  toJSON ListTags' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("ResourceArn" Data..= resourceArn)
+          ]
+      )
+
+instance Data.ToPath ListTags where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsResponse' smart constructor.
+data ListTagsResponse = ListTagsResponse'
+  { -- | If response is truncated, SageMaker includes a token in the response.
+    -- You can use this token in your subsequent request to fetch next set of
+    -- tokens.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of @Tag@ objects, each with a tag key and a value.
+    tags :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsResponse' 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:
+--
+-- 'nextToken', 'listTagsResponse_nextToken' - If response is truncated, SageMaker includes a token in the response.
+-- You can use this token in your subsequent request to fetch next set of
+-- tokens.
+--
+-- 'tags', 'listTagsResponse_tags' - An array of @Tag@ objects, each with a tag key and a value.
+--
+-- 'httpStatus', 'listTagsResponse_httpStatus' - The response's http status code.
+newListTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsResponse
+newListTagsResponse pHttpStatus_ =
+  ListTagsResponse'
+    { nextToken = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If response is truncated, SageMaker includes a token in the response.
+-- You can use this token in your subsequent request to fetch next set of
+-- tokens.
+listTagsResponse_nextToken :: Lens.Lens' ListTagsResponse (Prelude.Maybe Prelude.Text)
+listTagsResponse_nextToken = Lens.lens (\ListTagsResponse' {nextToken} -> nextToken) (\s@ListTagsResponse' {} a -> s {nextToken = a} :: ListTagsResponse)
+
+-- | An array of @Tag@ objects, each with a tag key and a value.
+listTagsResponse_tags :: Lens.Lens' ListTagsResponse (Prelude.Maybe [Tag])
+listTagsResponse_tags = Lens.lens (\ListTagsResponse' {tags} -> tags) (\s@ListTagsResponse' {} a -> s {tags = a} :: ListTagsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsResponse_httpStatus :: Lens.Lens' ListTagsResponse Prelude.Int
+listTagsResponse_httpStatus = Lens.lens (\ListTagsResponse' {httpStatus} -> httpStatus) (\s@ListTagsResponse' {} a -> s {httpStatus = a} :: ListTagsResponse)
+
+instance Prelude.NFData ListTagsResponse where
+  rnf ListTagsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListTrainingJobs.hs b/gen/Amazonka/SageMaker/ListTrainingJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListTrainingJobs.hs
@@ -0,0 +1,390 @@
+{-# 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.ListTrainingJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists training jobs.
+--
+-- When @StatusEquals@ and @MaxResults@ are set at the same time, the
+-- @MaxResults@ number of training jobs are first retrieved ignoring the
+-- @StatusEquals@ parameter and then they are filtered by the
+-- @StatusEquals@ parameter, which is returned as a response.
+--
+-- For example, if @ListTrainingJobs@ is invoked with the following
+-- parameters:
+--
+-- @{ ... MaxResults: 100, StatusEquals: InProgress ... }@
+--
+-- First, 100 trainings jobs with any status, including those other than
+-- @InProgress@, are selected (sorted according to the creation time, from
+-- the most current to the oldest). Next, those with a status of
+-- @InProgress@ are returned.
+--
+-- You can quickly test the API using the following Amazon Web Services CLI
+-- code.
+--
+-- @aws sagemaker list-training-jobs --max-results 100 --status-equals InProgress@
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListTrainingJobs
+  ( -- * Creating a Request
+    ListTrainingJobs (..),
+    newListTrainingJobs,
+
+    -- * Request Lenses
+    listTrainingJobs_creationTimeAfter,
+    listTrainingJobs_creationTimeBefore,
+    listTrainingJobs_lastModifiedTimeAfter,
+    listTrainingJobs_lastModifiedTimeBefore,
+    listTrainingJobs_maxResults,
+    listTrainingJobs_nameContains,
+    listTrainingJobs_nextToken,
+    listTrainingJobs_sortBy,
+    listTrainingJobs_sortOrder,
+    listTrainingJobs_statusEquals,
+    listTrainingJobs_warmPoolStatusEquals,
+
+    -- * Destructuring the Response
+    ListTrainingJobsResponse (..),
+    newListTrainingJobsResponse,
+
+    -- * Response Lenses
+    listTrainingJobsResponse_nextToken,
+    listTrainingJobsResponse_httpStatus,
+    listTrainingJobsResponse_trainingJobSummaries,
+  )
+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:/ 'newListTrainingJobs' smart constructor.
+data ListTrainingJobs = ListTrainingJobs'
+  { -- | A filter that returns only training jobs created after the specified
+    -- time (timestamp).
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only training jobs created before the specified
+    -- time (timestamp).
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only training jobs modified after the specified
+    -- time (timestamp).
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only training jobs modified before the specified
+    -- time (timestamp).
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of training jobs to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the training job name. This filter returns only training
+    -- jobs whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListTrainingJobs@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of
+    -- training jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe SortBy,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only training jobs with a specific status.
+    statusEquals :: Prelude.Maybe TrainingJobStatus,
+    -- | A filter that retrieves only training jobs with a specific warm pool
+    -- status.
+    warmPoolStatusEquals :: Prelude.Maybe WarmPoolResourceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrainingJobs' 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:
+--
+-- 'creationTimeAfter', 'listTrainingJobs_creationTimeAfter' - A filter that returns only training jobs created after the specified
+-- time (timestamp).
+--
+-- 'creationTimeBefore', 'listTrainingJobs_creationTimeBefore' - A filter that returns only training jobs created before the specified
+-- time (timestamp).
+--
+-- 'lastModifiedTimeAfter', 'listTrainingJobs_lastModifiedTimeAfter' - A filter that returns only training jobs modified after the specified
+-- time (timestamp).
+--
+-- 'lastModifiedTimeBefore', 'listTrainingJobs_lastModifiedTimeBefore' - A filter that returns only training jobs modified before the specified
+-- time (timestamp).
+--
+-- 'maxResults', 'listTrainingJobs_maxResults' - The maximum number of training jobs to return in the response.
+--
+-- 'nameContains', 'listTrainingJobs_nameContains' - A string in the training job name. This filter returns only training
+-- jobs whose name contains the specified string.
+--
+-- 'nextToken', 'listTrainingJobs_nextToken' - If the result of the previous @ListTrainingJobs@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- training jobs, use the token in the next request.
+--
+-- 'sortBy', 'listTrainingJobs_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listTrainingJobs_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listTrainingJobs_statusEquals' - A filter that retrieves only training jobs with a specific status.
+--
+-- 'warmPoolStatusEquals', 'listTrainingJobs_warmPoolStatusEquals' - A filter that retrieves only training jobs with a specific warm pool
+-- status.
+newListTrainingJobs ::
+  ListTrainingJobs
+newListTrainingJobs =
+  ListTrainingJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing,
+      warmPoolStatusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only training jobs created after the specified
+-- time (timestamp).
+listTrainingJobs_creationTimeAfter :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.UTCTime)
+listTrainingJobs_creationTimeAfter = Lens.lens (\ListTrainingJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListTrainingJobs' {} a -> s {creationTimeAfter = a} :: ListTrainingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only training jobs created before the specified
+-- time (timestamp).
+listTrainingJobs_creationTimeBefore :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.UTCTime)
+listTrainingJobs_creationTimeBefore = Lens.lens (\ListTrainingJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListTrainingJobs' {} a -> s {creationTimeBefore = a} :: ListTrainingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only training jobs modified after the specified
+-- time (timestamp).
+listTrainingJobs_lastModifiedTimeAfter :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.UTCTime)
+listTrainingJobs_lastModifiedTimeAfter = Lens.lens (\ListTrainingJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListTrainingJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListTrainingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only training jobs modified before the specified
+-- time (timestamp).
+listTrainingJobs_lastModifiedTimeBefore :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.UTCTime)
+listTrainingJobs_lastModifiedTimeBefore = Lens.lens (\ListTrainingJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListTrainingJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListTrainingJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of training jobs to return in the response.
+listTrainingJobs_maxResults :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.Natural)
+listTrainingJobs_maxResults = Lens.lens (\ListTrainingJobs' {maxResults} -> maxResults) (\s@ListTrainingJobs' {} a -> s {maxResults = a} :: ListTrainingJobs)
+
+-- | A string in the training job name. This filter returns only training
+-- jobs whose name contains the specified string.
+listTrainingJobs_nameContains :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.Text)
+listTrainingJobs_nameContains = Lens.lens (\ListTrainingJobs' {nameContains} -> nameContains) (\s@ListTrainingJobs' {} a -> s {nameContains = a} :: ListTrainingJobs)
+
+-- | If the result of the previous @ListTrainingJobs@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- training jobs, use the token in the next request.
+listTrainingJobs_nextToken :: Lens.Lens' ListTrainingJobs (Prelude.Maybe Prelude.Text)
+listTrainingJobs_nextToken = Lens.lens (\ListTrainingJobs' {nextToken} -> nextToken) (\s@ListTrainingJobs' {} a -> s {nextToken = a} :: ListTrainingJobs)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listTrainingJobs_sortBy :: Lens.Lens' ListTrainingJobs (Prelude.Maybe SortBy)
+listTrainingJobs_sortBy = Lens.lens (\ListTrainingJobs' {sortBy} -> sortBy) (\s@ListTrainingJobs' {} a -> s {sortBy = a} :: ListTrainingJobs)
+
+-- | The sort order for results. The default is @Ascending@.
+listTrainingJobs_sortOrder :: Lens.Lens' ListTrainingJobs (Prelude.Maybe SortOrder)
+listTrainingJobs_sortOrder = Lens.lens (\ListTrainingJobs' {sortOrder} -> sortOrder) (\s@ListTrainingJobs' {} a -> s {sortOrder = a} :: ListTrainingJobs)
+
+-- | A filter that retrieves only training jobs with a specific status.
+listTrainingJobs_statusEquals :: Lens.Lens' ListTrainingJobs (Prelude.Maybe TrainingJobStatus)
+listTrainingJobs_statusEquals = Lens.lens (\ListTrainingJobs' {statusEquals} -> statusEquals) (\s@ListTrainingJobs' {} a -> s {statusEquals = a} :: ListTrainingJobs)
+
+-- | A filter that retrieves only training jobs with a specific warm pool
+-- status.
+listTrainingJobs_warmPoolStatusEquals :: Lens.Lens' ListTrainingJobs (Prelude.Maybe WarmPoolResourceStatus)
+listTrainingJobs_warmPoolStatusEquals = Lens.lens (\ListTrainingJobs' {warmPoolStatusEquals} -> warmPoolStatusEquals) (\s@ListTrainingJobs' {} a -> s {warmPoolStatusEquals = a} :: ListTrainingJobs)
+
+instance Core.AWSPager ListTrainingJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTrainingJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listTrainingJobsResponse_trainingJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTrainingJobs_nextToken
+          Lens..~ rs
+          Lens.^? listTrainingJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTrainingJobs where
+  type
+    AWSResponse ListTrainingJobs =
+      ListTrainingJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTrainingJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "TrainingJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListTrainingJobs where
+  hashWithSalt _salt ListTrainingJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+      `Prelude.hashWithSalt` warmPoolStatusEquals
+
+instance Prelude.NFData ListTrainingJobs where
+  rnf ListTrainingJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+      `Prelude.seq` Prelude.rnf warmPoolStatusEquals
+
+instance Data.ToHeaders ListTrainingJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListTrainingJobs" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTrainingJobs where
+  toJSON ListTrainingJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals,
+            ("WarmPoolStatusEquals" Data..=)
+              Prelude.<$> warmPoolStatusEquals
+          ]
+      )
+
+instance Data.ToPath ListTrainingJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTrainingJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTrainingJobsResponse' smart constructor.
+data ListTrainingJobsResponse = ListTrainingJobsResponse'
+  { -- | If the response is truncated, SageMaker returns this token. To retrieve
+    -- the next set of training jobs, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @TrainingJobSummary@ objects, each listing a training job.
+    trainingJobSummaries :: [TrainingJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrainingJobsResponse' 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:
+--
+-- 'nextToken', 'listTrainingJobsResponse_nextToken' - If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of training jobs, use it in the subsequent request.
+--
+-- 'httpStatus', 'listTrainingJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'trainingJobSummaries', 'listTrainingJobsResponse_trainingJobSummaries' - An array of @TrainingJobSummary@ objects, each listing a training job.
+newListTrainingJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTrainingJobsResponse
+newListTrainingJobsResponse pHttpStatus_ =
+  ListTrainingJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      trainingJobSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, SageMaker returns this token. To retrieve
+-- the next set of training jobs, use it in the subsequent request.
+listTrainingJobsResponse_nextToken :: Lens.Lens' ListTrainingJobsResponse (Prelude.Maybe Prelude.Text)
+listTrainingJobsResponse_nextToken = Lens.lens (\ListTrainingJobsResponse' {nextToken} -> nextToken) (\s@ListTrainingJobsResponse' {} a -> s {nextToken = a} :: ListTrainingJobsResponse)
+
+-- | The response's http status code.
+listTrainingJobsResponse_httpStatus :: Lens.Lens' ListTrainingJobsResponse Prelude.Int
+listTrainingJobsResponse_httpStatus = Lens.lens (\ListTrainingJobsResponse' {httpStatus} -> httpStatus) (\s@ListTrainingJobsResponse' {} a -> s {httpStatus = a} :: ListTrainingJobsResponse)
+
+-- | An array of @TrainingJobSummary@ objects, each listing a training job.
+listTrainingJobsResponse_trainingJobSummaries :: Lens.Lens' ListTrainingJobsResponse [TrainingJobSummary]
+listTrainingJobsResponse_trainingJobSummaries = Lens.lens (\ListTrainingJobsResponse' {trainingJobSummaries} -> trainingJobSummaries) (\s@ListTrainingJobsResponse' {} a -> s {trainingJobSummaries = a} :: ListTrainingJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListTrainingJobsResponse where
+  rnf ListTrainingJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf trainingJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListTrainingJobsForHyperParameterTuningJob.hs b/gen/Amazonka/SageMaker/ListTrainingJobsForHyperParameterTuningJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListTrainingJobsForHyperParameterTuningJob.hs
@@ -0,0 +1,345 @@
+{-# 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.ListTrainingJobsForHyperParameterTuningJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of TrainingJobSummary objects that describe the training
+-- jobs that a hyperparameter tuning job launched.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListTrainingJobsForHyperParameterTuningJob
+  ( -- * Creating a Request
+    ListTrainingJobsForHyperParameterTuningJob (..),
+    newListTrainingJobsForHyperParameterTuningJob,
+
+    -- * Request Lenses
+    listTrainingJobsForHyperParameterTuningJob_maxResults,
+    listTrainingJobsForHyperParameterTuningJob_nextToken,
+    listTrainingJobsForHyperParameterTuningJob_sortBy,
+    listTrainingJobsForHyperParameterTuningJob_sortOrder,
+    listTrainingJobsForHyperParameterTuningJob_statusEquals,
+    listTrainingJobsForHyperParameterTuningJob_hyperParameterTuningJobName,
+
+    -- * Destructuring the Response
+    ListTrainingJobsForHyperParameterTuningJobResponse (..),
+    newListTrainingJobsForHyperParameterTuningJobResponse,
+
+    -- * Response Lenses
+    listTrainingJobsForHyperParameterTuningJobResponse_nextToken,
+    listTrainingJobsForHyperParameterTuningJobResponse_httpStatus,
+    listTrainingJobsForHyperParameterTuningJobResponse_trainingJobSummaries,
+  )
+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:/ 'newListTrainingJobsForHyperParameterTuningJob' smart constructor.
+data ListTrainingJobsForHyperParameterTuningJob = ListTrainingJobsForHyperParameterTuningJob'
+  { -- | The maximum number of training jobs to return. The default value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the result of the previous
+    -- @ListTrainingJobsForHyperParameterTuningJob@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of training
+    -- jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @Name@.
+    --
+    -- If the value of this field is @FinalObjectiveMetricValue@, any training
+    -- jobs that did not return an objective metric are not listed.
+    sortBy :: Prelude.Maybe TrainingJobSortByOptions,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only training jobs with the specified status.
+    statusEquals :: Prelude.Maybe TrainingJobStatus,
+    -- | The name of the tuning job whose training jobs you want to list.
+    hyperParameterTuningJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrainingJobsForHyperParameterTuningJob' 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:
+--
+-- 'maxResults', 'listTrainingJobsForHyperParameterTuningJob_maxResults' - The maximum number of training jobs to return. The default value is 10.
+--
+-- 'nextToken', 'listTrainingJobsForHyperParameterTuningJob_nextToken' - If the result of the previous
+-- @ListTrainingJobsForHyperParameterTuningJob@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of training
+-- jobs, use the token in the next request.
+--
+-- 'sortBy', 'listTrainingJobsForHyperParameterTuningJob_sortBy' - The field to sort results by. The default is @Name@.
+--
+-- If the value of this field is @FinalObjectiveMetricValue@, any training
+-- jobs that did not return an objective metric are not listed.
+--
+-- 'sortOrder', 'listTrainingJobsForHyperParameterTuningJob_sortOrder' - The sort order for results. The default is @Ascending@.
+--
+-- 'statusEquals', 'listTrainingJobsForHyperParameterTuningJob_statusEquals' - A filter that returns only training jobs with the specified status.
+--
+-- 'hyperParameterTuningJobName', 'listTrainingJobsForHyperParameterTuningJob_hyperParameterTuningJobName' - The name of the tuning job whose training jobs you want to list.
+newListTrainingJobsForHyperParameterTuningJob ::
+  -- | 'hyperParameterTuningJobName'
+  Prelude.Text ->
+  ListTrainingJobsForHyperParameterTuningJob
+newListTrainingJobsForHyperParameterTuningJob
+  pHyperParameterTuningJobName_ =
+    ListTrainingJobsForHyperParameterTuningJob'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        sortBy = Prelude.Nothing,
+        sortOrder = Prelude.Nothing,
+        statusEquals = Prelude.Nothing,
+        hyperParameterTuningJobName =
+          pHyperParameterTuningJobName_
+      }
+
+-- | The maximum number of training jobs to return. The default value is 10.
+listTrainingJobsForHyperParameterTuningJob_maxResults :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJob (Prelude.Maybe Prelude.Natural)
+listTrainingJobsForHyperParameterTuningJob_maxResults = Lens.lens (\ListTrainingJobsForHyperParameterTuningJob' {maxResults} -> maxResults) (\s@ListTrainingJobsForHyperParameterTuningJob' {} a -> s {maxResults = a} :: ListTrainingJobsForHyperParameterTuningJob)
+
+-- | If the result of the previous
+-- @ListTrainingJobsForHyperParameterTuningJob@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of training
+-- jobs, use the token in the next request.
+listTrainingJobsForHyperParameterTuningJob_nextToken :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJob (Prelude.Maybe Prelude.Text)
+listTrainingJobsForHyperParameterTuningJob_nextToken = Lens.lens (\ListTrainingJobsForHyperParameterTuningJob' {nextToken} -> nextToken) (\s@ListTrainingJobsForHyperParameterTuningJob' {} a -> s {nextToken = a} :: ListTrainingJobsForHyperParameterTuningJob)
+
+-- | The field to sort results by. The default is @Name@.
+--
+-- If the value of this field is @FinalObjectiveMetricValue@, any training
+-- jobs that did not return an objective metric are not listed.
+listTrainingJobsForHyperParameterTuningJob_sortBy :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJob (Prelude.Maybe TrainingJobSortByOptions)
+listTrainingJobsForHyperParameterTuningJob_sortBy = Lens.lens (\ListTrainingJobsForHyperParameterTuningJob' {sortBy} -> sortBy) (\s@ListTrainingJobsForHyperParameterTuningJob' {} a -> s {sortBy = a} :: ListTrainingJobsForHyperParameterTuningJob)
+
+-- | The sort order for results. The default is @Ascending@.
+listTrainingJobsForHyperParameterTuningJob_sortOrder :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJob (Prelude.Maybe SortOrder)
+listTrainingJobsForHyperParameterTuningJob_sortOrder = Lens.lens (\ListTrainingJobsForHyperParameterTuningJob' {sortOrder} -> sortOrder) (\s@ListTrainingJobsForHyperParameterTuningJob' {} a -> s {sortOrder = a} :: ListTrainingJobsForHyperParameterTuningJob)
+
+-- | A filter that returns only training jobs with the specified status.
+listTrainingJobsForHyperParameterTuningJob_statusEquals :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJob (Prelude.Maybe TrainingJobStatus)
+listTrainingJobsForHyperParameterTuningJob_statusEquals = Lens.lens (\ListTrainingJobsForHyperParameterTuningJob' {statusEquals} -> statusEquals) (\s@ListTrainingJobsForHyperParameterTuningJob' {} a -> s {statusEquals = a} :: ListTrainingJobsForHyperParameterTuningJob)
+
+-- | The name of the tuning job whose training jobs you want to list.
+listTrainingJobsForHyperParameterTuningJob_hyperParameterTuningJobName :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJob Prelude.Text
+listTrainingJobsForHyperParameterTuningJob_hyperParameterTuningJobName = Lens.lens (\ListTrainingJobsForHyperParameterTuningJob' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@ListTrainingJobsForHyperParameterTuningJob' {} a -> s {hyperParameterTuningJobName = a} :: ListTrainingJobsForHyperParameterTuningJob)
+
+instance
+  Core.AWSPager
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTrainingJobsForHyperParameterTuningJobResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listTrainingJobsForHyperParameterTuningJobResponse_trainingJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTrainingJobsForHyperParameterTuningJob_nextToken
+          Lens..~ rs
+          Lens.^? listTrainingJobsForHyperParameterTuningJobResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  type
+    AWSResponse
+      ListTrainingJobsForHyperParameterTuningJob =
+      ListTrainingJobsForHyperParameterTuningJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTrainingJobsForHyperParameterTuningJobResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "TrainingJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  hashWithSalt
+    _salt
+    ListTrainingJobsForHyperParameterTuningJob' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` sortBy
+        `Prelude.hashWithSalt` sortOrder
+        `Prelude.hashWithSalt` statusEquals
+        `Prelude.hashWithSalt` hyperParameterTuningJobName
+
+instance
+  Prelude.NFData
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  rnf ListTrainingJobsForHyperParameterTuningJob' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobName
+
+instance
+  Data.ToHeaders
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListTrainingJobsForHyperParameterTuningJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  toJSON
+    ListTrainingJobsForHyperParameterTuningJob' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+              ("NextToken" Data..=) Prelude.<$> nextToken,
+              ("SortBy" Data..=) Prelude.<$> sortBy,
+              ("SortOrder" Data..=) Prelude.<$> sortOrder,
+              ("StatusEquals" Data..=) Prelude.<$> statusEquals,
+              Prelude.Just
+                ( "HyperParameterTuningJobName"
+                    Data..= hyperParameterTuningJobName
+                )
+            ]
+        )
+
+instance
+  Data.ToPath
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListTrainingJobsForHyperParameterTuningJob
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTrainingJobsForHyperParameterTuningJobResponse' smart constructor.
+data ListTrainingJobsForHyperParameterTuningJobResponse = ListTrainingJobsForHyperParameterTuningJobResponse'
+  { -- | If the result of this @ListTrainingJobsForHyperParameterTuningJob@
+    -- request was truncated, the response includes a @NextToken@. To retrieve
+    -- the next set of training jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of TrainingJobSummary objects that describe the training jobs
+    -- that the @ListTrainingJobsForHyperParameterTuningJob@ request returned.
+    trainingJobSummaries :: [HyperParameterTrainingJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrainingJobsForHyperParameterTuningJobResponse' 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:
+--
+-- 'nextToken', 'listTrainingJobsForHyperParameterTuningJobResponse_nextToken' - If the result of this @ListTrainingJobsForHyperParameterTuningJob@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of training jobs, use the token in the next request.
+--
+-- 'httpStatus', 'listTrainingJobsForHyperParameterTuningJobResponse_httpStatus' - The response's http status code.
+--
+-- 'trainingJobSummaries', 'listTrainingJobsForHyperParameterTuningJobResponse_trainingJobSummaries' - A list of TrainingJobSummary objects that describe the training jobs
+-- that the @ListTrainingJobsForHyperParameterTuningJob@ request returned.
+newListTrainingJobsForHyperParameterTuningJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTrainingJobsForHyperParameterTuningJobResponse
+newListTrainingJobsForHyperParameterTuningJobResponse
+  pHttpStatus_ =
+    ListTrainingJobsForHyperParameterTuningJobResponse'
+      { nextToken =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_,
+        trainingJobSummaries =
+          Prelude.mempty
+      }
+
+-- | If the result of this @ListTrainingJobsForHyperParameterTuningJob@
+-- request was truncated, the response includes a @NextToken@. To retrieve
+-- the next set of training jobs, use the token in the next request.
+listTrainingJobsForHyperParameterTuningJobResponse_nextToken :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJobResponse (Prelude.Maybe Prelude.Text)
+listTrainingJobsForHyperParameterTuningJobResponse_nextToken = Lens.lens (\ListTrainingJobsForHyperParameterTuningJobResponse' {nextToken} -> nextToken) (\s@ListTrainingJobsForHyperParameterTuningJobResponse' {} a -> s {nextToken = a} :: ListTrainingJobsForHyperParameterTuningJobResponse)
+
+-- | The response's http status code.
+listTrainingJobsForHyperParameterTuningJobResponse_httpStatus :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJobResponse Prelude.Int
+listTrainingJobsForHyperParameterTuningJobResponse_httpStatus = Lens.lens (\ListTrainingJobsForHyperParameterTuningJobResponse' {httpStatus} -> httpStatus) (\s@ListTrainingJobsForHyperParameterTuningJobResponse' {} a -> s {httpStatus = a} :: ListTrainingJobsForHyperParameterTuningJobResponse)
+
+-- | A list of TrainingJobSummary objects that describe the training jobs
+-- that the @ListTrainingJobsForHyperParameterTuningJob@ request returned.
+listTrainingJobsForHyperParameterTuningJobResponse_trainingJobSummaries :: Lens.Lens' ListTrainingJobsForHyperParameterTuningJobResponse [HyperParameterTrainingJobSummary]
+listTrainingJobsForHyperParameterTuningJobResponse_trainingJobSummaries = Lens.lens (\ListTrainingJobsForHyperParameterTuningJobResponse' {trainingJobSummaries} -> trainingJobSummaries) (\s@ListTrainingJobsForHyperParameterTuningJobResponse' {} a -> s {trainingJobSummaries = a} :: ListTrainingJobsForHyperParameterTuningJobResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListTrainingJobsForHyperParameterTuningJobResponse
+  where
+  rnf
+    ListTrainingJobsForHyperParameterTuningJobResponse' {..} =
+      Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf httpStatus
+        `Prelude.seq` Prelude.rnf trainingJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListTransformJobs.hs b/gen/Amazonka/SageMaker/ListTransformJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListTransformJobs.hs
@@ -0,0 +1,358 @@
+{-# 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.ListTransformJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists transform jobs.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListTransformJobs
+  ( -- * Creating a Request
+    ListTransformJobs (..),
+    newListTransformJobs,
+
+    -- * Request Lenses
+    listTransformJobs_creationTimeAfter,
+    listTransformJobs_creationTimeBefore,
+    listTransformJobs_lastModifiedTimeAfter,
+    listTransformJobs_lastModifiedTimeBefore,
+    listTransformJobs_maxResults,
+    listTransformJobs_nameContains,
+    listTransformJobs_nextToken,
+    listTransformJobs_sortBy,
+    listTransformJobs_sortOrder,
+    listTransformJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListTransformJobsResponse (..),
+    newListTransformJobsResponse,
+
+    -- * Response Lenses
+    listTransformJobsResponse_nextToken,
+    listTransformJobsResponse_httpStatus,
+    listTransformJobsResponse_transformJobSummaries,
+  )
+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:/ 'newListTransformJobs' smart constructor.
+data ListTransformJobs = ListTransformJobs'
+  { -- | A filter that returns only transform jobs created after the specified
+    -- time.
+    creationTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only transform jobs created before the specified
+    -- time.
+    creationTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only transform jobs modified after the specified
+    -- time.
+    lastModifiedTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only transform jobs modified before the specified
+    -- time.
+    lastModifiedTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of transform jobs to return in the response. The
+    -- default value is @10@.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the transform job name. This filter returns only transform
+    -- jobs whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListTransformJobs@ request was truncated,
+    -- the response includes a @NextToken@. To retrieve the next set of
+    -- transform jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe SortBy,
+    -- | The sort order for results. The default is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only transform jobs with a specific status.
+    statusEquals :: Prelude.Maybe TransformJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTransformJobs' 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:
+--
+-- 'creationTimeAfter', 'listTransformJobs_creationTimeAfter' - A filter that returns only transform jobs created after the specified
+-- time.
+--
+-- 'creationTimeBefore', 'listTransformJobs_creationTimeBefore' - A filter that returns only transform jobs created before the specified
+-- time.
+--
+-- 'lastModifiedTimeAfter', 'listTransformJobs_lastModifiedTimeAfter' - A filter that returns only transform jobs modified after the specified
+-- time.
+--
+-- 'lastModifiedTimeBefore', 'listTransformJobs_lastModifiedTimeBefore' - A filter that returns only transform jobs modified before the specified
+-- time.
+--
+-- 'maxResults', 'listTransformJobs_maxResults' - The maximum number of transform jobs to return in the response. The
+-- default value is @10@.
+--
+-- 'nameContains', 'listTransformJobs_nameContains' - A string in the transform job name. This filter returns only transform
+-- jobs whose name contains the specified string.
+--
+-- 'nextToken', 'listTransformJobs_nextToken' - If the result of the previous @ListTransformJobs@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- transform jobs, use the token in the next request.
+--
+-- 'sortBy', 'listTransformJobs_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listTransformJobs_sortOrder' - The sort order for results. The default is @Descending@.
+--
+-- 'statusEquals', 'listTransformJobs_statusEquals' - A filter that retrieves only transform jobs with a specific status.
+newListTransformJobs ::
+  ListTransformJobs
+newListTransformJobs =
+  ListTransformJobs'
+    { creationTimeAfter =
+        Prelude.Nothing,
+      creationTimeBefore = Prelude.Nothing,
+      lastModifiedTimeAfter = Prelude.Nothing,
+      lastModifiedTimeBefore = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | A filter that returns only transform jobs created after the specified
+-- time.
+listTransformJobs_creationTimeAfter :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.UTCTime)
+listTransformJobs_creationTimeAfter = Lens.lens (\ListTransformJobs' {creationTimeAfter} -> creationTimeAfter) (\s@ListTransformJobs' {} a -> s {creationTimeAfter = a} :: ListTransformJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only transform jobs created before the specified
+-- time.
+listTransformJobs_creationTimeBefore :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.UTCTime)
+listTransformJobs_creationTimeBefore = Lens.lens (\ListTransformJobs' {creationTimeBefore} -> creationTimeBefore) (\s@ListTransformJobs' {} a -> s {creationTimeBefore = a} :: ListTransformJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only transform jobs modified after the specified
+-- time.
+listTransformJobs_lastModifiedTimeAfter :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.UTCTime)
+listTransformJobs_lastModifiedTimeAfter = Lens.lens (\ListTransformJobs' {lastModifiedTimeAfter} -> lastModifiedTimeAfter) (\s@ListTransformJobs' {} a -> s {lastModifiedTimeAfter = a} :: ListTransformJobs) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only transform jobs modified before the specified
+-- time.
+listTransformJobs_lastModifiedTimeBefore :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.UTCTime)
+listTransformJobs_lastModifiedTimeBefore = Lens.lens (\ListTransformJobs' {lastModifiedTimeBefore} -> lastModifiedTimeBefore) (\s@ListTransformJobs' {} a -> s {lastModifiedTimeBefore = a} :: ListTransformJobs) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of transform jobs to return in the response. The
+-- default value is @10@.
+listTransformJobs_maxResults :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.Natural)
+listTransformJobs_maxResults = Lens.lens (\ListTransformJobs' {maxResults} -> maxResults) (\s@ListTransformJobs' {} a -> s {maxResults = a} :: ListTransformJobs)
+
+-- | A string in the transform job name. This filter returns only transform
+-- jobs whose name contains the specified string.
+listTransformJobs_nameContains :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.Text)
+listTransformJobs_nameContains = Lens.lens (\ListTransformJobs' {nameContains} -> nameContains) (\s@ListTransformJobs' {} a -> s {nameContains = a} :: ListTransformJobs)
+
+-- | If the result of the previous @ListTransformJobs@ request was truncated,
+-- the response includes a @NextToken@. To retrieve the next set of
+-- transform jobs, use the token in the next request.
+listTransformJobs_nextToken :: Lens.Lens' ListTransformJobs (Prelude.Maybe Prelude.Text)
+listTransformJobs_nextToken = Lens.lens (\ListTransformJobs' {nextToken} -> nextToken) (\s@ListTransformJobs' {} a -> s {nextToken = a} :: ListTransformJobs)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listTransformJobs_sortBy :: Lens.Lens' ListTransformJobs (Prelude.Maybe SortBy)
+listTransformJobs_sortBy = Lens.lens (\ListTransformJobs' {sortBy} -> sortBy) (\s@ListTransformJobs' {} a -> s {sortBy = a} :: ListTransformJobs)
+
+-- | The sort order for results. The default is @Descending@.
+listTransformJobs_sortOrder :: Lens.Lens' ListTransformJobs (Prelude.Maybe SortOrder)
+listTransformJobs_sortOrder = Lens.lens (\ListTransformJobs' {sortOrder} -> sortOrder) (\s@ListTransformJobs' {} a -> s {sortOrder = a} :: ListTransformJobs)
+
+-- | A filter that retrieves only transform jobs with a specific status.
+listTransformJobs_statusEquals :: Lens.Lens' ListTransformJobs (Prelude.Maybe TransformJobStatus)
+listTransformJobs_statusEquals = Lens.lens (\ListTransformJobs' {statusEquals} -> statusEquals) (\s@ListTransformJobs' {} a -> s {statusEquals = a} :: ListTransformJobs)
+
+instance Core.AWSPager ListTransformJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTransformJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listTransformJobsResponse_transformJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTransformJobs_nextToken
+          Lens..~ rs
+          Lens.^? listTransformJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTransformJobs where
+  type
+    AWSResponse ListTransformJobs =
+      ListTransformJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTransformJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "TransformJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListTransformJobs where
+  hashWithSalt _salt ListTransformJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTimeAfter
+      `Prelude.hashWithSalt` creationTimeBefore
+      `Prelude.hashWithSalt` lastModifiedTimeAfter
+      `Prelude.hashWithSalt` lastModifiedTimeBefore
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListTransformJobs where
+  rnf ListTransformJobs' {..} =
+    Prelude.rnf creationTimeAfter
+      `Prelude.seq` Prelude.rnf creationTimeBefore
+      `Prelude.seq` Prelude.rnf lastModifiedTimeAfter
+      `Prelude.seq` Prelude.rnf lastModifiedTimeBefore
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListTransformJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListTransformJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTransformJobs where
+  toJSON ListTransformJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreationTimeAfter" Data..=)
+              Prelude.<$> creationTimeAfter,
+            ("CreationTimeBefore" Data..=)
+              Prelude.<$> creationTimeBefore,
+            ("LastModifiedTimeAfter" Data..=)
+              Prelude.<$> lastModifiedTimeAfter,
+            ("LastModifiedTimeBefore" Data..=)
+              Prelude.<$> lastModifiedTimeBefore,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListTransformJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTransformJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTransformJobsResponse' smart constructor.
+data ListTransformJobsResponse = ListTransformJobsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of transform jobs, use it in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @TransformJobSummary@ objects.
+    transformJobSummaries :: [TransformJobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTransformJobsResponse' 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:
+--
+-- 'nextToken', 'listTransformJobsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of transform jobs, use it in the next request.
+--
+-- 'httpStatus', 'listTransformJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'transformJobSummaries', 'listTransformJobsResponse_transformJobSummaries' - An array of @TransformJobSummary@ objects.
+newListTransformJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTransformJobsResponse
+newListTransformJobsResponse pHttpStatus_ =
+  ListTransformJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      transformJobSummaries = Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of transform jobs, use it in the next request.
+listTransformJobsResponse_nextToken :: Lens.Lens' ListTransformJobsResponse (Prelude.Maybe Prelude.Text)
+listTransformJobsResponse_nextToken = Lens.lens (\ListTransformJobsResponse' {nextToken} -> nextToken) (\s@ListTransformJobsResponse' {} a -> s {nextToken = a} :: ListTransformJobsResponse)
+
+-- | The response's http status code.
+listTransformJobsResponse_httpStatus :: Lens.Lens' ListTransformJobsResponse Prelude.Int
+listTransformJobsResponse_httpStatus = Lens.lens (\ListTransformJobsResponse' {httpStatus} -> httpStatus) (\s@ListTransformJobsResponse' {} a -> s {httpStatus = a} :: ListTransformJobsResponse)
+
+-- | An array of @TransformJobSummary@ objects.
+listTransformJobsResponse_transformJobSummaries :: Lens.Lens' ListTransformJobsResponse [TransformJobSummary]
+listTransformJobsResponse_transformJobSummaries = Lens.lens (\ListTransformJobsResponse' {transformJobSummaries} -> transformJobSummaries) (\s@ListTransformJobsResponse' {} a -> s {transformJobSummaries = a} :: ListTransformJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListTransformJobsResponse where
+  rnf ListTransformJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf transformJobSummaries
diff --git a/gen/Amazonka/SageMaker/ListTrialComponents.hs b/gen/Amazonka/SageMaker/ListTrialComponents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListTrialComponents.hs
@@ -0,0 +1,352 @@
+{-# 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.ListTrialComponents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the trial components in your account. You can sort the list by
+-- trial component name or creation time. You can filter the list to show
+-- only components that were created in a specific time range. You can also
+-- filter on one of the following:
+--
+-- -   @ExperimentName@
+--
+-- -   @SourceArn@
+--
+-- -   @TrialName@
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListTrialComponents
+  ( -- * Creating a Request
+    ListTrialComponents (..),
+    newListTrialComponents,
+
+    -- * Request Lenses
+    listTrialComponents_createdAfter,
+    listTrialComponents_createdBefore,
+    listTrialComponents_experimentName,
+    listTrialComponents_maxResults,
+    listTrialComponents_nextToken,
+    listTrialComponents_sortBy,
+    listTrialComponents_sortOrder,
+    listTrialComponents_sourceArn,
+    listTrialComponents_trialName,
+
+    -- * Destructuring the Response
+    ListTrialComponentsResponse (..),
+    newListTrialComponentsResponse,
+
+    -- * Response Lenses
+    listTrialComponentsResponse_nextToken,
+    listTrialComponentsResponse_trialComponentSummaries,
+    listTrialComponentsResponse_httpStatus,
+  )
+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:/ 'newListTrialComponents' smart constructor.
+data ListTrialComponents = ListTrialComponents'
+  { -- | A filter that returns only components created after the specified time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only components created before the specified time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only components that are part of the specified
+    -- experiment. If you specify @ExperimentName@, you can\'t filter by
+    -- @SourceArn@ or @TrialName@.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of components to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListTrialComponents@ didn\'t return the full
+    -- set of components, the call returns a token for getting the next set of
+    -- components.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortTrialComponentsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only components that have the specified source
+    -- Amazon Resource Name (ARN). If you specify @SourceArn@, you can\'t
+    -- filter by @ExperimentName@ or @TrialName@.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | A filter that returns only components that are part of the specified
+    -- trial. If you specify @TrialName@, you can\'t filter by @ExperimentName@
+    -- or @SourceArn@.
+    trialName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrialComponents' 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:
+--
+-- 'createdAfter', 'listTrialComponents_createdAfter' - A filter that returns only components created after the specified time.
+--
+-- 'createdBefore', 'listTrialComponents_createdBefore' - A filter that returns only components created before the specified time.
+--
+-- 'experimentName', 'listTrialComponents_experimentName' - A filter that returns only components that are part of the specified
+-- experiment. If you specify @ExperimentName@, you can\'t filter by
+-- @SourceArn@ or @TrialName@.
+--
+-- 'maxResults', 'listTrialComponents_maxResults' - The maximum number of components to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listTrialComponents_nextToken' - If the previous call to @ListTrialComponents@ didn\'t return the full
+-- set of components, the call returns a token for getting the next set of
+-- components.
+--
+-- 'sortBy', 'listTrialComponents_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listTrialComponents_sortOrder' - The sort order. The default value is @Descending@.
+--
+-- 'sourceArn', 'listTrialComponents_sourceArn' - A filter that returns only components that have the specified source
+-- Amazon Resource Name (ARN). If you specify @SourceArn@, you can\'t
+-- filter by @ExperimentName@ or @TrialName@.
+--
+-- 'trialName', 'listTrialComponents_trialName' - A filter that returns only components that are part of the specified
+-- trial. If you specify @TrialName@, you can\'t filter by @ExperimentName@
+-- or @SourceArn@.
+newListTrialComponents ::
+  ListTrialComponents
+newListTrialComponents =
+  ListTrialComponents'
+    { createdAfter =
+        Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      trialName = Prelude.Nothing
+    }
+
+-- | A filter that returns only components created after the specified time.
+listTrialComponents_createdAfter :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.UTCTime)
+listTrialComponents_createdAfter = Lens.lens (\ListTrialComponents' {createdAfter} -> createdAfter) (\s@ListTrialComponents' {} a -> s {createdAfter = a} :: ListTrialComponents) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only components created before the specified time.
+listTrialComponents_createdBefore :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.UTCTime)
+listTrialComponents_createdBefore = Lens.lens (\ListTrialComponents' {createdBefore} -> createdBefore) (\s@ListTrialComponents' {} a -> s {createdBefore = a} :: ListTrialComponents) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only components that are part of the specified
+-- experiment. If you specify @ExperimentName@, you can\'t filter by
+-- @SourceArn@ or @TrialName@.
+listTrialComponents_experimentName :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.Text)
+listTrialComponents_experimentName = Lens.lens (\ListTrialComponents' {experimentName} -> experimentName) (\s@ListTrialComponents' {} a -> s {experimentName = a} :: ListTrialComponents)
+
+-- | The maximum number of components to return in the response. The default
+-- value is 10.
+listTrialComponents_maxResults :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.Natural)
+listTrialComponents_maxResults = Lens.lens (\ListTrialComponents' {maxResults} -> maxResults) (\s@ListTrialComponents' {} a -> s {maxResults = a} :: ListTrialComponents)
+
+-- | If the previous call to @ListTrialComponents@ didn\'t return the full
+-- set of components, the call returns a token for getting the next set of
+-- components.
+listTrialComponents_nextToken :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.Text)
+listTrialComponents_nextToken = Lens.lens (\ListTrialComponents' {nextToken} -> nextToken) (\s@ListTrialComponents' {} a -> s {nextToken = a} :: ListTrialComponents)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listTrialComponents_sortBy :: Lens.Lens' ListTrialComponents (Prelude.Maybe SortTrialComponentsBy)
+listTrialComponents_sortBy = Lens.lens (\ListTrialComponents' {sortBy} -> sortBy) (\s@ListTrialComponents' {} a -> s {sortBy = a} :: ListTrialComponents)
+
+-- | The sort order. The default value is @Descending@.
+listTrialComponents_sortOrder :: Lens.Lens' ListTrialComponents (Prelude.Maybe SortOrder)
+listTrialComponents_sortOrder = Lens.lens (\ListTrialComponents' {sortOrder} -> sortOrder) (\s@ListTrialComponents' {} a -> s {sortOrder = a} :: ListTrialComponents)
+
+-- | A filter that returns only components that have the specified source
+-- Amazon Resource Name (ARN). If you specify @SourceArn@, you can\'t
+-- filter by @ExperimentName@ or @TrialName@.
+listTrialComponents_sourceArn :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.Text)
+listTrialComponents_sourceArn = Lens.lens (\ListTrialComponents' {sourceArn} -> sourceArn) (\s@ListTrialComponents' {} a -> s {sourceArn = a} :: ListTrialComponents)
+
+-- | A filter that returns only components that are part of the specified
+-- trial. If you specify @TrialName@, you can\'t filter by @ExperimentName@
+-- or @SourceArn@.
+listTrialComponents_trialName :: Lens.Lens' ListTrialComponents (Prelude.Maybe Prelude.Text)
+listTrialComponents_trialName = Lens.lens (\ListTrialComponents' {trialName} -> trialName) (\s@ListTrialComponents' {} a -> s {trialName = a} :: ListTrialComponents)
+
+instance Core.AWSPager ListTrialComponents where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTrialComponentsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTrialComponentsResponse_trialComponentSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTrialComponents_nextToken
+          Lens..~ rs
+          Lens.^? listTrialComponentsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTrialComponents where
+  type
+    AWSResponse ListTrialComponents =
+      ListTrialComponentsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTrialComponentsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "TrialComponentSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTrialComponents where
+  hashWithSalt _salt ListTrialComponents' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData ListTrialComponents where
+  rnf ListTrialComponents' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf trialName
+
+instance Data.ToHeaders ListTrialComponents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.ListTrialComponents" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTrialComponents where
+  toJSON ListTrialComponents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("ExperimentName" Data..=)
+              Prelude.<$> experimentName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("SourceArn" Data..=) Prelude.<$> sourceArn,
+            ("TrialName" Data..=) Prelude.<$> trialName
+          ]
+      )
+
+instance Data.ToPath ListTrialComponents where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTrialComponents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTrialComponentsResponse' smart constructor.
+data ListTrialComponentsResponse = ListTrialComponentsResponse'
+  { -- | A token for getting the next set of components, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of the summaries of your trial components.
+    trialComponentSummaries :: Prelude.Maybe [TrialComponentSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrialComponentsResponse' 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:
+--
+-- 'nextToken', 'listTrialComponentsResponse_nextToken' - A token for getting the next set of components, if there are any.
+--
+-- 'trialComponentSummaries', 'listTrialComponentsResponse_trialComponentSummaries' - A list of the summaries of your trial components.
+--
+-- 'httpStatus', 'listTrialComponentsResponse_httpStatus' - The response's http status code.
+newListTrialComponentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTrialComponentsResponse
+newListTrialComponentsResponse pHttpStatus_ =
+  ListTrialComponentsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      trialComponentSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A token for getting the next set of components, if there are any.
+listTrialComponentsResponse_nextToken :: Lens.Lens' ListTrialComponentsResponse (Prelude.Maybe Prelude.Text)
+listTrialComponentsResponse_nextToken = Lens.lens (\ListTrialComponentsResponse' {nextToken} -> nextToken) (\s@ListTrialComponentsResponse' {} a -> s {nextToken = a} :: ListTrialComponentsResponse)
+
+-- | A list of the summaries of your trial components.
+listTrialComponentsResponse_trialComponentSummaries :: Lens.Lens' ListTrialComponentsResponse (Prelude.Maybe [TrialComponentSummary])
+listTrialComponentsResponse_trialComponentSummaries = Lens.lens (\ListTrialComponentsResponse' {trialComponentSummaries} -> trialComponentSummaries) (\s@ListTrialComponentsResponse' {} a -> s {trialComponentSummaries = a} :: ListTrialComponentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTrialComponentsResponse_httpStatus :: Lens.Lens' ListTrialComponentsResponse Prelude.Int
+listTrialComponentsResponse_httpStatus = Lens.lens (\ListTrialComponentsResponse' {httpStatus} -> httpStatus) (\s@ListTrialComponentsResponse' {} a -> s {httpStatus = a} :: ListTrialComponentsResponse)
+
+instance Prelude.NFData ListTrialComponentsResponse where
+  rnf ListTrialComponentsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf trialComponentSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListTrials.hs b/gen/Amazonka/SageMaker/ListTrials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListTrials.hs
@@ -0,0 +1,312 @@
+{-# 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.ListTrials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the trials in your account. Specify an experiment name to limit
+-- the list to the trials that are part of that experiment. Specify a trial
+-- component name to limit the list to the trials that associated with that
+-- trial component. The list can be filtered to show only trials that were
+-- created in a specific time range. The list can be sorted by trial name
+-- or creation time.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListTrials
+  ( -- * Creating a Request
+    ListTrials (..),
+    newListTrials,
+
+    -- * Request Lenses
+    listTrials_createdAfter,
+    listTrials_createdBefore,
+    listTrials_experimentName,
+    listTrials_maxResults,
+    listTrials_nextToken,
+    listTrials_sortBy,
+    listTrials_sortOrder,
+    listTrials_trialComponentName,
+
+    -- * Destructuring the Response
+    ListTrialsResponse (..),
+    newListTrialsResponse,
+
+    -- * Response Lenses
+    listTrialsResponse_nextToken,
+    listTrialsResponse_trialSummaries,
+    listTrialsResponse_httpStatus,
+  )
+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:/ 'newListTrials' smart constructor.
+data ListTrials = ListTrials'
+  { -- | A filter that returns only trials created after the specified time.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only trials created before the specified time.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | A filter that returns only trials that are part of the specified
+    -- experiment.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of trials to return in the response. The default
+    -- value is 10.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous call to @ListTrials@ didn\'t return the full set of
+    -- trials, the call returns a token for getting the next set of trials.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The property used to sort results. The default value is @CreationTime@.
+    sortBy :: Prelude.Maybe SortTrialsBy,
+    -- | The sort order. The default value is @Descending@.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that returns only trials that are associated with the specified
+    -- trial component.
+    trialComponentName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrials' 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:
+--
+-- 'createdAfter', 'listTrials_createdAfter' - A filter that returns only trials created after the specified time.
+--
+-- 'createdBefore', 'listTrials_createdBefore' - A filter that returns only trials created before the specified time.
+--
+-- 'experimentName', 'listTrials_experimentName' - A filter that returns only trials that are part of the specified
+-- experiment.
+--
+-- 'maxResults', 'listTrials_maxResults' - The maximum number of trials to return in the response. The default
+-- value is 10.
+--
+-- 'nextToken', 'listTrials_nextToken' - If the previous call to @ListTrials@ didn\'t return the full set of
+-- trials, the call returns a token for getting the next set of trials.
+--
+-- 'sortBy', 'listTrials_sortBy' - The property used to sort results. The default value is @CreationTime@.
+--
+-- 'sortOrder', 'listTrials_sortOrder' - The sort order. The default value is @Descending@.
+--
+-- 'trialComponentName', 'listTrials_trialComponentName' - A filter that returns only trials that are associated with the specified
+-- trial component.
+newListTrials ::
+  ListTrials
+newListTrials =
+  ListTrials'
+    { createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      trialComponentName = Prelude.Nothing
+    }
+
+-- | A filter that returns only trials created after the specified time.
+listTrials_createdAfter :: Lens.Lens' ListTrials (Prelude.Maybe Prelude.UTCTime)
+listTrials_createdAfter = Lens.lens (\ListTrials' {createdAfter} -> createdAfter) (\s@ListTrials' {} a -> s {createdAfter = a} :: ListTrials) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only trials created before the specified time.
+listTrials_createdBefore :: Lens.Lens' ListTrials (Prelude.Maybe Prelude.UTCTime)
+listTrials_createdBefore = Lens.lens (\ListTrials' {createdBefore} -> createdBefore) (\s@ListTrials' {} a -> s {createdBefore = a} :: ListTrials) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that returns only trials that are part of the specified
+-- experiment.
+listTrials_experimentName :: Lens.Lens' ListTrials (Prelude.Maybe Prelude.Text)
+listTrials_experimentName = Lens.lens (\ListTrials' {experimentName} -> experimentName) (\s@ListTrials' {} a -> s {experimentName = a} :: ListTrials)
+
+-- | The maximum number of trials to return in the response. The default
+-- value is 10.
+listTrials_maxResults :: Lens.Lens' ListTrials (Prelude.Maybe Prelude.Natural)
+listTrials_maxResults = Lens.lens (\ListTrials' {maxResults} -> maxResults) (\s@ListTrials' {} a -> s {maxResults = a} :: ListTrials)
+
+-- | If the previous call to @ListTrials@ didn\'t return the full set of
+-- trials, the call returns a token for getting the next set of trials.
+listTrials_nextToken :: Lens.Lens' ListTrials (Prelude.Maybe Prelude.Text)
+listTrials_nextToken = Lens.lens (\ListTrials' {nextToken} -> nextToken) (\s@ListTrials' {} a -> s {nextToken = a} :: ListTrials)
+
+-- | The property used to sort results. The default value is @CreationTime@.
+listTrials_sortBy :: Lens.Lens' ListTrials (Prelude.Maybe SortTrialsBy)
+listTrials_sortBy = Lens.lens (\ListTrials' {sortBy} -> sortBy) (\s@ListTrials' {} a -> s {sortBy = a} :: ListTrials)
+
+-- | The sort order. The default value is @Descending@.
+listTrials_sortOrder :: Lens.Lens' ListTrials (Prelude.Maybe SortOrder)
+listTrials_sortOrder = Lens.lens (\ListTrials' {sortOrder} -> sortOrder) (\s@ListTrials' {} a -> s {sortOrder = a} :: ListTrials)
+
+-- | A filter that returns only trials that are associated with the specified
+-- trial component.
+listTrials_trialComponentName :: Lens.Lens' ListTrials (Prelude.Maybe Prelude.Text)
+listTrials_trialComponentName = Lens.lens (\ListTrials' {trialComponentName} -> trialComponentName) (\s@ListTrials' {} a -> s {trialComponentName = a} :: ListTrials)
+
+instance Core.AWSPager ListTrials where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTrialsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTrialsResponse_trialSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTrials_nextToken
+          Lens..~ rs
+          Lens.^? listTrialsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTrials where
+  type AWSResponse ListTrials = ListTrialsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTrialsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "TrialSummaries" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTrials where
+  hashWithSalt _salt ListTrials' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` trialComponentName
+
+instance Prelude.NFData ListTrials where
+  rnf ListTrials' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf trialComponentName
+
+instance Data.ToHeaders ListTrials where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListTrials" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTrials where
+  toJSON ListTrials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("ExperimentName" Data..=)
+              Prelude.<$> experimentName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("TrialComponentName" Data..=)
+              Prelude.<$> trialComponentName
+          ]
+      )
+
+instance Data.ToPath ListTrials where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTrials where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTrialsResponse' smart constructor.
+data ListTrialsResponse = ListTrialsResponse'
+  { -- | A token for getting the next set of trials, if there are any.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of the summaries of your trials.
+    trialSummaries :: Prelude.Maybe [TrialSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTrialsResponse' 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:
+--
+-- 'nextToken', 'listTrialsResponse_nextToken' - A token for getting the next set of trials, if there are any.
+--
+-- 'trialSummaries', 'listTrialsResponse_trialSummaries' - A list of the summaries of your trials.
+--
+-- 'httpStatus', 'listTrialsResponse_httpStatus' - The response's http status code.
+newListTrialsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTrialsResponse
+newListTrialsResponse pHttpStatus_ =
+  ListTrialsResponse'
+    { nextToken = Prelude.Nothing,
+      trialSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A token for getting the next set of trials, if there are any.
+listTrialsResponse_nextToken :: Lens.Lens' ListTrialsResponse (Prelude.Maybe Prelude.Text)
+listTrialsResponse_nextToken = Lens.lens (\ListTrialsResponse' {nextToken} -> nextToken) (\s@ListTrialsResponse' {} a -> s {nextToken = a} :: ListTrialsResponse)
+
+-- | A list of the summaries of your trials.
+listTrialsResponse_trialSummaries :: Lens.Lens' ListTrialsResponse (Prelude.Maybe [TrialSummary])
+listTrialsResponse_trialSummaries = Lens.lens (\ListTrialsResponse' {trialSummaries} -> trialSummaries) (\s@ListTrialsResponse' {} a -> s {trialSummaries = a} :: ListTrialsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTrialsResponse_httpStatus :: Lens.Lens' ListTrialsResponse Prelude.Int
+listTrialsResponse_httpStatus = Lens.lens (\ListTrialsResponse' {httpStatus} -> httpStatus) (\s@ListTrialsResponse' {} a -> s {httpStatus = a} :: ListTrialsResponse)
+
+instance Prelude.NFData ListTrialsResponse where
+  rnf ListTrialsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf trialSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListUserProfiles.hs b/gen/Amazonka/SageMaker/ListUserProfiles.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListUserProfiles.hs
@@ -0,0 +1,278 @@
+{-# 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.ListUserProfiles
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists user profiles.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListUserProfiles
+  ( -- * Creating a Request
+    ListUserProfiles (..),
+    newListUserProfiles,
+
+    -- * Request Lenses
+    listUserProfiles_domainIdEquals,
+    listUserProfiles_maxResults,
+    listUserProfiles_nextToken,
+    listUserProfiles_sortBy,
+    listUserProfiles_sortOrder,
+    listUserProfiles_userProfileNameContains,
+
+    -- * Destructuring the Response
+    ListUserProfilesResponse (..),
+    newListUserProfilesResponse,
+
+    -- * Response Lenses
+    listUserProfilesResponse_nextToken,
+    listUserProfilesResponse_userProfiles,
+    listUserProfilesResponse_httpStatus,
+  )
+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:/ 'newListUserProfiles' smart constructor.
+data ListUserProfiles = ListUserProfiles'
+  { -- | A parameter by which to filter the results.
+    domainIdEquals :: Prelude.Maybe Prelude.Text,
+    -- | Returns a list up to a specified limit.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The parameter by which to sort the results. The default is CreationTime.
+    sortBy :: Prelude.Maybe UserProfileSortKey,
+    -- | The sort order for the results. The default is Ascending.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A parameter by which to filter the results.
+    userProfileNameContains :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUserProfiles' 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:
+--
+-- 'domainIdEquals', 'listUserProfiles_domainIdEquals' - A parameter by which to filter the results.
+--
+-- 'maxResults', 'listUserProfiles_maxResults' - Returns a list up to a specified limit.
+--
+-- 'nextToken', 'listUserProfiles_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'sortBy', 'listUserProfiles_sortBy' - The parameter by which to sort the results. The default is CreationTime.
+--
+-- 'sortOrder', 'listUserProfiles_sortOrder' - The sort order for the results. The default is Ascending.
+--
+-- 'userProfileNameContains', 'listUserProfiles_userProfileNameContains' - A parameter by which to filter the results.
+newListUserProfiles ::
+  ListUserProfiles
+newListUserProfiles =
+  ListUserProfiles'
+    { domainIdEquals = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      userProfileNameContains = Prelude.Nothing
+    }
+
+-- | A parameter by which to filter the results.
+listUserProfiles_domainIdEquals :: Lens.Lens' ListUserProfiles (Prelude.Maybe Prelude.Text)
+listUserProfiles_domainIdEquals = Lens.lens (\ListUserProfiles' {domainIdEquals} -> domainIdEquals) (\s@ListUserProfiles' {} a -> s {domainIdEquals = a} :: ListUserProfiles)
+
+-- | Returns a list up to a specified limit.
+listUserProfiles_maxResults :: Lens.Lens' ListUserProfiles (Prelude.Maybe Prelude.Natural)
+listUserProfiles_maxResults = Lens.lens (\ListUserProfiles' {maxResults} -> maxResults) (\s@ListUserProfiles' {} a -> s {maxResults = a} :: ListUserProfiles)
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listUserProfiles_nextToken :: Lens.Lens' ListUserProfiles (Prelude.Maybe Prelude.Text)
+listUserProfiles_nextToken = Lens.lens (\ListUserProfiles' {nextToken} -> nextToken) (\s@ListUserProfiles' {} a -> s {nextToken = a} :: ListUserProfiles)
+
+-- | The parameter by which to sort the results. The default is CreationTime.
+listUserProfiles_sortBy :: Lens.Lens' ListUserProfiles (Prelude.Maybe UserProfileSortKey)
+listUserProfiles_sortBy = Lens.lens (\ListUserProfiles' {sortBy} -> sortBy) (\s@ListUserProfiles' {} a -> s {sortBy = a} :: ListUserProfiles)
+
+-- | The sort order for the results. The default is Ascending.
+listUserProfiles_sortOrder :: Lens.Lens' ListUserProfiles (Prelude.Maybe SortOrder)
+listUserProfiles_sortOrder = Lens.lens (\ListUserProfiles' {sortOrder} -> sortOrder) (\s@ListUserProfiles' {} a -> s {sortOrder = a} :: ListUserProfiles)
+
+-- | A parameter by which to filter the results.
+listUserProfiles_userProfileNameContains :: Lens.Lens' ListUserProfiles (Prelude.Maybe Prelude.Text)
+listUserProfiles_userProfileNameContains = Lens.lens (\ListUserProfiles' {userProfileNameContains} -> userProfileNameContains) (\s@ListUserProfiles' {} a -> s {userProfileNameContains = a} :: ListUserProfiles)
+
+instance Core.AWSPager ListUserProfiles where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listUserProfilesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listUserProfilesResponse_userProfiles
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listUserProfiles_nextToken
+          Lens..~ rs
+          Lens.^? listUserProfilesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListUserProfiles where
+  type
+    AWSResponse ListUserProfiles =
+      ListUserProfilesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListUserProfilesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "UserProfiles" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListUserProfiles where
+  hashWithSalt _salt ListUserProfiles' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainIdEquals
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` userProfileNameContains
+
+instance Prelude.NFData ListUserProfiles where
+  rnf ListUserProfiles' {..} =
+    Prelude.rnf domainIdEquals
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf userProfileNameContains
+
+instance Data.ToHeaders ListUserProfiles where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListUserProfiles" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListUserProfiles where
+  toJSON ListUserProfiles' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DomainIdEquals" Data..=)
+              Prelude.<$> domainIdEquals,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("UserProfileNameContains" Data..=)
+              Prelude.<$> userProfileNameContains
+          ]
+      )
+
+instance Data.ToPath ListUserProfiles where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListUserProfiles where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListUserProfilesResponse' smart constructor.
+data ListUserProfilesResponse = ListUserProfilesResponse'
+  { -- | If the previous response was truncated, you will receive this token. Use
+    -- it in your next request to receive the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of user profiles.
+    userProfiles :: Prelude.Maybe [UserProfileDetails],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUserProfilesResponse' 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:
+--
+-- 'nextToken', 'listUserProfilesResponse_nextToken' - If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+--
+-- 'userProfiles', 'listUserProfilesResponse_userProfiles' - The list of user profiles.
+--
+-- 'httpStatus', 'listUserProfilesResponse_httpStatus' - The response's http status code.
+newListUserProfilesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListUserProfilesResponse
+newListUserProfilesResponse pHttpStatus_ =
+  ListUserProfilesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      userProfiles = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the previous response was truncated, you will receive this token. Use
+-- it in your next request to receive the next set of results.
+listUserProfilesResponse_nextToken :: Lens.Lens' ListUserProfilesResponse (Prelude.Maybe Prelude.Text)
+listUserProfilesResponse_nextToken = Lens.lens (\ListUserProfilesResponse' {nextToken} -> nextToken) (\s@ListUserProfilesResponse' {} a -> s {nextToken = a} :: ListUserProfilesResponse)
+
+-- | The list of user profiles.
+listUserProfilesResponse_userProfiles :: Lens.Lens' ListUserProfilesResponse (Prelude.Maybe [UserProfileDetails])
+listUserProfilesResponse_userProfiles = Lens.lens (\ListUserProfilesResponse' {userProfiles} -> userProfiles) (\s@ListUserProfilesResponse' {} a -> s {userProfiles = a} :: ListUserProfilesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listUserProfilesResponse_httpStatus :: Lens.Lens' ListUserProfilesResponse Prelude.Int
+listUserProfilesResponse_httpStatus = Lens.lens (\ListUserProfilesResponse' {httpStatus} -> httpStatus) (\s@ListUserProfilesResponse' {} a -> s {httpStatus = a} :: ListUserProfilesResponse)
+
+instance Prelude.NFData ListUserProfilesResponse where
+  rnf ListUserProfilesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf userProfiles
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/ListWorkforces.hs b/gen/Amazonka/SageMaker/ListWorkforces.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListWorkforces.hs
@@ -0,0 +1,259 @@
+{-# 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.ListWorkforces
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this operation to list all private and vendor workforces in an
+-- Amazon Web Services Region. Note that you can only have one private
+-- workforce per Amazon Web Services Region.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListWorkforces
+  ( -- * Creating a Request
+    ListWorkforces (..),
+    newListWorkforces,
+
+    -- * Request Lenses
+    listWorkforces_maxResults,
+    listWorkforces_nameContains,
+    listWorkforces_nextToken,
+    listWorkforces_sortBy,
+    listWorkforces_sortOrder,
+
+    -- * Destructuring the Response
+    ListWorkforcesResponse (..),
+    newListWorkforcesResponse,
+
+    -- * Response Lenses
+    listWorkforcesResponse_nextToken,
+    listWorkforcesResponse_httpStatus,
+    listWorkforcesResponse_workforces,
+  )
+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:/ 'newListWorkforces' smart constructor.
+data ListWorkforces = ListWorkforces'
+  { -- | The maximum number of workforces returned in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A filter you can use to search for workforces using part of the
+    -- workforce name.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | A token to resume pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Sort workforces using the workforce name or creation date.
+    sortBy :: Prelude.Maybe ListWorkforcesSortByOptions,
+    -- | Sort workforces in ascending or descending order.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkforces' 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:
+--
+-- 'maxResults', 'listWorkforces_maxResults' - The maximum number of workforces returned in the response.
+--
+-- 'nameContains', 'listWorkforces_nameContains' - A filter you can use to search for workforces using part of the
+-- workforce name.
+--
+-- 'nextToken', 'listWorkforces_nextToken' - A token to resume pagination.
+--
+-- 'sortBy', 'listWorkforces_sortBy' - Sort workforces using the workforce name or creation date.
+--
+-- 'sortOrder', 'listWorkforces_sortOrder' - Sort workforces in ascending or descending order.
+newListWorkforces ::
+  ListWorkforces
+newListWorkforces =
+  ListWorkforces'
+    { maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | The maximum number of workforces returned in the response.
+listWorkforces_maxResults :: Lens.Lens' ListWorkforces (Prelude.Maybe Prelude.Natural)
+listWorkforces_maxResults = Lens.lens (\ListWorkforces' {maxResults} -> maxResults) (\s@ListWorkforces' {} a -> s {maxResults = a} :: ListWorkforces)
+
+-- | A filter you can use to search for workforces using part of the
+-- workforce name.
+listWorkforces_nameContains :: Lens.Lens' ListWorkforces (Prelude.Maybe Prelude.Text)
+listWorkforces_nameContains = Lens.lens (\ListWorkforces' {nameContains} -> nameContains) (\s@ListWorkforces' {} a -> s {nameContains = a} :: ListWorkforces)
+
+-- | A token to resume pagination.
+listWorkforces_nextToken :: Lens.Lens' ListWorkforces (Prelude.Maybe Prelude.Text)
+listWorkforces_nextToken = Lens.lens (\ListWorkforces' {nextToken} -> nextToken) (\s@ListWorkforces' {} a -> s {nextToken = a} :: ListWorkforces)
+
+-- | Sort workforces using the workforce name or creation date.
+listWorkforces_sortBy :: Lens.Lens' ListWorkforces (Prelude.Maybe ListWorkforcesSortByOptions)
+listWorkforces_sortBy = Lens.lens (\ListWorkforces' {sortBy} -> sortBy) (\s@ListWorkforces' {} a -> s {sortBy = a} :: ListWorkforces)
+
+-- | Sort workforces in ascending or descending order.
+listWorkforces_sortOrder :: Lens.Lens' ListWorkforces (Prelude.Maybe SortOrder)
+listWorkforces_sortOrder = Lens.lens (\ListWorkforces' {sortOrder} -> sortOrder) (\s@ListWorkforces' {} a -> s {sortOrder = a} :: ListWorkforces)
+
+instance Core.AWSPager ListWorkforces where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listWorkforcesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. listWorkforcesResponse_workforces) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listWorkforces_nextToken
+          Lens..~ rs
+          Lens.^? listWorkforcesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListWorkforces where
+  type
+    AWSResponse ListWorkforces =
+      ListWorkforcesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListWorkforcesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "Workforces" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListWorkforces where
+  hashWithSalt _salt ListWorkforces' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListWorkforces where
+  rnf ListWorkforces' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListWorkforces where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListWorkforces" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListWorkforces where
+  toJSON ListWorkforces' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListWorkforces where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListWorkforces where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListWorkforcesResponse' smart constructor.
+data ListWorkforcesResponse = ListWorkforcesResponse'
+  { -- | A token to resume pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list containing information about your workforce.
+    workforces :: [Workforce]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkforcesResponse' 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:
+--
+-- 'nextToken', 'listWorkforcesResponse_nextToken' - A token to resume pagination.
+--
+-- 'httpStatus', 'listWorkforcesResponse_httpStatus' - The response's http status code.
+--
+-- 'workforces', 'listWorkforcesResponse_workforces' - A list containing information about your workforce.
+newListWorkforcesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListWorkforcesResponse
+newListWorkforcesResponse pHttpStatus_ =
+  ListWorkforcesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      workforces = Prelude.mempty
+    }
+
+-- | A token to resume pagination.
+listWorkforcesResponse_nextToken :: Lens.Lens' ListWorkforcesResponse (Prelude.Maybe Prelude.Text)
+listWorkforcesResponse_nextToken = Lens.lens (\ListWorkforcesResponse' {nextToken} -> nextToken) (\s@ListWorkforcesResponse' {} a -> s {nextToken = a} :: ListWorkforcesResponse)
+
+-- | The response's http status code.
+listWorkforcesResponse_httpStatus :: Lens.Lens' ListWorkforcesResponse Prelude.Int
+listWorkforcesResponse_httpStatus = Lens.lens (\ListWorkforcesResponse' {httpStatus} -> httpStatus) (\s@ListWorkforcesResponse' {} a -> s {httpStatus = a} :: ListWorkforcesResponse)
+
+-- | A list containing information about your workforce.
+listWorkforcesResponse_workforces :: Lens.Lens' ListWorkforcesResponse [Workforce]
+listWorkforcesResponse_workforces = Lens.lens (\ListWorkforcesResponse' {workforces} -> workforces) (\s@ListWorkforcesResponse' {} a -> s {workforces = a} :: ListWorkforcesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListWorkforcesResponse where
+  rnf ListWorkforcesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workforces
diff --git a/gen/Amazonka/SageMaker/ListWorkteams.hs b/gen/Amazonka/SageMaker/ListWorkteams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/ListWorkteams.hs
@@ -0,0 +1,267 @@
+{-# 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.ListWorkteams
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of private work teams that you have defined in a region. The
+-- list may be empty if no work team satisfies the filter specified in the
+-- @NameContains@ parameter.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.ListWorkteams
+  ( -- * Creating a Request
+    ListWorkteams (..),
+    newListWorkteams,
+
+    -- * Request Lenses
+    listWorkteams_maxResults,
+    listWorkteams_nameContains,
+    listWorkteams_nextToken,
+    listWorkteams_sortBy,
+    listWorkteams_sortOrder,
+
+    -- * Destructuring the Response
+    ListWorkteamsResponse (..),
+    newListWorkteamsResponse,
+
+    -- * Response Lenses
+    listWorkteamsResponse_nextToken,
+    listWorkteamsResponse_httpStatus,
+    listWorkteamsResponse_workteams,
+  )
+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:/ 'newListWorkteams' smart constructor.
+data ListWorkteams = ListWorkteams'
+  { -- | The maximum number of work teams to return in each page of the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A string in the work team\'s name. This filter returns only work teams
+    -- whose name contains the specified string.
+    nameContains :: Prelude.Maybe Prelude.Text,
+    -- | If the result of the previous @ListWorkteams@ request was truncated, the
+    -- response includes a @NextToken@. To retrieve the next set of labeling
+    -- jobs, use the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The field to sort results by. The default is @CreationTime@.
+    sortBy :: Prelude.Maybe ListWorkteamsSortByOptions,
+    -- | The sort order for results. The default is @Ascending@.
+    sortOrder :: Prelude.Maybe SortOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkteams' 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:
+--
+-- 'maxResults', 'listWorkteams_maxResults' - The maximum number of work teams to return in each page of the response.
+--
+-- 'nameContains', 'listWorkteams_nameContains' - A string in the work team\'s name. This filter returns only work teams
+-- whose name contains the specified string.
+--
+-- 'nextToken', 'listWorkteams_nextToken' - If the result of the previous @ListWorkteams@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of labeling
+-- jobs, use the token in the next request.
+--
+-- 'sortBy', 'listWorkteams_sortBy' - The field to sort results by. The default is @CreationTime@.
+--
+-- 'sortOrder', 'listWorkteams_sortOrder' - The sort order for results. The default is @Ascending@.
+newListWorkteams ::
+  ListWorkteams
+newListWorkteams =
+  ListWorkteams'
+    { maxResults = Prelude.Nothing,
+      nameContains = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing
+    }
+
+-- | The maximum number of work teams to return in each page of the response.
+listWorkteams_maxResults :: Lens.Lens' ListWorkteams (Prelude.Maybe Prelude.Natural)
+listWorkteams_maxResults = Lens.lens (\ListWorkteams' {maxResults} -> maxResults) (\s@ListWorkteams' {} a -> s {maxResults = a} :: ListWorkteams)
+
+-- | A string in the work team\'s name. This filter returns only work teams
+-- whose name contains the specified string.
+listWorkteams_nameContains :: Lens.Lens' ListWorkteams (Prelude.Maybe Prelude.Text)
+listWorkteams_nameContains = Lens.lens (\ListWorkteams' {nameContains} -> nameContains) (\s@ListWorkteams' {} a -> s {nameContains = a} :: ListWorkteams)
+
+-- | If the result of the previous @ListWorkteams@ request was truncated, the
+-- response includes a @NextToken@. To retrieve the next set of labeling
+-- jobs, use the token in the next request.
+listWorkteams_nextToken :: Lens.Lens' ListWorkteams (Prelude.Maybe Prelude.Text)
+listWorkteams_nextToken = Lens.lens (\ListWorkteams' {nextToken} -> nextToken) (\s@ListWorkteams' {} a -> s {nextToken = a} :: ListWorkteams)
+
+-- | The field to sort results by. The default is @CreationTime@.
+listWorkteams_sortBy :: Lens.Lens' ListWorkteams (Prelude.Maybe ListWorkteamsSortByOptions)
+listWorkteams_sortBy = Lens.lens (\ListWorkteams' {sortBy} -> sortBy) (\s@ListWorkteams' {} a -> s {sortBy = a} :: ListWorkteams)
+
+-- | The sort order for results. The default is @Ascending@.
+listWorkteams_sortOrder :: Lens.Lens' ListWorkteams (Prelude.Maybe SortOrder)
+listWorkteams_sortOrder = Lens.lens (\ListWorkteams' {sortOrder} -> sortOrder) (\s@ListWorkteams' {} a -> s {sortOrder = a} :: ListWorkteams)
+
+instance Core.AWSPager ListWorkteams where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listWorkteamsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. listWorkteamsResponse_workteams) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listWorkteams_nextToken
+          Lens..~ rs
+          Lens.^? listWorkteamsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListWorkteams where
+  type
+    AWSResponse ListWorkteams =
+      ListWorkteamsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListWorkteamsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "Workteams" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListWorkteams where
+  hashWithSalt _salt ListWorkteams' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nameContains
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+
+instance Prelude.NFData ListWorkteams where
+  rnf ListWorkteams' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nameContains
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+
+instance Data.ToHeaders ListWorkteams where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.ListWorkteams" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListWorkteams where
+  toJSON ListWorkteams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NameContains" Data..=) Prelude.<$> nameContains,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder
+          ]
+      )
+
+instance Data.ToPath ListWorkteams where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListWorkteams where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListWorkteamsResponse' smart constructor.
+data ListWorkteamsResponse = ListWorkteamsResponse'
+  { -- | If the response is truncated, Amazon SageMaker returns this token. To
+    -- retrieve the next set of work teams, use it in the subsequent request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @Workteam@ objects, each describing a work team.
+    workteams :: [Workteam]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListWorkteamsResponse' 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:
+--
+-- 'nextToken', 'listWorkteamsResponse_nextToken' - If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of work teams, use it in the subsequent request.
+--
+-- 'httpStatus', 'listWorkteamsResponse_httpStatus' - The response's http status code.
+--
+-- 'workteams', 'listWorkteamsResponse_workteams' - An array of @Workteam@ objects, each describing a work team.
+newListWorkteamsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListWorkteamsResponse
+newListWorkteamsResponse pHttpStatus_ =
+  ListWorkteamsResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      workteams = Prelude.mempty
+    }
+
+-- | If the response is truncated, Amazon SageMaker returns this token. To
+-- retrieve the next set of work teams, use it in the subsequent request.
+listWorkteamsResponse_nextToken :: Lens.Lens' ListWorkteamsResponse (Prelude.Maybe Prelude.Text)
+listWorkteamsResponse_nextToken = Lens.lens (\ListWorkteamsResponse' {nextToken} -> nextToken) (\s@ListWorkteamsResponse' {} a -> s {nextToken = a} :: ListWorkteamsResponse)
+
+-- | The response's http status code.
+listWorkteamsResponse_httpStatus :: Lens.Lens' ListWorkteamsResponse Prelude.Int
+listWorkteamsResponse_httpStatus = Lens.lens (\ListWorkteamsResponse' {httpStatus} -> httpStatus) (\s@ListWorkteamsResponse' {} a -> s {httpStatus = a} :: ListWorkteamsResponse)
+
+-- | An array of @Workteam@ objects, each describing a work team.
+listWorkteamsResponse_workteams :: Lens.Lens' ListWorkteamsResponse [Workteam]
+listWorkteamsResponse_workteams = Lens.lens (\ListWorkteamsResponse' {workteams} -> workteams) (\s@ListWorkteamsResponse' {} a -> s {workteams = a} :: ListWorkteamsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListWorkteamsResponse where
+  rnf ListWorkteamsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workteams
diff --git a/gen/Amazonka/SageMaker/PutModelPackageGroupPolicy.hs b/gen/Amazonka/SageMaker/PutModelPackageGroupPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/PutModelPackageGroupPolicy.hs
@@ -0,0 +1,206 @@
+{-# 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.PutModelPackageGroupPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a resouce policy to control access to a model group. For
+-- information about resoure policies, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html Identity-based policies and resource-based policies>
+-- in the /Amazon Web Services Identity and Access Management User Guide./.
+module Amazonka.SageMaker.PutModelPackageGroupPolicy
+  ( -- * Creating a Request
+    PutModelPackageGroupPolicy (..),
+    newPutModelPackageGroupPolicy,
+
+    -- * Request Lenses
+    putModelPackageGroupPolicy_modelPackageGroupName,
+    putModelPackageGroupPolicy_resourcePolicy,
+
+    -- * Destructuring the Response
+    PutModelPackageGroupPolicyResponse (..),
+    newPutModelPackageGroupPolicyResponse,
+
+    -- * Response Lenses
+    putModelPackageGroupPolicyResponse_httpStatus,
+    putModelPackageGroupPolicyResponse_modelPackageGroupArn,
+  )
+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:/ 'newPutModelPackageGroupPolicy' smart constructor.
+data PutModelPackageGroupPolicy = PutModelPackageGroupPolicy'
+  { -- | The name of the model group to add a resource policy to.
+    modelPackageGroupName :: Prelude.Text,
+    -- | The resource policy for the model group.
+    resourcePolicy :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutModelPackageGroupPolicy' 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:
+--
+-- 'modelPackageGroupName', 'putModelPackageGroupPolicy_modelPackageGroupName' - The name of the model group to add a resource policy to.
+--
+-- 'resourcePolicy', 'putModelPackageGroupPolicy_resourcePolicy' - The resource policy for the model group.
+newPutModelPackageGroupPolicy ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  -- | 'resourcePolicy'
+  Prelude.Text ->
+  PutModelPackageGroupPolicy
+newPutModelPackageGroupPolicy
+  pModelPackageGroupName_
+  pResourcePolicy_ =
+    PutModelPackageGroupPolicy'
+      { modelPackageGroupName =
+          pModelPackageGroupName_,
+        resourcePolicy = pResourcePolicy_
+      }
+
+-- | The name of the model group to add a resource policy to.
+putModelPackageGroupPolicy_modelPackageGroupName :: Lens.Lens' PutModelPackageGroupPolicy Prelude.Text
+putModelPackageGroupPolicy_modelPackageGroupName = Lens.lens (\PutModelPackageGroupPolicy' {modelPackageGroupName} -> modelPackageGroupName) (\s@PutModelPackageGroupPolicy' {} a -> s {modelPackageGroupName = a} :: PutModelPackageGroupPolicy)
+
+-- | The resource policy for the model group.
+putModelPackageGroupPolicy_resourcePolicy :: Lens.Lens' PutModelPackageGroupPolicy Prelude.Text
+putModelPackageGroupPolicy_resourcePolicy = Lens.lens (\PutModelPackageGroupPolicy' {resourcePolicy} -> resourcePolicy) (\s@PutModelPackageGroupPolicy' {} a -> s {resourcePolicy = a} :: PutModelPackageGroupPolicy)
+
+instance Core.AWSRequest PutModelPackageGroupPolicy where
+  type
+    AWSResponse PutModelPackageGroupPolicy =
+      PutModelPackageGroupPolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutModelPackageGroupPolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelPackageGroupArn")
+      )
+
+instance Prelude.Hashable PutModelPackageGroupPolicy where
+  hashWithSalt _salt PutModelPackageGroupPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` resourcePolicy
+
+instance Prelude.NFData PutModelPackageGroupPolicy where
+  rnf PutModelPackageGroupPolicy' {..} =
+    Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf resourcePolicy
+
+instance Data.ToHeaders PutModelPackageGroupPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.PutModelPackageGroupPolicy" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutModelPackageGroupPolicy where
+  toJSON PutModelPackageGroupPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ModelPackageGroupName"
+                  Data..= modelPackageGroupName
+              ),
+            Prelude.Just
+              ("ResourcePolicy" Data..= resourcePolicy)
+          ]
+      )
+
+instance Data.ToPath PutModelPackageGroupPolicy where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery PutModelPackageGroupPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutModelPackageGroupPolicyResponse' smart constructor.
+data PutModelPackageGroupPolicyResponse = PutModelPackageGroupPolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model package group.
+    modelPackageGroupArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutModelPackageGroupPolicyResponse' 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', 'putModelPackageGroupPolicyResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageGroupArn', 'putModelPackageGroupPolicyResponse_modelPackageGroupArn' - The Amazon Resource Name (ARN) of the model package group.
+newPutModelPackageGroupPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelPackageGroupArn'
+  Prelude.Text ->
+  PutModelPackageGroupPolicyResponse
+newPutModelPackageGroupPolicyResponse
+  pHttpStatus_
+  pModelPackageGroupArn_ =
+    PutModelPackageGroupPolicyResponse'
+      { httpStatus =
+          pHttpStatus_,
+        modelPackageGroupArn =
+          pModelPackageGroupArn_
+      }
+
+-- | The response's http status code.
+putModelPackageGroupPolicyResponse_httpStatus :: Lens.Lens' PutModelPackageGroupPolicyResponse Prelude.Int
+putModelPackageGroupPolicyResponse_httpStatus = Lens.lens (\PutModelPackageGroupPolicyResponse' {httpStatus} -> httpStatus) (\s@PutModelPackageGroupPolicyResponse' {} a -> s {httpStatus = a} :: PutModelPackageGroupPolicyResponse)
+
+-- | The Amazon Resource Name (ARN) of the model package group.
+putModelPackageGroupPolicyResponse_modelPackageGroupArn :: Lens.Lens' PutModelPackageGroupPolicyResponse Prelude.Text
+putModelPackageGroupPolicyResponse_modelPackageGroupArn = Lens.lens (\PutModelPackageGroupPolicyResponse' {modelPackageGroupArn} -> modelPackageGroupArn) (\s@PutModelPackageGroupPolicyResponse' {} a -> s {modelPackageGroupArn = a} :: PutModelPackageGroupPolicyResponse)
+
+instance
+  Prelude.NFData
+    PutModelPackageGroupPolicyResponse
+  where
+  rnf PutModelPackageGroupPolicyResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageGroupArn
diff --git a/gen/Amazonka/SageMaker/QueryLineage.hs b/gen/Amazonka/SageMaker/QueryLineage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/QueryLineage.hs
@@ -0,0 +1,346 @@
+{-# 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.QueryLineage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this action to inspect your lineage and discover relationships
+-- between entities. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/querying-lineage-entities.html Querying Lineage Entities>
+-- in the /Amazon SageMaker Developer Guide/.
+module Amazonka.SageMaker.QueryLineage
+  ( -- * Creating a Request
+    QueryLineage (..),
+    newQueryLineage,
+
+    -- * Request Lenses
+    queryLineage_direction,
+    queryLineage_filters,
+    queryLineage_includeEdges,
+    queryLineage_maxDepth,
+    queryLineage_maxResults,
+    queryLineage_nextToken,
+    queryLineage_startArns,
+
+    -- * Destructuring the Response
+    QueryLineageResponse (..),
+    newQueryLineageResponse,
+
+    -- * Response Lenses
+    queryLineageResponse_edges,
+    queryLineageResponse_nextToken,
+    queryLineageResponse_vertices,
+    queryLineageResponse_httpStatus,
+  )
+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:/ 'newQueryLineage' smart constructor.
+data QueryLineage = QueryLineage'
+  { -- | Associations between lineage entities have a direction. This parameter
+    -- determines the direction from the StartArn(s) that the query traverses.
+    direction :: Prelude.Maybe Direction,
+    -- | A set of filtering parameters that allow you to specify which entities
+    -- should be returned.
+    --
+    -- -   Properties - Key-value pairs to match on the lineage entities\'
+    --     properties.
+    --
+    -- -   LineageTypes - A set of lineage entity types to match on. For
+    --     example: @TrialComponent@, @Artifact@, or @Context@.
+    --
+    -- -   CreatedBefore - Filter entities created before this date.
+    --
+    -- -   ModifiedBefore - Filter entities modified before this date.
+    --
+    -- -   ModifiedAfter - Filter entities modified after this date.
+    filters :: Prelude.Maybe QueryFilters,
+    -- | Setting this value to @True@ retrieves not only the entities of interest
+    -- but also the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking-entities.html Associations>
+    -- and lineage entities on the path. Set to @False@ to only return lineage
+    -- entities that match your query.
+    includeEdges :: Prelude.Maybe Prelude.Bool,
+    -- | The maximum depth in lineage relationships from the @StartArns@ that are
+    -- traversed. Depth is a measure of the number of @Associations@ from the
+    -- @StartArn@ entity to the matched results.
+    maxDepth :: Prelude.Maybe Prelude.Int,
+    -- | Limits the number of vertices in the results. Use the @NextToken@ in a
+    -- response to to retrieve the next page of results.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Limits the number of vertices in the request. Use the @NextToken@ in a
+    -- response to to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of resource Amazon Resource Name (ARN) that represent the
+    -- starting point for your lineage query.
+    startArns :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QueryLineage' 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:
+--
+-- 'direction', 'queryLineage_direction' - Associations between lineage entities have a direction. This parameter
+-- determines the direction from the StartArn(s) that the query traverses.
+--
+-- 'filters', 'queryLineage_filters' - A set of filtering parameters that allow you to specify which entities
+-- should be returned.
+--
+-- -   Properties - Key-value pairs to match on the lineage entities\'
+--     properties.
+--
+-- -   LineageTypes - A set of lineage entity types to match on. For
+--     example: @TrialComponent@, @Artifact@, or @Context@.
+--
+-- -   CreatedBefore - Filter entities created before this date.
+--
+-- -   ModifiedBefore - Filter entities modified before this date.
+--
+-- -   ModifiedAfter - Filter entities modified after this date.
+--
+-- 'includeEdges', 'queryLineage_includeEdges' - Setting this value to @True@ retrieves not only the entities of interest
+-- but also the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking-entities.html Associations>
+-- and lineage entities on the path. Set to @False@ to only return lineage
+-- entities that match your query.
+--
+-- 'maxDepth', 'queryLineage_maxDepth' - The maximum depth in lineage relationships from the @StartArns@ that are
+-- traversed. Depth is a measure of the number of @Associations@ from the
+-- @StartArn@ entity to the matched results.
+--
+-- 'maxResults', 'queryLineage_maxResults' - Limits the number of vertices in the results. Use the @NextToken@ in a
+-- response to to retrieve the next page of results.
+--
+-- 'nextToken', 'queryLineage_nextToken' - Limits the number of vertices in the request. Use the @NextToken@ in a
+-- response to to retrieve the next page of results.
+--
+-- 'startArns', 'queryLineage_startArns' - A list of resource Amazon Resource Name (ARN) that represent the
+-- starting point for your lineage query.
+newQueryLineage ::
+  QueryLineage
+newQueryLineage =
+  QueryLineage'
+    { direction = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      includeEdges = Prelude.Nothing,
+      maxDepth = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      startArns = Prelude.Nothing
+    }
+
+-- | Associations between lineage entities have a direction. This parameter
+-- determines the direction from the StartArn(s) that the query traverses.
+queryLineage_direction :: Lens.Lens' QueryLineage (Prelude.Maybe Direction)
+queryLineage_direction = Lens.lens (\QueryLineage' {direction} -> direction) (\s@QueryLineage' {} a -> s {direction = a} :: QueryLineage)
+
+-- | A set of filtering parameters that allow you to specify which entities
+-- should be returned.
+--
+-- -   Properties - Key-value pairs to match on the lineage entities\'
+--     properties.
+--
+-- -   LineageTypes - A set of lineage entity types to match on. For
+--     example: @TrialComponent@, @Artifact@, or @Context@.
+--
+-- -   CreatedBefore - Filter entities created before this date.
+--
+-- -   ModifiedBefore - Filter entities modified before this date.
+--
+-- -   ModifiedAfter - Filter entities modified after this date.
+queryLineage_filters :: Lens.Lens' QueryLineage (Prelude.Maybe QueryFilters)
+queryLineage_filters = Lens.lens (\QueryLineage' {filters} -> filters) (\s@QueryLineage' {} a -> s {filters = a} :: QueryLineage)
+
+-- | Setting this value to @True@ retrieves not only the entities of interest
+-- but also the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking-entities.html Associations>
+-- and lineage entities on the path. Set to @False@ to only return lineage
+-- entities that match your query.
+queryLineage_includeEdges :: Lens.Lens' QueryLineage (Prelude.Maybe Prelude.Bool)
+queryLineage_includeEdges = Lens.lens (\QueryLineage' {includeEdges} -> includeEdges) (\s@QueryLineage' {} a -> s {includeEdges = a} :: QueryLineage)
+
+-- | The maximum depth in lineage relationships from the @StartArns@ that are
+-- traversed. Depth is a measure of the number of @Associations@ from the
+-- @StartArn@ entity to the matched results.
+queryLineage_maxDepth :: Lens.Lens' QueryLineage (Prelude.Maybe Prelude.Int)
+queryLineage_maxDepth = Lens.lens (\QueryLineage' {maxDepth} -> maxDepth) (\s@QueryLineage' {} a -> s {maxDepth = a} :: QueryLineage)
+
+-- | Limits the number of vertices in the results. Use the @NextToken@ in a
+-- response to to retrieve the next page of results.
+queryLineage_maxResults :: Lens.Lens' QueryLineage (Prelude.Maybe Prelude.Int)
+queryLineage_maxResults = Lens.lens (\QueryLineage' {maxResults} -> maxResults) (\s@QueryLineage' {} a -> s {maxResults = a} :: QueryLineage)
+
+-- | Limits the number of vertices in the request. Use the @NextToken@ in a
+-- response to to retrieve the next page of results.
+queryLineage_nextToken :: Lens.Lens' QueryLineage (Prelude.Maybe Prelude.Text)
+queryLineage_nextToken = Lens.lens (\QueryLineage' {nextToken} -> nextToken) (\s@QueryLineage' {} a -> s {nextToken = a} :: QueryLineage)
+
+-- | A list of resource Amazon Resource Name (ARN) that represent the
+-- starting point for your lineage query.
+queryLineage_startArns :: Lens.Lens' QueryLineage (Prelude.Maybe [Prelude.Text])
+queryLineage_startArns = Lens.lens (\QueryLineage' {startArns} -> startArns) (\s@QueryLineage' {} a -> s {startArns = a} :: QueryLineage) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest QueryLineage where
+  type AWSResponse QueryLineage = QueryLineageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          QueryLineageResponse'
+            Prelude.<$> (x Data..?> "Edges" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Vertices" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable QueryLineage where
+  hashWithSalt _salt QueryLineage' {..} =
+    _salt
+      `Prelude.hashWithSalt` direction
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` includeEdges
+      `Prelude.hashWithSalt` maxDepth
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` startArns
+
+instance Prelude.NFData QueryLineage where
+  rnf QueryLineage' {..} =
+    Prelude.rnf direction
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf includeEdges
+      `Prelude.seq` Prelude.rnf maxDepth
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf startArns
+
+instance Data.ToHeaders QueryLineage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.QueryLineage" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON QueryLineage where
+  toJSON QueryLineage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Direction" Data..=) Prelude.<$> direction,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("IncludeEdges" Data..=) Prelude.<$> includeEdges,
+            ("MaxDepth" Data..=) Prelude.<$> maxDepth,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("StartArns" Data..=) Prelude.<$> startArns
+          ]
+      )
+
+instance Data.ToPath QueryLineage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery QueryLineage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newQueryLineageResponse' smart constructor.
+data QueryLineageResponse = QueryLineageResponse'
+  { -- | A list of edges that connect vertices in the response.
+    edges :: Prelude.Maybe [Edge],
+    -- | Limits the number of vertices in the response. Use the @NextToken@ in a
+    -- response to to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of vertices connected to the start entity(ies) in the lineage
+    -- graph.
+    vertices :: Prelude.Maybe [Vertex],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QueryLineageResponse' 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:
+--
+-- 'edges', 'queryLineageResponse_edges' - A list of edges that connect vertices in the response.
+--
+-- 'nextToken', 'queryLineageResponse_nextToken' - Limits the number of vertices in the response. Use the @NextToken@ in a
+-- response to to retrieve the next page of results.
+--
+-- 'vertices', 'queryLineageResponse_vertices' - A list of vertices connected to the start entity(ies) in the lineage
+-- graph.
+--
+-- 'httpStatus', 'queryLineageResponse_httpStatus' - The response's http status code.
+newQueryLineageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  QueryLineageResponse
+newQueryLineageResponse pHttpStatus_ =
+  QueryLineageResponse'
+    { edges = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      vertices = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of edges that connect vertices in the response.
+queryLineageResponse_edges :: Lens.Lens' QueryLineageResponse (Prelude.Maybe [Edge])
+queryLineageResponse_edges = Lens.lens (\QueryLineageResponse' {edges} -> edges) (\s@QueryLineageResponse' {} a -> s {edges = a} :: QueryLineageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Limits the number of vertices in the response. Use the @NextToken@ in a
+-- response to to retrieve the next page of results.
+queryLineageResponse_nextToken :: Lens.Lens' QueryLineageResponse (Prelude.Maybe Prelude.Text)
+queryLineageResponse_nextToken = Lens.lens (\QueryLineageResponse' {nextToken} -> nextToken) (\s@QueryLineageResponse' {} a -> s {nextToken = a} :: QueryLineageResponse)
+
+-- | A list of vertices connected to the start entity(ies) in the lineage
+-- graph.
+queryLineageResponse_vertices :: Lens.Lens' QueryLineageResponse (Prelude.Maybe [Vertex])
+queryLineageResponse_vertices = Lens.lens (\QueryLineageResponse' {vertices} -> vertices) (\s@QueryLineageResponse' {} a -> s {vertices = a} :: QueryLineageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+queryLineageResponse_httpStatus :: Lens.Lens' QueryLineageResponse Prelude.Int
+queryLineageResponse_httpStatus = Lens.lens (\QueryLineageResponse' {httpStatus} -> httpStatus) (\s@QueryLineageResponse' {} a -> s {httpStatus = a} :: QueryLineageResponse)
+
+instance Prelude.NFData QueryLineageResponse where
+  rnf QueryLineageResponse' {..} =
+    Prelude.rnf edges
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf vertices
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/RegisterDevices.hs b/gen/Amazonka/SageMaker/RegisterDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/RegisterDevices.hs
@@ -0,0 +1,162 @@
+{-# 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.RegisterDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Register devices.
+module Amazonka.SageMaker.RegisterDevices
+  ( -- * Creating a Request
+    RegisterDevices (..),
+    newRegisterDevices,
+
+    -- * Request Lenses
+    registerDevices_tags,
+    registerDevices_deviceFleetName,
+    registerDevices_devices,
+
+    -- * Destructuring the Response
+    RegisterDevicesResponse (..),
+    newRegisterDevicesResponse,
+  )
+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:/ 'newRegisterDevices' smart constructor.
+data RegisterDevices = RegisterDevices'
+  { -- | The tags associated with devices.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the fleet.
+    deviceFleetName :: Prelude.Text,
+    -- | A list of devices to register with SageMaker Edge Manager.
+    devices :: [Device]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterDevices' 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:
+--
+-- 'tags', 'registerDevices_tags' - The tags associated with devices.
+--
+-- 'deviceFleetName', 'registerDevices_deviceFleetName' - The name of the fleet.
+--
+-- 'devices', 'registerDevices_devices' - A list of devices to register with SageMaker Edge Manager.
+newRegisterDevices ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  RegisterDevices
+newRegisterDevices pDeviceFleetName_ =
+  RegisterDevices'
+    { tags = Prelude.Nothing,
+      deviceFleetName = pDeviceFleetName_,
+      devices = Prelude.mempty
+    }
+
+-- | The tags associated with devices.
+registerDevices_tags :: Lens.Lens' RegisterDevices (Prelude.Maybe [Tag])
+registerDevices_tags = Lens.lens (\RegisterDevices' {tags} -> tags) (\s@RegisterDevices' {} a -> s {tags = a} :: RegisterDevices) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the fleet.
+registerDevices_deviceFleetName :: Lens.Lens' RegisterDevices Prelude.Text
+registerDevices_deviceFleetName = Lens.lens (\RegisterDevices' {deviceFleetName} -> deviceFleetName) (\s@RegisterDevices' {} a -> s {deviceFleetName = a} :: RegisterDevices)
+
+-- | A list of devices to register with SageMaker Edge Manager.
+registerDevices_devices :: Lens.Lens' RegisterDevices [Device]
+registerDevices_devices = Lens.lens (\RegisterDevices' {devices} -> devices) (\s@RegisterDevices' {} a -> s {devices = a} :: RegisterDevices) Prelude.. Lens.coerced
+
+instance Core.AWSRequest RegisterDevices where
+  type
+    AWSResponse RegisterDevices =
+      RegisterDevicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull RegisterDevicesResponse'
+
+instance Prelude.Hashable RegisterDevices where
+  hashWithSalt _salt RegisterDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` devices
+
+instance Prelude.NFData RegisterDevices where
+  rnf RegisterDevices' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf devices
+
+instance Data.ToHeaders RegisterDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.RegisterDevices" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RegisterDevices where
+  toJSON RegisterDevices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName),
+            Prelude.Just ("Devices" Data..= devices)
+          ]
+      )
+
+instance Data.ToPath RegisterDevices where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RegisterDevices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRegisterDevicesResponse' smart constructor.
+data RegisterDevicesResponse = RegisterDevicesResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterDevicesResponse' 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.
+newRegisterDevicesResponse ::
+  RegisterDevicesResponse
+newRegisterDevicesResponse = RegisterDevicesResponse'
+
+instance Prelude.NFData RegisterDevicesResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/RenderUiTemplate.hs b/gen/Amazonka/SageMaker/RenderUiTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/RenderUiTemplate.hs
@@ -0,0 +1,251 @@
+{-# 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.RenderUiTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Renders the UI template so that you can preview the worker\'s
+-- experience.
+module Amazonka.SageMaker.RenderUiTemplate
+  ( -- * Creating a Request
+    RenderUiTemplate (..),
+    newRenderUiTemplate,
+
+    -- * Request Lenses
+    renderUiTemplate_humanTaskUiArn,
+    renderUiTemplate_uiTemplate,
+    renderUiTemplate_task,
+    renderUiTemplate_roleArn,
+
+    -- * Destructuring the Response
+    RenderUiTemplateResponse (..),
+    newRenderUiTemplateResponse,
+
+    -- * Response Lenses
+    renderUiTemplateResponse_httpStatus,
+    renderUiTemplateResponse_renderedContent,
+    renderUiTemplateResponse_errors,
+  )
+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:/ 'newRenderUiTemplate' smart constructor.
+data RenderUiTemplate = RenderUiTemplate'
+  { -- | The @HumanTaskUiArn@ of the worker UI that you want to render. Do not
+    -- provide a @HumanTaskUiArn@ if you use the @UiTemplate@ parameter.
+    --
+    -- See a list of available Human Ui Amazon Resource Names (ARNs) in
+    -- UiConfig.
+    humanTaskUiArn :: Prelude.Maybe Prelude.Text,
+    -- | A @Template@ object containing the worker UI template to render.
+    uiTemplate :: Prelude.Maybe UiTemplate,
+    -- | A @RenderableTask@ object containing a representative task to render.
+    task :: RenderableTask,
+    -- | The Amazon Resource Name (ARN) that has access to the S3 objects that
+    -- are used by the template.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RenderUiTemplate' 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:
+--
+-- 'humanTaskUiArn', 'renderUiTemplate_humanTaskUiArn' - The @HumanTaskUiArn@ of the worker UI that you want to render. Do not
+-- provide a @HumanTaskUiArn@ if you use the @UiTemplate@ parameter.
+--
+-- See a list of available Human Ui Amazon Resource Names (ARNs) in
+-- UiConfig.
+--
+-- 'uiTemplate', 'renderUiTemplate_uiTemplate' - A @Template@ object containing the worker UI template to render.
+--
+-- 'task', 'renderUiTemplate_task' - A @RenderableTask@ object containing a representative task to render.
+--
+-- 'roleArn', 'renderUiTemplate_roleArn' - The Amazon Resource Name (ARN) that has access to the S3 objects that
+-- are used by the template.
+newRenderUiTemplate ::
+  -- | 'task'
+  RenderableTask ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  RenderUiTemplate
+newRenderUiTemplate pTask_ pRoleArn_ =
+  RenderUiTemplate'
+    { humanTaskUiArn = Prelude.Nothing,
+      uiTemplate = Prelude.Nothing,
+      task = pTask_,
+      roleArn = pRoleArn_
+    }
+
+-- | The @HumanTaskUiArn@ of the worker UI that you want to render. Do not
+-- provide a @HumanTaskUiArn@ if you use the @UiTemplate@ parameter.
+--
+-- See a list of available Human Ui Amazon Resource Names (ARNs) in
+-- UiConfig.
+renderUiTemplate_humanTaskUiArn :: Lens.Lens' RenderUiTemplate (Prelude.Maybe Prelude.Text)
+renderUiTemplate_humanTaskUiArn = Lens.lens (\RenderUiTemplate' {humanTaskUiArn} -> humanTaskUiArn) (\s@RenderUiTemplate' {} a -> s {humanTaskUiArn = a} :: RenderUiTemplate)
+
+-- | A @Template@ object containing the worker UI template to render.
+renderUiTemplate_uiTemplate :: Lens.Lens' RenderUiTemplate (Prelude.Maybe UiTemplate)
+renderUiTemplate_uiTemplate = Lens.lens (\RenderUiTemplate' {uiTemplate} -> uiTemplate) (\s@RenderUiTemplate' {} a -> s {uiTemplate = a} :: RenderUiTemplate)
+
+-- | A @RenderableTask@ object containing a representative task to render.
+renderUiTemplate_task :: Lens.Lens' RenderUiTemplate RenderableTask
+renderUiTemplate_task = Lens.lens (\RenderUiTemplate' {task} -> task) (\s@RenderUiTemplate' {} a -> s {task = a} :: RenderUiTemplate)
+
+-- | The Amazon Resource Name (ARN) that has access to the S3 objects that
+-- are used by the template.
+renderUiTemplate_roleArn :: Lens.Lens' RenderUiTemplate Prelude.Text
+renderUiTemplate_roleArn = Lens.lens (\RenderUiTemplate' {roleArn} -> roleArn) (\s@RenderUiTemplate' {} a -> s {roleArn = a} :: RenderUiTemplate)
+
+instance Core.AWSRequest RenderUiTemplate where
+  type
+    AWSResponse RenderUiTemplate =
+      RenderUiTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RenderUiTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "RenderedContent")
+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable RenderUiTemplate where
+  hashWithSalt _salt RenderUiTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` humanTaskUiArn
+      `Prelude.hashWithSalt` uiTemplate
+      `Prelude.hashWithSalt` task
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData RenderUiTemplate where
+  rnf RenderUiTemplate' {..} =
+    Prelude.rnf humanTaskUiArn
+      `Prelude.seq` Prelude.rnf uiTemplate
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders RenderUiTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.RenderUiTemplate" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RenderUiTemplate where
+  toJSON RenderUiTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HumanTaskUiArn" Data..=)
+              Prelude.<$> humanTaskUiArn,
+            ("UiTemplate" Data..=) Prelude.<$> uiTemplate,
+            Prelude.Just ("Task" Data..= task),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath RenderUiTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RenderUiTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRenderUiTemplateResponse' smart constructor.
+data RenderUiTemplateResponse = RenderUiTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A Liquid template that renders the HTML for the worker UI.
+    renderedContent :: Prelude.Text,
+    -- | A list of one or more @RenderingError@ objects if any were encountered
+    -- while rendering the template. If there were no errors, the list is
+    -- empty.
+    errors :: [RenderingError]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RenderUiTemplateResponse' 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', 'renderUiTemplateResponse_httpStatus' - The response's http status code.
+--
+-- 'renderedContent', 'renderUiTemplateResponse_renderedContent' - A Liquid template that renders the HTML for the worker UI.
+--
+-- 'errors', 'renderUiTemplateResponse_errors' - A list of one or more @RenderingError@ objects if any were encountered
+-- while rendering the template. If there were no errors, the list is
+-- empty.
+newRenderUiTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'renderedContent'
+  Prelude.Text ->
+  RenderUiTemplateResponse
+newRenderUiTemplateResponse
+  pHttpStatus_
+  pRenderedContent_ =
+    RenderUiTemplateResponse'
+      { httpStatus =
+          pHttpStatus_,
+        renderedContent = pRenderedContent_,
+        errors = Prelude.mempty
+      }
+
+-- | The response's http status code.
+renderUiTemplateResponse_httpStatus :: Lens.Lens' RenderUiTemplateResponse Prelude.Int
+renderUiTemplateResponse_httpStatus = Lens.lens (\RenderUiTemplateResponse' {httpStatus} -> httpStatus) (\s@RenderUiTemplateResponse' {} a -> s {httpStatus = a} :: RenderUiTemplateResponse)
+
+-- | A Liquid template that renders the HTML for the worker UI.
+renderUiTemplateResponse_renderedContent :: Lens.Lens' RenderUiTemplateResponse Prelude.Text
+renderUiTemplateResponse_renderedContent = Lens.lens (\RenderUiTemplateResponse' {renderedContent} -> renderedContent) (\s@RenderUiTemplateResponse' {} a -> s {renderedContent = a} :: RenderUiTemplateResponse)
+
+-- | A list of one or more @RenderingError@ objects if any were encountered
+-- while rendering the template. If there were no errors, the list is
+-- empty.
+renderUiTemplateResponse_errors :: Lens.Lens' RenderUiTemplateResponse [RenderingError]
+renderUiTemplateResponse_errors = Lens.lens (\RenderUiTemplateResponse' {errors} -> errors) (\s@RenderUiTemplateResponse' {} a -> s {errors = a} :: RenderUiTemplateResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData RenderUiTemplateResponse where
+  rnf RenderUiTemplateResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf renderedContent
+      `Prelude.seq` Prelude.rnf errors
diff --git a/gen/Amazonka/SageMaker/RetryPipelineExecution.hs b/gen/Amazonka/SageMaker/RetryPipelineExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/RetryPipelineExecution.hs
@@ -0,0 +1,221 @@
+{-# 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.RetryPipelineExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retry the execution of the pipeline.
+module Amazonka.SageMaker.RetryPipelineExecution
+  ( -- * Creating a Request
+    RetryPipelineExecution (..),
+    newRetryPipelineExecution,
+
+    -- * Request Lenses
+    retryPipelineExecution_parallelismConfiguration,
+    retryPipelineExecution_pipelineExecutionArn,
+    retryPipelineExecution_clientRequestToken,
+
+    -- * Destructuring the Response
+    RetryPipelineExecutionResponse (..),
+    newRetryPipelineExecutionResponse,
+
+    -- * Response Lenses
+    retryPipelineExecutionResponse_pipelineExecutionArn,
+    retryPipelineExecutionResponse_httpStatus,
+  )
+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:/ 'newRetryPipelineExecution' smart constructor.
+data RetryPipelineExecution = RetryPipelineExecution'
+  { -- | This configuration, if specified, overrides the parallelism
+    -- configuration of the parent pipeline.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Text,
+    -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than once.
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RetryPipelineExecution' 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:
+--
+-- 'parallelismConfiguration', 'retryPipelineExecution_parallelismConfiguration' - This configuration, if specified, overrides the parallelism
+-- configuration of the parent pipeline.
+--
+-- 'pipelineExecutionArn', 'retryPipelineExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'clientRequestToken', 'retryPipelineExecution_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than once.
+newRetryPipelineExecution ::
+  -- | 'pipelineExecutionArn'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  RetryPipelineExecution
+newRetryPipelineExecution
+  pPipelineExecutionArn_
+  pClientRequestToken_ =
+    RetryPipelineExecution'
+      { parallelismConfiguration =
+          Prelude.Nothing,
+        pipelineExecutionArn = pPipelineExecutionArn_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | This configuration, if specified, overrides the parallelism
+-- configuration of the parent pipeline.
+retryPipelineExecution_parallelismConfiguration :: Lens.Lens' RetryPipelineExecution (Prelude.Maybe ParallelismConfiguration)
+retryPipelineExecution_parallelismConfiguration = Lens.lens (\RetryPipelineExecution' {parallelismConfiguration} -> parallelismConfiguration) (\s@RetryPipelineExecution' {} a -> s {parallelismConfiguration = a} :: RetryPipelineExecution)
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+retryPipelineExecution_pipelineExecutionArn :: Lens.Lens' RetryPipelineExecution Prelude.Text
+retryPipelineExecution_pipelineExecutionArn = Lens.lens (\RetryPipelineExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@RetryPipelineExecution' {} a -> s {pipelineExecutionArn = a} :: RetryPipelineExecution)
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than once.
+retryPipelineExecution_clientRequestToken :: Lens.Lens' RetryPipelineExecution Prelude.Text
+retryPipelineExecution_clientRequestToken = Lens.lens (\RetryPipelineExecution' {clientRequestToken} -> clientRequestToken) (\s@RetryPipelineExecution' {} a -> s {clientRequestToken = a} :: RetryPipelineExecution)
+
+instance Core.AWSRequest RetryPipelineExecution where
+  type
+    AWSResponse RetryPipelineExecution =
+      RetryPipelineExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RetryPipelineExecutionResponse'
+            Prelude.<$> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RetryPipelineExecution where
+  hashWithSalt _salt RetryPipelineExecution' {..} =
+    _salt
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineExecutionArn
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData RetryPipelineExecution where
+  rnf RetryPipelineExecution' {..} =
+    Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders RetryPipelineExecution where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.RetryPipelineExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RetryPipelineExecution where
+  toJSON RetryPipelineExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ParallelismConfiguration" Data..=)
+              Prelude.<$> parallelismConfiguration,
+            Prelude.Just
+              ( "PipelineExecutionArn"
+                  Data..= pipelineExecutionArn
+              ),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath RetryPipelineExecution where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RetryPipelineExecution where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRetryPipelineExecutionResponse' smart constructor.
+data RetryPipelineExecutionResponse = RetryPipelineExecutionResponse'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RetryPipelineExecutionResponse' 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:
+--
+-- 'pipelineExecutionArn', 'retryPipelineExecutionResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'httpStatus', 'retryPipelineExecutionResponse_httpStatus' - The response's http status code.
+newRetryPipelineExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RetryPipelineExecutionResponse
+newRetryPipelineExecutionResponse pHttpStatus_ =
+  RetryPipelineExecutionResponse'
+    { pipelineExecutionArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+retryPipelineExecutionResponse_pipelineExecutionArn :: Lens.Lens' RetryPipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+retryPipelineExecutionResponse_pipelineExecutionArn = Lens.lens (\RetryPipelineExecutionResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@RetryPipelineExecutionResponse' {} a -> s {pipelineExecutionArn = a} :: RetryPipelineExecutionResponse)
+
+-- | The response's http status code.
+retryPipelineExecutionResponse_httpStatus :: Lens.Lens' RetryPipelineExecutionResponse Prelude.Int
+retryPipelineExecutionResponse_httpStatus = Lens.lens (\RetryPipelineExecutionResponse' {httpStatus} -> httpStatus) (\s@RetryPipelineExecutionResponse' {} a -> s {httpStatus = a} :: RetryPipelineExecutionResponse)
+
+instance
+  Prelude.NFData
+    RetryPipelineExecutionResponse
+  where
+  rnf RetryPipelineExecutionResponse' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/Search.hs b/gen/Amazonka/SageMaker/Search.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Search.hs
@@ -0,0 +1,309 @@
+{-# 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.Search
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Finds Amazon SageMaker resources that match a search query. Matching
+-- resources are returned as a list of @SearchRecord@ objects in the
+-- response. You can sort the search results by any resource property in a
+-- ascending or descending order.
+--
+-- You can query against the following value types: numeric, text, Boolean,
+-- and timestamp.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMaker.Search
+  ( -- * Creating a Request
+    Search (..),
+    newSearch,
+
+    -- * Request Lenses
+    search_maxResults,
+    search_nextToken,
+    search_searchExpression,
+    search_sortBy,
+    search_sortOrder,
+    search_resource,
+
+    -- * Destructuring the Response
+    SearchResponse (..),
+    newSearchResponse,
+
+    -- * Response Lenses
+    searchResponse_nextToken,
+    searchResponse_results,
+    searchResponse_httpStatus,
+  )
+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:/ 'newSearch' smart constructor.
+data Search = Search'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If more than @MaxResults@ resources match the specified
+    -- @SearchExpression@, the response includes a @NextToken@. The @NextToken@
+    -- can be passed to the next @SearchRequest@ to continue retrieving
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean conditional statement. Resources must satisfy this condition
+    -- to be included in search results. You must provide at least one
+    -- subexpression, filter, or nested filter. The maximum number of recursive
+    -- @SubExpressions@, @NestedFilters@, and @Filters@ that can be included in
+    -- a @SearchExpression@ object is 50.
+    searchExpression :: Prelude.Maybe SearchExpression,
+    -- | The name of the resource property used to sort the @SearchResults@. The
+    -- default is @LastModifiedTime@.
+    sortBy :: Prelude.Maybe Prelude.Text,
+    -- | How @SearchResults@ are ordered. Valid values are @Ascending@ or
+    -- @Descending@. The default is @Descending@.
+    sortOrder :: Prelude.Maybe SearchSortOrder,
+    -- | The name of the Amazon SageMaker resource to search for.
+    resource :: ResourceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Search' 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:
+--
+-- 'maxResults', 'search_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'search_nextToken' - If more than @MaxResults@ resources match the specified
+-- @SearchExpression@, the response includes a @NextToken@. The @NextToken@
+-- can be passed to the next @SearchRequest@ to continue retrieving
+-- results.
+--
+-- 'searchExpression', 'search_searchExpression' - A Boolean conditional statement. Resources must satisfy this condition
+-- to be included in search results. You must provide at least one
+-- subexpression, filter, or nested filter. The maximum number of recursive
+-- @SubExpressions@, @NestedFilters@, and @Filters@ that can be included in
+-- a @SearchExpression@ object is 50.
+--
+-- 'sortBy', 'search_sortBy' - The name of the resource property used to sort the @SearchResults@. The
+-- default is @LastModifiedTime@.
+--
+-- 'sortOrder', 'search_sortOrder' - How @SearchResults@ are ordered. Valid values are @Ascending@ or
+-- @Descending@. The default is @Descending@.
+--
+-- 'resource', 'search_resource' - The name of the Amazon SageMaker resource to search for.
+newSearch ::
+  -- | 'resource'
+  ResourceType ->
+  Search
+newSearch pResource_ =
+  Search'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      searchExpression = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      resource = pResource_
+    }
+
+-- | The maximum number of results to return.
+search_maxResults :: Lens.Lens' Search (Prelude.Maybe Prelude.Natural)
+search_maxResults = Lens.lens (\Search' {maxResults} -> maxResults) (\s@Search' {} a -> s {maxResults = a} :: Search)
+
+-- | If more than @MaxResults@ resources match the specified
+-- @SearchExpression@, the response includes a @NextToken@. The @NextToken@
+-- can be passed to the next @SearchRequest@ to continue retrieving
+-- results.
+search_nextToken :: Lens.Lens' Search (Prelude.Maybe Prelude.Text)
+search_nextToken = Lens.lens (\Search' {nextToken} -> nextToken) (\s@Search' {} a -> s {nextToken = a} :: Search)
+
+-- | A Boolean conditional statement. Resources must satisfy this condition
+-- to be included in search results. You must provide at least one
+-- subexpression, filter, or nested filter. The maximum number of recursive
+-- @SubExpressions@, @NestedFilters@, and @Filters@ that can be included in
+-- a @SearchExpression@ object is 50.
+search_searchExpression :: Lens.Lens' Search (Prelude.Maybe SearchExpression)
+search_searchExpression = Lens.lens (\Search' {searchExpression} -> searchExpression) (\s@Search' {} a -> s {searchExpression = a} :: Search)
+
+-- | The name of the resource property used to sort the @SearchResults@. The
+-- default is @LastModifiedTime@.
+search_sortBy :: Lens.Lens' Search (Prelude.Maybe Prelude.Text)
+search_sortBy = Lens.lens (\Search' {sortBy} -> sortBy) (\s@Search' {} a -> s {sortBy = a} :: Search)
+
+-- | How @SearchResults@ are ordered. Valid values are @Ascending@ or
+-- @Descending@. The default is @Descending@.
+search_sortOrder :: Lens.Lens' Search (Prelude.Maybe SearchSortOrder)
+search_sortOrder = Lens.lens (\Search' {sortOrder} -> sortOrder) (\s@Search' {} a -> s {sortOrder = a} :: Search)
+
+-- | The name of the Amazon SageMaker resource to search for.
+search_resource :: Lens.Lens' Search ResourceType
+search_resource = Lens.lens (\Search' {resource} -> resource) (\s@Search' {} a -> s {resource = a} :: Search)
+
+instance Core.AWSPager Search where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchResponse_results
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& search_nextToken
+          Lens..~ rs
+          Lens.^? searchResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest Search where
+  type AWSResponse Search = SearchResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Results" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable Search where
+  hashWithSalt _salt Search' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` searchExpression
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` resource
+
+instance Prelude.NFData Search where
+  rnf Search' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf searchExpression
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf resource
+
+instance Data.ToHeaders Search where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.Search" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON Search where
+  toJSON Search' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SearchExpression" Data..=)
+              Prelude.<$> searchExpression,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("Resource" Data..= resource)
+          ]
+      )
+
+instance Data.ToPath Search where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery Search where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchResponse' smart constructor.
+data SearchResponse = SearchResponse'
+  { -- | If the result of the previous @Search@ request was truncated, the
+    -- response includes a NextToken. To retrieve the next set of results, use
+    -- the token in the next request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of @SearchRecord@ objects.
+    results :: Prelude.Maybe [SearchRecord],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchResponse' 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:
+--
+-- 'nextToken', 'searchResponse_nextToken' - If the result of the previous @Search@ request was truncated, the
+-- response includes a NextToken. To retrieve the next set of results, use
+-- the token in the next request.
+--
+-- 'results', 'searchResponse_results' - A list of @SearchRecord@ objects.
+--
+-- 'httpStatus', 'searchResponse_httpStatus' - The response's http status code.
+newSearchResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchResponse
+newSearchResponse pHttpStatus_ =
+  SearchResponse'
+    { nextToken = Prelude.Nothing,
+      results = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the result of the previous @Search@ request was truncated, the
+-- response includes a NextToken. To retrieve the next set of results, use
+-- the token in the next request.
+searchResponse_nextToken :: Lens.Lens' SearchResponse (Prelude.Maybe Prelude.Text)
+searchResponse_nextToken = Lens.lens (\SearchResponse' {nextToken} -> nextToken) (\s@SearchResponse' {} a -> s {nextToken = a} :: SearchResponse)
+
+-- | A list of @SearchRecord@ objects.
+searchResponse_results :: Lens.Lens' SearchResponse (Prelude.Maybe [SearchRecord])
+searchResponse_results = Lens.lens (\SearchResponse' {results} -> results) (\s@SearchResponse' {} a -> s {results = a} :: SearchResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+searchResponse_httpStatus :: Lens.Lens' SearchResponse Prelude.Int
+searchResponse_httpStatus = Lens.lens (\SearchResponse' {httpStatus} -> httpStatus) (\s@SearchResponse' {} a -> s {httpStatus = a} :: SearchResponse)
+
+instance Prelude.NFData SearchResponse where
+  rnf SearchResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf results
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/SendPipelineExecutionStepFailure.hs b/gen/Amazonka/SageMaker/SendPipelineExecutionStepFailure.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/SendPipelineExecutionStepFailure.hs
@@ -0,0 +1,232 @@
+{-# 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.SendPipelineExecutionStepFailure
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Notifies the pipeline that the execution of a callback step failed,
+-- along with a message describing why. When a callback step is run, the
+-- pipeline generates a callback token and includes the token in a message
+-- sent to Amazon Simple Queue Service (Amazon SQS).
+module Amazonka.SageMaker.SendPipelineExecutionStepFailure
+  ( -- * Creating a Request
+    SendPipelineExecutionStepFailure (..),
+    newSendPipelineExecutionStepFailure,
+
+    -- * Request Lenses
+    sendPipelineExecutionStepFailure_clientRequestToken,
+    sendPipelineExecutionStepFailure_failureReason,
+    sendPipelineExecutionStepFailure_callbackToken,
+
+    -- * Destructuring the Response
+    SendPipelineExecutionStepFailureResponse (..),
+    newSendPipelineExecutionStepFailureResponse,
+
+    -- * Response Lenses
+    sendPipelineExecutionStepFailureResponse_pipelineExecutionArn,
+    sendPipelineExecutionStepFailureResponse_httpStatus,
+  )
+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:/ 'newSendPipelineExecutionStepFailure' smart constructor.
+data SendPipelineExecutionStepFailure = SendPipelineExecutionStepFailure'
+  { -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than one time.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A message describing why the step failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The pipeline generated token from the Amazon SQS queue.
+    callbackToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendPipelineExecutionStepFailure' 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:
+--
+-- 'clientRequestToken', 'sendPipelineExecutionStepFailure_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+--
+-- 'failureReason', 'sendPipelineExecutionStepFailure_failureReason' - A message describing why the step failed.
+--
+-- 'callbackToken', 'sendPipelineExecutionStepFailure_callbackToken' - The pipeline generated token from the Amazon SQS queue.
+newSendPipelineExecutionStepFailure ::
+  -- | 'callbackToken'
+  Prelude.Text ->
+  SendPipelineExecutionStepFailure
+newSendPipelineExecutionStepFailure pCallbackToken_ =
+  SendPipelineExecutionStepFailure'
+    { clientRequestToken =
+        Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      callbackToken = pCallbackToken_
+    }
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+sendPipelineExecutionStepFailure_clientRequestToken :: Lens.Lens' SendPipelineExecutionStepFailure (Prelude.Maybe Prelude.Text)
+sendPipelineExecutionStepFailure_clientRequestToken = Lens.lens (\SendPipelineExecutionStepFailure' {clientRequestToken} -> clientRequestToken) (\s@SendPipelineExecutionStepFailure' {} a -> s {clientRequestToken = a} :: SendPipelineExecutionStepFailure)
+
+-- | A message describing why the step failed.
+sendPipelineExecutionStepFailure_failureReason :: Lens.Lens' SendPipelineExecutionStepFailure (Prelude.Maybe Prelude.Text)
+sendPipelineExecutionStepFailure_failureReason = Lens.lens (\SendPipelineExecutionStepFailure' {failureReason} -> failureReason) (\s@SendPipelineExecutionStepFailure' {} a -> s {failureReason = a} :: SendPipelineExecutionStepFailure)
+
+-- | The pipeline generated token from the Amazon SQS queue.
+sendPipelineExecutionStepFailure_callbackToken :: Lens.Lens' SendPipelineExecutionStepFailure Prelude.Text
+sendPipelineExecutionStepFailure_callbackToken = Lens.lens (\SendPipelineExecutionStepFailure' {callbackToken} -> callbackToken) (\s@SendPipelineExecutionStepFailure' {} a -> s {callbackToken = a} :: SendPipelineExecutionStepFailure)
+
+instance
+  Core.AWSRequest
+    SendPipelineExecutionStepFailure
+  where
+  type
+    AWSResponse SendPipelineExecutionStepFailure =
+      SendPipelineExecutionStepFailureResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SendPipelineExecutionStepFailureResponse'
+            Prelude.<$> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    SendPipelineExecutionStepFailure
+  where
+  hashWithSalt
+    _salt
+    SendPipelineExecutionStepFailure' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` failureReason
+        `Prelude.hashWithSalt` callbackToken
+
+instance
+  Prelude.NFData
+    SendPipelineExecutionStepFailure
+  where
+  rnf SendPipelineExecutionStepFailure' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf callbackToken
+
+instance
+  Data.ToHeaders
+    SendPipelineExecutionStepFailure
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.SendPipelineExecutionStepFailure" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SendPipelineExecutionStepFailure where
+  toJSON SendPipelineExecutionStepFailure' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("FailureReason" Data..=) Prelude.<$> failureReason,
+            Prelude.Just
+              ("CallbackToken" Data..= callbackToken)
+          ]
+      )
+
+instance Data.ToPath SendPipelineExecutionStepFailure where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    SendPipelineExecutionStepFailure
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSendPipelineExecutionStepFailureResponse' smart constructor.
+data SendPipelineExecutionStepFailureResponse = SendPipelineExecutionStepFailureResponse'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendPipelineExecutionStepFailureResponse' 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:
+--
+-- 'pipelineExecutionArn', 'sendPipelineExecutionStepFailureResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'httpStatus', 'sendPipelineExecutionStepFailureResponse_httpStatus' - The response's http status code.
+newSendPipelineExecutionStepFailureResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SendPipelineExecutionStepFailureResponse
+newSendPipelineExecutionStepFailureResponse
+  pHttpStatus_ =
+    SendPipelineExecutionStepFailureResponse'
+      { pipelineExecutionArn =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+sendPipelineExecutionStepFailureResponse_pipelineExecutionArn :: Lens.Lens' SendPipelineExecutionStepFailureResponse (Prelude.Maybe Prelude.Text)
+sendPipelineExecutionStepFailureResponse_pipelineExecutionArn = Lens.lens (\SendPipelineExecutionStepFailureResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@SendPipelineExecutionStepFailureResponse' {} a -> s {pipelineExecutionArn = a} :: SendPipelineExecutionStepFailureResponse)
+
+-- | The response's http status code.
+sendPipelineExecutionStepFailureResponse_httpStatus :: Lens.Lens' SendPipelineExecutionStepFailureResponse Prelude.Int
+sendPipelineExecutionStepFailureResponse_httpStatus = Lens.lens (\SendPipelineExecutionStepFailureResponse' {httpStatus} -> httpStatus) (\s@SendPipelineExecutionStepFailureResponse' {} a -> s {httpStatus = a} :: SendPipelineExecutionStepFailureResponse)
+
+instance
+  Prelude.NFData
+    SendPipelineExecutionStepFailureResponse
+  where
+  rnf SendPipelineExecutionStepFailureResponse' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/SendPipelineExecutionStepSuccess.hs b/gen/Amazonka/SageMaker/SendPipelineExecutionStepSuccess.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/SendPipelineExecutionStepSuccess.hs
@@ -0,0 +1,233 @@
+{-# 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.SendPipelineExecutionStepSuccess
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Notifies the pipeline that the execution of a callback step succeeded
+-- and provides a list of the step\'s output parameters. When a callback
+-- step is run, the pipeline generates a callback token and includes the
+-- token in a message sent to Amazon Simple Queue Service (Amazon SQS).
+module Amazonka.SageMaker.SendPipelineExecutionStepSuccess
+  ( -- * Creating a Request
+    SendPipelineExecutionStepSuccess (..),
+    newSendPipelineExecutionStepSuccess,
+
+    -- * Request Lenses
+    sendPipelineExecutionStepSuccess_clientRequestToken,
+    sendPipelineExecutionStepSuccess_outputParameters,
+    sendPipelineExecutionStepSuccess_callbackToken,
+
+    -- * Destructuring the Response
+    SendPipelineExecutionStepSuccessResponse (..),
+    newSendPipelineExecutionStepSuccessResponse,
+
+    -- * Response Lenses
+    sendPipelineExecutionStepSuccessResponse_pipelineExecutionArn,
+    sendPipelineExecutionStepSuccessResponse_httpStatus,
+  )
+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:/ 'newSendPipelineExecutionStepSuccess' smart constructor.
+data SendPipelineExecutionStepSuccess = SendPipelineExecutionStepSuccess'
+  { -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than one time.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of the output parameters of the callback step.
+    outputParameters :: Prelude.Maybe [OutputParameter],
+    -- | The pipeline generated token from the Amazon SQS queue.
+    callbackToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendPipelineExecutionStepSuccess' 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:
+--
+-- 'clientRequestToken', 'sendPipelineExecutionStepSuccess_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+--
+-- 'outputParameters', 'sendPipelineExecutionStepSuccess_outputParameters' - A list of the output parameters of the callback step.
+--
+-- 'callbackToken', 'sendPipelineExecutionStepSuccess_callbackToken' - The pipeline generated token from the Amazon SQS queue.
+newSendPipelineExecutionStepSuccess ::
+  -- | 'callbackToken'
+  Prelude.Text ->
+  SendPipelineExecutionStepSuccess
+newSendPipelineExecutionStepSuccess pCallbackToken_ =
+  SendPipelineExecutionStepSuccess'
+    { clientRequestToken =
+        Prelude.Nothing,
+      outputParameters = Prelude.Nothing,
+      callbackToken = pCallbackToken_
+    }
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than one time.
+sendPipelineExecutionStepSuccess_clientRequestToken :: Lens.Lens' SendPipelineExecutionStepSuccess (Prelude.Maybe Prelude.Text)
+sendPipelineExecutionStepSuccess_clientRequestToken = Lens.lens (\SendPipelineExecutionStepSuccess' {clientRequestToken} -> clientRequestToken) (\s@SendPipelineExecutionStepSuccess' {} a -> s {clientRequestToken = a} :: SendPipelineExecutionStepSuccess)
+
+-- | A list of the output parameters of the callback step.
+sendPipelineExecutionStepSuccess_outputParameters :: Lens.Lens' SendPipelineExecutionStepSuccess (Prelude.Maybe [OutputParameter])
+sendPipelineExecutionStepSuccess_outputParameters = Lens.lens (\SendPipelineExecutionStepSuccess' {outputParameters} -> outputParameters) (\s@SendPipelineExecutionStepSuccess' {} a -> s {outputParameters = a} :: SendPipelineExecutionStepSuccess) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pipeline generated token from the Amazon SQS queue.
+sendPipelineExecutionStepSuccess_callbackToken :: Lens.Lens' SendPipelineExecutionStepSuccess Prelude.Text
+sendPipelineExecutionStepSuccess_callbackToken = Lens.lens (\SendPipelineExecutionStepSuccess' {callbackToken} -> callbackToken) (\s@SendPipelineExecutionStepSuccess' {} a -> s {callbackToken = a} :: SendPipelineExecutionStepSuccess)
+
+instance
+  Core.AWSRequest
+    SendPipelineExecutionStepSuccess
+  where
+  type
+    AWSResponse SendPipelineExecutionStepSuccess =
+      SendPipelineExecutionStepSuccessResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SendPipelineExecutionStepSuccessResponse'
+            Prelude.<$> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    SendPipelineExecutionStepSuccess
+  where
+  hashWithSalt
+    _salt
+    SendPipelineExecutionStepSuccess' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` outputParameters
+        `Prelude.hashWithSalt` callbackToken
+
+instance
+  Prelude.NFData
+    SendPipelineExecutionStepSuccess
+  where
+  rnf SendPipelineExecutionStepSuccess' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf outputParameters
+      `Prelude.seq` Prelude.rnf callbackToken
+
+instance
+  Data.ToHeaders
+    SendPipelineExecutionStepSuccess
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.SendPipelineExecutionStepSuccess" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SendPipelineExecutionStepSuccess where
+  toJSON SendPipelineExecutionStepSuccess' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("OutputParameters" Data..=)
+              Prelude.<$> outputParameters,
+            Prelude.Just
+              ("CallbackToken" Data..= callbackToken)
+          ]
+      )
+
+instance Data.ToPath SendPipelineExecutionStepSuccess where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    SendPipelineExecutionStepSuccess
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSendPipelineExecutionStepSuccessResponse' smart constructor.
+data SendPipelineExecutionStepSuccessResponse = SendPipelineExecutionStepSuccessResponse'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendPipelineExecutionStepSuccessResponse' 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:
+--
+-- 'pipelineExecutionArn', 'sendPipelineExecutionStepSuccessResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'httpStatus', 'sendPipelineExecutionStepSuccessResponse_httpStatus' - The response's http status code.
+newSendPipelineExecutionStepSuccessResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SendPipelineExecutionStepSuccessResponse
+newSendPipelineExecutionStepSuccessResponse
+  pHttpStatus_ =
+    SendPipelineExecutionStepSuccessResponse'
+      { pipelineExecutionArn =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+sendPipelineExecutionStepSuccessResponse_pipelineExecutionArn :: Lens.Lens' SendPipelineExecutionStepSuccessResponse (Prelude.Maybe Prelude.Text)
+sendPipelineExecutionStepSuccessResponse_pipelineExecutionArn = Lens.lens (\SendPipelineExecutionStepSuccessResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@SendPipelineExecutionStepSuccessResponse' {} a -> s {pipelineExecutionArn = a} :: SendPipelineExecutionStepSuccessResponse)
+
+-- | The response's http status code.
+sendPipelineExecutionStepSuccessResponse_httpStatus :: Lens.Lens' SendPipelineExecutionStepSuccessResponse Prelude.Int
+sendPipelineExecutionStepSuccessResponse_httpStatus = Lens.lens (\SendPipelineExecutionStepSuccessResponse' {httpStatus} -> httpStatus) (\s@SendPipelineExecutionStepSuccessResponse' {} a -> s {httpStatus = a} :: SendPipelineExecutionStepSuccessResponse)
+
+instance
+  Prelude.NFData
+    SendPipelineExecutionStepSuccessResponse
+  where
+  rnf SendPipelineExecutionStepSuccessResponse' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/StartEdgeDeploymentStage.hs b/gen/Amazonka/SageMaker/StartEdgeDeploymentStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StartEdgeDeploymentStage.hs
@@ -0,0 +1,163 @@
+{-# 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.StartEdgeDeploymentStage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a stage in an edge deployment plan.
+module Amazonka.SageMaker.StartEdgeDeploymentStage
+  ( -- * Creating a Request
+    StartEdgeDeploymentStage (..),
+    newStartEdgeDeploymentStage,
+
+    -- * Request Lenses
+    startEdgeDeploymentStage_edgeDeploymentPlanName,
+    startEdgeDeploymentStage_stageName,
+
+    -- * Destructuring the Response
+    StartEdgeDeploymentStageResponse (..),
+    newStartEdgeDeploymentStageResponse,
+  )
+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:/ 'newStartEdgeDeploymentStage' smart constructor.
+data StartEdgeDeploymentStage = StartEdgeDeploymentStage'
+  { -- | The name of the edge deployment plan to start.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | The name of the stage to start.
+    stageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartEdgeDeploymentStage' 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:
+--
+-- 'edgeDeploymentPlanName', 'startEdgeDeploymentStage_edgeDeploymentPlanName' - The name of the edge deployment plan to start.
+--
+-- 'stageName', 'startEdgeDeploymentStage_stageName' - The name of the stage to start.
+newStartEdgeDeploymentStage ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'stageName'
+  Prelude.Text ->
+  StartEdgeDeploymentStage
+newStartEdgeDeploymentStage
+  pEdgeDeploymentPlanName_
+  pStageName_ =
+    StartEdgeDeploymentStage'
+      { edgeDeploymentPlanName =
+          pEdgeDeploymentPlanName_,
+        stageName = pStageName_
+      }
+
+-- | The name of the edge deployment plan to start.
+startEdgeDeploymentStage_edgeDeploymentPlanName :: Lens.Lens' StartEdgeDeploymentStage Prelude.Text
+startEdgeDeploymentStage_edgeDeploymentPlanName = Lens.lens (\StartEdgeDeploymentStage' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@StartEdgeDeploymentStage' {} a -> s {edgeDeploymentPlanName = a} :: StartEdgeDeploymentStage)
+
+-- | The name of the stage to start.
+startEdgeDeploymentStage_stageName :: Lens.Lens' StartEdgeDeploymentStage Prelude.Text
+startEdgeDeploymentStage_stageName = Lens.lens (\StartEdgeDeploymentStage' {stageName} -> stageName) (\s@StartEdgeDeploymentStage' {} a -> s {stageName = a} :: StartEdgeDeploymentStage)
+
+instance Core.AWSRequest StartEdgeDeploymentStage where
+  type
+    AWSResponse StartEdgeDeploymentStage =
+      StartEdgeDeploymentStageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      StartEdgeDeploymentStageResponse'
+
+instance Prelude.Hashable StartEdgeDeploymentStage where
+  hashWithSalt _salt StartEdgeDeploymentStage' {..} =
+    _salt
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` stageName
+
+instance Prelude.NFData StartEdgeDeploymentStage where
+  rnf StartEdgeDeploymentStage' {..} =
+    Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf stageName
+
+instance Data.ToHeaders StartEdgeDeploymentStage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StartEdgeDeploymentStage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartEdgeDeploymentStage where
+  toJSON StartEdgeDeploymentStage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              ),
+            Prelude.Just ("StageName" Data..= stageName)
+          ]
+      )
+
+instance Data.ToPath StartEdgeDeploymentStage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartEdgeDeploymentStage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartEdgeDeploymentStageResponse' smart constructor.
+data StartEdgeDeploymentStageResponse = StartEdgeDeploymentStageResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartEdgeDeploymentStageResponse' 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.
+newStartEdgeDeploymentStageResponse ::
+  StartEdgeDeploymentStageResponse
+newStartEdgeDeploymentStageResponse =
+  StartEdgeDeploymentStageResponse'
+
+instance
+  Prelude.NFData
+    StartEdgeDeploymentStageResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StartInferenceExperiment.hs b/gen/Amazonka/SageMaker/StartInferenceExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StartInferenceExperiment.hs
@@ -0,0 +1,176 @@
+{-# 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.StartInferenceExperiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts an inference experiment.
+module Amazonka.SageMaker.StartInferenceExperiment
+  ( -- * Creating a Request
+    StartInferenceExperiment (..),
+    newStartInferenceExperiment,
+
+    -- * Request Lenses
+    startInferenceExperiment_name,
+
+    -- * Destructuring the Response
+    StartInferenceExperimentResponse (..),
+    newStartInferenceExperimentResponse,
+
+    -- * Response Lenses
+    startInferenceExperimentResponse_httpStatus,
+    startInferenceExperimentResponse_inferenceExperimentArn,
+  )
+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:/ 'newStartInferenceExperiment' smart constructor.
+data StartInferenceExperiment = StartInferenceExperiment'
+  { -- | The name of the inference experiment to start.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartInferenceExperiment' 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:
+--
+-- 'name', 'startInferenceExperiment_name' - The name of the inference experiment to start.
+newStartInferenceExperiment ::
+  -- | 'name'
+  Prelude.Text ->
+  StartInferenceExperiment
+newStartInferenceExperiment pName_ =
+  StartInferenceExperiment' {name = pName_}
+
+-- | The name of the inference experiment to start.
+startInferenceExperiment_name :: Lens.Lens' StartInferenceExperiment Prelude.Text
+startInferenceExperiment_name = Lens.lens (\StartInferenceExperiment' {name} -> name) (\s@StartInferenceExperiment' {} a -> s {name = a} :: StartInferenceExperiment)
+
+instance Core.AWSRequest StartInferenceExperiment where
+  type
+    AWSResponse StartInferenceExperiment =
+      StartInferenceExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartInferenceExperimentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InferenceExperimentArn")
+      )
+
+instance Prelude.Hashable StartInferenceExperiment where
+  hashWithSalt _salt StartInferenceExperiment' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData StartInferenceExperiment where
+  rnf StartInferenceExperiment' {..} = Prelude.rnf name
+
+instance Data.ToHeaders StartInferenceExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StartInferenceExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartInferenceExperiment where
+  toJSON StartInferenceExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
+
+instance Data.ToPath StartInferenceExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartInferenceExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartInferenceExperimentResponse' smart constructor.
+data StartInferenceExperimentResponse = StartInferenceExperimentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the started inference experiment to start.
+    inferenceExperimentArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartInferenceExperimentResponse' 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', 'startInferenceExperimentResponse_httpStatus' - The response's http status code.
+--
+-- 'inferenceExperimentArn', 'startInferenceExperimentResponse_inferenceExperimentArn' - The ARN of the started inference experiment to start.
+newStartInferenceExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'inferenceExperimentArn'
+  Prelude.Text ->
+  StartInferenceExperimentResponse
+newStartInferenceExperimentResponse
+  pHttpStatus_
+  pInferenceExperimentArn_ =
+    StartInferenceExperimentResponse'
+      { httpStatus =
+          pHttpStatus_,
+        inferenceExperimentArn =
+          pInferenceExperimentArn_
+      }
+
+-- | The response's http status code.
+startInferenceExperimentResponse_httpStatus :: Lens.Lens' StartInferenceExperimentResponse Prelude.Int
+startInferenceExperimentResponse_httpStatus = Lens.lens (\StartInferenceExperimentResponse' {httpStatus} -> httpStatus) (\s@StartInferenceExperimentResponse' {} a -> s {httpStatus = a} :: StartInferenceExperimentResponse)
+
+-- | The ARN of the started inference experiment to start.
+startInferenceExperimentResponse_inferenceExperimentArn :: Lens.Lens' StartInferenceExperimentResponse Prelude.Text
+startInferenceExperimentResponse_inferenceExperimentArn = Lens.lens (\StartInferenceExperimentResponse' {inferenceExperimentArn} -> inferenceExperimentArn) (\s@StartInferenceExperimentResponse' {} a -> s {inferenceExperimentArn = a} :: StartInferenceExperimentResponse)
+
+instance
+  Prelude.NFData
+    StartInferenceExperimentResponse
+  where
+  rnf StartInferenceExperimentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf inferenceExperimentArn
diff --git a/gen/Amazonka/SageMaker/StartMonitoringSchedule.hs b/gen/Amazonka/SageMaker/StartMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StartMonitoringSchedule.hs
@@ -0,0 +1,148 @@
+{-# 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.StartMonitoringSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a previously stopped monitoring schedule.
+--
+-- By default, when you successfully create a new schedule, the status of a
+-- monitoring schedule is @scheduled@.
+module Amazonka.SageMaker.StartMonitoringSchedule
+  ( -- * Creating a Request
+    StartMonitoringSchedule (..),
+    newStartMonitoringSchedule,
+
+    -- * Request Lenses
+    startMonitoringSchedule_monitoringScheduleName,
+
+    -- * Destructuring the Response
+    StartMonitoringScheduleResponse (..),
+    newStartMonitoringScheduleResponse,
+  )
+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:/ 'newStartMonitoringSchedule' smart constructor.
+data StartMonitoringSchedule = StartMonitoringSchedule'
+  { -- | The name of the schedule to start.
+    monitoringScheduleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartMonitoringSchedule' 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:
+--
+-- 'monitoringScheduleName', 'startMonitoringSchedule_monitoringScheduleName' - The name of the schedule to start.
+newStartMonitoringSchedule ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  StartMonitoringSchedule
+newStartMonitoringSchedule pMonitoringScheduleName_ =
+  StartMonitoringSchedule'
+    { monitoringScheduleName =
+        pMonitoringScheduleName_
+    }
+
+-- | The name of the schedule to start.
+startMonitoringSchedule_monitoringScheduleName :: Lens.Lens' StartMonitoringSchedule Prelude.Text
+startMonitoringSchedule_monitoringScheduleName = Lens.lens (\StartMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@StartMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: StartMonitoringSchedule)
+
+instance Core.AWSRequest StartMonitoringSchedule where
+  type
+    AWSResponse StartMonitoringSchedule =
+      StartMonitoringScheduleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      StartMonitoringScheduleResponse'
+
+instance Prelude.Hashable StartMonitoringSchedule where
+  hashWithSalt _salt StartMonitoringSchedule' {..} =
+    _salt `Prelude.hashWithSalt` monitoringScheduleName
+
+instance Prelude.NFData StartMonitoringSchedule where
+  rnf StartMonitoringSchedule' {..} =
+    Prelude.rnf monitoringScheduleName
+
+instance Data.ToHeaders StartMonitoringSchedule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StartMonitoringSchedule" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartMonitoringSchedule where
+  toJSON StartMonitoringSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              )
+          ]
+      )
+
+instance Data.ToPath StartMonitoringSchedule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartMonitoringSchedule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartMonitoringScheduleResponse' smart constructor.
+data StartMonitoringScheduleResponse = StartMonitoringScheduleResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartMonitoringScheduleResponse' 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.
+newStartMonitoringScheduleResponse ::
+  StartMonitoringScheduleResponse
+newStartMonitoringScheduleResponse =
+  StartMonitoringScheduleResponse'
+
+instance
+  Prelude.NFData
+    StartMonitoringScheduleResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StartNotebookInstance.hs b/gen/Amazonka/SageMaker/StartNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StartNotebookInstance.hs
@@ -0,0 +1,145 @@
+{-# 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.StartNotebookInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Launches an ML compute instance with the latest version of the libraries
+-- and attaches your ML storage volume. After configuring the notebook
+-- instance, SageMaker sets the notebook instance status to @InService@. A
+-- notebook instance\'s status must be @InService@ before you can connect
+-- to your Jupyter notebook.
+module Amazonka.SageMaker.StartNotebookInstance
+  ( -- * Creating a Request
+    StartNotebookInstance (..),
+    newStartNotebookInstance,
+
+    -- * Request Lenses
+    startNotebookInstance_notebookInstanceName,
+
+    -- * Destructuring the Response
+    StartNotebookInstanceResponse (..),
+    newStartNotebookInstanceResponse,
+  )
+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:/ 'newStartNotebookInstance' smart constructor.
+data StartNotebookInstance = StartNotebookInstance'
+  { -- | The name of the notebook instance to start.
+    notebookInstanceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartNotebookInstance' 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:
+--
+-- 'notebookInstanceName', 'startNotebookInstance_notebookInstanceName' - The name of the notebook instance to start.
+newStartNotebookInstance ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  StartNotebookInstance
+newStartNotebookInstance pNotebookInstanceName_ =
+  StartNotebookInstance'
+    { notebookInstanceName =
+        pNotebookInstanceName_
+    }
+
+-- | The name of the notebook instance to start.
+startNotebookInstance_notebookInstanceName :: Lens.Lens' StartNotebookInstance Prelude.Text
+startNotebookInstance_notebookInstanceName = Lens.lens (\StartNotebookInstance' {notebookInstanceName} -> notebookInstanceName) (\s@StartNotebookInstance' {} a -> s {notebookInstanceName = a} :: StartNotebookInstance)
+
+instance Core.AWSRequest StartNotebookInstance where
+  type
+    AWSResponse StartNotebookInstance =
+      StartNotebookInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StartNotebookInstanceResponse'
+
+instance Prelude.Hashable StartNotebookInstance where
+  hashWithSalt _salt StartNotebookInstance' {..} =
+    _salt `Prelude.hashWithSalt` notebookInstanceName
+
+instance Prelude.NFData StartNotebookInstance where
+  rnf StartNotebookInstance' {..} =
+    Prelude.rnf notebookInstanceName
+
+instance Data.ToHeaders StartNotebookInstance where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StartNotebookInstance" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartNotebookInstance where
+  toJSON StartNotebookInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              )
+          ]
+      )
+
+instance Data.ToPath StartNotebookInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartNotebookInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartNotebookInstanceResponse' smart constructor.
+data StartNotebookInstanceResponse = StartNotebookInstanceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartNotebookInstanceResponse' 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.
+newStartNotebookInstanceResponse ::
+  StartNotebookInstanceResponse
+newStartNotebookInstanceResponse =
+  StartNotebookInstanceResponse'
+
+instance Prelude.NFData StartNotebookInstanceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StartPipelineExecution.hs b/gen/Amazonka/SageMaker/StartPipelineExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StartPipelineExecution.hs
@@ -0,0 +1,260 @@
+{-# 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.StartPipelineExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a pipeline execution.
+module Amazonka.SageMaker.StartPipelineExecution
+  ( -- * Creating a Request
+    StartPipelineExecution (..),
+    newStartPipelineExecution,
+
+    -- * Request Lenses
+    startPipelineExecution_parallelismConfiguration,
+    startPipelineExecution_pipelineExecutionDescription,
+    startPipelineExecution_pipelineExecutionDisplayName,
+    startPipelineExecution_pipelineParameters,
+    startPipelineExecution_pipelineName,
+    startPipelineExecution_clientRequestToken,
+
+    -- * Destructuring the Response
+    StartPipelineExecutionResponse (..),
+    newStartPipelineExecutionResponse,
+
+    -- * Response Lenses
+    startPipelineExecutionResponse_pipelineExecutionArn,
+    startPipelineExecutionResponse_httpStatus,
+  )
+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:/ 'newStartPipelineExecution' smart constructor.
+data StartPipelineExecution = StartPipelineExecution'
+  { -- | This configuration, if specified, overrides the parallelism
+    -- configuration of the parent pipeline for this specific run.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The description of the pipeline execution.
+    pipelineExecutionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline execution.
+    pipelineExecutionDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | Contains a list of pipeline parameters. This list can be empty.
+    pipelineParameters :: Prelude.Maybe [Parameter],
+    -- | The name of the pipeline.
+    pipelineName :: Prelude.Text,
+    -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than once.
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartPipelineExecution' 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:
+--
+-- 'parallelismConfiguration', 'startPipelineExecution_parallelismConfiguration' - This configuration, if specified, overrides the parallelism
+-- configuration of the parent pipeline for this specific run.
+--
+-- 'pipelineExecutionDescription', 'startPipelineExecution_pipelineExecutionDescription' - The description of the pipeline execution.
+--
+-- 'pipelineExecutionDisplayName', 'startPipelineExecution_pipelineExecutionDisplayName' - The display name of the pipeline execution.
+--
+-- 'pipelineParameters', 'startPipelineExecution_pipelineParameters' - Contains a list of pipeline parameters. This list can be empty.
+--
+-- 'pipelineName', 'startPipelineExecution_pipelineName' - The name of the pipeline.
+--
+-- 'clientRequestToken', 'startPipelineExecution_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than once.
+newStartPipelineExecution ::
+  -- | 'pipelineName'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  StartPipelineExecution
+newStartPipelineExecution
+  pPipelineName_
+  pClientRequestToken_ =
+    StartPipelineExecution'
+      { parallelismConfiguration =
+          Prelude.Nothing,
+        pipelineExecutionDescription = Prelude.Nothing,
+        pipelineExecutionDisplayName = Prelude.Nothing,
+        pipelineParameters = Prelude.Nothing,
+        pipelineName = pPipelineName_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | This configuration, if specified, overrides the parallelism
+-- configuration of the parent pipeline for this specific run.
+startPipelineExecution_parallelismConfiguration :: Lens.Lens' StartPipelineExecution (Prelude.Maybe ParallelismConfiguration)
+startPipelineExecution_parallelismConfiguration = Lens.lens (\StartPipelineExecution' {parallelismConfiguration} -> parallelismConfiguration) (\s@StartPipelineExecution' {} a -> s {parallelismConfiguration = a} :: StartPipelineExecution)
+
+-- | The description of the pipeline execution.
+startPipelineExecution_pipelineExecutionDescription :: Lens.Lens' StartPipelineExecution (Prelude.Maybe Prelude.Text)
+startPipelineExecution_pipelineExecutionDescription = Lens.lens (\StartPipelineExecution' {pipelineExecutionDescription} -> pipelineExecutionDescription) (\s@StartPipelineExecution' {} a -> s {pipelineExecutionDescription = a} :: StartPipelineExecution)
+
+-- | The display name of the pipeline execution.
+startPipelineExecution_pipelineExecutionDisplayName :: Lens.Lens' StartPipelineExecution (Prelude.Maybe Prelude.Text)
+startPipelineExecution_pipelineExecutionDisplayName = Lens.lens (\StartPipelineExecution' {pipelineExecutionDisplayName} -> pipelineExecutionDisplayName) (\s@StartPipelineExecution' {} a -> s {pipelineExecutionDisplayName = a} :: StartPipelineExecution)
+
+-- | Contains a list of pipeline parameters. This list can be empty.
+startPipelineExecution_pipelineParameters :: Lens.Lens' StartPipelineExecution (Prelude.Maybe [Parameter])
+startPipelineExecution_pipelineParameters = Lens.lens (\StartPipelineExecution' {pipelineParameters} -> pipelineParameters) (\s@StartPipelineExecution' {} a -> s {pipelineParameters = a} :: StartPipelineExecution) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the pipeline.
+startPipelineExecution_pipelineName :: Lens.Lens' StartPipelineExecution Prelude.Text
+startPipelineExecution_pipelineName = Lens.lens (\StartPipelineExecution' {pipelineName} -> pipelineName) (\s@StartPipelineExecution' {} a -> s {pipelineName = a} :: StartPipelineExecution)
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than once.
+startPipelineExecution_clientRequestToken :: Lens.Lens' StartPipelineExecution Prelude.Text
+startPipelineExecution_clientRequestToken = Lens.lens (\StartPipelineExecution' {clientRequestToken} -> clientRequestToken) (\s@StartPipelineExecution' {} a -> s {clientRequestToken = a} :: StartPipelineExecution)
+
+instance Core.AWSRequest StartPipelineExecution where
+  type
+    AWSResponse StartPipelineExecution =
+      StartPipelineExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartPipelineExecutionResponse'
+            Prelude.<$> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartPipelineExecution where
+  hashWithSalt _salt StartPipelineExecution' {..} =
+    _salt
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineExecutionDescription
+      `Prelude.hashWithSalt` pipelineExecutionDisplayName
+      `Prelude.hashWithSalt` pipelineParameters
+      `Prelude.hashWithSalt` pipelineName
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData StartPipelineExecution where
+  rnf StartPipelineExecution' {..} =
+    Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineExecutionDescription
+      `Prelude.seq` Prelude.rnf pipelineExecutionDisplayName
+      `Prelude.seq` Prelude.rnf pipelineParameters
+      `Prelude.seq` Prelude.rnf pipelineName
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders StartPipelineExecution where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StartPipelineExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartPipelineExecution where
+  toJSON StartPipelineExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ParallelismConfiguration" Data..=)
+              Prelude.<$> parallelismConfiguration,
+            ("PipelineExecutionDescription" Data..=)
+              Prelude.<$> pipelineExecutionDescription,
+            ("PipelineExecutionDisplayName" Data..=)
+              Prelude.<$> pipelineExecutionDisplayName,
+            ("PipelineParameters" Data..=)
+              Prelude.<$> pipelineParameters,
+            Prelude.Just ("PipelineName" Data..= pipelineName),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath StartPipelineExecution where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartPipelineExecution where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartPipelineExecutionResponse' smart constructor.
+data StartPipelineExecutionResponse = StartPipelineExecutionResponse'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartPipelineExecutionResponse' 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:
+--
+-- 'pipelineExecutionArn', 'startPipelineExecutionResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'httpStatus', 'startPipelineExecutionResponse_httpStatus' - The response's http status code.
+newStartPipelineExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartPipelineExecutionResponse
+newStartPipelineExecutionResponse pHttpStatus_ =
+  StartPipelineExecutionResponse'
+    { pipelineExecutionArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+startPipelineExecutionResponse_pipelineExecutionArn :: Lens.Lens' StartPipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+startPipelineExecutionResponse_pipelineExecutionArn = Lens.lens (\StartPipelineExecutionResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@StartPipelineExecutionResponse' {} a -> s {pipelineExecutionArn = a} :: StartPipelineExecutionResponse)
+
+-- | The response's http status code.
+startPipelineExecutionResponse_httpStatus :: Lens.Lens' StartPipelineExecutionResponse Prelude.Int
+startPipelineExecutionResponse_httpStatus = Lens.lens (\StartPipelineExecutionResponse' {httpStatus} -> httpStatus) (\s@StartPipelineExecutionResponse' {} a -> s {httpStatus = a} :: StartPipelineExecutionResponse)
+
+instance
+  Prelude.NFData
+    StartPipelineExecutionResponse
+  where
+  rnf StartPipelineExecutionResponse' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/StopAutoMLJob.hs b/gen/Amazonka/SageMaker/StopAutoMLJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopAutoMLJob.hs
@@ -0,0 +1,132 @@
+{-# 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.StopAutoMLJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A method for forcing the termination of a running job.
+module Amazonka.SageMaker.StopAutoMLJob
+  ( -- * Creating a Request
+    StopAutoMLJob (..),
+    newStopAutoMLJob,
+
+    -- * Request Lenses
+    stopAutoMLJob_autoMLJobName,
+
+    -- * Destructuring the Response
+    StopAutoMLJobResponse (..),
+    newStopAutoMLJobResponse,
+  )
+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:/ 'newStopAutoMLJob' smart constructor.
+data StopAutoMLJob = StopAutoMLJob'
+  { -- | The name of the object you are requesting.
+    autoMLJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopAutoMLJob' 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:
+--
+-- 'autoMLJobName', 'stopAutoMLJob_autoMLJobName' - The name of the object you are requesting.
+newStopAutoMLJob ::
+  -- | 'autoMLJobName'
+  Prelude.Text ->
+  StopAutoMLJob
+newStopAutoMLJob pAutoMLJobName_ =
+  StopAutoMLJob' {autoMLJobName = pAutoMLJobName_}
+
+-- | The name of the object you are requesting.
+stopAutoMLJob_autoMLJobName :: Lens.Lens' StopAutoMLJob Prelude.Text
+stopAutoMLJob_autoMLJobName = Lens.lens (\StopAutoMLJob' {autoMLJobName} -> autoMLJobName) (\s@StopAutoMLJob' {} a -> s {autoMLJobName = a} :: StopAutoMLJob)
+
+instance Core.AWSRequest StopAutoMLJob where
+  type
+    AWSResponse StopAutoMLJob =
+      StopAutoMLJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopAutoMLJobResponse'
+
+instance Prelude.Hashable StopAutoMLJob where
+  hashWithSalt _salt StopAutoMLJob' {..} =
+    _salt `Prelude.hashWithSalt` autoMLJobName
+
+instance Prelude.NFData StopAutoMLJob where
+  rnf StopAutoMLJob' {..} = Prelude.rnf autoMLJobName
+
+instance Data.ToHeaders StopAutoMLJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.StopAutoMLJob" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopAutoMLJob where
+  toJSON StopAutoMLJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("AutoMLJobName" Data..= autoMLJobName)
+          ]
+      )
+
+instance Data.ToPath StopAutoMLJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopAutoMLJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopAutoMLJobResponse' smart constructor.
+data StopAutoMLJobResponse = StopAutoMLJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopAutoMLJobResponse' 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.
+newStopAutoMLJobResponse ::
+  StopAutoMLJobResponse
+newStopAutoMLJobResponse = StopAutoMLJobResponse'
+
+instance Prelude.NFData StopAutoMLJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopCompilationJob.hs b/gen/Amazonka/SageMaker/StopCompilationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopCompilationJob.hs
@@ -0,0 +1,148 @@
+{-# 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.StopCompilationJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a model compilation job.
+--
+-- To stop a job, Amazon SageMaker sends the algorithm the SIGTERM signal.
+-- This gracefully shuts the job down. If the job hasn\'t stopped, it sends
+-- the SIGKILL signal.
+--
+-- When it receives a @StopCompilationJob@ request, Amazon SageMaker
+-- changes the CompilationJobSummary$CompilationJobStatus of the job to
+-- @Stopping@. After Amazon SageMaker stops the job, it sets the
+-- CompilationJobSummary$CompilationJobStatus to @Stopped@.
+module Amazonka.SageMaker.StopCompilationJob
+  ( -- * Creating a Request
+    StopCompilationJob (..),
+    newStopCompilationJob,
+
+    -- * Request Lenses
+    stopCompilationJob_compilationJobName,
+
+    -- * Destructuring the Response
+    StopCompilationJobResponse (..),
+    newStopCompilationJobResponse,
+  )
+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:/ 'newStopCompilationJob' smart constructor.
+data StopCompilationJob = StopCompilationJob'
+  { -- | The name of the model compilation job to stop.
+    compilationJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopCompilationJob' 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:
+--
+-- 'compilationJobName', 'stopCompilationJob_compilationJobName' - The name of the model compilation job to stop.
+newStopCompilationJob ::
+  -- | 'compilationJobName'
+  Prelude.Text ->
+  StopCompilationJob
+newStopCompilationJob pCompilationJobName_ =
+  StopCompilationJob'
+    { compilationJobName =
+        pCompilationJobName_
+    }
+
+-- | The name of the model compilation job to stop.
+stopCompilationJob_compilationJobName :: Lens.Lens' StopCompilationJob Prelude.Text
+stopCompilationJob_compilationJobName = Lens.lens (\StopCompilationJob' {compilationJobName} -> compilationJobName) (\s@StopCompilationJob' {} a -> s {compilationJobName = a} :: StopCompilationJob)
+
+instance Core.AWSRequest StopCompilationJob where
+  type
+    AWSResponse StopCompilationJob =
+      StopCompilationJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopCompilationJobResponse'
+
+instance Prelude.Hashable StopCompilationJob where
+  hashWithSalt _salt StopCompilationJob' {..} =
+    _salt `Prelude.hashWithSalt` compilationJobName
+
+instance Prelude.NFData StopCompilationJob where
+  rnf StopCompilationJob' {..} =
+    Prelude.rnf compilationJobName
+
+instance Data.ToHeaders StopCompilationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopCompilationJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopCompilationJob where
+  toJSON StopCompilationJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CompilationJobName" Data..= compilationJobName)
+          ]
+      )
+
+instance Data.ToPath StopCompilationJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopCompilationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopCompilationJobResponse' smart constructor.
+data StopCompilationJobResponse = StopCompilationJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopCompilationJobResponse' 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.
+newStopCompilationJobResponse ::
+  StopCompilationJobResponse
+newStopCompilationJobResponse =
+  StopCompilationJobResponse'
+
+instance Prelude.NFData StopCompilationJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopEdgeDeploymentStage.hs b/gen/Amazonka/SageMaker/StopEdgeDeploymentStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopEdgeDeploymentStage.hs
@@ -0,0 +1,163 @@
+{-# 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.StopEdgeDeploymentStage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a stage in an edge deployment plan.
+module Amazonka.SageMaker.StopEdgeDeploymentStage
+  ( -- * Creating a Request
+    StopEdgeDeploymentStage (..),
+    newStopEdgeDeploymentStage,
+
+    -- * Request Lenses
+    stopEdgeDeploymentStage_edgeDeploymentPlanName,
+    stopEdgeDeploymentStage_stageName,
+
+    -- * Destructuring the Response
+    StopEdgeDeploymentStageResponse (..),
+    newStopEdgeDeploymentStageResponse,
+  )
+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:/ 'newStopEdgeDeploymentStage' smart constructor.
+data StopEdgeDeploymentStage = StopEdgeDeploymentStage'
+  { -- | The name of the edge deployment plan to stop.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | The name of the stage to stop.
+    stageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopEdgeDeploymentStage' 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:
+--
+-- 'edgeDeploymentPlanName', 'stopEdgeDeploymentStage_edgeDeploymentPlanName' - The name of the edge deployment plan to stop.
+--
+-- 'stageName', 'stopEdgeDeploymentStage_stageName' - The name of the stage to stop.
+newStopEdgeDeploymentStage ::
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'stageName'
+  Prelude.Text ->
+  StopEdgeDeploymentStage
+newStopEdgeDeploymentStage
+  pEdgeDeploymentPlanName_
+  pStageName_ =
+    StopEdgeDeploymentStage'
+      { edgeDeploymentPlanName =
+          pEdgeDeploymentPlanName_,
+        stageName = pStageName_
+      }
+
+-- | The name of the edge deployment plan to stop.
+stopEdgeDeploymentStage_edgeDeploymentPlanName :: Lens.Lens' StopEdgeDeploymentStage Prelude.Text
+stopEdgeDeploymentStage_edgeDeploymentPlanName = Lens.lens (\StopEdgeDeploymentStage' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@StopEdgeDeploymentStage' {} a -> s {edgeDeploymentPlanName = a} :: StopEdgeDeploymentStage)
+
+-- | The name of the stage to stop.
+stopEdgeDeploymentStage_stageName :: Lens.Lens' StopEdgeDeploymentStage Prelude.Text
+stopEdgeDeploymentStage_stageName = Lens.lens (\StopEdgeDeploymentStage' {stageName} -> stageName) (\s@StopEdgeDeploymentStage' {} a -> s {stageName = a} :: StopEdgeDeploymentStage)
+
+instance Core.AWSRequest StopEdgeDeploymentStage where
+  type
+    AWSResponse StopEdgeDeploymentStage =
+      StopEdgeDeploymentStageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      StopEdgeDeploymentStageResponse'
+
+instance Prelude.Hashable StopEdgeDeploymentStage where
+  hashWithSalt _salt StopEdgeDeploymentStage' {..} =
+    _salt
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` stageName
+
+instance Prelude.NFData StopEdgeDeploymentStage where
+  rnf StopEdgeDeploymentStage' {..} =
+    Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf stageName
+
+instance Data.ToHeaders StopEdgeDeploymentStage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopEdgeDeploymentStage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopEdgeDeploymentStage where
+  toJSON StopEdgeDeploymentStage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgeDeploymentPlanName"
+                  Data..= edgeDeploymentPlanName
+              ),
+            Prelude.Just ("StageName" Data..= stageName)
+          ]
+      )
+
+instance Data.ToPath StopEdgeDeploymentStage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopEdgeDeploymentStage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopEdgeDeploymentStageResponse' smart constructor.
+data StopEdgeDeploymentStageResponse = StopEdgeDeploymentStageResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopEdgeDeploymentStageResponse' 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.
+newStopEdgeDeploymentStageResponse ::
+  StopEdgeDeploymentStageResponse
+newStopEdgeDeploymentStageResponse =
+  StopEdgeDeploymentStageResponse'
+
+instance
+  Prelude.NFData
+    StopEdgeDeploymentStageResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopEdgePackagingJob.hs b/gen/Amazonka/SageMaker/StopEdgePackagingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopEdgePackagingJob.hs
@@ -0,0 +1,141 @@
+{-# 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.StopEdgePackagingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Request to stop an edge packaging job.
+module Amazonka.SageMaker.StopEdgePackagingJob
+  ( -- * Creating a Request
+    StopEdgePackagingJob (..),
+    newStopEdgePackagingJob,
+
+    -- * Request Lenses
+    stopEdgePackagingJob_edgePackagingJobName,
+
+    -- * Destructuring the Response
+    StopEdgePackagingJobResponse (..),
+    newStopEdgePackagingJobResponse,
+  )
+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:/ 'newStopEdgePackagingJob' smart constructor.
+data StopEdgePackagingJob = StopEdgePackagingJob'
+  { -- | The name of the edge packaging job.
+    edgePackagingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopEdgePackagingJob' 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:
+--
+-- 'edgePackagingJobName', 'stopEdgePackagingJob_edgePackagingJobName' - The name of the edge packaging job.
+newStopEdgePackagingJob ::
+  -- | 'edgePackagingJobName'
+  Prelude.Text ->
+  StopEdgePackagingJob
+newStopEdgePackagingJob pEdgePackagingJobName_ =
+  StopEdgePackagingJob'
+    { edgePackagingJobName =
+        pEdgePackagingJobName_
+    }
+
+-- | The name of the edge packaging job.
+stopEdgePackagingJob_edgePackagingJobName :: Lens.Lens' StopEdgePackagingJob Prelude.Text
+stopEdgePackagingJob_edgePackagingJobName = Lens.lens (\StopEdgePackagingJob' {edgePackagingJobName} -> edgePackagingJobName) (\s@StopEdgePackagingJob' {} a -> s {edgePackagingJobName = a} :: StopEdgePackagingJob)
+
+instance Core.AWSRequest StopEdgePackagingJob where
+  type
+    AWSResponse StopEdgePackagingJob =
+      StopEdgePackagingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopEdgePackagingJobResponse'
+
+instance Prelude.Hashable StopEdgePackagingJob where
+  hashWithSalt _salt StopEdgePackagingJob' {..} =
+    _salt `Prelude.hashWithSalt` edgePackagingJobName
+
+instance Prelude.NFData StopEdgePackagingJob where
+  rnf StopEdgePackagingJob' {..} =
+    Prelude.rnf edgePackagingJobName
+
+instance Data.ToHeaders StopEdgePackagingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopEdgePackagingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopEdgePackagingJob where
+  toJSON StopEdgePackagingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "EdgePackagingJobName"
+                  Data..= edgePackagingJobName
+              )
+          ]
+      )
+
+instance Data.ToPath StopEdgePackagingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopEdgePackagingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopEdgePackagingJobResponse' smart constructor.
+data StopEdgePackagingJobResponse = StopEdgePackagingJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopEdgePackagingJobResponse' 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.
+newStopEdgePackagingJobResponse ::
+  StopEdgePackagingJobResponse
+newStopEdgePackagingJobResponse =
+  StopEdgePackagingJobResponse'
+
+instance Prelude.NFData StopEdgePackagingJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopHyperParameterTuningJob.hs b/gen/Amazonka/SageMaker/StopHyperParameterTuningJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopHyperParameterTuningJob.hs
@@ -0,0 +1,154 @@
+{-# 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.StopHyperParameterTuningJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a running hyperparameter tuning job and all running training jobs
+-- that the tuning job launched.
+--
+-- All model artifacts output from the training jobs are stored in Amazon
+-- Simple Storage Service (Amazon S3). All data that the training jobs
+-- write to Amazon CloudWatch Logs are still available in CloudWatch. After
+-- the tuning job moves to the @Stopped@ state, it releases all reserved
+-- resources for the tuning job.
+module Amazonka.SageMaker.StopHyperParameterTuningJob
+  ( -- * Creating a Request
+    StopHyperParameterTuningJob (..),
+    newStopHyperParameterTuningJob,
+
+    -- * Request Lenses
+    stopHyperParameterTuningJob_hyperParameterTuningJobName,
+
+    -- * Destructuring the Response
+    StopHyperParameterTuningJobResponse (..),
+    newStopHyperParameterTuningJobResponse,
+  )
+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:/ 'newStopHyperParameterTuningJob' smart constructor.
+data StopHyperParameterTuningJob = StopHyperParameterTuningJob'
+  { -- | The name of the tuning job to stop.
+    hyperParameterTuningJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopHyperParameterTuningJob' 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:
+--
+-- 'hyperParameterTuningJobName', 'stopHyperParameterTuningJob_hyperParameterTuningJobName' - The name of the tuning job to stop.
+newStopHyperParameterTuningJob ::
+  -- | 'hyperParameterTuningJobName'
+  Prelude.Text ->
+  StopHyperParameterTuningJob
+newStopHyperParameterTuningJob
+  pHyperParameterTuningJobName_ =
+    StopHyperParameterTuningJob'
+      { hyperParameterTuningJobName =
+          pHyperParameterTuningJobName_
+      }
+
+-- | The name of the tuning job to stop.
+stopHyperParameterTuningJob_hyperParameterTuningJobName :: Lens.Lens' StopHyperParameterTuningJob Prelude.Text
+stopHyperParameterTuningJob_hyperParameterTuningJobName = Lens.lens (\StopHyperParameterTuningJob' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@StopHyperParameterTuningJob' {} a -> s {hyperParameterTuningJobName = a} :: StopHyperParameterTuningJob)
+
+instance Core.AWSRequest StopHyperParameterTuningJob where
+  type
+    AWSResponse StopHyperParameterTuningJob =
+      StopHyperParameterTuningJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      StopHyperParameterTuningJobResponse'
+
+instance Prelude.Hashable StopHyperParameterTuningJob where
+  hashWithSalt _salt StopHyperParameterTuningJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` hyperParameterTuningJobName
+
+instance Prelude.NFData StopHyperParameterTuningJob where
+  rnf StopHyperParameterTuningJob' {..} =
+    Prelude.rnf hyperParameterTuningJobName
+
+instance Data.ToHeaders StopHyperParameterTuningJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopHyperParameterTuningJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopHyperParameterTuningJob where
+  toJSON StopHyperParameterTuningJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "HyperParameterTuningJobName"
+                  Data..= hyperParameterTuningJobName
+              )
+          ]
+      )
+
+instance Data.ToPath StopHyperParameterTuningJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopHyperParameterTuningJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopHyperParameterTuningJobResponse' smart constructor.
+data StopHyperParameterTuningJobResponse = StopHyperParameterTuningJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopHyperParameterTuningJobResponse' 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.
+newStopHyperParameterTuningJobResponse ::
+  StopHyperParameterTuningJobResponse
+newStopHyperParameterTuningJobResponse =
+  StopHyperParameterTuningJobResponse'
+
+instance
+  Prelude.NFData
+    StopHyperParameterTuningJobResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopInferenceExperiment.hs b/gen/Amazonka/SageMaker/StopInferenceExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopInferenceExperiment.hs
@@ -0,0 +1,281 @@
+{-# 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.StopInferenceExperiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops an inference experiment.
+module Amazonka.SageMaker.StopInferenceExperiment
+  ( -- * Creating a Request
+    StopInferenceExperiment (..),
+    newStopInferenceExperiment,
+
+    -- * Request Lenses
+    stopInferenceExperiment_desiredModelVariants,
+    stopInferenceExperiment_desiredState,
+    stopInferenceExperiment_reason,
+    stopInferenceExperiment_name,
+    stopInferenceExperiment_modelVariantActions,
+
+    -- * Destructuring the Response
+    StopInferenceExperimentResponse (..),
+    newStopInferenceExperimentResponse,
+
+    -- * Response Lenses
+    stopInferenceExperimentResponse_httpStatus,
+    stopInferenceExperimentResponse_inferenceExperimentArn,
+  )
+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:/ 'newStopInferenceExperiment' smart constructor.
+data StopInferenceExperiment = StopInferenceExperiment'
+  { -- | An array of @ModelVariantConfig@ objects. There is one for each variant
+    -- that you want to deploy after the inference experiment stops. Each
+    -- @ModelVariantConfig@ describes the infrastructure configuration for
+    -- deploying the corresponding variant.
+    desiredModelVariants :: Prelude.Maybe (Prelude.NonEmpty ModelVariantConfig),
+    -- | The desired state of the experiment after stopping. The possible states
+    -- are the following:
+    --
+    -- -   @Completed@: The experiment completed successfully
+    --
+    -- -   @Cancelled@: The experiment was canceled
+    desiredState :: Prelude.Maybe InferenceExperimentStopDesiredState,
+    -- | The reason for stopping the experiment.
+    reason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference experiment to stop.
+    name :: Prelude.Text,
+    -- | Array of key-value pairs, with names of variants mapped to actions. The
+    -- possible actions are the following:
+    --
+    -- -   @Promote@ - Promote the shadow variant to a production variant
+    --
+    -- -   @Remove@ - Delete the variant
+    --
+    -- -   @Retain@ - Keep the variant as it is
+    modelVariantActions :: Prelude.HashMap Prelude.Text ModelVariantAction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopInferenceExperiment' 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:
+--
+-- 'desiredModelVariants', 'stopInferenceExperiment_desiredModelVariants' - An array of @ModelVariantConfig@ objects. There is one for each variant
+-- that you want to deploy after the inference experiment stops. Each
+-- @ModelVariantConfig@ describes the infrastructure configuration for
+-- deploying the corresponding variant.
+--
+-- 'desiredState', 'stopInferenceExperiment_desiredState' - The desired state of the experiment after stopping. The possible states
+-- are the following:
+--
+-- -   @Completed@: The experiment completed successfully
+--
+-- -   @Cancelled@: The experiment was canceled
+--
+-- 'reason', 'stopInferenceExperiment_reason' - The reason for stopping the experiment.
+--
+-- 'name', 'stopInferenceExperiment_name' - The name of the inference experiment to stop.
+--
+-- 'modelVariantActions', 'stopInferenceExperiment_modelVariantActions' - Array of key-value pairs, with names of variants mapped to actions. The
+-- possible actions are the following:
+--
+-- -   @Promote@ - Promote the shadow variant to a production variant
+--
+-- -   @Remove@ - Delete the variant
+--
+-- -   @Retain@ - Keep the variant as it is
+newStopInferenceExperiment ::
+  -- | 'name'
+  Prelude.Text ->
+  StopInferenceExperiment
+newStopInferenceExperiment pName_ =
+  StopInferenceExperiment'
+    { desiredModelVariants =
+        Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      reason = Prelude.Nothing,
+      name = pName_,
+      modelVariantActions = Prelude.mempty
+    }
+
+-- | An array of @ModelVariantConfig@ objects. There is one for each variant
+-- that you want to deploy after the inference experiment stops. Each
+-- @ModelVariantConfig@ describes the infrastructure configuration for
+-- deploying the corresponding variant.
+stopInferenceExperiment_desiredModelVariants :: Lens.Lens' StopInferenceExperiment (Prelude.Maybe (Prelude.NonEmpty ModelVariantConfig))
+stopInferenceExperiment_desiredModelVariants = Lens.lens (\StopInferenceExperiment' {desiredModelVariants} -> desiredModelVariants) (\s@StopInferenceExperiment' {} a -> s {desiredModelVariants = a} :: StopInferenceExperiment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The desired state of the experiment after stopping. The possible states
+-- are the following:
+--
+-- -   @Completed@: The experiment completed successfully
+--
+-- -   @Cancelled@: The experiment was canceled
+stopInferenceExperiment_desiredState :: Lens.Lens' StopInferenceExperiment (Prelude.Maybe InferenceExperimentStopDesiredState)
+stopInferenceExperiment_desiredState = Lens.lens (\StopInferenceExperiment' {desiredState} -> desiredState) (\s@StopInferenceExperiment' {} a -> s {desiredState = a} :: StopInferenceExperiment)
+
+-- | The reason for stopping the experiment.
+stopInferenceExperiment_reason :: Lens.Lens' StopInferenceExperiment (Prelude.Maybe Prelude.Text)
+stopInferenceExperiment_reason = Lens.lens (\StopInferenceExperiment' {reason} -> reason) (\s@StopInferenceExperiment' {} a -> s {reason = a} :: StopInferenceExperiment)
+
+-- | The name of the inference experiment to stop.
+stopInferenceExperiment_name :: Lens.Lens' StopInferenceExperiment Prelude.Text
+stopInferenceExperiment_name = Lens.lens (\StopInferenceExperiment' {name} -> name) (\s@StopInferenceExperiment' {} a -> s {name = a} :: StopInferenceExperiment)
+
+-- | Array of key-value pairs, with names of variants mapped to actions. The
+-- possible actions are the following:
+--
+-- -   @Promote@ - Promote the shadow variant to a production variant
+--
+-- -   @Remove@ - Delete the variant
+--
+-- -   @Retain@ - Keep the variant as it is
+stopInferenceExperiment_modelVariantActions :: Lens.Lens' StopInferenceExperiment (Prelude.HashMap Prelude.Text ModelVariantAction)
+stopInferenceExperiment_modelVariantActions = Lens.lens (\StopInferenceExperiment' {modelVariantActions} -> modelVariantActions) (\s@StopInferenceExperiment' {} a -> s {modelVariantActions = a} :: StopInferenceExperiment) Prelude.. Lens.coerced
+
+instance Core.AWSRequest StopInferenceExperiment where
+  type
+    AWSResponse StopInferenceExperiment =
+      StopInferenceExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopInferenceExperimentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InferenceExperimentArn")
+      )
+
+instance Prelude.Hashable StopInferenceExperiment where
+  hashWithSalt _salt StopInferenceExperiment' {..} =
+    _salt
+      `Prelude.hashWithSalt` desiredModelVariants
+      `Prelude.hashWithSalt` desiredState
+      `Prelude.hashWithSalt` reason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` modelVariantActions
+
+instance Prelude.NFData StopInferenceExperiment where
+  rnf StopInferenceExperiment' {..} =
+    Prelude.rnf desiredModelVariants
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf reason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf modelVariantActions
+
+instance Data.ToHeaders StopInferenceExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopInferenceExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopInferenceExperiment where
+  toJSON StopInferenceExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DesiredModelVariants" Data..=)
+              Prelude.<$> desiredModelVariants,
+            ("DesiredState" Data..=) Prelude.<$> desiredState,
+            ("Reason" Data..=) Prelude.<$> reason,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("ModelVariantActions" Data..= modelVariantActions)
+          ]
+      )
+
+instance Data.ToPath StopInferenceExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopInferenceExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopInferenceExperimentResponse' smart constructor.
+data StopInferenceExperimentResponse = StopInferenceExperimentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the stopped inference experiment.
+    inferenceExperimentArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopInferenceExperimentResponse' 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', 'stopInferenceExperimentResponse_httpStatus' - The response's http status code.
+--
+-- 'inferenceExperimentArn', 'stopInferenceExperimentResponse_inferenceExperimentArn' - The ARN of the stopped inference experiment.
+newStopInferenceExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'inferenceExperimentArn'
+  Prelude.Text ->
+  StopInferenceExperimentResponse
+newStopInferenceExperimentResponse
+  pHttpStatus_
+  pInferenceExperimentArn_ =
+    StopInferenceExperimentResponse'
+      { httpStatus =
+          pHttpStatus_,
+        inferenceExperimentArn =
+          pInferenceExperimentArn_
+      }
+
+-- | The response's http status code.
+stopInferenceExperimentResponse_httpStatus :: Lens.Lens' StopInferenceExperimentResponse Prelude.Int
+stopInferenceExperimentResponse_httpStatus = Lens.lens (\StopInferenceExperimentResponse' {httpStatus} -> httpStatus) (\s@StopInferenceExperimentResponse' {} a -> s {httpStatus = a} :: StopInferenceExperimentResponse)
+
+-- | The ARN of the stopped inference experiment.
+stopInferenceExperimentResponse_inferenceExperimentArn :: Lens.Lens' StopInferenceExperimentResponse Prelude.Text
+stopInferenceExperimentResponse_inferenceExperimentArn = Lens.lens (\StopInferenceExperimentResponse' {inferenceExperimentArn} -> inferenceExperimentArn) (\s@StopInferenceExperimentResponse' {} a -> s {inferenceExperimentArn = a} :: StopInferenceExperimentResponse)
+
+instance
+  Prelude.NFData
+    StopInferenceExperimentResponse
+  where
+  rnf StopInferenceExperimentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf inferenceExperimentArn
diff --git a/gen/Amazonka/SageMaker/StopInferenceRecommendationsJob.hs b/gen/Amazonka/SageMaker/StopInferenceRecommendationsJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopInferenceRecommendationsJob.hs
@@ -0,0 +1,155 @@
+{-# 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.StopInferenceRecommendationsJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops an Inference Recommender job.
+module Amazonka.SageMaker.StopInferenceRecommendationsJob
+  ( -- * Creating a Request
+    StopInferenceRecommendationsJob (..),
+    newStopInferenceRecommendationsJob,
+
+    -- * Request Lenses
+    stopInferenceRecommendationsJob_jobName,
+
+    -- * Destructuring the Response
+    StopInferenceRecommendationsJobResponse (..),
+    newStopInferenceRecommendationsJobResponse,
+  )
+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:/ 'newStopInferenceRecommendationsJob' smart constructor.
+data StopInferenceRecommendationsJob = StopInferenceRecommendationsJob'
+  { -- | The name of the job you want to stop.
+    jobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopInferenceRecommendationsJob' 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:
+--
+-- 'jobName', 'stopInferenceRecommendationsJob_jobName' - The name of the job you want to stop.
+newStopInferenceRecommendationsJob ::
+  -- | 'jobName'
+  Prelude.Text ->
+  StopInferenceRecommendationsJob
+newStopInferenceRecommendationsJob pJobName_ =
+  StopInferenceRecommendationsJob'
+    { jobName =
+        pJobName_
+    }
+
+-- | The name of the job you want to stop.
+stopInferenceRecommendationsJob_jobName :: Lens.Lens' StopInferenceRecommendationsJob Prelude.Text
+stopInferenceRecommendationsJob_jobName = Lens.lens (\StopInferenceRecommendationsJob' {jobName} -> jobName) (\s@StopInferenceRecommendationsJob' {} a -> s {jobName = a} :: StopInferenceRecommendationsJob)
+
+instance
+  Core.AWSRequest
+    StopInferenceRecommendationsJob
+  where
+  type
+    AWSResponse StopInferenceRecommendationsJob =
+      StopInferenceRecommendationsJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      StopInferenceRecommendationsJobResponse'
+
+instance
+  Prelude.Hashable
+    StopInferenceRecommendationsJob
+  where
+  hashWithSalt
+    _salt
+    StopInferenceRecommendationsJob' {..} =
+      _salt `Prelude.hashWithSalt` jobName
+
+instance
+  Prelude.NFData
+    StopInferenceRecommendationsJob
+  where
+  rnf StopInferenceRecommendationsJob' {..} =
+    Prelude.rnf jobName
+
+instance
+  Data.ToHeaders
+    StopInferenceRecommendationsJob
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopInferenceRecommendationsJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopInferenceRecommendationsJob where
+  toJSON StopInferenceRecommendationsJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("JobName" Data..= jobName)]
+      )
+
+instance Data.ToPath StopInferenceRecommendationsJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopInferenceRecommendationsJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopInferenceRecommendationsJobResponse' smart constructor.
+data StopInferenceRecommendationsJobResponse = StopInferenceRecommendationsJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopInferenceRecommendationsJobResponse' 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.
+newStopInferenceRecommendationsJobResponse ::
+  StopInferenceRecommendationsJobResponse
+newStopInferenceRecommendationsJobResponse =
+  StopInferenceRecommendationsJobResponse'
+
+instance
+  Prelude.NFData
+    StopInferenceRecommendationsJobResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopLabelingJob.hs b/gen/Amazonka/SageMaker/StopLabelingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopLabelingJob.hs
@@ -0,0 +1,138 @@
+{-# 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.StopLabelingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a running labeling job. A job that is stopped cannot be restarted.
+-- Any results obtained before the job is stopped are placed in the Amazon
+-- S3 output bucket.
+module Amazonka.SageMaker.StopLabelingJob
+  ( -- * Creating a Request
+    StopLabelingJob (..),
+    newStopLabelingJob,
+
+    -- * Request Lenses
+    stopLabelingJob_labelingJobName,
+
+    -- * Destructuring the Response
+    StopLabelingJobResponse (..),
+    newStopLabelingJobResponse,
+  )
+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:/ 'newStopLabelingJob' smart constructor.
+data StopLabelingJob = StopLabelingJob'
+  { -- | The name of the labeling job to stop.
+    labelingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopLabelingJob' 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:
+--
+-- 'labelingJobName', 'stopLabelingJob_labelingJobName' - The name of the labeling job to stop.
+newStopLabelingJob ::
+  -- | 'labelingJobName'
+  Prelude.Text ->
+  StopLabelingJob
+newStopLabelingJob pLabelingJobName_ =
+  StopLabelingJob'
+    { labelingJobName =
+        pLabelingJobName_
+    }
+
+-- | The name of the labeling job to stop.
+stopLabelingJob_labelingJobName :: Lens.Lens' StopLabelingJob Prelude.Text
+stopLabelingJob_labelingJobName = Lens.lens (\StopLabelingJob' {labelingJobName} -> labelingJobName) (\s@StopLabelingJob' {} a -> s {labelingJobName = a} :: StopLabelingJob)
+
+instance Core.AWSRequest StopLabelingJob where
+  type
+    AWSResponse StopLabelingJob =
+      StopLabelingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopLabelingJobResponse'
+
+instance Prelude.Hashable StopLabelingJob where
+  hashWithSalt _salt StopLabelingJob' {..} =
+    _salt `Prelude.hashWithSalt` labelingJobName
+
+instance Prelude.NFData StopLabelingJob where
+  rnf StopLabelingJob' {..} =
+    Prelude.rnf labelingJobName
+
+instance Data.ToHeaders StopLabelingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.StopLabelingJob" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopLabelingJob where
+  toJSON StopLabelingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LabelingJobName" Data..= labelingJobName)
+          ]
+      )
+
+instance Data.ToPath StopLabelingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopLabelingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopLabelingJobResponse' smart constructor.
+data StopLabelingJobResponse = StopLabelingJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopLabelingJobResponse' 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.
+newStopLabelingJobResponse ::
+  StopLabelingJobResponse
+newStopLabelingJobResponse = StopLabelingJobResponse'
+
+instance Prelude.NFData StopLabelingJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopMonitoringSchedule.hs b/gen/Amazonka/SageMaker/StopMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopMonitoringSchedule.hs
@@ -0,0 +1,145 @@
+{-# 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.StopMonitoringSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a previously started monitoring schedule.
+module Amazonka.SageMaker.StopMonitoringSchedule
+  ( -- * Creating a Request
+    StopMonitoringSchedule (..),
+    newStopMonitoringSchedule,
+
+    -- * Request Lenses
+    stopMonitoringSchedule_monitoringScheduleName,
+
+    -- * Destructuring the Response
+    StopMonitoringScheduleResponse (..),
+    newStopMonitoringScheduleResponse,
+  )
+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:/ 'newStopMonitoringSchedule' smart constructor.
+data StopMonitoringSchedule = StopMonitoringSchedule'
+  { -- | The name of the schedule to stop.
+    monitoringScheduleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopMonitoringSchedule' 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:
+--
+-- 'monitoringScheduleName', 'stopMonitoringSchedule_monitoringScheduleName' - The name of the schedule to stop.
+newStopMonitoringSchedule ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  StopMonitoringSchedule
+newStopMonitoringSchedule pMonitoringScheduleName_ =
+  StopMonitoringSchedule'
+    { monitoringScheduleName =
+        pMonitoringScheduleName_
+    }
+
+-- | The name of the schedule to stop.
+stopMonitoringSchedule_monitoringScheduleName :: Lens.Lens' StopMonitoringSchedule Prelude.Text
+stopMonitoringSchedule_monitoringScheduleName = Lens.lens (\StopMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@StopMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: StopMonitoringSchedule)
+
+instance Core.AWSRequest StopMonitoringSchedule where
+  type
+    AWSResponse StopMonitoringSchedule =
+      StopMonitoringScheduleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      StopMonitoringScheduleResponse'
+
+instance Prelude.Hashable StopMonitoringSchedule where
+  hashWithSalt _salt StopMonitoringSchedule' {..} =
+    _salt `Prelude.hashWithSalt` monitoringScheduleName
+
+instance Prelude.NFData StopMonitoringSchedule where
+  rnf StopMonitoringSchedule' {..} =
+    Prelude.rnf monitoringScheduleName
+
+instance Data.ToHeaders StopMonitoringSchedule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopMonitoringSchedule" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopMonitoringSchedule where
+  toJSON StopMonitoringSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              )
+          ]
+      )
+
+instance Data.ToPath StopMonitoringSchedule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopMonitoringSchedule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopMonitoringScheduleResponse' smart constructor.
+data StopMonitoringScheduleResponse = StopMonitoringScheduleResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopMonitoringScheduleResponse' 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.
+newStopMonitoringScheduleResponse ::
+  StopMonitoringScheduleResponse
+newStopMonitoringScheduleResponse =
+  StopMonitoringScheduleResponse'
+
+instance
+  Prelude.NFData
+    StopMonitoringScheduleResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopNotebookInstance.hs b/gen/Amazonka/SageMaker/StopNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopNotebookInstance.hs
@@ -0,0 +1,150 @@
+{-# 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.StopNotebookInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Terminates the ML compute instance. Before terminating the instance,
+-- SageMaker disconnects the ML storage volume from it. SageMaker preserves
+-- the ML storage volume. SageMaker stops charging you for the ML compute
+-- instance when you call @StopNotebookInstance@.
+--
+-- To access data on the ML storage volume for a notebook instance that has
+-- been terminated, call the @StartNotebookInstance@ API.
+-- @StartNotebookInstance@ launches another ML compute instance, configures
+-- it, and attaches the preserved ML storage volume so you can continue
+-- your work.
+module Amazonka.SageMaker.StopNotebookInstance
+  ( -- * Creating a Request
+    StopNotebookInstance (..),
+    newStopNotebookInstance,
+
+    -- * Request Lenses
+    stopNotebookInstance_notebookInstanceName,
+
+    -- * Destructuring the Response
+    StopNotebookInstanceResponse (..),
+    newStopNotebookInstanceResponse,
+  )
+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:/ 'newStopNotebookInstance' smart constructor.
+data StopNotebookInstance = StopNotebookInstance'
+  { -- | The name of the notebook instance to terminate.
+    notebookInstanceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopNotebookInstance' 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:
+--
+-- 'notebookInstanceName', 'stopNotebookInstance_notebookInstanceName' - The name of the notebook instance to terminate.
+newStopNotebookInstance ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  StopNotebookInstance
+newStopNotebookInstance pNotebookInstanceName_ =
+  StopNotebookInstance'
+    { notebookInstanceName =
+        pNotebookInstanceName_
+    }
+
+-- | The name of the notebook instance to terminate.
+stopNotebookInstance_notebookInstanceName :: Lens.Lens' StopNotebookInstance Prelude.Text
+stopNotebookInstance_notebookInstanceName = Lens.lens (\StopNotebookInstance' {notebookInstanceName} -> notebookInstanceName) (\s@StopNotebookInstance' {} a -> s {notebookInstanceName = a} :: StopNotebookInstance)
+
+instance Core.AWSRequest StopNotebookInstance where
+  type
+    AWSResponse StopNotebookInstance =
+      StopNotebookInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopNotebookInstanceResponse'
+
+instance Prelude.Hashable StopNotebookInstance where
+  hashWithSalt _salt StopNotebookInstance' {..} =
+    _salt `Prelude.hashWithSalt` notebookInstanceName
+
+instance Prelude.NFData StopNotebookInstance where
+  rnf StopNotebookInstance' {..} =
+    Prelude.rnf notebookInstanceName
+
+instance Data.ToHeaders StopNotebookInstance where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopNotebookInstance" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopNotebookInstance where
+  toJSON StopNotebookInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              )
+          ]
+      )
+
+instance Data.ToPath StopNotebookInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopNotebookInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopNotebookInstanceResponse' smart constructor.
+data StopNotebookInstanceResponse = StopNotebookInstanceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopNotebookInstanceResponse' 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.
+newStopNotebookInstanceResponse ::
+  StopNotebookInstanceResponse
+newStopNotebookInstanceResponse =
+  StopNotebookInstanceResponse'
+
+instance Prelude.NFData StopNotebookInstanceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopPipelineExecution.hs b/gen/Amazonka/SageMaker/StopPipelineExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopPipelineExecution.hs
@@ -0,0 +1,227 @@
+{-# 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.StopPipelineExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a pipeline execution.
+--
+-- __Callback Step__
+--
+-- A pipeline execution won\'t stop while a callback step is running. When
+-- you call @StopPipelineExecution@ on a pipeline execution with a running
+-- callback step, SageMaker Pipelines sends an additional Amazon SQS
+-- message to the specified SQS queue. The body of the SQS message contains
+-- a \"Status\" field which is set to \"Stopping\".
+--
+-- You should add logic to your Amazon SQS message consumer to take any
+-- needed action (for example, resource cleanup) upon receipt of the
+-- message followed by a call to @SendPipelineExecutionStepSuccess@ or
+-- @SendPipelineExecutionStepFailure@.
+--
+-- Only when SageMaker Pipelines receives one of these calls will it stop
+-- the pipeline execution.
+--
+-- __Lambda Step__
+--
+-- A pipeline execution can\'t be stopped while a lambda step is running
+-- because the Lambda function invoked by the lambda step can\'t be
+-- stopped. If you attempt to stop the execution while the Lambda function
+-- is running, the pipeline waits for the Lambda function to finish or
+-- until the timeout is hit, whichever occurs first, and then stops. If the
+-- Lambda function finishes, the pipeline execution status is @Stopped@. If
+-- the timeout is hit the pipeline execution status is @Failed@.
+module Amazonka.SageMaker.StopPipelineExecution
+  ( -- * Creating a Request
+    StopPipelineExecution (..),
+    newStopPipelineExecution,
+
+    -- * Request Lenses
+    stopPipelineExecution_pipelineExecutionArn,
+    stopPipelineExecution_clientRequestToken,
+
+    -- * Destructuring the Response
+    StopPipelineExecutionResponse (..),
+    newStopPipelineExecutionResponse,
+
+    -- * Response Lenses
+    stopPipelineExecutionResponse_pipelineExecutionArn,
+    stopPipelineExecutionResponse_httpStatus,
+  )
+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:/ 'newStopPipelineExecution' smart constructor.
+data StopPipelineExecution = StopPipelineExecution'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Text,
+    -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the operation. An idempotent operation completes no more
+    -- than once.
+    clientRequestToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopPipelineExecution' 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:
+--
+-- 'pipelineExecutionArn', 'stopPipelineExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'clientRequestToken', 'stopPipelineExecution_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than once.
+newStopPipelineExecution ::
+  -- | 'pipelineExecutionArn'
+  Prelude.Text ->
+  -- | 'clientRequestToken'
+  Prelude.Text ->
+  StopPipelineExecution
+newStopPipelineExecution
+  pPipelineExecutionArn_
+  pClientRequestToken_ =
+    StopPipelineExecution'
+      { pipelineExecutionArn =
+          pPipelineExecutionArn_,
+        clientRequestToken = pClientRequestToken_
+      }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+stopPipelineExecution_pipelineExecutionArn :: Lens.Lens' StopPipelineExecution Prelude.Text
+stopPipelineExecution_pipelineExecutionArn = Lens.lens (\StopPipelineExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@StopPipelineExecution' {} a -> s {pipelineExecutionArn = a} :: StopPipelineExecution)
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the operation. An idempotent operation completes no more
+-- than once.
+stopPipelineExecution_clientRequestToken :: Lens.Lens' StopPipelineExecution Prelude.Text
+stopPipelineExecution_clientRequestToken = Lens.lens (\StopPipelineExecution' {clientRequestToken} -> clientRequestToken) (\s@StopPipelineExecution' {} a -> s {clientRequestToken = a} :: StopPipelineExecution)
+
+instance Core.AWSRequest StopPipelineExecution where
+  type
+    AWSResponse StopPipelineExecution =
+      StopPipelineExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopPipelineExecutionResponse'
+            Prelude.<$> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopPipelineExecution where
+  hashWithSalt _salt StopPipelineExecution' {..} =
+    _salt
+      `Prelude.hashWithSalt` pipelineExecutionArn
+      `Prelude.hashWithSalt` clientRequestToken
+
+instance Prelude.NFData StopPipelineExecution where
+  rnf StopPipelineExecution' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf clientRequestToken
+
+instance Data.ToHeaders StopPipelineExecution where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopPipelineExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopPipelineExecution where
+  toJSON StopPipelineExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "PipelineExecutionArn"
+                  Data..= pipelineExecutionArn
+              ),
+            Prelude.Just
+              ("ClientRequestToken" Data..= clientRequestToken)
+          ]
+      )
+
+instance Data.ToPath StopPipelineExecution where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopPipelineExecution where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopPipelineExecutionResponse' smart constructor.
+data StopPipelineExecutionResponse = StopPipelineExecutionResponse'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopPipelineExecutionResponse' 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:
+--
+-- 'pipelineExecutionArn', 'stopPipelineExecutionResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'httpStatus', 'stopPipelineExecutionResponse_httpStatus' - The response's http status code.
+newStopPipelineExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopPipelineExecutionResponse
+newStopPipelineExecutionResponse pHttpStatus_ =
+  StopPipelineExecutionResponse'
+    { pipelineExecutionArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+stopPipelineExecutionResponse_pipelineExecutionArn :: Lens.Lens' StopPipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+stopPipelineExecutionResponse_pipelineExecutionArn = Lens.lens (\StopPipelineExecutionResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@StopPipelineExecutionResponse' {} a -> s {pipelineExecutionArn = a} :: StopPipelineExecutionResponse)
+
+-- | The response's http status code.
+stopPipelineExecutionResponse_httpStatus :: Lens.Lens' StopPipelineExecutionResponse Prelude.Int
+stopPipelineExecutionResponse_httpStatus = Lens.lens (\StopPipelineExecutionResponse' {httpStatus} -> httpStatus) (\s@StopPipelineExecutionResponse' {} a -> s {httpStatus = a} :: StopPipelineExecutionResponse)
+
+instance Prelude.NFData StopPipelineExecutionResponse where
+  rnf StopPipelineExecutionResponse' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/StopProcessingJob.hs b/gen/Amazonka/SageMaker/StopProcessingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopProcessingJob.hs
@@ -0,0 +1,139 @@
+{-# 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.StopProcessingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a processing job.
+module Amazonka.SageMaker.StopProcessingJob
+  ( -- * Creating a Request
+    StopProcessingJob (..),
+    newStopProcessingJob,
+
+    -- * Request Lenses
+    stopProcessingJob_processingJobName,
+
+    -- * Destructuring the Response
+    StopProcessingJobResponse (..),
+    newStopProcessingJobResponse,
+  )
+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:/ 'newStopProcessingJob' smart constructor.
+data StopProcessingJob = StopProcessingJob'
+  { -- | The name of the processing job to stop.
+    processingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopProcessingJob' 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:
+--
+-- 'processingJobName', 'stopProcessingJob_processingJobName' - The name of the processing job to stop.
+newStopProcessingJob ::
+  -- | 'processingJobName'
+  Prelude.Text ->
+  StopProcessingJob
+newStopProcessingJob pProcessingJobName_ =
+  StopProcessingJob'
+    { processingJobName =
+        pProcessingJobName_
+    }
+
+-- | The name of the processing job to stop.
+stopProcessingJob_processingJobName :: Lens.Lens' StopProcessingJob Prelude.Text
+stopProcessingJob_processingJobName = Lens.lens (\StopProcessingJob' {processingJobName} -> processingJobName) (\s@StopProcessingJob' {} a -> s {processingJobName = a} :: StopProcessingJob)
+
+instance Core.AWSRequest StopProcessingJob where
+  type
+    AWSResponse StopProcessingJob =
+      StopProcessingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopProcessingJobResponse'
+
+instance Prelude.Hashable StopProcessingJob where
+  hashWithSalt _salt StopProcessingJob' {..} =
+    _salt `Prelude.hashWithSalt` processingJobName
+
+instance Prelude.NFData StopProcessingJob where
+  rnf StopProcessingJob' {..} =
+    Prelude.rnf processingJobName
+
+instance Data.ToHeaders StopProcessingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.StopProcessingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopProcessingJob where
+  toJSON StopProcessingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ProcessingJobName" Data..= processingJobName)
+          ]
+      )
+
+instance Data.ToPath StopProcessingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopProcessingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopProcessingJobResponse' smart constructor.
+data StopProcessingJobResponse = StopProcessingJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopProcessingJobResponse' 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.
+newStopProcessingJobResponse ::
+  StopProcessingJobResponse
+newStopProcessingJobResponse =
+  StopProcessingJobResponse'
+
+instance Prelude.NFData StopProcessingJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopTrainingJob.hs b/gen/Amazonka/SageMaker/StopTrainingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopTrainingJob.hs
@@ -0,0 +1,143 @@
+{-# 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.StopTrainingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a training job. To stop a job, SageMaker sends the algorithm the
+-- @SIGTERM@ signal, which delays job termination for 120 seconds.
+-- Algorithms might use this 120-second window to save the model artifacts,
+-- so the results of the training is not lost.
+--
+-- When it receives a @StopTrainingJob@ request, SageMaker changes the
+-- status of the job to @Stopping@. After SageMaker stops the job, it sets
+-- the status to @Stopped@.
+module Amazonka.SageMaker.StopTrainingJob
+  ( -- * Creating a Request
+    StopTrainingJob (..),
+    newStopTrainingJob,
+
+    -- * Request Lenses
+    stopTrainingJob_trainingJobName,
+
+    -- * Destructuring the Response
+    StopTrainingJobResponse (..),
+    newStopTrainingJobResponse,
+  )
+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:/ 'newStopTrainingJob' smart constructor.
+data StopTrainingJob = StopTrainingJob'
+  { -- | The name of the training job to stop.
+    trainingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopTrainingJob' 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:
+--
+-- 'trainingJobName', 'stopTrainingJob_trainingJobName' - The name of the training job to stop.
+newStopTrainingJob ::
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  StopTrainingJob
+newStopTrainingJob pTrainingJobName_ =
+  StopTrainingJob'
+    { trainingJobName =
+        pTrainingJobName_
+    }
+
+-- | The name of the training job to stop.
+stopTrainingJob_trainingJobName :: Lens.Lens' StopTrainingJob Prelude.Text
+stopTrainingJob_trainingJobName = Lens.lens (\StopTrainingJob' {trainingJobName} -> trainingJobName) (\s@StopTrainingJob' {} a -> s {trainingJobName = a} :: StopTrainingJob)
+
+instance Core.AWSRequest StopTrainingJob where
+  type
+    AWSResponse StopTrainingJob =
+      StopTrainingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopTrainingJobResponse'
+
+instance Prelude.Hashable StopTrainingJob where
+  hashWithSalt _salt StopTrainingJob' {..} =
+    _salt `Prelude.hashWithSalt` trainingJobName
+
+instance Prelude.NFData StopTrainingJob where
+  rnf StopTrainingJob' {..} =
+    Prelude.rnf trainingJobName
+
+instance Data.ToHeaders StopTrainingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.StopTrainingJob" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopTrainingJob where
+  toJSON StopTrainingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TrainingJobName" Data..= trainingJobName)
+          ]
+      )
+
+instance Data.ToPath StopTrainingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopTrainingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopTrainingJobResponse' smart constructor.
+data StopTrainingJobResponse = StopTrainingJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopTrainingJobResponse' 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.
+newStopTrainingJobResponse ::
+  StopTrainingJobResponse
+newStopTrainingJobResponse = StopTrainingJobResponse'
+
+instance Prelude.NFData StopTrainingJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/StopTransformJob.hs b/gen/Amazonka/SageMaker/StopTransformJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/StopTransformJob.hs
@@ -0,0 +1,143 @@
+{-# 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.StopTransformJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a batch transform job.
+--
+-- When Amazon SageMaker receives a @StopTransformJob@ request, the status
+-- of the job changes to @Stopping@. After Amazon SageMaker stops the job,
+-- the status is set to @Stopped@. When you stop a batch transform job
+-- before it is completed, Amazon SageMaker doesn\'t store the job\'s
+-- output in Amazon S3.
+module Amazonka.SageMaker.StopTransformJob
+  ( -- * Creating a Request
+    StopTransformJob (..),
+    newStopTransformJob,
+
+    -- * Request Lenses
+    stopTransformJob_transformJobName,
+
+    -- * Destructuring the Response
+    StopTransformJobResponse (..),
+    newStopTransformJobResponse,
+  )
+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:/ 'newStopTransformJob' smart constructor.
+data StopTransformJob = StopTransformJob'
+  { -- | The name of the batch transform job to stop.
+    transformJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopTransformJob' 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:
+--
+-- 'transformJobName', 'stopTransformJob_transformJobName' - The name of the batch transform job to stop.
+newStopTransformJob ::
+  -- | 'transformJobName'
+  Prelude.Text ->
+  StopTransformJob
+newStopTransformJob pTransformJobName_ =
+  StopTransformJob'
+    { transformJobName =
+        pTransformJobName_
+    }
+
+-- | The name of the batch transform job to stop.
+stopTransformJob_transformJobName :: Lens.Lens' StopTransformJob Prelude.Text
+stopTransformJob_transformJobName = Lens.lens (\StopTransformJob' {transformJobName} -> transformJobName) (\s@StopTransformJob' {} a -> s {transformJobName = a} :: StopTransformJob)
+
+instance Core.AWSRequest StopTransformJob where
+  type
+    AWSResponse StopTransformJob =
+      StopTransformJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull StopTransformJobResponse'
+
+instance Prelude.Hashable StopTransformJob where
+  hashWithSalt _salt StopTransformJob' {..} =
+    _salt `Prelude.hashWithSalt` transformJobName
+
+instance Prelude.NFData StopTransformJob where
+  rnf StopTransformJob' {..} =
+    Prelude.rnf transformJobName
+
+instance Data.ToHeaders StopTransformJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.StopTransformJob" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopTransformJob where
+  toJSON StopTransformJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TransformJobName" Data..= transformJobName)
+          ]
+      )
+
+instance Data.ToPath StopTransformJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopTransformJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopTransformJobResponse' smart constructor.
+data StopTransformJobResponse = StopTransformJobResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopTransformJobResponse' 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.
+newStopTransformJobResponse ::
+  StopTransformJobResponse
+newStopTransformJobResponse =
+  StopTransformJobResponse'
+
+instance Prelude.NFData StopTransformJobResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/Types.hs b/gen/Amazonka/SageMaker/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types.hs
@@ -0,0 +1,5304 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _ConflictException,
+    _ResourceInUse,
+    _ResourceLimitExceeded,
+    _ResourceNotFound,
+
+    -- * ActionStatus
+    ActionStatus (..),
+
+    -- * AlgorithmSortBy
+    AlgorithmSortBy (..),
+
+    -- * AlgorithmStatus
+    AlgorithmStatus (..),
+
+    -- * AppImageConfigSortKey
+    AppImageConfigSortKey (..),
+
+    -- * AppInstanceType
+    AppInstanceType (..),
+
+    -- * AppNetworkAccessType
+    AppNetworkAccessType (..),
+
+    -- * AppSecurityGroupManagement
+    AppSecurityGroupManagement (..),
+
+    -- * AppSortKey
+    AppSortKey (..),
+
+    -- * AppStatus
+    AppStatus (..),
+
+    -- * AppType
+    AppType (..),
+
+    -- * ArtifactSourceIdType
+    ArtifactSourceIdType (..),
+
+    -- * AssemblyType
+    AssemblyType (..),
+
+    -- * AssociationEdgeType
+    AssociationEdgeType (..),
+
+    -- * AthenaResultCompressionType
+    AthenaResultCompressionType (..),
+
+    -- * AthenaResultFormat
+    AthenaResultFormat (..),
+
+    -- * AuthMode
+    AuthMode (..),
+
+    -- * AutoMLChannelType
+    AutoMLChannelType (..),
+
+    -- * AutoMLJobObjectiveType
+    AutoMLJobObjectiveType (..),
+
+    -- * AutoMLJobSecondaryStatus
+    AutoMLJobSecondaryStatus (..),
+
+    -- * AutoMLJobStatus
+    AutoMLJobStatus (..),
+
+    -- * AutoMLMetricEnum
+    AutoMLMetricEnum (..),
+
+    -- * AutoMLMetricExtendedEnum
+    AutoMLMetricExtendedEnum (..),
+
+    -- * AutoMLMode
+    AutoMLMode (..),
+
+    -- * AutoMLS3DataType
+    AutoMLS3DataType (..),
+
+    -- * AutoMLSortBy
+    AutoMLSortBy (..),
+
+    -- * AutoMLSortOrder
+    AutoMLSortOrder (..),
+
+    -- * AwsManagedHumanLoopRequestSource
+    AwsManagedHumanLoopRequestSource (..),
+
+    -- * BatchStrategy
+    BatchStrategy (..),
+
+    -- * BooleanOperator
+    BooleanOperator (..),
+
+    -- * CandidateSortBy
+    CandidateSortBy (..),
+
+    -- * CandidateStatus
+    CandidateStatus (..),
+
+    -- * CandidateStepType
+    CandidateStepType (..),
+
+    -- * CapacitySizeType
+    CapacitySizeType (..),
+
+    -- * CaptureMode
+    CaptureMode (..),
+
+    -- * CaptureStatus
+    CaptureStatus (..),
+
+    -- * ClarifyFeatureType
+    ClarifyFeatureType (..),
+
+    -- * ClarifyTextGranularity
+    ClarifyTextGranularity (..),
+
+    -- * ClarifyTextLanguage
+    ClarifyTextLanguage (..),
+
+    -- * CodeRepositorySortBy
+    CodeRepositorySortBy (..),
+
+    -- * CodeRepositorySortOrder
+    CodeRepositorySortOrder (..),
+
+    -- * CompilationJobStatus
+    CompilationJobStatus (..),
+
+    -- * CompressionType
+    CompressionType (..),
+
+    -- * ConditionOutcome
+    ConditionOutcome (..),
+
+    -- * ContainerMode
+    ContainerMode (..),
+
+    -- * ContentClassifier
+    ContentClassifier (..),
+
+    -- * DataDistributionType
+    DataDistributionType (..),
+
+    -- * DetailedAlgorithmStatus
+    DetailedAlgorithmStatus (..),
+
+    -- * DetailedModelPackageStatus
+    DetailedModelPackageStatus (..),
+
+    -- * DeviceDeploymentStatus
+    DeviceDeploymentStatus (..),
+
+    -- * DeviceSubsetType
+    DeviceSubsetType (..),
+
+    -- * DirectInternetAccess
+    DirectInternetAccess (..),
+
+    -- * Direction
+    Direction (..),
+
+    -- * DomainStatus
+    DomainStatus (..),
+
+    -- * EdgePackagingJobStatus
+    EdgePackagingJobStatus (..),
+
+    -- * EdgePresetDeploymentStatus
+    EdgePresetDeploymentStatus (..),
+
+    -- * EdgePresetDeploymentType
+    EdgePresetDeploymentType (..),
+
+    -- * EndpointConfigSortKey
+    EndpointConfigSortKey (..),
+
+    -- * EndpointSortKey
+    EndpointSortKey (..),
+
+    -- * EndpointStatus
+    EndpointStatus (..),
+
+    -- * ExecutionRoleIdentityConfig
+    ExecutionRoleIdentityConfig (..),
+
+    -- * ExecutionStatus
+    ExecutionStatus (..),
+
+    -- * FailureHandlingPolicy
+    FailureHandlingPolicy (..),
+
+    -- * FeatureGroupSortBy
+    FeatureGroupSortBy (..),
+
+    -- * FeatureGroupSortOrder
+    FeatureGroupSortOrder (..),
+
+    -- * FeatureGroupStatus
+    FeatureGroupStatus (..),
+
+    -- * FeatureStatus
+    FeatureStatus (..),
+
+    -- * FeatureType
+    FeatureType (..),
+
+    -- * FileSystemAccessMode
+    FileSystemAccessMode (..),
+
+    -- * FileSystemType
+    FileSystemType (..),
+
+    -- * FlowDefinitionStatus
+    FlowDefinitionStatus (..),
+
+    -- * Framework
+    Framework (..),
+
+    -- * HubContentSortBy
+    HubContentSortBy (..),
+
+    -- * HubContentStatus
+    HubContentStatus (..),
+
+    -- * HubContentType
+    HubContentType (..),
+
+    -- * HubSortBy
+    HubSortBy (..),
+
+    -- * HubStatus
+    HubStatus (..),
+
+    -- * HumanTaskUiStatus
+    HumanTaskUiStatus (..),
+
+    -- * HyperParameterScalingType
+    HyperParameterScalingType (..),
+
+    -- * HyperParameterTuningAllocationStrategy
+    HyperParameterTuningAllocationStrategy (..),
+
+    -- * HyperParameterTuningJobObjectiveType
+    HyperParameterTuningJobObjectiveType (..),
+
+    -- * HyperParameterTuningJobSortByOptions
+    HyperParameterTuningJobSortByOptions (..),
+
+    -- * HyperParameterTuningJobStatus
+    HyperParameterTuningJobStatus (..),
+
+    -- * HyperParameterTuningJobStrategyType
+    HyperParameterTuningJobStrategyType (..),
+
+    -- * HyperParameterTuningJobWarmStartType
+    HyperParameterTuningJobWarmStartType (..),
+
+    -- * ImageSortBy
+    ImageSortBy (..),
+
+    -- * ImageSortOrder
+    ImageSortOrder (..),
+
+    -- * ImageStatus
+    ImageStatus (..),
+
+    -- * ImageVersionSortBy
+    ImageVersionSortBy (..),
+
+    -- * ImageVersionSortOrder
+    ImageVersionSortOrder (..),
+
+    -- * ImageVersionStatus
+    ImageVersionStatus (..),
+
+    -- * InferenceExecutionMode
+    InferenceExecutionMode (..),
+
+    -- * InferenceExperimentStatus
+    InferenceExperimentStatus (..),
+
+    -- * InferenceExperimentStopDesiredState
+    InferenceExperimentStopDesiredState (..),
+
+    -- * InferenceExperimentType
+    InferenceExperimentType (..),
+
+    -- * InputMode
+    InputMode (..),
+
+    -- * InstanceType
+    InstanceType (..),
+
+    -- * JobType
+    JobType (..),
+
+    -- * JoinSource
+    JoinSource (..),
+
+    -- * LabelingJobStatus
+    LabelingJobStatus (..),
+
+    -- * LastUpdateStatusValue
+    LastUpdateStatusValue (..),
+
+    -- * LineageType
+    LineageType (..),
+
+    -- * ListCompilationJobsSortBy
+    ListCompilationJobsSortBy (..),
+
+    -- * ListDeviceFleetsSortBy
+    ListDeviceFleetsSortBy (..),
+
+    -- * ListEdgeDeploymentPlansSortBy
+    ListEdgeDeploymentPlansSortBy (..),
+
+    -- * ListEdgePackagingJobsSortBy
+    ListEdgePackagingJobsSortBy (..),
+
+    -- * ListInferenceRecommendationsJobsSortBy
+    ListInferenceRecommendationsJobsSortBy (..),
+
+    -- * ListLabelingJobsForWorkteamSortByOptions
+    ListLabelingJobsForWorkteamSortByOptions (..),
+
+    -- * ListWorkforcesSortByOptions
+    ListWorkforcesSortByOptions (..),
+
+    -- * ListWorkteamsSortByOptions
+    ListWorkteamsSortByOptions (..),
+
+    -- * MetricSetSource
+    MetricSetSource (..),
+
+    -- * ModelApprovalStatus
+    ModelApprovalStatus (..),
+
+    -- * ModelCacheSetting
+    ModelCacheSetting (..),
+
+    -- * ModelCardExportJobSortBy
+    ModelCardExportJobSortBy (..),
+
+    -- * ModelCardExportJobSortOrder
+    ModelCardExportJobSortOrder (..),
+
+    -- * ModelCardExportJobStatus
+    ModelCardExportJobStatus (..),
+
+    -- * ModelCardProcessingStatus
+    ModelCardProcessingStatus (..),
+
+    -- * ModelCardSortBy
+    ModelCardSortBy (..),
+
+    -- * ModelCardSortOrder
+    ModelCardSortOrder (..),
+
+    -- * ModelCardStatus
+    ModelCardStatus (..),
+
+    -- * ModelCardVersionSortBy
+    ModelCardVersionSortBy (..),
+
+    -- * ModelInfrastructureType
+    ModelInfrastructureType (..),
+
+    -- * ModelMetadataFilterType
+    ModelMetadataFilterType (..),
+
+    -- * ModelPackageGroupSortBy
+    ModelPackageGroupSortBy (..),
+
+    -- * ModelPackageGroupStatus
+    ModelPackageGroupStatus (..),
+
+    -- * ModelPackageSortBy
+    ModelPackageSortBy (..),
+
+    -- * ModelPackageStatus
+    ModelPackageStatus (..),
+
+    -- * ModelPackageType
+    ModelPackageType (..),
+
+    -- * ModelSortKey
+    ModelSortKey (..),
+
+    -- * ModelVariantAction
+    ModelVariantAction (..),
+
+    -- * ModelVariantStatus
+    ModelVariantStatus (..),
+
+    -- * MonitoringAlertHistorySortKey
+    MonitoringAlertHistorySortKey (..),
+
+    -- * MonitoringAlertStatus
+    MonitoringAlertStatus (..),
+
+    -- * MonitoringExecutionSortKey
+    MonitoringExecutionSortKey (..),
+
+    -- * MonitoringJobDefinitionSortKey
+    MonitoringJobDefinitionSortKey (..),
+
+    -- * MonitoringProblemType
+    MonitoringProblemType (..),
+
+    -- * MonitoringScheduleSortKey
+    MonitoringScheduleSortKey (..),
+
+    -- * MonitoringType
+    MonitoringType (..),
+
+    -- * NotebookInstanceAcceleratorType
+    NotebookInstanceAcceleratorType (..),
+
+    -- * NotebookInstanceLifecycleConfigSortKey
+    NotebookInstanceLifecycleConfigSortKey (..),
+
+    -- * NotebookInstanceLifecycleConfigSortOrder
+    NotebookInstanceLifecycleConfigSortOrder (..),
+
+    -- * NotebookInstanceSortKey
+    NotebookInstanceSortKey (..),
+
+    -- * NotebookInstanceSortOrder
+    NotebookInstanceSortOrder (..),
+
+    -- * NotebookInstanceStatus
+    NotebookInstanceStatus (..),
+
+    -- * NotebookOutputOption
+    NotebookOutputOption (..),
+
+    -- * ObjectiveStatus
+    ObjectiveStatus (..),
+
+    -- * OfflineStoreStatusValue
+    OfflineStoreStatusValue (..),
+
+    -- * Operator
+    Operator (..),
+
+    -- * OrderKey
+    OrderKey (..),
+
+    -- * ParameterType
+    ParameterType (..),
+
+    -- * PipelineExecutionStatus
+    PipelineExecutionStatus (..),
+
+    -- * PipelineStatus
+    PipelineStatus (..),
+
+    -- * ProblemType
+    ProblemType (..),
+
+    -- * ProcessingInstanceType
+    ProcessingInstanceType (..),
+
+    -- * ProcessingJobStatus
+    ProcessingJobStatus (..),
+
+    -- * ProcessingS3CompressionType
+    ProcessingS3CompressionType (..),
+
+    -- * ProcessingS3DataDistributionType
+    ProcessingS3DataDistributionType (..),
+
+    -- * ProcessingS3DataType
+    ProcessingS3DataType (..),
+
+    -- * ProcessingS3InputMode
+    ProcessingS3InputMode (..),
+
+    -- * ProcessingS3UploadMode
+    ProcessingS3UploadMode (..),
+
+    -- * Processor
+    Processor (..),
+
+    -- * ProductionVariantAcceleratorType
+    ProductionVariantAcceleratorType (..),
+
+    -- * ProductionVariantInstanceType
+    ProductionVariantInstanceType (..),
+
+    -- * ProfilingStatus
+    ProfilingStatus (..),
+
+    -- * ProjectSortBy
+    ProjectSortBy (..),
+
+    -- * ProjectSortOrder
+    ProjectSortOrder (..),
+
+    -- * ProjectStatus
+    ProjectStatus (..),
+
+    -- * RStudioServerProAccessStatus
+    RStudioServerProAccessStatus (..),
+
+    -- * RStudioServerProUserGroup
+    RStudioServerProUserGroup (..),
+
+    -- * RecommendationJobStatus
+    RecommendationJobStatus (..),
+
+    -- * RecommendationJobType
+    RecommendationJobType (..),
+
+    -- * RecommendationStepType
+    RecommendationStepType (..),
+
+    -- * RecordWrapper
+    RecordWrapper (..),
+
+    -- * RedshiftResultCompressionType
+    RedshiftResultCompressionType (..),
+
+    -- * RedshiftResultFormat
+    RedshiftResultFormat (..),
+
+    -- * RepositoryAccessMode
+    RepositoryAccessMode (..),
+
+    -- * ResourceType
+    ResourceType (..),
+
+    -- * RetentionType
+    RetentionType (..),
+
+    -- * RootAccess
+    RootAccess (..),
+
+    -- * RuleEvaluationStatus
+    RuleEvaluationStatus (..),
+
+    -- * S3DataDistribution
+    S3DataDistribution (..),
+
+    -- * S3DataType
+    S3DataType (..),
+
+    -- * SagemakerServicecatalogStatus
+    SagemakerServicecatalogStatus (..),
+
+    -- * ScheduleStatus
+    ScheduleStatus (..),
+
+    -- * SearchSortOrder
+    SearchSortOrder (..),
+
+    -- * SecondaryStatus
+    SecondaryStatus (..),
+
+    -- * SortActionsBy
+    SortActionsBy (..),
+
+    -- * SortArtifactsBy
+    SortArtifactsBy (..),
+
+    -- * SortAssociationsBy
+    SortAssociationsBy (..),
+
+    -- * SortBy
+    SortBy (..),
+
+    -- * SortContextsBy
+    SortContextsBy (..),
+
+    -- * SortExperimentsBy
+    SortExperimentsBy (..),
+
+    -- * SortInferenceExperimentsBy
+    SortInferenceExperimentsBy (..),
+
+    -- * SortLineageGroupsBy
+    SortLineageGroupsBy (..),
+
+    -- * SortOrder
+    SortOrder (..),
+
+    -- * SortPipelineExecutionsBy
+    SortPipelineExecutionsBy (..),
+
+    -- * SortPipelinesBy
+    SortPipelinesBy (..),
+
+    -- * SortTrialComponentsBy
+    SortTrialComponentsBy (..),
+
+    -- * SortTrialsBy
+    SortTrialsBy (..),
+
+    -- * SpaceSortKey
+    SpaceSortKey (..),
+
+    -- * SpaceStatus
+    SpaceStatus (..),
+
+    -- * SplitType
+    SplitType (..),
+
+    -- * StageStatus
+    StageStatus (..),
+
+    -- * StepStatus
+    StepStatus (..),
+
+    -- * StudioLifecycleConfigAppType
+    StudioLifecycleConfigAppType (..),
+
+    -- * StudioLifecycleConfigSortKey
+    StudioLifecycleConfigSortKey (..),
+
+    -- * TableFormat
+    TableFormat (..),
+
+    -- * TargetDevice
+    TargetDevice (..),
+
+    -- * TargetPlatformAccelerator
+    TargetPlatformAccelerator (..),
+
+    -- * TargetPlatformArch
+    TargetPlatformArch (..),
+
+    -- * TargetPlatformOs
+    TargetPlatformOs (..),
+
+    -- * TrafficRoutingConfigType
+    TrafficRoutingConfigType (..),
+
+    -- * TrafficType
+    TrafficType (..),
+
+    -- * TrainingInputMode
+    TrainingInputMode (..),
+
+    -- * TrainingInstanceType
+    TrainingInstanceType (..),
+
+    -- * TrainingJobEarlyStoppingType
+    TrainingJobEarlyStoppingType (..),
+
+    -- * TrainingJobSortByOptions
+    TrainingJobSortByOptions (..),
+
+    -- * TrainingJobStatus
+    TrainingJobStatus (..),
+
+    -- * TransformInstanceType
+    TransformInstanceType (..),
+
+    -- * TransformJobStatus
+    TransformJobStatus (..),
+
+    -- * TrialComponentPrimaryStatus
+    TrialComponentPrimaryStatus (..),
+
+    -- * UserProfileSortKey
+    UserProfileSortKey (..),
+
+    -- * UserProfileStatus
+    UserProfileStatus (..),
+
+    -- * VariantPropertyType
+    VariantPropertyType (..),
+
+    -- * VariantStatus
+    VariantStatus (..),
+
+    -- * VendorGuidance
+    VendorGuidance (..),
+
+    -- * WarmPoolResourceStatus
+    WarmPoolResourceStatus (..),
+
+    -- * WorkforceStatus
+    WorkforceStatus (..),
+
+    -- * ActionSource
+    ActionSource (..),
+    newActionSource,
+    actionSource_sourceId,
+    actionSource_sourceType,
+    actionSource_sourceUri,
+
+    -- * ActionSummary
+    ActionSummary (..),
+    newActionSummary,
+    actionSummary_actionArn,
+    actionSummary_actionName,
+    actionSummary_actionType,
+    actionSummary_creationTime,
+    actionSummary_lastModifiedTime,
+    actionSummary_source,
+    actionSummary_status,
+
+    -- * AdditionalInferenceSpecificationDefinition
+    AdditionalInferenceSpecificationDefinition (..),
+    newAdditionalInferenceSpecificationDefinition,
+    additionalInferenceSpecificationDefinition_description,
+    additionalInferenceSpecificationDefinition_supportedContentTypes,
+    additionalInferenceSpecificationDefinition_supportedRealtimeInferenceInstanceTypes,
+    additionalInferenceSpecificationDefinition_supportedResponseMIMETypes,
+    additionalInferenceSpecificationDefinition_supportedTransformInstanceTypes,
+    additionalInferenceSpecificationDefinition_name,
+    additionalInferenceSpecificationDefinition_containers,
+
+    -- * AgentVersion
+    AgentVersion (..),
+    newAgentVersion,
+    agentVersion_version,
+    agentVersion_agentCount,
+
+    -- * Alarm
+    Alarm (..),
+    newAlarm,
+    alarm_alarmName,
+
+    -- * AlgorithmSpecification
+    AlgorithmSpecification (..),
+    newAlgorithmSpecification,
+    algorithmSpecification_algorithmName,
+    algorithmSpecification_containerArguments,
+    algorithmSpecification_containerEntrypoint,
+    algorithmSpecification_enableSageMakerMetricsTimeSeries,
+    algorithmSpecification_metricDefinitions,
+    algorithmSpecification_trainingImage,
+    algorithmSpecification_trainingInputMode,
+
+    -- * AlgorithmStatusDetails
+    AlgorithmStatusDetails (..),
+    newAlgorithmStatusDetails,
+    algorithmStatusDetails_imageScanStatuses,
+    algorithmStatusDetails_validationStatuses,
+
+    -- * AlgorithmStatusItem
+    AlgorithmStatusItem (..),
+    newAlgorithmStatusItem,
+    algorithmStatusItem_failureReason,
+    algorithmStatusItem_name,
+    algorithmStatusItem_status,
+
+    -- * AlgorithmSummary
+    AlgorithmSummary (..),
+    newAlgorithmSummary,
+    algorithmSummary_algorithmDescription,
+    algorithmSummary_algorithmName,
+    algorithmSummary_algorithmArn,
+    algorithmSummary_creationTime,
+    algorithmSummary_algorithmStatus,
+
+    -- * AlgorithmValidationProfile
+    AlgorithmValidationProfile (..),
+    newAlgorithmValidationProfile,
+    algorithmValidationProfile_transformJobDefinition,
+    algorithmValidationProfile_profileName,
+    algorithmValidationProfile_trainingJobDefinition,
+
+    -- * AlgorithmValidationSpecification
+    AlgorithmValidationSpecification (..),
+    newAlgorithmValidationSpecification,
+    algorithmValidationSpecification_validationRole,
+    algorithmValidationSpecification_validationProfiles,
+
+    -- * AnnotationConsolidationConfig
+    AnnotationConsolidationConfig (..),
+    newAnnotationConsolidationConfig,
+    annotationConsolidationConfig_annotationConsolidationLambdaArn,
+
+    -- * AppDetails
+    AppDetails (..),
+    newAppDetails,
+    appDetails_appName,
+    appDetails_appType,
+    appDetails_creationTime,
+    appDetails_domainId,
+    appDetails_spaceName,
+    appDetails_status,
+    appDetails_userProfileName,
+
+    -- * AppImageConfigDetails
+    AppImageConfigDetails (..),
+    newAppImageConfigDetails,
+    appImageConfigDetails_appImageConfigArn,
+    appImageConfigDetails_appImageConfigName,
+    appImageConfigDetails_creationTime,
+    appImageConfigDetails_kernelGatewayImageConfig,
+    appImageConfigDetails_lastModifiedTime,
+
+    -- * AppSpecification
+    AppSpecification (..),
+    newAppSpecification,
+    appSpecification_containerArguments,
+    appSpecification_containerEntrypoint,
+    appSpecification_imageUri,
+
+    -- * ArtifactSource
+    ArtifactSource (..),
+    newArtifactSource,
+    artifactSource_sourceTypes,
+    artifactSource_sourceUri,
+
+    -- * ArtifactSourceType
+    ArtifactSourceType (..),
+    newArtifactSourceType,
+    artifactSourceType_sourceIdType,
+    artifactSourceType_value,
+
+    -- * ArtifactSummary
+    ArtifactSummary (..),
+    newArtifactSummary,
+    artifactSummary_artifactArn,
+    artifactSummary_artifactName,
+    artifactSummary_artifactType,
+    artifactSummary_creationTime,
+    artifactSummary_lastModifiedTime,
+    artifactSummary_source,
+
+    -- * AssociationSummary
+    AssociationSummary (..),
+    newAssociationSummary,
+    associationSummary_associationType,
+    associationSummary_createdBy,
+    associationSummary_creationTime,
+    associationSummary_destinationArn,
+    associationSummary_destinationName,
+    associationSummary_destinationType,
+    associationSummary_sourceArn,
+    associationSummary_sourceName,
+    associationSummary_sourceType,
+
+    -- * AsyncInferenceClientConfig
+    AsyncInferenceClientConfig (..),
+    newAsyncInferenceClientConfig,
+    asyncInferenceClientConfig_maxConcurrentInvocationsPerInstance,
+
+    -- * AsyncInferenceConfig
+    AsyncInferenceConfig (..),
+    newAsyncInferenceConfig,
+    asyncInferenceConfig_clientConfig,
+    asyncInferenceConfig_outputConfig,
+
+    -- * AsyncInferenceNotificationConfig
+    AsyncInferenceNotificationConfig (..),
+    newAsyncInferenceNotificationConfig,
+    asyncInferenceNotificationConfig_errorTopic,
+    asyncInferenceNotificationConfig_successTopic,
+
+    -- * AsyncInferenceOutputConfig
+    AsyncInferenceOutputConfig (..),
+    newAsyncInferenceOutputConfig,
+    asyncInferenceOutputConfig_kmsKeyId,
+    asyncInferenceOutputConfig_notificationConfig,
+    asyncInferenceOutputConfig_s3OutputPath,
+
+    -- * AthenaDatasetDefinition
+    AthenaDatasetDefinition (..),
+    newAthenaDatasetDefinition,
+    athenaDatasetDefinition_kmsKeyId,
+    athenaDatasetDefinition_outputCompression,
+    athenaDatasetDefinition_workGroup,
+    athenaDatasetDefinition_catalog,
+    athenaDatasetDefinition_database,
+    athenaDatasetDefinition_queryString,
+    athenaDatasetDefinition_outputS3Uri,
+    athenaDatasetDefinition_outputFormat,
+
+    -- * AutoMLCandidate
+    AutoMLCandidate (..),
+    newAutoMLCandidate,
+    autoMLCandidate_candidateProperties,
+    autoMLCandidate_endTime,
+    autoMLCandidate_failureReason,
+    autoMLCandidate_finalAutoMLJobObjectiveMetric,
+    autoMLCandidate_inferenceContainers,
+    autoMLCandidate_candidateName,
+    autoMLCandidate_objectiveStatus,
+    autoMLCandidate_candidateSteps,
+    autoMLCandidate_candidateStatus,
+    autoMLCandidate_creationTime,
+    autoMLCandidate_lastModifiedTime,
+
+    -- * AutoMLCandidateGenerationConfig
+    AutoMLCandidateGenerationConfig (..),
+    newAutoMLCandidateGenerationConfig,
+    autoMLCandidateGenerationConfig_featureSpecificationS3Uri,
+
+    -- * AutoMLCandidateStep
+    AutoMLCandidateStep (..),
+    newAutoMLCandidateStep,
+    autoMLCandidateStep_candidateStepType,
+    autoMLCandidateStep_candidateStepArn,
+    autoMLCandidateStep_candidateStepName,
+
+    -- * AutoMLChannel
+    AutoMLChannel (..),
+    newAutoMLChannel,
+    autoMLChannel_channelType,
+    autoMLChannel_compressionType,
+    autoMLChannel_contentType,
+    autoMLChannel_dataSource,
+    autoMLChannel_targetAttributeName,
+
+    -- * AutoMLContainerDefinition
+    AutoMLContainerDefinition (..),
+    newAutoMLContainerDefinition,
+    autoMLContainerDefinition_environment,
+    autoMLContainerDefinition_image,
+    autoMLContainerDefinition_modelDataUrl,
+
+    -- * AutoMLDataSource
+    AutoMLDataSource (..),
+    newAutoMLDataSource,
+    autoMLDataSource_s3DataSource,
+
+    -- * AutoMLDataSplitConfig
+    AutoMLDataSplitConfig (..),
+    newAutoMLDataSplitConfig,
+    autoMLDataSplitConfig_validationFraction,
+
+    -- * AutoMLJobArtifacts
+    AutoMLJobArtifacts (..),
+    newAutoMLJobArtifacts,
+    autoMLJobArtifacts_candidateDefinitionNotebookLocation,
+    autoMLJobArtifacts_dataExplorationNotebookLocation,
+
+    -- * AutoMLJobCompletionCriteria
+    AutoMLJobCompletionCriteria (..),
+    newAutoMLJobCompletionCriteria,
+    autoMLJobCompletionCriteria_maxAutoMLJobRuntimeInSeconds,
+    autoMLJobCompletionCriteria_maxCandidates,
+    autoMLJobCompletionCriteria_maxRuntimePerTrainingJobInSeconds,
+
+    -- * AutoMLJobConfig
+    AutoMLJobConfig (..),
+    newAutoMLJobConfig,
+    autoMLJobConfig_candidateGenerationConfig,
+    autoMLJobConfig_completionCriteria,
+    autoMLJobConfig_dataSplitConfig,
+    autoMLJobConfig_mode,
+    autoMLJobConfig_securityConfig,
+
+    -- * AutoMLJobObjective
+    AutoMLJobObjective (..),
+    newAutoMLJobObjective,
+    autoMLJobObjective_metricName,
+
+    -- * AutoMLJobStepMetadata
+    AutoMLJobStepMetadata (..),
+    newAutoMLJobStepMetadata,
+    autoMLJobStepMetadata_arn,
+
+    -- * AutoMLJobSummary
+    AutoMLJobSummary (..),
+    newAutoMLJobSummary,
+    autoMLJobSummary_endTime,
+    autoMLJobSummary_failureReason,
+    autoMLJobSummary_partialFailureReasons,
+    autoMLJobSummary_autoMLJobName,
+    autoMLJobSummary_autoMLJobArn,
+    autoMLJobSummary_autoMLJobStatus,
+    autoMLJobSummary_autoMLJobSecondaryStatus,
+    autoMLJobSummary_creationTime,
+    autoMLJobSummary_lastModifiedTime,
+
+    -- * AutoMLOutputDataConfig
+    AutoMLOutputDataConfig (..),
+    newAutoMLOutputDataConfig,
+    autoMLOutputDataConfig_kmsKeyId,
+    autoMLOutputDataConfig_s3OutputPath,
+
+    -- * AutoMLPartialFailureReason
+    AutoMLPartialFailureReason (..),
+    newAutoMLPartialFailureReason,
+    autoMLPartialFailureReason_partialFailureMessage,
+
+    -- * AutoMLS3DataSource
+    AutoMLS3DataSource (..),
+    newAutoMLS3DataSource,
+    autoMLS3DataSource_s3DataType,
+    autoMLS3DataSource_s3Uri,
+
+    -- * AutoMLSecurityConfig
+    AutoMLSecurityConfig (..),
+    newAutoMLSecurityConfig,
+    autoMLSecurityConfig_enableInterContainerTrafficEncryption,
+    autoMLSecurityConfig_volumeKmsKeyId,
+    autoMLSecurityConfig_vpcConfig,
+
+    -- * AutoRollbackConfig
+    AutoRollbackConfig (..),
+    newAutoRollbackConfig,
+    autoRollbackConfig_alarms,
+
+    -- * BatchDataCaptureConfig
+    BatchDataCaptureConfig (..),
+    newBatchDataCaptureConfig,
+    batchDataCaptureConfig_generateInferenceId,
+    batchDataCaptureConfig_kmsKeyId,
+    batchDataCaptureConfig_destinationS3Uri,
+
+    -- * BatchDescribeModelPackageError
+    BatchDescribeModelPackageError (..),
+    newBatchDescribeModelPackageError,
+    batchDescribeModelPackageError_errorCode,
+    batchDescribeModelPackageError_errorResponse,
+
+    -- * BatchDescribeModelPackageSummary
+    BatchDescribeModelPackageSummary (..),
+    newBatchDescribeModelPackageSummary,
+    batchDescribeModelPackageSummary_modelApprovalStatus,
+    batchDescribeModelPackageSummary_modelPackageDescription,
+    batchDescribeModelPackageSummary_modelPackageVersion,
+    batchDescribeModelPackageSummary_modelPackageGroupName,
+    batchDescribeModelPackageSummary_modelPackageArn,
+    batchDescribeModelPackageSummary_creationTime,
+    batchDescribeModelPackageSummary_inferenceSpecification,
+    batchDescribeModelPackageSummary_modelPackageStatus,
+
+    -- * BatchTransformInput
+    BatchTransformInput (..),
+    newBatchTransformInput,
+    batchTransformInput_endTimeOffset,
+    batchTransformInput_featuresAttribute,
+    batchTransformInput_inferenceAttribute,
+    batchTransformInput_probabilityAttribute,
+    batchTransformInput_probabilityThresholdAttribute,
+    batchTransformInput_s3DataDistributionType,
+    batchTransformInput_s3InputMode,
+    batchTransformInput_startTimeOffset,
+    batchTransformInput_dataCapturedDestinationS3Uri,
+    batchTransformInput_datasetFormat,
+    batchTransformInput_localPath,
+
+    -- * Bias
+    Bias (..),
+    newBias,
+    bias_postTrainingReport,
+    bias_preTrainingReport,
+    bias_report,
+
+    -- * BlueGreenUpdatePolicy
+    BlueGreenUpdatePolicy (..),
+    newBlueGreenUpdatePolicy,
+    blueGreenUpdatePolicy_maximumExecutionTimeoutInSeconds,
+    blueGreenUpdatePolicy_terminationWaitInSeconds,
+    blueGreenUpdatePolicy_trafficRoutingConfiguration,
+
+    -- * CacheHitResult
+    CacheHitResult (..),
+    newCacheHitResult,
+    cacheHitResult_sourcePipelineExecutionArn,
+
+    -- * CallbackStepMetadata
+    CallbackStepMetadata (..),
+    newCallbackStepMetadata,
+    callbackStepMetadata_callbackToken,
+    callbackStepMetadata_outputParameters,
+    callbackStepMetadata_sqsQueueUrl,
+
+    -- * CandidateArtifactLocations
+    CandidateArtifactLocations (..),
+    newCandidateArtifactLocations,
+    candidateArtifactLocations_modelInsights,
+    candidateArtifactLocations_explainability,
+
+    -- * CandidateProperties
+    CandidateProperties (..),
+    newCandidateProperties,
+    candidateProperties_candidateArtifactLocations,
+    candidateProperties_candidateMetrics,
+
+    -- * CanvasAppSettings
+    CanvasAppSettings (..),
+    newCanvasAppSettings,
+    canvasAppSettings_timeSeriesForecastingSettings,
+
+    -- * CapacitySize
+    CapacitySize (..),
+    newCapacitySize,
+    capacitySize_type,
+    capacitySize_value,
+
+    -- * CaptureContentTypeHeader
+    CaptureContentTypeHeader (..),
+    newCaptureContentTypeHeader,
+    captureContentTypeHeader_csvContentTypes,
+    captureContentTypeHeader_jsonContentTypes,
+
+    -- * CaptureOption
+    CaptureOption (..),
+    newCaptureOption,
+    captureOption_captureMode,
+
+    -- * CategoricalParameter
+    CategoricalParameter (..),
+    newCategoricalParameter,
+    categoricalParameter_name,
+    categoricalParameter_value,
+
+    -- * CategoricalParameterRange
+    CategoricalParameterRange (..),
+    newCategoricalParameterRange,
+    categoricalParameterRange_name,
+    categoricalParameterRange_values,
+
+    -- * CategoricalParameterRangeSpecification
+    CategoricalParameterRangeSpecification (..),
+    newCategoricalParameterRangeSpecification,
+    categoricalParameterRangeSpecification_values,
+
+    -- * Channel
+    Channel (..),
+    newChannel,
+    channel_compressionType,
+    channel_contentType,
+    channel_inputMode,
+    channel_recordWrapperType,
+    channel_shuffleConfig,
+    channel_channelName,
+    channel_dataSource,
+
+    -- * ChannelSpecification
+    ChannelSpecification (..),
+    newChannelSpecification,
+    channelSpecification_description,
+    channelSpecification_isRequired,
+    channelSpecification_supportedCompressionTypes,
+    channelSpecification_name,
+    channelSpecification_supportedContentTypes,
+    channelSpecification_supportedInputModes,
+
+    -- * CheckpointConfig
+    CheckpointConfig (..),
+    newCheckpointConfig,
+    checkpointConfig_localPath,
+    checkpointConfig_s3Uri,
+
+    -- * ClarifyCheckStepMetadata
+    ClarifyCheckStepMetadata (..),
+    newClarifyCheckStepMetadata,
+    clarifyCheckStepMetadata_baselineUsedForDriftCheckConstraints,
+    clarifyCheckStepMetadata_calculatedBaselineConstraints,
+    clarifyCheckStepMetadata_checkJobArn,
+    clarifyCheckStepMetadata_checkType,
+    clarifyCheckStepMetadata_modelPackageGroupName,
+    clarifyCheckStepMetadata_registerNewBaseline,
+    clarifyCheckStepMetadata_skipCheck,
+    clarifyCheckStepMetadata_violationReport,
+
+    -- * ClarifyExplainerConfig
+    ClarifyExplainerConfig (..),
+    newClarifyExplainerConfig,
+    clarifyExplainerConfig_enableExplanations,
+    clarifyExplainerConfig_inferenceConfig,
+    clarifyExplainerConfig_shapConfig,
+
+    -- * ClarifyInferenceConfig
+    ClarifyInferenceConfig (..),
+    newClarifyInferenceConfig,
+    clarifyInferenceConfig_contentTemplate,
+    clarifyInferenceConfig_featureHeaders,
+    clarifyInferenceConfig_featureTypes,
+    clarifyInferenceConfig_featuresAttribute,
+    clarifyInferenceConfig_labelAttribute,
+    clarifyInferenceConfig_labelHeaders,
+    clarifyInferenceConfig_labelIndex,
+    clarifyInferenceConfig_maxPayloadInMB,
+    clarifyInferenceConfig_maxRecordCount,
+    clarifyInferenceConfig_probabilityAttribute,
+    clarifyInferenceConfig_probabilityIndex,
+
+    -- * ClarifyShapBaselineConfig
+    ClarifyShapBaselineConfig (..),
+    newClarifyShapBaselineConfig,
+    clarifyShapBaselineConfig_mimeType,
+    clarifyShapBaselineConfig_shapBaseline,
+    clarifyShapBaselineConfig_shapBaselineUri,
+
+    -- * ClarifyShapConfig
+    ClarifyShapConfig (..),
+    newClarifyShapConfig,
+    clarifyShapConfig_numberOfSamples,
+    clarifyShapConfig_seed,
+    clarifyShapConfig_textConfig,
+    clarifyShapConfig_useLogit,
+    clarifyShapConfig_shapBaselineConfig,
+
+    -- * ClarifyTextConfig
+    ClarifyTextConfig (..),
+    newClarifyTextConfig,
+    clarifyTextConfig_language,
+    clarifyTextConfig_granularity,
+
+    -- * CodeRepository
+    CodeRepository (..),
+    newCodeRepository,
+    codeRepository_repositoryUrl,
+
+    -- * CodeRepositorySummary
+    CodeRepositorySummary (..),
+    newCodeRepositorySummary,
+    codeRepositorySummary_gitConfig,
+    codeRepositorySummary_codeRepositoryName,
+    codeRepositorySummary_codeRepositoryArn,
+    codeRepositorySummary_creationTime,
+    codeRepositorySummary_lastModifiedTime,
+
+    -- * CognitoConfig
+    CognitoConfig (..),
+    newCognitoConfig,
+    cognitoConfig_userPool,
+    cognitoConfig_clientId,
+
+    -- * CognitoMemberDefinition
+    CognitoMemberDefinition (..),
+    newCognitoMemberDefinition,
+    cognitoMemberDefinition_userPool,
+    cognitoMemberDefinition_userGroup,
+    cognitoMemberDefinition_clientId,
+
+    -- * CollectionConfiguration
+    CollectionConfiguration (..),
+    newCollectionConfiguration,
+    collectionConfiguration_collectionName,
+    collectionConfiguration_collectionParameters,
+
+    -- * CompilationJobSummary
+    CompilationJobSummary (..),
+    newCompilationJobSummary,
+    compilationJobSummary_compilationEndTime,
+    compilationJobSummary_compilationStartTime,
+    compilationJobSummary_compilationTargetDevice,
+    compilationJobSummary_compilationTargetPlatformAccelerator,
+    compilationJobSummary_compilationTargetPlatformArch,
+    compilationJobSummary_compilationTargetPlatformOs,
+    compilationJobSummary_lastModifiedTime,
+    compilationJobSummary_compilationJobName,
+    compilationJobSummary_compilationJobArn,
+    compilationJobSummary_creationTime,
+    compilationJobSummary_compilationJobStatus,
+
+    -- * ConditionStepMetadata
+    ConditionStepMetadata (..),
+    newConditionStepMetadata,
+    conditionStepMetadata_outcome,
+
+    -- * ContainerDefinition
+    ContainerDefinition (..),
+    newContainerDefinition,
+    containerDefinition_containerHostname,
+    containerDefinition_environment,
+    containerDefinition_image,
+    containerDefinition_imageConfig,
+    containerDefinition_inferenceSpecificationName,
+    containerDefinition_mode,
+    containerDefinition_modelDataUrl,
+    containerDefinition_modelPackageName,
+    containerDefinition_multiModelConfig,
+
+    -- * ContextSource
+    ContextSource (..),
+    newContextSource,
+    contextSource_sourceId,
+    contextSource_sourceType,
+    contextSource_sourceUri,
+
+    -- * ContextSummary
+    ContextSummary (..),
+    newContextSummary,
+    contextSummary_contextArn,
+    contextSummary_contextName,
+    contextSummary_contextType,
+    contextSummary_creationTime,
+    contextSummary_lastModifiedTime,
+    contextSummary_source,
+
+    -- * ContinuousParameterRange
+    ContinuousParameterRange (..),
+    newContinuousParameterRange,
+    continuousParameterRange_scalingType,
+    continuousParameterRange_name,
+    continuousParameterRange_minValue,
+    continuousParameterRange_maxValue,
+
+    -- * ContinuousParameterRangeSpecification
+    ContinuousParameterRangeSpecification (..),
+    newContinuousParameterRangeSpecification,
+    continuousParameterRangeSpecification_minValue,
+    continuousParameterRangeSpecification_maxValue,
+
+    -- * CustomImage
+    CustomImage (..),
+    newCustomImage,
+    customImage_imageVersionNumber,
+    customImage_imageName,
+    customImage_appImageConfigName,
+
+    -- * DataCaptureConfig
+    DataCaptureConfig (..),
+    newDataCaptureConfig,
+    dataCaptureConfig_captureContentTypeHeader,
+    dataCaptureConfig_enableCapture,
+    dataCaptureConfig_kmsKeyId,
+    dataCaptureConfig_initialSamplingPercentage,
+    dataCaptureConfig_destinationS3Uri,
+    dataCaptureConfig_captureOptions,
+
+    -- * DataCaptureConfigSummary
+    DataCaptureConfigSummary (..),
+    newDataCaptureConfigSummary,
+    dataCaptureConfigSummary_enableCapture,
+    dataCaptureConfigSummary_captureStatus,
+    dataCaptureConfigSummary_currentSamplingPercentage,
+    dataCaptureConfigSummary_destinationS3Uri,
+    dataCaptureConfigSummary_kmsKeyId,
+
+    -- * DataCatalogConfig
+    DataCatalogConfig (..),
+    newDataCatalogConfig,
+    dataCatalogConfig_tableName,
+    dataCatalogConfig_catalog,
+    dataCatalogConfig_database,
+
+    -- * DataProcessing
+    DataProcessing (..),
+    newDataProcessing,
+    dataProcessing_inputFilter,
+    dataProcessing_joinSource,
+    dataProcessing_outputFilter,
+
+    -- * DataQualityAppSpecification
+    DataQualityAppSpecification (..),
+    newDataQualityAppSpecification,
+    dataQualityAppSpecification_containerArguments,
+    dataQualityAppSpecification_containerEntrypoint,
+    dataQualityAppSpecification_environment,
+    dataQualityAppSpecification_postAnalyticsProcessorSourceUri,
+    dataQualityAppSpecification_recordPreprocessorSourceUri,
+    dataQualityAppSpecification_imageUri,
+
+    -- * DataQualityBaselineConfig
+    DataQualityBaselineConfig (..),
+    newDataQualityBaselineConfig,
+    dataQualityBaselineConfig_baseliningJobName,
+    dataQualityBaselineConfig_constraintsResource,
+    dataQualityBaselineConfig_statisticsResource,
+
+    -- * DataQualityJobInput
+    DataQualityJobInput (..),
+    newDataQualityJobInput,
+    dataQualityJobInput_batchTransformInput,
+    dataQualityJobInput_endpointInput,
+
+    -- * DataSource
+    DataSource (..),
+    newDataSource,
+    dataSource_fileSystemDataSource,
+    dataSource_s3DataSource,
+
+    -- * DatasetDefinition
+    DatasetDefinition (..),
+    newDatasetDefinition,
+    datasetDefinition_athenaDatasetDefinition,
+    datasetDefinition_dataDistributionType,
+    datasetDefinition_inputMode,
+    datasetDefinition_localPath,
+    datasetDefinition_redshiftDatasetDefinition,
+
+    -- * DebugHookConfig
+    DebugHookConfig (..),
+    newDebugHookConfig,
+    debugHookConfig_collectionConfigurations,
+    debugHookConfig_hookParameters,
+    debugHookConfig_localPath,
+    debugHookConfig_s3OutputPath,
+
+    -- * DebugRuleConfiguration
+    DebugRuleConfiguration (..),
+    newDebugRuleConfiguration,
+    debugRuleConfiguration_instanceType,
+    debugRuleConfiguration_localPath,
+    debugRuleConfiguration_ruleParameters,
+    debugRuleConfiguration_s3OutputPath,
+    debugRuleConfiguration_volumeSizeInGB,
+    debugRuleConfiguration_ruleConfigurationName,
+    debugRuleConfiguration_ruleEvaluatorImage,
+
+    -- * DebugRuleEvaluationStatus
+    DebugRuleEvaluationStatus (..),
+    newDebugRuleEvaluationStatus,
+    debugRuleEvaluationStatus_lastModifiedTime,
+    debugRuleEvaluationStatus_ruleConfigurationName,
+    debugRuleEvaluationStatus_ruleEvaluationJobArn,
+    debugRuleEvaluationStatus_ruleEvaluationStatus,
+    debugRuleEvaluationStatus_statusDetails,
+
+    -- * DefaultSpaceSettings
+    DefaultSpaceSettings (..),
+    newDefaultSpaceSettings,
+    defaultSpaceSettings_executionRole,
+    defaultSpaceSettings_jupyterServerAppSettings,
+    defaultSpaceSettings_kernelGatewayAppSettings,
+    defaultSpaceSettings_securityGroups,
+
+    -- * DeployedImage
+    DeployedImage (..),
+    newDeployedImage,
+    deployedImage_resolutionTime,
+    deployedImage_resolvedImage,
+    deployedImage_specifiedImage,
+
+    -- * DeploymentConfig
+    DeploymentConfig (..),
+    newDeploymentConfig,
+    deploymentConfig_autoRollbackConfiguration,
+    deploymentConfig_blueGreenUpdatePolicy,
+
+    -- * DeploymentStage
+    DeploymentStage (..),
+    newDeploymentStage,
+    deploymentStage_deploymentConfig,
+    deploymentStage_stageName,
+    deploymentStage_deviceSelectionConfig,
+
+    -- * DeploymentStageStatusSummary
+    DeploymentStageStatusSummary (..),
+    newDeploymentStageStatusSummary,
+    deploymentStageStatusSummary_stageName,
+    deploymentStageStatusSummary_deviceSelectionConfig,
+    deploymentStageStatusSummary_deploymentConfig,
+    deploymentStageStatusSummary_deploymentStatus,
+
+    -- * DesiredWeightAndCapacity
+    DesiredWeightAndCapacity (..),
+    newDesiredWeightAndCapacity,
+    desiredWeightAndCapacity_desiredInstanceCount,
+    desiredWeightAndCapacity_desiredWeight,
+    desiredWeightAndCapacity_variantName,
+
+    -- * Device
+    Device (..),
+    newDevice,
+    device_description,
+    device_iotThingName,
+    device_deviceName,
+
+    -- * DeviceDeploymentSummary
+    DeviceDeploymentSummary (..),
+    newDeviceDeploymentSummary,
+    deviceDeploymentSummary_deployedStageName,
+    deviceDeploymentSummary_deploymentStartTime,
+    deviceDeploymentSummary_description,
+    deviceDeploymentSummary_deviceDeploymentStatus,
+    deviceDeploymentSummary_deviceDeploymentStatusMessage,
+    deviceDeploymentSummary_deviceFleetName,
+    deviceDeploymentSummary_edgeDeploymentPlanArn,
+    deviceDeploymentSummary_edgeDeploymentPlanName,
+    deviceDeploymentSummary_stageName,
+    deviceDeploymentSummary_deviceName,
+    deviceDeploymentSummary_deviceArn,
+
+    -- * DeviceFleetSummary
+    DeviceFleetSummary (..),
+    newDeviceFleetSummary,
+    deviceFleetSummary_creationTime,
+    deviceFleetSummary_lastModifiedTime,
+    deviceFleetSummary_deviceFleetArn,
+    deviceFleetSummary_deviceFleetName,
+
+    -- * DeviceSelectionConfig
+    DeviceSelectionConfig (..),
+    newDeviceSelectionConfig,
+    deviceSelectionConfig_deviceNameContains,
+    deviceSelectionConfig_deviceNames,
+    deviceSelectionConfig_percentage,
+    deviceSelectionConfig_deviceSubsetType,
+
+    -- * DeviceStats
+    DeviceStats (..),
+    newDeviceStats,
+    deviceStats_connectedDeviceCount,
+    deviceStats_registeredDeviceCount,
+
+    -- * DeviceSummary
+    DeviceSummary (..),
+    newDeviceSummary,
+    deviceSummary_agentVersion,
+    deviceSummary_description,
+    deviceSummary_deviceFleetName,
+    deviceSummary_iotThingName,
+    deviceSummary_latestHeartbeat,
+    deviceSummary_models,
+    deviceSummary_registrationTime,
+    deviceSummary_deviceName,
+    deviceSummary_deviceArn,
+
+    -- * DomainDetails
+    DomainDetails (..),
+    newDomainDetails,
+    domainDetails_creationTime,
+    domainDetails_domainArn,
+    domainDetails_domainId,
+    domainDetails_domainName,
+    domainDetails_lastModifiedTime,
+    domainDetails_status,
+    domainDetails_url,
+
+    -- * DomainSettings
+    DomainSettings (..),
+    newDomainSettings,
+    domainSettings_executionRoleIdentityConfig,
+    domainSettings_rStudioServerProDomainSettings,
+    domainSettings_securityGroupIds,
+
+    -- * DomainSettingsForUpdate
+    DomainSettingsForUpdate (..),
+    newDomainSettingsForUpdate,
+    domainSettingsForUpdate_executionRoleIdentityConfig,
+    domainSettingsForUpdate_rStudioServerProDomainSettingsForUpdate,
+    domainSettingsForUpdate_securityGroupIds,
+
+    -- * DriftCheckBaselines
+    DriftCheckBaselines (..),
+    newDriftCheckBaselines,
+    driftCheckBaselines_bias,
+    driftCheckBaselines_explainability,
+    driftCheckBaselines_modelDataQuality,
+    driftCheckBaselines_modelQuality,
+
+    -- * DriftCheckBias
+    DriftCheckBias (..),
+    newDriftCheckBias,
+    driftCheckBias_configFile,
+    driftCheckBias_postTrainingConstraints,
+    driftCheckBias_preTrainingConstraints,
+
+    -- * DriftCheckExplainability
+    DriftCheckExplainability (..),
+    newDriftCheckExplainability,
+    driftCheckExplainability_configFile,
+    driftCheckExplainability_constraints,
+
+    -- * DriftCheckModelDataQuality
+    DriftCheckModelDataQuality (..),
+    newDriftCheckModelDataQuality,
+    driftCheckModelDataQuality_constraints,
+    driftCheckModelDataQuality_statistics,
+
+    -- * DriftCheckModelQuality
+    DriftCheckModelQuality (..),
+    newDriftCheckModelQuality,
+    driftCheckModelQuality_constraints,
+    driftCheckModelQuality_statistics,
+
+    -- * EMRStepMetadata
+    EMRStepMetadata (..),
+    newEMRStepMetadata,
+    eMRStepMetadata_clusterId,
+    eMRStepMetadata_logFilePath,
+    eMRStepMetadata_stepId,
+    eMRStepMetadata_stepName,
+
+    -- * Edge
+    Edge (..),
+    newEdge,
+    edge_associationType,
+    edge_destinationArn,
+    edge_sourceArn,
+
+    -- * EdgeDeploymentConfig
+    EdgeDeploymentConfig (..),
+    newEdgeDeploymentConfig,
+    edgeDeploymentConfig_failureHandlingPolicy,
+
+    -- * EdgeDeploymentModelConfig
+    EdgeDeploymentModelConfig (..),
+    newEdgeDeploymentModelConfig,
+    edgeDeploymentModelConfig_modelHandle,
+    edgeDeploymentModelConfig_edgePackagingJobName,
+
+    -- * EdgeDeploymentPlanSummary
+    EdgeDeploymentPlanSummary (..),
+    newEdgeDeploymentPlanSummary,
+    edgeDeploymentPlanSummary_creationTime,
+    edgeDeploymentPlanSummary_lastModifiedTime,
+    edgeDeploymentPlanSummary_edgeDeploymentPlanArn,
+    edgeDeploymentPlanSummary_edgeDeploymentPlanName,
+    edgeDeploymentPlanSummary_deviceFleetName,
+    edgeDeploymentPlanSummary_edgeDeploymentSuccess,
+    edgeDeploymentPlanSummary_edgeDeploymentPending,
+    edgeDeploymentPlanSummary_edgeDeploymentFailed,
+
+    -- * EdgeDeploymentStatus
+    EdgeDeploymentStatus (..),
+    newEdgeDeploymentStatus,
+    edgeDeploymentStatus_edgeDeploymentStageStartTime,
+    edgeDeploymentStatus_edgeDeploymentStatusMessage,
+    edgeDeploymentStatus_stageStatus,
+    edgeDeploymentStatus_edgeDeploymentSuccessInStage,
+    edgeDeploymentStatus_edgeDeploymentPendingInStage,
+    edgeDeploymentStatus_edgeDeploymentFailedInStage,
+
+    -- * EdgeModel
+    EdgeModel (..),
+    newEdgeModel,
+    edgeModel_latestInference,
+    edgeModel_latestSampleTime,
+    edgeModel_modelName,
+    edgeModel_modelVersion,
+
+    -- * EdgeModelStat
+    EdgeModelStat (..),
+    newEdgeModelStat,
+    edgeModelStat_modelName,
+    edgeModelStat_modelVersion,
+    edgeModelStat_offlineDeviceCount,
+    edgeModelStat_connectedDeviceCount,
+    edgeModelStat_activeDeviceCount,
+    edgeModelStat_samplingDeviceCount,
+
+    -- * EdgeModelSummary
+    EdgeModelSummary (..),
+    newEdgeModelSummary,
+    edgeModelSummary_modelName,
+    edgeModelSummary_modelVersion,
+
+    -- * EdgeOutputConfig
+    EdgeOutputConfig (..),
+    newEdgeOutputConfig,
+    edgeOutputConfig_kmsKeyId,
+    edgeOutputConfig_presetDeploymentConfig,
+    edgeOutputConfig_presetDeploymentType,
+    edgeOutputConfig_s3OutputLocation,
+
+    -- * EdgePackagingJobSummary
+    EdgePackagingJobSummary (..),
+    newEdgePackagingJobSummary,
+    edgePackagingJobSummary_compilationJobName,
+    edgePackagingJobSummary_creationTime,
+    edgePackagingJobSummary_lastModifiedTime,
+    edgePackagingJobSummary_modelName,
+    edgePackagingJobSummary_modelVersion,
+    edgePackagingJobSummary_edgePackagingJobArn,
+    edgePackagingJobSummary_edgePackagingJobName,
+    edgePackagingJobSummary_edgePackagingJobStatus,
+
+    -- * EdgePresetDeploymentOutput
+    EdgePresetDeploymentOutput (..),
+    newEdgePresetDeploymentOutput,
+    edgePresetDeploymentOutput_artifact,
+    edgePresetDeploymentOutput_status,
+    edgePresetDeploymentOutput_statusMessage,
+    edgePresetDeploymentOutput_type,
+
+    -- * Endpoint
+    Endpoint (..),
+    newEndpoint,
+    endpoint_dataCaptureConfig,
+    endpoint_failureReason,
+    endpoint_monitoringSchedules,
+    endpoint_productionVariants,
+    endpoint_shadowProductionVariants,
+    endpoint_tags,
+    endpoint_endpointName,
+    endpoint_endpointArn,
+    endpoint_endpointConfigName,
+    endpoint_endpointStatus,
+    endpoint_creationTime,
+    endpoint_lastModifiedTime,
+
+    -- * EndpointConfigSummary
+    EndpointConfigSummary (..),
+    newEndpointConfigSummary,
+    endpointConfigSummary_endpointConfigName,
+    endpointConfigSummary_endpointConfigArn,
+    endpointConfigSummary_creationTime,
+
+    -- * EndpointInfo
+    EndpointInfo (..),
+    newEndpointInfo,
+    endpointInfo_endpointName,
+
+    -- * EndpointInput
+    EndpointInput (..),
+    newEndpointInput,
+    endpointInput_endTimeOffset,
+    endpointInput_featuresAttribute,
+    endpointInput_inferenceAttribute,
+    endpointInput_probabilityAttribute,
+    endpointInput_probabilityThresholdAttribute,
+    endpointInput_s3DataDistributionType,
+    endpointInput_s3InputMode,
+    endpointInput_startTimeOffset,
+    endpointInput_endpointName,
+    endpointInput_localPath,
+
+    -- * EndpointInputConfiguration
+    EndpointInputConfiguration (..),
+    newEndpointInputConfiguration,
+    endpointInputConfiguration_environmentParameterRanges,
+    endpointInputConfiguration_inferenceSpecificationName,
+    endpointInputConfiguration_instanceType,
+
+    -- * EndpointMetadata
+    EndpointMetadata (..),
+    newEndpointMetadata,
+    endpointMetadata_endpointConfigName,
+    endpointMetadata_endpointStatus,
+    endpointMetadata_failureReason,
+    endpointMetadata_endpointName,
+
+    -- * EndpointOutputConfiguration
+    EndpointOutputConfiguration (..),
+    newEndpointOutputConfiguration,
+    endpointOutputConfiguration_endpointName,
+    endpointOutputConfiguration_variantName,
+    endpointOutputConfiguration_instanceType,
+    endpointOutputConfiguration_initialInstanceCount,
+
+    -- * EndpointPerformance
+    EndpointPerformance (..),
+    newEndpointPerformance,
+    endpointPerformance_metrics,
+    endpointPerformance_endpointInfo,
+
+    -- * EndpointSummary
+    EndpointSummary (..),
+    newEndpointSummary,
+    endpointSummary_endpointName,
+    endpointSummary_endpointArn,
+    endpointSummary_creationTime,
+    endpointSummary_lastModifiedTime,
+    endpointSummary_endpointStatus,
+
+    -- * EnvironmentParameter
+    EnvironmentParameter (..),
+    newEnvironmentParameter,
+    environmentParameter_key,
+    environmentParameter_valueType,
+    environmentParameter_value,
+
+    -- * EnvironmentParameterRanges
+    EnvironmentParameterRanges (..),
+    newEnvironmentParameterRanges,
+    environmentParameterRanges_categoricalParameterRanges,
+
+    -- * Experiment
+    Experiment (..),
+    newExperiment,
+    experiment_createdBy,
+    experiment_creationTime,
+    experiment_description,
+    experiment_displayName,
+    experiment_experimentArn,
+    experiment_experimentName,
+    experiment_lastModifiedBy,
+    experiment_lastModifiedTime,
+    experiment_source,
+    experiment_tags,
+
+    -- * ExperimentConfig
+    ExperimentConfig (..),
+    newExperimentConfig,
+    experimentConfig_experimentName,
+    experimentConfig_runName,
+    experimentConfig_trialComponentDisplayName,
+    experimentConfig_trialName,
+
+    -- * ExperimentSource
+    ExperimentSource (..),
+    newExperimentSource,
+    experimentSource_sourceType,
+    experimentSource_sourceArn,
+
+    -- * ExperimentSummary
+    ExperimentSummary (..),
+    newExperimentSummary,
+    experimentSummary_creationTime,
+    experimentSummary_displayName,
+    experimentSummary_experimentArn,
+    experimentSummary_experimentName,
+    experimentSummary_experimentSource,
+    experimentSummary_lastModifiedTime,
+
+    -- * Explainability
+    Explainability (..),
+    newExplainability,
+    explainability_report,
+
+    -- * ExplainerConfig
+    ExplainerConfig (..),
+    newExplainerConfig,
+    explainerConfig_clarifyExplainerConfig,
+
+    -- * FailStepMetadata
+    FailStepMetadata (..),
+    newFailStepMetadata,
+    failStepMetadata_errorMessage,
+
+    -- * FeatureDefinition
+    FeatureDefinition (..),
+    newFeatureDefinition,
+    featureDefinition_featureName,
+    featureDefinition_featureType,
+
+    -- * FeatureGroup
+    FeatureGroup (..),
+    newFeatureGroup,
+    featureGroup_creationTime,
+    featureGroup_description,
+    featureGroup_eventTimeFeatureName,
+    featureGroup_failureReason,
+    featureGroup_featureDefinitions,
+    featureGroup_featureGroupArn,
+    featureGroup_featureGroupName,
+    featureGroup_featureGroupStatus,
+    featureGroup_lastModifiedTime,
+    featureGroup_lastUpdateStatus,
+    featureGroup_offlineStoreConfig,
+    featureGroup_offlineStoreStatus,
+    featureGroup_onlineStoreConfig,
+    featureGroup_recordIdentifierFeatureName,
+    featureGroup_roleArn,
+    featureGroup_tags,
+
+    -- * FeatureGroupSummary
+    FeatureGroupSummary (..),
+    newFeatureGroupSummary,
+    featureGroupSummary_featureGroupStatus,
+    featureGroupSummary_offlineStoreStatus,
+    featureGroupSummary_featureGroupName,
+    featureGroupSummary_featureGroupArn,
+    featureGroupSummary_creationTime,
+
+    -- * FeatureMetadata
+    FeatureMetadata (..),
+    newFeatureMetadata,
+    featureMetadata_creationTime,
+    featureMetadata_description,
+    featureMetadata_featureGroupArn,
+    featureMetadata_featureGroupName,
+    featureMetadata_featureName,
+    featureMetadata_featureType,
+    featureMetadata_lastModifiedTime,
+    featureMetadata_parameters,
+
+    -- * FeatureParameter
+    FeatureParameter (..),
+    newFeatureParameter,
+    featureParameter_key,
+    featureParameter_value,
+
+    -- * FileSource
+    FileSource (..),
+    newFileSource,
+    fileSource_contentDigest,
+    fileSource_contentType,
+    fileSource_s3Uri,
+
+    -- * FileSystemConfig
+    FileSystemConfig (..),
+    newFileSystemConfig,
+    fileSystemConfig_defaultGid,
+    fileSystemConfig_defaultUid,
+    fileSystemConfig_mountPath,
+
+    -- * FileSystemDataSource
+    FileSystemDataSource (..),
+    newFileSystemDataSource,
+    fileSystemDataSource_fileSystemId,
+    fileSystemDataSource_fileSystemAccessMode,
+    fileSystemDataSource_fileSystemType,
+    fileSystemDataSource_directoryPath,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_operator,
+    filter_value,
+    filter_name,
+
+    -- * FinalAutoMLJobObjectiveMetric
+    FinalAutoMLJobObjectiveMetric (..),
+    newFinalAutoMLJobObjectiveMetric,
+    finalAutoMLJobObjectiveMetric_type,
+    finalAutoMLJobObjectiveMetric_metricName,
+    finalAutoMLJobObjectiveMetric_value,
+
+    -- * FinalHyperParameterTuningJobObjectiveMetric
+    FinalHyperParameterTuningJobObjectiveMetric (..),
+    newFinalHyperParameterTuningJobObjectiveMetric,
+    finalHyperParameterTuningJobObjectiveMetric_type,
+    finalHyperParameterTuningJobObjectiveMetric_metricName,
+    finalHyperParameterTuningJobObjectiveMetric_value,
+
+    -- * FlowDefinitionOutputConfig
+    FlowDefinitionOutputConfig (..),
+    newFlowDefinitionOutputConfig,
+    flowDefinitionOutputConfig_kmsKeyId,
+    flowDefinitionOutputConfig_s3OutputPath,
+
+    -- * FlowDefinitionSummary
+    FlowDefinitionSummary (..),
+    newFlowDefinitionSummary,
+    flowDefinitionSummary_failureReason,
+    flowDefinitionSummary_flowDefinitionName,
+    flowDefinitionSummary_flowDefinitionArn,
+    flowDefinitionSummary_flowDefinitionStatus,
+    flowDefinitionSummary_creationTime,
+
+    -- * GitConfig
+    GitConfig (..),
+    newGitConfig,
+    gitConfig_branch,
+    gitConfig_secretArn,
+    gitConfig_repositoryUrl,
+
+    -- * GitConfigForUpdate
+    GitConfigForUpdate (..),
+    newGitConfigForUpdate,
+    gitConfigForUpdate_secretArn,
+
+    -- * HubContentDependency
+    HubContentDependency (..),
+    newHubContentDependency,
+    hubContentDependency_dependencyCopyPath,
+    hubContentDependency_dependencyOriginPath,
+
+    -- * HubContentInfo
+    HubContentInfo (..),
+    newHubContentInfo,
+    hubContentInfo_hubContentDescription,
+    hubContentInfo_hubContentDisplayName,
+    hubContentInfo_hubContentSearchKeywords,
+    hubContentInfo_hubContentName,
+    hubContentInfo_hubContentArn,
+    hubContentInfo_hubContentVersion,
+    hubContentInfo_hubContentType,
+    hubContentInfo_documentSchemaVersion,
+    hubContentInfo_hubContentStatus,
+    hubContentInfo_creationTime,
+
+    -- * HubInfo
+    HubInfo (..),
+    newHubInfo,
+    hubInfo_hubDescription,
+    hubInfo_hubDisplayName,
+    hubInfo_hubSearchKeywords,
+    hubInfo_hubName,
+    hubInfo_hubArn,
+    hubInfo_hubStatus,
+    hubInfo_creationTime,
+    hubInfo_lastModifiedTime,
+
+    -- * HubS3StorageConfig
+    HubS3StorageConfig (..),
+    newHubS3StorageConfig,
+    hubS3StorageConfig_s3OutputPath,
+
+    -- * HumanLoopActivationConditionsConfig
+    HumanLoopActivationConditionsConfig (..),
+    newHumanLoopActivationConditionsConfig,
+    humanLoopActivationConditionsConfig_humanLoopActivationConditions,
+
+    -- * HumanLoopActivationConfig
+    HumanLoopActivationConfig (..),
+    newHumanLoopActivationConfig,
+    humanLoopActivationConfig_humanLoopActivationConditionsConfig,
+
+    -- * HumanLoopConfig
+    HumanLoopConfig (..),
+    newHumanLoopConfig,
+    humanLoopConfig_publicWorkforceTaskPrice,
+    humanLoopConfig_taskAvailabilityLifetimeInSeconds,
+    humanLoopConfig_taskKeywords,
+    humanLoopConfig_taskTimeLimitInSeconds,
+    humanLoopConfig_workteamArn,
+    humanLoopConfig_humanTaskUiArn,
+    humanLoopConfig_taskTitle,
+    humanLoopConfig_taskDescription,
+    humanLoopConfig_taskCount,
+
+    -- * HumanLoopRequestSource
+    HumanLoopRequestSource (..),
+    newHumanLoopRequestSource,
+    humanLoopRequestSource_awsManagedHumanLoopRequestSource,
+
+    -- * HumanTaskConfig
+    HumanTaskConfig (..),
+    newHumanTaskConfig,
+    humanTaskConfig_maxConcurrentTaskCount,
+    humanTaskConfig_publicWorkforceTaskPrice,
+    humanTaskConfig_taskAvailabilityLifetimeInSeconds,
+    humanTaskConfig_taskKeywords,
+    humanTaskConfig_workteamArn,
+    humanTaskConfig_uiConfig,
+    humanTaskConfig_preHumanTaskLambdaArn,
+    humanTaskConfig_taskTitle,
+    humanTaskConfig_taskDescription,
+    humanTaskConfig_numberOfHumanWorkersPerDataObject,
+    humanTaskConfig_taskTimeLimitInSeconds,
+    humanTaskConfig_annotationConsolidationConfig,
+
+    -- * HumanTaskUiSummary
+    HumanTaskUiSummary (..),
+    newHumanTaskUiSummary,
+    humanTaskUiSummary_humanTaskUiName,
+    humanTaskUiSummary_humanTaskUiArn,
+    humanTaskUiSummary_creationTime,
+
+    -- * HyperParameterAlgorithmSpecification
+    HyperParameterAlgorithmSpecification (..),
+    newHyperParameterAlgorithmSpecification,
+    hyperParameterAlgorithmSpecification_algorithmName,
+    hyperParameterAlgorithmSpecification_metricDefinitions,
+    hyperParameterAlgorithmSpecification_trainingImage,
+    hyperParameterAlgorithmSpecification_trainingInputMode,
+
+    -- * HyperParameterSpecification
+    HyperParameterSpecification (..),
+    newHyperParameterSpecification,
+    hyperParameterSpecification_defaultValue,
+    hyperParameterSpecification_description,
+    hyperParameterSpecification_isRequired,
+    hyperParameterSpecification_isTunable,
+    hyperParameterSpecification_range,
+    hyperParameterSpecification_name,
+    hyperParameterSpecification_type,
+
+    -- * HyperParameterTrainingJobDefinition
+    HyperParameterTrainingJobDefinition (..),
+    newHyperParameterTrainingJobDefinition,
+    hyperParameterTrainingJobDefinition_checkpointConfig,
+    hyperParameterTrainingJobDefinition_definitionName,
+    hyperParameterTrainingJobDefinition_enableInterContainerTrafficEncryption,
+    hyperParameterTrainingJobDefinition_enableManagedSpotTraining,
+    hyperParameterTrainingJobDefinition_enableNetworkIsolation,
+    hyperParameterTrainingJobDefinition_hyperParameterRanges,
+    hyperParameterTrainingJobDefinition_hyperParameterTuningResourceConfig,
+    hyperParameterTrainingJobDefinition_inputDataConfig,
+    hyperParameterTrainingJobDefinition_resourceConfig,
+    hyperParameterTrainingJobDefinition_retryStrategy,
+    hyperParameterTrainingJobDefinition_staticHyperParameters,
+    hyperParameterTrainingJobDefinition_tuningObjective,
+    hyperParameterTrainingJobDefinition_vpcConfig,
+    hyperParameterTrainingJobDefinition_algorithmSpecification,
+    hyperParameterTrainingJobDefinition_roleArn,
+    hyperParameterTrainingJobDefinition_outputDataConfig,
+    hyperParameterTrainingJobDefinition_stoppingCondition,
+
+    -- * HyperParameterTrainingJobSummary
+    HyperParameterTrainingJobSummary (..),
+    newHyperParameterTrainingJobSummary,
+    hyperParameterTrainingJobSummary_failureReason,
+    hyperParameterTrainingJobSummary_finalHyperParameterTuningJobObjectiveMetric,
+    hyperParameterTrainingJobSummary_objectiveStatus,
+    hyperParameterTrainingJobSummary_trainingEndTime,
+    hyperParameterTrainingJobSummary_trainingJobDefinitionName,
+    hyperParameterTrainingJobSummary_trainingStartTime,
+    hyperParameterTrainingJobSummary_tuningJobName,
+    hyperParameterTrainingJobSummary_trainingJobName,
+    hyperParameterTrainingJobSummary_trainingJobArn,
+    hyperParameterTrainingJobSummary_creationTime,
+    hyperParameterTrainingJobSummary_trainingJobStatus,
+    hyperParameterTrainingJobSummary_tunedHyperParameters,
+
+    -- * HyperParameterTuningInstanceConfig
+    HyperParameterTuningInstanceConfig (..),
+    newHyperParameterTuningInstanceConfig,
+    hyperParameterTuningInstanceConfig_instanceType,
+    hyperParameterTuningInstanceConfig_instanceCount,
+    hyperParameterTuningInstanceConfig_volumeSizeInGB,
+
+    -- * HyperParameterTuningJobConfig
+    HyperParameterTuningJobConfig (..),
+    newHyperParameterTuningJobConfig,
+    hyperParameterTuningJobConfig_hyperParameterTuningJobObjective,
+    hyperParameterTuningJobConfig_parameterRanges,
+    hyperParameterTuningJobConfig_randomSeed,
+    hyperParameterTuningJobConfig_strategyConfig,
+    hyperParameterTuningJobConfig_trainingJobEarlyStoppingType,
+    hyperParameterTuningJobConfig_tuningJobCompletionCriteria,
+    hyperParameterTuningJobConfig_strategy,
+    hyperParameterTuningJobConfig_resourceLimits,
+
+    -- * HyperParameterTuningJobObjective
+    HyperParameterTuningJobObjective (..),
+    newHyperParameterTuningJobObjective,
+    hyperParameterTuningJobObjective_type,
+    hyperParameterTuningJobObjective_metricName,
+
+    -- * HyperParameterTuningJobSearchEntity
+    HyperParameterTuningJobSearchEntity (..),
+    newHyperParameterTuningJobSearchEntity,
+    hyperParameterTuningJobSearchEntity_bestTrainingJob,
+    hyperParameterTuningJobSearchEntity_creationTime,
+    hyperParameterTuningJobSearchEntity_failureReason,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningEndTime,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobArn,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobConfig,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobName,
+    hyperParameterTuningJobSearchEntity_hyperParameterTuningJobStatus,
+    hyperParameterTuningJobSearchEntity_lastModifiedTime,
+    hyperParameterTuningJobSearchEntity_objectiveStatusCounters,
+    hyperParameterTuningJobSearchEntity_overallBestTrainingJob,
+    hyperParameterTuningJobSearchEntity_tags,
+    hyperParameterTuningJobSearchEntity_trainingJobDefinition,
+    hyperParameterTuningJobSearchEntity_trainingJobDefinitions,
+    hyperParameterTuningJobSearchEntity_trainingJobStatusCounters,
+    hyperParameterTuningJobSearchEntity_warmStartConfig,
+
+    -- * HyperParameterTuningJobStrategyConfig
+    HyperParameterTuningJobStrategyConfig (..),
+    newHyperParameterTuningJobStrategyConfig,
+    hyperParameterTuningJobStrategyConfig_hyperbandStrategyConfig,
+
+    -- * HyperParameterTuningJobSummary
+    HyperParameterTuningJobSummary (..),
+    newHyperParameterTuningJobSummary,
+    hyperParameterTuningJobSummary_hyperParameterTuningEndTime,
+    hyperParameterTuningJobSummary_lastModifiedTime,
+    hyperParameterTuningJobSummary_resourceLimits,
+    hyperParameterTuningJobSummary_hyperParameterTuningJobName,
+    hyperParameterTuningJobSummary_hyperParameterTuningJobArn,
+    hyperParameterTuningJobSummary_hyperParameterTuningJobStatus,
+    hyperParameterTuningJobSummary_strategy,
+    hyperParameterTuningJobSummary_creationTime,
+    hyperParameterTuningJobSummary_trainingJobStatusCounters,
+    hyperParameterTuningJobSummary_objectiveStatusCounters,
+
+    -- * HyperParameterTuningJobWarmStartConfig
+    HyperParameterTuningJobWarmStartConfig (..),
+    newHyperParameterTuningJobWarmStartConfig,
+    hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs,
+    hyperParameterTuningJobWarmStartConfig_warmStartType,
+
+    -- * HyperParameterTuningResourceConfig
+    HyperParameterTuningResourceConfig (..),
+    newHyperParameterTuningResourceConfig,
+    hyperParameterTuningResourceConfig_allocationStrategy,
+    hyperParameterTuningResourceConfig_instanceConfigs,
+    hyperParameterTuningResourceConfig_instanceCount,
+    hyperParameterTuningResourceConfig_instanceType,
+    hyperParameterTuningResourceConfig_volumeKmsKeyId,
+    hyperParameterTuningResourceConfig_volumeSizeInGB,
+
+    -- * HyperbandStrategyConfig
+    HyperbandStrategyConfig (..),
+    newHyperbandStrategyConfig,
+    hyperbandStrategyConfig_maxResource,
+    hyperbandStrategyConfig_minResource,
+
+    -- * Image
+    Image (..),
+    newImage,
+    image_description,
+    image_displayName,
+    image_failureReason,
+    image_creationTime,
+    image_imageArn,
+    image_imageName,
+    image_imageStatus,
+    image_lastModifiedTime,
+
+    -- * ImageConfig
+    ImageConfig (..),
+    newImageConfig,
+    imageConfig_repositoryAuthConfig,
+    imageConfig_repositoryAccessMode,
+
+    -- * ImageVersion
+    ImageVersion (..),
+    newImageVersion,
+    imageVersion_failureReason,
+    imageVersion_creationTime,
+    imageVersion_imageArn,
+    imageVersion_imageVersionArn,
+    imageVersion_imageVersionStatus,
+    imageVersion_lastModifiedTime,
+    imageVersion_version,
+
+    -- * InferenceExecutionConfig
+    InferenceExecutionConfig (..),
+    newInferenceExecutionConfig,
+    inferenceExecutionConfig_mode,
+
+    -- * InferenceExperimentDataStorageConfig
+    InferenceExperimentDataStorageConfig (..),
+    newInferenceExperimentDataStorageConfig,
+    inferenceExperimentDataStorageConfig_contentType,
+    inferenceExperimentDataStorageConfig_kmsKey,
+    inferenceExperimentDataStorageConfig_destination,
+
+    -- * InferenceExperimentSchedule
+    InferenceExperimentSchedule (..),
+    newInferenceExperimentSchedule,
+    inferenceExperimentSchedule_endTime,
+    inferenceExperimentSchedule_startTime,
+
+    -- * InferenceExperimentSummary
+    InferenceExperimentSummary (..),
+    newInferenceExperimentSummary,
+    inferenceExperimentSummary_completionTime,
+    inferenceExperimentSummary_description,
+    inferenceExperimentSummary_roleArn,
+    inferenceExperimentSummary_schedule,
+    inferenceExperimentSummary_statusReason,
+    inferenceExperimentSummary_name,
+    inferenceExperimentSummary_type,
+    inferenceExperimentSummary_status,
+    inferenceExperimentSummary_creationTime,
+    inferenceExperimentSummary_lastModifiedTime,
+
+    -- * InferenceMetrics
+    InferenceMetrics (..),
+    newInferenceMetrics,
+    inferenceMetrics_maxInvocations,
+    inferenceMetrics_modelLatency,
+
+    -- * InferenceRecommendation
+    InferenceRecommendation (..),
+    newInferenceRecommendation,
+    inferenceRecommendation_metrics,
+    inferenceRecommendation_endpointConfiguration,
+    inferenceRecommendation_modelConfiguration,
+
+    -- * InferenceRecommendationsJob
+    InferenceRecommendationsJob (..),
+    newInferenceRecommendationsJob,
+    inferenceRecommendationsJob_completionTime,
+    inferenceRecommendationsJob_failureReason,
+    inferenceRecommendationsJob_jobName,
+    inferenceRecommendationsJob_jobDescription,
+    inferenceRecommendationsJob_jobType,
+    inferenceRecommendationsJob_jobArn,
+    inferenceRecommendationsJob_status,
+    inferenceRecommendationsJob_creationTime,
+    inferenceRecommendationsJob_roleArn,
+    inferenceRecommendationsJob_lastModifiedTime,
+
+    -- * InferenceRecommendationsJobStep
+    InferenceRecommendationsJobStep (..),
+    newInferenceRecommendationsJobStep,
+    inferenceRecommendationsJobStep_inferenceBenchmark,
+    inferenceRecommendationsJobStep_stepType,
+    inferenceRecommendationsJobStep_jobName,
+    inferenceRecommendationsJobStep_status,
+
+    -- * InferenceSpecification
+    InferenceSpecification (..),
+    newInferenceSpecification,
+    inferenceSpecification_supportedRealtimeInferenceInstanceTypes,
+    inferenceSpecification_supportedTransformInstanceTypes,
+    inferenceSpecification_containers,
+    inferenceSpecification_supportedContentTypes,
+    inferenceSpecification_supportedResponseMIMETypes,
+
+    -- * InputConfig
+    InputConfig (..),
+    newInputConfig,
+    inputConfig_frameworkVersion,
+    inputConfig_s3Uri,
+    inputConfig_dataInputConfig,
+    inputConfig_framework,
+
+    -- * InstanceGroup
+    InstanceGroup (..),
+    newInstanceGroup,
+    instanceGroup_instanceType,
+    instanceGroup_instanceCount,
+    instanceGroup_instanceGroupName,
+
+    -- * InstanceMetadataServiceConfiguration
+    InstanceMetadataServiceConfiguration (..),
+    newInstanceMetadataServiceConfiguration,
+    instanceMetadataServiceConfiguration_minimumInstanceMetadataServiceVersion,
+
+    -- * IntegerParameterRange
+    IntegerParameterRange (..),
+    newIntegerParameterRange,
+    integerParameterRange_scalingType,
+    integerParameterRange_name,
+    integerParameterRange_minValue,
+    integerParameterRange_maxValue,
+
+    -- * IntegerParameterRangeSpecification
+    IntegerParameterRangeSpecification (..),
+    newIntegerParameterRangeSpecification,
+    integerParameterRangeSpecification_minValue,
+    integerParameterRangeSpecification_maxValue,
+
+    -- * JupyterServerAppSettings
+    JupyterServerAppSettings (..),
+    newJupyterServerAppSettings,
+    jupyterServerAppSettings_codeRepositories,
+    jupyterServerAppSettings_defaultResourceSpec,
+    jupyterServerAppSettings_lifecycleConfigArns,
+
+    -- * KernelGatewayAppSettings
+    KernelGatewayAppSettings (..),
+    newKernelGatewayAppSettings,
+    kernelGatewayAppSettings_customImages,
+    kernelGatewayAppSettings_defaultResourceSpec,
+    kernelGatewayAppSettings_lifecycleConfigArns,
+
+    -- * KernelGatewayImageConfig
+    KernelGatewayImageConfig (..),
+    newKernelGatewayImageConfig,
+    kernelGatewayImageConfig_fileSystemConfig,
+    kernelGatewayImageConfig_kernelSpecs,
+
+    -- * KernelSpec
+    KernelSpec (..),
+    newKernelSpec,
+    kernelSpec_displayName,
+    kernelSpec_name,
+
+    -- * LabelCounters
+    LabelCounters (..),
+    newLabelCounters,
+    labelCounters_failedNonRetryableError,
+    labelCounters_humanLabeled,
+    labelCounters_machineLabeled,
+    labelCounters_totalLabeled,
+    labelCounters_unlabeled,
+
+    -- * LabelCountersForWorkteam
+    LabelCountersForWorkteam (..),
+    newLabelCountersForWorkteam,
+    labelCountersForWorkteam_humanLabeled,
+    labelCountersForWorkteam_pendingHuman,
+    labelCountersForWorkteam_total,
+
+    -- * LabelingJobAlgorithmsConfig
+    LabelingJobAlgorithmsConfig (..),
+    newLabelingJobAlgorithmsConfig,
+    labelingJobAlgorithmsConfig_initialActiveLearningModelArn,
+    labelingJobAlgorithmsConfig_labelingJobResourceConfig,
+    labelingJobAlgorithmsConfig_labelingJobAlgorithmSpecificationArn,
+
+    -- * LabelingJobDataAttributes
+    LabelingJobDataAttributes (..),
+    newLabelingJobDataAttributes,
+    labelingJobDataAttributes_contentClassifiers,
+
+    -- * LabelingJobDataSource
+    LabelingJobDataSource (..),
+    newLabelingJobDataSource,
+    labelingJobDataSource_s3DataSource,
+    labelingJobDataSource_snsDataSource,
+
+    -- * LabelingJobForWorkteamSummary
+    LabelingJobForWorkteamSummary (..),
+    newLabelingJobForWorkteamSummary,
+    labelingJobForWorkteamSummary_labelCounters,
+    labelingJobForWorkteamSummary_labelingJobName,
+    labelingJobForWorkteamSummary_numberOfHumanWorkersPerDataObject,
+    labelingJobForWorkteamSummary_jobReferenceCode,
+    labelingJobForWorkteamSummary_workRequesterAccountId,
+    labelingJobForWorkteamSummary_creationTime,
+
+    -- * LabelingJobInputConfig
+    LabelingJobInputConfig (..),
+    newLabelingJobInputConfig,
+    labelingJobInputConfig_dataAttributes,
+    labelingJobInputConfig_dataSource,
+
+    -- * LabelingJobOutput
+    LabelingJobOutput (..),
+    newLabelingJobOutput,
+    labelingJobOutput_finalActiveLearningModelArn,
+    labelingJobOutput_outputDatasetS3Uri,
+
+    -- * LabelingJobOutputConfig
+    LabelingJobOutputConfig (..),
+    newLabelingJobOutputConfig,
+    labelingJobOutputConfig_kmsKeyId,
+    labelingJobOutputConfig_snsTopicArn,
+    labelingJobOutputConfig_s3OutputPath,
+
+    -- * LabelingJobResourceConfig
+    LabelingJobResourceConfig (..),
+    newLabelingJobResourceConfig,
+    labelingJobResourceConfig_volumeKmsKeyId,
+    labelingJobResourceConfig_vpcConfig,
+
+    -- * LabelingJobS3DataSource
+    LabelingJobS3DataSource (..),
+    newLabelingJobS3DataSource,
+    labelingJobS3DataSource_manifestS3Uri,
+
+    -- * LabelingJobSnsDataSource
+    LabelingJobSnsDataSource (..),
+    newLabelingJobSnsDataSource,
+    labelingJobSnsDataSource_snsTopicArn,
+
+    -- * LabelingJobStoppingConditions
+    LabelingJobStoppingConditions (..),
+    newLabelingJobStoppingConditions,
+    labelingJobStoppingConditions_maxHumanLabeledObjectCount,
+    labelingJobStoppingConditions_maxPercentageOfInputDatasetLabeled,
+
+    -- * LabelingJobSummary
+    LabelingJobSummary (..),
+    newLabelingJobSummary,
+    labelingJobSummary_annotationConsolidationLambdaArn,
+    labelingJobSummary_failureReason,
+    labelingJobSummary_inputConfig,
+    labelingJobSummary_labelingJobOutput,
+    labelingJobSummary_labelingJobName,
+    labelingJobSummary_labelingJobArn,
+    labelingJobSummary_creationTime,
+    labelingJobSummary_lastModifiedTime,
+    labelingJobSummary_labelingJobStatus,
+    labelingJobSummary_labelCounters,
+    labelingJobSummary_workteamArn,
+    labelingJobSummary_preHumanTaskLambdaArn,
+
+    -- * LambdaStepMetadata
+    LambdaStepMetadata (..),
+    newLambdaStepMetadata,
+    lambdaStepMetadata_arn,
+    lambdaStepMetadata_outputParameters,
+
+    -- * LastUpdateStatus
+    LastUpdateStatus (..),
+    newLastUpdateStatus,
+    lastUpdateStatus_failureReason,
+    lastUpdateStatus_status,
+
+    -- * LineageGroupSummary
+    LineageGroupSummary (..),
+    newLineageGroupSummary,
+    lineageGroupSummary_creationTime,
+    lineageGroupSummary_displayName,
+    lineageGroupSummary_lastModifiedTime,
+    lineageGroupSummary_lineageGroupArn,
+    lineageGroupSummary_lineageGroupName,
+
+    -- * MemberDefinition
+    MemberDefinition (..),
+    newMemberDefinition,
+    memberDefinition_cognitoMemberDefinition,
+    memberDefinition_oidcMemberDefinition,
+
+    -- * MetadataProperties
+    MetadataProperties (..),
+    newMetadataProperties,
+    metadataProperties_commitId,
+    metadataProperties_generatedBy,
+    metadataProperties_projectId,
+    metadataProperties_repository,
+
+    -- * MetricData
+    MetricData (..),
+    newMetricData,
+    metricData_metricName,
+    metricData_timestamp,
+    metricData_value,
+
+    -- * MetricDatum
+    MetricDatum (..),
+    newMetricDatum,
+    metricDatum_metricName,
+    metricDatum_set,
+    metricDatum_standardMetricName,
+    metricDatum_value,
+
+    -- * MetricDefinition
+    MetricDefinition (..),
+    newMetricDefinition,
+    metricDefinition_name,
+    metricDefinition_regex,
+
+    -- * MetricsSource
+    MetricsSource (..),
+    newMetricsSource,
+    metricsSource_contentDigest,
+    metricsSource_contentType,
+    metricsSource_s3Uri,
+
+    -- * Model
+    Model (..),
+    newModel,
+    model_containers,
+    model_creationTime,
+    model_enableNetworkIsolation,
+    model_executionRoleArn,
+    model_inferenceExecutionConfig,
+    model_modelArn,
+    model_modelName,
+    model_primaryContainer,
+    model_tags,
+    model_vpcConfig,
+
+    -- * ModelArtifacts
+    ModelArtifacts (..),
+    newModelArtifacts,
+    modelArtifacts_s3ModelArtifacts,
+
+    -- * ModelBiasAppSpecification
+    ModelBiasAppSpecification (..),
+    newModelBiasAppSpecification,
+    modelBiasAppSpecification_environment,
+    modelBiasAppSpecification_imageUri,
+    modelBiasAppSpecification_configUri,
+
+    -- * ModelBiasBaselineConfig
+    ModelBiasBaselineConfig (..),
+    newModelBiasBaselineConfig,
+    modelBiasBaselineConfig_baseliningJobName,
+    modelBiasBaselineConfig_constraintsResource,
+
+    -- * ModelBiasJobInput
+    ModelBiasJobInput (..),
+    newModelBiasJobInput,
+    modelBiasJobInput_batchTransformInput,
+    modelBiasJobInput_endpointInput,
+    modelBiasJobInput_groundTruthS3Input,
+
+    -- * ModelCard
+    ModelCard (..),
+    newModelCard,
+    modelCard_content,
+    modelCard_createdBy,
+    modelCard_creationTime,
+    modelCard_lastModifiedBy,
+    modelCard_lastModifiedTime,
+    modelCard_modelCardArn,
+    modelCard_modelCardName,
+    modelCard_modelCardStatus,
+    modelCard_modelCardVersion,
+    modelCard_modelId,
+    modelCard_riskRating,
+    modelCard_securityConfig,
+    modelCard_tags,
+
+    -- * ModelCardExportArtifacts
+    ModelCardExportArtifacts (..),
+    newModelCardExportArtifacts,
+    modelCardExportArtifacts_s3ExportArtifacts,
+
+    -- * ModelCardExportJobSummary
+    ModelCardExportJobSummary (..),
+    newModelCardExportJobSummary,
+    modelCardExportJobSummary_modelCardExportJobName,
+    modelCardExportJobSummary_modelCardExportJobArn,
+    modelCardExportJobSummary_status,
+    modelCardExportJobSummary_modelCardName,
+    modelCardExportJobSummary_modelCardVersion,
+    modelCardExportJobSummary_createdAt,
+    modelCardExportJobSummary_lastModifiedAt,
+
+    -- * ModelCardExportOutputConfig
+    ModelCardExportOutputConfig (..),
+    newModelCardExportOutputConfig,
+    modelCardExportOutputConfig_s3OutputPath,
+
+    -- * ModelCardSecurityConfig
+    ModelCardSecurityConfig (..),
+    newModelCardSecurityConfig,
+    modelCardSecurityConfig_kmsKeyId,
+
+    -- * ModelCardSummary
+    ModelCardSummary (..),
+    newModelCardSummary,
+    modelCardSummary_lastModifiedTime,
+    modelCardSummary_modelCardName,
+    modelCardSummary_modelCardArn,
+    modelCardSummary_modelCardStatus,
+    modelCardSummary_creationTime,
+
+    -- * ModelCardVersionSummary
+    ModelCardVersionSummary (..),
+    newModelCardVersionSummary,
+    modelCardVersionSummary_lastModifiedTime,
+    modelCardVersionSummary_modelCardName,
+    modelCardVersionSummary_modelCardArn,
+    modelCardVersionSummary_modelCardStatus,
+    modelCardVersionSummary_modelCardVersion,
+    modelCardVersionSummary_creationTime,
+
+    -- * ModelClientConfig
+    ModelClientConfig (..),
+    newModelClientConfig,
+    modelClientConfig_invocationsMaxRetries,
+    modelClientConfig_invocationsTimeoutInSeconds,
+
+    -- * ModelConfiguration
+    ModelConfiguration (..),
+    newModelConfiguration,
+    modelConfiguration_environmentParameters,
+    modelConfiguration_inferenceSpecificationName,
+
+    -- * ModelDashboardEndpoint
+    ModelDashboardEndpoint (..),
+    newModelDashboardEndpoint,
+    modelDashboardEndpoint_endpointName,
+    modelDashboardEndpoint_endpointArn,
+    modelDashboardEndpoint_creationTime,
+    modelDashboardEndpoint_lastModifiedTime,
+    modelDashboardEndpoint_endpointStatus,
+
+    -- * ModelDashboardIndicatorAction
+    ModelDashboardIndicatorAction (..),
+    newModelDashboardIndicatorAction,
+    modelDashboardIndicatorAction_enabled,
+
+    -- * ModelDashboardModel
+    ModelDashboardModel (..),
+    newModelDashboardModel,
+    modelDashboardModel_endpoints,
+    modelDashboardModel_lastBatchTransformJob,
+    modelDashboardModel_model,
+    modelDashboardModel_modelCard,
+    modelDashboardModel_monitoringSchedules,
+
+    -- * ModelDashboardModelCard
+    ModelDashboardModelCard (..),
+    newModelDashboardModelCard,
+    modelDashboardModelCard_createdBy,
+    modelDashboardModelCard_creationTime,
+    modelDashboardModelCard_lastModifiedBy,
+    modelDashboardModelCard_lastModifiedTime,
+    modelDashboardModelCard_modelCardArn,
+    modelDashboardModelCard_modelCardName,
+    modelDashboardModelCard_modelCardStatus,
+    modelDashboardModelCard_modelCardVersion,
+    modelDashboardModelCard_modelId,
+    modelDashboardModelCard_riskRating,
+    modelDashboardModelCard_securityConfig,
+    modelDashboardModelCard_tags,
+
+    -- * ModelDashboardMonitoringSchedule
+    ModelDashboardMonitoringSchedule (..),
+    newModelDashboardMonitoringSchedule,
+    modelDashboardMonitoringSchedule_creationTime,
+    modelDashboardMonitoringSchedule_endpointName,
+    modelDashboardMonitoringSchedule_failureReason,
+    modelDashboardMonitoringSchedule_lastModifiedTime,
+    modelDashboardMonitoringSchedule_lastMonitoringExecutionSummary,
+    modelDashboardMonitoringSchedule_monitoringAlertSummaries,
+    modelDashboardMonitoringSchedule_monitoringScheduleArn,
+    modelDashboardMonitoringSchedule_monitoringScheduleConfig,
+    modelDashboardMonitoringSchedule_monitoringScheduleName,
+    modelDashboardMonitoringSchedule_monitoringScheduleStatus,
+    modelDashboardMonitoringSchedule_monitoringType,
+
+    -- * ModelDataQuality
+    ModelDataQuality (..),
+    newModelDataQuality,
+    modelDataQuality_constraints,
+    modelDataQuality_statistics,
+
+    -- * ModelDeployConfig
+    ModelDeployConfig (..),
+    newModelDeployConfig,
+    modelDeployConfig_autoGenerateEndpointName,
+    modelDeployConfig_endpointName,
+
+    -- * ModelDeployResult
+    ModelDeployResult (..),
+    newModelDeployResult,
+    modelDeployResult_endpointName,
+
+    -- * ModelDigests
+    ModelDigests (..),
+    newModelDigests,
+    modelDigests_artifactDigest,
+
+    -- * ModelExplainabilityAppSpecification
+    ModelExplainabilityAppSpecification (..),
+    newModelExplainabilityAppSpecification,
+    modelExplainabilityAppSpecification_environment,
+    modelExplainabilityAppSpecification_imageUri,
+    modelExplainabilityAppSpecification_configUri,
+
+    -- * ModelExplainabilityBaselineConfig
+    ModelExplainabilityBaselineConfig (..),
+    newModelExplainabilityBaselineConfig,
+    modelExplainabilityBaselineConfig_baseliningJobName,
+    modelExplainabilityBaselineConfig_constraintsResource,
+
+    -- * ModelExplainabilityJobInput
+    ModelExplainabilityJobInput (..),
+    newModelExplainabilityJobInput,
+    modelExplainabilityJobInput_batchTransformInput,
+    modelExplainabilityJobInput_endpointInput,
+
+    -- * ModelInfrastructureConfig
+    ModelInfrastructureConfig (..),
+    newModelInfrastructureConfig,
+    modelInfrastructureConfig_infrastructureType,
+    modelInfrastructureConfig_realTimeInferenceConfig,
+
+    -- * ModelInput
+    ModelInput (..),
+    newModelInput,
+    modelInput_dataInputConfig,
+
+    -- * ModelLatencyThreshold
+    ModelLatencyThreshold (..),
+    newModelLatencyThreshold,
+    modelLatencyThreshold_percentile,
+    modelLatencyThreshold_valueInMilliseconds,
+
+    -- * ModelMetadataFilter
+    ModelMetadataFilter (..),
+    newModelMetadataFilter,
+    modelMetadataFilter_name,
+    modelMetadataFilter_value,
+
+    -- * ModelMetadataSearchExpression
+    ModelMetadataSearchExpression (..),
+    newModelMetadataSearchExpression,
+    modelMetadataSearchExpression_filters,
+
+    -- * ModelMetadataSummary
+    ModelMetadataSummary (..),
+    newModelMetadataSummary,
+    modelMetadataSummary_domain,
+    modelMetadataSummary_framework,
+    modelMetadataSummary_task,
+    modelMetadataSummary_model,
+    modelMetadataSummary_frameworkVersion,
+
+    -- * ModelMetrics
+    ModelMetrics (..),
+    newModelMetrics,
+    modelMetrics_bias,
+    modelMetrics_explainability,
+    modelMetrics_modelDataQuality,
+    modelMetrics_modelQuality,
+
+    -- * ModelPackage
+    ModelPackage (..),
+    newModelPackage,
+    modelPackage_additionalInferenceSpecifications,
+    modelPackage_approvalDescription,
+    modelPackage_certifyForMarketplace,
+    modelPackage_createdBy,
+    modelPackage_creationTime,
+    modelPackage_customerMetadataProperties,
+    modelPackage_domain,
+    modelPackage_driftCheckBaselines,
+    modelPackage_inferenceSpecification,
+    modelPackage_lastModifiedBy,
+    modelPackage_lastModifiedTime,
+    modelPackage_metadataProperties,
+    modelPackage_modelApprovalStatus,
+    modelPackage_modelMetrics,
+    modelPackage_modelPackageArn,
+    modelPackage_modelPackageDescription,
+    modelPackage_modelPackageGroupName,
+    modelPackage_modelPackageName,
+    modelPackage_modelPackageStatus,
+    modelPackage_modelPackageStatusDetails,
+    modelPackage_modelPackageVersion,
+    modelPackage_samplePayloadUrl,
+    modelPackage_sourceAlgorithmSpecification,
+    modelPackage_tags,
+    modelPackage_task,
+    modelPackage_validationSpecification,
+
+    -- * ModelPackageContainerDefinition
+    ModelPackageContainerDefinition (..),
+    newModelPackageContainerDefinition,
+    modelPackageContainerDefinition_containerHostname,
+    modelPackageContainerDefinition_environment,
+    modelPackageContainerDefinition_framework,
+    modelPackageContainerDefinition_frameworkVersion,
+    modelPackageContainerDefinition_imageDigest,
+    modelPackageContainerDefinition_modelDataUrl,
+    modelPackageContainerDefinition_modelInput,
+    modelPackageContainerDefinition_nearestModelName,
+    modelPackageContainerDefinition_productId,
+    modelPackageContainerDefinition_image,
+
+    -- * ModelPackageGroup
+    ModelPackageGroup (..),
+    newModelPackageGroup,
+    modelPackageGroup_createdBy,
+    modelPackageGroup_creationTime,
+    modelPackageGroup_modelPackageGroupArn,
+    modelPackageGroup_modelPackageGroupDescription,
+    modelPackageGroup_modelPackageGroupName,
+    modelPackageGroup_modelPackageGroupStatus,
+    modelPackageGroup_tags,
+
+    -- * ModelPackageGroupSummary
+    ModelPackageGroupSummary (..),
+    newModelPackageGroupSummary,
+    modelPackageGroupSummary_modelPackageGroupDescription,
+    modelPackageGroupSummary_modelPackageGroupName,
+    modelPackageGroupSummary_modelPackageGroupArn,
+    modelPackageGroupSummary_creationTime,
+    modelPackageGroupSummary_modelPackageGroupStatus,
+
+    -- * ModelPackageStatusDetails
+    ModelPackageStatusDetails (..),
+    newModelPackageStatusDetails,
+    modelPackageStatusDetails_imageScanStatuses,
+    modelPackageStatusDetails_validationStatuses,
+
+    -- * ModelPackageStatusItem
+    ModelPackageStatusItem (..),
+    newModelPackageStatusItem,
+    modelPackageStatusItem_failureReason,
+    modelPackageStatusItem_name,
+    modelPackageStatusItem_status,
+
+    -- * ModelPackageSummary
+    ModelPackageSummary (..),
+    newModelPackageSummary,
+    modelPackageSummary_modelApprovalStatus,
+    modelPackageSummary_modelPackageDescription,
+    modelPackageSummary_modelPackageGroupName,
+    modelPackageSummary_modelPackageVersion,
+    modelPackageSummary_modelPackageName,
+    modelPackageSummary_modelPackageArn,
+    modelPackageSummary_creationTime,
+    modelPackageSummary_modelPackageStatus,
+
+    -- * ModelPackageValidationProfile
+    ModelPackageValidationProfile (..),
+    newModelPackageValidationProfile,
+    modelPackageValidationProfile_profileName,
+    modelPackageValidationProfile_transformJobDefinition,
+
+    -- * ModelPackageValidationSpecification
+    ModelPackageValidationSpecification (..),
+    newModelPackageValidationSpecification,
+    modelPackageValidationSpecification_validationRole,
+    modelPackageValidationSpecification_validationProfiles,
+
+    -- * ModelQuality
+    ModelQuality (..),
+    newModelQuality,
+    modelQuality_constraints,
+    modelQuality_statistics,
+
+    -- * ModelQualityAppSpecification
+    ModelQualityAppSpecification (..),
+    newModelQualityAppSpecification,
+    modelQualityAppSpecification_containerArguments,
+    modelQualityAppSpecification_containerEntrypoint,
+    modelQualityAppSpecification_environment,
+    modelQualityAppSpecification_postAnalyticsProcessorSourceUri,
+    modelQualityAppSpecification_problemType,
+    modelQualityAppSpecification_recordPreprocessorSourceUri,
+    modelQualityAppSpecification_imageUri,
+
+    -- * ModelQualityBaselineConfig
+    ModelQualityBaselineConfig (..),
+    newModelQualityBaselineConfig,
+    modelQualityBaselineConfig_baseliningJobName,
+    modelQualityBaselineConfig_constraintsResource,
+
+    -- * ModelQualityJobInput
+    ModelQualityJobInput (..),
+    newModelQualityJobInput,
+    modelQualityJobInput_batchTransformInput,
+    modelQualityJobInput_endpointInput,
+    modelQualityJobInput_groundTruthS3Input,
+
+    -- * ModelStepMetadata
+    ModelStepMetadata (..),
+    newModelStepMetadata,
+    modelStepMetadata_arn,
+
+    -- * ModelSummary
+    ModelSummary (..),
+    newModelSummary,
+    modelSummary_modelName,
+    modelSummary_modelArn,
+    modelSummary_creationTime,
+
+    -- * ModelVariantConfig
+    ModelVariantConfig (..),
+    newModelVariantConfig,
+    modelVariantConfig_modelName,
+    modelVariantConfig_variantName,
+    modelVariantConfig_infrastructureConfig,
+
+    -- * ModelVariantConfigSummary
+    ModelVariantConfigSummary (..),
+    newModelVariantConfigSummary,
+    modelVariantConfigSummary_modelName,
+    modelVariantConfigSummary_variantName,
+    modelVariantConfigSummary_infrastructureConfig,
+    modelVariantConfigSummary_status,
+
+    -- * MonitoringAlertActions
+    MonitoringAlertActions (..),
+    newMonitoringAlertActions,
+    monitoringAlertActions_modelDashboardIndicator,
+
+    -- * MonitoringAlertHistorySummary
+    MonitoringAlertHistorySummary (..),
+    newMonitoringAlertHistorySummary,
+    monitoringAlertHistorySummary_monitoringScheduleName,
+    monitoringAlertHistorySummary_monitoringAlertName,
+    monitoringAlertHistorySummary_creationTime,
+    monitoringAlertHistorySummary_alertStatus,
+
+    -- * MonitoringAlertSummary
+    MonitoringAlertSummary (..),
+    newMonitoringAlertSummary,
+    monitoringAlertSummary_monitoringAlertName,
+    monitoringAlertSummary_creationTime,
+    monitoringAlertSummary_lastModifiedTime,
+    monitoringAlertSummary_alertStatus,
+    monitoringAlertSummary_datapointsToAlert,
+    monitoringAlertSummary_evaluationPeriod,
+    monitoringAlertSummary_actions,
+
+    -- * MonitoringAppSpecification
+    MonitoringAppSpecification (..),
+    newMonitoringAppSpecification,
+    monitoringAppSpecification_containerArguments,
+    monitoringAppSpecification_containerEntrypoint,
+    monitoringAppSpecification_postAnalyticsProcessorSourceUri,
+    monitoringAppSpecification_recordPreprocessorSourceUri,
+    monitoringAppSpecification_imageUri,
+
+    -- * MonitoringBaselineConfig
+    MonitoringBaselineConfig (..),
+    newMonitoringBaselineConfig,
+    monitoringBaselineConfig_baseliningJobName,
+    monitoringBaselineConfig_constraintsResource,
+    monitoringBaselineConfig_statisticsResource,
+
+    -- * MonitoringClusterConfig
+    MonitoringClusterConfig (..),
+    newMonitoringClusterConfig,
+    monitoringClusterConfig_volumeKmsKeyId,
+    monitoringClusterConfig_instanceCount,
+    monitoringClusterConfig_instanceType,
+    monitoringClusterConfig_volumeSizeInGB,
+
+    -- * MonitoringConstraintsResource
+    MonitoringConstraintsResource (..),
+    newMonitoringConstraintsResource,
+    monitoringConstraintsResource_s3Uri,
+
+    -- * MonitoringCsvDatasetFormat
+    MonitoringCsvDatasetFormat (..),
+    newMonitoringCsvDatasetFormat,
+    monitoringCsvDatasetFormat_header,
+
+    -- * MonitoringDatasetFormat
+    MonitoringDatasetFormat (..),
+    newMonitoringDatasetFormat,
+    monitoringDatasetFormat_csv,
+    monitoringDatasetFormat_json,
+    monitoringDatasetFormat_parquet,
+
+    -- * MonitoringExecutionSummary
+    MonitoringExecutionSummary (..),
+    newMonitoringExecutionSummary,
+    monitoringExecutionSummary_endpointName,
+    monitoringExecutionSummary_failureReason,
+    monitoringExecutionSummary_monitoringJobDefinitionName,
+    monitoringExecutionSummary_monitoringType,
+    monitoringExecutionSummary_processingJobArn,
+    monitoringExecutionSummary_monitoringScheduleName,
+    monitoringExecutionSummary_scheduledTime,
+    monitoringExecutionSummary_creationTime,
+    monitoringExecutionSummary_lastModifiedTime,
+    monitoringExecutionSummary_monitoringExecutionStatus,
+
+    -- * MonitoringGroundTruthS3Input
+    MonitoringGroundTruthS3Input (..),
+    newMonitoringGroundTruthS3Input,
+    monitoringGroundTruthS3Input_s3Uri,
+
+    -- * MonitoringInput
+    MonitoringInput (..),
+    newMonitoringInput,
+    monitoringInput_batchTransformInput,
+    monitoringInput_endpointInput,
+
+    -- * MonitoringJobDefinition
+    MonitoringJobDefinition (..),
+    newMonitoringJobDefinition,
+    monitoringJobDefinition_baselineConfig,
+    monitoringJobDefinition_environment,
+    monitoringJobDefinition_networkConfig,
+    monitoringJobDefinition_stoppingCondition,
+    monitoringJobDefinition_monitoringInputs,
+    monitoringJobDefinition_monitoringOutputConfig,
+    monitoringJobDefinition_monitoringResources,
+    monitoringJobDefinition_monitoringAppSpecification,
+    monitoringJobDefinition_roleArn,
+
+    -- * MonitoringJobDefinitionSummary
+    MonitoringJobDefinitionSummary (..),
+    newMonitoringJobDefinitionSummary,
+    monitoringJobDefinitionSummary_monitoringJobDefinitionName,
+    monitoringJobDefinitionSummary_monitoringJobDefinitionArn,
+    monitoringJobDefinitionSummary_creationTime,
+    monitoringJobDefinitionSummary_endpointName,
+
+    -- * MonitoringJsonDatasetFormat
+    MonitoringJsonDatasetFormat (..),
+    newMonitoringJsonDatasetFormat,
+    monitoringJsonDatasetFormat_line,
+
+    -- * MonitoringNetworkConfig
+    MonitoringNetworkConfig (..),
+    newMonitoringNetworkConfig,
+    monitoringNetworkConfig_enableInterContainerTrafficEncryption,
+    monitoringNetworkConfig_enableNetworkIsolation,
+    monitoringNetworkConfig_vpcConfig,
+
+    -- * MonitoringOutput
+    MonitoringOutput (..),
+    newMonitoringOutput,
+    monitoringOutput_s3Output,
+
+    -- * MonitoringOutputConfig
+    MonitoringOutputConfig (..),
+    newMonitoringOutputConfig,
+    monitoringOutputConfig_kmsKeyId,
+    monitoringOutputConfig_monitoringOutputs,
+
+    -- * MonitoringParquetDatasetFormat
+    MonitoringParquetDatasetFormat (..),
+    newMonitoringParquetDatasetFormat,
+
+    -- * MonitoringResources
+    MonitoringResources (..),
+    newMonitoringResources,
+    monitoringResources_clusterConfig,
+
+    -- * MonitoringS3Output
+    MonitoringS3Output (..),
+    newMonitoringS3Output,
+    monitoringS3Output_s3UploadMode,
+    monitoringS3Output_s3Uri,
+    monitoringS3Output_localPath,
+
+    -- * MonitoringSchedule
+    MonitoringSchedule (..),
+    newMonitoringSchedule,
+    monitoringSchedule_creationTime,
+    monitoringSchedule_endpointName,
+    monitoringSchedule_failureReason,
+    monitoringSchedule_lastModifiedTime,
+    monitoringSchedule_lastMonitoringExecutionSummary,
+    monitoringSchedule_monitoringScheduleArn,
+    monitoringSchedule_monitoringScheduleConfig,
+    monitoringSchedule_monitoringScheduleName,
+    monitoringSchedule_monitoringScheduleStatus,
+    monitoringSchedule_monitoringType,
+    monitoringSchedule_tags,
+
+    -- * MonitoringScheduleConfig
+    MonitoringScheduleConfig (..),
+    newMonitoringScheduleConfig,
+    monitoringScheduleConfig_monitoringJobDefinition,
+    monitoringScheduleConfig_monitoringJobDefinitionName,
+    monitoringScheduleConfig_monitoringType,
+    monitoringScheduleConfig_scheduleConfig,
+
+    -- * MonitoringScheduleSummary
+    MonitoringScheduleSummary (..),
+    newMonitoringScheduleSummary,
+    monitoringScheduleSummary_endpointName,
+    monitoringScheduleSummary_monitoringJobDefinitionName,
+    monitoringScheduleSummary_monitoringType,
+    monitoringScheduleSummary_monitoringScheduleName,
+    monitoringScheduleSummary_monitoringScheduleArn,
+    monitoringScheduleSummary_creationTime,
+    monitoringScheduleSummary_lastModifiedTime,
+    monitoringScheduleSummary_monitoringScheduleStatus,
+
+    -- * MonitoringStatisticsResource
+    MonitoringStatisticsResource (..),
+    newMonitoringStatisticsResource,
+    monitoringStatisticsResource_s3Uri,
+
+    -- * MonitoringStoppingCondition
+    MonitoringStoppingCondition (..),
+    newMonitoringStoppingCondition,
+    monitoringStoppingCondition_maxRuntimeInSeconds,
+
+    -- * MultiModelConfig
+    MultiModelConfig (..),
+    newMultiModelConfig,
+    multiModelConfig_modelCacheSetting,
+
+    -- * NeoVpcConfig
+    NeoVpcConfig (..),
+    newNeoVpcConfig,
+    neoVpcConfig_securityGroupIds,
+    neoVpcConfig_subnets,
+
+    -- * NestedFilters
+    NestedFilters (..),
+    newNestedFilters,
+    nestedFilters_nestedPropertyName,
+    nestedFilters_filters,
+
+    -- * NetworkConfig
+    NetworkConfig (..),
+    newNetworkConfig,
+    networkConfig_enableInterContainerTrafficEncryption,
+    networkConfig_enableNetworkIsolation,
+    networkConfig_vpcConfig,
+
+    -- * NotebookInstanceLifecycleConfigSummary
+    NotebookInstanceLifecycleConfigSummary (..),
+    newNotebookInstanceLifecycleConfigSummary,
+    notebookInstanceLifecycleConfigSummary_creationTime,
+    notebookInstanceLifecycleConfigSummary_lastModifiedTime,
+    notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigName,
+    notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigArn,
+
+    -- * NotebookInstanceLifecycleHook
+    NotebookInstanceLifecycleHook (..),
+    newNotebookInstanceLifecycleHook,
+    notebookInstanceLifecycleHook_content,
+
+    -- * NotebookInstanceSummary
+    NotebookInstanceSummary (..),
+    newNotebookInstanceSummary,
+    notebookInstanceSummary_additionalCodeRepositories,
+    notebookInstanceSummary_creationTime,
+    notebookInstanceSummary_defaultCodeRepository,
+    notebookInstanceSummary_instanceType,
+    notebookInstanceSummary_lastModifiedTime,
+    notebookInstanceSummary_notebookInstanceLifecycleConfigName,
+    notebookInstanceSummary_notebookInstanceStatus,
+    notebookInstanceSummary_url,
+    notebookInstanceSummary_notebookInstanceName,
+    notebookInstanceSummary_notebookInstanceArn,
+
+    -- * NotificationConfiguration
+    NotificationConfiguration (..),
+    newNotificationConfiguration,
+    notificationConfiguration_notificationTopicArn,
+
+    -- * ObjectiveStatusCounters
+    ObjectiveStatusCounters (..),
+    newObjectiveStatusCounters,
+    objectiveStatusCounters_failed,
+    objectiveStatusCounters_pending,
+    objectiveStatusCounters_succeeded,
+
+    -- * OfflineStoreConfig
+    OfflineStoreConfig (..),
+    newOfflineStoreConfig,
+    offlineStoreConfig_dataCatalogConfig,
+    offlineStoreConfig_disableGlueTableCreation,
+    offlineStoreConfig_tableFormat,
+    offlineStoreConfig_s3StorageConfig,
+
+    -- * OfflineStoreStatus
+    OfflineStoreStatus (..),
+    newOfflineStoreStatus,
+    offlineStoreStatus_blockedReason,
+    offlineStoreStatus_status,
+
+    -- * OidcConfig
+    OidcConfig (..),
+    newOidcConfig,
+    oidcConfig_clientId,
+    oidcConfig_clientSecret,
+    oidcConfig_issuer,
+    oidcConfig_authorizationEndpoint,
+    oidcConfig_tokenEndpoint,
+    oidcConfig_userInfoEndpoint,
+    oidcConfig_logoutEndpoint,
+    oidcConfig_jwksUri,
+
+    -- * OidcConfigForResponse
+    OidcConfigForResponse (..),
+    newOidcConfigForResponse,
+    oidcConfigForResponse_authorizationEndpoint,
+    oidcConfigForResponse_clientId,
+    oidcConfigForResponse_issuer,
+    oidcConfigForResponse_jwksUri,
+    oidcConfigForResponse_logoutEndpoint,
+    oidcConfigForResponse_tokenEndpoint,
+    oidcConfigForResponse_userInfoEndpoint,
+
+    -- * OidcMemberDefinition
+    OidcMemberDefinition (..),
+    newOidcMemberDefinition,
+    oidcMemberDefinition_groups,
+
+    -- * OnlineStoreConfig
+    OnlineStoreConfig (..),
+    newOnlineStoreConfig,
+    onlineStoreConfig_enableOnlineStore,
+    onlineStoreConfig_securityConfig,
+
+    -- * OnlineStoreSecurityConfig
+    OnlineStoreSecurityConfig (..),
+    newOnlineStoreSecurityConfig,
+    onlineStoreSecurityConfig_kmsKeyId,
+
+    -- * OutputConfig
+    OutputConfig (..),
+    newOutputConfig,
+    outputConfig_compilerOptions,
+    outputConfig_kmsKeyId,
+    outputConfig_targetDevice,
+    outputConfig_targetPlatform,
+    outputConfig_s3OutputLocation,
+
+    -- * OutputDataConfig
+    OutputDataConfig (..),
+    newOutputDataConfig,
+    outputDataConfig_kmsKeyId,
+    outputDataConfig_s3OutputPath,
+
+    -- * OutputParameter
+    OutputParameter (..),
+    newOutputParameter,
+    outputParameter_name,
+    outputParameter_value,
+
+    -- * ParallelismConfiguration
+    ParallelismConfiguration (..),
+    newParallelismConfiguration,
+    parallelismConfiguration_maxParallelExecutionSteps,
+
+    -- * Parameter
+    Parameter (..),
+    newParameter,
+    parameter_name,
+    parameter_value,
+
+    -- * ParameterRange
+    ParameterRange (..),
+    newParameterRange,
+    parameterRange_categoricalParameterRangeSpecification,
+    parameterRange_continuousParameterRangeSpecification,
+    parameterRange_integerParameterRangeSpecification,
+
+    -- * ParameterRanges
+    ParameterRanges (..),
+    newParameterRanges,
+    parameterRanges_categoricalParameterRanges,
+    parameterRanges_continuousParameterRanges,
+    parameterRanges_integerParameterRanges,
+
+    -- * Parent
+    Parent (..),
+    newParent,
+    parent_experimentName,
+    parent_trialName,
+
+    -- * ParentHyperParameterTuningJob
+    ParentHyperParameterTuningJob (..),
+    newParentHyperParameterTuningJob,
+    parentHyperParameterTuningJob_hyperParameterTuningJobName,
+
+    -- * PendingDeploymentSummary
+    PendingDeploymentSummary (..),
+    newPendingDeploymentSummary,
+    pendingDeploymentSummary_productionVariants,
+    pendingDeploymentSummary_shadowProductionVariants,
+    pendingDeploymentSummary_startTime,
+    pendingDeploymentSummary_endpointConfigName,
+
+    -- * PendingProductionVariantSummary
+    PendingProductionVariantSummary (..),
+    newPendingProductionVariantSummary,
+    pendingProductionVariantSummary_acceleratorType,
+    pendingProductionVariantSummary_currentInstanceCount,
+    pendingProductionVariantSummary_currentServerlessConfig,
+    pendingProductionVariantSummary_currentWeight,
+    pendingProductionVariantSummary_deployedImages,
+    pendingProductionVariantSummary_desiredInstanceCount,
+    pendingProductionVariantSummary_desiredServerlessConfig,
+    pendingProductionVariantSummary_desiredWeight,
+    pendingProductionVariantSummary_instanceType,
+    pendingProductionVariantSummary_variantStatus,
+    pendingProductionVariantSummary_variantName,
+
+    -- * Phase
+    Phase (..),
+    newPhase,
+    phase_durationInSeconds,
+    phase_initialNumberOfUsers,
+    phase_spawnRate,
+
+    -- * Pipeline
+    Pipeline (..),
+    newPipeline,
+    pipeline_createdBy,
+    pipeline_creationTime,
+    pipeline_lastModifiedBy,
+    pipeline_lastModifiedTime,
+    pipeline_lastRunTime,
+    pipeline_parallelismConfiguration,
+    pipeline_pipelineArn,
+    pipeline_pipelineDescription,
+    pipeline_pipelineDisplayName,
+    pipeline_pipelineName,
+    pipeline_pipelineStatus,
+    pipeline_roleArn,
+    pipeline_tags,
+
+    -- * PipelineDefinitionS3Location
+    PipelineDefinitionS3Location (..),
+    newPipelineDefinitionS3Location,
+    pipelineDefinitionS3Location_versionId,
+    pipelineDefinitionS3Location_bucket,
+    pipelineDefinitionS3Location_objectKey,
+
+    -- * PipelineExecution
+    PipelineExecution (..),
+    newPipelineExecution,
+    pipelineExecution_createdBy,
+    pipelineExecution_creationTime,
+    pipelineExecution_failureReason,
+    pipelineExecution_lastModifiedBy,
+    pipelineExecution_lastModifiedTime,
+    pipelineExecution_parallelismConfiguration,
+    pipelineExecution_pipelineArn,
+    pipelineExecution_pipelineExecutionArn,
+    pipelineExecution_pipelineExecutionDescription,
+    pipelineExecution_pipelineExecutionDisplayName,
+    pipelineExecution_pipelineExecutionStatus,
+    pipelineExecution_pipelineExperimentConfig,
+    pipelineExecution_pipelineParameters,
+
+    -- * PipelineExecutionStep
+    PipelineExecutionStep (..),
+    newPipelineExecutionStep,
+    pipelineExecutionStep_attemptCount,
+    pipelineExecutionStep_cacheHitResult,
+    pipelineExecutionStep_endTime,
+    pipelineExecutionStep_failureReason,
+    pipelineExecutionStep_metadata,
+    pipelineExecutionStep_startTime,
+    pipelineExecutionStep_stepDescription,
+    pipelineExecutionStep_stepDisplayName,
+    pipelineExecutionStep_stepName,
+    pipelineExecutionStep_stepStatus,
+
+    -- * PipelineExecutionStepMetadata
+    PipelineExecutionStepMetadata (..),
+    newPipelineExecutionStepMetadata,
+    pipelineExecutionStepMetadata_autoMLJob,
+    pipelineExecutionStepMetadata_callback,
+    pipelineExecutionStepMetadata_clarifyCheck,
+    pipelineExecutionStepMetadata_condition,
+    pipelineExecutionStepMetadata_emr,
+    pipelineExecutionStepMetadata_fail,
+    pipelineExecutionStepMetadata_lambda,
+    pipelineExecutionStepMetadata_model,
+    pipelineExecutionStepMetadata_processingJob,
+    pipelineExecutionStepMetadata_qualityCheck,
+    pipelineExecutionStepMetadata_registerModel,
+    pipelineExecutionStepMetadata_trainingJob,
+    pipelineExecutionStepMetadata_transformJob,
+    pipelineExecutionStepMetadata_tuningJob,
+
+    -- * PipelineExecutionSummary
+    PipelineExecutionSummary (..),
+    newPipelineExecutionSummary,
+    pipelineExecutionSummary_pipelineExecutionArn,
+    pipelineExecutionSummary_pipelineExecutionDescription,
+    pipelineExecutionSummary_pipelineExecutionDisplayName,
+    pipelineExecutionSummary_pipelineExecutionFailureReason,
+    pipelineExecutionSummary_pipelineExecutionStatus,
+    pipelineExecutionSummary_startTime,
+
+    -- * PipelineExperimentConfig
+    PipelineExperimentConfig (..),
+    newPipelineExperimentConfig,
+    pipelineExperimentConfig_experimentName,
+    pipelineExperimentConfig_trialName,
+
+    -- * PipelineSummary
+    PipelineSummary (..),
+    newPipelineSummary,
+    pipelineSummary_creationTime,
+    pipelineSummary_lastExecutionTime,
+    pipelineSummary_lastModifiedTime,
+    pipelineSummary_pipelineArn,
+    pipelineSummary_pipelineDescription,
+    pipelineSummary_pipelineDisplayName,
+    pipelineSummary_pipelineName,
+    pipelineSummary_roleArn,
+
+    -- * ProcessingClusterConfig
+    ProcessingClusterConfig (..),
+    newProcessingClusterConfig,
+    processingClusterConfig_volumeKmsKeyId,
+    processingClusterConfig_instanceCount,
+    processingClusterConfig_instanceType,
+    processingClusterConfig_volumeSizeInGB,
+
+    -- * ProcessingFeatureStoreOutput
+    ProcessingFeatureStoreOutput (..),
+    newProcessingFeatureStoreOutput,
+    processingFeatureStoreOutput_featureGroupName,
+
+    -- * ProcessingInput
+    ProcessingInput (..),
+    newProcessingInput,
+    processingInput_appManaged,
+    processingInput_datasetDefinition,
+    processingInput_s3Input,
+    processingInput_inputName,
+
+    -- * ProcessingJob
+    ProcessingJob (..),
+    newProcessingJob,
+    processingJob_appSpecification,
+    processingJob_autoMLJobArn,
+    processingJob_creationTime,
+    processingJob_environment,
+    processingJob_exitMessage,
+    processingJob_experimentConfig,
+    processingJob_failureReason,
+    processingJob_lastModifiedTime,
+    processingJob_monitoringScheduleArn,
+    processingJob_networkConfig,
+    processingJob_processingEndTime,
+    processingJob_processingInputs,
+    processingJob_processingJobArn,
+    processingJob_processingJobName,
+    processingJob_processingJobStatus,
+    processingJob_processingOutputConfig,
+    processingJob_processingResources,
+    processingJob_processingStartTime,
+    processingJob_roleArn,
+    processingJob_stoppingCondition,
+    processingJob_tags,
+    processingJob_trainingJobArn,
+
+    -- * ProcessingJobStepMetadata
+    ProcessingJobStepMetadata (..),
+    newProcessingJobStepMetadata,
+    processingJobStepMetadata_arn,
+
+    -- * ProcessingJobSummary
+    ProcessingJobSummary (..),
+    newProcessingJobSummary,
+    processingJobSummary_exitMessage,
+    processingJobSummary_failureReason,
+    processingJobSummary_lastModifiedTime,
+    processingJobSummary_processingEndTime,
+    processingJobSummary_processingJobName,
+    processingJobSummary_processingJobArn,
+    processingJobSummary_creationTime,
+    processingJobSummary_processingJobStatus,
+
+    -- * ProcessingOutput
+    ProcessingOutput (..),
+    newProcessingOutput,
+    processingOutput_appManaged,
+    processingOutput_featureStoreOutput,
+    processingOutput_s3Output,
+    processingOutput_outputName,
+
+    -- * ProcessingOutputConfig
+    ProcessingOutputConfig (..),
+    newProcessingOutputConfig,
+    processingOutputConfig_kmsKeyId,
+    processingOutputConfig_outputs,
+
+    -- * ProcessingResources
+    ProcessingResources (..),
+    newProcessingResources,
+    processingResources_clusterConfig,
+
+    -- * ProcessingS3Input
+    ProcessingS3Input (..),
+    newProcessingS3Input,
+    processingS3Input_localPath,
+    processingS3Input_s3CompressionType,
+    processingS3Input_s3DataDistributionType,
+    processingS3Input_s3InputMode,
+    processingS3Input_s3Uri,
+    processingS3Input_s3DataType,
+
+    -- * ProcessingS3Output
+    ProcessingS3Output (..),
+    newProcessingS3Output,
+    processingS3Output_s3Uri,
+    processingS3Output_localPath,
+    processingS3Output_s3UploadMode,
+
+    -- * ProcessingStoppingCondition
+    ProcessingStoppingCondition (..),
+    newProcessingStoppingCondition,
+    processingStoppingCondition_maxRuntimeInSeconds,
+
+    -- * ProductionVariant
+    ProductionVariant (..),
+    newProductionVariant,
+    productionVariant_acceleratorType,
+    productionVariant_containerStartupHealthCheckTimeoutInSeconds,
+    productionVariant_coreDumpConfig,
+    productionVariant_initialInstanceCount,
+    productionVariant_initialVariantWeight,
+    productionVariant_instanceType,
+    productionVariant_modelDataDownloadTimeoutInSeconds,
+    productionVariant_serverlessConfig,
+    productionVariant_volumeSizeInGB,
+    productionVariant_variantName,
+    productionVariant_modelName,
+
+    -- * ProductionVariantCoreDumpConfig
+    ProductionVariantCoreDumpConfig (..),
+    newProductionVariantCoreDumpConfig,
+    productionVariantCoreDumpConfig_kmsKeyId,
+    productionVariantCoreDumpConfig_destinationS3Uri,
+
+    -- * ProductionVariantServerlessConfig
+    ProductionVariantServerlessConfig (..),
+    newProductionVariantServerlessConfig,
+    productionVariantServerlessConfig_memorySizeInMB,
+    productionVariantServerlessConfig_maxConcurrency,
+
+    -- * ProductionVariantStatus
+    ProductionVariantStatus (..),
+    newProductionVariantStatus,
+    productionVariantStatus_startTime,
+    productionVariantStatus_statusMessage,
+    productionVariantStatus_status,
+
+    -- * ProductionVariantSummary
+    ProductionVariantSummary (..),
+    newProductionVariantSummary,
+    productionVariantSummary_currentInstanceCount,
+    productionVariantSummary_currentServerlessConfig,
+    productionVariantSummary_currentWeight,
+    productionVariantSummary_deployedImages,
+    productionVariantSummary_desiredInstanceCount,
+    productionVariantSummary_desiredServerlessConfig,
+    productionVariantSummary_desiredWeight,
+    productionVariantSummary_variantStatus,
+    productionVariantSummary_variantName,
+
+    -- * ProfilerConfig
+    ProfilerConfig (..),
+    newProfilerConfig,
+    profilerConfig_disableProfiler,
+    profilerConfig_profilingIntervalInMilliseconds,
+    profilerConfig_profilingParameters,
+    profilerConfig_s3OutputPath,
+
+    -- * ProfilerConfigForUpdate
+    ProfilerConfigForUpdate (..),
+    newProfilerConfigForUpdate,
+    profilerConfigForUpdate_disableProfiler,
+    profilerConfigForUpdate_profilingIntervalInMilliseconds,
+    profilerConfigForUpdate_profilingParameters,
+    profilerConfigForUpdate_s3OutputPath,
+
+    -- * ProfilerRuleConfiguration
+    ProfilerRuleConfiguration (..),
+    newProfilerRuleConfiguration,
+    profilerRuleConfiguration_instanceType,
+    profilerRuleConfiguration_localPath,
+    profilerRuleConfiguration_ruleParameters,
+    profilerRuleConfiguration_s3OutputPath,
+    profilerRuleConfiguration_volumeSizeInGB,
+    profilerRuleConfiguration_ruleConfigurationName,
+    profilerRuleConfiguration_ruleEvaluatorImage,
+
+    -- * ProfilerRuleEvaluationStatus
+    ProfilerRuleEvaluationStatus (..),
+    newProfilerRuleEvaluationStatus,
+    profilerRuleEvaluationStatus_lastModifiedTime,
+    profilerRuleEvaluationStatus_ruleConfigurationName,
+    profilerRuleEvaluationStatus_ruleEvaluationJobArn,
+    profilerRuleEvaluationStatus_ruleEvaluationStatus,
+    profilerRuleEvaluationStatus_statusDetails,
+
+    -- * Project
+    Project (..),
+    newProject,
+    project_createdBy,
+    project_creationTime,
+    project_lastModifiedBy,
+    project_lastModifiedTime,
+    project_projectArn,
+    project_projectDescription,
+    project_projectId,
+    project_projectName,
+    project_projectStatus,
+    project_serviceCatalogProvisionedProductDetails,
+    project_serviceCatalogProvisioningDetails,
+    project_tags,
+
+    -- * ProjectSummary
+    ProjectSummary (..),
+    newProjectSummary,
+    projectSummary_projectDescription,
+    projectSummary_projectName,
+    projectSummary_projectArn,
+    projectSummary_projectId,
+    projectSummary_creationTime,
+    projectSummary_projectStatus,
+
+    -- * PropertyNameQuery
+    PropertyNameQuery (..),
+    newPropertyNameQuery,
+    propertyNameQuery_propertyNameHint,
+
+    -- * PropertyNameSuggestion
+    PropertyNameSuggestion (..),
+    newPropertyNameSuggestion,
+    propertyNameSuggestion_propertyName,
+
+    -- * ProvisioningParameter
+    ProvisioningParameter (..),
+    newProvisioningParameter,
+    provisioningParameter_key,
+    provisioningParameter_value,
+
+    -- * PublicWorkforceTaskPrice
+    PublicWorkforceTaskPrice (..),
+    newPublicWorkforceTaskPrice,
+    publicWorkforceTaskPrice_amountInUsd,
+
+    -- * QualityCheckStepMetadata
+    QualityCheckStepMetadata (..),
+    newQualityCheckStepMetadata,
+    qualityCheckStepMetadata_baselineUsedForDriftCheckConstraints,
+    qualityCheckStepMetadata_baselineUsedForDriftCheckStatistics,
+    qualityCheckStepMetadata_calculatedBaselineConstraints,
+    qualityCheckStepMetadata_calculatedBaselineStatistics,
+    qualityCheckStepMetadata_checkJobArn,
+    qualityCheckStepMetadata_checkType,
+    qualityCheckStepMetadata_modelPackageGroupName,
+    qualityCheckStepMetadata_registerNewBaseline,
+    qualityCheckStepMetadata_skipCheck,
+    qualityCheckStepMetadata_violationReport,
+
+    -- * QueryFilters
+    QueryFilters (..),
+    newQueryFilters,
+    queryFilters_createdAfter,
+    queryFilters_createdBefore,
+    queryFilters_lineageTypes,
+    queryFilters_modifiedAfter,
+    queryFilters_modifiedBefore,
+    queryFilters_properties,
+    queryFilters_types,
+
+    -- * RSessionAppSettings
+    RSessionAppSettings (..),
+    newRSessionAppSettings,
+    rSessionAppSettings_customImages,
+    rSessionAppSettings_defaultResourceSpec,
+
+    -- * RStudioServerProAppSettings
+    RStudioServerProAppSettings (..),
+    newRStudioServerProAppSettings,
+    rStudioServerProAppSettings_accessStatus,
+    rStudioServerProAppSettings_userGroup,
+
+    -- * RStudioServerProDomainSettings
+    RStudioServerProDomainSettings (..),
+    newRStudioServerProDomainSettings,
+    rStudioServerProDomainSettings_defaultResourceSpec,
+    rStudioServerProDomainSettings_rStudioConnectUrl,
+    rStudioServerProDomainSettings_rStudioPackageManagerUrl,
+    rStudioServerProDomainSettings_domainExecutionRoleArn,
+
+    -- * RStudioServerProDomainSettingsForUpdate
+    RStudioServerProDomainSettingsForUpdate (..),
+    newRStudioServerProDomainSettingsForUpdate,
+    rStudioServerProDomainSettingsForUpdate_defaultResourceSpec,
+    rStudioServerProDomainSettingsForUpdate_rStudioConnectUrl,
+    rStudioServerProDomainSettingsForUpdate_rStudioPackageManagerUrl,
+    rStudioServerProDomainSettingsForUpdate_domainExecutionRoleArn,
+
+    -- * RealTimeInferenceConfig
+    RealTimeInferenceConfig (..),
+    newRealTimeInferenceConfig,
+    realTimeInferenceConfig_instanceType,
+    realTimeInferenceConfig_instanceCount,
+
+    -- * RecommendationJobCompiledOutputConfig
+    RecommendationJobCompiledOutputConfig (..),
+    newRecommendationJobCompiledOutputConfig,
+    recommendationJobCompiledOutputConfig_s3OutputUri,
+
+    -- * RecommendationJobContainerConfig
+    RecommendationJobContainerConfig (..),
+    newRecommendationJobContainerConfig,
+    recommendationJobContainerConfig_domain,
+    recommendationJobContainerConfig_framework,
+    recommendationJobContainerConfig_frameworkVersion,
+    recommendationJobContainerConfig_nearestModelName,
+    recommendationJobContainerConfig_payloadConfig,
+    recommendationJobContainerConfig_supportedInstanceTypes,
+    recommendationJobContainerConfig_task,
+
+    -- * RecommendationJobInferenceBenchmark
+    RecommendationJobInferenceBenchmark (..),
+    newRecommendationJobInferenceBenchmark,
+    recommendationJobInferenceBenchmark_endpointConfiguration,
+    recommendationJobInferenceBenchmark_failureReason,
+    recommendationJobInferenceBenchmark_metrics,
+    recommendationJobInferenceBenchmark_modelConfiguration,
+
+    -- * RecommendationJobInputConfig
+    RecommendationJobInputConfig (..),
+    newRecommendationJobInputConfig,
+    recommendationJobInputConfig_containerConfig,
+    recommendationJobInputConfig_endpointConfigurations,
+    recommendationJobInputConfig_endpoints,
+    recommendationJobInputConfig_jobDurationInSeconds,
+    recommendationJobInputConfig_resourceLimit,
+    recommendationJobInputConfig_trafficPattern,
+    recommendationJobInputConfig_volumeKmsKeyId,
+    recommendationJobInputConfig_vpcConfig,
+    recommendationJobInputConfig_modelPackageVersionArn,
+
+    -- * RecommendationJobOutputConfig
+    RecommendationJobOutputConfig (..),
+    newRecommendationJobOutputConfig,
+    recommendationJobOutputConfig_compiledOutputConfig,
+    recommendationJobOutputConfig_kmsKeyId,
+
+    -- * RecommendationJobPayloadConfig
+    RecommendationJobPayloadConfig (..),
+    newRecommendationJobPayloadConfig,
+    recommendationJobPayloadConfig_samplePayloadUrl,
+    recommendationJobPayloadConfig_supportedContentTypes,
+
+    -- * RecommendationJobResourceLimit
+    RecommendationJobResourceLimit (..),
+    newRecommendationJobResourceLimit,
+    recommendationJobResourceLimit_maxNumberOfTests,
+    recommendationJobResourceLimit_maxParallelOfTests,
+
+    -- * RecommendationJobStoppingConditions
+    RecommendationJobStoppingConditions (..),
+    newRecommendationJobStoppingConditions,
+    recommendationJobStoppingConditions_maxInvocations,
+    recommendationJobStoppingConditions_modelLatencyThresholds,
+
+    -- * RecommendationJobVpcConfig
+    RecommendationJobVpcConfig (..),
+    newRecommendationJobVpcConfig,
+    recommendationJobVpcConfig_securityGroupIds,
+    recommendationJobVpcConfig_subnets,
+
+    -- * RecommendationMetrics
+    RecommendationMetrics (..),
+    newRecommendationMetrics,
+    recommendationMetrics_costPerHour,
+    recommendationMetrics_costPerInference,
+    recommendationMetrics_maxInvocations,
+    recommendationMetrics_modelLatency,
+
+    -- * RedshiftDatasetDefinition
+    RedshiftDatasetDefinition (..),
+    newRedshiftDatasetDefinition,
+    redshiftDatasetDefinition_kmsKeyId,
+    redshiftDatasetDefinition_outputCompression,
+    redshiftDatasetDefinition_clusterId,
+    redshiftDatasetDefinition_database,
+    redshiftDatasetDefinition_dbUser,
+    redshiftDatasetDefinition_queryString,
+    redshiftDatasetDefinition_clusterRoleArn,
+    redshiftDatasetDefinition_outputS3Uri,
+    redshiftDatasetDefinition_outputFormat,
+
+    -- * RegisterModelStepMetadata
+    RegisterModelStepMetadata (..),
+    newRegisterModelStepMetadata,
+    registerModelStepMetadata_arn,
+
+    -- * RenderableTask
+    RenderableTask (..),
+    newRenderableTask,
+    renderableTask_input,
+
+    -- * RenderingError
+    RenderingError (..),
+    newRenderingError,
+    renderingError_code,
+    renderingError_message,
+
+    -- * RepositoryAuthConfig
+    RepositoryAuthConfig (..),
+    newRepositoryAuthConfig,
+    repositoryAuthConfig_repositoryCredentialsProviderArn,
+
+    -- * ResolvedAttributes
+    ResolvedAttributes (..),
+    newResolvedAttributes,
+    resolvedAttributes_autoMLJobObjective,
+    resolvedAttributes_completionCriteria,
+    resolvedAttributes_problemType,
+
+    -- * ResourceConfig
+    ResourceConfig (..),
+    newResourceConfig,
+    resourceConfig_instanceCount,
+    resourceConfig_instanceGroups,
+    resourceConfig_instanceType,
+    resourceConfig_keepAlivePeriodInSeconds,
+    resourceConfig_volumeKmsKeyId,
+    resourceConfig_volumeSizeInGB,
+
+    -- * ResourceConfigForUpdate
+    ResourceConfigForUpdate (..),
+    newResourceConfigForUpdate,
+    resourceConfigForUpdate_keepAlivePeriodInSeconds,
+
+    -- * ResourceLimits
+    ResourceLimits (..),
+    newResourceLimits,
+    resourceLimits_maxNumberOfTrainingJobs,
+    resourceLimits_maxParallelTrainingJobs,
+
+    -- * ResourceSpec
+    ResourceSpec (..),
+    newResourceSpec,
+    resourceSpec_instanceType,
+    resourceSpec_lifecycleConfigArn,
+    resourceSpec_sageMakerImageArn,
+    resourceSpec_sageMakerImageVersionArn,
+
+    -- * RetentionPolicy
+    RetentionPolicy (..),
+    newRetentionPolicy,
+    retentionPolicy_homeEfsFileSystem,
+
+    -- * RetryStrategy
+    RetryStrategy (..),
+    newRetryStrategy,
+    retryStrategy_maximumRetryAttempts,
+
+    -- * S3DataSource
+    S3DataSource (..),
+    newS3DataSource,
+    s3DataSource_attributeNames,
+    s3DataSource_instanceGroupNames,
+    s3DataSource_s3DataDistributionType,
+    s3DataSource_s3DataType,
+    s3DataSource_s3Uri,
+
+    -- * S3StorageConfig
+    S3StorageConfig (..),
+    newS3StorageConfig,
+    s3StorageConfig_kmsKeyId,
+    s3StorageConfig_resolvedOutputS3Uri,
+    s3StorageConfig_s3Uri,
+
+    -- * ScheduleConfig
+    ScheduleConfig (..),
+    newScheduleConfig,
+    scheduleConfig_scheduleExpression,
+
+    -- * SearchExpression
+    SearchExpression (..),
+    newSearchExpression,
+    searchExpression_filters,
+    searchExpression_nestedFilters,
+    searchExpression_operator,
+    searchExpression_subExpressions,
+
+    -- * SearchRecord
+    SearchRecord (..),
+    newSearchRecord,
+    searchRecord_endpoint,
+    searchRecord_experiment,
+    searchRecord_featureGroup,
+    searchRecord_featureMetadata,
+    searchRecord_hyperParameterTuningJob,
+    searchRecord_model,
+    searchRecord_modelCard,
+    searchRecord_modelPackage,
+    searchRecord_modelPackageGroup,
+    searchRecord_pipeline,
+    searchRecord_pipelineExecution,
+    searchRecord_project,
+    searchRecord_trainingJob,
+    searchRecord_trial,
+    searchRecord_trialComponent,
+
+    -- * SecondaryStatusTransition
+    SecondaryStatusTransition (..),
+    newSecondaryStatusTransition,
+    secondaryStatusTransition_endTime,
+    secondaryStatusTransition_statusMessage,
+    secondaryStatusTransition_status,
+    secondaryStatusTransition_startTime,
+
+    -- * ServiceCatalogProvisionedProductDetails
+    ServiceCatalogProvisionedProductDetails (..),
+    newServiceCatalogProvisionedProductDetails,
+    serviceCatalogProvisionedProductDetails_provisionedProductId,
+    serviceCatalogProvisionedProductDetails_provisionedProductStatusMessage,
+
+    -- * ServiceCatalogProvisioningDetails
+    ServiceCatalogProvisioningDetails (..),
+    newServiceCatalogProvisioningDetails,
+    serviceCatalogProvisioningDetails_pathId,
+    serviceCatalogProvisioningDetails_provisioningArtifactId,
+    serviceCatalogProvisioningDetails_provisioningParameters,
+    serviceCatalogProvisioningDetails_productId,
+
+    -- * ServiceCatalogProvisioningUpdateDetails
+    ServiceCatalogProvisioningUpdateDetails (..),
+    newServiceCatalogProvisioningUpdateDetails,
+    serviceCatalogProvisioningUpdateDetails_provisioningArtifactId,
+    serviceCatalogProvisioningUpdateDetails_provisioningParameters,
+
+    -- * ShadowModeConfig
+    ShadowModeConfig (..),
+    newShadowModeConfig,
+    shadowModeConfig_sourceModelVariantName,
+    shadowModeConfig_shadowModelVariants,
+
+    -- * ShadowModelVariantConfig
+    ShadowModelVariantConfig (..),
+    newShadowModelVariantConfig,
+    shadowModelVariantConfig_shadowModelVariantName,
+    shadowModelVariantConfig_samplingPercentage,
+
+    -- * SharingSettings
+    SharingSettings (..),
+    newSharingSettings,
+    sharingSettings_notebookOutputOption,
+    sharingSettings_s3KmsKeyId,
+    sharingSettings_s3OutputPath,
+
+    -- * ShuffleConfig
+    ShuffleConfig (..),
+    newShuffleConfig,
+    shuffleConfig_seed,
+
+    -- * SourceAlgorithm
+    SourceAlgorithm (..),
+    newSourceAlgorithm,
+    sourceAlgorithm_modelDataUrl,
+    sourceAlgorithm_algorithmName,
+
+    -- * SourceAlgorithmSpecification
+    SourceAlgorithmSpecification (..),
+    newSourceAlgorithmSpecification,
+    sourceAlgorithmSpecification_sourceAlgorithms,
+
+    -- * SourceIpConfig
+    SourceIpConfig (..),
+    newSourceIpConfig,
+    sourceIpConfig_cidrs,
+
+    -- * SpaceDetails
+    SpaceDetails (..),
+    newSpaceDetails,
+    spaceDetails_creationTime,
+    spaceDetails_domainId,
+    spaceDetails_lastModifiedTime,
+    spaceDetails_spaceName,
+    spaceDetails_status,
+
+    -- * SpaceSettings
+    SpaceSettings (..),
+    newSpaceSettings,
+    spaceSettings_jupyterServerAppSettings,
+    spaceSettings_kernelGatewayAppSettings,
+
+    -- * StoppingCondition
+    StoppingCondition (..),
+    newStoppingCondition,
+    stoppingCondition_maxRuntimeInSeconds,
+    stoppingCondition_maxWaitTimeInSeconds,
+
+    -- * StudioLifecycleConfigDetails
+    StudioLifecycleConfigDetails (..),
+    newStudioLifecycleConfigDetails,
+    studioLifecycleConfigDetails_creationTime,
+    studioLifecycleConfigDetails_lastModifiedTime,
+    studioLifecycleConfigDetails_studioLifecycleConfigAppType,
+    studioLifecycleConfigDetails_studioLifecycleConfigArn,
+    studioLifecycleConfigDetails_studioLifecycleConfigName,
+
+    -- * SubscribedWorkteam
+    SubscribedWorkteam (..),
+    newSubscribedWorkteam,
+    subscribedWorkteam_listingId,
+    subscribedWorkteam_marketplaceDescription,
+    subscribedWorkteam_marketplaceTitle,
+    subscribedWorkteam_sellerName,
+    subscribedWorkteam_workteamArn,
+
+    -- * SuggestionQuery
+    SuggestionQuery (..),
+    newSuggestionQuery,
+    suggestionQuery_propertyNameQuery,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TargetPlatform
+    TargetPlatform (..),
+    newTargetPlatform,
+    targetPlatform_accelerator,
+    targetPlatform_os,
+    targetPlatform_arch,
+
+    -- * TensorBoardAppSettings
+    TensorBoardAppSettings (..),
+    newTensorBoardAppSettings,
+    tensorBoardAppSettings_defaultResourceSpec,
+
+    -- * TensorBoardOutputConfig
+    TensorBoardOutputConfig (..),
+    newTensorBoardOutputConfig,
+    tensorBoardOutputConfig_localPath,
+    tensorBoardOutputConfig_s3OutputPath,
+
+    -- * TimeSeriesForecastingSettings
+    TimeSeriesForecastingSettings (..),
+    newTimeSeriesForecastingSettings,
+    timeSeriesForecastingSettings_amazonForecastRoleArn,
+    timeSeriesForecastingSettings_status,
+
+    -- * TrafficPattern
+    TrafficPattern (..),
+    newTrafficPattern,
+    trafficPattern_phases,
+    trafficPattern_trafficType,
+
+    -- * TrafficRoutingConfig
+    TrafficRoutingConfig (..),
+    newTrafficRoutingConfig,
+    trafficRoutingConfig_canarySize,
+    trafficRoutingConfig_linearStepSize,
+    trafficRoutingConfig_type,
+    trafficRoutingConfig_waitIntervalInSeconds,
+
+    -- * TrainingJob
+    TrainingJob (..),
+    newTrainingJob,
+    trainingJob_algorithmSpecification,
+    trainingJob_autoMLJobArn,
+    trainingJob_billableTimeInSeconds,
+    trainingJob_checkpointConfig,
+    trainingJob_creationTime,
+    trainingJob_debugHookConfig,
+    trainingJob_debugRuleConfigurations,
+    trainingJob_debugRuleEvaluationStatuses,
+    trainingJob_enableInterContainerTrafficEncryption,
+    trainingJob_enableManagedSpotTraining,
+    trainingJob_enableNetworkIsolation,
+    trainingJob_environment,
+    trainingJob_experimentConfig,
+    trainingJob_failureReason,
+    trainingJob_finalMetricDataList,
+    trainingJob_hyperParameters,
+    trainingJob_inputDataConfig,
+    trainingJob_labelingJobArn,
+    trainingJob_lastModifiedTime,
+    trainingJob_modelArtifacts,
+    trainingJob_outputDataConfig,
+    trainingJob_resourceConfig,
+    trainingJob_retryStrategy,
+    trainingJob_roleArn,
+    trainingJob_secondaryStatus,
+    trainingJob_secondaryStatusTransitions,
+    trainingJob_stoppingCondition,
+    trainingJob_tags,
+    trainingJob_tensorBoardOutputConfig,
+    trainingJob_trainingEndTime,
+    trainingJob_trainingJobArn,
+    trainingJob_trainingJobName,
+    trainingJob_trainingJobStatus,
+    trainingJob_trainingStartTime,
+    trainingJob_trainingTimeInSeconds,
+    trainingJob_tuningJobArn,
+    trainingJob_vpcConfig,
+
+    -- * TrainingJobDefinition
+    TrainingJobDefinition (..),
+    newTrainingJobDefinition,
+    trainingJobDefinition_hyperParameters,
+    trainingJobDefinition_trainingInputMode,
+    trainingJobDefinition_inputDataConfig,
+    trainingJobDefinition_outputDataConfig,
+    trainingJobDefinition_resourceConfig,
+    trainingJobDefinition_stoppingCondition,
+
+    -- * TrainingJobStatusCounters
+    TrainingJobStatusCounters (..),
+    newTrainingJobStatusCounters,
+    trainingJobStatusCounters_completed,
+    trainingJobStatusCounters_inProgress,
+    trainingJobStatusCounters_nonRetryableError,
+    trainingJobStatusCounters_retryableError,
+    trainingJobStatusCounters_stopped,
+
+    -- * TrainingJobStepMetadata
+    TrainingJobStepMetadata (..),
+    newTrainingJobStepMetadata,
+    trainingJobStepMetadata_arn,
+
+    -- * TrainingJobSummary
+    TrainingJobSummary (..),
+    newTrainingJobSummary,
+    trainingJobSummary_lastModifiedTime,
+    trainingJobSummary_trainingEndTime,
+    trainingJobSummary_warmPoolStatus,
+    trainingJobSummary_trainingJobName,
+    trainingJobSummary_trainingJobArn,
+    trainingJobSummary_creationTime,
+    trainingJobSummary_trainingJobStatus,
+
+    -- * TrainingSpecification
+    TrainingSpecification (..),
+    newTrainingSpecification,
+    trainingSpecification_metricDefinitions,
+    trainingSpecification_supportedHyperParameters,
+    trainingSpecification_supportedTuningJobObjectiveMetrics,
+    trainingSpecification_supportsDistributedTraining,
+    trainingSpecification_trainingImageDigest,
+    trainingSpecification_trainingImage,
+    trainingSpecification_supportedTrainingInstanceTypes,
+    trainingSpecification_trainingChannels,
+
+    -- * TransformDataSource
+    TransformDataSource (..),
+    newTransformDataSource,
+    transformDataSource_s3DataSource,
+
+    -- * TransformInput
+    TransformInput (..),
+    newTransformInput,
+    transformInput_compressionType,
+    transformInput_contentType,
+    transformInput_splitType,
+    transformInput_dataSource,
+
+    -- * TransformJob
+    TransformJob (..),
+    newTransformJob,
+    transformJob_autoMLJobArn,
+    transformJob_batchStrategy,
+    transformJob_creationTime,
+    transformJob_dataProcessing,
+    transformJob_environment,
+    transformJob_experimentConfig,
+    transformJob_failureReason,
+    transformJob_labelingJobArn,
+    transformJob_maxConcurrentTransforms,
+    transformJob_maxPayloadInMB,
+    transformJob_modelClientConfig,
+    transformJob_modelName,
+    transformJob_tags,
+    transformJob_transformEndTime,
+    transformJob_transformInput,
+    transformJob_transformJobArn,
+    transformJob_transformJobName,
+    transformJob_transformJobStatus,
+    transformJob_transformOutput,
+    transformJob_transformResources,
+    transformJob_transformStartTime,
+
+    -- * TransformJobDefinition
+    TransformJobDefinition (..),
+    newTransformJobDefinition,
+    transformJobDefinition_batchStrategy,
+    transformJobDefinition_environment,
+    transformJobDefinition_maxConcurrentTransforms,
+    transformJobDefinition_maxPayloadInMB,
+    transformJobDefinition_transformInput,
+    transformJobDefinition_transformOutput,
+    transformJobDefinition_transformResources,
+
+    -- * TransformJobStepMetadata
+    TransformJobStepMetadata (..),
+    newTransformJobStepMetadata,
+    transformJobStepMetadata_arn,
+
+    -- * TransformJobSummary
+    TransformJobSummary (..),
+    newTransformJobSummary,
+    transformJobSummary_failureReason,
+    transformJobSummary_lastModifiedTime,
+    transformJobSummary_transformEndTime,
+    transformJobSummary_transformJobName,
+    transformJobSummary_transformJobArn,
+    transformJobSummary_creationTime,
+    transformJobSummary_transformJobStatus,
+
+    -- * TransformOutput
+    TransformOutput (..),
+    newTransformOutput,
+    transformOutput_accept,
+    transformOutput_assembleWith,
+    transformOutput_kmsKeyId,
+    transformOutput_s3OutputPath,
+
+    -- * TransformResources
+    TransformResources (..),
+    newTransformResources,
+    transformResources_volumeKmsKeyId,
+    transformResources_instanceType,
+    transformResources_instanceCount,
+
+    -- * TransformS3DataSource
+    TransformS3DataSource (..),
+    newTransformS3DataSource,
+    transformS3DataSource_s3DataType,
+    transformS3DataSource_s3Uri,
+
+    -- * Trial
+    Trial (..),
+    newTrial,
+    trial_createdBy,
+    trial_creationTime,
+    trial_displayName,
+    trial_experimentName,
+    trial_lastModifiedBy,
+    trial_lastModifiedTime,
+    trial_metadataProperties,
+    trial_source,
+    trial_tags,
+    trial_trialArn,
+    trial_trialComponentSummaries,
+    trial_trialName,
+
+    -- * TrialComponent
+    TrialComponent (..),
+    newTrialComponent,
+    trialComponent_createdBy,
+    trialComponent_creationTime,
+    trialComponent_displayName,
+    trialComponent_endTime,
+    trialComponent_inputArtifacts,
+    trialComponent_lastModifiedBy,
+    trialComponent_lastModifiedTime,
+    trialComponent_lineageGroupArn,
+    trialComponent_metadataProperties,
+    trialComponent_metrics,
+    trialComponent_outputArtifacts,
+    trialComponent_parameters,
+    trialComponent_parents,
+    trialComponent_runName,
+    trialComponent_source,
+    trialComponent_sourceDetail,
+    trialComponent_startTime,
+    trialComponent_status,
+    trialComponent_tags,
+    trialComponent_trialComponentArn,
+    trialComponent_trialComponentName,
+
+    -- * TrialComponentArtifact
+    TrialComponentArtifact (..),
+    newTrialComponentArtifact,
+    trialComponentArtifact_mediaType,
+    trialComponentArtifact_value,
+
+    -- * TrialComponentMetricSummary
+    TrialComponentMetricSummary (..),
+    newTrialComponentMetricSummary,
+    trialComponentMetricSummary_avg,
+    trialComponentMetricSummary_count,
+    trialComponentMetricSummary_last,
+    trialComponentMetricSummary_max,
+    trialComponentMetricSummary_metricName,
+    trialComponentMetricSummary_min,
+    trialComponentMetricSummary_sourceArn,
+    trialComponentMetricSummary_stdDev,
+    trialComponentMetricSummary_timeStamp,
+
+    -- * TrialComponentParameterValue
+    TrialComponentParameterValue (..),
+    newTrialComponentParameterValue,
+    trialComponentParameterValue_numberValue,
+    trialComponentParameterValue_stringValue,
+
+    -- * TrialComponentSimpleSummary
+    TrialComponentSimpleSummary (..),
+    newTrialComponentSimpleSummary,
+    trialComponentSimpleSummary_createdBy,
+    trialComponentSimpleSummary_creationTime,
+    trialComponentSimpleSummary_trialComponentArn,
+    trialComponentSimpleSummary_trialComponentName,
+    trialComponentSimpleSummary_trialComponentSource,
+
+    -- * TrialComponentSource
+    TrialComponentSource (..),
+    newTrialComponentSource,
+    trialComponentSource_sourceType,
+    trialComponentSource_sourceArn,
+
+    -- * TrialComponentSourceDetail
+    TrialComponentSourceDetail (..),
+    newTrialComponentSourceDetail,
+    trialComponentSourceDetail_processingJob,
+    trialComponentSourceDetail_sourceArn,
+    trialComponentSourceDetail_trainingJob,
+    trialComponentSourceDetail_transformJob,
+
+    -- * TrialComponentStatus
+    TrialComponentStatus (..),
+    newTrialComponentStatus,
+    trialComponentStatus_message,
+    trialComponentStatus_primaryStatus,
+
+    -- * TrialComponentSummary
+    TrialComponentSummary (..),
+    newTrialComponentSummary,
+    trialComponentSummary_createdBy,
+    trialComponentSummary_creationTime,
+    trialComponentSummary_displayName,
+    trialComponentSummary_endTime,
+    trialComponentSummary_lastModifiedBy,
+    trialComponentSummary_lastModifiedTime,
+    trialComponentSummary_startTime,
+    trialComponentSummary_status,
+    trialComponentSummary_trialComponentArn,
+    trialComponentSummary_trialComponentName,
+    trialComponentSummary_trialComponentSource,
+
+    -- * TrialSource
+    TrialSource (..),
+    newTrialSource,
+    trialSource_sourceType,
+    trialSource_sourceArn,
+
+    -- * TrialSummary
+    TrialSummary (..),
+    newTrialSummary,
+    trialSummary_creationTime,
+    trialSummary_displayName,
+    trialSummary_lastModifiedTime,
+    trialSummary_trialArn,
+    trialSummary_trialName,
+    trialSummary_trialSource,
+
+    -- * TuningJobCompletionCriteria
+    TuningJobCompletionCriteria (..),
+    newTuningJobCompletionCriteria,
+    tuningJobCompletionCriteria_targetObjectiveMetricValue,
+
+    -- * TuningJobStepMetaData
+    TuningJobStepMetaData (..),
+    newTuningJobStepMetaData,
+    tuningJobStepMetaData_arn,
+
+    -- * USD
+    USD (..),
+    newUSD,
+    usd_cents,
+    usd_dollars,
+    usd_tenthFractionsOfACent,
+
+    -- * UiConfig
+    UiConfig (..),
+    newUiConfig,
+    uiConfig_humanTaskUiArn,
+    uiConfig_uiTemplateS3Uri,
+
+    -- * UiTemplate
+    UiTemplate (..),
+    newUiTemplate,
+    uiTemplate_content,
+
+    -- * UiTemplateInfo
+    UiTemplateInfo (..),
+    newUiTemplateInfo,
+    uiTemplateInfo_contentSha256,
+    uiTemplateInfo_url,
+
+    -- * UserContext
+    UserContext (..),
+    newUserContext,
+    userContext_domainId,
+    userContext_userProfileArn,
+    userContext_userProfileName,
+
+    -- * UserProfileDetails
+    UserProfileDetails (..),
+    newUserProfileDetails,
+    userProfileDetails_creationTime,
+    userProfileDetails_domainId,
+    userProfileDetails_lastModifiedTime,
+    userProfileDetails_status,
+    userProfileDetails_userProfileName,
+
+    -- * UserSettings
+    UserSettings (..),
+    newUserSettings,
+    userSettings_canvasAppSettings,
+    userSettings_executionRole,
+    userSettings_jupyterServerAppSettings,
+    userSettings_kernelGatewayAppSettings,
+    userSettings_rSessionAppSettings,
+    userSettings_rStudioServerProAppSettings,
+    userSettings_securityGroups,
+    userSettings_sharingSettings,
+    userSettings_tensorBoardAppSettings,
+
+    -- * VariantProperty
+    VariantProperty (..),
+    newVariantProperty,
+    variantProperty_variantPropertyType,
+
+    -- * Vertex
+    Vertex (..),
+    newVertex,
+    vertex_arn,
+    vertex_lineageType,
+    vertex_type,
+
+    -- * VpcConfig
+    VpcConfig (..),
+    newVpcConfig,
+    vpcConfig_securityGroupIds,
+    vpcConfig_subnets,
+
+    -- * WarmPoolStatus
+    WarmPoolStatus (..),
+    newWarmPoolStatus,
+    warmPoolStatus_resourceRetainedBillableTimeInSeconds,
+    warmPoolStatus_reusedByJob,
+    warmPoolStatus_status,
+
+    -- * Workforce
+    Workforce (..),
+    newWorkforce,
+    workforce_cognitoConfig,
+    workforce_createDate,
+    workforce_failureReason,
+    workforce_lastUpdatedDate,
+    workforce_oidcConfig,
+    workforce_sourceIpConfig,
+    workforce_status,
+    workforce_subDomain,
+    workforce_workforceVpcConfig,
+    workforce_workforceName,
+    workforce_workforceArn,
+
+    -- * WorkforceVpcConfigRequest
+    WorkforceVpcConfigRequest (..),
+    newWorkforceVpcConfigRequest,
+    workforceVpcConfigRequest_securityGroupIds,
+    workforceVpcConfigRequest_subnets,
+    workforceVpcConfigRequest_vpcId,
+
+    -- * WorkforceVpcConfigResponse
+    WorkforceVpcConfigResponse (..),
+    newWorkforceVpcConfigResponse,
+    workforceVpcConfigResponse_vpcEndpointId,
+    workforceVpcConfigResponse_vpcId,
+    workforceVpcConfigResponse_securityGroupIds,
+    workforceVpcConfigResponse_subnets,
+
+    -- * Workteam
+    Workteam (..),
+    newWorkteam,
+    workteam_createDate,
+    workteam_lastUpdatedDate,
+    workteam_notificationConfiguration,
+    workteam_productListingIds,
+    workteam_subDomain,
+    workteam_workforceArn,
+    workteam_workteamName,
+    workteam_memberDefinitions,
+    workteam_workteamArn,
+    workteam_description,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMaker.Types.ActionSource
+import Amazonka.SageMaker.Types.ActionStatus
+import Amazonka.SageMaker.Types.ActionSummary
+import Amazonka.SageMaker.Types.AdditionalInferenceSpecificationDefinition
+import Amazonka.SageMaker.Types.AgentVersion
+import Amazonka.SageMaker.Types.Alarm
+import Amazonka.SageMaker.Types.AlgorithmSortBy
+import Amazonka.SageMaker.Types.AlgorithmSpecification
+import Amazonka.SageMaker.Types.AlgorithmStatus
+import Amazonka.SageMaker.Types.AlgorithmStatusDetails
+import Amazonka.SageMaker.Types.AlgorithmStatusItem
+import Amazonka.SageMaker.Types.AlgorithmSummary
+import Amazonka.SageMaker.Types.AlgorithmValidationProfile
+import Amazonka.SageMaker.Types.AlgorithmValidationSpecification
+import Amazonka.SageMaker.Types.AnnotationConsolidationConfig
+import Amazonka.SageMaker.Types.AppDetails
+import Amazonka.SageMaker.Types.AppImageConfigDetails
+import Amazonka.SageMaker.Types.AppImageConfigSortKey
+import Amazonka.SageMaker.Types.AppInstanceType
+import Amazonka.SageMaker.Types.AppNetworkAccessType
+import Amazonka.SageMaker.Types.AppSecurityGroupManagement
+import Amazonka.SageMaker.Types.AppSortKey
+import Amazonka.SageMaker.Types.AppSpecification
+import Amazonka.SageMaker.Types.AppStatus
+import Amazonka.SageMaker.Types.AppType
+import Amazonka.SageMaker.Types.ArtifactSource
+import Amazonka.SageMaker.Types.ArtifactSourceIdType
+import Amazonka.SageMaker.Types.ArtifactSourceType
+import Amazonka.SageMaker.Types.ArtifactSummary
+import Amazonka.SageMaker.Types.AssemblyType
+import Amazonka.SageMaker.Types.AssociationEdgeType
+import Amazonka.SageMaker.Types.AssociationSummary
+import Amazonka.SageMaker.Types.AsyncInferenceClientConfig
+import Amazonka.SageMaker.Types.AsyncInferenceConfig
+import Amazonka.SageMaker.Types.AsyncInferenceNotificationConfig
+import Amazonka.SageMaker.Types.AsyncInferenceOutputConfig
+import Amazonka.SageMaker.Types.AthenaDatasetDefinition
+import Amazonka.SageMaker.Types.AthenaResultCompressionType
+import Amazonka.SageMaker.Types.AthenaResultFormat
+import Amazonka.SageMaker.Types.AuthMode
+import Amazonka.SageMaker.Types.AutoMLCandidate
+import Amazonka.SageMaker.Types.AutoMLCandidateGenerationConfig
+import Amazonka.SageMaker.Types.AutoMLCandidateStep
+import Amazonka.SageMaker.Types.AutoMLChannel
+import Amazonka.SageMaker.Types.AutoMLChannelType
+import Amazonka.SageMaker.Types.AutoMLContainerDefinition
+import Amazonka.SageMaker.Types.AutoMLDataSource
+import Amazonka.SageMaker.Types.AutoMLDataSplitConfig
+import Amazonka.SageMaker.Types.AutoMLJobArtifacts
+import Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria
+import Amazonka.SageMaker.Types.AutoMLJobConfig
+import Amazonka.SageMaker.Types.AutoMLJobObjective
+import Amazonka.SageMaker.Types.AutoMLJobObjectiveType
+import Amazonka.SageMaker.Types.AutoMLJobSecondaryStatus
+import Amazonka.SageMaker.Types.AutoMLJobStatus
+import Amazonka.SageMaker.Types.AutoMLJobStepMetadata
+import Amazonka.SageMaker.Types.AutoMLJobSummary
+import Amazonka.SageMaker.Types.AutoMLMetricEnum
+import Amazonka.SageMaker.Types.AutoMLMetricExtendedEnum
+import Amazonka.SageMaker.Types.AutoMLMode
+import Amazonka.SageMaker.Types.AutoMLOutputDataConfig
+import Amazonka.SageMaker.Types.AutoMLPartialFailureReason
+import Amazonka.SageMaker.Types.AutoMLS3DataSource
+import Amazonka.SageMaker.Types.AutoMLS3DataType
+import Amazonka.SageMaker.Types.AutoMLSecurityConfig
+import Amazonka.SageMaker.Types.AutoMLSortBy
+import Amazonka.SageMaker.Types.AutoMLSortOrder
+import Amazonka.SageMaker.Types.AutoRollbackConfig
+import Amazonka.SageMaker.Types.AwsManagedHumanLoopRequestSource
+import Amazonka.SageMaker.Types.BatchDataCaptureConfig
+import Amazonka.SageMaker.Types.BatchDescribeModelPackageError
+import Amazonka.SageMaker.Types.BatchDescribeModelPackageSummary
+import Amazonka.SageMaker.Types.BatchStrategy
+import Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.Bias
+import Amazonka.SageMaker.Types.BlueGreenUpdatePolicy
+import Amazonka.SageMaker.Types.BooleanOperator
+import Amazonka.SageMaker.Types.CacheHitResult
+import Amazonka.SageMaker.Types.CallbackStepMetadata
+import Amazonka.SageMaker.Types.CandidateArtifactLocations
+import Amazonka.SageMaker.Types.CandidateProperties
+import Amazonka.SageMaker.Types.CandidateSortBy
+import Amazonka.SageMaker.Types.CandidateStatus
+import Amazonka.SageMaker.Types.CandidateStepType
+import Amazonka.SageMaker.Types.CanvasAppSettings
+import Amazonka.SageMaker.Types.CapacitySize
+import Amazonka.SageMaker.Types.CapacitySizeType
+import Amazonka.SageMaker.Types.CaptureContentTypeHeader
+import Amazonka.SageMaker.Types.CaptureMode
+import Amazonka.SageMaker.Types.CaptureOption
+import Amazonka.SageMaker.Types.CaptureStatus
+import Amazonka.SageMaker.Types.CategoricalParameter
+import Amazonka.SageMaker.Types.CategoricalParameterRange
+import Amazonka.SageMaker.Types.CategoricalParameterRangeSpecification
+import Amazonka.SageMaker.Types.Channel
+import Amazonka.SageMaker.Types.ChannelSpecification
+import Amazonka.SageMaker.Types.CheckpointConfig
+import Amazonka.SageMaker.Types.ClarifyCheckStepMetadata
+import Amazonka.SageMaker.Types.ClarifyExplainerConfig
+import Amazonka.SageMaker.Types.ClarifyFeatureType
+import Amazonka.SageMaker.Types.ClarifyInferenceConfig
+import Amazonka.SageMaker.Types.ClarifyShapBaselineConfig
+import Amazonka.SageMaker.Types.ClarifyShapConfig
+import Amazonka.SageMaker.Types.ClarifyTextConfig
+import Amazonka.SageMaker.Types.ClarifyTextGranularity
+import Amazonka.SageMaker.Types.ClarifyTextLanguage
+import Amazonka.SageMaker.Types.CodeRepository
+import Amazonka.SageMaker.Types.CodeRepositorySortBy
+import Amazonka.SageMaker.Types.CodeRepositorySortOrder
+import Amazonka.SageMaker.Types.CodeRepositorySummary
+import Amazonka.SageMaker.Types.CognitoConfig
+import Amazonka.SageMaker.Types.CognitoMemberDefinition
+import Amazonka.SageMaker.Types.CollectionConfiguration
+import Amazonka.SageMaker.Types.CompilationJobStatus
+import Amazonka.SageMaker.Types.CompilationJobSummary
+import Amazonka.SageMaker.Types.CompressionType
+import Amazonka.SageMaker.Types.ConditionOutcome
+import Amazonka.SageMaker.Types.ConditionStepMetadata
+import Amazonka.SageMaker.Types.ContainerDefinition
+import Amazonka.SageMaker.Types.ContainerMode
+import Amazonka.SageMaker.Types.ContentClassifier
+import Amazonka.SageMaker.Types.ContextSource
+import Amazonka.SageMaker.Types.ContextSummary
+import Amazonka.SageMaker.Types.ContinuousParameterRange
+import Amazonka.SageMaker.Types.ContinuousParameterRangeSpecification
+import Amazonka.SageMaker.Types.CustomImage
+import Amazonka.SageMaker.Types.DataCaptureConfig
+import Amazonka.SageMaker.Types.DataCaptureConfigSummary
+import Amazonka.SageMaker.Types.DataCatalogConfig
+import Amazonka.SageMaker.Types.DataDistributionType
+import Amazonka.SageMaker.Types.DataProcessing
+import Amazonka.SageMaker.Types.DataQualityAppSpecification
+import Amazonka.SageMaker.Types.DataQualityBaselineConfig
+import Amazonka.SageMaker.Types.DataQualityJobInput
+import Amazonka.SageMaker.Types.DataSource
+import Amazonka.SageMaker.Types.DatasetDefinition
+import Amazonka.SageMaker.Types.DebugHookConfig
+import Amazonka.SageMaker.Types.DebugRuleConfiguration
+import Amazonka.SageMaker.Types.DebugRuleEvaluationStatus
+import Amazonka.SageMaker.Types.DefaultSpaceSettings
+import Amazonka.SageMaker.Types.DeployedImage
+import Amazonka.SageMaker.Types.DeploymentConfig
+import Amazonka.SageMaker.Types.DeploymentStage
+import Amazonka.SageMaker.Types.DeploymentStageStatusSummary
+import Amazonka.SageMaker.Types.DesiredWeightAndCapacity
+import Amazonka.SageMaker.Types.DetailedAlgorithmStatus
+import Amazonka.SageMaker.Types.DetailedModelPackageStatus
+import Amazonka.SageMaker.Types.Device
+import Amazonka.SageMaker.Types.DeviceDeploymentStatus
+import Amazonka.SageMaker.Types.DeviceDeploymentSummary
+import Amazonka.SageMaker.Types.DeviceFleetSummary
+import Amazonka.SageMaker.Types.DeviceSelectionConfig
+import Amazonka.SageMaker.Types.DeviceStats
+import Amazonka.SageMaker.Types.DeviceSubsetType
+import Amazonka.SageMaker.Types.DeviceSummary
+import Amazonka.SageMaker.Types.DirectInternetAccess
+import Amazonka.SageMaker.Types.Direction
+import Amazonka.SageMaker.Types.DomainDetails
+import Amazonka.SageMaker.Types.DomainSettings
+import Amazonka.SageMaker.Types.DomainSettingsForUpdate
+import Amazonka.SageMaker.Types.DomainStatus
+import Amazonka.SageMaker.Types.DriftCheckBaselines
+import Amazonka.SageMaker.Types.DriftCheckBias
+import Amazonka.SageMaker.Types.DriftCheckExplainability
+import Amazonka.SageMaker.Types.DriftCheckModelDataQuality
+import Amazonka.SageMaker.Types.DriftCheckModelQuality
+import Amazonka.SageMaker.Types.EMRStepMetadata
+import Amazonka.SageMaker.Types.Edge
+import Amazonka.SageMaker.Types.EdgeDeploymentConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentModelConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentPlanSummary
+import Amazonka.SageMaker.Types.EdgeDeploymentStatus
+import Amazonka.SageMaker.Types.EdgeModel
+import Amazonka.SageMaker.Types.EdgeModelStat
+import Amazonka.SageMaker.Types.EdgeModelSummary
+import Amazonka.SageMaker.Types.EdgeOutputConfig
+import Amazonka.SageMaker.Types.EdgePackagingJobStatus
+import Amazonka.SageMaker.Types.EdgePackagingJobSummary
+import Amazonka.SageMaker.Types.EdgePresetDeploymentOutput
+import Amazonka.SageMaker.Types.EdgePresetDeploymentStatus
+import Amazonka.SageMaker.Types.EdgePresetDeploymentType
+import Amazonka.SageMaker.Types.Endpoint
+import Amazonka.SageMaker.Types.EndpointConfigSortKey
+import Amazonka.SageMaker.Types.EndpointConfigSummary
+import Amazonka.SageMaker.Types.EndpointInfo
+import Amazonka.SageMaker.Types.EndpointInput
+import Amazonka.SageMaker.Types.EndpointInputConfiguration
+import Amazonka.SageMaker.Types.EndpointMetadata
+import Amazonka.SageMaker.Types.EndpointOutputConfiguration
+import Amazonka.SageMaker.Types.EndpointPerformance
+import Amazonka.SageMaker.Types.EndpointSortKey
+import Amazonka.SageMaker.Types.EndpointStatus
+import Amazonka.SageMaker.Types.EndpointSummary
+import Amazonka.SageMaker.Types.EnvironmentParameter
+import Amazonka.SageMaker.Types.EnvironmentParameterRanges
+import Amazonka.SageMaker.Types.ExecutionRoleIdentityConfig
+import Amazonka.SageMaker.Types.ExecutionStatus
+import Amazonka.SageMaker.Types.Experiment
+import Amazonka.SageMaker.Types.ExperimentConfig
+import Amazonka.SageMaker.Types.ExperimentSource
+import Amazonka.SageMaker.Types.ExperimentSummary
+import Amazonka.SageMaker.Types.Explainability
+import Amazonka.SageMaker.Types.ExplainerConfig
+import Amazonka.SageMaker.Types.FailStepMetadata
+import Amazonka.SageMaker.Types.FailureHandlingPolicy
+import Amazonka.SageMaker.Types.FeatureDefinition
+import Amazonka.SageMaker.Types.FeatureGroup
+import Amazonka.SageMaker.Types.FeatureGroupSortBy
+import Amazonka.SageMaker.Types.FeatureGroupSortOrder
+import Amazonka.SageMaker.Types.FeatureGroupStatus
+import Amazonka.SageMaker.Types.FeatureGroupSummary
+import Amazonka.SageMaker.Types.FeatureMetadata
+import Amazonka.SageMaker.Types.FeatureParameter
+import Amazonka.SageMaker.Types.FeatureStatus
+import Amazonka.SageMaker.Types.FeatureType
+import Amazonka.SageMaker.Types.FileSource
+import Amazonka.SageMaker.Types.FileSystemAccessMode
+import Amazonka.SageMaker.Types.FileSystemConfig
+import Amazonka.SageMaker.Types.FileSystemDataSource
+import Amazonka.SageMaker.Types.FileSystemType
+import Amazonka.SageMaker.Types.Filter
+import Amazonka.SageMaker.Types.FinalAutoMLJobObjectiveMetric
+import Amazonka.SageMaker.Types.FinalHyperParameterTuningJobObjectiveMetric
+import Amazonka.SageMaker.Types.FlowDefinitionOutputConfig
+import Amazonka.SageMaker.Types.FlowDefinitionStatus
+import Amazonka.SageMaker.Types.FlowDefinitionSummary
+import Amazonka.SageMaker.Types.Framework
+import Amazonka.SageMaker.Types.GitConfig
+import Amazonka.SageMaker.Types.GitConfigForUpdate
+import Amazonka.SageMaker.Types.HubContentDependency
+import Amazonka.SageMaker.Types.HubContentInfo
+import Amazonka.SageMaker.Types.HubContentSortBy
+import Amazonka.SageMaker.Types.HubContentStatus
+import Amazonka.SageMaker.Types.HubContentType
+import Amazonka.SageMaker.Types.HubInfo
+import Amazonka.SageMaker.Types.HubS3StorageConfig
+import Amazonka.SageMaker.Types.HubSortBy
+import Amazonka.SageMaker.Types.HubStatus
+import Amazonka.SageMaker.Types.HumanLoopActivationConditionsConfig
+import Amazonka.SageMaker.Types.HumanLoopActivationConfig
+import Amazonka.SageMaker.Types.HumanLoopConfig
+import Amazonka.SageMaker.Types.HumanLoopRequestSource
+import Amazonka.SageMaker.Types.HumanTaskConfig
+import Amazonka.SageMaker.Types.HumanTaskUiStatus
+import Amazonka.SageMaker.Types.HumanTaskUiSummary
+import Amazonka.SageMaker.Types.HyperParameterAlgorithmSpecification
+import Amazonka.SageMaker.Types.HyperParameterScalingType
+import Amazonka.SageMaker.Types.HyperParameterSpecification
+import Amazonka.SageMaker.Types.HyperParameterTrainingJobDefinition
+import Amazonka.SageMaker.Types.HyperParameterTrainingJobSummary
+import Amazonka.SageMaker.Types.HyperParameterTuningAllocationStrategy
+import Amazonka.SageMaker.Types.HyperParameterTuningInstanceConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobObjective
+import Amazonka.SageMaker.Types.HyperParameterTuningJobObjectiveType
+import Amazonka.SageMaker.Types.HyperParameterTuningJobSearchEntity
+import Amazonka.SageMaker.Types.HyperParameterTuningJobSortByOptions
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStatus
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
+import Amazonka.SageMaker.Types.HyperParameterTuningJobSummary
+import Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartType
+import Amazonka.SageMaker.Types.HyperParameterTuningResourceConfig
+import Amazonka.SageMaker.Types.HyperbandStrategyConfig
+import Amazonka.SageMaker.Types.Image
+import Amazonka.SageMaker.Types.ImageConfig
+import Amazonka.SageMaker.Types.ImageSortBy
+import Amazonka.SageMaker.Types.ImageSortOrder
+import Amazonka.SageMaker.Types.ImageStatus
+import Amazonka.SageMaker.Types.ImageVersion
+import Amazonka.SageMaker.Types.ImageVersionSortBy
+import Amazonka.SageMaker.Types.ImageVersionSortOrder
+import Amazonka.SageMaker.Types.ImageVersionStatus
+import Amazonka.SageMaker.Types.InferenceExecutionConfig
+import Amazonka.SageMaker.Types.InferenceExecutionMode
+import Amazonka.SageMaker.Types.InferenceExperimentDataStorageConfig
+import Amazonka.SageMaker.Types.InferenceExperimentSchedule
+import Amazonka.SageMaker.Types.InferenceExperimentStatus
+import Amazonka.SageMaker.Types.InferenceExperimentStopDesiredState
+import Amazonka.SageMaker.Types.InferenceExperimentSummary
+import Amazonka.SageMaker.Types.InferenceExperimentType
+import Amazonka.SageMaker.Types.InferenceMetrics
+import Amazonka.SageMaker.Types.InferenceRecommendation
+import Amazonka.SageMaker.Types.InferenceRecommendationsJob
+import Amazonka.SageMaker.Types.InferenceRecommendationsJobStep
+import Amazonka.SageMaker.Types.InferenceSpecification
+import Amazonka.SageMaker.Types.InputConfig
+import Amazonka.SageMaker.Types.InputMode
+import Amazonka.SageMaker.Types.InstanceGroup
+import Amazonka.SageMaker.Types.InstanceMetadataServiceConfiguration
+import Amazonka.SageMaker.Types.InstanceType
+import Amazonka.SageMaker.Types.IntegerParameterRange
+import Amazonka.SageMaker.Types.IntegerParameterRangeSpecification
+import Amazonka.SageMaker.Types.JobType
+import Amazonka.SageMaker.Types.JoinSource
+import Amazonka.SageMaker.Types.JupyterServerAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayImageConfig
+import Amazonka.SageMaker.Types.KernelSpec
+import Amazonka.SageMaker.Types.LabelCounters
+import Amazonka.SageMaker.Types.LabelCountersForWorkteam
+import Amazonka.SageMaker.Types.LabelingJobAlgorithmsConfig
+import Amazonka.SageMaker.Types.LabelingJobDataAttributes
+import Amazonka.SageMaker.Types.LabelingJobDataSource
+import Amazonka.SageMaker.Types.LabelingJobForWorkteamSummary
+import Amazonka.SageMaker.Types.LabelingJobInputConfig
+import Amazonka.SageMaker.Types.LabelingJobOutput
+import Amazonka.SageMaker.Types.LabelingJobOutputConfig
+import Amazonka.SageMaker.Types.LabelingJobResourceConfig
+import Amazonka.SageMaker.Types.LabelingJobS3DataSource
+import Amazonka.SageMaker.Types.LabelingJobSnsDataSource
+import Amazonka.SageMaker.Types.LabelingJobStatus
+import Amazonka.SageMaker.Types.LabelingJobStoppingConditions
+import Amazonka.SageMaker.Types.LabelingJobSummary
+import Amazonka.SageMaker.Types.LambdaStepMetadata
+import Amazonka.SageMaker.Types.LastUpdateStatus
+import Amazonka.SageMaker.Types.LastUpdateStatusValue
+import Amazonka.SageMaker.Types.LineageGroupSummary
+import Amazonka.SageMaker.Types.LineageType
+import Amazonka.SageMaker.Types.ListCompilationJobsSortBy
+import Amazonka.SageMaker.Types.ListDeviceFleetsSortBy
+import Amazonka.SageMaker.Types.ListEdgeDeploymentPlansSortBy
+import Amazonka.SageMaker.Types.ListEdgePackagingJobsSortBy
+import Amazonka.SageMaker.Types.ListInferenceRecommendationsJobsSortBy
+import Amazonka.SageMaker.Types.ListLabelingJobsForWorkteamSortByOptions
+import Amazonka.SageMaker.Types.ListWorkforcesSortByOptions
+import Amazonka.SageMaker.Types.ListWorkteamsSortByOptions
+import Amazonka.SageMaker.Types.MemberDefinition
+import Amazonka.SageMaker.Types.MetadataProperties
+import Amazonka.SageMaker.Types.MetricData
+import Amazonka.SageMaker.Types.MetricDatum
+import Amazonka.SageMaker.Types.MetricDefinition
+import Amazonka.SageMaker.Types.MetricSetSource
+import Amazonka.SageMaker.Types.MetricsSource
+import Amazonka.SageMaker.Types.Model
+import Amazonka.SageMaker.Types.ModelApprovalStatus
+import Amazonka.SageMaker.Types.ModelArtifacts
+import Amazonka.SageMaker.Types.ModelBiasAppSpecification
+import Amazonka.SageMaker.Types.ModelBiasBaselineConfig
+import Amazonka.SageMaker.Types.ModelBiasJobInput
+import Amazonka.SageMaker.Types.ModelCacheSetting
+import Amazonka.SageMaker.Types.ModelCard
+import Amazonka.SageMaker.Types.ModelCardExportArtifacts
+import Amazonka.SageMaker.Types.ModelCardExportJobSortBy
+import Amazonka.SageMaker.Types.ModelCardExportJobSortOrder
+import Amazonka.SageMaker.Types.ModelCardExportJobStatus
+import Amazonka.SageMaker.Types.ModelCardExportJobSummary
+import Amazonka.SageMaker.Types.ModelCardExportOutputConfig
+import Amazonka.SageMaker.Types.ModelCardProcessingStatus
+import Amazonka.SageMaker.Types.ModelCardSecurityConfig
+import Amazonka.SageMaker.Types.ModelCardSortBy
+import Amazonka.SageMaker.Types.ModelCardSortOrder
+import Amazonka.SageMaker.Types.ModelCardStatus
+import Amazonka.SageMaker.Types.ModelCardSummary
+import Amazonka.SageMaker.Types.ModelCardVersionSortBy
+import Amazonka.SageMaker.Types.ModelCardVersionSummary
+import Amazonka.SageMaker.Types.ModelClientConfig
+import Amazonka.SageMaker.Types.ModelConfiguration
+import Amazonka.SageMaker.Types.ModelDashboardEndpoint
+import Amazonka.SageMaker.Types.ModelDashboardIndicatorAction
+import Amazonka.SageMaker.Types.ModelDashboardModel
+import Amazonka.SageMaker.Types.ModelDashboardModelCard
+import Amazonka.SageMaker.Types.ModelDashboardMonitoringSchedule
+import Amazonka.SageMaker.Types.ModelDataQuality
+import Amazonka.SageMaker.Types.ModelDeployConfig
+import Amazonka.SageMaker.Types.ModelDeployResult
+import Amazonka.SageMaker.Types.ModelDigests
+import Amazonka.SageMaker.Types.ModelExplainabilityAppSpecification
+import Amazonka.SageMaker.Types.ModelExplainabilityBaselineConfig
+import Amazonka.SageMaker.Types.ModelExplainabilityJobInput
+import Amazonka.SageMaker.Types.ModelInfrastructureConfig
+import Amazonka.SageMaker.Types.ModelInfrastructureType
+import Amazonka.SageMaker.Types.ModelInput
+import Amazonka.SageMaker.Types.ModelLatencyThreshold
+import Amazonka.SageMaker.Types.ModelMetadataFilter
+import Amazonka.SageMaker.Types.ModelMetadataFilterType
+import Amazonka.SageMaker.Types.ModelMetadataSearchExpression
+import Amazonka.SageMaker.Types.ModelMetadataSummary
+import Amazonka.SageMaker.Types.ModelMetrics
+import Amazonka.SageMaker.Types.ModelPackage
+import Amazonka.SageMaker.Types.ModelPackageContainerDefinition
+import Amazonka.SageMaker.Types.ModelPackageGroup
+import Amazonka.SageMaker.Types.ModelPackageGroupSortBy
+import Amazonka.SageMaker.Types.ModelPackageGroupStatus
+import Amazonka.SageMaker.Types.ModelPackageGroupSummary
+import Amazonka.SageMaker.Types.ModelPackageSortBy
+import Amazonka.SageMaker.Types.ModelPackageStatus
+import Amazonka.SageMaker.Types.ModelPackageStatusDetails
+import Amazonka.SageMaker.Types.ModelPackageStatusItem
+import Amazonka.SageMaker.Types.ModelPackageSummary
+import Amazonka.SageMaker.Types.ModelPackageType
+import Amazonka.SageMaker.Types.ModelPackageValidationProfile
+import Amazonka.SageMaker.Types.ModelPackageValidationSpecification
+import Amazonka.SageMaker.Types.ModelQuality
+import Amazonka.SageMaker.Types.ModelQualityAppSpecification
+import Amazonka.SageMaker.Types.ModelQualityBaselineConfig
+import Amazonka.SageMaker.Types.ModelQualityJobInput
+import Amazonka.SageMaker.Types.ModelSortKey
+import Amazonka.SageMaker.Types.ModelStepMetadata
+import Amazonka.SageMaker.Types.ModelSummary
+import Amazonka.SageMaker.Types.ModelVariantAction
+import Amazonka.SageMaker.Types.ModelVariantConfig
+import Amazonka.SageMaker.Types.ModelVariantConfigSummary
+import Amazonka.SageMaker.Types.ModelVariantStatus
+import Amazonka.SageMaker.Types.MonitoringAlertActions
+import Amazonka.SageMaker.Types.MonitoringAlertHistorySortKey
+import Amazonka.SageMaker.Types.MonitoringAlertHistorySummary
+import Amazonka.SageMaker.Types.MonitoringAlertStatus
+import Amazonka.SageMaker.Types.MonitoringAlertSummary
+import Amazonka.SageMaker.Types.MonitoringAppSpecification
+import Amazonka.SageMaker.Types.MonitoringBaselineConfig
+import Amazonka.SageMaker.Types.MonitoringClusterConfig
+import Amazonka.SageMaker.Types.MonitoringConstraintsResource
+import Amazonka.SageMaker.Types.MonitoringCsvDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringExecutionSortKey
+import Amazonka.SageMaker.Types.MonitoringExecutionSummary
+import Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input
+import Amazonka.SageMaker.Types.MonitoringInput
+import Amazonka.SageMaker.Types.MonitoringJobDefinition
+import Amazonka.SageMaker.Types.MonitoringJobDefinitionSortKey
+import Amazonka.SageMaker.Types.MonitoringJobDefinitionSummary
+import Amazonka.SageMaker.Types.MonitoringJsonDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringNetworkConfig
+import Amazonka.SageMaker.Types.MonitoringOutput
+import Amazonka.SageMaker.Types.MonitoringOutputConfig
+import Amazonka.SageMaker.Types.MonitoringParquetDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringProblemType
+import Amazonka.SageMaker.Types.MonitoringResources
+import Amazonka.SageMaker.Types.MonitoringS3Output
+import Amazonka.SageMaker.Types.MonitoringSchedule
+import Amazonka.SageMaker.Types.MonitoringScheduleConfig
+import Amazonka.SageMaker.Types.MonitoringScheduleSortKey
+import Amazonka.SageMaker.Types.MonitoringScheduleSummary
+import Amazonka.SageMaker.Types.MonitoringStatisticsResource
+import Amazonka.SageMaker.Types.MonitoringStoppingCondition
+import Amazonka.SageMaker.Types.MonitoringType
+import Amazonka.SageMaker.Types.MultiModelConfig
+import Amazonka.SageMaker.Types.NeoVpcConfig
+import Amazonka.SageMaker.Types.NestedFilters
+import Amazonka.SageMaker.Types.NetworkConfig
+import Amazonka.SageMaker.Types.NotebookInstanceAcceleratorType
+import Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortKey
+import Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortOrder
+import Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSummary
+import Amazonka.SageMaker.Types.NotebookInstanceLifecycleHook
+import Amazonka.SageMaker.Types.NotebookInstanceSortKey
+import Amazonka.SageMaker.Types.NotebookInstanceSortOrder
+import Amazonka.SageMaker.Types.NotebookInstanceStatus
+import Amazonka.SageMaker.Types.NotebookInstanceSummary
+import Amazonka.SageMaker.Types.NotebookOutputOption
+import Amazonka.SageMaker.Types.NotificationConfiguration
+import Amazonka.SageMaker.Types.ObjectiveStatus
+import Amazonka.SageMaker.Types.ObjectiveStatusCounters
+import Amazonka.SageMaker.Types.OfflineStoreConfig
+import Amazonka.SageMaker.Types.OfflineStoreStatus
+import Amazonka.SageMaker.Types.OfflineStoreStatusValue
+import Amazonka.SageMaker.Types.OidcConfig
+import Amazonka.SageMaker.Types.OidcConfigForResponse
+import Amazonka.SageMaker.Types.OidcMemberDefinition
+import Amazonka.SageMaker.Types.OnlineStoreConfig
+import Amazonka.SageMaker.Types.OnlineStoreSecurityConfig
+import Amazonka.SageMaker.Types.Operator
+import Amazonka.SageMaker.Types.OrderKey
+import Amazonka.SageMaker.Types.OutputConfig
+import Amazonka.SageMaker.Types.OutputDataConfig
+import Amazonka.SageMaker.Types.OutputParameter
+import Amazonka.SageMaker.Types.ParallelismConfiguration
+import Amazonka.SageMaker.Types.Parameter
+import Amazonka.SageMaker.Types.ParameterRange
+import Amazonka.SageMaker.Types.ParameterRanges
+import Amazonka.SageMaker.Types.ParameterType
+import Amazonka.SageMaker.Types.Parent
+import Amazonka.SageMaker.Types.ParentHyperParameterTuningJob
+import Amazonka.SageMaker.Types.PendingDeploymentSummary
+import Amazonka.SageMaker.Types.PendingProductionVariantSummary
+import Amazonka.SageMaker.Types.Phase
+import Amazonka.SageMaker.Types.Pipeline
+import Amazonka.SageMaker.Types.PipelineDefinitionS3Location
+import Amazonka.SageMaker.Types.PipelineExecution
+import Amazonka.SageMaker.Types.PipelineExecutionStatus
+import Amazonka.SageMaker.Types.PipelineExecutionStep
+import Amazonka.SageMaker.Types.PipelineExecutionStepMetadata
+import Amazonka.SageMaker.Types.PipelineExecutionSummary
+import Amazonka.SageMaker.Types.PipelineExperimentConfig
+import Amazonka.SageMaker.Types.PipelineStatus
+import Amazonka.SageMaker.Types.PipelineSummary
+import Amazonka.SageMaker.Types.ProblemType
+import Amazonka.SageMaker.Types.ProcessingClusterConfig
+import Amazonka.SageMaker.Types.ProcessingFeatureStoreOutput
+import Amazonka.SageMaker.Types.ProcessingInput
+import Amazonka.SageMaker.Types.ProcessingInstanceType
+import Amazonka.SageMaker.Types.ProcessingJob
+import Amazonka.SageMaker.Types.ProcessingJobStatus
+import Amazonka.SageMaker.Types.ProcessingJobStepMetadata
+import Amazonka.SageMaker.Types.ProcessingJobSummary
+import Amazonka.SageMaker.Types.ProcessingOutput
+import Amazonka.SageMaker.Types.ProcessingOutputConfig
+import Amazonka.SageMaker.Types.ProcessingResources
+import Amazonka.SageMaker.Types.ProcessingS3CompressionType
+import Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+import Amazonka.SageMaker.Types.ProcessingS3DataType
+import Amazonka.SageMaker.Types.ProcessingS3Input
+import Amazonka.SageMaker.Types.ProcessingS3InputMode
+import Amazonka.SageMaker.Types.ProcessingS3Output
+import Amazonka.SageMaker.Types.ProcessingS3UploadMode
+import Amazonka.SageMaker.Types.ProcessingStoppingCondition
+import Amazonka.SageMaker.Types.Processor
+import Amazonka.SageMaker.Types.ProductionVariant
+import Amazonka.SageMaker.Types.ProductionVariantAcceleratorType
+import Amazonka.SageMaker.Types.ProductionVariantCoreDumpConfig
+import Amazonka.SageMaker.Types.ProductionVariantInstanceType
+import Amazonka.SageMaker.Types.ProductionVariantServerlessConfig
+import Amazonka.SageMaker.Types.ProductionVariantStatus
+import Amazonka.SageMaker.Types.ProductionVariantSummary
+import Amazonka.SageMaker.Types.ProfilerConfig
+import Amazonka.SageMaker.Types.ProfilerConfigForUpdate
+import Amazonka.SageMaker.Types.ProfilerRuleConfiguration
+import Amazonka.SageMaker.Types.ProfilerRuleEvaluationStatus
+import Amazonka.SageMaker.Types.ProfilingStatus
+import Amazonka.SageMaker.Types.Project
+import Amazonka.SageMaker.Types.ProjectSortBy
+import Amazonka.SageMaker.Types.ProjectSortOrder
+import Amazonka.SageMaker.Types.ProjectStatus
+import Amazonka.SageMaker.Types.ProjectSummary
+import Amazonka.SageMaker.Types.PropertyNameQuery
+import Amazonka.SageMaker.Types.PropertyNameSuggestion
+import Amazonka.SageMaker.Types.ProvisioningParameter
+import Amazonka.SageMaker.Types.PublicWorkforceTaskPrice
+import Amazonka.SageMaker.Types.QualityCheckStepMetadata
+import Amazonka.SageMaker.Types.QueryFilters
+import Amazonka.SageMaker.Types.RSessionAppSettings
+import Amazonka.SageMaker.Types.RStudioServerProAccessStatus
+import Amazonka.SageMaker.Types.RStudioServerProAppSettings
+import Amazonka.SageMaker.Types.RStudioServerProDomainSettings
+import Amazonka.SageMaker.Types.RStudioServerProDomainSettingsForUpdate
+import Amazonka.SageMaker.Types.RStudioServerProUserGroup
+import Amazonka.SageMaker.Types.RealTimeInferenceConfig
+import Amazonka.SageMaker.Types.RecommendationJobCompiledOutputConfig
+import Amazonka.SageMaker.Types.RecommendationJobContainerConfig
+import Amazonka.SageMaker.Types.RecommendationJobInferenceBenchmark
+import Amazonka.SageMaker.Types.RecommendationJobInputConfig
+import Amazonka.SageMaker.Types.RecommendationJobOutputConfig
+import Amazonka.SageMaker.Types.RecommendationJobPayloadConfig
+import Amazonka.SageMaker.Types.RecommendationJobResourceLimit
+import Amazonka.SageMaker.Types.RecommendationJobStatus
+import Amazonka.SageMaker.Types.RecommendationJobStoppingConditions
+import Amazonka.SageMaker.Types.RecommendationJobType
+import Amazonka.SageMaker.Types.RecommendationJobVpcConfig
+import Amazonka.SageMaker.Types.RecommendationMetrics
+import Amazonka.SageMaker.Types.RecommendationStepType
+import Amazonka.SageMaker.Types.RecordWrapper
+import Amazonka.SageMaker.Types.RedshiftDatasetDefinition
+import Amazonka.SageMaker.Types.RedshiftResultCompressionType
+import Amazonka.SageMaker.Types.RedshiftResultFormat
+import Amazonka.SageMaker.Types.RegisterModelStepMetadata
+import Amazonka.SageMaker.Types.RenderableTask
+import Amazonka.SageMaker.Types.RenderingError
+import Amazonka.SageMaker.Types.RepositoryAccessMode
+import Amazonka.SageMaker.Types.RepositoryAuthConfig
+import Amazonka.SageMaker.Types.ResolvedAttributes
+import Amazonka.SageMaker.Types.ResourceConfig
+import Amazonka.SageMaker.Types.ResourceConfigForUpdate
+import Amazonka.SageMaker.Types.ResourceLimits
+import Amazonka.SageMaker.Types.ResourceSpec
+import Amazonka.SageMaker.Types.ResourceType
+import Amazonka.SageMaker.Types.RetentionPolicy
+import Amazonka.SageMaker.Types.RetentionType
+import Amazonka.SageMaker.Types.RetryStrategy
+import Amazonka.SageMaker.Types.RootAccess
+import Amazonka.SageMaker.Types.RuleEvaluationStatus
+import Amazonka.SageMaker.Types.S3DataDistribution
+import Amazonka.SageMaker.Types.S3DataSource
+import Amazonka.SageMaker.Types.S3DataType
+import Amazonka.SageMaker.Types.S3StorageConfig
+import Amazonka.SageMaker.Types.SagemakerServicecatalogStatus
+import Amazonka.SageMaker.Types.ScheduleConfig
+import Amazonka.SageMaker.Types.ScheduleStatus
+import Amazonka.SageMaker.Types.SearchExpression
+import Amazonka.SageMaker.Types.SearchRecord
+import Amazonka.SageMaker.Types.SearchSortOrder
+import Amazonka.SageMaker.Types.SecondaryStatus
+import Amazonka.SageMaker.Types.SecondaryStatusTransition
+import Amazonka.SageMaker.Types.ServiceCatalogProvisionedProductDetails
+import Amazonka.SageMaker.Types.ServiceCatalogProvisioningDetails
+import Amazonka.SageMaker.Types.ServiceCatalogProvisioningUpdateDetails
+import Amazonka.SageMaker.Types.ShadowModeConfig
+import Amazonka.SageMaker.Types.ShadowModelVariantConfig
+import Amazonka.SageMaker.Types.SharingSettings
+import Amazonka.SageMaker.Types.ShuffleConfig
+import Amazonka.SageMaker.Types.SortActionsBy
+import Amazonka.SageMaker.Types.SortArtifactsBy
+import Amazonka.SageMaker.Types.SortAssociationsBy
+import Amazonka.SageMaker.Types.SortBy
+import Amazonka.SageMaker.Types.SortContextsBy
+import Amazonka.SageMaker.Types.SortExperimentsBy
+import Amazonka.SageMaker.Types.SortInferenceExperimentsBy
+import Amazonka.SageMaker.Types.SortLineageGroupsBy
+import Amazonka.SageMaker.Types.SortOrder
+import Amazonka.SageMaker.Types.SortPipelineExecutionsBy
+import Amazonka.SageMaker.Types.SortPipelinesBy
+import Amazonka.SageMaker.Types.SortTrialComponentsBy
+import Amazonka.SageMaker.Types.SortTrialsBy
+import Amazonka.SageMaker.Types.SourceAlgorithm
+import Amazonka.SageMaker.Types.SourceAlgorithmSpecification
+import Amazonka.SageMaker.Types.SourceIpConfig
+import Amazonka.SageMaker.Types.SpaceDetails
+import Amazonka.SageMaker.Types.SpaceSettings
+import Amazonka.SageMaker.Types.SpaceSortKey
+import Amazonka.SageMaker.Types.SpaceStatus
+import Amazonka.SageMaker.Types.SplitType
+import Amazonka.SageMaker.Types.StageStatus
+import Amazonka.SageMaker.Types.StepStatus
+import Amazonka.SageMaker.Types.StoppingCondition
+import Amazonka.SageMaker.Types.StudioLifecycleConfigAppType
+import Amazonka.SageMaker.Types.StudioLifecycleConfigDetails
+import Amazonka.SageMaker.Types.StudioLifecycleConfigSortKey
+import Amazonka.SageMaker.Types.SubscribedWorkteam
+import Amazonka.SageMaker.Types.SuggestionQuery
+import Amazonka.SageMaker.Types.TableFormat
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TargetDevice
+import Amazonka.SageMaker.Types.TargetPlatform
+import Amazonka.SageMaker.Types.TargetPlatformAccelerator
+import Amazonka.SageMaker.Types.TargetPlatformArch
+import Amazonka.SageMaker.Types.TargetPlatformOs
+import Amazonka.SageMaker.Types.TensorBoardAppSettings
+import Amazonka.SageMaker.Types.TensorBoardOutputConfig
+import Amazonka.SageMaker.Types.TimeSeriesForecastingSettings
+import Amazonka.SageMaker.Types.TrafficPattern
+import Amazonka.SageMaker.Types.TrafficRoutingConfig
+import Amazonka.SageMaker.Types.TrafficRoutingConfigType
+import Amazonka.SageMaker.Types.TrafficType
+import Amazonka.SageMaker.Types.TrainingInputMode
+import Amazonka.SageMaker.Types.TrainingInstanceType
+import Amazonka.SageMaker.Types.TrainingJob
+import Amazonka.SageMaker.Types.TrainingJobDefinition
+import Amazonka.SageMaker.Types.TrainingJobEarlyStoppingType
+import Amazonka.SageMaker.Types.TrainingJobSortByOptions
+import Amazonka.SageMaker.Types.TrainingJobStatus
+import Amazonka.SageMaker.Types.TrainingJobStatusCounters
+import Amazonka.SageMaker.Types.TrainingJobStepMetadata
+import Amazonka.SageMaker.Types.TrainingJobSummary
+import Amazonka.SageMaker.Types.TrainingSpecification
+import Amazonka.SageMaker.Types.TransformDataSource
+import Amazonka.SageMaker.Types.TransformInput
+import Amazonka.SageMaker.Types.TransformInstanceType
+import Amazonka.SageMaker.Types.TransformJob
+import Amazonka.SageMaker.Types.TransformJobDefinition
+import Amazonka.SageMaker.Types.TransformJobStatus
+import Amazonka.SageMaker.Types.TransformJobStepMetadata
+import Amazonka.SageMaker.Types.TransformJobSummary
+import Amazonka.SageMaker.Types.TransformOutput
+import Amazonka.SageMaker.Types.TransformResources
+import Amazonka.SageMaker.Types.TransformS3DataSource
+import Amazonka.SageMaker.Types.Trial
+import Amazonka.SageMaker.Types.TrialComponent
+import Amazonka.SageMaker.Types.TrialComponentArtifact
+import Amazonka.SageMaker.Types.TrialComponentMetricSummary
+import Amazonka.SageMaker.Types.TrialComponentParameterValue
+import Amazonka.SageMaker.Types.TrialComponentPrimaryStatus
+import Amazonka.SageMaker.Types.TrialComponentSimpleSummary
+import Amazonka.SageMaker.Types.TrialComponentSource
+import Amazonka.SageMaker.Types.TrialComponentSourceDetail
+import Amazonka.SageMaker.Types.TrialComponentStatus
+import Amazonka.SageMaker.Types.TrialComponentSummary
+import Amazonka.SageMaker.Types.TrialSource
+import Amazonka.SageMaker.Types.TrialSummary
+import Amazonka.SageMaker.Types.TuningJobCompletionCriteria
+import Amazonka.SageMaker.Types.TuningJobStepMetaData
+import Amazonka.SageMaker.Types.USD
+import Amazonka.SageMaker.Types.UiConfig
+import Amazonka.SageMaker.Types.UiTemplate
+import Amazonka.SageMaker.Types.UiTemplateInfo
+import Amazonka.SageMaker.Types.UserContext
+import Amazonka.SageMaker.Types.UserProfileDetails
+import Amazonka.SageMaker.Types.UserProfileSortKey
+import Amazonka.SageMaker.Types.UserProfileStatus
+import Amazonka.SageMaker.Types.UserSettings
+import Amazonka.SageMaker.Types.VariantProperty
+import Amazonka.SageMaker.Types.VariantPropertyType
+import Amazonka.SageMaker.Types.VariantStatus
+import Amazonka.SageMaker.Types.VendorGuidance
+import Amazonka.SageMaker.Types.Vertex
+import Amazonka.SageMaker.Types.VpcConfig
+import Amazonka.SageMaker.Types.WarmPoolResourceStatus
+import Amazonka.SageMaker.Types.WarmPoolStatus
+import Amazonka.SageMaker.Types.Workforce
+import Amazonka.SageMaker.Types.WorkforceStatus
+import Amazonka.SageMaker.Types.WorkforceVpcConfigRequest
+import Amazonka.SageMaker.Types.WorkforceVpcConfigResponse
+import Amazonka.SageMaker.Types.Workteam
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-07-24@ of the Amazon SageMaker Service SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "SageMaker",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "api.sagemaker",
+      Core.signingName = "sagemaker",
+      Core.version = "2017-07-24",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "SageMaker",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | There was a conflict when you attempted to modify a SageMaker entity
+-- such as an @Experiment@ or @Artifact@.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+
+-- | Resource being accessed is in use.
+_ResourceInUse :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceInUse =
+  Core._MatchServiceError
+    defaultService
+    "ResourceInUse"
+
+-- | You have exceeded an SageMaker resource limit. For example, you might
+-- have too many training jobs created.
+_ResourceLimitExceeded :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceLimitExceeded =
+  Core._MatchServiceError
+    defaultService
+    "ResourceLimitExceeded"
+
+-- | Resource being access is not found.
+_ResourceNotFound :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFound =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFound"
diff --git a/gen/Amazonka/SageMaker/Types/ActionSource.hs b/gen/Amazonka/SageMaker/Types/ActionSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ActionSource.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ActionSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ActionSource 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
+
+-- | A structure describing the source of an action.
+--
+-- /See:/ 'newActionSource' smart constructor.
+data ActionSource = ActionSource'
+  { -- | The ID of the source.
+    sourceId :: Prelude.Maybe Prelude.Text,
+    -- | The type of the source.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The URI of the source.
+    sourceUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActionSource' 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:
+--
+-- 'sourceId', 'actionSource_sourceId' - The ID of the source.
+--
+-- 'sourceType', 'actionSource_sourceType' - The type of the source.
+--
+-- 'sourceUri', 'actionSource_sourceUri' - The URI of the source.
+newActionSource ::
+  -- | 'sourceUri'
+  Prelude.Text ->
+  ActionSource
+newActionSource pSourceUri_ =
+  ActionSource'
+    { sourceId = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      sourceUri = pSourceUri_
+    }
+
+-- | The ID of the source.
+actionSource_sourceId :: Lens.Lens' ActionSource (Prelude.Maybe Prelude.Text)
+actionSource_sourceId = Lens.lens (\ActionSource' {sourceId} -> sourceId) (\s@ActionSource' {} a -> s {sourceId = a} :: ActionSource)
+
+-- | The type of the source.
+actionSource_sourceType :: Lens.Lens' ActionSource (Prelude.Maybe Prelude.Text)
+actionSource_sourceType = Lens.lens (\ActionSource' {sourceType} -> sourceType) (\s@ActionSource' {} a -> s {sourceType = a} :: ActionSource)
+
+-- | The URI of the source.
+actionSource_sourceUri :: Lens.Lens' ActionSource Prelude.Text
+actionSource_sourceUri = Lens.lens (\ActionSource' {sourceUri} -> sourceUri) (\s@ActionSource' {} a -> s {sourceUri = a} :: ActionSource)
+
+instance Data.FromJSON ActionSource where
+  parseJSON =
+    Data.withObject
+      "ActionSource"
+      ( \x ->
+          ActionSource'
+            Prelude.<$> (x Data..:? "SourceId")
+            Prelude.<*> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..: "SourceUri")
+      )
+
+instance Prelude.Hashable ActionSource where
+  hashWithSalt _salt ActionSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceId
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceUri
+
+instance Prelude.NFData ActionSource where
+  rnf ActionSource' {..} =
+    Prelude.rnf sourceId
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceUri
+
+instance Data.ToJSON ActionSource where
+  toJSON ActionSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceId" Data..=) Prelude.<$> sourceId,
+            ("SourceType" Data..=) Prelude.<$> sourceType,
+            Prelude.Just ("SourceUri" Data..= sourceUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ActionStatus.hs b/gen/Amazonka/SageMaker/Types/ActionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ActionStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ActionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ActionStatus
+  ( ActionStatus
+      ( ..,
+        ActionStatus_Completed,
+        ActionStatus_Failed,
+        ActionStatus_InProgress,
+        ActionStatus_Stopped,
+        ActionStatus_Stopping,
+        ActionStatus_Unknown
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ActionStatus = ActionStatus'
+  { fromActionStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ActionStatus_Completed :: ActionStatus
+pattern ActionStatus_Completed = ActionStatus' "Completed"
+
+pattern ActionStatus_Failed :: ActionStatus
+pattern ActionStatus_Failed = ActionStatus' "Failed"
+
+pattern ActionStatus_InProgress :: ActionStatus
+pattern ActionStatus_InProgress = ActionStatus' "InProgress"
+
+pattern ActionStatus_Stopped :: ActionStatus
+pattern ActionStatus_Stopped = ActionStatus' "Stopped"
+
+pattern ActionStatus_Stopping :: ActionStatus
+pattern ActionStatus_Stopping = ActionStatus' "Stopping"
+
+pattern ActionStatus_Unknown :: ActionStatus
+pattern ActionStatus_Unknown = ActionStatus' "Unknown"
+
+{-# COMPLETE
+  ActionStatus_Completed,
+  ActionStatus_Failed,
+  ActionStatus_InProgress,
+  ActionStatus_Stopped,
+  ActionStatus_Stopping,
+  ActionStatus_Unknown,
+  ActionStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ActionSummary.hs b/gen/Amazonka/SageMaker/Types/ActionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ActionSummary.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ActionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ActionSummary 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 Amazonka.SageMaker.Types.ActionSource
+import Amazonka.SageMaker.Types.ActionStatus
+
+-- | Lists the properties of an /action/. An action represents an action or
+-- activity. Some examples are a workflow step and a model deployment.
+-- Generally, an action involves at least one input artifact or output
+-- artifact.
+--
+-- /See:/ 'newActionSummary' smart constructor.
+data ActionSummary = ActionSummary'
+  { -- | The Amazon Resource Name (ARN) of the action.
+    actionArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the action.
+    actionName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the action.
+    actionType :: Prelude.Maybe Prelude.Text,
+    -- | When the action was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | When the action was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The source of the action.
+    source :: Prelude.Maybe ActionSource,
+    -- | The status of the action.
+    status :: Prelude.Maybe ActionStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActionSummary' 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:
+--
+-- 'actionArn', 'actionSummary_actionArn' - The Amazon Resource Name (ARN) of the action.
+--
+-- 'actionName', 'actionSummary_actionName' - The name of the action.
+--
+-- 'actionType', 'actionSummary_actionType' - The type of the action.
+--
+-- 'creationTime', 'actionSummary_creationTime' - When the action was created.
+--
+-- 'lastModifiedTime', 'actionSummary_lastModifiedTime' - When the action was last modified.
+--
+-- 'source', 'actionSummary_source' - The source of the action.
+--
+-- 'status', 'actionSummary_status' - The status of the action.
+newActionSummary ::
+  ActionSummary
+newActionSummary =
+  ActionSummary'
+    { actionArn = Prelude.Nothing,
+      actionName = Prelude.Nothing,
+      actionType = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      source = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the action.
+actionSummary_actionArn :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.Text)
+actionSummary_actionArn = Lens.lens (\ActionSummary' {actionArn} -> actionArn) (\s@ActionSummary' {} a -> s {actionArn = a} :: ActionSummary)
+
+-- | The name of the action.
+actionSummary_actionName :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.Text)
+actionSummary_actionName = Lens.lens (\ActionSummary' {actionName} -> actionName) (\s@ActionSummary' {} a -> s {actionName = a} :: ActionSummary)
+
+-- | The type of the action.
+actionSummary_actionType :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.Text)
+actionSummary_actionType = Lens.lens (\ActionSummary' {actionType} -> actionType) (\s@ActionSummary' {} a -> s {actionType = a} :: ActionSummary)
+
+-- | When the action was created.
+actionSummary_creationTime :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.UTCTime)
+actionSummary_creationTime = Lens.lens (\ActionSummary' {creationTime} -> creationTime) (\s@ActionSummary' {} a -> s {creationTime = a} :: ActionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | When the action was last modified.
+actionSummary_lastModifiedTime :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.UTCTime)
+actionSummary_lastModifiedTime = Lens.lens (\ActionSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ActionSummary' {} a -> s {lastModifiedTime = a} :: ActionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The source of the action.
+actionSummary_source :: Lens.Lens' ActionSummary (Prelude.Maybe ActionSource)
+actionSummary_source = Lens.lens (\ActionSummary' {source} -> source) (\s@ActionSummary' {} a -> s {source = a} :: ActionSummary)
+
+-- | The status of the action.
+actionSummary_status :: Lens.Lens' ActionSummary (Prelude.Maybe ActionStatus)
+actionSummary_status = Lens.lens (\ActionSummary' {status} -> status) (\s@ActionSummary' {} a -> s {status = a} :: ActionSummary)
+
+instance Data.FromJSON ActionSummary where
+  parseJSON =
+    Data.withObject
+      "ActionSummary"
+      ( \x ->
+          ActionSummary'
+            Prelude.<$> (x Data..:? "ActionArn")
+            Prelude.<*> (x Data..:? "ActionName")
+            Prelude.<*> (x Data..:? "ActionType")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable ActionSummary where
+  hashWithSalt _salt ActionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` actionArn
+      `Prelude.hashWithSalt` actionName
+      `Prelude.hashWithSalt` actionType
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ActionSummary where
+  rnf ActionSummary' {..} =
+    Prelude.rnf actionArn
+      `Prelude.seq` Prelude.rnf actionName
+      `Prelude.seq` Prelude.rnf actionType
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/AdditionalInferenceSpecificationDefinition.hs b/gen/Amazonka/SageMaker/Types/AdditionalInferenceSpecificationDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AdditionalInferenceSpecificationDefinition.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AdditionalInferenceSpecificationDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AdditionalInferenceSpecificationDefinition 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 Amazonka.SageMaker.Types.ModelPackageContainerDefinition
+import Amazonka.SageMaker.Types.ProductionVariantInstanceType
+import Amazonka.SageMaker.Types.TransformInstanceType
+
+-- | A structure of additional Inference Specification. Additional Inference
+-- Specification specifies details about inference jobs that can be run
+-- with models based on this model package
+--
+-- /See:/ 'newAdditionalInferenceSpecificationDefinition' smart constructor.
+data AdditionalInferenceSpecificationDefinition = AdditionalInferenceSpecificationDefinition'
+  { -- | A description of the additional Inference specification
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The supported MIME types for the input data.
+    supportedContentTypes :: Prelude.Maybe [Prelude.Text],
+    -- | A list of the instance types that are used to generate inferences in
+    -- real-time.
+    supportedRealtimeInferenceInstanceTypes :: Prelude.Maybe [ProductionVariantInstanceType],
+    -- | The supported MIME types for the output data.
+    supportedResponseMIMETypes :: Prelude.Maybe [Prelude.Text],
+    -- | A list of the instance types on which a transformation job can be run or
+    -- on which an endpoint can be deployed.
+    supportedTransformInstanceTypes :: Prelude.Maybe (Prelude.NonEmpty TransformInstanceType),
+    -- | A unique name to identify the additional inference specification. The
+    -- name must be unique within the list of your additional inference
+    -- specifications for a particular model package.
+    name :: Prelude.Text,
+    -- | The Amazon ECR registry path of the Docker image that contains the
+    -- inference code.
+    containers :: Prelude.NonEmpty ModelPackageContainerDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AdditionalInferenceSpecificationDefinition' 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:
+--
+-- 'description', 'additionalInferenceSpecificationDefinition_description' - A description of the additional Inference specification
+--
+-- 'supportedContentTypes', 'additionalInferenceSpecificationDefinition_supportedContentTypes' - The supported MIME types for the input data.
+--
+-- 'supportedRealtimeInferenceInstanceTypes', 'additionalInferenceSpecificationDefinition_supportedRealtimeInferenceInstanceTypes' - A list of the instance types that are used to generate inferences in
+-- real-time.
+--
+-- 'supportedResponseMIMETypes', 'additionalInferenceSpecificationDefinition_supportedResponseMIMETypes' - The supported MIME types for the output data.
+--
+-- 'supportedTransformInstanceTypes', 'additionalInferenceSpecificationDefinition_supportedTransformInstanceTypes' - A list of the instance types on which a transformation job can be run or
+-- on which an endpoint can be deployed.
+--
+-- 'name', 'additionalInferenceSpecificationDefinition_name' - A unique name to identify the additional inference specification. The
+-- name must be unique within the list of your additional inference
+-- specifications for a particular model package.
+--
+-- 'containers', 'additionalInferenceSpecificationDefinition_containers' - The Amazon ECR registry path of the Docker image that contains the
+-- inference code.
+newAdditionalInferenceSpecificationDefinition ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'containers'
+  Prelude.NonEmpty ModelPackageContainerDefinition ->
+  AdditionalInferenceSpecificationDefinition
+newAdditionalInferenceSpecificationDefinition
+  pName_
+  pContainers_ =
+    AdditionalInferenceSpecificationDefinition'
+      { description =
+          Prelude.Nothing,
+        supportedContentTypes =
+          Prelude.Nothing,
+        supportedRealtimeInferenceInstanceTypes =
+          Prelude.Nothing,
+        supportedResponseMIMETypes =
+          Prelude.Nothing,
+        supportedTransformInstanceTypes =
+          Prelude.Nothing,
+        name = pName_,
+        containers =
+          Lens.coerced
+            Lens.# pContainers_
+      }
+
+-- | A description of the additional Inference specification
+additionalInferenceSpecificationDefinition_description :: Lens.Lens' AdditionalInferenceSpecificationDefinition (Prelude.Maybe Prelude.Text)
+additionalInferenceSpecificationDefinition_description = Lens.lens (\AdditionalInferenceSpecificationDefinition' {description} -> description) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {description = a} :: AdditionalInferenceSpecificationDefinition)
+
+-- | The supported MIME types for the input data.
+additionalInferenceSpecificationDefinition_supportedContentTypes :: Lens.Lens' AdditionalInferenceSpecificationDefinition (Prelude.Maybe [Prelude.Text])
+additionalInferenceSpecificationDefinition_supportedContentTypes = Lens.lens (\AdditionalInferenceSpecificationDefinition' {supportedContentTypes} -> supportedContentTypes) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {supportedContentTypes = a} :: AdditionalInferenceSpecificationDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the instance types that are used to generate inferences in
+-- real-time.
+additionalInferenceSpecificationDefinition_supportedRealtimeInferenceInstanceTypes :: Lens.Lens' AdditionalInferenceSpecificationDefinition (Prelude.Maybe [ProductionVariantInstanceType])
+additionalInferenceSpecificationDefinition_supportedRealtimeInferenceInstanceTypes = Lens.lens (\AdditionalInferenceSpecificationDefinition' {supportedRealtimeInferenceInstanceTypes} -> supportedRealtimeInferenceInstanceTypes) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {supportedRealtimeInferenceInstanceTypes = a} :: AdditionalInferenceSpecificationDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The supported MIME types for the output data.
+additionalInferenceSpecificationDefinition_supportedResponseMIMETypes :: Lens.Lens' AdditionalInferenceSpecificationDefinition (Prelude.Maybe [Prelude.Text])
+additionalInferenceSpecificationDefinition_supportedResponseMIMETypes = Lens.lens (\AdditionalInferenceSpecificationDefinition' {supportedResponseMIMETypes} -> supportedResponseMIMETypes) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {supportedResponseMIMETypes = a} :: AdditionalInferenceSpecificationDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the instance types on which a transformation job can be run or
+-- on which an endpoint can be deployed.
+additionalInferenceSpecificationDefinition_supportedTransformInstanceTypes :: Lens.Lens' AdditionalInferenceSpecificationDefinition (Prelude.Maybe (Prelude.NonEmpty TransformInstanceType))
+additionalInferenceSpecificationDefinition_supportedTransformInstanceTypes = Lens.lens (\AdditionalInferenceSpecificationDefinition' {supportedTransformInstanceTypes} -> supportedTransformInstanceTypes) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {supportedTransformInstanceTypes = a} :: AdditionalInferenceSpecificationDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | A unique name to identify the additional inference specification. The
+-- name must be unique within the list of your additional inference
+-- specifications for a particular model package.
+additionalInferenceSpecificationDefinition_name :: Lens.Lens' AdditionalInferenceSpecificationDefinition Prelude.Text
+additionalInferenceSpecificationDefinition_name = Lens.lens (\AdditionalInferenceSpecificationDefinition' {name} -> name) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {name = a} :: AdditionalInferenceSpecificationDefinition)
+
+-- | The Amazon ECR registry path of the Docker image that contains the
+-- inference code.
+additionalInferenceSpecificationDefinition_containers :: Lens.Lens' AdditionalInferenceSpecificationDefinition (Prelude.NonEmpty ModelPackageContainerDefinition)
+additionalInferenceSpecificationDefinition_containers = Lens.lens (\AdditionalInferenceSpecificationDefinition' {containers} -> containers) (\s@AdditionalInferenceSpecificationDefinition' {} a -> s {containers = a} :: AdditionalInferenceSpecificationDefinition) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    AdditionalInferenceSpecificationDefinition
+  where
+  parseJSON =
+    Data.withObject
+      "AdditionalInferenceSpecificationDefinition"
+      ( \x ->
+          AdditionalInferenceSpecificationDefinition'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> ( x
+                            Data..:? "SupportedContentTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedRealtimeInferenceInstanceTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedResponseMIMETypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SupportedTransformInstanceTypes")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Containers")
+      )
+
+instance
+  Prelude.Hashable
+    AdditionalInferenceSpecificationDefinition
+  where
+  hashWithSalt
+    _salt
+    AdditionalInferenceSpecificationDefinition' {..} =
+      _salt
+        `Prelude.hashWithSalt` description
+        `Prelude.hashWithSalt` supportedContentTypes
+        `Prelude.hashWithSalt` supportedRealtimeInferenceInstanceTypes
+        `Prelude.hashWithSalt` supportedResponseMIMETypes
+        `Prelude.hashWithSalt` supportedTransformInstanceTypes
+        `Prelude.hashWithSalt` name
+        `Prelude.hashWithSalt` containers
+
+instance
+  Prelude.NFData
+    AdditionalInferenceSpecificationDefinition
+  where
+  rnf AdditionalInferenceSpecificationDefinition' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf supportedContentTypes
+      `Prelude.seq` Prelude.rnf supportedRealtimeInferenceInstanceTypes
+      `Prelude.seq` Prelude.rnf supportedResponseMIMETypes
+      `Prelude.seq` Prelude.rnf supportedTransformInstanceTypes
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf containers
+
+instance
+  Data.ToJSON
+    AdditionalInferenceSpecificationDefinition
+  where
+  toJSON
+    AdditionalInferenceSpecificationDefinition' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("Description" Data..=) Prelude.<$> description,
+              ("SupportedContentTypes" Data..=)
+                Prelude.<$> supportedContentTypes,
+              ("SupportedRealtimeInferenceInstanceTypes" Data..=)
+                Prelude.<$> supportedRealtimeInferenceInstanceTypes,
+              ("SupportedResponseMIMETypes" Data..=)
+                Prelude.<$> supportedResponseMIMETypes,
+              ("SupportedTransformInstanceTypes" Data..=)
+                Prelude.<$> supportedTransformInstanceTypes,
+              Prelude.Just ("Name" Data..= name),
+              Prelude.Just ("Containers" Data..= containers)
+            ]
+        )
diff --git a/gen/Amazonka/SageMaker/Types/AgentVersion.hs b/gen/Amazonka/SageMaker/Types/AgentVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AgentVersion.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AgentVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AgentVersion 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
+
+-- | Edge Manager agent version.
+--
+-- /See:/ 'newAgentVersion' smart constructor.
+data AgentVersion = AgentVersion'
+  { -- | Version of the agent.
+    version :: Prelude.Text,
+    -- | The number of Edge Manager agents.
+    agentCount :: Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AgentVersion' 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:
+--
+-- 'version', 'agentVersion_version' - Version of the agent.
+--
+-- 'agentCount', 'agentVersion_agentCount' - The number of Edge Manager agents.
+newAgentVersion ::
+  -- | 'version'
+  Prelude.Text ->
+  -- | 'agentCount'
+  Prelude.Integer ->
+  AgentVersion
+newAgentVersion pVersion_ pAgentCount_ =
+  AgentVersion'
+    { version = pVersion_,
+      agentCount = pAgentCount_
+    }
+
+-- | Version of the agent.
+agentVersion_version :: Lens.Lens' AgentVersion Prelude.Text
+agentVersion_version = Lens.lens (\AgentVersion' {version} -> version) (\s@AgentVersion' {} a -> s {version = a} :: AgentVersion)
+
+-- | The number of Edge Manager agents.
+agentVersion_agentCount :: Lens.Lens' AgentVersion Prelude.Integer
+agentVersion_agentCount = Lens.lens (\AgentVersion' {agentCount} -> agentCount) (\s@AgentVersion' {} a -> s {agentCount = a} :: AgentVersion)
+
+instance Data.FromJSON AgentVersion where
+  parseJSON =
+    Data.withObject
+      "AgentVersion"
+      ( \x ->
+          AgentVersion'
+            Prelude.<$> (x Data..: "Version")
+            Prelude.<*> (x Data..: "AgentCount")
+      )
+
+instance Prelude.Hashable AgentVersion where
+  hashWithSalt _salt AgentVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` version
+      `Prelude.hashWithSalt` agentCount
+
+instance Prelude.NFData AgentVersion where
+  rnf AgentVersion' {..} =
+    Prelude.rnf version
+      `Prelude.seq` Prelude.rnf agentCount
diff --git a/gen/Amazonka/SageMaker/Types/Alarm.hs b/gen/Amazonka/SageMaker/Types/Alarm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Alarm.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Alarm
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Alarm 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
+
+-- | An Amazon CloudWatch alarm configured to monitor metrics on an endpoint.
+--
+-- /See:/ 'newAlarm' smart constructor.
+data Alarm = Alarm'
+  { -- | The name of a CloudWatch alarm in your account.
+    alarmName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Alarm' 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:
+--
+-- 'alarmName', 'alarm_alarmName' - The name of a CloudWatch alarm in your account.
+newAlarm ::
+  Alarm
+newAlarm = Alarm' {alarmName = Prelude.Nothing}
+
+-- | The name of a CloudWatch alarm in your account.
+alarm_alarmName :: Lens.Lens' Alarm (Prelude.Maybe Prelude.Text)
+alarm_alarmName = Lens.lens (\Alarm' {alarmName} -> alarmName) (\s@Alarm' {} a -> s {alarmName = a} :: Alarm)
+
+instance Data.FromJSON Alarm where
+  parseJSON =
+    Data.withObject
+      "Alarm"
+      (\x -> Alarm' Prelude.<$> (x Data..:? "AlarmName"))
+
+instance Prelude.Hashable Alarm where
+  hashWithSalt _salt Alarm' {..} =
+    _salt `Prelude.hashWithSalt` alarmName
+
+instance Prelude.NFData Alarm where
+  rnf Alarm' {..} = Prelude.rnf alarmName
+
+instance Data.ToJSON Alarm where
+  toJSON Alarm' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("AlarmName" Data..=) Prelude.<$> alarmName]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmSortBy.hs b/gen/Amazonka/SageMaker/Types/AlgorithmSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmSortBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AlgorithmSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmSortBy
+  ( AlgorithmSortBy
+      ( ..,
+        AlgorithmSortBy_CreationTime,
+        AlgorithmSortBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AlgorithmSortBy = AlgorithmSortBy'
+  { fromAlgorithmSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AlgorithmSortBy_CreationTime :: AlgorithmSortBy
+pattern AlgorithmSortBy_CreationTime = AlgorithmSortBy' "CreationTime"
+
+pattern AlgorithmSortBy_Name :: AlgorithmSortBy
+pattern AlgorithmSortBy_Name = AlgorithmSortBy' "Name"
+
+{-# COMPLETE
+  AlgorithmSortBy_CreationTime,
+  AlgorithmSortBy_Name,
+  AlgorithmSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmSpecification.hs b/gen/Amazonka/SageMaker/Types/AlgorithmSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmSpecification.hs
@@ -0,0 +1,337 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AlgorithmSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmSpecification 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 Amazonka.SageMaker.Types.MetricDefinition
+import Amazonka.SageMaker.Types.TrainingInputMode
+
+-- | Specifies the training algorithm to use in a CreateTrainingJob request.
+--
+-- For more information about algorithms provided by SageMaker, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+-- For information about using your own algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+--
+-- /See:/ 'newAlgorithmSpecification' smart constructor.
+data AlgorithmSpecification = AlgorithmSpecification'
+  { -- | The name of the algorithm resource to use for the training job. This
+    -- must be an algorithm resource that you created or subscribe to on Amazon
+    -- Web Services Marketplace.
+    --
+    -- You must specify either the algorithm name to the @AlgorithmName@
+    -- parameter or the image URI of the algorithm container to the
+    -- @TrainingImage@ parameter.
+    --
+    -- Note that the @AlgorithmName@ parameter is mutually exclusive with the
+    -- @TrainingImage@ parameter. If you specify a value for the
+    -- @AlgorithmName@ parameter, you can\'t specify a value for
+    -- @TrainingImage@, and vice versa.
+    --
+    -- If you specify values for both parameters, the training job might break;
+    -- if you don\'t specify any value for both parameters, the training job
+    -- might raise a @null@ error.
+    algorithmName :: Prelude.Maybe Prelude.Text,
+    -- | The arguments for a container used to run a training job. See
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html How Amazon SageMaker Runs Your Training Image>
+    -- for additional information.
+    containerArguments :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The
+    -- <https://docs.docker.com/engine/reference/builder/ entrypoint script for a Docker container>
+    -- used to run a training job. This script takes precedence over the
+    -- default train processing instructions. See
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html How Amazon SageMaker Runs Your Training Image>
+    -- for more information.
+    containerEntrypoint :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | To generate and save time-series metrics during training, set to @true@.
+    -- The default is @false@ and time-series metrics aren\'t generated except
+    -- in the following cases:
+    --
+    -- -   You use one of the SageMaker built-in algorithms
+    --
+    -- -   You use one of the following
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-containers-frameworks-deep-learning.html Prebuilt SageMaker Docker Images>:
+    --
+    --     -   Tensorflow (version >= 1.15)
+    --
+    --     -   MXNet (version >= 1.6)
+    --
+    --     -   PyTorch (version >= 1.3)
+    --
+    -- -   You specify at least one MetricDefinition
+    enableSageMakerMetricsTimeSeries :: Prelude.Maybe Prelude.Bool,
+    -- | A list of metric definition objects. Each object specifies the metric
+    -- name and regular expressions used to parse algorithm logs. SageMaker
+    -- publishes each metric to Amazon CloudWatch.
+    metricDefinitions :: Prelude.Maybe [MetricDefinition],
+    -- | The registry path of the Docker image that contains the training
+    -- algorithm. For information about docker registry paths for SageMaker
+    -- built-in algorithms, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Docker Registry Paths and Example Code>
+    -- in the /Amazon SageMaker developer guide/. SageMaker supports both
+    -- @registry\/repository[:tag]@ and @registry\/repository[\@digest]@ image
+    -- path formats. For more information about using your custom training
+    -- container, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+    --
+    -- You must specify either the algorithm name to the @AlgorithmName@
+    -- parameter or the image URI of the algorithm container to the
+    -- @TrainingImage@ parameter.
+    --
+    -- For more information, see the note in the @AlgorithmName@ parameter
+    -- description.
+    trainingImage :: Prelude.Maybe Prelude.Text,
+    trainingInputMode :: TrainingInputMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmSpecification' 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:
+--
+-- 'algorithmName', 'algorithmSpecification_algorithmName' - The name of the algorithm resource to use for the training job. This
+-- must be an algorithm resource that you created or subscribe to on Amazon
+-- Web Services Marketplace.
+--
+-- You must specify either the algorithm name to the @AlgorithmName@
+-- parameter or the image URI of the algorithm container to the
+-- @TrainingImage@ parameter.
+--
+-- Note that the @AlgorithmName@ parameter is mutually exclusive with the
+-- @TrainingImage@ parameter. If you specify a value for the
+-- @AlgorithmName@ parameter, you can\'t specify a value for
+-- @TrainingImage@, and vice versa.
+--
+-- If you specify values for both parameters, the training job might break;
+-- if you don\'t specify any value for both parameters, the training job
+-- might raise a @null@ error.
+--
+-- 'containerArguments', 'algorithmSpecification_containerArguments' - The arguments for a container used to run a training job. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html How Amazon SageMaker Runs Your Training Image>
+-- for additional information.
+--
+-- 'containerEntrypoint', 'algorithmSpecification_containerEntrypoint' - The
+-- <https://docs.docker.com/engine/reference/builder/ entrypoint script for a Docker container>
+-- used to run a training job. This script takes precedence over the
+-- default train processing instructions. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html How Amazon SageMaker Runs Your Training Image>
+-- for more information.
+--
+-- 'enableSageMakerMetricsTimeSeries', 'algorithmSpecification_enableSageMakerMetricsTimeSeries' - To generate and save time-series metrics during training, set to @true@.
+-- The default is @false@ and time-series metrics aren\'t generated except
+-- in the following cases:
+--
+-- -   You use one of the SageMaker built-in algorithms
+--
+-- -   You use one of the following
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-containers-frameworks-deep-learning.html Prebuilt SageMaker Docker Images>:
+--
+--     -   Tensorflow (version >= 1.15)
+--
+--     -   MXNet (version >= 1.6)
+--
+--     -   PyTorch (version >= 1.3)
+--
+-- -   You specify at least one MetricDefinition
+--
+-- 'metricDefinitions', 'algorithmSpecification_metricDefinitions' - A list of metric definition objects. Each object specifies the metric
+-- name and regular expressions used to parse algorithm logs. SageMaker
+-- publishes each metric to Amazon CloudWatch.
+--
+-- 'trainingImage', 'algorithmSpecification_trainingImage' - The registry path of the Docker image that contains the training
+-- algorithm. For information about docker registry paths for SageMaker
+-- built-in algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Docker Registry Paths and Example Code>
+-- in the /Amazon SageMaker developer guide/. SageMaker supports both
+-- @registry\/repository[:tag]@ and @registry\/repository[\@digest]@ image
+-- path formats. For more information about using your custom training
+-- container, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+--
+-- You must specify either the algorithm name to the @AlgorithmName@
+-- parameter or the image URI of the algorithm container to the
+-- @TrainingImage@ parameter.
+--
+-- For more information, see the note in the @AlgorithmName@ parameter
+-- description.
+--
+-- 'trainingInputMode', 'algorithmSpecification_trainingInputMode' - Undocumented member.
+newAlgorithmSpecification ::
+  -- | 'trainingInputMode'
+  TrainingInputMode ->
+  AlgorithmSpecification
+newAlgorithmSpecification pTrainingInputMode_ =
+  AlgorithmSpecification'
+    { algorithmName =
+        Prelude.Nothing,
+      containerArguments = Prelude.Nothing,
+      containerEntrypoint = Prelude.Nothing,
+      enableSageMakerMetricsTimeSeries = Prelude.Nothing,
+      metricDefinitions = Prelude.Nothing,
+      trainingImage = Prelude.Nothing,
+      trainingInputMode = pTrainingInputMode_
+    }
+
+-- | The name of the algorithm resource to use for the training job. This
+-- must be an algorithm resource that you created or subscribe to on Amazon
+-- Web Services Marketplace.
+--
+-- You must specify either the algorithm name to the @AlgorithmName@
+-- parameter or the image URI of the algorithm container to the
+-- @TrainingImage@ parameter.
+--
+-- Note that the @AlgorithmName@ parameter is mutually exclusive with the
+-- @TrainingImage@ parameter. If you specify a value for the
+-- @AlgorithmName@ parameter, you can\'t specify a value for
+-- @TrainingImage@, and vice versa.
+--
+-- If you specify values for both parameters, the training job might break;
+-- if you don\'t specify any value for both parameters, the training job
+-- might raise a @null@ error.
+algorithmSpecification_algorithmName :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe Prelude.Text)
+algorithmSpecification_algorithmName = Lens.lens (\AlgorithmSpecification' {algorithmName} -> algorithmName) (\s@AlgorithmSpecification' {} a -> s {algorithmName = a} :: AlgorithmSpecification)
+
+-- | The arguments for a container used to run a training job. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html How Amazon SageMaker Runs Your Training Image>
+-- for additional information.
+algorithmSpecification_containerArguments :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+algorithmSpecification_containerArguments = Lens.lens (\AlgorithmSpecification' {containerArguments} -> containerArguments) (\s@AlgorithmSpecification' {} a -> s {containerArguments = a} :: AlgorithmSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The
+-- <https://docs.docker.com/engine/reference/builder/ entrypoint script for a Docker container>
+-- used to run a training job. This script takes precedence over the
+-- default train processing instructions. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html How Amazon SageMaker Runs Your Training Image>
+-- for more information.
+algorithmSpecification_containerEntrypoint :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+algorithmSpecification_containerEntrypoint = Lens.lens (\AlgorithmSpecification' {containerEntrypoint} -> containerEntrypoint) (\s@AlgorithmSpecification' {} a -> s {containerEntrypoint = a} :: AlgorithmSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | To generate and save time-series metrics during training, set to @true@.
+-- The default is @false@ and time-series metrics aren\'t generated except
+-- in the following cases:
+--
+-- -   You use one of the SageMaker built-in algorithms
+--
+-- -   You use one of the following
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-containers-frameworks-deep-learning.html Prebuilt SageMaker Docker Images>:
+--
+--     -   Tensorflow (version >= 1.15)
+--
+--     -   MXNet (version >= 1.6)
+--
+--     -   PyTorch (version >= 1.3)
+--
+-- -   You specify at least one MetricDefinition
+algorithmSpecification_enableSageMakerMetricsTimeSeries :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe Prelude.Bool)
+algorithmSpecification_enableSageMakerMetricsTimeSeries = Lens.lens (\AlgorithmSpecification' {enableSageMakerMetricsTimeSeries} -> enableSageMakerMetricsTimeSeries) (\s@AlgorithmSpecification' {} a -> s {enableSageMakerMetricsTimeSeries = a} :: AlgorithmSpecification)
+
+-- | A list of metric definition objects. Each object specifies the metric
+-- name and regular expressions used to parse algorithm logs. SageMaker
+-- publishes each metric to Amazon CloudWatch.
+algorithmSpecification_metricDefinitions :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe [MetricDefinition])
+algorithmSpecification_metricDefinitions = Lens.lens (\AlgorithmSpecification' {metricDefinitions} -> metricDefinitions) (\s@AlgorithmSpecification' {} a -> s {metricDefinitions = a} :: AlgorithmSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The registry path of the Docker image that contains the training
+-- algorithm. For information about docker registry paths for SageMaker
+-- built-in algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Docker Registry Paths and Example Code>
+-- in the /Amazon SageMaker developer guide/. SageMaker supports both
+-- @registry\/repository[:tag]@ and @registry\/repository[\@digest]@ image
+-- path formats. For more information about using your custom training
+-- container, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+--
+-- You must specify either the algorithm name to the @AlgorithmName@
+-- parameter or the image URI of the algorithm container to the
+-- @TrainingImage@ parameter.
+--
+-- For more information, see the note in the @AlgorithmName@ parameter
+-- description.
+algorithmSpecification_trainingImage :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe Prelude.Text)
+algorithmSpecification_trainingImage = Lens.lens (\AlgorithmSpecification' {trainingImage} -> trainingImage) (\s@AlgorithmSpecification' {} a -> s {trainingImage = a} :: AlgorithmSpecification)
+
+-- | Undocumented member.
+algorithmSpecification_trainingInputMode :: Lens.Lens' AlgorithmSpecification TrainingInputMode
+algorithmSpecification_trainingInputMode = Lens.lens (\AlgorithmSpecification' {trainingInputMode} -> trainingInputMode) (\s@AlgorithmSpecification' {} a -> s {trainingInputMode = a} :: AlgorithmSpecification)
+
+instance Data.FromJSON AlgorithmSpecification where
+  parseJSON =
+    Data.withObject
+      "AlgorithmSpecification"
+      ( \x ->
+          AlgorithmSpecification'
+            Prelude.<$> (x Data..:? "AlgorithmName")
+            Prelude.<*> (x Data..:? "ContainerArguments")
+            Prelude.<*> (x Data..:? "ContainerEntrypoint")
+            Prelude.<*> (x Data..:? "EnableSageMakerMetricsTimeSeries")
+            Prelude.<*> ( x
+                            Data..:? "MetricDefinitions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "TrainingImage")
+            Prelude.<*> (x Data..: "TrainingInputMode")
+      )
+
+instance Prelude.Hashable AlgorithmSpecification where
+  hashWithSalt _salt AlgorithmSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmName
+      `Prelude.hashWithSalt` containerArguments
+      `Prelude.hashWithSalt` containerEntrypoint
+      `Prelude.hashWithSalt` enableSageMakerMetricsTimeSeries
+      `Prelude.hashWithSalt` metricDefinitions
+      `Prelude.hashWithSalt` trainingImage
+      `Prelude.hashWithSalt` trainingInputMode
+
+instance Prelude.NFData AlgorithmSpecification where
+  rnf AlgorithmSpecification' {..} =
+    Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf containerArguments
+      `Prelude.seq` Prelude.rnf containerEntrypoint
+      `Prelude.seq` Prelude.rnf enableSageMakerMetricsTimeSeries
+      `Prelude.seq` Prelude.rnf metricDefinitions
+      `Prelude.seq` Prelude.rnf trainingImage
+      `Prelude.seq` Prelude.rnf trainingInputMode
+
+instance Data.ToJSON AlgorithmSpecification where
+  toJSON AlgorithmSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlgorithmName" Data..=) Prelude.<$> algorithmName,
+            ("ContainerArguments" Data..=)
+              Prelude.<$> containerArguments,
+            ("ContainerEntrypoint" Data..=)
+              Prelude.<$> containerEntrypoint,
+            ("EnableSageMakerMetricsTimeSeries" Data..=)
+              Prelude.<$> enableSageMakerMetricsTimeSeries,
+            ("MetricDefinitions" Data..=)
+              Prelude.<$> metricDefinitions,
+            ("TrainingImage" Data..=) Prelude.<$> trainingImage,
+            Prelude.Just
+              ("TrainingInputMode" Data..= trainingInputMode)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmStatus.hs b/gen/Amazonka/SageMaker/Types/AlgorithmStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AlgorithmStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmStatus
+  ( AlgorithmStatus
+      ( ..,
+        AlgorithmStatus_Completed,
+        AlgorithmStatus_Deleting,
+        AlgorithmStatus_Failed,
+        AlgorithmStatus_InProgress,
+        AlgorithmStatus_Pending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AlgorithmStatus = AlgorithmStatus'
+  { fromAlgorithmStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AlgorithmStatus_Completed :: AlgorithmStatus
+pattern AlgorithmStatus_Completed = AlgorithmStatus' "Completed"
+
+pattern AlgorithmStatus_Deleting :: AlgorithmStatus
+pattern AlgorithmStatus_Deleting = AlgorithmStatus' "Deleting"
+
+pattern AlgorithmStatus_Failed :: AlgorithmStatus
+pattern AlgorithmStatus_Failed = AlgorithmStatus' "Failed"
+
+pattern AlgorithmStatus_InProgress :: AlgorithmStatus
+pattern AlgorithmStatus_InProgress = AlgorithmStatus' "InProgress"
+
+pattern AlgorithmStatus_Pending :: AlgorithmStatus
+pattern AlgorithmStatus_Pending = AlgorithmStatus' "Pending"
+
+{-# COMPLETE
+  AlgorithmStatus_Completed,
+  AlgorithmStatus_Deleting,
+  AlgorithmStatus_Failed,
+  AlgorithmStatus_InProgress,
+  AlgorithmStatus_Pending,
+  AlgorithmStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmStatusDetails.hs b/gen/Amazonka/SageMaker/Types/AlgorithmStatusDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmStatusDetails.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AlgorithmStatusDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmStatusDetails 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 Amazonka.SageMaker.Types.AlgorithmStatusItem
+
+-- | Specifies the validation and image scan statuses of the algorithm.
+--
+-- /See:/ 'newAlgorithmStatusDetails' smart constructor.
+data AlgorithmStatusDetails = AlgorithmStatusDetails'
+  { -- | The status of the scan of the algorithm\'s Docker image container.
+    imageScanStatuses :: Prelude.Maybe [AlgorithmStatusItem],
+    -- | The status of algorithm validation.
+    validationStatuses :: Prelude.Maybe [AlgorithmStatusItem]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmStatusDetails' 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:
+--
+-- 'imageScanStatuses', 'algorithmStatusDetails_imageScanStatuses' - The status of the scan of the algorithm\'s Docker image container.
+--
+-- 'validationStatuses', 'algorithmStatusDetails_validationStatuses' - The status of algorithm validation.
+newAlgorithmStatusDetails ::
+  AlgorithmStatusDetails
+newAlgorithmStatusDetails =
+  AlgorithmStatusDetails'
+    { imageScanStatuses =
+        Prelude.Nothing,
+      validationStatuses = Prelude.Nothing
+    }
+
+-- | The status of the scan of the algorithm\'s Docker image container.
+algorithmStatusDetails_imageScanStatuses :: Lens.Lens' AlgorithmStatusDetails (Prelude.Maybe [AlgorithmStatusItem])
+algorithmStatusDetails_imageScanStatuses = Lens.lens (\AlgorithmStatusDetails' {imageScanStatuses} -> imageScanStatuses) (\s@AlgorithmStatusDetails' {} a -> s {imageScanStatuses = a} :: AlgorithmStatusDetails) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of algorithm validation.
+algorithmStatusDetails_validationStatuses :: Lens.Lens' AlgorithmStatusDetails (Prelude.Maybe [AlgorithmStatusItem])
+algorithmStatusDetails_validationStatuses = Lens.lens (\AlgorithmStatusDetails' {validationStatuses} -> validationStatuses) (\s@AlgorithmStatusDetails' {} a -> s {validationStatuses = a} :: AlgorithmStatusDetails) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AlgorithmStatusDetails where
+  parseJSON =
+    Data.withObject
+      "AlgorithmStatusDetails"
+      ( \x ->
+          AlgorithmStatusDetails'
+            Prelude.<$> ( x
+                            Data..:? "ImageScanStatuses"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ValidationStatuses"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable AlgorithmStatusDetails where
+  hashWithSalt _salt AlgorithmStatusDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` imageScanStatuses
+      `Prelude.hashWithSalt` validationStatuses
+
+instance Prelude.NFData AlgorithmStatusDetails where
+  rnf AlgorithmStatusDetails' {..} =
+    Prelude.rnf imageScanStatuses
+      `Prelude.seq` Prelude.rnf validationStatuses
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmStatusItem.hs b/gen/Amazonka/SageMaker/Types/AlgorithmStatusItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmStatusItem.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AlgorithmStatusItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmStatusItem 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 Amazonka.SageMaker.Types.DetailedAlgorithmStatus
+
+-- | Represents the overall status of an algorithm.
+--
+-- /See:/ 'newAlgorithmStatusItem' smart constructor.
+data AlgorithmStatusItem = AlgorithmStatusItem'
+  { -- | if the overall status is @Failed@, the reason for the failure.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the algorithm for which the overall status is being
+    -- reported.
+    name :: Prelude.Text,
+    -- | The current status.
+    status :: DetailedAlgorithmStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmStatusItem' 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:
+--
+-- 'failureReason', 'algorithmStatusItem_failureReason' - if the overall status is @Failed@, the reason for the failure.
+--
+-- 'name', 'algorithmStatusItem_name' - The name of the algorithm for which the overall status is being
+-- reported.
+--
+-- 'status', 'algorithmStatusItem_status' - The current status.
+newAlgorithmStatusItem ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  DetailedAlgorithmStatus ->
+  AlgorithmStatusItem
+newAlgorithmStatusItem pName_ pStatus_ =
+  AlgorithmStatusItem'
+    { failureReason =
+        Prelude.Nothing,
+      name = pName_,
+      status = pStatus_
+    }
+
+-- | if the overall status is @Failed@, the reason for the failure.
+algorithmStatusItem_failureReason :: Lens.Lens' AlgorithmStatusItem (Prelude.Maybe Prelude.Text)
+algorithmStatusItem_failureReason = Lens.lens (\AlgorithmStatusItem' {failureReason} -> failureReason) (\s@AlgorithmStatusItem' {} a -> s {failureReason = a} :: AlgorithmStatusItem)
+
+-- | The name of the algorithm for which the overall status is being
+-- reported.
+algorithmStatusItem_name :: Lens.Lens' AlgorithmStatusItem Prelude.Text
+algorithmStatusItem_name = Lens.lens (\AlgorithmStatusItem' {name} -> name) (\s@AlgorithmStatusItem' {} a -> s {name = a} :: AlgorithmStatusItem)
+
+-- | The current status.
+algorithmStatusItem_status :: Lens.Lens' AlgorithmStatusItem DetailedAlgorithmStatus
+algorithmStatusItem_status = Lens.lens (\AlgorithmStatusItem' {status} -> status) (\s@AlgorithmStatusItem' {} a -> s {status = a} :: AlgorithmStatusItem)
+
+instance Data.FromJSON AlgorithmStatusItem where
+  parseJSON =
+    Data.withObject
+      "AlgorithmStatusItem"
+      ( \x ->
+          AlgorithmStatusItem'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable AlgorithmStatusItem where
+  hashWithSalt _salt AlgorithmStatusItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData AlgorithmStatusItem where
+  rnf AlgorithmStatusItem' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmSummary.hs b/gen/Amazonka/SageMaker/Types/AlgorithmSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmSummary.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AlgorithmSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmSummary 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 Amazonka.SageMaker.Types.AlgorithmStatus
+
+-- | Provides summary information about an algorithm.
+--
+-- /See:/ 'newAlgorithmSummary' smart constructor.
+data AlgorithmSummary = AlgorithmSummary'
+  { -- | A brief description of the algorithm.
+    algorithmDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name of the algorithm that is described by the summary.
+    algorithmName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the algorithm.
+    algorithmArn :: Prelude.Text,
+    -- | A timestamp that shows when the algorithm was created.
+    creationTime :: Data.POSIX,
+    -- | The overall status of the algorithm.
+    algorithmStatus :: AlgorithmStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmSummary' 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:
+--
+-- 'algorithmDescription', 'algorithmSummary_algorithmDescription' - A brief description of the algorithm.
+--
+-- 'algorithmName', 'algorithmSummary_algorithmName' - The name of the algorithm that is described by the summary.
+--
+-- 'algorithmArn', 'algorithmSummary_algorithmArn' - The Amazon Resource Name (ARN) of the algorithm.
+--
+-- 'creationTime', 'algorithmSummary_creationTime' - A timestamp that shows when the algorithm was created.
+--
+-- 'algorithmStatus', 'algorithmSummary_algorithmStatus' - The overall status of the algorithm.
+newAlgorithmSummary ::
+  -- | 'algorithmName'
+  Prelude.Text ->
+  -- | 'algorithmArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'algorithmStatus'
+  AlgorithmStatus ->
+  AlgorithmSummary
+newAlgorithmSummary
+  pAlgorithmName_
+  pAlgorithmArn_
+  pCreationTime_
+  pAlgorithmStatus_ =
+    AlgorithmSummary'
+      { algorithmDescription =
+          Prelude.Nothing,
+        algorithmName = pAlgorithmName_,
+        algorithmArn = pAlgorithmArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        algorithmStatus = pAlgorithmStatus_
+      }
+
+-- | A brief description of the algorithm.
+algorithmSummary_algorithmDescription :: Lens.Lens' AlgorithmSummary (Prelude.Maybe Prelude.Text)
+algorithmSummary_algorithmDescription = Lens.lens (\AlgorithmSummary' {algorithmDescription} -> algorithmDescription) (\s@AlgorithmSummary' {} a -> s {algorithmDescription = a} :: AlgorithmSummary)
+
+-- | The name of the algorithm that is described by the summary.
+algorithmSummary_algorithmName :: Lens.Lens' AlgorithmSummary Prelude.Text
+algorithmSummary_algorithmName = Lens.lens (\AlgorithmSummary' {algorithmName} -> algorithmName) (\s@AlgorithmSummary' {} a -> s {algorithmName = a} :: AlgorithmSummary)
+
+-- | The Amazon Resource Name (ARN) of the algorithm.
+algorithmSummary_algorithmArn :: Lens.Lens' AlgorithmSummary Prelude.Text
+algorithmSummary_algorithmArn = Lens.lens (\AlgorithmSummary' {algorithmArn} -> algorithmArn) (\s@AlgorithmSummary' {} a -> s {algorithmArn = a} :: AlgorithmSummary)
+
+-- | A timestamp that shows when the algorithm was created.
+algorithmSummary_creationTime :: Lens.Lens' AlgorithmSummary Prelude.UTCTime
+algorithmSummary_creationTime = Lens.lens (\AlgorithmSummary' {creationTime} -> creationTime) (\s@AlgorithmSummary' {} a -> s {creationTime = a} :: AlgorithmSummary) Prelude.. Data._Time
+
+-- | The overall status of the algorithm.
+algorithmSummary_algorithmStatus :: Lens.Lens' AlgorithmSummary AlgorithmStatus
+algorithmSummary_algorithmStatus = Lens.lens (\AlgorithmSummary' {algorithmStatus} -> algorithmStatus) (\s@AlgorithmSummary' {} a -> s {algorithmStatus = a} :: AlgorithmSummary)
+
+instance Data.FromJSON AlgorithmSummary where
+  parseJSON =
+    Data.withObject
+      "AlgorithmSummary"
+      ( \x ->
+          AlgorithmSummary'
+            Prelude.<$> (x Data..:? "AlgorithmDescription")
+            Prelude.<*> (x Data..: "AlgorithmName")
+            Prelude.<*> (x Data..: "AlgorithmArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "AlgorithmStatus")
+      )
+
+instance Prelude.Hashable AlgorithmSummary where
+  hashWithSalt _salt AlgorithmSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmDescription
+      `Prelude.hashWithSalt` algorithmName
+      `Prelude.hashWithSalt` algorithmArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` algorithmStatus
+
+instance Prelude.NFData AlgorithmSummary where
+  rnf AlgorithmSummary' {..} =
+    Prelude.rnf algorithmDescription
+      `Prelude.seq` Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf algorithmArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf algorithmStatus
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmValidationProfile.hs b/gen/Amazonka/SageMaker/Types/AlgorithmValidationProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmValidationProfile.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AlgorithmValidationProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmValidationProfile 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 Amazonka.SageMaker.Types.TrainingJobDefinition
+import Amazonka.SageMaker.Types.TransformJobDefinition
+
+-- | Defines a training job and a batch transform job that SageMaker runs to
+-- validate your algorithm.
+--
+-- The data provided in the validation profile is made available to your
+-- buyers on Amazon Web Services Marketplace.
+--
+-- /See:/ 'newAlgorithmValidationProfile' smart constructor.
+data AlgorithmValidationProfile = AlgorithmValidationProfile'
+  { -- | The @TransformJobDefinition@ object that describes the transform job
+    -- that SageMaker runs to validate your algorithm.
+    transformJobDefinition :: Prelude.Maybe TransformJobDefinition,
+    -- | The name of the profile for the algorithm. The name must have 1 to 63
+    -- characters. Valid characters are a-z, A-Z, 0-9, and - (hyphen).
+    profileName :: Prelude.Text,
+    -- | The @TrainingJobDefinition@ object that describes the training job that
+    -- SageMaker runs to validate your algorithm.
+    trainingJobDefinition :: TrainingJobDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmValidationProfile' 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:
+--
+-- 'transformJobDefinition', 'algorithmValidationProfile_transformJobDefinition' - The @TransformJobDefinition@ object that describes the transform job
+-- that SageMaker runs to validate your algorithm.
+--
+-- 'profileName', 'algorithmValidationProfile_profileName' - The name of the profile for the algorithm. The name must have 1 to 63
+-- characters. Valid characters are a-z, A-Z, 0-9, and - (hyphen).
+--
+-- 'trainingJobDefinition', 'algorithmValidationProfile_trainingJobDefinition' - The @TrainingJobDefinition@ object that describes the training job that
+-- SageMaker runs to validate your algorithm.
+newAlgorithmValidationProfile ::
+  -- | 'profileName'
+  Prelude.Text ->
+  -- | 'trainingJobDefinition'
+  TrainingJobDefinition ->
+  AlgorithmValidationProfile
+newAlgorithmValidationProfile
+  pProfileName_
+  pTrainingJobDefinition_ =
+    AlgorithmValidationProfile'
+      { transformJobDefinition =
+          Prelude.Nothing,
+        profileName = pProfileName_,
+        trainingJobDefinition = pTrainingJobDefinition_
+      }
+
+-- | The @TransformJobDefinition@ object that describes the transform job
+-- that SageMaker runs to validate your algorithm.
+algorithmValidationProfile_transformJobDefinition :: Lens.Lens' AlgorithmValidationProfile (Prelude.Maybe TransformJobDefinition)
+algorithmValidationProfile_transformJobDefinition = Lens.lens (\AlgorithmValidationProfile' {transformJobDefinition} -> transformJobDefinition) (\s@AlgorithmValidationProfile' {} a -> s {transformJobDefinition = a} :: AlgorithmValidationProfile)
+
+-- | The name of the profile for the algorithm. The name must have 1 to 63
+-- characters. Valid characters are a-z, A-Z, 0-9, and - (hyphen).
+algorithmValidationProfile_profileName :: Lens.Lens' AlgorithmValidationProfile Prelude.Text
+algorithmValidationProfile_profileName = Lens.lens (\AlgorithmValidationProfile' {profileName} -> profileName) (\s@AlgorithmValidationProfile' {} a -> s {profileName = a} :: AlgorithmValidationProfile)
+
+-- | The @TrainingJobDefinition@ object that describes the training job that
+-- SageMaker runs to validate your algorithm.
+algorithmValidationProfile_trainingJobDefinition :: Lens.Lens' AlgorithmValidationProfile TrainingJobDefinition
+algorithmValidationProfile_trainingJobDefinition = Lens.lens (\AlgorithmValidationProfile' {trainingJobDefinition} -> trainingJobDefinition) (\s@AlgorithmValidationProfile' {} a -> s {trainingJobDefinition = a} :: AlgorithmValidationProfile)
+
+instance Data.FromJSON AlgorithmValidationProfile where
+  parseJSON =
+    Data.withObject
+      "AlgorithmValidationProfile"
+      ( \x ->
+          AlgorithmValidationProfile'
+            Prelude.<$> (x Data..:? "TransformJobDefinition")
+            Prelude.<*> (x Data..: "ProfileName")
+            Prelude.<*> (x Data..: "TrainingJobDefinition")
+      )
+
+instance Prelude.Hashable AlgorithmValidationProfile where
+  hashWithSalt _salt AlgorithmValidationProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` transformJobDefinition
+      `Prelude.hashWithSalt` profileName
+      `Prelude.hashWithSalt` trainingJobDefinition
+
+instance Prelude.NFData AlgorithmValidationProfile where
+  rnf AlgorithmValidationProfile' {..} =
+    Prelude.rnf transformJobDefinition
+      `Prelude.seq` Prelude.rnf profileName
+      `Prelude.seq` Prelude.rnf trainingJobDefinition
+
+instance Data.ToJSON AlgorithmValidationProfile where
+  toJSON AlgorithmValidationProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TransformJobDefinition" Data..=)
+              Prelude.<$> transformJobDefinition,
+            Prelude.Just ("ProfileName" Data..= profileName),
+            Prelude.Just
+              ( "TrainingJobDefinition"
+                  Data..= trainingJobDefinition
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AlgorithmValidationSpecification.hs b/gen/Amazonka/SageMaker/Types/AlgorithmValidationSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AlgorithmValidationSpecification.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AlgorithmValidationSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AlgorithmValidationSpecification 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 Amazonka.SageMaker.Types.AlgorithmValidationProfile
+
+-- | Specifies configurations for one or more training jobs that SageMaker
+-- runs to test the algorithm.
+--
+-- /See:/ 'newAlgorithmValidationSpecification' smart constructor.
+data AlgorithmValidationSpecification = AlgorithmValidationSpecification'
+  { -- | The IAM roles that SageMaker uses to run the training jobs.
+    validationRole :: Prelude.Text,
+    -- | An array of @AlgorithmValidationProfile@ objects, each of which
+    -- specifies a training job and batch transform job that SageMaker runs to
+    -- validate your algorithm.
+    validationProfiles :: Prelude.NonEmpty AlgorithmValidationProfile
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmValidationSpecification' 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:
+--
+-- 'validationRole', 'algorithmValidationSpecification_validationRole' - The IAM roles that SageMaker uses to run the training jobs.
+--
+-- 'validationProfiles', 'algorithmValidationSpecification_validationProfiles' - An array of @AlgorithmValidationProfile@ objects, each of which
+-- specifies a training job and batch transform job that SageMaker runs to
+-- validate your algorithm.
+newAlgorithmValidationSpecification ::
+  -- | 'validationRole'
+  Prelude.Text ->
+  -- | 'validationProfiles'
+  Prelude.NonEmpty AlgorithmValidationProfile ->
+  AlgorithmValidationSpecification
+newAlgorithmValidationSpecification
+  pValidationRole_
+  pValidationProfiles_ =
+    AlgorithmValidationSpecification'
+      { validationRole =
+          pValidationRole_,
+        validationProfiles =
+          Lens.coerced
+            Lens.# pValidationProfiles_
+      }
+
+-- | The IAM roles that SageMaker uses to run the training jobs.
+algorithmValidationSpecification_validationRole :: Lens.Lens' AlgorithmValidationSpecification Prelude.Text
+algorithmValidationSpecification_validationRole = Lens.lens (\AlgorithmValidationSpecification' {validationRole} -> validationRole) (\s@AlgorithmValidationSpecification' {} a -> s {validationRole = a} :: AlgorithmValidationSpecification)
+
+-- | An array of @AlgorithmValidationProfile@ objects, each of which
+-- specifies a training job and batch transform job that SageMaker runs to
+-- validate your algorithm.
+algorithmValidationSpecification_validationProfiles :: Lens.Lens' AlgorithmValidationSpecification (Prelude.NonEmpty AlgorithmValidationProfile)
+algorithmValidationSpecification_validationProfiles = Lens.lens (\AlgorithmValidationSpecification' {validationProfiles} -> validationProfiles) (\s@AlgorithmValidationSpecification' {} a -> s {validationProfiles = a} :: AlgorithmValidationSpecification) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    AlgorithmValidationSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "AlgorithmValidationSpecification"
+      ( \x ->
+          AlgorithmValidationSpecification'
+            Prelude.<$> (x Data..: "ValidationRole")
+            Prelude.<*> (x Data..: "ValidationProfiles")
+      )
+
+instance
+  Prelude.Hashable
+    AlgorithmValidationSpecification
+  where
+  hashWithSalt
+    _salt
+    AlgorithmValidationSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` validationRole
+        `Prelude.hashWithSalt` validationProfiles
+
+instance
+  Prelude.NFData
+    AlgorithmValidationSpecification
+  where
+  rnf AlgorithmValidationSpecification' {..} =
+    Prelude.rnf validationRole
+      `Prelude.seq` Prelude.rnf validationProfiles
+
+instance Data.ToJSON AlgorithmValidationSpecification where
+  toJSON AlgorithmValidationSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ValidationRole" Data..= validationRole),
+            Prelude.Just
+              ("ValidationProfiles" Data..= validationProfiles)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AnnotationConsolidationConfig.hs b/gen/Amazonka/SageMaker/Types/AnnotationConsolidationConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AnnotationConsolidationConfig.hs
@@ -0,0 +1,2026 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AnnotationConsolidationConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AnnotationConsolidationConfig 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
+
+-- | Configures how labels are consolidated across human workers and
+-- processes output data.
+--
+-- /See:/ 'newAnnotationConsolidationConfig' smart constructor.
+data AnnotationConsolidationConfig = AnnotationConsolidationConfig'
+  { -- | The Amazon Resource Name (ARN) of a Lambda function implements the logic
+    -- for
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html annotation consolidation>
+    -- and to process output data.
+    --
+    -- This parameter is required for all labeling jobs. For
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+    -- use one of the following Amazon SageMaker Ground Truth Lambda function
+    -- ARNs for @AnnotationConsolidationLambdaArn@. For custom labeling
+    -- workflows, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3.html#sms-custom-templates-step3-postlambda Post-annotation Lambda>.
+    --
+    -- __Bounding box__ - Finds the most similar boxes from different workers
+    -- based on the Jaccard index of the boxes.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-BoundingBox@
+    --
+    -- __Image classification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true class of an image based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-ImageMultiClass@
+    --
+    -- __Multi-label image classification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true classes of an image based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-ImageMultiClassMultiLabel@
+    --
+    -- __Semantic segmentation__ - Treats each pixel in an image as a
+    -- multi-class classification and treats pixel annotations from workers as
+    -- \"votes\" for the correct label.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-SemanticSegmentation@
+    --
+    -- __Text classification__ - Uses a variant of the Expectation Maximization
+    -- approach to estimate the true class of text based on annotations from
+    -- individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-TextMultiClass@
+    --
+    -- __Multi-label text classification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true classes of text based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-TextMultiClassMultiLabel@
+    --
+    -- __Named entity recognition__ - Groups similar selections and calculates
+    -- aggregate boundaries, resolving to most-assigned label.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-NamedEntityRecognition@
+    --
+    -- __Video Classification__ - Use this task type when you need workers to
+    -- classify videos using predefined labels that you specify. Workers are
+    -- shown videos and are asked to choose one label for each video.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoMultiClass@
+    --
+    -- __Video Frame Object Detection__ - Use this task type to have workers
+    -- identify and locate objects in a sequence of video frames (images
+    -- extracted from a video) using bounding boxes. For example, you can use
+    -- this task to ask workers to identify and localize various objects in a
+    -- series of video frames, such as cars, bikes, and pedestrians.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoObjectDetection@
+    --
+    -- __Video Frame Object Tracking__ - Use this task type to have workers
+    -- track the movement of objects in a sequence of video frames (images
+    -- extracted from a video) using bounding boxes. For example, you can use
+    -- this task to ask workers to track the movement of objects, such as cars,
+    -- bikes, and pedestrians.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoObjectTracking@
+    --
+    -- __3D Point Cloud Object Detection__ - Use this task type when you want
+    -- workers to classify objects in a 3D point cloud by drawing 3D cuboids
+    -- around objects. For example, you can use this task type to ask workers
+    -- to identify different types of objects in a point cloud, such as cars,
+    -- bikes, and pedestrians.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudObjectDetection@
+    --
+    -- __3D Point Cloud Object Tracking__ - Use this task type when you want
+    -- workers to draw 3D cuboids around objects that appear in a sequence of
+    -- 3D point cloud frames. For example, you can use this task type to ask
+    -- workers to track the movement of vehicles across multiple point cloud
+    -- frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudObjectTracking@
+    --
+    -- __3D Point Cloud Semantic Segmentation__ - Use this task type when you
+    -- want workers to create a point-level semantic segmentation masks by
+    -- painting objects in a 3D point cloud using different colors where each
+    -- color is assigned to one of the classes you specify.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- __Use the following ARNs for Label Verification and Adjustment Jobs__
+    --
+    -- Use label verification and adjustment jobs to review and adjust labels.
+    -- To learn more, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>
+    -- .
+    --
+    -- __Semantic Segmentation Adjustment__ - Treats each pixel in an image as
+    -- a multi-class classification and treats pixel adjusted annotations from
+    -- workers as \"votes\" for the correct label.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentSemanticSegmentation@
+    --
+    -- __Semantic Segmentation Verification__ - Uses a variant of the
+    -- Expectation Maximization approach to estimate the true class of
+    -- verification judgment for semantic segmentation labels based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VerificationSemanticSegmentation@
+    --
+    -- __Bounding Box Adjustment__ - Finds the most similar boxes from
+    -- different workers based on the Jaccard index of the adjusted
+    -- annotations.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentBoundingBox@
+    --
+    -- __Bounding Box Verification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true class of verification
+    -- judgement for bounding box labels based on annotations from individual
+    -- workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VerificationBoundingBox@
+    --
+    -- __Video Frame Object Detection Adjustment__ - Use this task type when
+    -- you want workers to adjust bounding boxes that workers have added to
+    -- video frames to classify and localize objects in a sequence of video
+    -- frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentVideoObjectDetection@
+    --
+    -- __Video Frame Object Tracking Adjustment__ - Use this task type when you
+    -- want workers to adjust bounding boxes that workers have added to video
+    -- frames to track object movement across a sequence of video frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentVideoObjectTracking@
+    --
+    -- __3D Point Cloud Object Detection Adjustment__ - Use this task type when
+    -- you want workers to adjust 3D cuboids around objects in a 3D point
+    -- cloud.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudObjectDetection@
+    --
+    -- __3D Point Cloud Object Tracking Adjustment__ - Use this task type when
+    -- you want workers to adjust 3D cuboids around objects that appear in a
+    -- sequence of 3D point cloud frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudObjectTracking@
+    --
+    -- __3D Point Cloud Semantic Segmentation Adjustment__ - Use this task type
+    -- when you want workers to adjust a point-level semantic segmentation
+    -- masks using a paint tool.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+    annotationConsolidationLambdaArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AnnotationConsolidationConfig' 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:
+--
+-- 'annotationConsolidationLambdaArn', 'annotationConsolidationConfig_annotationConsolidationLambdaArn' - The Amazon Resource Name (ARN) of a Lambda function implements the logic
+-- for
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html annotation consolidation>
+-- and to process output data.
+--
+-- This parameter is required for all labeling jobs. For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+-- use one of the following Amazon SageMaker Ground Truth Lambda function
+-- ARNs for @AnnotationConsolidationLambdaArn@. For custom labeling
+-- workflows, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3.html#sms-custom-templates-step3-postlambda Post-annotation Lambda>.
+--
+-- __Bounding box__ - Finds the most similar boxes from different workers
+-- based on the Jaccard index of the boxes.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-BoundingBox@
+--
+-- __Image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-ImageMultiClass@
+--
+-- __Multi-label image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-ImageMultiClassMultiLabel@
+--
+-- __Semantic segmentation__ - Treats each pixel in an image as a
+-- multi-class classification and treats pixel annotations from workers as
+-- \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-SemanticSegmentation@
+--
+-- __Text classification__ - Uses a variant of the Expectation Maximization
+-- approach to estimate the true class of text based on annotations from
+-- individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-TextMultiClass@
+--
+-- __Multi-label text classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of text based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-TextMultiClassMultiLabel@
+--
+-- __Named entity recognition__ - Groups similar selections and calculates
+-- aggregate boundaries, resolving to most-assigned label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-NamedEntityRecognition@
+--
+-- __Video Classification__ - Use this task type when you need workers to
+-- classify videos using predefined labels that you specify. Workers are
+-- shown videos and are asked to choose one label for each video.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoMultiClass@
+--
+-- __Video Frame Object Detection__ - Use this task type to have workers
+-- identify and locate objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to identify and localize various objects in a
+-- series of video frames, such as cars, bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoObjectDetection@
+--
+-- __Video Frame Object Tracking__ - Use this task type to have workers
+-- track the movement of objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to track the movement of objects, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoObjectTracking@
+--
+-- __3D Point Cloud Object Detection__ - Use this task type when you want
+-- workers to classify objects in a 3D point cloud by drawing 3D cuboids
+-- around objects. For example, you can use this task type to ask workers
+-- to identify different types of objects in a point cloud, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudObjectDetection@
+--
+-- __3D Point Cloud Object Tracking__ - Use this task type when you want
+-- workers to draw 3D cuboids around objects that appear in a sequence of
+-- 3D point cloud frames. For example, you can use this task type to ask
+-- workers to track the movement of vehicles across multiple point cloud
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudObjectTracking@
+--
+-- __3D Point Cloud Semantic Segmentation__ - Use this task type when you
+-- want workers to create a point-level semantic segmentation masks by
+-- painting objects in a 3D point cloud using different colors where each
+-- color is assigned to one of the classes you specify.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- __Use the following ARNs for Label Verification and Adjustment Jobs__
+--
+-- Use label verification and adjustment jobs to review and adjust labels.
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>
+-- .
+--
+-- __Semantic Segmentation Adjustment__ - Treats each pixel in an image as
+-- a multi-class classification and treats pixel adjusted annotations from
+-- workers as \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- __Semantic Segmentation Verification__ - Uses a variant of the
+-- Expectation Maximization approach to estimate the true class of
+-- verification judgment for semantic segmentation labels based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VerificationSemanticSegmentation@
+--
+-- __Bounding Box Adjustment__ - Finds the most similar boxes from
+-- different workers based on the Jaccard index of the adjusted
+-- annotations.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentBoundingBox@
+--
+-- __Bounding Box Verification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of verification
+-- judgement for bounding box labels based on annotations from individual
+-- workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VerificationBoundingBox@
+--
+-- __Video Frame Object Detection Adjustment__ - Use this task type when
+-- you want workers to adjust bounding boxes that workers have added to
+-- video frames to classify and localize objects in a sequence of video
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- __Video Frame Object Tracking Adjustment__ - Use this task type when you
+-- want workers to adjust bounding boxes that workers have added to video
+-- frames to track object movement across a sequence of video frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- __3D Point Cloud Object Detection Adjustment__ - Use this task type when
+-- you want workers to adjust 3D cuboids around objects in a 3D point
+-- cloud.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- __3D Point Cloud Object Tracking Adjustment__ - Use this task type when
+-- you want workers to adjust 3D cuboids around objects that appear in a
+-- sequence of 3D point cloud frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- __3D Point Cloud Semantic Segmentation Adjustment__ - Use this task type
+-- when you want workers to adjust a point-level semantic segmentation
+-- masks using a paint tool.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+newAnnotationConsolidationConfig ::
+  -- | 'annotationConsolidationLambdaArn'
+  Prelude.Text ->
+  AnnotationConsolidationConfig
+newAnnotationConsolidationConfig
+  pAnnotationConsolidationLambdaArn_ =
+    AnnotationConsolidationConfig'
+      { annotationConsolidationLambdaArn =
+          pAnnotationConsolidationLambdaArn_
+      }
+
+-- | The Amazon Resource Name (ARN) of a Lambda function implements the logic
+-- for
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html annotation consolidation>
+-- and to process output data.
+--
+-- This parameter is required for all labeling jobs. For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+-- use one of the following Amazon SageMaker Ground Truth Lambda function
+-- ARNs for @AnnotationConsolidationLambdaArn@. For custom labeling
+-- workflows, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3.html#sms-custom-templates-step3-postlambda Post-annotation Lambda>.
+--
+-- __Bounding box__ - Finds the most similar boxes from different workers
+-- based on the Jaccard index of the boxes.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-BoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-BoundingBox@
+--
+-- __Image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-ImageMultiClass@
+--
+-- __Multi-label image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-ImageMultiClassMultiLabel@
+--
+-- __Semantic segmentation__ - Treats each pixel in an image as a
+-- multi-class classification and treats pixel annotations from workers as
+-- \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-SemanticSegmentation@
+--
+-- __Text classification__ - Uses a variant of the Expectation Maximization
+-- approach to estimate the true class of text based on annotations from
+-- individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-TextMultiClass@
+--
+-- __Multi-label text classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of text based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-TextMultiClassMultiLabel@
+--
+-- __Named entity recognition__ - Groups similar selections and calculates
+-- aggregate boundaries, resolving to most-assigned label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-NamedEntityRecognition@
+--
+-- __Video Classification__ - Use this task type when you need workers to
+-- classify videos using predefined labels that you specify. Workers are
+-- shown videos and are asked to choose one label for each video.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoMultiClass@
+--
+-- __Video Frame Object Detection__ - Use this task type to have workers
+-- identify and locate objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to identify and localize various objects in a
+-- series of video frames, such as cars, bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoObjectDetection@
+--
+-- __Video Frame Object Tracking__ - Use this task type to have workers
+-- track the movement of objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to track the movement of objects, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VideoObjectTracking@
+--
+-- __3D Point Cloud Object Detection__ - Use this task type when you want
+-- workers to classify objects in a 3D point cloud by drawing 3D cuboids
+-- around objects. For example, you can use this task type to ask workers
+-- to identify different types of objects in a point cloud, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudObjectDetection@
+--
+-- __3D Point Cloud Object Tracking__ - Use this task type when you want
+-- workers to draw 3D cuboids around objects that appear in a sequence of
+-- 3D point cloud frames. For example, you can use this task type to ask
+-- workers to track the movement of vehicles across multiple point cloud
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudObjectTracking@
+--
+-- __3D Point Cloud Semantic Segmentation__ - Use this task type when you
+-- want workers to create a point-level semantic segmentation masks by
+-- painting objects in a 3D point cloud using different colors where each
+-- color is assigned to one of the classes you specify.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- __Use the following ARNs for Label Verification and Adjustment Jobs__
+--
+-- Use label verification and adjustment jobs to review and adjust labels.
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>
+-- .
+--
+-- __Semantic Segmentation Adjustment__ - Treats each pixel in an image as
+-- a multi-class classification and treats pixel adjusted annotations from
+-- workers as \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentSemanticSegmentation@
+--
+-- __Semantic Segmentation Verification__ - Uses a variant of the
+-- Expectation Maximization approach to estimate the true class of
+-- verification judgment for semantic segmentation labels based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VerificationSemanticSegmentation@
+--
+-- __Bounding Box Adjustment__ - Finds the most similar boxes from
+-- different workers based on the Jaccard index of the adjusted
+-- annotations.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentBoundingBox@
+--
+-- __Bounding Box Verification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of verification
+-- judgement for bounding box labels based on annotations from individual
+-- workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-VerificationBoundingBox@
+--
+-- __Video Frame Object Detection Adjustment__ - Use this task type when
+-- you want workers to adjust bounding boxes that workers have added to
+-- video frames to classify and localize objects in a sequence of video
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentVideoObjectDetection@
+--
+-- __Video Frame Object Tracking Adjustment__ - Use this task type when you
+-- want workers to adjust bounding boxes that workers have added to video
+-- frames to track object movement across a sequence of video frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-AdjustmentVideoObjectTracking@
+--
+-- __3D Point Cloud Object Detection Adjustment__ - Use this task type when
+-- you want workers to adjust 3D cuboids around objects in a 3D point
+-- cloud.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudObjectDetection@
+--
+-- __3D Point Cloud Object Tracking Adjustment__ - Use this task type when
+-- you want workers to adjust 3D cuboids around objects that appear in a
+-- sequence of 3D point cloud frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudObjectTracking@
+--
+-- __3D Point Cloud Semantic Segmentation Adjustment__ - Use this task type
+-- when you want workers to adjust a point-level semantic segmentation
+-- masks using a paint tool.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:ACS-Adjustment3DPointCloudSemanticSegmentation@
+annotationConsolidationConfig_annotationConsolidationLambdaArn :: Lens.Lens' AnnotationConsolidationConfig Prelude.Text
+annotationConsolidationConfig_annotationConsolidationLambdaArn = Lens.lens (\AnnotationConsolidationConfig' {annotationConsolidationLambdaArn} -> annotationConsolidationLambdaArn) (\s@AnnotationConsolidationConfig' {} a -> s {annotationConsolidationLambdaArn = a} :: AnnotationConsolidationConfig)
+
+instance Data.FromJSON AnnotationConsolidationConfig where
+  parseJSON =
+    Data.withObject
+      "AnnotationConsolidationConfig"
+      ( \x ->
+          AnnotationConsolidationConfig'
+            Prelude.<$> (x Data..: "AnnotationConsolidationLambdaArn")
+      )
+
+instance
+  Prelude.Hashable
+    AnnotationConsolidationConfig
+  where
+  hashWithSalt _salt AnnotationConsolidationConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` annotationConsolidationLambdaArn
+
+instance Prelude.NFData AnnotationConsolidationConfig where
+  rnf AnnotationConsolidationConfig' {..} =
+    Prelude.rnf annotationConsolidationLambdaArn
+
+instance Data.ToJSON AnnotationConsolidationConfig where
+  toJSON AnnotationConsolidationConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "AnnotationConsolidationLambdaArn"
+                  Data..= annotationConsolidationLambdaArn
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AppDetails.hs b/gen/Amazonka/SageMaker/Types/AppDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppDetails.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AppDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppDetails 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 Amazonka.SageMaker.Types.AppStatus
+import Amazonka.SageMaker.Types.AppType
+
+-- | Details about an Amazon SageMaker app.
+--
+-- /See:/ 'newAppDetails' smart constructor.
+data AppDetails = AppDetails'
+  { -- | The name of the app.
+    appName :: Prelude.Maybe Prelude.Text,
+    -- | The type of app.
+    appType :: Prelude.Maybe AppType,
+    -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The domain ID.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the space.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | The status.
+    status :: Prelude.Maybe AppStatus,
+    -- | The user profile name.
+    userProfileName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppDetails' 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:
+--
+-- 'appName', 'appDetails_appName' - The name of the app.
+--
+-- 'appType', 'appDetails_appType' - The type of app.
+--
+-- 'creationTime', 'appDetails_creationTime' - The creation time.
+--
+-- 'domainId', 'appDetails_domainId' - The domain ID.
+--
+-- 'spaceName', 'appDetails_spaceName' - The name of the space.
+--
+-- 'status', 'appDetails_status' - The status.
+--
+-- 'userProfileName', 'appDetails_userProfileName' - The user profile name.
+newAppDetails ::
+  AppDetails
+newAppDetails =
+  AppDetails'
+    { appName = Prelude.Nothing,
+      appType = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      spaceName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      userProfileName = Prelude.Nothing
+    }
+
+-- | The name of the app.
+appDetails_appName :: Lens.Lens' AppDetails (Prelude.Maybe Prelude.Text)
+appDetails_appName = Lens.lens (\AppDetails' {appName} -> appName) (\s@AppDetails' {} a -> s {appName = a} :: AppDetails)
+
+-- | The type of app.
+appDetails_appType :: Lens.Lens' AppDetails (Prelude.Maybe AppType)
+appDetails_appType = Lens.lens (\AppDetails' {appType} -> appType) (\s@AppDetails' {} a -> s {appType = a} :: AppDetails)
+
+-- | The creation time.
+appDetails_creationTime :: Lens.Lens' AppDetails (Prelude.Maybe Prelude.UTCTime)
+appDetails_creationTime = Lens.lens (\AppDetails' {creationTime} -> creationTime) (\s@AppDetails' {} a -> s {creationTime = a} :: AppDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The domain ID.
+appDetails_domainId :: Lens.Lens' AppDetails (Prelude.Maybe Prelude.Text)
+appDetails_domainId = Lens.lens (\AppDetails' {domainId} -> domainId) (\s@AppDetails' {} a -> s {domainId = a} :: AppDetails)
+
+-- | The name of the space.
+appDetails_spaceName :: Lens.Lens' AppDetails (Prelude.Maybe Prelude.Text)
+appDetails_spaceName = Lens.lens (\AppDetails' {spaceName} -> spaceName) (\s@AppDetails' {} a -> s {spaceName = a} :: AppDetails)
+
+-- | The status.
+appDetails_status :: Lens.Lens' AppDetails (Prelude.Maybe AppStatus)
+appDetails_status = Lens.lens (\AppDetails' {status} -> status) (\s@AppDetails' {} a -> s {status = a} :: AppDetails)
+
+-- | The user profile name.
+appDetails_userProfileName :: Lens.Lens' AppDetails (Prelude.Maybe Prelude.Text)
+appDetails_userProfileName = Lens.lens (\AppDetails' {userProfileName} -> userProfileName) (\s@AppDetails' {} a -> s {userProfileName = a} :: AppDetails)
+
+instance Data.FromJSON AppDetails where
+  parseJSON =
+    Data.withObject
+      "AppDetails"
+      ( \x ->
+          AppDetails'
+            Prelude.<$> (x Data..:? "AppName")
+            Prelude.<*> (x Data..:? "AppType")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DomainId")
+            Prelude.<*> (x Data..:? "SpaceName")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UserProfileName")
+      )
+
+instance Prelude.Hashable AppDetails where
+  hashWithSalt _salt AppDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` appName
+      `Prelude.hashWithSalt` appType
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` spaceName
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData AppDetails where
+  rnf AppDetails' {..} =
+    Prelude.rnf appName
+      `Prelude.seq` Prelude.rnf appType
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf userProfileName
diff --git a/gen/Amazonka/SageMaker/Types/AppImageConfigDetails.hs b/gen/Amazonka/SageMaker/Types/AppImageConfigDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppImageConfigDetails.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AppImageConfigDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppImageConfigDetails 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 Amazonka.SageMaker.Types.KernelGatewayImageConfig
+
+-- | The configuration for running a SageMaker image as a KernelGateway app.
+--
+-- /See:/ 'newAppImageConfigDetails' smart constructor.
+data AppImageConfigDetails = AppImageConfigDetails'
+  { -- | The Amazon Resource Name (ARN) of the AppImageConfig.
+    appImageConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the AppImageConfig. Must be unique to your account.
+    appImageConfigName :: Prelude.Maybe Prelude.Text,
+    -- | When the AppImageConfig was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The configuration for the file system and kernels in the SageMaker
+    -- image.
+    kernelGatewayImageConfig :: Prelude.Maybe KernelGatewayImageConfig,
+    -- | When the AppImageConfig was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppImageConfigDetails' 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:
+--
+-- 'appImageConfigArn', 'appImageConfigDetails_appImageConfigArn' - The Amazon Resource Name (ARN) of the AppImageConfig.
+--
+-- 'appImageConfigName', 'appImageConfigDetails_appImageConfigName' - The name of the AppImageConfig. Must be unique to your account.
+--
+-- 'creationTime', 'appImageConfigDetails_creationTime' - When the AppImageConfig was created.
+--
+-- 'kernelGatewayImageConfig', 'appImageConfigDetails_kernelGatewayImageConfig' - The configuration for the file system and kernels in the SageMaker
+-- image.
+--
+-- 'lastModifiedTime', 'appImageConfigDetails_lastModifiedTime' - When the AppImageConfig was last modified.
+newAppImageConfigDetails ::
+  AppImageConfigDetails
+newAppImageConfigDetails =
+  AppImageConfigDetails'
+    { appImageConfigArn =
+        Prelude.Nothing,
+      appImageConfigName = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      kernelGatewayImageConfig = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the AppImageConfig.
+appImageConfigDetails_appImageConfigArn :: Lens.Lens' AppImageConfigDetails (Prelude.Maybe Prelude.Text)
+appImageConfigDetails_appImageConfigArn = Lens.lens (\AppImageConfigDetails' {appImageConfigArn} -> appImageConfigArn) (\s@AppImageConfigDetails' {} a -> s {appImageConfigArn = a} :: AppImageConfigDetails)
+
+-- | The name of the AppImageConfig. Must be unique to your account.
+appImageConfigDetails_appImageConfigName :: Lens.Lens' AppImageConfigDetails (Prelude.Maybe Prelude.Text)
+appImageConfigDetails_appImageConfigName = Lens.lens (\AppImageConfigDetails' {appImageConfigName} -> appImageConfigName) (\s@AppImageConfigDetails' {} a -> s {appImageConfigName = a} :: AppImageConfigDetails)
+
+-- | When the AppImageConfig was created.
+appImageConfigDetails_creationTime :: Lens.Lens' AppImageConfigDetails (Prelude.Maybe Prelude.UTCTime)
+appImageConfigDetails_creationTime = Lens.lens (\AppImageConfigDetails' {creationTime} -> creationTime) (\s@AppImageConfigDetails' {} a -> s {creationTime = a} :: AppImageConfigDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The configuration for the file system and kernels in the SageMaker
+-- image.
+appImageConfigDetails_kernelGatewayImageConfig :: Lens.Lens' AppImageConfigDetails (Prelude.Maybe KernelGatewayImageConfig)
+appImageConfigDetails_kernelGatewayImageConfig = Lens.lens (\AppImageConfigDetails' {kernelGatewayImageConfig} -> kernelGatewayImageConfig) (\s@AppImageConfigDetails' {} a -> s {kernelGatewayImageConfig = a} :: AppImageConfigDetails)
+
+-- | When the AppImageConfig was last modified.
+appImageConfigDetails_lastModifiedTime :: Lens.Lens' AppImageConfigDetails (Prelude.Maybe Prelude.UTCTime)
+appImageConfigDetails_lastModifiedTime = Lens.lens (\AppImageConfigDetails' {lastModifiedTime} -> lastModifiedTime) (\s@AppImageConfigDetails' {} a -> s {lastModifiedTime = a} :: AppImageConfigDetails) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON AppImageConfigDetails where
+  parseJSON =
+    Data.withObject
+      "AppImageConfigDetails"
+      ( \x ->
+          AppImageConfigDetails'
+            Prelude.<$> (x Data..:? "AppImageConfigArn")
+            Prelude.<*> (x Data..:? "AppImageConfigName")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "KernelGatewayImageConfig")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+      )
+
+instance Prelude.Hashable AppImageConfigDetails where
+  hashWithSalt _salt AppImageConfigDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` appImageConfigArn
+      `Prelude.hashWithSalt` appImageConfigName
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` kernelGatewayImageConfig
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData AppImageConfigDetails where
+  rnf AppImageConfigDetails' {..} =
+    Prelude.rnf appImageConfigArn
+      `Prelude.seq` Prelude.rnf appImageConfigName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf kernelGatewayImageConfig
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/AppImageConfigSortKey.hs b/gen/Amazonka/SageMaker/Types/AppImageConfigSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppImageConfigSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppImageConfigSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppImageConfigSortKey
+  ( AppImageConfigSortKey
+      ( ..,
+        AppImageConfigSortKey_CreationTime,
+        AppImageConfigSortKey_LastModifiedTime,
+        AppImageConfigSortKey_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppImageConfigSortKey = AppImageConfigSortKey'
+  { fromAppImageConfigSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppImageConfigSortKey_CreationTime :: AppImageConfigSortKey
+pattern AppImageConfigSortKey_CreationTime = AppImageConfigSortKey' "CreationTime"
+
+pattern AppImageConfigSortKey_LastModifiedTime :: AppImageConfigSortKey
+pattern AppImageConfigSortKey_LastModifiedTime = AppImageConfigSortKey' "LastModifiedTime"
+
+pattern AppImageConfigSortKey_Name :: AppImageConfigSortKey
+pattern AppImageConfigSortKey_Name = AppImageConfigSortKey' "Name"
+
+{-# COMPLETE
+  AppImageConfigSortKey_CreationTime,
+  AppImageConfigSortKey_LastModifiedTime,
+  AppImageConfigSortKey_Name,
+  AppImageConfigSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AppInstanceType.hs b/gen/Amazonka/SageMaker/Types/AppInstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppInstanceType.hs
@@ -0,0 +1,346 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppInstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppInstanceType
+  ( AppInstanceType
+      ( ..,
+        AppInstanceType_Ml_c5_12xlarge,
+        AppInstanceType_Ml_c5_18xlarge,
+        AppInstanceType_Ml_c5_24xlarge,
+        AppInstanceType_Ml_c5_2xlarge,
+        AppInstanceType_Ml_c5_4xlarge,
+        AppInstanceType_Ml_c5_9xlarge,
+        AppInstanceType_Ml_c5_large,
+        AppInstanceType_Ml_c5_xlarge,
+        AppInstanceType_Ml_g4dn_12xlarge,
+        AppInstanceType_Ml_g4dn_16xlarge,
+        AppInstanceType_Ml_g4dn_2xlarge,
+        AppInstanceType_Ml_g4dn_4xlarge,
+        AppInstanceType_Ml_g4dn_8xlarge,
+        AppInstanceType_Ml_g4dn_xlarge,
+        AppInstanceType_Ml_g5_12xlarge,
+        AppInstanceType_Ml_g5_16xlarge,
+        AppInstanceType_Ml_g5_24xlarge,
+        AppInstanceType_Ml_g5_2xlarge,
+        AppInstanceType_Ml_g5_48xlarge,
+        AppInstanceType_Ml_g5_4xlarge,
+        AppInstanceType_Ml_g5_8xlarge,
+        AppInstanceType_Ml_g5_xlarge,
+        AppInstanceType_Ml_m5_12xlarge,
+        AppInstanceType_Ml_m5_16xlarge,
+        AppInstanceType_Ml_m5_24xlarge,
+        AppInstanceType_Ml_m5_2xlarge,
+        AppInstanceType_Ml_m5_4xlarge,
+        AppInstanceType_Ml_m5_8xlarge,
+        AppInstanceType_Ml_m5_large,
+        AppInstanceType_Ml_m5_xlarge,
+        AppInstanceType_Ml_m5d_12xlarge,
+        AppInstanceType_Ml_m5d_16xlarge,
+        AppInstanceType_Ml_m5d_24xlarge,
+        AppInstanceType_Ml_m5d_2xlarge,
+        AppInstanceType_Ml_m5d_4xlarge,
+        AppInstanceType_Ml_m5d_8xlarge,
+        AppInstanceType_Ml_m5d_large,
+        AppInstanceType_Ml_m5d_xlarge,
+        AppInstanceType_Ml_p3_16xlarge,
+        AppInstanceType_Ml_p3_2xlarge,
+        AppInstanceType_Ml_p3_8xlarge,
+        AppInstanceType_Ml_p3dn_24xlarge,
+        AppInstanceType_Ml_r5_12xlarge,
+        AppInstanceType_Ml_r5_16xlarge,
+        AppInstanceType_Ml_r5_24xlarge,
+        AppInstanceType_Ml_r5_2xlarge,
+        AppInstanceType_Ml_r5_4xlarge,
+        AppInstanceType_Ml_r5_8xlarge,
+        AppInstanceType_Ml_r5_large,
+        AppInstanceType_Ml_r5_xlarge,
+        AppInstanceType_Ml_t3_2xlarge,
+        AppInstanceType_Ml_t3_large,
+        AppInstanceType_Ml_t3_medium,
+        AppInstanceType_Ml_t3_micro,
+        AppInstanceType_Ml_t3_small,
+        AppInstanceType_Ml_t3_xlarge,
+        AppInstanceType_System
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppInstanceType = AppInstanceType'
+  { fromAppInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppInstanceType_Ml_c5_12xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_12xlarge = AppInstanceType' "ml.c5.12xlarge"
+
+pattern AppInstanceType_Ml_c5_18xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_18xlarge = AppInstanceType' "ml.c5.18xlarge"
+
+pattern AppInstanceType_Ml_c5_24xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_24xlarge = AppInstanceType' "ml.c5.24xlarge"
+
+pattern AppInstanceType_Ml_c5_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_2xlarge = AppInstanceType' "ml.c5.2xlarge"
+
+pattern AppInstanceType_Ml_c5_4xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_4xlarge = AppInstanceType' "ml.c5.4xlarge"
+
+pattern AppInstanceType_Ml_c5_9xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_9xlarge = AppInstanceType' "ml.c5.9xlarge"
+
+pattern AppInstanceType_Ml_c5_large :: AppInstanceType
+pattern AppInstanceType_Ml_c5_large = AppInstanceType' "ml.c5.large"
+
+pattern AppInstanceType_Ml_c5_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_c5_xlarge = AppInstanceType' "ml.c5.xlarge"
+
+pattern AppInstanceType_Ml_g4dn_12xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g4dn_12xlarge = AppInstanceType' "ml.g4dn.12xlarge"
+
+pattern AppInstanceType_Ml_g4dn_16xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g4dn_16xlarge = AppInstanceType' "ml.g4dn.16xlarge"
+
+pattern AppInstanceType_Ml_g4dn_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g4dn_2xlarge = AppInstanceType' "ml.g4dn.2xlarge"
+
+pattern AppInstanceType_Ml_g4dn_4xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g4dn_4xlarge = AppInstanceType' "ml.g4dn.4xlarge"
+
+pattern AppInstanceType_Ml_g4dn_8xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g4dn_8xlarge = AppInstanceType' "ml.g4dn.8xlarge"
+
+pattern AppInstanceType_Ml_g4dn_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g4dn_xlarge = AppInstanceType' "ml.g4dn.xlarge"
+
+pattern AppInstanceType_Ml_g5_12xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_12xlarge = AppInstanceType' "ml.g5.12xlarge"
+
+pattern AppInstanceType_Ml_g5_16xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_16xlarge = AppInstanceType' "ml.g5.16xlarge"
+
+pattern AppInstanceType_Ml_g5_24xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_24xlarge = AppInstanceType' "ml.g5.24xlarge"
+
+pattern AppInstanceType_Ml_g5_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_2xlarge = AppInstanceType' "ml.g5.2xlarge"
+
+pattern AppInstanceType_Ml_g5_48xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_48xlarge = AppInstanceType' "ml.g5.48xlarge"
+
+pattern AppInstanceType_Ml_g5_4xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_4xlarge = AppInstanceType' "ml.g5.4xlarge"
+
+pattern AppInstanceType_Ml_g5_8xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_8xlarge = AppInstanceType' "ml.g5.8xlarge"
+
+pattern AppInstanceType_Ml_g5_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_g5_xlarge = AppInstanceType' "ml.g5.xlarge"
+
+pattern AppInstanceType_Ml_m5_12xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_12xlarge = AppInstanceType' "ml.m5.12xlarge"
+
+pattern AppInstanceType_Ml_m5_16xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_16xlarge = AppInstanceType' "ml.m5.16xlarge"
+
+pattern AppInstanceType_Ml_m5_24xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_24xlarge = AppInstanceType' "ml.m5.24xlarge"
+
+pattern AppInstanceType_Ml_m5_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_2xlarge = AppInstanceType' "ml.m5.2xlarge"
+
+pattern AppInstanceType_Ml_m5_4xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_4xlarge = AppInstanceType' "ml.m5.4xlarge"
+
+pattern AppInstanceType_Ml_m5_8xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_8xlarge = AppInstanceType' "ml.m5.8xlarge"
+
+pattern AppInstanceType_Ml_m5_large :: AppInstanceType
+pattern AppInstanceType_Ml_m5_large = AppInstanceType' "ml.m5.large"
+
+pattern AppInstanceType_Ml_m5_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5_xlarge = AppInstanceType' "ml.m5.xlarge"
+
+pattern AppInstanceType_Ml_m5d_12xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_12xlarge = AppInstanceType' "ml.m5d.12xlarge"
+
+pattern AppInstanceType_Ml_m5d_16xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_16xlarge = AppInstanceType' "ml.m5d.16xlarge"
+
+pattern AppInstanceType_Ml_m5d_24xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_24xlarge = AppInstanceType' "ml.m5d.24xlarge"
+
+pattern AppInstanceType_Ml_m5d_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_2xlarge = AppInstanceType' "ml.m5d.2xlarge"
+
+pattern AppInstanceType_Ml_m5d_4xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_4xlarge = AppInstanceType' "ml.m5d.4xlarge"
+
+pattern AppInstanceType_Ml_m5d_8xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_8xlarge = AppInstanceType' "ml.m5d.8xlarge"
+
+pattern AppInstanceType_Ml_m5d_large :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_large = AppInstanceType' "ml.m5d.large"
+
+pattern AppInstanceType_Ml_m5d_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_m5d_xlarge = AppInstanceType' "ml.m5d.xlarge"
+
+pattern AppInstanceType_Ml_p3_16xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_p3_16xlarge = AppInstanceType' "ml.p3.16xlarge"
+
+pattern AppInstanceType_Ml_p3_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_p3_2xlarge = AppInstanceType' "ml.p3.2xlarge"
+
+pattern AppInstanceType_Ml_p3_8xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_p3_8xlarge = AppInstanceType' "ml.p3.8xlarge"
+
+pattern AppInstanceType_Ml_p3dn_24xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_p3dn_24xlarge = AppInstanceType' "ml.p3dn.24xlarge"
+
+pattern AppInstanceType_Ml_r5_12xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_12xlarge = AppInstanceType' "ml.r5.12xlarge"
+
+pattern AppInstanceType_Ml_r5_16xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_16xlarge = AppInstanceType' "ml.r5.16xlarge"
+
+pattern AppInstanceType_Ml_r5_24xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_24xlarge = AppInstanceType' "ml.r5.24xlarge"
+
+pattern AppInstanceType_Ml_r5_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_2xlarge = AppInstanceType' "ml.r5.2xlarge"
+
+pattern AppInstanceType_Ml_r5_4xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_4xlarge = AppInstanceType' "ml.r5.4xlarge"
+
+pattern AppInstanceType_Ml_r5_8xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_8xlarge = AppInstanceType' "ml.r5.8xlarge"
+
+pattern AppInstanceType_Ml_r5_large :: AppInstanceType
+pattern AppInstanceType_Ml_r5_large = AppInstanceType' "ml.r5.large"
+
+pattern AppInstanceType_Ml_r5_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_r5_xlarge = AppInstanceType' "ml.r5.xlarge"
+
+pattern AppInstanceType_Ml_t3_2xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_t3_2xlarge = AppInstanceType' "ml.t3.2xlarge"
+
+pattern AppInstanceType_Ml_t3_large :: AppInstanceType
+pattern AppInstanceType_Ml_t3_large = AppInstanceType' "ml.t3.large"
+
+pattern AppInstanceType_Ml_t3_medium :: AppInstanceType
+pattern AppInstanceType_Ml_t3_medium = AppInstanceType' "ml.t3.medium"
+
+pattern AppInstanceType_Ml_t3_micro :: AppInstanceType
+pattern AppInstanceType_Ml_t3_micro = AppInstanceType' "ml.t3.micro"
+
+pattern AppInstanceType_Ml_t3_small :: AppInstanceType
+pattern AppInstanceType_Ml_t3_small = AppInstanceType' "ml.t3.small"
+
+pattern AppInstanceType_Ml_t3_xlarge :: AppInstanceType
+pattern AppInstanceType_Ml_t3_xlarge = AppInstanceType' "ml.t3.xlarge"
+
+pattern AppInstanceType_System :: AppInstanceType
+pattern AppInstanceType_System = AppInstanceType' "system"
+
+{-# COMPLETE
+  AppInstanceType_Ml_c5_12xlarge,
+  AppInstanceType_Ml_c5_18xlarge,
+  AppInstanceType_Ml_c5_24xlarge,
+  AppInstanceType_Ml_c5_2xlarge,
+  AppInstanceType_Ml_c5_4xlarge,
+  AppInstanceType_Ml_c5_9xlarge,
+  AppInstanceType_Ml_c5_large,
+  AppInstanceType_Ml_c5_xlarge,
+  AppInstanceType_Ml_g4dn_12xlarge,
+  AppInstanceType_Ml_g4dn_16xlarge,
+  AppInstanceType_Ml_g4dn_2xlarge,
+  AppInstanceType_Ml_g4dn_4xlarge,
+  AppInstanceType_Ml_g4dn_8xlarge,
+  AppInstanceType_Ml_g4dn_xlarge,
+  AppInstanceType_Ml_g5_12xlarge,
+  AppInstanceType_Ml_g5_16xlarge,
+  AppInstanceType_Ml_g5_24xlarge,
+  AppInstanceType_Ml_g5_2xlarge,
+  AppInstanceType_Ml_g5_48xlarge,
+  AppInstanceType_Ml_g5_4xlarge,
+  AppInstanceType_Ml_g5_8xlarge,
+  AppInstanceType_Ml_g5_xlarge,
+  AppInstanceType_Ml_m5_12xlarge,
+  AppInstanceType_Ml_m5_16xlarge,
+  AppInstanceType_Ml_m5_24xlarge,
+  AppInstanceType_Ml_m5_2xlarge,
+  AppInstanceType_Ml_m5_4xlarge,
+  AppInstanceType_Ml_m5_8xlarge,
+  AppInstanceType_Ml_m5_large,
+  AppInstanceType_Ml_m5_xlarge,
+  AppInstanceType_Ml_m5d_12xlarge,
+  AppInstanceType_Ml_m5d_16xlarge,
+  AppInstanceType_Ml_m5d_24xlarge,
+  AppInstanceType_Ml_m5d_2xlarge,
+  AppInstanceType_Ml_m5d_4xlarge,
+  AppInstanceType_Ml_m5d_8xlarge,
+  AppInstanceType_Ml_m5d_large,
+  AppInstanceType_Ml_m5d_xlarge,
+  AppInstanceType_Ml_p3_16xlarge,
+  AppInstanceType_Ml_p3_2xlarge,
+  AppInstanceType_Ml_p3_8xlarge,
+  AppInstanceType_Ml_p3dn_24xlarge,
+  AppInstanceType_Ml_r5_12xlarge,
+  AppInstanceType_Ml_r5_16xlarge,
+  AppInstanceType_Ml_r5_24xlarge,
+  AppInstanceType_Ml_r5_2xlarge,
+  AppInstanceType_Ml_r5_4xlarge,
+  AppInstanceType_Ml_r5_8xlarge,
+  AppInstanceType_Ml_r5_large,
+  AppInstanceType_Ml_r5_xlarge,
+  AppInstanceType_Ml_t3_2xlarge,
+  AppInstanceType_Ml_t3_large,
+  AppInstanceType_Ml_t3_medium,
+  AppInstanceType_Ml_t3_micro,
+  AppInstanceType_Ml_t3_small,
+  AppInstanceType_Ml_t3_xlarge,
+  AppInstanceType_System,
+  AppInstanceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AppNetworkAccessType.hs b/gen/Amazonka/SageMaker/Types/AppNetworkAccessType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppNetworkAccessType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppNetworkAccessType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppNetworkAccessType
+  ( AppNetworkAccessType
+      ( ..,
+        AppNetworkAccessType_PublicInternetOnly,
+        AppNetworkAccessType_VpcOnly
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppNetworkAccessType = AppNetworkAccessType'
+  { fromAppNetworkAccessType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppNetworkAccessType_PublicInternetOnly :: AppNetworkAccessType
+pattern AppNetworkAccessType_PublicInternetOnly = AppNetworkAccessType' "PublicInternetOnly"
+
+pattern AppNetworkAccessType_VpcOnly :: AppNetworkAccessType
+pattern AppNetworkAccessType_VpcOnly = AppNetworkAccessType' "VpcOnly"
+
+{-# COMPLETE
+  AppNetworkAccessType_PublicInternetOnly,
+  AppNetworkAccessType_VpcOnly,
+  AppNetworkAccessType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AppSecurityGroupManagement.hs b/gen/Amazonka/SageMaker/Types/AppSecurityGroupManagement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppSecurityGroupManagement.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppSecurityGroupManagement
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppSecurityGroupManagement
+  ( AppSecurityGroupManagement
+      ( ..,
+        AppSecurityGroupManagement_Customer,
+        AppSecurityGroupManagement_Service
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppSecurityGroupManagement = AppSecurityGroupManagement'
+  { fromAppSecurityGroupManagement ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppSecurityGroupManagement_Customer :: AppSecurityGroupManagement
+pattern AppSecurityGroupManagement_Customer = AppSecurityGroupManagement' "Customer"
+
+pattern AppSecurityGroupManagement_Service :: AppSecurityGroupManagement
+pattern AppSecurityGroupManagement_Service = AppSecurityGroupManagement' "Service"
+
+{-# COMPLETE
+  AppSecurityGroupManagement_Customer,
+  AppSecurityGroupManagement_Service,
+  AppSecurityGroupManagement'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AppSortKey.hs b/gen/Amazonka/SageMaker/Types/AppSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppSortKey.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppSortKey
+  ( AppSortKey
+      ( ..,
+        AppSortKey_CreationTime
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppSortKey = AppSortKey'
+  { fromAppSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppSortKey_CreationTime :: AppSortKey
+pattern AppSortKey_CreationTime = AppSortKey' "CreationTime"
+
+{-# COMPLETE
+  AppSortKey_CreationTime,
+  AppSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AppSpecification.hs b/gen/Amazonka/SageMaker/Types/AppSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppSpecification.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AppSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppSpecification 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
+
+-- | Configuration to run a processing job in a specified container image.
+--
+-- /See:/ 'newAppSpecification' smart constructor.
+data AppSpecification = AppSpecification'
+  { -- | The arguments for a container used to run a processing job.
+    containerArguments :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The entrypoint for a container used to run a processing job.
+    containerEntrypoint :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The container image to be run by the processing job.
+    imageUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AppSpecification' 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:
+--
+-- 'containerArguments', 'appSpecification_containerArguments' - The arguments for a container used to run a processing job.
+--
+-- 'containerEntrypoint', 'appSpecification_containerEntrypoint' - The entrypoint for a container used to run a processing job.
+--
+-- 'imageUri', 'appSpecification_imageUri' - The container image to be run by the processing job.
+newAppSpecification ::
+  -- | 'imageUri'
+  Prelude.Text ->
+  AppSpecification
+newAppSpecification pImageUri_ =
+  AppSpecification'
+    { containerArguments =
+        Prelude.Nothing,
+      containerEntrypoint = Prelude.Nothing,
+      imageUri = pImageUri_
+    }
+
+-- | The arguments for a container used to run a processing job.
+appSpecification_containerArguments :: Lens.Lens' AppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+appSpecification_containerArguments = Lens.lens (\AppSpecification' {containerArguments} -> containerArguments) (\s@AppSpecification' {} a -> s {containerArguments = a} :: AppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The entrypoint for a container used to run a processing job.
+appSpecification_containerEntrypoint :: Lens.Lens' AppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+appSpecification_containerEntrypoint = Lens.lens (\AppSpecification' {containerEntrypoint} -> containerEntrypoint) (\s@AppSpecification' {} a -> s {containerEntrypoint = a} :: AppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The container image to be run by the processing job.
+appSpecification_imageUri :: Lens.Lens' AppSpecification Prelude.Text
+appSpecification_imageUri = Lens.lens (\AppSpecification' {imageUri} -> imageUri) (\s@AppSpecification' {} a -> s {imageUri = a} :: AppSpecification)
+
+instance Data.FromJSON AppSpecification where
+  parseJSON =
+    Data.withObject
+      "AppSpecification"
+      ( \x ->
+          AppSpecification'
+            Prelude.<$> (x Data..:? "ContainerArguments")
+            Prelude.<*> (x Data..:? "ContainerEntrypoint")
+            Prelude.<*> (x Data..: "ImageUri")
+      )
+
+instance Prelude.Hashable AppSpecification where
+  hashWithSalt _salt AppSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerArguments
+      `Prelude.hashWithSalt` containerEntrypoint
+      `Prelude.hashWithSalt` imageUri
+
+instance Prelude.NFData AppSpecification where
+  rnf AppSpecification' {..} =
+    Prelude.rnf containerArguments
+      `Prelude.seq` Prelude.rnf containerEntrypoint
+      `Prelude.seq` Prelude.rnf imageUri
+
+instance Data.ToJSON AppSpecification where
+  toJSON AppSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerArguments" Data..=)
+              Prelude.<$> containerArguments,
+            ("ContainerEntrypoint" Data..=)
+              Prelude.<$> containerEntrypoint,
+            Prelude.Just ("ImageUri" Data..= imageUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AppStatus.hs b/gen/Amazonka/SageMaker/Types/AppStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppStatus
+  ( AppStatus
+      ( ..,
+        AppStatus_Deleted,
+        AppStatus_Deleting,
+        AppStatus_Failed,
+        AppStatus_InService,
+        AppStatus_Pending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppStatus = AppStatus'
+  { fromAppStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppStatus_Deleted :: AppStatus
+pattern AppStatus_Deleted = AppStatus' "Deleted"
+
+pattern AppStatus_Deleting :: AppStatus
+pattern AppStatus_Deleting = AppStatus' "Deleting"
+
+pattern AppStatus_Failed :: AppStatus
+pattern AppStatus_Failed = AppStatus' "Failed"
+
+pattern AppStatus_InService :: AppStatus
+pattern AppStatus_InService = AppStatus' "InService"
+
+pattern AppStatus_Pending :: AppStatus
+pattern AppStatus_Pending = AppStatus' "Pending"
+
+{-# COMPLETE
+  AppStatus_Deleted,
+  AppStatus_Deleting,
+  AppStatus_Failed,
+  AppStatus_InService,
+  AppStatus_Pending,
+  AppStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AppType.hs b/gen/Amazonka/SageMaker/Types/AppType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AppType.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AppType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AppType
+  ( AppType
+      ( ..,
+        AppType_JupyterServer,
+        AppType_KernelGateway,
+        AppType_RSessionGateway,
+        AppType_RStudioServerPro,
+        AppType_TensorBoard
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AppType = AppType' {fromAppType :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AppType_JupyterServer :: AppType
+pattern AppType_JupyterServer = AppType' "JupyterServer"
+
+pattern AppType_KernelGateway :: AppType
+pattern AppType_KernelGateway = AppType' "KernelGateway"
+
+pattern AppType_RSessionGateway :: AppType
+pattern AppType_RSessionGateway = AppType' "RSessionGateway"
+
+pattern AppType_RStudioServerPro :: AppType
+pattern AppType_RStudioServerPro = AppType' "RStudioServerPro"
+
+pattern AppType_TensorBoard :: AppType
+pattern AppType_TensorBoard = AppType' "TensorBoard"
+
+{-# COMPLETE
+  AppType_JupyterServer,
+  AppType_KernelGateway,
+  AppType_RSessionGateway,
+  AppType_RStudioServerPro,
+  AppType_TensorBoard,
+  AppType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ArtifactSource.hs b/gen/Amazonka/SageMaker/Types/ArtifactSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ArtifactSource.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ArtifactSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ArtifactSource 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 Amazonka.SageMaker.Types.ArtifactSourceType
+
+-- | A structure describing the source of an artifact.
+--
+-- /See:/ 'newArtifactSource' smart constructor.
+data ArtifactSource = ArtifactSource'
+  { -- | A list of source types.
+    sourceTypes :: Prelude.Maybe [ArtifactSourceType],
+    -- | The URI of the source.
+    sourceUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArtifactSource' 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:
+--
+-- 'sourceTypes', 'artifactSource_sourceTypes' - A list of source types.
+--
+-- 'sourceUri', 'artifactSource_sourceUri' - The URI of the source.
+newArtifactSource ::
+  -- | 'sourceUri'
+  Prelude.Text ->
+  ArtifactSource
+newArtifactSource pSourceUri_ =
+  ArtifactSource'
+    { sourceTypes = Prelude.Nothing,
+      sourceUri = pSourceUri_
+    }
+
+-- | A list of source types.
+artifactSource_sourceTypes :: Lens.Lens' ArtifactSource (Prelude.Maybe [ArtifactSourceType])
+artifactSource_sourceTypes = Lens.lens (\ArtifactSource' {sourceTypes} -> sourceTypes) (\s@ArtifactSource' {} a -> s {sourceTypes = a} :: ArtifactSource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The URI of the source.
+artifactSource_sourceUri :: Lens.Lens' ArtifactSource Prelude.Text
+artifactSource_sourceUri = Lens.lens (\ArtifactSource' {sourceUri} -> sourceUri) (\s@ArtifactSource' {} a -> s {sourceUri = a} :: ArtifactSource)
+
+instance Data.FromJSON ArtifactSource where
+  parseJSON =
+    Data.withObject
+      "ArtifactSource"
+      ( \x ->
+          ArtifactSource'
+            Prelude.<$> (x Data..:? "SourceTypes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "SourceUri")
+      )
+
+instance Prelude.Hashable ArtifactSource where
+  hashWithSalt _salt ArtifactSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceTypes
+      `Prelude.hashWithSalt` sourceUri
+
+instance Prelude.NFData ArtifactSource where
+  rnf ArtifactSource' {..} =
+    Prelude.rnf sourceTypes
+      `Prelude.seq` Prelude.rnf sourceUri
+
+instance Data.ToJSON ArtifactSource where
+  toJSON ArtifactSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceTypes" Data..=) Prelude.<$> sourceTypes,
+            Prelude.Just ("SourceUri" Data..= sourceUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ArtifactSourceIdType.hs b/gen/Amazonka/SageMaker/Types/ArtifactSourceIdType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ArtifactSourceIdType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ArtifactSourceIdType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ArtifactSourceIdType
+  ( ArtifactSourceIdType
+      ( ..,
+        ArtifactSourceIdType_Custom,
+        ArtifactSourceIdType_MD5Hash,
+        ArtifactSourceIdType_S3ETag,
+        ArtifactSourceIdType_S3Version
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ArtifactSourceIdType = ArtifactSourceIdType'
+  { fromArtifactSourceIdType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ArtifactSourceIdType_Custom :: ArtifactSourceIdType
+pattern ArtifactSourceIdType_Custom = ArtifactSourceIdType' "Custom"
+
+pattern ArtifactSourceIdType_MD5Hash :: ArtifactSourceIdType
+pattern ArtifactSourceIdType_MD5Hash = ArtifactSourceIdType' "MD5Hash"
+
+pattern ArtifactSourceIdType_S3ETag :: ArtifactSourceIdType
+pattern ArtifactSourceIdType_S3ETag = ArtifactSourceIdType' "S3ETag"
+
+pattern ArtifactSourceIdType_S3Version :: ArtifactSourceIdType
+pattern ArtifactSourceIdType_S3Version = ArtifactSourceIdType' "S3Version"
+
+{-# COMPLETE
+  ArtifactSourceIdType_Custom,
+  ArtifactSourceIdType_MD5Hash,
+  ArtifactSourceIdType_S3ETag,
+  ArtifactSourceIdType_S3Version,
+  ArtifactSourceIdType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ArtifactSourceType.hs b/gen/Amazonka/SageMaker/Types/ArtifactSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ArtifactSourceType.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ArtifactSourceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ArtifactSourceType 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 Amazonka.SageMaker.Types.ArtifactSourceIdType
+
+-- | The ID and ID type of an artifact source.
+--
+-- /See:/ 'newArtifactSourceType' smart constructor.
+data ArtifactSourceType = ArtifactSourceType'
+  { -- | The type of ID.
+    sourceIdType :: ArtifactSourceIdType,
+    -- | The ID.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArtifactSourceType' 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:
+--
+-- 'sourceIdType', 'artifactSourceType_sourceIdType' - The type of ID.
+--
+-- 'value', 'artifactSourceType_value' - The ID.
+newArtifactSourceType ::
+  -- | 'sourceIdType'
+  ArtifactSourceIdType ->
+  -- | 'value'
+  Prelude.Text ->
+  ArtifactSourceType
+newArtifactSourceType pSourceIdType_ pValue_ =
+  ArtifactSourceType'
+    { sourceIdType = pSourceIdType_,
+      value = pValue_
+    }
+
+-- | The type of ID.
+artifactSourceType_sourceIdType :: Lens.Lens' ArtifactSourceType ArtifactSourceIdType
+artifactSourceType_sourceIdType = Lens.lens (\ArtifactSourceType' {sourceIdType} -> sourceIdType) (\s@ArtifactSourceType' {} a -> s {sourceIdType = a} :: ArtifactSourceType)
+
+-- | The ID.
+artifactSourceType_value :: Lens.Lens' ArtifactSourceType Prelude.Text
+artifactSourceType_value = Lens.lens (\ArtifactSourceType' {value} -> value) (\s@ArtifactSourceType' {} a -> s {value = a} :: ArtifactSourceType)
+
+instance Data.FromJSON ArtifactSourceType where
+  parseJSON =
+    Data.withObject
+      "ArtifactSourceType"
+      ( \x ->
+          ArtifactSourceType'
+            Prelude.<$> (x Data..: "SourceIdType")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable ArtifactSourceType where
+  hashWithSalt _salt ArtifactSourceType' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceIdType
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ArtifactSourceType where
+  rnf ArtifactSourceType' {..} =
+    Prelude.rnf sourceIdType
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON ArtifactSourceType where
+  toJSON ArtifactSourceType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SourceIdType" Data..= sourceIdType),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ArtifactSummary.hs b/gen/Amazonka/SageMaker/Types/ArtifactSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ArtifactSummary.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ArtifactSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ArtifactSummary 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 Amazonka.SageMaker.Types.ArtifactSource
+
+-- | Lists a summary of the properties of an artifact. An artifact represents
+-- a URI addressable object or data. Some examples are a dataset and a
+-- model.
+--
+-- /See:/ 'newArtifactSummary' smart constructor.
+data ArtifactSummary = ArtifactSummary'
+  { -- | The Amazon Resource Name (ARN) of the artifact.
+    artifactArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the artifact.
+    artifactName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the artifact.
+    artifactType :: Prelude.Maybe Prelude.Text,
+    -- | When the artifact was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | When the artifact was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The source of the artifact.
+    source :: Prelude.Maybe ArtifactSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArtifactSummary' 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:
+--
+-- 'artifactArn', 'artifactSummary_artifactArn' - The Amazon Resource Name (ARN) of the artifact.
+--
+-- 'artifactName', 'artifactSummary_artifactName' - The name of the artifact.
+--
+-- 'artifactType', 'artifactSummary_artifactType' - The type of the artifact.
+--
+-- 'creationTime', 'artifactSummary_creationTime' - When the artifact was created.
+--
+-- 'lastModifiedTime', 'artifactSummary_lastModifiedTime' - When the artifact was last modified.
+--
+-- 'source', 'artifactSummary_source' - The source of the artifact.
+newArtifactSummary ::
+  ArtifactSummary
+newArtifactSummary =
+  ArtifactSummary'
+    { artifactArn = Prelude.Nothing,
+      artifactName = Prelude.Nothing,
+      artifactType = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      source = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the artifact.
+artifactSummary_artifactArn :: Lens.Lens' ArtifactSummary (Prelude.Maybe Prelude.Text)
+artifactSummary_artifactArn = Lens.lens (\ArtifactSummary' {artifactArn} -> artifactArn) (\s@ArtifactSummary' {} a -> s {artifactArn = a} :: ArtifactSummary)
+
+-- | The name of the artifact.
+artifactSummary_artifactName :: Lens.Lens' ArtifactSummary (Prelude.Maybe Prelude.Text)
+artifactSummary_artifactName = Lens.lens (\ArtifactSummary' {artifactName} -> artifactName) (\s@ArtifactSummary' {} a -> s {artifactName = a} :: ArtifactSummary)
+
+-- | The type of the artifact.
+artifactSummary_artifactType :: Lens.Lens' ArtifactSummary (Prelude.Maybe Prelude.Text)
+artifactSummary_artifactType = Lens.lens (\ArtifactSummary' {artifactType} -> artifactType) (\s@ArtifactSummary' {} a -> s {artifactType = a} :: ArtifactSummary)
+
+-- | When the artifact was created.
+artifactSummary_creationTime :: Lens.Lens' ArtifactSummary (Prelude.Maybe Prelude.UTCTime)
+artifactSummary_creationTime = Lens.lens (\ArtifactSummary' {creationTime} -> creationTime) (\s@ArtifactSummary' {} a -> s {creationTime = a} :: ArtifactSummary) Prelude.. Lens.mapping Data._Time
+
+-- | When the artifact was last modified.
+artifactSummary_lastModifiedTime :: Lens.Lens' ArtifactSummary (Prelude.Maybe Prelude.UTCTime)
+artifactSummary_lastModifiedTime = Lens.lens (\ArtifactSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ArtifactSummary' {} a -> s {lastModifiedTime = a} :: ArtifactSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The source of the artifact.
+artifactSummary_source :: Lens.Lens' ArtifactSummary (Prelude.Maybe ArtifactSource)
+artifactSummary_source = Lens.lens (\ArtifactSummary' {source} -> source) (\s@ArtifactSummary' {} a -> s {source = a} :: ArtifactSummary)
+
+instance Data.FromJSON ArtifactSummary where
+  parseJSON =
+    Data.withObject
+      "ArtifactSummary"
+      ( \x ->
+          ArtifactSummary'
+            Prelude.<$> (x Data..:? "ArtifactArn")
+            Prelude.<*> (x Data..:? "ArtifactName")
+            Prelude.<*> (x Data..:? "ArtifactType")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Source")
+      )
+
+instance Prelude.Hashable ArtifactSummary where
+  hashWithSalt _salt ArtifactSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactArn
+      `Prelude.hashWithSalt` artifactName
+      `Prelude.hashWithSalt` artifactType
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` source
+
+instance Prelude.NFData ArtifactSummary where
+  rnf ArtifactSummary' {..} =
+    Prelude.rnf artifactArn
+      `Prelude.seq` Prelude.rnf artifactName
+      `Prelude.seq` Prelude.rnf artifactType
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf source
diff --git a/gen/Amazonka/SageMaker/Types/AssemblyType.hs b/gen/Amazonka/SageMaker/Types/AssemblyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AssemblyType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AssemblyType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AssemblyType
+  ( AssemblyType
+      ( ..,
+        AssemblyType_Line,
+        AssemblyType_None
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssemblyType = AssemblyType'
+  { fromAssemblyType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AssemblyType_Line :: AssemblyType
+pattern AssemblyType_Line = AssemblyType' "Line"
+
+pattern AssemblyType_None :: AssemblyType
+pattern AssemblyType_None = AssemblyType' "None"
+
+{-# COMPLETE
+  AssemblyType_Line,
+  AssemblyType_None,
+  AssemblyType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AssociationEdgeType.hs b/gen/Amazonka/SageMaker/Types/AssociationEdgeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AssociationEdgeType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AssociationEdgeType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AssociationEdgeType
+  ( AssociationEdgeType
+      ( ..,
+        AssociationEdgeType_AssociatedWith,
+        AssociationEdgeType_ContributedTo,
+        AssociationEdgeType_DerivedFrom,
+        AssociationEdgeType_Produced
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssociationEdgeType = AssociationEdgeType'
+  { fromAssociationEdgeType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AssociationEdgeType_AssociatedWith :: AssociationEdgeType
+pattern AssociationEdgeType_AssociatedWith = AssociationEdgeType' "AssociatedWith"
+
+pattern AssociationEdgeType_ContributedTo :: AssociationEdgeType
+pattern AssociationEdgeType_ContributedTo = AssociationEdgeType' "ContributedTo"
+
+pattern AssociationEdgeType_DerivedFrom :: AssociationEdgeType
+pattern AssociationEdgeType_DerivedFrom = AssociationEdgeType' "DerivedFrom"
+
+pattern AssociationEdgeType_Produced :: AssociationEdgeType
+pattern AssociationEdgeType_Produced = AssociationEdgeType' "Produced"
+
+{-# COMPLETE
+  AssociationEdgeType_AssociatedWith,
+  AssociationEdgeType_ContributedTo,
+  AssociationEdgeType_DerivedFrom,
+  AssociationEdgeType_Produced,
+  AssociationEdgeType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AssociationSummary.hs b/gen/Amazonka/SageMaker/Types/AssociationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AssociationSummary.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AssociationSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AssociationSummary 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 Amazonka.SageMaker.Types.AssociationEdgeType
+import Amazonka.SageMaker.Types.UserContext
+
+-- | Lists a summary of the properties of an association. An association is
+-- an entity that links other lineage or experiment entities. An example
+-- would be an association between a training job and a model.
+--
+-- /See:/ 'newAssociationSummary' smart constructor.
+data AssociationSummary = AssociationSummary'
+  { -- | The type of the association.
+    associationType :: Prelude.Maybe AssociationEdgeType,
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the association was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the destination.
+    destinationArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the destination.
+    destinationName :: Prelude.Maybe Prelude.Text,
+    -- | The destination type.
+    destinationType :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the source.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the source.
+    sourceName :: Prelude.Maybe Prelude.Text,
+    -- | The source type.
+    sourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociationSummary' 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:
+--
+-- 'associationType', 'associationSummary_associationType' - The type of the association.
+--
+-- 'createdBy', 'associationSummary_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'associationSummary_creationTime' - When the association was created.
+--
+-- 'destinationArn', 'associationSummary_destinationArn' - The Amazon Resource Name (ARN) of the destination.
+--
+-- 'destinationName', 'associationSummary_destinationName' - The name of the destination.
+--
+-- 'destinationType', 'associationSummary_destinationType' - The destination type.
+--
+-- 'sourceArn', 'associationSummary_sourceArn' - The ARN of the source.
+--
+-- 'sourceName', 'associationSummary_sourceName' - The name of the source.
+--
+-- 'sourceType', 'associationSummary_sourceType' - The source type.
+newAssociationSummary ::
+  AssociationSummary
+newAssociationSummary =
+  AssociationSummary'
+    { associationType =
+        Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      destinationArn = Prelude.Nothing,
+      destinationName = Prelude.Nothing,
+      destinationType = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      sourceName = Prelude.Nothing,
+      sourceType = Prelude.Nothing
+    }
+
+-- | The type of the association.
+associationSummary_associationType :: Lens.Lens' AssociationSummary (Prelude.Maybe AssociationEdgeType)
+associationSummary_associationType = Lens.lens (\AssociationSummary' {associationType} -> associationType) (\s@AssociationSummary' {} a -> s {associationType = a} :: AssociationSummary)
+
+-- | Undocumented member.
+associationSummary_createdBy :: Lens.Lens' AssociationSummary (Prelude.Maybe UserContext)
+associationSummary_createdBy = Lens.lens (\AssociationSummary' {createdBy} -> createdBy) (\s@AssociationSummary' {} a -> s {createdBy = a} :: AssociationSummary)
+
+-- | When the association was created.
+associationSummary_creationTime :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.UTCTime)
+associationSummary_creationTime = Lens.lens (\AssociationSummary' {creationTime} -> creationTime) (\s@AssociationSummary' {} a -> s {creationTime = a} :: AssociationSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the destination.
+associationSummary_destinationArn :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.Text)
+associationSummary_destinationArn = Lens.lens (\AssociationSummary' {destinationArn} -> destinationArn) (\s@AssociationSummary' {} a -> s {destinationArn = a} :: AssociationSummary)
+
+-- | The name of the destination.
+associationSummary_destinationName :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.Text)
+associationSummary_destinationName = Lens.lens (\AssociationSummary' {destinationName} -> destinationName) (\s@AssociationSummary' {} a -> s {destinationName = a} :: AssociationSummary)
+
+-- | The destination type.
+associationSummary_destinationType :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.Text)
+associationSummary_destinationType = Lens.lens (\AssociationSummary' {destinationType} -> destinationType) (\s@AssociationSummary' {} a -> s {destinationType = a} :: AssociationSummary)
+
+-- | The ARN of the source.
+associationSummary_sourceArn :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.Text)
+associationSummary_sourceArn = Lens.lens (\AssociationSummary' {sourceArn} -> sourceArn) (\s@AssociationSummary' {} a -> s {sourceArn = a} :: AssociationSummary)
+
+-- | The name of the source.
+associationSummary_sourceName :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.Text)
+associationSummary_sourceName = Lens.lens (\AssociationSummary' {sourceName} -> sourceName) (\s@AssociationSummary' {} a -> s {sourceName = a} :: AssociationSummary)
+
+-- | The source type.
+associationSummary_sourceType :: Lens.Lens' AssociationSummary (Prelude.Maybe Prelude.Text)
+associationSummary_sourceType = Lens.lens (\AssociationSummary' {sourceType} -> sourceType) (\s@AssociationSummary' {} a -> s {sourceType = a} :: AssociationSummary)
+
+instance Data.FromJSON AssociationSummary where
+  parseJSON =
+    Data.withObject
+      "AssociationSummary"
+      ( \x ->
+          AssociationSummary'
+            Prelude.<$> (x Data..:? "AssociationType")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DestinationArn")
+            Prelude.<*> (x Data..:? "DestinationName")
+            Prelude.<*> (x Data..:? "DestinationType")
+            Prelude.<*> (x Data..:? "SourceArn")
+            Prelude.<*> (x Data..:? "SourceName")
+            Prelude.<*> (x Data..:? "SourceType")
+      )
+
+instance Prelude.Hashable AssociationSummary where
+  hashWithSalt _salt AssociationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationType
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` destinationArn
+      `Prelude.hashWithSalt` destinationName
+      `Prelude.hashWithSalt` destinationType
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sourceName
+      `Prelude.hashWithSalt` sourceType
+
+instance Prelude.NFData AssociationSummary where
+  rnf AssociationSummary' {..} =
+    Prelude.rnf associationType
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf destinationArn
+      `Prelude.seq` Prelude.rnf destinationName
+      `Prelude.seq` Prelude.rnf destinationType
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sourceName
+      `Prelude.seq` Prelude.rnf sourceType
diff --git a/gen/Amazonka/SageMaker/Types/AsyncInferenceClientConfig.hs b/gen/Amazonka/SageMaker/Types/AsyncInferenceClientConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AsyncInferenceClientConfig.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AsyncInferenceClientConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AsyncInferenceClientConfig 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
+
+-- | Configures the behavior of the client used by SageMaker to interact with
+-- the model container during asynchronous inference.
+--
+-- /See:/ 'newAsyncInferenceClientConfig' smart constructor.
+data AsyncInferenceClientConfig = AsyncInferenceClientConfig'
+  { -- | The maximum number of concurrent requests sent by the SageMaker client
+    -- to the model container. If no value is provided, SageMaker chooses an
+    -- optimal value.
+    maxConcurrentInvocationsPerInstance :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AsyncInferenceClientConfig' 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:
+--
+-- 'maxConcurrentInvocationsPerInstance', 'asyncInferenceClientConfig_maxConcurrentInvocationsPerInstance' - The maximum number of concurrent requests sent by the SageMaker client
+-- to the model container. If no value is provided, SageMaker chooses an
+-- optimal value.
+newAsyncInferenceClientConfig ::
+  AsyncInferenceClientConfig
+newAsyncInferenceClientConfig =
+  AsyncInferenceClientConfig'
+    { maxConcurrentInvocationsPerInstance =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of concurrent requests sent by the SageMaker client
+-- to the model container. If no value is provided, SageMaker chooses an
+-- optimal value.
+asyncInferenceClientConfig_maxConcurrentInvocationsPerInstance :: Lens.Lens' AsyncInferenceClientConfig (Prelude.Maybe Prelude.Natural)
+asyncInferenceClientConfig_maxConcurrentInvocationsPerInstance = Lens.lens (\AsyncInferenceClientConfig' {maxConcurrentInvocationsPerInstance} -> maxConcurrentInvocationsPerInstance) (\s@AsyncInferenceClientConfig' {} a -> s {maxConcurrentInvocationsPerInstance = a} :: AsyncInferenceClientConfig)
+
+instance Data.FromJSON AsyncInferenceClientConfig where
+  parseJSON =
+    Data.withObject
+      "AsyncInferenceClientConfig"
+      ( \x ->
+          AsyncInferenceClientConfig'
+            Prelude.<$> (x Data..:? "MaxConcurrentInvocationsPerInstance")
+      )
+
+instance Prelude.Hashable AsyncInferenceClientConfig where
+  hashWithSalt _salt AsyncInferenceClientConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxConcurrentInvocationsPerInstance
+
+instance Prelude.NFData AsyncInferenceClientConfig where
+  rnf AsyncInferenceClientConfig' {..} =
+    Prelude.rnf maxConcurrentInvocationsPerInstance
+
+instance Data.ToJSON AsyncInferenceClientConfig where
+  toJSON AsyncInferenceClientConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxConcurrentInvocationsPerInstance" Data..=)
+              Prelude.<$> maxConcurrentInvocationsPerInstance
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AsyncInferenceConfig.hs b/gen/Amazonka/SageMaker/Types/AsyncInferenceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AsyncInferenceConfig.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AsyncInferenceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AsyncInferenceConfig 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 Amazonka.SageMaker.Types.AsyncInferenceClientConfig
+import Amazonka.SageMaker.Types.AsyncInferenceOutputConfig
+
+-- | Specifies configuration for how an endpoint performs asynchronous
+-- inference.
+--
+-- /See:/ 'newAsyncInferenceConfig' smart constructor.
+data AsyncInferenceConfig = AsyncInferenceConfig'
+  { -- | Configures the behavior of the client used by SageMaker to interact with
+    -- the model container during asynchronous inference.
+    clientConfig :: Prelude.Maybe AsyncInferenceClientConfig,
+    -- | Specifies the configuration for asynchronous inference invocation
+    -- outputs.
+    outputConfig :: AsyncInferenceOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AsyncInferenceConfig' 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:
+--
+-- 'clientConfig', 'asyncInferenceConfig_clientConfig' - Configures the behavior of the client used by SageMaker to interact with
+-- the model container during asynchronous inference.
+--
+-- 'outputConfig', 'asyncInferenceConfig_outputConfig' - Specifies the configuration for asynchronous inference invocation
+-- outputs.
+newAsyncInferenceConfig ::
+  -- | 'outputConfig'
+  AsyncInferenceOutputConfig ->
+  AsyncInferenceConfig
+newAsyncInferenceConfig pOutputConfig_ =
+  AsyncInferenceConfig'
+    { clientConfig =
+        Prelude.Nothing,
+      outputConfig = pOutputConfig_
+    }
+
+-- | Configures the behavior of the client used by SageMaker to interact with
+-- the model container during asynchronous inference.
+asyncInferenceConfig_clientConfig :: Lens.Lens' AsyncInferenceConfig (Prelude.Maybe AsyncInferenceClientConfig)
+asyncInferenceConfig_clientConfig = Lens.lens (\AsyncInferenceConfig' {clientConfig} -> clientConfig) (\s@AsyncInferenceConfig' {} a -> s {clientConfig = a} :: AsyncInferenceConfig)
+
+-- | Specifies the configuration for asynchronous inference invocation
+-- outputs.
+asyncInferenceConfig_outputConfig :: Lens.Lens' AsyncInferenceConfig AsyncInferenceOutputConfig
+asyncInferenceConfig_outputConfig = Lens.lens (\AsyncInferenceConfig' {outputConfig} -> outputConfig) (\s@AsyncInferenceConfig' {} a -> s {outputConfig = a} :: AsyncInferenceConfig)
+
+instance Data.FromJSON AsyncInferenceConfig where
+  parseJSON =
+    Data.withObject
+      "AsyncInferenceConfig"
+      ( \x ->
+          AsyncInferenceConfig'
+            Prelude.<$> (x Data..:? "ClientConfig")
+            Prelude.<*> (x Data..: "OutputConfig")
+      )
+
+instance Prelude.Hashable AsyncInferenceConfig where
+  hashWithSalt _salt AsyncInferenceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientConfig
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData AsyncInferenceConfig where
+  rnf AsyncInferenceConfig' {..} =
+    Prelude.rnf clientConfig
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToJSON AsyncInferenceConfig where
+  toJSON AsyncInferenceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientConfig" Data..=) Prelude.<$> clientConfig,
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AsyncInferenceNotificationConfig.hs b/gen/Amazonka/SageMaker/Types/AsyncInferenceNotificationConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AsyncInferenceNotificationConfig.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AsyncInferenceNotificationConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AsyncInferenceNotificationConfig 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
+
+-- | Specifies the configuration for notifications of inference results for
+-- asynchronous inference.
+--
+-- /See:/ 'newAsyncInferenceNotificationConfig' smart constructor.
+data AsyncInferenceNotificationConfig = AsyncInferenceNotificationConfig'
+  { -- | Amazon SNS topic to post a notification to when inference fails. If no
+    -- topic is provided, no notification is sent on failure.
+    errorTopic :: Prelude.Maybe Prelude.Text,
+    -- | Amazon SNS topic to post a notification to when inference completes
+    -- successfully. If no topic is provided, no notification is sent on
+    -- success.
+    successTopic :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AsyncInferenceNotificationConfig' 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:
+--
+-- 'errorTopic', 'asyncInferenceNotificationConfig_errorTopic' - Amazon SNS topic to post a notification to when inference fails. If no
+-- topic is provided, no notification is sent on failure.
+--
+-- 'successTopic', 'asyncInferenceNotificationConfig_successTopic' - Amazon SNS topic to post a notification to when inference completes
+-- successfully. If no topic is provided, no notification is sent on
+-- success.
+newAsyncInferenceNotificationConfig ::
+  AsyncInferenceNotificationConfig
+newAsyncInferenceNotificationConfig =
+  AsyncInferenceNotificationConfig'
+    { errorTopic =
+        Prelude.Nothing,
+      successTopic = Prelude.Nothing
+    }
+
+-- | Amazon SNS topic to post a notification to when inference fails. If no
+-- topic is provided, no notification is sent on failure.
+asyncInferenceNotificationConfig_errorTopic :: Lens.Lens' AsyncInferenceNotificationConfig (Prelude.Maybe Prelude.Text)
+asyncInferenceNotificationConfig_errorTopic = Lens.lens (\AsyncInferenceNotificationConfig' {errorTopic} -> errorTopic) (\s@AsyncInferenceNotificationConfig' {} a -> s {errorTopic = a} :: AsyncInferenceNotificationConfig)
+
+-- | Amazon SNS topic to post a notification to when inference completes
+-- successfully. If no topic is provided, no notification is sent on
+-- success.
+asyncInferenceNotificationConfig_successTopic :: Lens.Lens' AsyncInferenceNotificationConfig (Prelude.Maybe Prelude.Text)
+asyncInferenceNotificationConfig_successTopic = Lens.lens (\AsyncInferenceNotificationConfig' {successTopic} -> successTopic) (\s@AsyncInferenceNotificationConfig' {} a -> s {successTopic = a} :: AsyncInferenceNotificationConfig)
+
+instance
+  Data.FromJSON
+    AsyncInferenceNotificationConfig
+  where
+  parseJSON =
+    Data.withObject
+      "AsyncInferenceNotificationConfig"
+      ( \x ->
+          AsyncInferenceNotificationConfig'
+            Prelude.<$> (x Data..:? "ErrorTopic")
+            Prelude.<*> (x Data..:? "SuccessTopic")
+      )
+
+instance
+  Prelude.Hashable
+    AsyncInferenceNotificationConfig
+  where
+  hashWithSalt
+    _salt
+    AsyncInferenceNotificationConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` errorTopic
+        `Prelude.hashWithSalt` successTopic
+
+instance
+  Prelude.NFData
+    AsyncInferenceNotificationConfig
+  where
+  rnf AsyncInferenceNotificationConfig' {..} =
+    Prelude.rnf errorTopic
+      `Prelude.seq` Prelude.rnf successTopic
+
+instance Data.ToJSON AsyncInferenceNotificationConfig where
+  toJSON AsyncInferenceNotificationConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ErrorTopic" Data..=) Prelude.<$> errorTopic,
+            ("SuccessTopic" Data..=) Prelude.<$> successTopic
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AsyncInferenceOutputConfig.hs b/gen/Amazonka/SageMaker/Types/AsyncInferenceOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AsyncInferenceOutputConfig.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AsyncInferenceOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AsyncInferenceOutputConfig 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 Amazonka.SageMaker.Types.AsyncInferenceNotificationConfig
+
+-- | Specifies the configuration for asynchronous inference invocation
+-- outputs.
+--
+-- /See:/ 'newAsyncInferenceOutputConfig' smart constructor.
+data AsyncInferenceOutputConfig = AsyncInferenceOutputConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that SageMaker uses to encrypt the asynchronous inference output in
+    -- Amazon S3.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the configuration for notifications of inference results for
+    -- asynchronous inference.
+    notificationConfig :: Prelude.Maybe AsyncInferenceNotificationConfig,
+    -- | The Amazon S3 location to upload inference responses to.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AsyncInferenceOutputConfig' 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:
+--
+-- 'kmsKeyId', 'asyncInferenceOutputConfig_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that SageMaker uses to encrypt the asynchronous inference output in
+-- Amazon S3.
+--
+-- 'notificationConfig', 'asyncInferenceOutputConfig_notificationConfig' - Specifies the configuration for notifications of inference results for
+-- asynchronous inference.
+--
+-- 's3OutputPath', 'asyncInferenceOutputConfig_s3OutputPath' - The Amazon S3 location to upload inference responses to.
+newAsyncInferenceOutputConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  AsyncInferenceOutputConfig
+newAsyncInferenceOutputConfig pS3OutputPath_ =
+  AsyncInferenceOutputConfig'
+    { kmsKeyId =
+        Prelude.Nothing,
+      notificationConfig = Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that SageMaker uses to encrypt the asynchronous inference output in
+-- Amazon S3.
+asyncInferenceOutputConfig_kmsKeyId :: Lens.Lens' AsyncInferenceOutputConfig (Prelude.Maybe Prelude.Text)
+asyncInferenceOutputConfig_kmsKeyId = Lens.lens (\AsyncInferenceOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@AsyncInferenceOutputConfig' {} a -> s {kmsKeyId = a} :: AsyncInferenceOutputConfig)
+
+-- | Specifies the configuration for notifications of inference results for
+-- asynchronous inference.
+asyncInferenceOutputConfig_notificationConfig :: Lens.Lens' AsyncInferenceOutputConfig (Prelude.Maybe AsyncInferenceNotificationConfig)
+asyncInferenceOutputConfig_notificationConfig = Lens.lens (\AsyncInferenceOutputConfig' {notificationConfig} -> notificationConfig) (\s@AsyncInferenceOutputConfig' {} a -> s {notificationConfig = a} :: AsyncInferenceOutputConfig)
+
+-- | The Amazon S3 location to upload inference responses to.
+asyncInferenceOutputConfig_s3OutputPath :: Lens.Lens' AsyncInferenceOutputConfig Prelude.Text
+asyncInferenceOutputConfig_s3OutputPath = Lens.lens (\AsyncInferenceOutputConfig' {s3OutputPath} -> s3OutputPath) (\s@AsyncInferenceOutputConfig' {} a -> s {s3OutputPath = a} :: AsyncInferenceOutputConfig)
+
+instance Data.FromJSON AsyncInferenceOutputConfig where
+  parseJSON =
+    Data.withObject
+      "AsyncInferenceOutputConfig"
+      ( \x ->
+          AsyncInferenceOutputConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "NotificationConfig")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable AsyncInferenceOutputConfig where
+  hashWithSalt _salt AsyncInferenceOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` notificationConfig
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData AsyncInferenceOutputConfig where
+  rnf AsyncInferenceOutputConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf notificationConfig
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON AsyncInferenceOutputConfig where
+  toJSON AsyncInferenceOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("NotificationConfig" Data..=)
+              Prelude.<$> notificationConfig,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AthenaDatasetDefinition.hs b/gen/Amazonka/SageMaker/Types/AthenaDatasetDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AthenaDatasetDefinition.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AthenaDatasetDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AthenaDatasetDefinition 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 Amazonka.SageMaker.Types.AthenaResultCompressionType
+import Amazonka.SageMaker.Types.AthenaResultFormat
+
+-- | Configuration for Athena Dataset Definition input.
+--
+-- /See:/ 'newAthenaDatasetDefinition' smart constructor.
+data AthenaDatasetDefinition = AthenaDatasetDefinition'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data generated from an Athena
+    -- query execution.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    outputCompression :: Prelude.Maybe AthenaResultCompressionType,
+    workGroup :: Prelude.Maybe Prelude.Text,
+    catalog :: Prelude.Text,
+    database :: Prelude.Text,
+    queryString :: Prelude.Text,
+    -- | The location in Amazon S3 where Athena query results are stored.
+    outputS3Uri :: Prelude.Text,
+    outputFormat :: AthenaResultFormat
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AthenaDatasetDefinition' 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:
+--
+-- 'kmsKeyId', 'athenaDatasetDefinition_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data generated from an Athena
+-- query execution.
+--
+-- 'outputCompression', 'athenaDatasetDefinition_outputCompression' - Undocumented member.
+--
+-- 'workGroup', 'athenaDatasetDefinition_workGroup' - Undocumented member.
+--
+-- 'catalog', 'athenaDatasetDefinition_catalog' - Undocumented member.
+--
+-- 'database', 'athenaDatasetDefinition_database' - Undocumented member.
+--
+-- 'queryString', 'athenaDatasetDefinition_queryString' - Undocumented member.
+--
+-- 'outputS3Uri', 'athenaDatasetDefinition_outputS3Uri' - The location in Amazon S3 where Athena query results are stored.
+--
+-- 'outputFormat', 'athenaDatasetDefinition_outputFormat' - Undocumented member.
+newAthenaDatasetDefinition ::
+  -- | 'catalog'
+  Prelude.Text ->
+  -- | 'database'
+  Prelude.Text ->
+  -- | 'queryString'
+  Prelude.Text ->
+  -- | 'outputS3Uri'
+  Prelude.Text ->
+  -- | 'outputFormat'
+  AthenaResultFormat ->
+  AthenaDatasetDefinition
+newAthenaDatasetDefinition
+  pCatalog_
+  pDatabase_
+  pQueryString_
+  pOutputS3Uri_
+  pOutputFormat_ =
+    AthenaDatasetDefinition'
+      { kmsKeyId =
+          Prelude.Nothing,
+        outputCompression = Prelude.Nothing,
+        workGroup = Prelude.Nothing,
+        catalog = pCatalog_,
+        database = pDatabase_,
+        queryString = pQueryString_,
+        outputS3Uri = pOutputS3Uri_,
+        outputFormat = pOutputFormat_
+      }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data generated from an Athena
+-- query execution.
+athenaDatasetDefinition_kmsKeyId :: Lens.Lens' AthenaDatasetDefinition (Prelude.Maybe Prelude.Text)
+athenaDatasetDefinition_kmsKeyId = Lens.lens (\AthenaDatasetDefinition' {kmsKeyId} -> kmsKeyId) (\s@AthenaDatasetDefinition' {} a -> s {kmsKeyId = a} :: AthenaDatasetDefinition)
+
+-- | Undocumented member.
+athenaDatasetDefinition_outputCompression :: Lens.Lens' AthenaDatasetDefinition (Prelude.Maybe AthenaResultCompressionType)
+athenaDatasetDefinition_outputCompression = Lens.lens (\AthenaDatasetDefinition' {outputCompression} -> outputCompression) (\s@AthenaDatasetDefinition' {} a -> s {outputCompression = a} :: AthenaDatasetDefinition)
+
+-- | Undocumented member.
+athenaDatasetDefinition_workGroup :: Lens.Lens' AthenaDatasetDefinition (Prelude.Maybe Prelude.Text)
+athenaDatasetDefinition_workGroup = Lens.lens (\AthenaDatasetDefinition' {workGroup} -> workGroup) (\s@AthenaDatasetDefinition' {} a -> s {workGroup = a} :: AthenaDatasetDefinition)
+
+-- | Undocumented member.
+athenaDatasetDefinition_catalog :: Lens.Lens' AthenaDatasetDefinition Prelude.Text
+athenaDatasetDefinition_catalog = Lens.lens (\AthenaDatasetDefinition' {catalog} -> catalog) (\s@AthenaDatasetDefinition' {} a -> s {catalog = a} :: AthenaDatasetDefinition)
+
+-- | Undocumented member.
+athenaDatasetDefinition_database :: Lens.Lens' AthenaDatasetDefinition Prelude.Text
+athenaDatasetDefinition_database = Lens.lens (\AthenaDatasetDefinition' {database} -> database) (\s@AthenaDatasetDefinition' {} a -> s {database = a} :: AthenaDatasetDefinition)
+
+-- | Undocumented member.
+athenaDatasetDefinition_queryString :: Lens.Lens' AthenaDatasetDefinition Prelude.Text
+athenaDatasetDefinition_queryString = Lens.lens (\AthenaDatasetDefinition' {queryString} -> queryString) (\s@AthenaDatasetDefinition' {} a -> s {queryString = a} :: AthenaDatasetDefinition)
+
+-- | The location in Amazon S3 where Athena query results are stored.
+athenaDatasetDefinition_outputS3Uri :: Lens.Lens' AthenaDatasetDefinition Prelude.Text
+athenaDatasetDefinition_outputS3Uri = Lens.lens (\AthenaDatasetDefinition' {outputS3Uri} -> outputS3Uri) (\s@AthenaDatasetDefinition' {} a -> s {outputS3Uri = a} :: AthenaDatasetDefinition)
+
+-- | Undocumented member.
+athenaDatasetDefinition_outputFormat :: Lens.Lens' AthenaDatasetDefinition AthenaResultFormat
+athenaDatasetDefinition_outputFormat = Lens.lens (\AthenaDatasetDefinition' {outputFormat} -> outputFormat) (\s@AthenaDatasetDefinition' {} a -> s {outputFormat = a} :: AthenaDatasetDefinition)
+
+instance Data.FromJSON AthenaDatasetDefinition where
+  parseJSON =
+    Data.withObject
+      "AthenaDatasetDefinition"
+      ( \x ->
+          AthenaDatasetDefinition'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "OutputCompression")
+            Prelude.<*> (x Data..:? "WorkGroup")
+            Prelude.<*> (x Data..: "Catalog")
+            Prelude.<*> (x Data..: "Database")
+            Prelude.<*> (x Data..: "QueryString")
+            Prelude.<*> (x Data..: "OutputS3Uri")
+            Prelude.<*> (x Data..: "OutputFormat")
+      )
+
+instance Prelude.Hashable AthenaDatasetDefinition where
+  hashWithSalt _salt AthenaDatasetDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` outputCompression
+      `Prelude.hashWithSalt` workGroup
+      `Prelude.hashWithSalt` catalog
+      `Prelude.hashWithSalt` database
+      `Prelude.hashWithSalt` queryString
+      `Prelude.hashWithSalt` outputS3Uri
+      `Prelude.hashWithSalt` outputFormat
+
+instance Prelude.NFData AthenaDatasetDefinition where
+  rnf AthenaDatasetDefinition' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf outputCompression
+      `Prelude.seq` Prelude.rnf workGroup
+      `Prelude.seq` Prelude.rnf catalog
+      `Prelude.seq` Prelude.rnf database
+      `Prelude.seq` Prelude.rnf queryString
+      `Prelude.seq` Prelude.rnf outputS3Uri
+      `Prelude.seq` Prelude.rnf outputFormat
+
+instance Data.ToJSON AthenaDatasetDefinition where
+  toJSON AthenaDatasetDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("OutputCompression" Data..=)
+              Prelude.<$> outputCompression,
+            ("WorkGroup" Data..=) Prelude.<$> workGroup,
+            Prelude.Just ("Catalog" Data..= catalog),
+            Prelude.Just ("Database" Data..= database),
+            Prelude.Just ("QueryString" Data..= queryString),
+            Prelude.Just ("OutputS3Uri" Data..= outputS3Uri),
+            Prelude.Just ("OutputFormat" Data..= outputFormat)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AthenaResultCompressionType.hs b/gen/Amazonka/SageMaker/Types/AthenaResultCompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AthenaResultCompressionType.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AthenaResultCompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AthenaResultCompressionType
+  ( AthenaResultCompressionType
+      ( ..,
+        AthenaResultCompressionType_GZIP,
+        AthenaResultCompressionType_SNAPPY,
+        AthenaResultCompressionType_ZLIB
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The compression used for Athena query results.
+newtype AthenaResultCompressionType = AthenaResultCompressionType'
+  { fromAthenaResultCompressionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AthenaResultCompressionType_GZIP :: AthenaResultCompressionType
+pattern AthenaResultCompressionType_GZIP = AthenaResultCompressionType' "GZIP"
+
+pattern AthenaResultCompressionType_SNAPPY :: AthenaResultCompressionType
+pattern AthenaResultCompressionType_SNAPPY = AthenaResultCompressionType' "SNAPPY"
+
+pattern AthenaResultCompressionType_ZLIB :: AthenaResultCompressionType
+pattern AthenaResultCompressionType_ZLIB = AthenaResultCompressionType' "ZLIB"
+
+{-# COMPLETE
+  AthenaResultCompressionType_GZIP,
+  AthenaResultCompressionType_SNAPPY,
+  AthenaResultCompressionType_ZLIB,
+  AthenaResultCompressionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AthenaResultFormat.hs b/gen/Amazonka/SageMaker/Types/AthenaResultFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AthenaResultFormat.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AthenaResultFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AthenaResultFormat
+  ( AthenaResultFormat
+      ( ..,
+        AthenaResultFormat_AVRO,
+        AthenaResultFormat_JSON,
+        AthenaResultFormat_ORC,
+        AthenaResultFormat_PARQUET,
+        AthenaResultFormat_TEXTFILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The data storage format for Athena query results.
+newtype AthenaResultFormat = AthenaResultFormat'
+  { fromAthenaResultFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AthenaResultFormat_AVRO :: AthenaResultFormat
+pattern AthenaResultFormat_AVRO = AthenaResultFormat' "AVRO"
+
+pattern AthenaResultFormat_JSON :: AthenaResultFormat
+pattern AthenaResultFormat_JSON = AthenaResultFormat' "JSON"
+
+pattern AthenaResultFormat_ORC :: AthenaResultFormat
+pattern AthenaResultFormat_ORC = AthenaResultFormat' "ORC"
+
+pattern AthenaResultFormat_PARQUET :: AthenaResultFormat
+pattern AthenaResultFormat_PARQUET = AthenaResultFormat' "PARQUET"
+
+pattern AthenaResultFormat_TEXTFILE :: AthenaResultFormat
+pattern AthenaResultFormat_TEXTFILE = AthenaResultFormat' "TEXTFILE"
+
+{-# COMPLETE
+  AthenaResultFormat_AVRO,
+  AthenaResultFormat_JSON,
+  AthenaResultFormat_ORC,
+  AthenaResultFormat_PARQUET,
+  AthenaResultFormat_TEXTFILE,
+  AthenaResultFormat'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AuthMode.hs b/gen/Amazonka/SageMaker/Types/AuthMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AuthMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AuthMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AuthMode
+  ( AuthMode
+      ( ..,
+        AuthMode_IAM,
+        AuthMode_SSO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AuthMode = AuthMode'
+  { fromAuthMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AuthMode_IAM :: AuthMode
+pattern AuthMode_IAM = AuthMode' "IAM"
+
+pattern AuthMode_SSO :: AuthMode
+pattern AuthMode_SSO = AuthMode' "SSO"
+
+{-# COMPLETE
+  AuthMode_IAM,
+  AuthMode_SSO,
+  AuthMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLCandidate.hs b/gen/Amazonka/SageMaker/Types/AutoMLCandidate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLCandidate.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLCandidate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLCandidate 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 Amazonka.SageMaker.Types.AutoMLCandidateStep
+import Amazonka.SageMaker.Types.AutoMLContainerDefinition
+import Amazonka.SageMaker.Types.CandidateProperties
+import Amazonka.SageMaker.Types.CandidateStatus
+import Amazonka.SageMaker.Types.FinalAutoMLJobObjectiveMetric
+import Amazonka.SageMaker.Types.ObjectiveStatus
+
+-- | Information about a candidate produced by an AutoML training job,
+-- including its status, steps, and other properties.
+--
+-- /See:/ 'newAutoMLCandidate' smart constructor.
+data AutoMLCandidate = AutoMLCandidate'
+  { -- | The properties of an AutoML candidate job.
+    candidateProperties :: Prelude.Maybe CandidateProperties,
+    -- | The end time.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The failure reason.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    finalAutoMLJobObjectiveMetric :: Prelude.Maybe FinalAutoMLJobObjectiveMetric,
+    -- | Information about the inference container definitions.
+    inferenceContainers :: Prelude.Maybe [AutoMLContainerDefinition],
+    -- | The name of the candidate.
+    candidateName :: Prelude.Text,
+    -- | The objective\'s status.
+    objectiveStatus :: ObjectiveStatus,
+    -- | Information about the candidate\'s steps.
+    candidateSteps :: [AutoMLCandidateStep],
+    -- | The candidate\'s status.
+    candidateStatus :: CandidateStatus,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The last modified time.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLCandidate' 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:
+--
+-- 'candidateProperties', 'autoMLCandidate_candidateProperties' - The properties of an AutoML candidate job.
+--
+-- 'endTime', 'autoMLCandidate_endTime' - The end time.
+--
+-- 'failureReason', 'autoMLCandidate_failureReason' - The failure reason.
+--
+-- 'finalAutoMLJobObjectiveMetric', 'autoMLCandidate_finalAutoMLJobObjectiveMetric' - Undocumented member.
+--
+-- 'inferenceContainers', 'autoMLCandidate_inferenceContainers' - Information about the inference container definitions.
+--
+-- 'candidateName', 'autoMLCandidate_candidateName' - The name of the candidate.
+--
+-- 'objectiveStatus', 'autoMLCandidate_objectiveStatus' - The objective\'s status.
+--
+-- 'candidateSteps', 'autoMLCandidate_candidateSteps' - Information about the candidate\'s steps.
+--
+-- 'candidateStatus', 'autoMLCandidate_candidateStatus' - The candidate\'s status.
+--
+-- 'creationTime', 'autoMLCandidate_creationTime' - The creation time.
+--
+-- 'lastModifiedTime', 'autoMLCandidate_lastModifiedTime' - The last modified time.
+newAutoMLCandidate ::
+  -- | 'candidateName'
+  Prelude.Text ->
+  -- | 'objectiveStatus'
+  ObjectiveStatus ->
+  -- | 'candidateStatus'
+  CandidateStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  AutoMLCandidate
+newAutoMLCandidate
+  pCandidateName_
+  pObjectiveStatus_
+  pCandidateStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    AutoMLCandidate'
+      { candidateProperties =
+          Prelude.Nothing,
+        endTime = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        finalAutoMLJobObjectiveMetric = Prelude.Nothing,
+        inferenceContainers = Prelude.Nothing,
+        candidateName = pCandidateName_,
+        objectiveStatus = pObjectiveStatus_,
+        candidateSteps = Prelude.mempty,
+        candidateStatus = pCandidateStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | The properties of an AutoML candidate job.
+autoMLCandidate_candidateProperties :: Lens.Lens' AutoMLCandidate (Prelude.Maybe CandidateProperties)
+autoMLCandidate_candidateProperties = Lens.lens (\AutoMLCandidate' {candidateProperties} -> candidateProperties) (\s@AutoMLCandidate' {} a -> s {candidateProperties = a} :: AutoMLCandidate)
+
+-- | The end time.
+autoMLCandidate_endTime :: Lens.Lens' AutoMLCandidate (Prelude.Maybe Prelude.UTCTime)
+autoMLCandidate_endTime = Lens.lens (\AutoMLCandidate' {endTime} -> endTime) (\s@AutoMLCandidate' {} a -> s {endTime = a} :: AutoMLCandidate) Prelude.. Lens.mapping Data._Time
+
+-- | The failure reason.
+autoMLCandidate_failureReason :: Lens.Lens' AutoMLCandidate (Prelude.Maybe Prelude.Text)
+autoMLCandidate_failureReason = Lens.lens (\AutoMLCandidate' {failureReason} -> failureReason) (\s@AutoMLCandidate' {} a -> s {failureReason = a} :: AutoMLCandidate)
+
+-- | Undocumented member.
+autoMLCandidate_finalAutoMLJobObjectiveMetric :: Lens.Lens' AutoMLCandidate (Prelude.Maybe FinalAutoMLJobObjectiveMetric)
+autoMLCandidate_finalAutoMLJobObjectiveMetric = Lens.lens (\AutoMLCandidate' {finalAutoMLJobObjectiveMetric} -> finalAutoMLJobObjectiveMetric) (\s@AutoMLCandidate' {} a -> s {finalAutoMLJobObjectiveMetric = a} :: AutoMLCandidate)
+
+-- | Information about the inference container definitions.
+autoMLCandidate_inferenceContainers :: Lens.Lens' AutoMLCandidate (Prelude.Maybe [AutoMLContainerDefinition])
+autoMLCandidate_inferenceContainers = Lens.lens (\AutoMLCandidate' {inferenceContainers} -> inferenceContainers) (\s@AutoMLCandidate' {} a -> s {inferenceContainers = a} :: AutoMLCandidate) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the candidate.
+autoMLCandidate_candidateName :: Lens.Lens' AutoMLCandidate Prelude.Text
+autoMLCandidate_candidateName = Lens.lens (\AutoMLCandidate' {candidateName} -> candidateName) (\s@AutoMLCandidate' {} a -> s {candidateName = a} :: AutoMLCandidate)
+
+-- | The objective\'s status.
+autoMLCandidate_objectiveStatus :: Lens.Lens' AutoMLCandidate ObjectiveStatus
+autoMLCandidate_objectiveStatus = Lens.lens (\AutoMLCandidate' {objectiveStatus} -> objectiveStatus) (\s@AutoMLCandidate' {} a -> s {objectiveStatus = a} :: AutoMLCandidate)
+
+-- | Information about the candidate\'s steps.
+autoMLCandidate_candidateSteps :: Lens.Lens' AutoMLCandidate [AutoMLCandidateStep]
+autoMLCandidate_candidateSteps = Lens.lens (\AutoMLCandidate' {candidateSteps} -> candidateSteps) (\s@AutoMLCandidate' {} a -> s {candidateSteps = a} :: AutoMLCandidate) Prelude.. Lens.coerced
+
+-- | The candidate\'s status.
+autoMLCandidate_candidateStatus :: Lens.Lens' AutoMLCandidate CandidateStatus
+autoMLCandidate_candidateStatus = Lens.lens (\AutoMLCandidate' {candidateStatus} -> candidateStatus) (\s@AutoMLCandidate' {} a -> s {candidateStatus = a} :: AutoMLCandidate)
+
+-- | The creation time.
+autoMLCandidate_creationTime :: Lens.Lens' AutoMLCandidate Prelude.UTCTime
+autoMLCandidate_creationTime = Lens.lens (\AutoMLCandidate' {creationTime} -> creationTime) (\s@AutoMLCandidate' {} a -> s {creationTime = a} :: AutoMLCandidate) Prelude.. Data._Time
+
+-- | The last modified time.
+autoMLCandidate_lastModifiedTime :: Lens.Lens' AutoMLCandidate Prelude.UTCTime
+autoMLCandidate_lastModifiedTime = Lens.lens (\AutoMLCandidate' {lastModifiedTime} -> lastModifiedTime) (\s@AutoMLCandidate' {} a -> s {lastModifiedTime = a} :: AutoMLCandidate) Prelude.. Data._Time
+
+instance Data.FromJSON AutoMLCandidate where
+  parseJSON =
+    Data.withObject
+      "AutoMLCandidate"
+      ( \x ->
+          AutoMLCandidate'
+            Prelude.<$> (x Data..:? "CandidateProperties")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "FinalAutoMLJobObjectiveMetric")
+            Prelude.<*> ( x
+                            Data..:? "InferenceContainers"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "CandidateName")
+            Prelude.<*> (x Data..: "ObjectiveStatus")
+            Prelude.<*> (x Data..:? "CandidateSteps" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "CandidateStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable AutoMLCandidate where
+  hashWithSalt _salt AutoMLCandidate' {..} =
+    _salt
+      `Prelude.hashWithSalt` candidateProperties
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` finalAutoMLJobObjectiveMetric
+      `Prelude.hashWithSalt` inferenceContainers
+      `Prelude.hashWithSalt` candidateName
+      `Prelude.hashWithSalt` objectiveStatus
+      `Prelude.hashWithSalt` candidateSteps
+      `Prelude.hashWithSalt` candidateStatus
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData AutoMLCandidate where
+  rnf AutoMLCandidate' {..} =
+    Prelude.rnf candidateProperties
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf finalAutoMLJobObjectiveMetric
+      `Prelude.seq` Prelude.rnf inferenceContainers
+      `Prelude.seq` Prelude.rnf candidateName
+      `Prelude.seq` Prelude.rnf objectiveStatus
+      `Prelude.seq` Prelude.rnf candidateSteps
+      `Prelude.seq` Prelude.rnf candidateStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLCandidateGenerationConfig.hs b/gen/Amazonka/SageMaker/Types/AutoMLCandidateGenerationConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLCandidateGenerationConfig.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLCandidateGenerationConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLCandidateGenerationConfig 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
+
+-- | Stores the config information for how a candidate is generated
+-- (optional).
+--
+-- /See:/ 'newAutoMLCandidateGenerationConfig' smart constructor.
+data AutoMLCandidateGenerationConfig = AutoMLCandidateGenerationConfig'
+  { -- | A URL to the Amazon S3 data source containing selected features from the
+    -- input data source to run an Autopilot job. You can input
+    -- @FeatureAttributeNames@ (optional) in JSON format as shown below:
+    --
+    -- @{ \"FeatureAttributeNames\":[\"col1\", \"col2\", ...] }@.
+    --
+    -- You can also specify the data type of the feature (optional) in the
+    -- format shown below:
+    --
+    -- @{ \"FeatureDataTypes\":{\"col1\":\"numeric\", \"col2\":\"categorical\" ... } }@
+    --
+    -- These column keys may not include the target column.
+    --
+    -- In ensembling mode, Autopilot will only support the following data
+    -- types: @numeric@, @categorical@, @text@ and @datetime@. In HPO mode,
+    -- Autopilot can support @numeric@, @categorical@, @text@, @datetime@ and
+    -- @sequence@.
+    --
+    -- If only @FeatureDataTypes@ is provided, the column keys (@col1@,
+    -- @col2@,..) should be a subset of the column names in the input data.
+    --
+    -- If both @FeatureDataTypes@ and @FeatureAttributeNames@ are provided,
+    -- then the column keys should be a subset of the column names provided in
+    -- @FeatureAttributeNames@.
+    --
+    -- The key name @FeatureAttributeNames@ is fixed. The values listed in
+    -- @[\"col1\", \"col2\", ...]@ is case sensitive and should be a list of
+    -- strings containing unique values that are a subset of the column names
+    -- in the input data. The list of columns provided must not include the
+    -- target column.
+    featureSpecificationS3Uri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLCandidateGenerationConfig' 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:
+--
+-- 'featureSpecificationS3Uri', 'autoMLCandidateGenerationConfig_featureSpecificationS3Uri' - A URL to the Amazon S3 data source containing selected features from the
+-- input data source to run an Autopilot job. You can input
+-- @FeatureAttributeNames@ (optional) in JSON format as shown below:
+--
+-- @{ \"FeatureAttributeNames\":[\"col1\", \"col2\", ...] }@.
+--
+-- You can also specify the data type of the feature (optional) in the
+-- format shown below:
+--
+-- @{ \"FeatureDataTypes\":{\"col1\":\"numeric\", \"col2\":\"categorical\" ... } }@
+--
+-- These column keys may not include the target column.
+--
+-- In ensembling mode, Autopilot will only support the following data
+-- types: @numeric@, @categorical@, @text@ and @datetime@. In HPO mode,
+-- Autopilot can support @numeric@, @categorical@, @text@, @datetime@ and
+-- @sequence@.
+--
+-- If only @FeatureDataTypes@ is provided, the column keys (@col1@,
+-- @col2@,..) should be a subset of the column names in the input data.
+--
+-- If both @FeatureDataTypes@ and @FeatureAttributeNames@ are provided,
+-- then the column keys should be a subset of the column names provided in
+-- @FeatureAttributeNames@.
+--
+-- The key name @FeatureAttributeNames@ is fixed. The values listed in
+-- @[\"col1\", \"col2\", ...]@ is case sensitive and should be a list of
+-- strings containing unique values that are a subset of the column names
+-- in the input data. The list of columns provided must not include the
+-- target column.
+newAutoMLCandidateGenerationConfig ::
+  AutoMLCandidateGenerationConfig
+newAutoMLCandidateGenerationConfig =
+  AutoMLCandidateGenerationConfig'
+    { featureSpecificationS3Uri =
+        Prelude.Nothing
+    }
+
+-- | A URL to the Amazon S3 data source containing selected features from the
+-- input data source to run an Autopilot job. You can input
+-- @FeatureAttributeNames@ (optional) in JSON format as shown below:
+--
+-- @{ \"FeatureAttributeNames\":[\"col1\", \"col2\", ...] }@.
+--
+-- You can also specify the data type of the feature (optional) in the
+-- format shown below:
+--
+-- @{ \"FeatureDataTypes\":{\"col1\":\"numeric\", \"col2\":\"categorical\" ... } }@
+--
+-- These column keys may not include the target column.
+--
+-- In ensembling mode, Autopilot will only support the following data
+-- types: @numeric@, @categorical@, @text@ and @datetime@. In HPO mode,
+-- Autopilot can support @numeric@, @categorical@, @text@, @datetime@ and
+-- @sequence@.
+--
+-- If only @FeatureDataTypes@ is provided, the column keys (@col1@,
+-- @col2@,..) should be a subset of the column names in the input data.
+--
+-- If both @FeatureDataTypes@ and @FeatureAttributeNames@ are provided,
+-- then the column keys should be a subset of the column names provided in
+-- @FeatureAttributeNames@.
+--
+-- The key name @FeatureAttributeNames@ is fixed. The values listed in
+-- @[\"col1\", \"col2\", ...]@ is case sensitive and should be a list of
+-- strings containing unique values that are a subset of the column names
+-- in the input data. The list of columns provided must not include the
+-- target column.
+autoMLCandidateGenerationConfig_featureSpecificationS3Uri :: Lens.Lens' AutoMLCandidateGenerationConfig (Prelude.Maybe Prelude.Text)
+autoMLCandidateGenerationConfig_featureSpecificationS3Uri = Lens.lens (\AutoMLCandidateGenerationConfig' {featureSpecificationS3Uri} -> featureSpecificationS3Uri) (\s@AutoMLCandidateGenerationConfig' {} a -> s {featureSpecificationS3Uri = a} :: AutoMLCandidateGenerationConfig)
+
+instance
+  Data.FromJSON
+    AutoMLCandidateGenerationConfig
+  where
+  parseJSON =
+    Data.withObject
+      "AutoMLCandidateGenerationConfig"
+      ( \x ->
+          AutoMLCandidateGenerationConfig'
+            Prelude.<$> (x Data..:? "FeatureSpecificationS3Uri")
+      )
+
+instance
+  Prelude.Hashable
+    AutoMLCandidateGenerationConfig
+  where
+  hashWithSalt
+    _salt
+    AutoMLCandidateGenerationConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` featureSpecificationS3Uri
+
+instance
+  Prelude.NFData
+    AutoMLCandidateGenerationConfig
+  where
+  rnf AutoMLCandidateGenerationConfig' {..} =
+    Prelude.rnf featureSpecificationS3Uri
+
+instance Data.ToJSON AutoMLCandidateGenerationConfig where
+  toJSON AutoMLCandidateGenerationConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FeatureSpecificationS3Uri" Data..=)
+              Prelude.<$> featureSpecificationS3Uri
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLCandidateStep.hs b/gen/Amazonka/SageMaker/Types/AutoMLCandidateStep.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLCandidateStep.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLCandidateStep
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLCandidateStep 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 Amazonka.SageMaker.Types.CandidateStepType
+
+-- | Information about the steps for a candidate and what step it is working
+-- on.
+--
+-- /See:/ 'newAutoMLCandidateStep' smart constructor.
+data AutoMLCandidateStep = AutoMLCandidateStep'
+  { -- | Whether the candidate is at the transform, training, or processing step.
+    candidateStepType :: CandidateStepType,
+    -- | The ARN for the candidate\'s step.
+    candidateStepArn :: Prelude.Text,
+    -- | The name for the candidate\'s step.
+    candidateStepName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLCandidateStep' 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:
+--
+-- 'candidateStepType', 'autoMLCandidateStep_candidateStepType' - Whether the candidate is at the transform, training, or processing step.
+--
+-- 'candidateStepArn', 'autoMLCandidateStep_candidateStepArn' - The ARN for the candidate\'s step.
+--
+-- 'candidateStepName', 'autoMLCandidateStep_candidateStepName' - The name for the candidate\'s step.
+newAutoMLCandidateStep ::
+  -- | 'candidateStepType'
+  CandidateStepType ->
+  -- | 'candidateStepArn'
+  Prelude.Text ->
+  -- | 'candidateStepName'
+  Prelude.Text ->
+  AutoMLCandidateStep
+newAutoMLCandidateStep
+  pCandidateStepType_
+  pCandidateStepArn_
+  pCandidateStepName_ =
+    AutoMLCandidateStep'
+      { candidateStepType =
+          pCandidateStepType_,
+        candidateStepArn = pCandidateStepArn_,
+        candidateStepName = pCandidateStepName_
+      }
+
+-- | Whether the candidate is at the transform, training, or processing step.
+autoMLCandidateStep_candidateStepType :: Lens.Lens' AutoMLCandidateStep CandidateStepType
+autoMLCandidateStep_candidateStepType = Lens.lens (\AutoMLCandidateStep' {candidateStepType} -> candidateStepType) (\s@AutoMLCandidateStep' {} a -> s {candidateStepType = a} :: AutoMLCandidateStep)
+
+-- | The ARN for the candidate\'s step.
+autoMLCandidateStep_candidateStepArn :: Lens.Lens' AutoMLCandidateStep Prelude.Text
+autoMLCandidateStep_candidateStepArn = Lens.lens (\AutoMLCandidateStep' {candidateStepArn} -> candidateStepArn) (\s@AutoMLCandidateStep' {} a -> s {candidateStepArn = a} :: AutoMLCandidateStep)
+
+-- | The name for the candidate\'s step.
+autoMLCandidateStep_candidateStepName :: Lens.Lens' AutoMLCandidateStep Prelude.Text
+autoMLCandidateStep_candidateStepName = Lens.lens (\AutoMLCandidateStep' {candidateStepName} -> candidateStepName) (\s@AutoMLCandidateStep' {} a -> s {candidateStepName = a} :: AutoMLCandidateStep)
+
+instance Data.FromJSON AutoMLCandidateStep where
+  parseJSON =
+    Data.withObject
+      "AutoMLCandidateStep"
+      ( \x ->
+          AutoMLCandidateStep'
+            Prelude.<$> (x Data..: "CandidateStepType")
+            Prelude.<*> (x Data..: "CandidateStepArn")
+            Prelude.<*> (x Data..: "CandidateStepName")
+      )
+
+instance Prelude.Hashable AutoMLCandidateStep where
+  hashWithSalt _salt AutoMLCandidateStep' {..} =
+    _salt
+      `Prelude.hashWithSalt` candidateStepType
+      `Prelude.hashWithSalt` candidateStepArn
+      `Prelude.hashWithSalt` candidateStepName
+
+instance Prelude.NFData AutoMLCandidateStep where
+  rnf AutoMLCandidateStep' {..} =
+    Prelude.rnf candidateStepType
+      `Prelude.seq` Prelude.rnf candidateStepArn
+      `Prelude.seq` Prelude.rnf candidateStepName
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLChannel.hs b/gen/Amazonka/SageMaker/Types/AutoMLChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLChannel.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLChannel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLChannel 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 Amazonka.SageMaker.Types.AutoMLChannelType
+import Amazonka.SageMaker.Types.AutoMLDataSource
+import Amazonka.SageMaker.Types.CompressionType
+
+-- | A channel is a named input source that training algorithms can consume.
+-- The validation dataset size is limited to less than 2 GB. The training
+-- dataset size must be less than 100 GB. For more information, see .
+--
+-- A validation dataset must contain the same headers as the training
+-- dataset.
+--
+-- /See:/ 'newAutoMLChannel' smart constructor.
+data AutoMLChannel = AutoMLChannel'
+  { -- | The channel type (optional) is an @enum@ string. The default value is
+    -- @training@. Channels for training and validation must share the same
+    -- @ContentType@ and @TargetAttributeName@. For information on specifying
+    -- training and validation channel types, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-data-sources-training-or-validation How to specify training and validation datasets>
+    -- .
+    channelType :: Prelude.Maybe AutoMLChannelType,
+    -- | You can use @Gzip@ or @None@. The default value is @None@.
+    compressionType :: Prelude.Maybe CompressionType,
+    -- | The content type of the data from the input source. You can use
+    -- @text\/csv;header=present@ or @x-application\/vnd.amazon+parquet@. The
+    -- default value is @text\/csv;header=present@.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | The data source for an AutoML channel.
+    dataSource :: AutoMLDataSource,
+    -- | The name of the target variable in supervised learning, usually
+    -- represented by \'y\'.
+    targetAttributeName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLChannel' 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:
+--
+-- 'channelType', 'autoMLChannel_channelType' - The channel type (optional) is an @enum@ string. The default value is
+-- @training@. Channels for training and validation must share the same
+-- @ContentType@ and @TargetAttributeName@. For information on specifying
+-- training and validation channel types, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-data-sources-training-or-validation How to specify training and validation datasets>
+-- .
+--
+-- 'compressionType', 'autoMLChannel_compressionType' - You can use @Gzip@ or @None@. The default value is @None@.
+--
+-- 'contentType', 'autoMLChannel_contentType' - The content type of the data from the input source. You can use
+-- @text\/csv;header=present@ or @x-application\/vnd.amazon+parquet@. The
+-- default value is @text\/csv;header=present@.
+--
+-- 'dataSource', 'autoMLChannel_dataSource' - The data source for an AutoML channel.
+--
+-- 'targetAttributeName', 'autoMLChannel_targetAttributeName' - The name of the target variable in supervised learning, usually
+-- represented by \'y\'.
+newAutoMLChannel ::
+  -- | 'dataSource'
+  AutoMLDataSource ->
+  -- | 'targetAttributeName'
+  Prelude.Text ->
+  AutoMLChannel
+newAutoMLChannel pDataSource_ pTargetAttributeName_ =
+  AutoMLChannel'
+    { channelType = Prelude.Nothing,
+      compressionType = Prelude.Nothing,
+      contentType = Prelude.Nothing,
+      dataSource = pDataSource_,
+      targetAttributeName = pTargetAttributeName_
+    }
+
+-- | The channel type (optional) is an @enum@ string. The default value is
+-- @training@. Channels for training and validation must share the same
+-- @ContentType@ and @TargetAttributeName@. For information on specifying
+-- training and validation channel types, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-data-sources-training-or-validation How to specify training and validation datasets>
+-- .
+autoMLChannel_channelType :: Lens.Lens' AutoMLChannel (Prelude.Maybe AutoMLChannelType)
+autoMLChannel_channelType = Lens.lens (\AutoMLChannel' {channelType} -> channelType) (\s@AutoMLChannel' {} a -> s {channelType = a} :: AutoMLChannel)
+
+-- | You can use @Gzip@ or @None@. The default value is @None@.
+autoMLChannel_compressionType :: Lens.Lens' AutoMLChannel (Prelude.Maybe CompressionType)
+autoMLChannel_compressionType = Lens.lens (\AutoMLChannel' {compressionType} -> compressionType) (\s@AutoMLChannel' {} a -> s {compressionType = a} :: AutoMLChannel)
+
+-- | The content type of the data from the input source. You can use
+-- @text\/csv;header=present@ or @x-application\/vnd.amazon+parquet@. The
+-- default value is @text\/csv;header=present@.
+autoMLChannel_contentType :: Lens.Lens' AutoMLChannel (Prelude.Maybe Prelude.Text)
+autoMLChannel_contentType = Lens.lens (\AutoMLChannel' {contentType} -> contentType) (\s@AutoMLChannel' {} a -> s {contentType = a} :: AutoMLChannel)
+
+-- | The data source for an AutoML channel.
+autoMLChannel_dataSource :: Lens.Lens' AutoMLChannel AutoMLDataSource
+autoMLChannel_dataSource = Lens.lens (\AutoMLChannel' {dataSource} -> dataSource) (\s@AutoMLChannel' {} a -> s {dataSource = a} :: AutoMLChannel)
+
+-- | The name of the target variable in supervised learning, usually
+-- represented by \'y\'.
+autoMLChannel_targetAttributeName :: Lens.Lens' AutoMLChannel Prelude.Text
+autoMLChannel_targetAttributeName = Lens.lens (\AutoMLChannel' {targetAttributeName} -> targetAttributeName) (\s@AutoMLChannel' {} a -> s {targetAttributeName = a} :: AutoMLChannel)
+
+instance Data.FromJSON AutoMLChannel where
+  parseJSON =
+    Data.withObject
+      "AutoMLChannel"
+      ( \x ->
+          AutoMLChannel'
+            Prelude.<$> (x Data..:? "ChannelType")
+            Prelude.<*> (x Data..:? "CompressionType")
+            Prelude.<*> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..: "DataSource")
+            Prelude.<*> (x Data..: "TargetAttributeName")
+      )
+
+instance Prelude.Hashable AutoMLChannel where
+  hashWithSalt _salt AutoMLChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelType
+      `Prelude.hashWithSalt` compressionType
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` dataSource
+      `Prelude.hashWithSalt` targetAttributeName
+
+instance Prelude.NFData AutoMLChannel where
+  rnf AutoMLChannel' {..} =
+    Prelude.rnf channelType
+      `Prelude.seq` Prelude.rnf compressionType
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf dataSource
+      `Prelude.seq` Prelude.rnf targetAttributeName
+
+instance Data.ToJSON AutoMLChannel where
+  toJSON AutoMLChannel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ChannelType" Data..=) Prelude.<$> channelType,
+            ("CompressionType" Data..=)
+              Prelude.<$> compressionType,
+            ("ContentType" Data..=) Prelude.<$> contentType,
+            Prelude.Just ("DataSource" Data..= dataSource),
+            Prelude.Just
+              ("TargetAttributeName" Data..= targetAttributeName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLChannelType.hs b/gen/Amazonka/SageMaker/Types/AutoMLChannelType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLChannelType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLChannelType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLChannelType
+  ( AutoMLChannelType
+      ( ..,
+        AutoMLChannelType_Training,
+        AutoMLChannelType_Validation
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLChannelType = AutoMLChannelType'
+  { fromAutoMLChannelType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLChannelType_Training :: AutoMLChannelType
+pattern AutoMLChannelType_Training = AutoMLChannelType' "training"
+
+pattern AutoMLChannelType_Validation :: AutoMLChannelType
+pattern AutoMLChannelType_Validation = AutoMLChannelType' "validation"
+
+{-# COMPLETE
+  AutoMLChannelType_Training,
+  AutoMLChannelType_Validation,
+  AutoMLChannelType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLContainerDefinition.hs b/gen/Amazonka/SageMaker/Types/AutoMLContainerDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLContainerDefinition.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLContainerDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLContainerDefinition 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
+
+-- | A list of container definitions that describe the different containers
+-- that make up an AutoML candidate. For more information, see .
+--
+-- /See:/ 'newAutoMLContainerDefinition' smart constructor.
+data AutoMLContainerDefinition = AutoMLContainerDefinition'
+  { -- | The environment variables to set in the container. For more information,
+    -- see .
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Elastic Container Registry (Amazon ECR) path of the
+    -- container. For more information, see .
+    image :: Prelude.Text,
+    -- | The location of the model artifacts. For more information, see .
+    modelDataUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLContainerDefinition' 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:
+--
+-- 'environment', 'autoMLContainerDefinition_environment' - The environment variables to set in the container. For more information,
+-- see .
+--
+-- 'image', 'autoMLContainerDefinition_image' - The Amazon Elastic Container Registry (Amazon ECR) path of the
+-- container. For more information, see .
+--
+-- 'modelDataUrl', 'autoMLContainerDefinition_modelDataUrl' - The location of the model artifacts. For more information, see .
+newAutoMLContainerDefinition ::
+  -- | 'image'
+  Prelude.Text ->
+  -- | 'modelDataUrl'
+  Prelude.Text ->
+  AutoMLContainerDefinition
+newAutoMLContainerDefinition pImage_ pModelDataUrl_ =
+  AutoMLContainerDefinition'
+    { environment =
+        Prelude.Nothing,
+      image = pImage_,
+      modelDataUrl = pModelDataUrl_
+    }
+
+-- | The environment variables to set in the container. For more information,
+-- see .
+autoMLContainerDefinition_environment :: Lens.Lens' AutoMLContainerDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+autoMLContainerDefinition_environment = Lens.lens (\AutoMLContainerDefinition' {environment} -> environment) (\s@AutoMLContainerDefinition' {} a -> s {environment = a} :: AutoMLContainerDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Elastic Container Registry (Amazon ECR) path of the
+-- container. For more information, see .
+autoMLContainerDefinition_image :: Lens.Lens' AutoMLContainerDefinition Prelude.Text
+autoMLContainerDefinition_image = Lens.lens (\AutoMLContainerDefinition' {image} -> image) (\s@AutoMLContainerDefinition' {} a -> s {image = a} :: AutoMLContainerDefinition)
+
+-- | The location of the model artifacts. For more information, see .
+autoMLContainerDefinition_modelDataUrl :: Lens.Lens' AutoMLContainerDefinition Prelude.Text
+autoMLContainerDefinition_modelDataUrl = Lens.lens (\AutoMLContainerDefinition' {modelDataUrl} -> modelDataUrl) (\s@AutoMLContainerDefinition' {} a -> s {modelDataUrl = a} :: AutoMLContainerDefinition)
+
+instance Data.FromJSON AutoMLContainerDefinition where
+  parseJSON =
+    Data.withObject
+      "AutoMLContainerDefinition"
+      ( \x ->
+          AutoMLContainerDefinition'
+            Prelude.<$> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "Image")
+            Prelude.<*> (x Data..: "ModelDataUrl")
+      )
+
+instance Prelude.Hashable AutoMLContainerDefinition where
+  hashWithSalt _salt AutoMLContainerDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` image
+      `Prelude.hashWithSalt` modelDataUrl
+
+instance Prelude.NFData AutoMLContainerDefinition where
+  rnf AutoMLContainerDefinition' {..} =
+    Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf image
+      `Prelude.seq` Prelude.rnf modelDataUrl
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLDataSource.hs b/gen/Amazonka/SageMaker/Types/AutoMLDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLDataSource.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLDataSource 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 Amazonka.SageMaker.Types.AutoMLS3DataSource
+
+-- | The data source for the Autopilot job.
+--
+-- /See:/ 'newAutoMLDataSource' smart constructor.
+data AutoMLDataSource = AutoMLDataSource'
+  { -- | The Amazon S3 location of the input data.
+    s3DataSource :: AutoMLS3DataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLDataSource' 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:
+--
+-- 's3DataSource', 'autoMLDataSource_s3DataSource' - The Amazon S3 location of the input data.
+newAutoMLDataSource ::
+  -- | 's3DataSource'
+  AutoMLS3DataSource ->
+  AutoMLDataSource
+newAutoMLDataSource pS3DataSource_ =
+  AutoMLDataSource' {s3DataSource = pS3DataSource_}
+
+-- | The Amazon S3 location of the input data.
+autoMLDataSource_s3DataSource :: Lens.Lens' AutoMLDataSource AutoMLS3DataSource
+autoMLDataSource_s3DataSource = Lens.lens (\AutoMLDataSource' {s3DataSource} -> s3DataSource) (\s@AutoMLDataSource' {} a -> s {s3DataSource = a} :: AutoMLDataSource)
+
+instance Data.FromJSON AutoMLDataSource where
+  parseJSON =
+    Data.withObject
+      "AutoMLDataSource"
+      ( \x ->
+          AutoMLDataSource'
+            Prelude.<$> (x Data..: "S3DataSource")
+      )
+
+instance Prelude.Hashable AutoMLDataSource where
+  hashWithSalt _salt AutoMLDataSource' {..} =
+    _salt `Prelude.hashWithSalt` s3DataSource
+
+instance Prelude.NFData AutoMLDataSource where
+  rnf AutoMLDataSource' {..} = Prelude.rnf s3DataSource
+
+instance Data.ToJSON AutoMLDataSource where
+  toJSON AutoMLDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("S3DataSource" Data..= s3DataSource)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLDataSplitConfig.hs b/gen/Amazonka/SageMaker/Types/AutoMLDataSplitConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLDataSplitConfig.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLDataSplitConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLDataSplitConfig 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
+
+-- | This structure specifies how to split the data into train and validation
+-- datasets. The validation and training datasets must contain the same
+-- headers. The validation dataset must be less than 2 GB in size.
+--
+-- /See:/ 'newAutoMLDataSplitConfig' smart constructor.
+data AutoMLDataSplitConfig = AutoMLDataSplitConfig'
+  { -- | The validation fraction (optional) is a float that specifies the portion
+    -- of the training dataset to be used for validation. The default value is
+    -- 0.2, and values must be greater than 0 and less than 1. We recommend
+    -- setting this value to be less than 0.5.
+    validationFraction :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLDataSplitConfig' 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:
+--
+-- 'validationFraction', 'autoMLDataSplitConfig_validationFraction' - The validation fraction (optional) is a float that specifies the portion
+-- of the training dataset to be used for validation. The default value is
+-- 0.2, and values must be greater than 0 and less than 1. We recommend
+-- setting this value to be less than 0.5.
+newAutoMLDataSplitConfig ::
+  AutoMLDataSplitConfig
+newAutoMLDataSplitConfig =
+  AutoMLDataSplitConfig'
+    { validationFraction =
+        Prelude.Nothing
+    }
+
+-- | The validation fraction (optional) is a float that specifies the portion
+-- of the training dataset to be used for validation. The default value is
+-- 0.2, and values must be greater than 0 and less than 1. We recommend
+-- setting this value to be less than 0.5.
+autoMLDataSplitConfig_validationFraction :: Lens.Lens' AutoMLDataSplitConfig (Prelude.Maybe Prelude.Double)
+autoMLDataSplitConfig_validationFraction = Lens.lens (\AutoMLDataSplitConfig' {validationFraction} -> validationFraction) (\s@AutoMLDataSplitConfig' {} a -> s {validationFraction = a} :: AutoMLDataSplitConfig)
+
+instance Data.FromJSON AutoMLDataSplitConfig where
+  parseJSON =
+    Data.withObject
+      "AutoMLDataSplitConfig"
+      ( \x ->
+          AutoMLDataSplitConfig'
+            Prelude.<$> (x Data..:? "ValidationFraction")
+      )
+
+instance Prelude.Hashable AutoMLDataSplitConfig where
+  hashWithSalt _salt AutoMLDataSplitConfig' {..} =
+    _salt `Prelude.hashWithSalt` validationFraction
+
+instance Prelude.NFData AutoMLDataSplitConfig where
+  rnf AutoMLDataSplitConfig' {..} =
+    Prelude.rnf validationFraction
+
+instance Data.ToJSON AutoMLDataSplitConfig where
+  toJSON AutoMLDataSplitConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ValidationFraction" Data..=)
+              Prelude.<$> validationFraction
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobArtifacts.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobArtifacts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobArtifacts.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLJobArtifacts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobArtifacts 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
+
+-- | The artifacts that are generated during an AutoML job.
+--
+-- /See:/ 'newAutoMLJobArtifacts' smart constructor.
+data AutoMLJobArtifacts = AutoMLJobArtifacts'
+  { -- | The URL of the notebook location.
+    candidateDefinitionNotebookLocation :: Prelude.Maybe Prelude.Text,
+    -- | The URL of the notebook location.
+    dataExplorationNotebookLocation :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLJobArtifacts' 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:
+--
+-- 'candidateDefinitionNotebookLocation', 'autoMLJobArtifacts_candidateDefinitionNotebookLocation' - The URL of the notebook location.
+--
+-- 'dataExplorationNotebookLocation', 'autoMLJobArtifacts_dataExplorationNotebookLocation' - The URL of the notebook location.
+newAutoMLJobArtifacts ::
+  AutoMLJobArtifacts
+newAutoMLJobArtifacts =
+  AutoMLJobArtifacts'
+    { candidateDefinitionNotebookLocation =
+        Prelude.Nothing,
+      dataExplorationNotebookLocation = Prelude.Nothing
+    }
+
+-- | The URL of the notebook location.
+autoMLJobArtifacts_candidateDefinitionNotebookLocation :: Lens.Lens' AutoMLJobArtifacts (Prelude.Maybe Prelude.Text)
+autoMLJobArtifacts_candidateDefinitionNotebookLocation = Lens.lens (\AutoMLJobArtifacts' {candidateDefinitionNotebookLocation} -> candidateDefinitionNotebookLocation) (\s@AutoMLJobArtifacts' {} a -> s {candidateDefinitionNotebookLocation = a} :: AutoMLJobArtifacts)
+
+-- | The URL of the notebook location.
+autoMLJobArtifacts_dataExplorationNotebookLocation :: Lens.Lens' AutoMLJobArtifacts (Prelude.Maybe Prelude.Text)
+autoMLJobArtifacts_dataExplorationNotebookLocation = Lens.lens (\AutoMLJobArtifacts' {dataExplorationNotebookLocation} -> dataExplorationNotebookLocation) (\s@AutoMLJobArtifacts' {} a -> s {dataExplorationNotebookLocation = a} :: AutoMLJobArtifacts)
+
+instance Data.FromJSON AutoMLJobArtifacts where
+  parseJSON =
+    Data.withObject
+      "AutoMLJobArtifacts"
+      ( \x ->
+          AutoMLJobArtifacts'
+            Prelude.<$> (x Data..:? "CandidateDefinitionNotebookLocation")
+            Prelude.<*> (x Data..:? "DataExplorationNotebookLocation")
+      )
+
+instance Prelude.Hashable AutoMLJobArtifacts where
+  hashWithSalt _salt AutoMLJobArtifacts' {..} =
+    _salt
+      `Prelude.hashWithSalt` candidateDefinitionNotebookLocation
+      `Prelude.hashWithSalt` dataExplorationNotebookLocation
+
+instance Prelude.NFData AutoMLJobArtifacts where
+  rnf AutoMLJobArtifacts' {..} =
+    Prelude.rnf candidateDefinitionNotebookLocation
+      `Prelude.seq` Prelude.rnf dataExplorationNotebookLocation
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobCompletionCriteria.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobCompletionCriteria.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobCompletionCriteria.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLJobCompletionCriteria
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria 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
+
+-- | How long a job is allowed to run, or how many candidates a job is
+-- allowed to generate.
+--
+-- /See:/ 'newAutoMLJobCompletionCriteria' smart constructor.
+data AutoMLJobCompletionCriteria = AutoMLJobCompletionCriteria'
+  { -- | The maximum runtime, in seconds, an AutoML job has to complete.
+    --
+    -- If an AutoML job exceeds the maximum runtime, the job is stopped
+    -- automatically and its processing is ended gracefully. The AutoML job
+    -- identifies the best model whose training was completed and marks it as
+    -- the best-performing model. Any unfinished steps of the job, such as
+    -- automatic one-click Autopilot model deployment, will not be completed.
+    maxAutoMLJobRuntimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum number of times a training job is allowed to run.
+    maxCandidates :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum time, in seconds, that each training job executed inside
+    -- hyperparameter tuning is allowed to run as part of a hyperparameter
+    -- tuning job. For more information, see the used by the action.
+    maxRuntimePerTrainingJobInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLJobCompletionCriteria' 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:
+--
+-- 'maxAutoMLJobRuntimeInSeconds', 'autoMLJobCompletionCriteria_maxAutoMLJobRuntimeInSeconds' - The maximum runtime, in seconds, an AutoML job has to complete.
+--
+-- If an AutoML job exceeds the maximum runtime, the job is stopped
+-- automatically and its processing is ended gracefully. The AutoML job
+-- identifies the best model whose training was completed and marks it as
+-- the best-performing model. Any unfinished steps of the job, such as
+-- automatic one-click Autopilot model deployment, will not be completed.
+--
+-- 'maxCandidates', 'autoMLJobCompletionCriteria_maxCandidates' - The maximum number of times a training job is allowed to run.
+--
+-- 'maxRuntimePerTrainingJobInSeconds', 'autoMLJobCompletionCriteria_maxRuntimePerTrainingJobInSeconds' - The maximum time, in seconds, that each training job executed inside
+-- hyperparameter tuning is allowed to run as part of a hyperparameter
+-- tuning job. For more information, see the used by the action.
+newAutoMLJobCompletionCriteria ::
+  AutoMLJobCompletionCriteria
+newAutoMLJobCompletionCriteria =
+  AutoMLJobCompletionCriteria'
+    { maxAutoMLJobRuntimeInSeconds =
+        Prelude.Nothing,
+      maxCandidates = Prelude.Nothing,
+      maxRuntimePerTrainingJobInSeconds =
+        Prelude.Nothing
+    }
+
+-- | The maximum runtime, in seconds, an AutoML job has to complete.
+--
+-- If an AutoML job exceeds the maximum runtime, the job is stopped
+-- automatically and its processing is ended gracefully. The AutoML job
+-- identifies the best model whose training was completed and marks it as
+-- the best-performing model. Any unfinished steps of the job, such as
+-- automatic one-click Autopilot model deployment, will not be completed.
+autoMLJobCompletionCriteria_maxAutoMLJobRuntimeInSeconds :: Lens.Lens' AutoMLJobCompletionCriteria (Prelude.Maybe Prelude.Natural)
+autoMLJobCompletionCriteria_maxAutoMLJobRuntimeInSeconds = Lens.lens (\AutoMLJobCompletionCriteria' {maxAutoMLJobRuntimeInSeconds} -> maxAutoMLJobRuntimeInSeconds) (\s@AutoMLJobCompletionCriteria' {} a -> s {maxAutoMLJobRuntimeInSeconds = a} :: AutoMLJobCompletionCriteria)
+
+-- | The maximum number of times a training job is allowed to run.
+autoMLJobCompletionCriteria_maxCandidates :: Lens.Lens' AutoMLJobCompletionCriteria (Prelude.Maybe Prelude.Natural)
+autoMLJobCompletionCriteria_maxCandidates = Lens.lens (\AutoMLJobCompletionCriteria' {maxCandidates} -> maxCandidates) (\s@AutoMLJobCompletionCriteria' {} a -> s {maxCandidates = a} :: AutoMLJobCompletionCriteria)
+
+-- | The maximum time, in seconds, that each training job executed inside
+-- hyperparameter tuning is allowed to run as part of a hyperparameter
+-- tuning job. For more information, see the used by the action.
+autoMLJobCompletionCriteria_maxRuntimePerTrainingJobInSeconds :: Lens.Lens' AutoMLJobCompletionCriteria (Prelude.Maybe Prelude.Natural)
+autoMLJobCompletionCriteria_maxRuntimePerTrainingJobInSeconds = Lens.lens (\AutoMLJobCompletionCriteria' {maxRuntimePerTrainingJobInSeconds} -> maxRuntimePerTrainingJobInSeconds) (\s@AutoMLJobCompletionCriteria' {} a -> s {maxRuntimePerTrainingJobInSeconds = a} :: AutoMLJobCompletionCriteria)
+
+instance Data.FromJSON AutoMLJobCompletionCriteria where
+  parseJSON =
+    Data.withObject
+      "AutoMLJobCompletionCriteria"
+      ( \x ->
+          AutoMLJobCompletionCriteria'
+            Prelude.<$> (x Data..:? "MaxAutoMLJobRuntimeInSeconds")
+            Prelude.<*> (x Data..:? "MaxCandidates")
+            Prelude.<*> (x Data..:? "MaxRuntimePerTrainingJobInSeconds")
+      )
+
+instance Prelude.Hashable AutoMLJobCompletionCriteria where
+  hashWithSalt _salt AutoMLJobCompletionCriteria' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxAutoMLJobRuntimeInSeconds
+      `Prelude.hashWithSalt` maxCandidates
+      `Prelude.hashWithSalt` maxRuntimePerTrainingJobInSeconds
+
+instance Prelude.NFData AutoMLJobCompletionCriteria where
+  rnf AutoMLJobCompletionCriteria' {..} =
+    Prelude.rnf maxAutoMLJobRuntimeInSeconds
+      `Prelude.seq` Prelude.rnf maxCandidates
+      `Prelude.seq` Prelude.rnf maxRuntimePerTrainingJobInSeconds
+
+instance Data.ToJSON AutoMLJobCompletionCriteria where
+  toJSON AutoMLJobCompletionCriteria' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxAutoMLJobRuntimeInSeconds" Data..=)
+              Prelude.<$> maxAutoMLJobRuntimeInSeconds,
+            ("MaxCandidates" Data..=) Prelude.<$> maxCandidates,
+            ("MaxRuntimePerTrainingJobInSeconds" Data..=)
+              Prelude.<$> maxRuntimePerTrainingJobInSeconds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobConfig.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobConfig.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLJobConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobConfig 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 Amazonka.SageMaker.Types.AutoMLCandidateGenerationConfig
+import Amazonka.SageMaker.Types.AutoMLDataSplitConfig
+import Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria
+import Amazonka.SageMaker.Types.AutoMLMode
+import Amazonka.SageMaker.Types.AutoMLSecurityConfig
+
+-- | A collection of settings used for an AutoML job.
+--
+-- /See:/ 'newAutoMLJobConfig' smart constructor.
+data AutoMLJobConfig = AutoMLJobConfig'
+  { -- | The configuration for generating a candidate for an AutoML job
+    -- (optional).
+    candidateGenerationConfig :: Prelude.Maybe AutoMLCandidateGenerationConfig,
+    -- | How long an AutoML job is allowed to run, or how many candidates a job
+    -- is allowed to generate.
+    completionCriteria :: Prelude.Maybe AutoMLJobCompletionCriteria,
+    -- | The configuration for splitting the input training dataset.
+    --
+    -- Type: AutoMLDataSplitConfig
+    dataSplitConfig :: Prelude.Maybe AutoMLDataSplitConfig,
+    -- | The method that Autopilot uses to train the data. You can either specify
+    -- the mode manually or let Autopilot choose for you based on the dataset
+    -- size by selecting @AUTO@. In @AUTO@ mode, Autopilot chooses @ENSEMBLING@
+    -- for datasets smaller than 100 MB, and @HYPERPARAMETER_TUNING@ for larger
+    -- ones.
+    --
+    -- The @ENSEMBLING@ mode uses a multi-stack ensemble model to predict
+    -- classification and regression tasks directly from your dataset. This
+    -- machine learning mode combines several base models to produce an optimal
+    -- predictive model. It then uses a stacking ensemble method to combine
+    -- predictions from contributing members. A multi-stack ensemble model can
+    -- provide better performance over a single model by combining the
+    -- predictive capabilities of multiple models. See
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-algorithm-suppprt Autopilot algorithm support>
+    -- for a list of algorithms supported by @ENSEMBLING@ mode.
+    --
+    -- The @HYPERPARAMETER_TUNING@ (HPO) mode uses the best hyperparameters to
+    -- train the best version of a model. HPO will automatically select an
+    -- algorithm for the type of problem you want to solve. Then HPO finds the
+    -- best hyperparameters according to your objective metric. See
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-algorithm-suppprt Autopilot algorithm support>
+    -- for a list of algorithms supported by @HYPERPARAMETER_TUNING@ mode.
+    mode :: Prelude.Maybe AutoMLMode,
+    -- | The security configuration for traffic encryption or Amazon VPC
+    -- settings.
+    securityConfig :: Prelude.Maybe AutoMLSecurityConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLJobConfig' 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:
+--
+-- 'candidateGenerationConfig', 'autoMLJobConfig_candidateGenerationConfig' - The configuration for generating a candidate for an AutoML job
+-- (optional).
+--
+-- 'completionCriteria', 'autoMLJobConfig_completionCriteria' - How long an AutoML job is allowed to run, or how many candidates a job
+-- is allowed to generate.
+--
+-- 'dataSplitConfig', 'autoMLJobConfig_dataSplitConfig' - The configuration for splitting the input training dataset.
+--
+-- Type: AutoMLDataSplitConfig
+--
+-- 'mode', 'autoMLJobConfig_mode' - The method that Autopilot uses to train the data. You can either specify
+-- the mode manually or let Autopilot choose for you based on the dataset
+-- size by selecting @AUTO@. In @AUTO@ mode, Autopilot chooses @ENSEMBLING@
+-- for datasets smaller than 100 MB, and @HYPERPARAMETER_TUNING@ for larger
+-- ones.
+--
+-- The @ENSEMBLING@ mode uses a multi-stack ensemble model to predict
+-- classification and regression tasks directly from your dataset. This
+-- machine learning mode combines several base models to produce an optimal
+-- predictive model. It then uses a stacking ensemble method to combine
+-- predictions from contributing members. A multi-stack ensemble model can
+-- provide better performance over a single model by combining the
+-- predictive capabilities of multiple models. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-algorithm-suppprt Autopilot algorithm support>
+-- for a list of algorithms supported by @ENSEMBLING@ mode.
+--
+-- The @HYPERPARAMETER_TUNING@ (HPO) mode uses the best hyperparameters to
+-- train the best version of a model. HPO will automatically select an
+-- algorithm for the type of problem you want to solve. Then HPO finds the
+-- best hyperparameters according to your objective metric. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-algorithm-suppprt Autopilot algorithm support>
+-- for a list of algorithms supported by @HYPERPARAMETER_TUNING@ mode.
+--
+-- 'securityConfig', 'autoMLJobConfig_securityConfig' - The security configuration for traffic encryption or Amazon VPC
+-- settings.
+newAutoMLJobConfig ::
+  AutoMLJobConfig
+newAutoMLJobConfig =
+  AutoMLJobConfig'
+    { candidateGenerationConfig =
+        Prelude.Nothing,
+      completionCriteria = Prelude.Nothing,
+      dataSplitConfig = Prelude.Nothing,
+      mode = Prelude.Nothing,
+      securityConfig = Prelude.Nothing
+    }
+
+-- | The configuration for generating a candidate for an AutoML job
+-- (optional).
+autoMLJobConfig_candidateGenerationConfig :: Lens.Lens' AutoMLJobConfig (Prelude.Maybe AutoMLCandidateGenerationConfig)
+autoMLJobConfig_candidateGenerationConfig = Lens.lens (\AutoMLJobConfig' {candidateGenerationConfig} -> candidateGenerationConfig) (\s@AutoMLJobConfig' {} a -> s {candidateGenerationConfig = a} :: AutoMLJobConfig)
+
+-- | How long an AutoML job is allowed to run, or how many candidates a job
+-- is allowed to generate.
+autoMLJobConfig_completionCriteria :: Lens.Lens' AutoMLJobConfig (Prelude.Maybe AutoMLJobCompletionCriteria)
+autoMLJobConfig_completionCriteria = Lens.lens (\AutoMLJobConfig' {completionCriteria} -> completionCriteria) (\s@AutoMLJobConfig' {} a -> s {completionCriteria = a} :: AutoMLJobConfig)
+
+-- | The configuration for splitting the input training dataset.
+--
+-- Type: AutoMLDataSplitConfig
+autoMLJobConfig_dataSplitConfig :: Lens.Lens' AutoMLJobConfig (Prelude.Maybe AutoMLDataSplitConfig)
+autoMLJobConfig_dataSplitConfig = Lens.lens (\AutoMLJobConfig' {dataSplitConfig} -> dataSplitConfig) (\s@AutoMLJobConfig' {} a -> s {dataSplitConfig = a} :: AutoMLJobConfig)
+
+-- | The method that Autopilot uses to train the data. You can either specify
+-- the mode manually or let Autopilot choose for you based on the dataset
+-- size by selecting @AUTO@. In @AUTO@ mode, Autopilot chooses @ENSEMBLING@
+-- for datasets smaller than 100 MB, and @HYPERPARAMETER_TUNING@ for larger
+-- ones.
+--
+-- The @ENSEMBLING@ mode uses a multi-stack ensemble model to predict
+-- classification and regression tasks directly from your dataset. This
+-- machine learning mode combines several base models to produce an optimal
+-- predictive model. It then uses a stacking ensemble method to combine
+-- predictions from contributing members. A multi-stack ensemble model can
+-- provide better performance over a single model by combining the
+-- predictive capabilities of multiple models. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-algorithm-suppprt Autopilot algorithm support>
+-- for a list of algorithms supported by @ENSEMBLING@ mode.
+--
+-- The @HYPERPARAMETER_TUNING@ (HPO) mode uses the best hyperparameters to
+-- train the best version of a model. HPO will automatically select an
+-- algorithm for the type of problem you want to solve. Then HPO finds the
+-- best hyperparameters according to your objective metric. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-algorithm-suppprt Autopilot algorithm support>
+-- for a list of algorithms supported by @HYPERPARAMETER_TUNING@ mode.
+autoMLJobConfig_mode :: Lens.Lens' AutoMLJobConfig (Prelude.Maybe AutoMLMode)
+autoMLJobConfig_mode = Lens.lens (\AutoMLJobConfig' {mode} -> mode) (\s@AutoMLJobConfig' {} a -> s {mode = a} :: AutoMLJobConfig)
+
+-- | The security configuration for traffic encryption or Amazon VPC
+-- settings.
+autoMLJobConfig_securityConfig :: Lens.Lens' AutoMLJobConfig (Prelude.Maybe AutoMLSecurityConfig)
+autoMLJobConfig_securityConfig = Lens.lens (\AutoMLJobConfig' {securityConfig} -> securityConfig) (\s@AutoMLJobConfig' {} a -> s {securityConfig = a} :: AutoMLJobConfig)
+
+instance Data.FromJSON AutoMLJobConfig where
+  parseJSON =
+    Data.withObject
+      "AutoMLJobConfig"
+      ( \x ->
+          AutoMLJobConfig'
+            Prelude.<$> (x Data..:? "CandidateGenerationConfig")
+            Prelude.<*> (x Data..:? "CompletionCriteria")
+            Prelude.<*> (x Data..:? "DataSplitConfig")
+            Prelude.<*> (x Data..:? "Mode")
+            Prelude.<*> (x Data..:? "SecurityConfig")
+      )
+
+instance Prelude.Hashable AutoMLJobConfig where
+  hashWithSalt _salt AutoMLJobConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` candidateGenerationConfig
+      `Prelude.hashWithSalt` completionCriteria
+      `Prelude.hashWithSalt` dataSplitConfig
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` securityConfig
+
+instance Prelude.NFData AutoMLJobConfig where
+  rnf AutoMLJobConfig' {..} =
+    Prelude.rnf candidateGenerationConfig
+      `Prelude.seq` Prelude.rnf completionCriteria
+      `Prelude.seq` Prelude.rnf dataSplitConfig
+      `Prelude.seq` Prelude.rnf mode
+      `Prelude.seq` Prelude.rnf securityConfig
+
+instance Data.ToJSON AutoMLJobConfig where
+  toJSON AutoMLJobConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CandidateGenerationConfig" Data..=)
+              Prelude.<$> candidateGenerationConfig,
+            ("CompletionCriteria" Data..=)
+              Prelude.<$> completionCriteria,
+            ("DataSplitConfig" Data..=)
+              Prelude.<$> dataSplitConfig,
+            ("Mode" Data..=) Prelude.<$> mode,
+            ("SecurityConfig" Data..=)
+              Prelude.<$> securityConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobObjective.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobObjective.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobObjective.hs
@@ -0,0 +1,567 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLJobObjective
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobObjective 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 Amazonka.SageMaker.Types.AutoMLMetricEnum
+
+-- | Specifies a metric to minimize or maximize as the objective of a job.
+--
+-- /See:/ 'newAutoMLJobObjective' smart constructor.
+data AutoMLJobObjective = AutoMLJobObjective'
+  { -- | The name of the objective metric used to measure the predictive quality
+    -- of a machine learning system. This metric is optimized during training
+    -- to provide the best estimate for model parameter values from data.
+    --
+    -- Here are the options:
+    --
+    -- [Accuracy]
+    --     The ratio of the number of correctly classified items to the total
+    --     number of (correctly and incorrectly) classified items. It is used
+    --     for both binary and multiclass classification. Accuracy measures how
+    --     close the predicted class values are to the actual values. Values
+    --     for accuracy metrics vary between zero (0) and one (1). A value of 1
+    --     indicates perfect accuracy, and 0 indicates perfect inaccuracy.
+    --
+    -- [AUC]
+    --     The area under the curve (AUC) metric is used to compare and
+    --     evaluate binary classification by algorithms that return
+    --     probabilities, such as logistic regression. To map the probabilities
+    --     into classifications, these are compared against a threshold value.
+    --
+    --     The relevant curve is the receiver operating characteristic curve
+    --     (ROC curve). The ROC curve plots the true positive rate (TPR) of
+    --     predictions (or recall) against the false positive rate (FPR) as a
+    --     function of the threshold value, above which a prediction is
+    --     considered positive. Increasing the threshold results in fewer false
+    --     positives, but more false negatives.
+    --
+    --     AUC is the area under this ROC curve. Therefore, AUC provides an
+    --     aggregated measure of the model performance across all possible
+    --     classification thresholds. AUC scores vary between 0 and 1. A score
+    --     of 1 indicates perfect accuracy, and a score of one half (0.5)
+    --     indicates that the prediction is not better than a random
+    --     classifier.
+    --
+    -- [BalancedAccuracy]
+    --     @BalancedAccuracy@ is a metric that measures the ratio of accurate
+    --     predictions to all predictions. This ratio is calculated after
+    --     normalizing true positives (TP) and true negatives (TN) by the total
+    --     number of positive (P) and negative (N) values. It is used in both
+    --     binary and multiclass classification and is defined as follows:
+    --     0.5*((TP\/P)+(TN\/N)), with values ranging from 0 to 1.
+    --     @BalancedAccuracy@ gives a better measure of accuracy when the
+    --     number of positives or negatives differ greatly from each other in
+    --     an imbalanced dataset. For example, when only 1% of email is spam.
+    --
+    -- [F1]
+    --     The @F1@ score is the harmonic mean of the precision and recall,
+    --     defined as follows: F1 = 2 * (precision * recall) \/ (precision +
+    --     recall). It is used for binary classification into classes
+    --     traditionally referred to as positive and negative. Predictions are
+    --     said to be true when they match their actual (correct) class, and
+    --     false when they do not.
+    --
+    --     Precision is the ratio of the true positive predictions to all
+    --     positive predictions, and it includes the false positives in a
+    --     dataset. Precision measures the quality of the prediction when it
+    --     predicts the positive class.
+    --
+    --     Recall (or sensitivity) is the ratio of the true positive
+    --     predictions to all actual positive instances. Recall measures how
+    --     completely a model predicts the actual class members in a dataset.
+    --
+    --     F1 scores vary between 0 and 1. A score of 1 indicates the best
+    --     possible performance, and 0 indicates the worst.
+    --
+    -- [F1macro]
+    --     The @F1macro@ score applies F1 scoring to multiclass classification
+    --     problems. It does this by calculating the precision and recall, and
+    --     then taking their harmonic mean to calculate the F1 score for each
+    --     class. Lastly, the F1macro averages the individual scores to obtain
+    --     the @F1macro@ score. @F1macro@ scores vary between 0 and 1. A score
+    --     of 1 indicates the best possible performance, and 0 indicates the
+    --     worst.
+    --
+    -- [MAE]
+    --     The mean absolute error (MAE) is a measure of how different the
+    --     predicted and actual values are, when they\'re averaged over all
+    --     values. MAE is commonly used in regression analysis to understand
+    --     model prediction error. If there is linear regression, MAE
+    --     represents the average distance from a predicted line to the actual
+    --     value. MAE is defined as the sum of absolute errors divided by the
+    --     number of observations. Values range from 0 to infinity, with
+    --     smaller numbers indicating a better model fit to the data.
+    --
+    -- [MSE]
+    --     The mean squared error (MSE) is the average of the squared
+    --     differences between the predicted and actual values. It is used for
+    --     regression. MSE values are always positive. The better a model is at
+    --     predicting the actual values, the smaller the MSE value is
+    --
+    -- [Precision]
+    --     Precision measures how well an algorithm predicts the true positives
+    --     (TP) out of all of the positives that it identifies. It is defined
+    --     as follows: Precision = TP\/(TP+FP), with values ranging from zero
+    --     (0) to one (1), and is used in binary classification. Precision is
+    --     an important metric when the cost of a false positive is high. For
+    --     example, the cost of a false positive is very high if an airplane
+    --     safety system is falsely deemed safe to fly. A false positive (FP)
+    --     reflects a positive prediction that is actually negative in the
+    --     data.
+    --
+    -- [PrecisionMacro]
+    --     The precision macro computes precision for multiclass classification
+    --     problems. It does this by calculating precision for each class and
+    --     averaging scores to obtain precision for several classes.
+    --     @PrecisionMacro@ scores range from zero (0) to one (1). Higher
+    --     scores reflect the model\'s ability to predict true positives (TP)
+    --     out of all of the positives that it identifies, averaged across
+    --     multiple classes.
+    --
+    -- [R2]
+    --     R2, also known as the coefficient of determination, is used in
+    --     regression to quantify how much a model can explain the variance of
+    --     a dependent variable. Values range from one (1) to negative one
+    --     (-1). Higher numbers indicate a higher fraction of explained
+    --     variability. @R2@ values close to zero (0) indicate that very little
+    --     of the dependent variable can be explained by the model. Negative
+    --     values indicate a poor fit and that the model is outperformed by a
+    --     constant function. For linear regression, this is a horizontal line.
+    --
+    -- [Recall]
+    --     Recall measures how well an algorithm correctly predicts all of the
+    --     true positives (TP) in a dataset. A true positive is a positive
+    --     prediction that is also an actual positive value in the data. Recall
+    --     is defined as follows: Recall = TP\/(TP+FN), with values ranging
+    --     from 0 to 1. Higher scores reflect a better ability of the model to
+    --     predict true positives (TP) in the data, and is used in binary
+    --     classification.
+    --
+    --     Recall is important when testing for cancer because it\'s used to
+    --     find all of the true positives. A false positive (FP) reflects a
+    --     positive prediction that is actually negative in the data. It is
+    --     often insufficient to measure only recall, because predicting every
+    --     output as a true positive will yield a perfect recall score.
+    --
+    -- [RecallMacro]
+    --     The RecallMacro computes recall for multiclass classification
+    --     problems by calculating recall for each class and averaging scores
+    --     to obtain recall for several classes. RecallMacro scores range from
+    --     0 to 1. Higher scores reflect the model\'s ability to predict true
+    --     positives (TP) in a dataset. Whereas, a true positive reflects a
+    --     positive prediction that is also an actual positive value in the
+    --     data. It is often insufficient to measure only recall, because
+    --     predicting every output as a true positive will yield a perfect
+    --     recall score.
+    --
+    -- [RMSE]
+    --     Root mean squared error (RMSE) measures the square root of the
+    --     squared difference between predicted and actual values, and it\'s
+    --     averaged over all values. It is used in regression analysis to
+    --     understand model prediction error. It\'s an important metric to
+    --     indicate the presence of large model errors and outliers. Values
+    --     range from zero (0) to infinity, with smaller numbers indicating a
+    --     better model fit to the data. RMSE is dependent on scale, and should
+    --     not be used to compare datasets of different sizes.
+    --
+    -- If you do not specify a metric explicitly, the default behavior is to
+    -- automatically use:
+    --
+    -- -   @MSE@: for regression.
+    --
+    -- -   @F1@: for binary classification
+    --
+    -- -   @Accuracy@: for multiclass classification.
+    metricName :: AutoMLMetricEnum
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLJobObjective' 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:
+--
+-- 'metricName', 'autoMLJobObjective_metricName' - The name of the objective metric used to measure the predictive quality
+-- of a machine learning system. This metric is optimized during training
+-- to provide the best estimate for model parameter values from data.
+--
+-- Here are the options:
+--
+-- [Accuracy]
+--     The ratio of the number of correctly classified items to the total
+--     number of (correctly and incorrectly) classified items. It is used
+--     for both binary and multiclass classification. Accuracy measures how
+--     close the predicted class values are to the actual values. Values
+--     for accuracy metrics vary between zero (0) and one (1). A value of 1
+--     indicates perfect accuracy, and 0 indicates perfect inaccuracy.
+--
+-- [AUC]
+--     The area under the curve (AUC) metric is used to compare and
+--     evaluate binary classification by algorithms that return
+--     probabilities, such as logistic regression. To map the probabilities
+--     into classifications, these are compared against a threshold value.
+--
+--     The relevant curve is the receiver operating characteristic curve
+--     (ROC curve). The ROC curve plots the true positive rate (TPR) of
+--     predictions (or recall) against the false positive rate (FPR) as a
+--     function of the threshold value, above which a prediction is
+--     considered positive. Increasing the threshold results in fewer false
+--     positives, but more false negatives.
+--
+--     AUC is the area under this ROC curve. Therefore, AUC provides an
+--     aggregated measure of the model performance across all possible
+--     classification thresholds. AUC scores vary between 0 and 1. A score
+--     of 1 indicates perfect accuracy, and a score of one half (0.5)
+--     indicates that the prediction is not better than a random
+--     classifier.
+--
+-- [BalancedAccuracy]
+--     @BalancedAccuracy@ is a metric that measures the ratio of accurate
+--     predictions to all predictions. This ratio is calculated after
+--     normalizing true positives (TP) and true negatives (TN) by the total
+--     number of positive (P) and negative (N) values. It is used in both
+--     binary and multiclass classification and is defined as follows:
+--     0.5*((TP\/P)+(TN\/N)), with values ranging from 0 to 1.
+--     @BalancedAccuracy@ gives a better measure of accuracy when the
+--     number of positives or negatives differ greatly from each other in
+--     an imbalanced dataset. For example, when only 1% of email is spam.
+--
+-- [F1]
+--     The @F1@ score is the harmonic mean of the precision and recall,
+--     defined as follows: F1 = 2 * (precision * recall) \/ (precision +
+--     recall). It is used for binary classification into classes
+--     traditionally referred to as positive and negative. Predictions are
+--     said to be true when they match their actual (correct) class, and
+--     false when they do not.
+--
+--     Precision is the ratio of the true positive predictions to all
+--     positive predictions, and it includes the false positives in a
+--     dataset. Precision measures the quality of the prediction when it
+--     predicts the positive class.
+--
+--     Recall (or sensitivity) is the ratio of the true positive
+--     predictions to all actual positive instances. Recall measures how
+--     completely a model predicts the actual class members in a dataset.
+--
+--     F1 scores vary between 0 and 1. A score of 1 indicates the best
+--     possible performance, and 0 indicates the worst.
+--
+-- [F1macro]
+--     The @F1macro@ score applies F1 scoring to multiclass classification
+--     problems. It does this by calculating the precision and recall, and
+--     then taking their harmonic mean to calculate the F1 score for each
+--     class. Lastly, the F1macro averages the individual scores to obtain
+--     the @F1macro@ score. @F1macro@ scores vary between 0 and 1. A score
+--     of 1 indicates the best possible performance, and 0 indicates the
+--     worst.
+--
+-- [MAE]
+--     The mean absolute error (MAE) is a measure of how different the
+--     predicted and actual values are, when they\'re averaged over all
+--     values. MAE is commonly used in regression analysis to understand
+--     model prediction error. If there is linear regression, MAE
+--     represents the average distance from a predicted line to the actual
+--     value. MAE is defined as the sum of absolute errors divided by the
+--     number of observations. Values range from 0 to infinity, with
+--     smaller numbers indicating a better model fit to the data.
+--
+-- [MSE]
+--     The mean squared error (MSE) is the average of the squared
+--     differences between the predicted and actual values. It is used for
+--     regression. MSE values are always positive. The better a model is at
+--     predicting the actual values, the smaller the MSE value is
+--
+-- [Precision]
+--     Precision measures how well an algorithm predicts the true positives
+--     (TP) out of all of the positives that it identifies. It is defined
+--     as follows: Precision = TP\/(TP+FP), with values ranging from zero
+--     (0) to one (1), and is used in binary classification. Precision is
+--     an important metric when the cost of a false positive is high. For
+--     example, the cost of a false positive is very high if an airplane
+--     safety system is falsely deemed safe to fly. A false positive (FP)
+--     reflects a positive prediction that is actually negative in the
+--     data.
+--
+-- [PrecisionMacro]
+--     The precision macro computes precision for multiclass classification
+--     problems. It does this by calculating precision for each class and
+--     averaging scores to obtain precision for several classes.
+--     @PrecisionMacro@ scores range from zero (0) to one (1). Higher
+--     scores reflect the model\'s ability to predict true positives (TP)
+--     out of all of the positives that it identifies, averaged across
+--     multiple classes.
+--
+-- [R2]
+--     R2, also known as the coefficient of determination, is used in
+--     regression to quantify how much a model can explain the variance of
+--     a dependent variable. Values range from one (1) to negative one
+--     (-1). Higher numbers indicate a higher fraction of explained
+--     variability. @R2@ values close to zero (0) indicate that very little
+--     of the dependent variable can be explained by the model. Negative
+--     values indicate a poor fit and that the model is outperformed by a
+--     constant function. For linear regression, this is a horizontal line.
+--
+-- [Recall]
+--     Recall measures how well an algorithm correctly predicts all of the
+--     true positives (TP) in a dataset. A true positive is a positive
+--     prediction that is also an actual positive value in the data. Recall
+--     is defined as follows: Recall = TP\/(TP+FN), with values ranging
+--     from 0 to 1. Higher scores reflect a better ability of the model to
+--     predict true positives (TP) in the data, and is used in binary
+--     classification.
+--
+--     Recall is important when testing for cancer because it\'s used to
+--     find all of the true positives. A false positive (FP) reflects a
+--     positive prediction that is actually negative in the data. It is
+--     often insufficient to measure only recall, because predicting every
+--     output as a true positive will yield a perfect recall score.
+--
+-- [RecallMacro]
+--     The RecallMacro computes recall for multiclass classification
+--     problems by calculating recall for each class and averaging scores
+--     to obtain recall for several classes. RecallMacro scores range from
+--     0 to 1. Higher scores reflect the model\'s ability to predict true
+--     positives (TP) in a dataset. Whereas, a true positive reflects a
+--     positive prediction that is also an actual positive value in the
+--     data. It is often insufficient to measure only recall, because
+--     predicting every output as a true positive will yield a perfect
+--     recall score.
+--
+-- [RMSE]
+--     Root mean squared error (RMSE) measures the square root of the
+--     squared difference between predicted and actual values, and it\'s
+--     averaged over all values. It is used in regression analysis to
+--     understand model prediction error. It\'s an important metric to
+--     indicate the presence of large model errors and outliers. Values
+--     range from zero (0) to infinity, with smaller numbers indicating a
+--     better model fit to the data. RMSE is dependent on scale, and should
+--     not be used to compare datasets of different sizes.
+--
+-- If you do not specify a metric explicitly, the default behavior is to
+-- automatically use:
+--
+-- -   @MSE@: for regression.
+--
+-- -   @F1@: for binary classification
+--
+-- -   @Accuracy@: for multiclass classification.
+newAutoMLJobObjective ::
+  -- | 'metricName'
+  AutoMLMetricEnum ->
+  AutoMLJobObjective
+newAutoMLJobObjective pMetricName_ =
+  AutoMLJobObjective' {metricName = pMetricName_}
+
+-- | The name of the objective metric used to measure the predictive quality
+-- of a machine learning system. This metric is optimized during training
+-- to provide the best estimate for model parameter values from data.
+--
+-- Here are the options:
+--
+-- [Accuracy]
+--     The ratio of the number of correctly classified items to the total
+--     number of (correctly and incorrectly) classified items. It is used
+--     for both binary and multiclass classification. Accuracy measures how
+--     close the predicted class values are to the actual values. Values
+--     for accuracy metrics vary between zero (0) and one (1). A value of 1
+--     indicates perfect accuracy, and 0 indicates perfect inaccuracy.
+--
+-- [AUC]
+--     The area under the curve (AUC) metric is used to compare and
+--     evaluate binary classification by algorithms that return
+--     probabilities, such as logistic regression. To map the probabilities
+--     into classifications, these are compared against a threshold value.
+--
+--     The relevant curve is the receiver operating characteristic curve
+--     (ROC curve). The ROC curve plots the true positive rate (TPR) of
+--     predictions (or recall) against the false positive rate (FPR) as a
+--     function of the threshold value, above which a prediction is
+--     considered positive. Increasing the threshold results in fewer false
+--     positives, but more false negatives.
+--
+--     AUC is the area under this ROC curve. Therefore, AUC provides an
+--     aggregated measure of the model performance across all possible
+--     classification thresholds. AUC scores vary between 0 and 1. A score
+--     of 1 indicates perfect accuracy, and a score of one half (0.5)
+--     indicates that the prediction is not better than a random
+--     classifier.
+--
+-- [BalancedAccuracy]
+--     @BalancedAccuracy@ is a metric that measures the ratio of accurate
+--     predictions to all predictions. This ratio is calculated after
+--     normalizing true positives (TP) and true negatives (TN) by the total
+--     number of positive (P) and negative (N) values. It is used in both
+--     binary and multiclass classification and is defined as follows:
+--     0.5*((TP\/P)+(TN\/N)), with values ranging from 0 to 1.
+--     @BalancedAccuracy@ gives a better measure of accuracy when the
+--     number of positives or negatives differ greatly from each other in
+--     an imbalanced dataset. For example, when only 1% of email is spam.
+--
+-- [F1]
+--     The @F1@ score is the harmonic mean of the precision and recall,
+--     defined as follows: F1 = 2 * (precision * recall) \/ (precision +
+--     recall). It is used for binary classification into classes
+--     traditionally referred to as positive and negative. Predictions are
+--     said to be true when they match their actual (correct) class, and
+--     false when they do not.
+--
+--     Precision is the ratio of the true positive predictions to all
+--     positive predictions, and it includes the false positives in a
+--     dataset. Precision measures the quality of the prediction when it
+--     predicts the positive class.
+--
+--     Recall (or sensitivity) is the ratio of the true positive
+--     predictions to all actual positive instances. Recall measures how
+--     completely a model predicts the actual class members in a dataset.
+--
+--     F1 scores vary between 0 and 1. A score of 1 indicates the best
+--     possible performance, and 0 indicates the worst.
+--
+-- [F1macro]
+--     The @F1macro@ score applies F1 scoring to multiclass classification
+--     problems. It does this by calculating the precision and recall, and
+--     then taking their harmonic mean to calculate the F1 score for each
+--     class. Lastly, the F1macro averages the individual scores to obtain
+--     the @F1macro@ score. @F1macro@ scores vary between 0 and 1. A score
+--     of 1 indicates the best possible performance, and 0 indicates the
+--     worst.
+--
+-- [MAE]
+--     The mean absolute error (MAE) is a measure of how different the
+--     predicted and actual values are, when they\'re averaged over all
+--     values. MAE is commonly used in regression analysis to understand
+--     model prediction error. If there is linear regression, MAE
+--     represents the average distance from a predicted line to the actual
+--     value. MAE is defined as the sum of absolute errors divided by the
+--     number of observations. Values range from 0 to infinity, with
+--     smaller numbers indicating a better model fit to the data.
+--
+-- [MSE]
+--     The mean squared error (MSE) is the average of the squared
+--     differences between the predicted and actual values. It is used for
+--     regression. MSE values are always positive. The better a model is at
+--     predicting the actual values, the smaller the MSE value is
+--
+-- [Precision]
+--     Precision measures how well an algorithm predicts the true positives
+--     (TP) out of all of the positives that it identifies. It is defined
+--     as follows: Precision = TP\/(TP+FP), with values ranging from zero
+--     (0) to one (1), and is used in binary classification. Precision is
+--     an important metric when the cost of a false positive is high. For
+--     example, the cost of a false positive is very high if an airplane
+--     safety system is falsely deemed safe to fly. A false positive (FP)
+--     reflects a positive prediction that is actually negative in the
+--     data.
+--
+-- [PrecisionMacro]
+--     The precision macro computes precision for multiclass classification
+--     problems. It does this by calculating precision for each class and
+--     averaging scores to obtain precision for several classes.
+--     @PrecisionMacro@ scores range from zero (0) to one (1). Higher
+--     scores reflect the model\'s ability to predict true positives (TP)
+--     out of all of the positives that it identifies, averaged across
+--     multiple classes.
+--
+-- [R2]
+--     R2, also known as the coefficient of determination, is used in
+--     regression to quantify how much a model can explain the variance of
+--     a dependent variable. Values range from one (1) to negative one
+--     (-1). Higher numbers indicate a higher fraction of explained
+--     variability. @R2@ values close to zero (0) indicate that very little
+--     of the dependent variable can be explained by the model. Negative
+--     values indicate a poor fit and that the model is outperformed by a
+--     constant function. For linear regression, this is a horizontal line.
+--
+-- [Recall]
+--     Recall measures how well an algorithm correctly predicts all of the
+--     true positives (TP) in a dataset. A true positive is a positive
+--     prediction that is also an actual positive value in the data. Recall
+--     is defined as follows: Recall = TP\/(TP+FN), with values ranging
+--     from 0 to 1. Higher scores reflect a better ability of the model to
+--     predict true positives (TP) in the data, and is used in binary
+--     classification.
+--
+--     Recall is important when testing for cancer because it\'s used to
+--     find all of the true positives. A false positive (FP) reflects a
+--     positive prediction that is actually negative in the data. It is
+--     often insufficient to measure only recall, because predicting every
+--     output as a true positive will yield a perfect recall score.
+--
+-- [RecallMacro]
+--     The RecallMacro computes recall for multiclass classification
+--     problems by calculating recall for each class and averaging scores
+--     to obtain recall for several classes. RecallMacro scores range from
+--     0 to 1. Higher scores reflect the model\'s ability to predict true
+--     positives (TP) in a dataset. Whereas, a true positive reflects a
+--     positive prediction that is also an actual positive value in the
+--     data. It is often insufficient to measure only recall, because
+--     predicting every output as a true positive will yield a perfect
+--     recall score.
+--
+-- [RMSE]
+--     Root mean squared error (RMSE) measures the square root of the
+--     squared difference between predicted and actual values, and it\'s
+--     averaged over all values. It is used in regression analysis to
+--     understand model prediction error. It\'s an important metric to
+--     indicate the presence of large model errors and outliers. Values
+--     range from zero (0) to infinity, with smaller numbers indicating a
+--     better model fit to the data. RMSE is dependent on scale, and should
+--     not be used to compare datasets of different sizes.
+--
+-- If you do not specify a metric explicitly, the default behavior is to
+-- automatically use:
+--
+-- -   @MSE@: for regression.
+--
+-- -   @F1@: for binary classification
+--
+-- -   @Accuracy@: for multiclass classification.
+autoMLJobObjective_metricName :: Lens.Lens' AutoMLJobObjective AutoMLMetricEnum
+autoMLJobObjective_metricName = Lens.lens (\AutoMLJobObjective' {metricName} -> metricName) (\s@AutoMLJobObjective' {} a -> s {metricName = a} :: AutoMLJobObjective)
+
+instance Data.FromJSON AutoMLJobObjective where
+  parseJSON =
+    Data.withObject
+      "AutoMLJobObjective"
+      ( \x ->
+          AutoMLJobObjective'
+            Prelude.<$> (x Data..: "MetricName")
+      )
+
+instance Prelude.Hashable AutoMLJobObjective where
+  hashWithSalt _salt AutoMLJobObjective' {..} =
+    _salt `Prelude.hashWithSalt` metricName
+
+instance Prelude.NFData AutoMLJobObjective where
+  rnf AutoMLJobObjective' {..} = Prelude.rnf metricName
+
+instance Data.ToJSON AutoMLJobObjective where
+  toJSON AutoMLJobObjective' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("MetricName" Data..= metricName)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobObjectiveType.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobObjectiveType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobObjectiveType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLJobObjectiveType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobObjectiveType
+  ( AutoMLJobObjectiveType
+      ( ..,
+        AutoMLJobObjectiveType_Maximize,
+        AutoMLJobObjectiveType_Minimize
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLJobObjectiveType = AutoMLJobObjectiveType'
+  { fromAutoMLJobObjectiveType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLJobObjectiveType_Maximize :: AutoMLJobObjectiveType
+pattern AutoMLJobObjectiveType_Maximize = AutoMLJobObjectiveType' "Maximize"
+
+pattern AutoMLJobObjectiveType_Minimize :: AutoMLJobObjectiveType
+pattern AutoMLJobObjectiveType_Minimize = AutoMLJobObjectiveType' "Minimize"
+
+{-# COMPLETE
+  AutoMLJobObjectiveType_Maximize,
+  AutoMLJobObjectiveType_Minimize,
+  AutoMLJobObjectiveType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobSecondaryStatus.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobSecondaryStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobSecondaryStatus.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLJobSecondaryStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobSecondaryStatus
+  ( AutoMLJobSecondaryStatus
+      ( ..,
+        AutoMLJobSecondaryStatus_AnalyzingData,
+        AutoMLJobSecondaryStatus_CandidateDefinitionsGenerated,
+        AutoMLJobSecondaryStatus_Completed,
+        AutoMLJobSecondaryStatus_DeployingModel,
+        AutoMLJobSecondaryStatus_ExplainabilityError,
+        AutoMLJobSecondaryStatus_Failed,
+        AutoMLJobSecondaryStatus_FeatureEngineering,
+        AutoMLJobSecondaryStatus_GeneratingExplainabilityReport,
+        AutoMLJobSecondaryStatus_GeneratingModelInsightsReport,
+        AutoMLJobSecondaryStatus_MaxAutoMLJobRuntimeReached,
+        AutoMLJobSecondaryStatus_MaxCandidatesReached,
+        AutoMLJobSecondaryStatus_ModelDeploymentError,
+        AutoMLJobSecondaryStatus_ModelInsightsError,
+        AutoMLJobSecondaryStatus_ModelTuning,
+        AutoMLJobSecondaryStatus_Starting,
+        AutoMLJobSecondaryStatus_Stopped,
+        AutoMLJobSecondaryStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLJobSecondaryStatus = AutoMLJobSecondaryStatus'
+  { fromAutoMLJobSecondaryStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLJobSecondaryStatus_AnalyzingData :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_AnalyzingData = AutoMLJobSecondaryStatus' "AnalyzingData"
+
+pattern AutoMLJobSecondaryStatus_CandidateDefinitionsGenerated :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_CandidateDefinitionsGenerated = AutoMLJobSecondaryStatus' "CandidateDefinitionsGenerated"
+
+pattern AutoMLJobSecondaryStatus_Completed :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_Completed = AutoMLJobSecondaryStatus' "Completed"
+
+pattern AutoMLJobSecondaryStatus_DeployingModel :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_DeployingModel = AutoMLJobSecondaryStatus' "DeployingModel"
+
+pattern AutoMLJobSecondaryStatus_ExplainabilityError :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_ExplainabilityError = AutoMLJobSecondaryStatus' "ExplainabilityError"
+
+pattern AutoMLJobSecondaryStatus_Failed :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_Failed = AutoMLJobSecondaryStatus' "Failed"
+
+pattern AutoMLJobSecondaryStatus_FeatureEngineering :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_FeatureEngineering = AutoMLJobSecondaryStatus' "FeatureEngineering"
+
+pattern AutoMLJobSecondaryStatus_GeneratingExplainabilityReport :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_GeneratingExplainabilityReport = AutoMLJobSecondaryStatus' "GeneratingExplainabilityReport"
+
+pattern AutoMLJobSecondaryStatus_GeneratingModelInsightsReport :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_GeneratingModelInsightsReport = AutoMLJobSecondaryStatus' "GeneratingModelInsightsReport"
+
+pattern AutoMLJobSecondaryStatus_MaxAutoMLJobRuntimeReached :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_MaxAutoMLJobRuntimeReached = AutoMLJobSecondaryStatus' "MaxAutoMLJobRuntimeReached"
+
+pattern AutoMLJobSecondaryStatus_MaxCandidatesReached :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_MaxCandidatesReached = AutoMLJobSecondaryStatus' "MaxCandidatesReached"
+
+pattern AutoMLJobSecondaryStatus_ModelDeploymentError :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_ModelDeploymentError = AutoMLJobSecondaryStatus' "ModelDeploymentError"
+
+pattern AutoMLJobSecondaryStatus_ModelInsightsError :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_ModelInsightsError = AutoMLJobSecondaryStatus' "ModelInsightsError"
+
+pattern AutoMLJobSecondaryStatus_ModelTuning :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_ModelTuning = AutoMLJobSecondaryStatus' "ModelTuning"
+
+pattern AutoMLJobSecondaryStatus_Starting :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_Starting = AutoMLJobSecondaryStatus' "Starting"
+
+pattern AutoMLJobSecondaryStatus_Stopped :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_Stopped = AutoMLJobSecondaryStatus' "Stopped"
+
+pattern AutoMLJobSecondaryStatus_Stopping :: AutoMLJobSecondaryStatus
+pattern AutoMLJobSecondaryStatus_Stopping = AutoMLJobSecondaryStatus' "Stopping"
+
+{-# COMPLETE
+  AutoMLJobSecondaryStatus_AnalyzingData,
+  AutoMLJobSecondaryStatus_CandidateDefinitionsGenerated,
+  AutoMLJobSecondaryStatus_Completed,
+  AutoMLJobSecondaryStatus_DeployingModel,
+  AutoMLJobSecondaryStatus_ExplainabilityError,
+  AutoMLJobSecondaryStatus_Failed,
+  AutoMLJobSecondaryStatus_FeatureEngineering,
+  AutoMLJobSecondaryStatus_GeneratingExplainabilityReport,
+  AutoMLJobSecondaryStatus_GeneratingModelInsightsReport,
+  AutoMLJobSecondaryStatus_MaxAutoMLJobRuntimeReached,
+  AutoMLJobSecondaryStatus_MaxCandidatesReached,
+  AutoMLJobSecondaryStatus_ModelDeploymentError,
+  AutoMLJobSecondaryStatus_ModelInsightsError,
+  AutoMLJobSecondaryStatus_ModelTuning,
+  AutoMLJobSecondaryStatus_Starting,
+  AutoMLJobSecondaryStatus_Stopped,
+  AutoMLJobSecondaryStatus_Stopping,
+  AutoMLJobSecondaryStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobStatus.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobStatus
+  ( AutoMLJobStatus
+      ( ..,
+        AutoMLJobStatus_Completed,
+        AutoMLJobStatus_Failed,
+        AutoMLJobStatus_InProgress,
+        AutoMLJobStatus_Stopped,
+        AutoMLJobStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLJobStatus = AutoMLJobStatus'
+  { fromAutoMLJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLJobStatus_Completed :: AutoMLJobStatus
+pattern AutoMLJobStatus_Completed = AutoMLJobStatus' "Completed"
+
+pattern AutoMLJobStatus_Failed :: AutoMLJobStatus
+pattern AutoMLJobStatus_Failed = AutoMLJobStatus' "Failed"
+
+pattern AutoMLJobStatus_InProgress :: AutoMLJobStatus
+pattern AutoMLJobStatus_InProgress = AutoMLJobStatus' "InProgress"
+
+pattern AutoMLJobStatus_Stopped :: AutoMLJobStatus
+pattern AutoMLJobStatus_Stopped = AutoMLJobStatus' "Stopped"
+
+pattern AutoMLJobStatus_Stopping :: AutoMLJobStatus
+pattern AutoMLJobStatus_Stopping = AutoMLJobStatus' "Stopping"
+
+{-# COMPLETE
+  AutoMLJobStatus_Completed,
+  AutoMLJobStatus_Failed,
+  AutoMLJobStatus_InProgress,
+  AutoMLJobStatus_Stopped,
+  AutoMLJobStatus_Stopping,
+  AutoMLJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobStepMetadata.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobStepMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLJobStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobStepMetadata 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
+
+-- | Metadata for an AutoML job step.
+--
+-- /See:/ 'newAutoMLJobStepMetadata' smart constructor.
+data AutoMLJobStepMetadata = AutoMLJobStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the AutoML job.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLJobStepMetadata' 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:
+--
+-- 'arn', 'autoMLJobStepMetadata_arn' - The Amazon Resource Name (ARN) of the AutoML job.
+newAutoMLJobStepMetadata ::
+  AutoMLJobStepMetadata
+newAutoMLJobStepMetadata =
+  AutoMLJobStepMetadata' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the AutoML job.
+autoMLJobStepMetadata_arn :: Lens.Lens' AutoMLJobStepMetadata (Prelude.Maybe Prelude.Text)
+autoMLJobStepMetadata_arn = Lens.lens (\AutoMLJobStepMetadata' {arn} -> arn) (\s@AutoMLJobStepMetadata' {} a -> s {arn = a} :: AutoMLJobStepMetadata)
+
+instance Data.FromJSON AutoMLJobStepMetadata where
+  parseJSON =
+    Data.withObject
+      "AutoMLJobStepMetadata"
+      ( \x ->
+          AutoMLJobStepMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable AutoMLJobStepMetadata where
+  hashWithSalt _salt AutoMLJobStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData AutoMLJobStepMetadata where
+  rnf AutoMLJobStepMetadata' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLJobSummary.hs b/gen/Amazonka/SageMaker/Types/AutoMLJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLJobSummary.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLJobSummary 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 Amazonka.SageMaker.Types.AutoMLJobSecondaryStatus
+import Amazonka.SageMaker.Types.AutoMLJobStatus
+import Amazonka.SageMaker.Types.AutoMLPartialFailureReason
+
+-- | Provides a summary about an AutoML job.
+--
+-- /See:/ 'newAutoMLJobSummary' smart constructor.
+data AutoMLJobSummary = AutoMLJobSummary'
+  { -- | The end time of an AutoML job.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The failure reason of an AutoML job.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The list of reasons for partial failures within an AutoML job.
+    partialFailureReasons :: Prelude.Maybe (Prelude.NonEmpty AutoMLPartialFailureReason),
+    -- | The name of the AutoML job you are requesting.
+    autoMLJobName :: Prelude.Text,
+    -- | The ARN of the AutoML job.
+    autoMLJobArn :: Prelude.Text,
+    -- | The status of the AutoML job.
+    autoMLJobStatus :: AutoMLJobStatus,
+    -- | The secondary status of the AutoML job.
+    autoMLJobSecondaryStatus :: AutoMLJobSecondaryStatus,
+    -- | When the AutoML job was created.
+    creationTime :: Data.POSIX,
+    -- | When the AutoML job was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLJobSummary' 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:
+--
+-- 'endTime', 'autoMLJobSummary_endTime' - The end time of an AutoML job.
+--
+-- 'failureReason', 'autoMLJobSummary_failureReason' - The failure reason of an AutoML job.
+--
+-- 'partialFailureReasons', 'autoMLJobSummary_partialFailureReasons' - The list of reasons for partial failures within an AutoML job.
+--
+-- 'autoMLJobName', 'autoMLJobSummary_autoMLJobName' - The name of the AutoML job you are requesting.
+--
+-- 'autoMLJobArn', 'autoMLJobSummary_autoMLJobArn' - The ARN of the AutoML job.
+--
+-- 'autoMLJobStatus', 'autoMLJobSummary_autoMLJobStatus' - The status of the AutoML job.
+--
+-- 'autoMLJobSecondaryStatus', 'autoMLJobSummary_autoMLJobSecondaryStatus' - The secondary status of the AutoML job.
+--
+-- 'creationTime', 'autoMLJobSummary_creationTime' - When the AutoML job was created.
+--
+-- 'lastModifiedTime', 'autoMLJobSummary_lastModifiedTime' - When the AutoML job was last modified.
+newAutoMLJobSummary ::
+  -- | 'autoMLJobName'
+  Prelude.Text ->
+  -- | 'autoMLJobArn'
+  Prelude.Text ->
+  -- | 'autoMLJobStatus'
+  AutoMLJobStatus ->
+  -- | 'autoMLJobSecondaryStatus'
+  AutoMLJobSecondaryStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  AutoMLJobSummary
+newAutoMLJobSummary
+  pAutoMLJobName_
+  pAutoMLJobArn_
+  pAutoMLJobStatus_
+  pAutoMLJobSecondaryStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    AutoMLJobSummary'
+      { endTime = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        partialFailureReasons = Prelude.Nothing,
+        autoMLJobName = pAutoMLJobName_,
+        autoMLJobArn = pAutoMLJobArn_,
+        autoMLJobStatus = pAutoMLJobStatus_,
+        autoMLJobSecondaryStatus =
+          pAutoMLJobSecondaryStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | The end time of an AutoML job.
+autoMLJobSummary_endTime :: Lens.Lens' AutoMLJobSummary (Prelude.Maybe Prelude.UTCTime)
+autoMLJobSummary_endTime = Lens.lens (\AutoMLJobSummary' {endTime} -> endTime) (\s@AutoMLJobSummary' {} a -> s {endTime = a} :: AutoMLJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The failure reason of an AutoML job.
+autoMLJobSummary_failureReason :: Lens.Lens' AutoMLJobSummary (Prelude.Maybe Prelude.Text)
+autoMLJobSummary_failureReason = Lens.lens (\AutoMLJobSummary' {failureReason} -> failureReason) (\s@AutoMLJobSummary' {} a -> s {failureReason = a} :: AutoMLJobSummary)
+
+-- | The list of reasons for partial failures within an AutoML job.
+autoMLJobSummary_partialFailureReasons :: Lens.Lens' AutoMLJobSummary (Prelude.Maybe (Prelude.NonEmpty AutoMLPartialFailureReason))
+autoMLJobSummary_partialFailureReasons = Lens.lens (\AutoMLJobSummary' {partialFailureReasons} -> partialFailureReasons) (\s@AutoMLJobSummary' {} a -> s {partialFailureReasons = a} :: AutoMLJobSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the AutoML job you are requesting.
+autoMLJobSummary_autoMLJobName :: Lens.Lens' AutoMLJobSummary Prelude.Text
+autoMLJobSummary_autoMLJobName = Lens.lens (\AutoMLJobSummary' {autoMLJobName} -> autoMLJobName) (\s@AutoMLJobSummary' {} a -> s {autoMLJobName = a} :: AutoMLJobSummary)
+
+-- | The ARN of the AutoML job.
+autoMLJobSummary_autoMLJobArn :: Lens.Lens' AutoMLJobSummary Prelude.Text
+autoMLJobSummary_autoMLJobArn = Lens.lens (\AutoMLJobSummary' {autoMLJobArn} -> autoMLJobArn) (\s@AutoMLJobSummary' {} a -> s {autoMLJobArn = a} :: AutoMLJobSummary)
+
+-- | The status of the AutoML job.
+autoMLJobSummary_autoMLJobStatus :: Lens.Lens' AutoMLJobSummary AutoMLJobStatus
+autoMLJobSummary_autoMLJobStatus = Lens.lens (\AutoMLJobSummary' {autoMLJobStatus} -> autoMLJobStatus) (\s@AutoMLJobSummary' {} a -> s {autoMLJobStatus = a} :: AutoMLJobSummary)
+
+-- | The secondary status of the AutoML job.
+autoMLJobSummary_autoMLJobSecondaryStatus :: Lens.Lens' AutoMLJobSummary AutoMLJobSecondaryStatus
+autoMLJobSummary_autoMLJobSecondaryStatus = Lens.lens (\AutoMLJobSummary' {autoMLJobSecondaryStatus} -> autoMLJobSecondaryStatus) (\s@AutoMLJobSummary' {} a -> s {autoMLJobSecondaryStatus = a} :: AutoMLJobSummary)
+
+-- | When the AutoML job was created.
+autoMLJobSummary_creationTime :: Lens.Lens' AutoMLJobSummary Prelude.UTCTime
+autoMLJobSummary_creationTime = Lens.lens (\AutoMLJobSummary' {creationTime} -> creationTime) (\s@AutoMLJobSummary' {} a -> s {creationTime = a} :: AutoMLJobSummary) Prelude.. Data._Time
+
+-- | When the AutoML job was last modified.
+autoMLJobSummary_lastModifiedTime :: Lens.Lens' AutoMLJobSummary Prelude.UTCTime
+autoMLJobSummary_lastModifiedTime = Lens.lens (\AutoMLJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@AutoMLJobSummary' {} a -> s {lastModifiedTime = a} :: AutoMLJobSummary) Prelude.. Data._Time
+
+instance Data.FromJSON AutoMLJobSummary where
+  parseJSON =
+    Data.withObject
+      "AutoMLJobSummary"
+      ( \x ->
+          AutoMLJobSummary'
+            Prelude.<$> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "PartialFailureReasons")
+            Prelude.<*> (x Data..: "AutoMLJobName")
+            Prelude.<*> (x Data..: "AutoMLJobArn")
+            Prelude.<*> (x Data..: "AutoMLJobStatus")
+            Prelude.<*> (x Data..: "AutoMLJobSecondaryStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable AutoMLJobSummary where
+  hashWithSalt _salt AutoMLJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` partialFailureReasons
+      `Prelude.hashWithSalt` autoMLJobName
+      `Prelude.hashWithSalt` autoMLJobArn
+      `Prelude.hashWithSalt` autoMLJobStatus
+      `Prelude.hashWithSalt` autoMLJobSecondaryStatus
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData AutoMLJobSummary where
+  rnf AutoMLJobSummary' {..} =
+    Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf partialFailureReasons
+      `Prelude.seq` Prelude.rnf autoMLJobName
+      `Prelude.seq` Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf autoMLJobStatus
+      `Prelude.seq` Prelude.rnf autoMLJobSecondaryStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLMetricEnum.hs b/gen/Amazonka/SageMaker/Types/AutoMLMetricEnum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLMetricEnum.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLMetricEnum
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLMetricEnum
+  ( AutoMLMetricEnum
+      ( ..,
+        AutoMLMetricEnum_AUC,
+        AutoMLMetricEnum_Accuracy,
+        AutoMLMetricEnum_BalancedAccuracy,
+        AutoMLMetricEnum_F1,
+        AutoMLMetricEnum_F1macro,
+        AutoMLMetricEnum_MAE,
+        AutoMLMetricEnum_MSE,
+        AutoMLMetricEnum_Precision,
+        AutoMLMetricEnum_PrecisionMacro,
+        AutoMLMetricEnum_R2,
+        AutoMLMetricEnum_RMSE,
+        AutoMLMetricEnum_Recall,
+        AutoMLMetricEnum_RecallMacro
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLMetricEnum = AutoMLMetricEnum'
+  { fromAutoMLMetricEnum ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLMetricEnum_AUC :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_AUC = AutoMLMetricEnum' "AUC"
+
+pattern AutoMLMetricEnum_Accuracy :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_Accuracy = AutoMLMetricEnum' "Accuracy"
+
+pattern AutoMLMetricEnum_BalancedAccuracy :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_BalancedAccuracy = AutoMLMetricEnum' "BalancedAccuracy"
+
+pattern AutoMLMetricEnum_F1 :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_F1 = AutoMLMetricEnum' "F1"
+
+pattern AutoMLMetricEnum_F1macro :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_F1macro = AutoMLMetricEnum' "F1macro"
+
+pattern AutoMLMetricEnum_MAE :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_MAE = AutoMLMetricEnum' "MAE"
+
+pattern AutoMLMetricEnum_MSE :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_MSE = AutoMLMetricEnum' "MSE"
+
+pattern AutoMLMetricEnum_Precision :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_Precision = AutoMLMetricEnum' "Precision"
+
+pattern AutoMLMetricEnum_PrecisionMacro :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_PrecisionMacro = AutoMLMetricEnum' "PrecisionMacro"
+
+pattern AutoMLMetricEnum_R2 :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_R2 = AutoMLMetricEnum' "R2"
+
+pattern AutoMLMetricEnum_RMSE :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_RMSE = AutoMLMetricEnum' "RMSE"
+
+pattern AutoMLMetricEnum_Recall :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_Recall = AutoMLMetricEnum' "Recall"
+
+pattern AutoMLMetricEnum_RecallMacro :: AutoMLMetricEnum
+pattern AutoMLMetricEnum_RecallMacro = AutoMLMetricEnum' "RecallMacro"
+
+{-# COMPLETE
+  AutoMLMetricEnum_AUC,
+  AutoMLMetricEnum_Accuracy,
+  AutoMLMetricEnum_BalancedAccuracy,
+  AutoMLMetricEnum_F1,
+  AutoMLMetricEnum_F1macro,
+  AutoMLMetricEnum_MAE,
+  AutoMLMetricEnum_MSE,
+  AutoMLMetricEnum_Precision,
+  AutoMLMetricEnum_PrecisionMacro,
+  AutoMLMetricEnum_R2,
+  AutoMLMetricEnum_RMSE,
+  AutoMLMetricEnum_Recall,
+  AutoMLMetricEnum_RecallMacro,
+  AutoMLMetricEnum'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLMetricExtendedEnum.hs b/gen/Amazonka/SageMaker/Types/AutoMLMetricExtendedEnum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLMetricExtendedEnum.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLMetricExtendedEnum
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLMetricExtendedEnum
+  ( AutoMLMetricExtendedEnum
+      ( ..,
+        AutoMLMetricExtendedEnum_AUC,
+        AutoMLMetricExtendedEnum_Accuracy,
+        AutoMLMetricExtendedEnum_BalancedAccuracy,
+        AutoMLMetricExtendedEnum_F1,
+        AutoMLMetricExtendedEnum_F1macro,
+        AutoMLMetricExtendedEnum_InferenceLatency,
+        AutoMLMetricExtendedEnum_LogLoss,
+        AutoMLMetricExtendedEnum_MAE,
+        AutoMLMetricExtendedEnum_MSE,
+        AutoMLMetricExtendedEnum_Precision,
+        AutoMLMetricExtendedEnum_PrecisionMacro,
+        AutoMLMetricExtendedEnum_R2,
+        AutoMLMetricExtendedEnum_RMSE,
+        AutoMLMetricExtendedEnum_Recall,
+        AutoMLMetricExtendedEnum_RecallMacro
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLMetricExtendedEnum = AutoMLMetricExtendedEnum'
+  { fromAutoMLMetricExtendedEnum ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLMetricExtendedEnum_AUC :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_AUC = AutoMLMetricExtendedEnum' "AUC"
+
+pattern AutoMLMetricExtendedEnum_Accuracy :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_Accuracy = AutoMLMetricExtendedEnum' "Accuracy"
+
+pattern AutoMLMetricExtendedEnum_BalancedAccuracy :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_BalancedAccuracy = AutoMLMetricExtendedEnum' "BalancedAccuracy"
+
+pattern AutoMLMetricExtendedEnum_F1 :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_F1 = AutoMLMetricExtendedEnum' "F1"
+
+pattern AutoMLMetricExtendedEnum_F1macro :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_F1macro = AutoMLMetricExtendedEnum' "F1macro"
+
+pattern AutoMLMetricExtendedEnum_InferenceLatency :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_InferenceLatency = AutoMLMetricExtendedEnum' "InferenceLatency"
+
+pattern AutoMLMetricExtendedEnum_LogLoss :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_LogLoss = AutoMLMetricExtendedEnum' "LogLoss"
+
+pattern AutoMLMetricExtendedEnum_MAE :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_MAE = AutoMLMetricExtendedEnum' "MAE"
+
+pattern AutoMLMetricExtendedEnum_MSE :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_MSE = AutoMLMetricExtendedEnum' "MSE"
+
+pattern AutoMLMetricExtendedEnum_Precision :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_Precision = AutoMLMetricExtendedEnum' "Precision"
+
+pattern AutoMLMetricExtendedEnum_PrecisionMacro :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_PrecisionMacro = AutoMLMetricExtendedEnum' "PrecisionMacro"
+
+pattern AutoMLMetricExtendedEnum_R2 :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_R2 = AutoMLMetricExtendedEnum' "R2"
+
+pattern AutoMLMetricExtendedEnum_RMSE :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_RMSE = AutoMLMetricExtendedEnum' "RMSE"
+
+pattern AutoMLMetricExtendedEnum_Recall :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_Recall = AutoMLMetricExtendedEnum' "Recall"
+
+pattern AutoMLMetricExtendedEnum_RecallMacro :: AutoMLMetricExtendedEnum
+pattern AutoMLMetricExtendedEnum_RecallMacro = AutoMLMetricExtendedEnum' "RecallMacro"
+
+{-# COMPLETE
+  AutoMLMetricExtendedEnum_AUC,
+  AutoMLMetricExtendedEnum_Accuracy,
+  AutoMLMetricExtendedEnum_BalancedAccuracy,
+  AutoMLMetricExtendedEnum_F1,
+  AutoMLMetricExtendedEnum_F1macro,
+  AutoMLMetricExtendedEnum_InferenceLatency,
+  AutoMLMetricExtendedEnum_LogLoss,
+  AutoMLMetricExtendedEnum_MAE,
+  AutoMLMetricExtendedEnum_MSE,
+  AutoMLMetricExtendedEnum_Precision,
+  AutoMLMetricExtendedEnum_PrecisionMacro,
+  AutoMLMetricExtendedEnum_R2,
+  AutoMLMetricExtendedEnum_RMSE,
+  AutoMLMetricExtendedEnum_Recall,
+  AutoMLMetricExtendedEnum_RecallMacro,
+  AutoMLMetricExtendedEnum'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLMode.hs b/gen/Amazonka/SageMaker/Types/AutoMLMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLMode.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLMode
+  ( AutoMLMode
+      ( ..,
+        AutoMLMode_AUTO,
+        AutoMLMode_ENSEMBLING,
+        AutoMLMode_HYPERPARAMETER_TUNING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLMode = AutoMLMode'
+  { fromAutoMLMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLMode_AUTO :: AutoMLMode
+pattern AutoMLMode_AUTO = AutoMLMode' "AUTO"
+
+pattern AutoMLMode_ENSEMBLING :: AutoMLMode
+pattern AutoMLMode_ENSEMBLING = AutoMLMode' "ENSEMBLING"
+
+pattern AutoMLMode_HYPERPARAMETER_TUNING :: AutoMLMode
+pattern AutoMLMode_HYPERPARAMETER_TUNING = AutoMLMode' "HYPERPARAMETER_TUNING"
+
+{-# COMPLETE
+  AutoMLMode_AUTO,
+  AutoMLMode_ENSEMBLING,
+  AutoMLMode_HYPERPARAMETER_TUNING,
+  AutoMLMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLOutputDataConfig.hs b/gen/Amazonka/SageMaker/Types/AutoMLOutputDataConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLOutputDataConfig.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLOutputDataConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLOutputDataConfig 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
+
+-- | The output data configuration.
+--
+-- /See:/ 'newAutoMLOutputDataConfig' smart constructor.
+data AutoMLOutputDataConfig = AutoMLOutputDataConfig'
+  { -- | The Key Management Service (KMS) encryption key ID.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 output path. Must be 128 characters or less.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLOutputDataConfig' 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:
+--
+-- 'kmsKeyId', 'autoMLOutputDataConfig_kmsKeyId' - The Key Management Service (KMS) encryption key ID.
+--
+-- 's3OutputPath', 'autoMLOutputDataConfig_s3OutputPath' - The Amazon S3 output path. Must be 128 characters or less.
+newAutoMLOutputDataConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  AutoMLOutputDataConfig
+newAutoMLOutputDataConfig pS3OutputPath_ =
+  AutoMLOutputDataConfig'
+    { kmsKeyId = Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | The Key Management Service (KMS) encryption key ID.
+autoMLOutputDataConfig_kmsKeyId :: Lens.Lens' AutoMLOutputDataConfig (Prelude.Maybe Prelude.Text)
+autoMLOutputDataConfig_kmsKeyId = Lens.lens (\AutoMLOutputDataConfig' {kmsKeyId} -> kmsKeyId) (\s@AutoMLOutputDataConfig' {} a -> s {kmsKeyId = a} :: AutoMLOutputDataConfig)
+
+-- | The Amazon S3 output path. Must be 128 characters or less.
+autoMLOutputDataConfig_s3OutputPath :: Lens.Lens' AutoMLOutputDataConfig Prelude.Text
+autoMLOutputDataConfig_s3OutputPath = Lens.lens (\AutoMLOutputDataConfig' {s3OutputPath} -> s3OutputPath) (\s@AutoMLOutputDataConfig' {} a -> s {s3OutputPath = a} :: AutoMLOutputDataConfig)
+
+instance Data.FromJSON AutoMLOutputDataConfig where
+  parseJSON =
+    Data.withObject
+      "AutoMLOutputDataConfig"
+      ( \x ->
+          AutoMLOutputDataConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable AutoMLOutputDataConfig where
+  hashWithSalt _salt AutoMLOutputDataConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData AutoMLOutputDataConfig where
+  rnf AutoMLOutputDataConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON AutoMLOutputDataConfig where
+  toJSON AutoMLOutputDataConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLPartialFailureReason.hs b/gen/Amazonka/SageMaker/Types/AutoMLPartialFailureReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLPartialFailureReason.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLPartialFailureReason
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLPartialFailureReason 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
+
+-- | The reason for a partial failure of an AutoML job.
+--
+-- /See:/ 'newAutoMLPartialFailureReason' smart constructor.
+data AutoMLPartialFailureReason = AutoMLPartialFailureReason'
+  { -- | The message containing the reason for a partial failure of an AutoML
+    -- job.
+    partialFailureMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLPartialFailureReason' 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:
+--
+-- 'partialFailureMessage', 'autoMLPartialFailureReason_partialFailureMessage' - The message containing the reason for a partial failure of an AutoML
+-- job.
+newAutoMLPartialFailureReason ::
+  AutoMLPartialFailureReason
+newAutoMLPartialFailureReason =
+  AutoMLPartialFailureReason'
+    { partialFailureMessage =
+        Prelude.Nothing
+    }
+
+-- | The message containing the reason for a partial failure of an AutoML
+-- job.
+autoMLPartialFailureReason_partialFailureMessage :: Lens.Lens' AutoMLPartialFailureReason (Prelude.Maybe Prelude.Text)
+autoMLPartialFailureReason_partialFailureMessage = Lens.lens (\AutoMLPartialFailureReason' {partialFailureMessage} -> partialFailureMessage) (\s@AutoMLPartialFailureReason' {} a -> s {partialFailureMessage = a} :: AutoMLPartialFailureReason)
+
+instance Data.FromJSON AutoMLPartialFailureReason where
+  parseJSON =
+    Data.withObject
+      "AutoMLPartialFailureReason"
+      ( \x ->
+          AutoMLPartialFailureReason'
+            Prelude.<$> (x Data..:? "PartialFailureMessage")
+      )
+
+instance Prelude.Hashable AutoMLPartialFailureReason where
+  hashWithSalt _salt AutoMLPartialFailureReason' {..} =
+    _salt `Prelude.hashWithSalt` partialFailureMessage
+
+instance Prelude.NFData AutoMLPartialFailureReason where
+  rnf AutoMLPartialFailureReason' {..} =
+    Prelude.rnf partialFailureMessage
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLS3DataSource.hs b/gen/Amazonka/SageMaker/Types/AutoMLS3DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLS3DataSource.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLS3DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLS3DataSource 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 Amazonka.SageMaker.Types.AutoMLS3DataType
+
+-- | The Amazon S3 data source.
+--
+-- /See:/ 'newAutoMLS3DataSource' smart constructor.
+data AutoMLS3DataSource = AutoMLS3DataSource'
+  { -- | The data type.
+    --
+    -- A ManifestFile should have the format shown below:
+    --
+    -- @[ {\"prefix\": \"s3:\/\/DOC-EXAMPLE-BUCKET\/DOC-EXAMPLE-FOLDER\/DOC-EXAMPLE-PREFIX\/\"}, @
+    --
+    -- @\"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-1\",@
+    --
+    -- @\"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-2\",@
+    --
+    -- @... \"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-N\" ]@
+    --
+    -- An S3Prefix should have the following format:
+    --
+    -- @s3:\/\/DOC-EXAMPLE-BUCKET\/DOC-EXAMPLE-FOLDER-OR-FILE@
+    s3DataType :: AutoMLS3DataType,
+    -- | The URL to the Amazon S3 data source.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLS3DataSource' 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:
+--
+-- 's3DataType', 'autoMLS3DataSource_s3DataType' - The data type.
+--
+-- A ManifestFile should have the format shown below:
+--
+-- @[ {\"prefix\": \"s3:\/\/DOC-EXAMPLE-BUCKET\/DOC-EXAMPLE-FOLDER\/DOC-EXAMPLE-PREFIX\/\"}, @
+--
+-- @\"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-1\",@
+--
+-- @\"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-2\",@
+--
+-- @... \"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-N\" ]@
+--
+-- An S3Prefix should have the following format:
+--
+-- @s3:\/\/DOC-EXAMPLE-BUCKET\/DOC-EXAMPLE-FOLDER-OR-FILE@
+--
+-- 's3Uri', 'autoMLS3DataSource_s3Uri' - The URL to the Amazon S3 data source.
+newAutoMLS3DataSource ::
+  -- | 's3DataType'
+  AutoMLS3DataType ->
+  -- | 's3Uri'
+  Prelude.Text ->
+  AutoMLS3DataSource
+newAutoMLS3DataSource pS3DataType_ pS3Uri_ =
+  AutoMLS3DataSource'
+    { s3DataType = pS3DataType_,
+      s3Uri = pS3Uri_
+    }
+
+-- | The data type.
+--
+-- A ManifestFile should have the format shown below:
+--
+-- @[ {\"prefix\": \"s3:\/\/DOC-EXAMPLE-BUCKET\/DOC-EXAMPLE-FOLDER\/DOC-EXAMPLE-PREFIX\/\"}, @
+--
+-- @\"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-1\",@
+--
+-- @\"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-2\",@
+--
+-- @... \"DOC-EXAMPLE-RELATIVE-PATH\/DOC-EXAMPLE-FOLDER\/DATA-N\" ]@
+--
+-- An S3Prefix should have the following format:
+--
+-- @s3:\/\/DOC-EXAMPLE-BUCKET\/DOC-EXAMPLE-FOLDER-OR-FILE@
+autoMLS3DataSource_s3DataType :: Lens.Lens' AutoMLS3DataSource AutoMLS3DataType
+autoMLS3DataSource_s3DataType = Lens.lens (\AutoMLS3DataSource' {s3DataType} -> s3DataType) (\s@AutoMLS3DataSource' {} a -> s {s3DataType = a} :: AutoMLS3DataSource)
+
+-- | The URL to the Amazon S3 data source.
+autoMLS3DataSource_s3Uri :: Lens.Lens' AutoMLS3DataSource Prelude.Text
+autoMLS3DataSource_s3Uri = Lens.lens (\AutoMLS3DataSource' {s3Uri} -> s3Uri) (\s@AutoMLS3DataSource' {} a -> s {s3Uri = a} :: AutoMLS3DataSource)
+
+instance Data.FromJSON AutoMLS3DataSource where
+  parseJSON =
+    Data.withObject
+      "AutoMLS3DataSource"
+      ( \x ->
+          AutoMLS3DataSource'
+            Prelude.<$> (x Data..: "S3DataType")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable AutoMLS3DataSource where
+  hashWithSalt _salt AutoMLS3DataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3DataType
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData AutoMLS3DataSource where
+  rnf AutoMLS3DataSource' {..} =
+    Prelude.rnf s3DataType
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON AutoMLS3DataSource where
+  toJSON AutoMLS3DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("S3DataType" Data..= s3DataType),
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLS3DataType.hs b/gen/Amazonka/SageMaker/Types/AutoMLS3DataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLS3DataType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLS3DataType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLS3DataType
+  ( AutoMLS3DataType
+      ( ..,
+        AutoMLS3DataType_ManifestFile,
+        AutoMLS3DataType_S3Prefix
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLS3DataType = AutoMLS3DataType'
+  { fromAutoMLS3DataType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLS3DataType_ManifestFile :: AutoMLS3DataType
+pattern AutoMLS3DataType_ManifestFile = AutoMLS3DataType' "ManifestFile"
+
+pattern AutoMLS3DataType_S3Prefix :: AutoMLS3DataType
+pattern AutoMLS3DataType_S3Prefix = AutoMLS3DataType' "S3Prefix"
+
+{-# COMPLETE
+  AutoMLS3DataType_ManifestFile,
+  AutoMLS3DataType_S3Prefix,
+  AutoMLS3DataType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLSecurityConfig.hs b/gen/Amazonka/SageMaker/Types/AutoMLSecurityConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLSecurityConfig.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoMLSecurityConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLSecurityConfig 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 Amazonka.SageMaker.Types.VpcConfig
+
+-- | Security options.
+--
+-- /See:/ 'newAutoMLSecurityConfig' smart constructor.
+data AutoMLSecurityConfig = AutoMLSecurityConfig'
+  { -- | Whether to use traffic encryption between the container layers.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | The key used to encrypt stored data.
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The VPC configuration.
+    vpcConfig :: Prelude.Maybe VpcConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoMLSecurityConfig' 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:
+--
+-- 'enableInterContainerTrafficEncryption', 'autoMLSecurityConfig_enableInterContainerTrafficEncryption' - Whether to use traffic encryption between the container layers.
+--
+-- 'volumeKmsKeyId', 'autoMLSecurityConfig_volumeKmsKeyId' - The key used to encrypt stored data.
+--
+-- 'vpcConfig', 'autoMLSecurityConfig_vpcConfig' - The VPC configuration.
+newAutoMLSecurityConfig ::
+  AutoMLSecurityConfig
+newAutoMLSecurityConfig =
+  AutoMLSecurityConfig'
+    { enableInterContainerTrafficEncryption =
+        Prelude.Nothing,
+      volumeKmsKeyId = Prelude.Nothing,
+      vpcConfig = Prelude.Nothing
+    }
+
+-- | Whether to use traffic encryption between the container layers.
+autoMLSecurityConfig_enableInterContainerTrafficEncryption :: Lens.Lens' AutoMLSecurityConfig (Prelude.Maybe Prelude.Bool)
+autoMLSecurityConfig_enableInterContainerTrafficEncryption = Lens.lens (\AutoMLSecurityConfig' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@AutoMLSecurityConfig' {} a -> s {enableInterContainerTrafficEncryption = a} :: AutoMLSecurityConfig)
+
+-- | The key used to encrypt stored data.
+autoMLSecurityConfig_volumeKmsKeyId :: Lens.Lens' AutoMLSecurityConfig (Prelude.Maybe Prelude.Text)
+autoMLSecurityConfig_volumeKmsKeyId = Lens.lens (\AutoMLSecurityConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@AutoMLSecurityConfig' {} a -> s {volumeKmsKeyId = a} :: AutoMLSecurityConfig)
+
+-- | The VPC configuration.
+autoMLSecurityConfig_vpcConfig :: Lens.Lens' AutoMLSecurityConfig (Prelude.Maybe VpcConfig)
+autoMLSecurityConfig_vpcConfig = Lens.lens (\AutoMLSecurityConfig' {vpcConfig} -> vpcConfig) (\s@AutoMLSecurityConfig' {} a -> s {vpcConfig = a} :: AutoMLSecurityConfig)
+
+instance Data.FromJSON AutoMLSecurityConfig where
+  parseJSON =
+    Data.withObject
+      "AutoMLSecurityConfig"
+      ( \x ->
+          AutoMLSecurityConfig'
+            Prelude.<$> (x Data..:? "EnableInterContainerTrafficEncryption")
+            Prelude.<*> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..:? "VpcConfig")
+      )
+
+instance Prelude.Hashable AutoMLSecurityConfig where
+  hashWithSalt _salt AutoMLSecurityConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableInterContainerTrafficEncryption
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` vpcConfig
+
+instance Prelude.NFData AutoMLSecurityConfig where
+  rnf AutoMLSecurityConfig' {..} =
+    Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf vpcConfig
+
+instance Data.ToJSON AutoMLSecurityConfig where
+  toJSON AutoMLSecurityConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableInterContainerTrafficEncryption" Data..=)
+              Prelude.<$> enableInterContainerTrafficEncryption,
+            ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLSortBy.hs b/gen/Amazonka/SageMaker/Types/AutoMLSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLSortBy
+  ( AutoMLSortBy
+      ( ..,
+        AutoMLSortBy_CreationTime,
+        AutoMLSortBy_Name,
+        AutoMLSortBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLSortBy = AutoMLSortBy'
+  { fromAutoMLSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLSortBy_CreationTime :: AutoMLSortBy
+pattern AutoMLSortBy_CreationTime = AutoMLSortBy' "CreationTime"
+
+pattern AutoMLSortBy_Name :: AutoMLSortBy
+pattern AutoMLSortBy_Name = AutoMLSortBy' "Name"
+
+pattern AutoMLSortBy_Status :: AutoMLSortBy
+pattern AutoMLSortBy_Status = AutoMLSortBy' "Status"
+
+{-# COMPLETE
+  AutoMLSortBy_CreationTime,
+  AutoMLSortBy_Name,
+  AutoMLSortBy_Status,
+  AutoMLSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoMLSortOrder.hs b/gen/Amazonka/SageMaker/Types/AutoMLSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoMLSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AutoMLSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoMLSortOrder
+  ( AutoMLSortOrder
+      ( ..,
+        AutoMLSortOrder_Ascending,
+        AutoMLSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AutoMLSortOrder = AutoMLSortOrder'
+  { fromAutoMLSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AutoMLSortOrder_Ascending :: AutoMLSortOrder
+pattern AutoMLSortOrder_Ascending = AutoMLSortOrder' "Ascending"
+
+pattern AutoMLSortOrder_Descending :: AutoMLSortOrder
+pattern AutoMLSortOrder_Descending = AutoMLSortOrder' "Descending"
+
+{-# COMPLETE
+  AutoMLSortOrder_Ascending,
+  AutoMLSortOrder_Descending,
+  AutoMLSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/AutoRollbackConfig.hs b/gen/Amazonka/SageMaker/Types/AutoRollbackConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AutoRollbackConfig.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.AutoRollbackConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AutoRollbackConfig 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 Amazonka.SageMaker.Types.Alarm
+
+-- | Automatic rollback configuration for handling endpoint deployment
+-- failures and recovery.
+--
+-- /See:/ 'newAutoRollbackConfig' smart constructor.
+data AutoRollbackConfig = AutoRollbackConfig'
+  { -- | List of CloudWatch alarms in your account that are configured to monitor
+    -- metrics on an endpoint. If any alarms are tripped during a deployment,
+    -- SageMaker rolls back the deployment.
+    alarms :: Prelude.Maybe (Prelude.NonEmpty Alarm)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AutoRollbackConfig' 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:
+--
+-- 'alarms', 'autoRollbackConfig_alarms' - List of CloudWatch alarms in your account that are configured to monitor
+-- metrics on an endpoint. If any alarms are tripped during a deployment,
+-- SageMaker rolls back the deployment.
+newAutoRollbackConfig ::
+  AutoRollbackConfig
+newAutoRollbackConfig =
+  AutoRollbackConfig' {alarms = Prelude.Nothing}
+
+-- | List of CloudWatch alarms in your account that are configured to monitor
+-- metrics on an endpoint. If any alarms are tripped during a deployment,
+-- SageMaker rolls back the deployment.
+autoRollbackConfig_alarms :: Lens.Lens' AutoRollbackConfig (Prelude.Maybe (Prelude.NonEmpty Alarm))
+autoRollbackConfig_alarms = Lens.lens (\AutoRollbackConfig' {alarms} -> alarms) (\s@AutoRollbackConfig' {} a -> s {alarms = a} :: AutoRollbackConfig) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON AutoRollbackConfig where
+  parseJSON =
+    Data.withObject
+      "AutoRollbackConfig"
+      ( \x ->
+          AutoRollbackConfig'
+            Prelude.<$> (x Data..:? "Alarms")
+      )
+
+instance Prelude.Hashable AutoRollbackConfig where
+  hashWithSalt _salt AutoRollbackConfig' {..} =
+    _salt `Prelude.hashWithSalt` alarms
+
+instance Prelude.NFData AutoRollbackConfig where
+  rnf AutoRollbackConfig' {..} = Prelude.rnf alarms
+
+instance Data.ToJSON AutoRollbackConfig where
+  toJSON AutoRollbackConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Alarms" Data..=) Prelude.<$> alarms]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/AwsManagedHumanLoopRequestSource.hs b/gen/Amazonka/SageMaker/Types/AwsManagedHumanLoopRequestSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/AwsManagedHumanLoopRequestSource.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.AwsManagedHumanLoopRequestSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.AwsManagedHumanLoopRequestSource
+  ( AwsManagedHumanLoopRequestSource
+      ( ..,
+        AwsManagedHumanLoopRequestSource_AWS_Rekognition_DetectModerationLabels_Image_V3,
+        AwsManagedHumanLoopRequestSource_AWS_Textract_AnalyzeDocument_Forms_V1
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AwsManagedHumanLoopRequestSource = AwsManagedHumanLoopRequestSource'
+  { fromAwsManagedHumanLoopRequestSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AwsManagedHumanLoopRequestSource_AWS_Rekognition_DetectModerationLabels_Image_V3 :: AwsManagedHumanLoopRequestSource
+pattern AwsManagedHumanLoopRequestSource_AWS_Rekognition_DetectModerationLabels_Image_V3 = AwsManagedHumanLoopRequestSource' "AWS/Rekognition/DetectModerationLabels/Image/V3"
+
+pattern AwsManagedHumanLoopRequestSource_AWS_Textract_AnalyzeDocument_Forms_V1 :: AwsManagedHumanLoopRequestSource
+pattern AwsManagedHumanLoopRequestSource_AWS_Textract_AnalyzeDocument_Forms_V1 = AwsManagedHumanLoopRequestSource' "AWS/Textract/AnalyzeDocument/Forms/V1"
+
+{-# COMPLETE
+  AwsManagedHumanLoopRequestSource_AWS_Rekognition_DetectModerationLabels_Image_V3,
+  AwsManagedHumanLoopRequestSource_AWS_Textract_AnalyzeDocument_Forms_V1,
+  AwsManagedHumanLoopRequestSource'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/BatchDataCaptureConfig.hs b/gen/Amazonka/SageMaker/Types/BatchDataCaptureConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BatchDataCaptureConfig.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.BatchDataCaptureConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BatchDataCaptureConfig 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
+
+-- | Configuration to control how SageMaker captures inference data for batch
+-- transform jobs.
+--
+-- /See:/ 'newBatchDataCaptureConfig' smart constructor.
+data BatchDataCaptureConfig = BatchDataCaptureConfig'
+  { -- | Flag that indicates whether to append inference id to the output.
+    generateInferenceId :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+    -- Service key that SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance that hosts the batch transform job.
+    --
+    -- The KmsKeyId can be any of the following formats:
+    --
+    -- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Key ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Alias name: @alias\/ExampleAlias@
+    --
+    -- -   Alias name ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 location being used to capture the data.
+    destinationS3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDataCaptureConfig' 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:
+--
+-- 'generateInferenceId', 'batchDataCaptureConfig_generateInferenceId' - Flag that indicates whether to append inference id to the output.
+--
+-- 'kmsKeyId', 'batchDataCaptureConfig_kmsKeyId' - The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the batch transform job.
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- 'destinationS3Uri', 'batchDataCaptureConfig_destinationS3Uri' - The Amazon S3 location being used to capture the data.
+newBatchDataCaptureConfig ::
+  -- | 'destinationS3Uri'
+  Prelude.Text ->
+  BatchDataCaptureConfig
+newBatchDataCaptureConfig pDestinationS3Uri_ =
+  BatchDataCaptureConfig'
+    { generateInferenceId =
+        Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      destinationS3Uri = pDestinationS3Uri_
+    }
+
+-- | Flag that indicates whether to append inference id to the output.
+batchDataCaptureConfig_generateInferenceId :: Lens.Lens' BatchDataCaptureConfig (Prelude.Maybe Prelude.Bool)
+batchDataCaptureConfig_generateInferenceId = Lens.lens (\BatchDataCaptureConfig' {generateInferenceId} -> generateInferenceId) (\s@BatchDataCaptureConfig' {} a -> s {generateInferenceId = a} :: BatchDataCaptureConfig)
+
+-- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance that hosts the batch transform job.
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+batchDataCaptureConfig_kmsKeyId :: Lens.Lens' BatchDataCaptureConfig (Prelude.Maybe Prelude.Text)
+batchDataCaptureConfig_kmsKeyId = Lens.lens (\BatchDataCaptureConfig' {kmsKeyId} -> kmsKeyId) (\s@BatchDataCaptureConfig' {} a -> s {kmsKeyId = a} :: BatchDataCaptureConfig)
+
+-- | The Amazon S3 location being used to capture the data.
+batchDataCaptureConfig_destinationS3Uri :: Lens.Lens' BatchDataCaptureConfig Prelude.Text
+batchDataCaptureConfig_destinationS3Uri = Lens.lens (\BatchDataCaptureConfig' {destinationS3Uri} -> destinationS3Uri) (\s@BatchDataCaptureConfig' {} a -> s {destinationS3Uri = a} :: BatchDataCaptureConfig)
+
+instance Data.FromJSON BatchDataCaptureConfig where
+  parseJSON =
+    Data.withObject
+      "BatchDataCaptureConfig"
+      ( \x ->
+          BatchDataCaptureConfig'
+            Prelude.<$> (x Data..:? "GenerateInferenceId")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "DestinationS3Uri")
+      )
+
+instance Prelude.Hashable BatchDataCaptureConfig where
+  hashWithSalt _salt BatchDataCaptureConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` generateInferenceId
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` destinationS3Uri
+
+instance Prelude.NFData BatchDataCaptureConfig where
+  rnf BatchDataCaptureConfig' {..} =
+    Prelude.rnf generateInferenceId
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf destinationS3Uri
+
+instance Data.ToJSON BatchDataCaptureConfig where
+  toJSON BatchDataCaptureConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GenerateInferenceId" Data..=)
+              Prelude.<$> generateInferenceId,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just
+              ("DestinationS3Uri" Data..= destinationS3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/BatchDescribeModelPackageError.hs b/gen/Amazonka/SageMaker/Types/BatchDescribeModelPackageError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BatchDescribeModelPackageError.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.BatchDescribeModelPackageError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BatchDescribeModelPackageError 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
+
+-- | The error code and error description associated with the resource.
+--
+-- /See:/ 'newBatchDescribeModelPackageError' smart constructor.
+data BatchDescribeModelPackageError = BatchDescribeModelPackageError'
+  { errorCode :: Prelude.Text,
+    errorResponse :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDescribeModelPackageError' 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:
+--
+-- 'errorCode', 'batchDescribeModelPackageError_errorCode' -
+--
+-- 'errorResponse', 'batchDescribeModelPackageError_errorResponse' -
+newBatchDescribeModelPackageError ::
+  -- | 'errorCode'
+  Prelude.Text ->
+  -- | 'errorResponse'
+  Prelude.Text ->
+  BatchDescribeModelPackageError
+newBatchDescribeModelPackageError
+  pErrorCode_
+  pErrorResponse_ =
+    BatchDescribeModelPackageError'
+      { errorCode =
+          pErrorCode_,
+        errorResponse = pErrorResponse_
+      }
+
+batchDescribeModelPackageError_errorCode :: Lens.Lens' BatchDescribeModelPackageError Prelude.Text
+batchDescribeModelPackageError_errorCode = Lens.lens (\BatchDescribeModelPackageError' {errorCode} -> errorCode) (\s@BatchDescribeModelPackageError' {} a -> s {errorCode = a} :: BatchDescribeModelPackageError)
+
+batchDescribeModelPackageError_errorResponse :: Lens.Lens' BatchDescribeModelPackageError Prelude.Text
+batchDescribeModelPackageError_errorResponse = Lens.lens (\BatchDescribeModelPackageError' {errorResponse} -> errorResponse) (\s@BatchDescribeModelPackageError' {} a -> s {errorResponse = a} :: BatchDescribeModelPackageError)
+
+instance Data.FromJSON BatchDescribeModelPackageError where
+  parseJSON =
+    Data.withObject
+      "BatchDescribeModelPackageError"
+      ( \x ->
+          BatchDescribeModelPackageError'
+            Prelude.<$> (x Data..: "ErrorCode")
+            Prelude.<*> (x Data..: "ErrorResponse")
+      )
+
+instance
+  Prelude.Hashable
+    BatchDescribeModelPackageError
+  where
+  hashWithSalt
+    _salt
+    BatchDescribeModelPackageError' {..} =
+      _salt
+        `Prelude.hashWithSalt` errorCode
+        `Prelude.hashWithSalt` errorResponse
+
+instance
+  Prelude.NFData
+    BatchDescribeModelPackageError
+  where
+  rnf BatchDescribeModelPackageError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorResponse
diff --git a/gen/Amazonka/SageMaker/Types/BatchDescribeModelPackageSummary.hs b/gen/Amazonka/SageMaker/Types/BatchDescribeModelPackageSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BatchDescribeModelPackageSummary.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.BatchDescribeModelPackageSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BatchDescribeModelPackageSummary 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 Amazonka.SageMaker.Types.InferenceSpecification
+import Amazonka.SageMaker.Types.ModelApprovalStatus
+import Amazonka.SageMaker.Types.ModelPackageStatus
+
+-- | Provides summary information about the model package.
+--
+-- /See:/ 'newBatchDescribeModelPackageSummary' smart constructor.
+data BatchDescribeModelPackageSummary = BatchDescribeModelPackageSummary'
+  { -- | The approval status of the model.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | The description of the model package.
+    modelPackageDescription :: Prelude.Maybe Prelude.Text,
+    -- | The version number of a versioned model.
+    modelPackageVersion :: Prelude.Maybe Prelude.Natural,
+    -- | The group name for the model package
+    modelPackageGroupName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model package.
+    modelPackageArn :: Prelude.Text,
+    -- | The creation time of the mortgage package summary.
+    creationTime :: Data.POSIX,
+    inferenceSpecification :: InferenceSpecification,
+    -- | The status of the mortgage package.
+    modelPackageStatus :: ModelPackageStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDescribeModelPackageSummary' 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:
+--
+-- 'modelApprovalStatus', 'batchDescribeModelPackageSummary_modelApprovalStatus' - The approval status of the model.
+--
+-- 'modelPackageDescription', 'batchDescribeModelPackageSummary_modelPackageDescription' - The description of the model package.
+--
+-- 'modelPackageVersion', 'batchDescribeModelPackageSummary_modelPackageVersion' - The version number of a versioned model.
+--
+-- 'modelPackageGroupName', 'batchDescribeModelPackageSummary_modelPackageGroupName' - The group name for the model package
+--
+-- 'modelPackageArn', 'batchDescribeModelPackageSummary_modelPackageArn' - The Amazon Resource Name (ARN) of the model package.
+--
+-- 'creationTime', 'batchDescribeModelPackageSummary_creationTime' - The creation time of the mortgage package summary.
+--
+-- 'inferenceSpecification', 'batchDescribeModelPackageSummary_inferenceSpecification' - Undocumented member.
+--
+-- 'modelPackageStatus', 'batchDescribeModelPackageSummary_modelPackageStatus' - The status of the mortgage package.
+newBatchDescribeModelPackageSummary ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  -- | 'modelPackageArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'inferenceSpecification'
+  InferenceSpecification ->
+  -- | 'modelPackageStatus'
+  ModelPackageStatus ->
+  BatchDescribeModelPackageSummary
+newBatchDescribeModelPackageSummary
+  pModelPackageGroupName_
+  pModelPackageArn_
+  pCreationTime_
+  pInferenceSpecification_
+  pModelPackageStatus_ =
+    BatchDescribeModelPackageSummary'
+      { modelApprovalStatus =
+          Prelude.Nothing,
+        modelPackageDescription = Prelude.Nothing,
+        modelPackageVersion = Prelude.Nothing,
+        modelPackageGroupName =
+          pModelPackageGroupName_,
+        modelPackageArn = pModelPackageArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        inferenceSpecification =
+          pInferenceSpecification_,
+        modelPackageStatus = pModelPackageStatus_
+      }
+
+-- | The approval status of the model.
+batchDescribeModelPackageSummary_modelApprovalStatus :: Lens.Lens' BatchDescribeModelPackageSummary (Prelude.Maybe ModelApprovalStatus)
+batchDescribeModelPackageSummary_modelApprovalStatus = Lens.lens (\BatchDescribeModelPackageSummary' {modelApprovalStatus} -> modelApprovalStatus) (\s@BatchDescribeModelPackageSummary' {} a -> s {modelApprovalStatus = a} :: BatchDescribeModelPackageSummary)
+
+-- | The description of the model package.
+batchDescribeModelPackageSummary_modelPackageDescription :: Lens.Lens' BatchDescribeModelPackageSummary (Prelude.Maybe Prelude.Text)
+batchDescribeModelPackageSummary_modelPackageDescription = Lens.lens (\BatchDescribeModelPackageSummary' {modelPackageDescription} -> modelPackageDescription) (\s@BatchDescribeModelPackageSummary' {} a -> s {modelPackageDescription = a} :: BatchDescribeModelPackageSummary)
+
+-- | The version number of a versioned model.
+batchDescribeModelPackageSummary_modelPackageVersion :: Lens.Lens' BatchDescribeModelPackageSummary (Prelude.Maybe Prelude.Natural)
+batchDescribeModelPackageSummary_modelPackageVersion = Lens.lens (\BatchDescribeModelPackageSummary' {modelPackageVersion} -> modelPackageVersion) (\s@BatchDescribeModelPackageSummary' {} a -> s {modelPackageVersion = a} :: BatchDescribeModelPackageSummary)
+
+-- | The group name for the model package
+batchDescribeModelPackageSummary_modelPackageGroupName :: Lens.Lens' BatchDescribeModelPackageSummary Prelude.Text
+batchDescribeModelPackageSummary_modelPackageGroupName = Lens.lens (\BatchDescribeModelPackageSummary' {modelPackageGroupName} -> modelPackageGroupName) (\s@BatchDescribeModelPackageSummary' {} a -> s {modelPackageGroupName = a} :: BatchDescribeModelPackageSummary)
+
+-- | The Amazon Resource Name (ARN) of the model package.
+batchDescribeModelPackageSummary_modelPackageArn :: Lens.Lens' BatchDescribeModelPackageSummary Prelude.Text
+batchDescribeModelPackageSummary_modelPackageArn = Lens.lens (\BatchDescribeModelPackageSummary' {modelPackageArn} -> modelPackageArn) (\s@BatchDescribeModelPackageSummary' {} a -> s {modelPackageArn = a} :: BatchDescribeModelPackageSummary)
+
+-- | The creation time of the mortgage package summary.
+batchDescribeModelPackageSummary_creationTime :: Lens.Lens' BatchDescribeModelPackageSummary Prelude.UTCTime
+batchDescribeModelPackageSummary_creationTime = Lens.lens (\BatchDescribeModelPackageSummary' {creationTime} -> creationTime) (\s@BatchDescribeModelPackageSummary' {} a -> s {creationTime = a} :: BatchDescribeModelPackageSummary) Prelude.. Data._Time
+
+-- | Undocumented member.
+batchDescribeModelPackageSummary_inferenceSpecification :: Lens.Lens' BatchDescribeModelPackageSummary InferenceSpecification
+batchDescribeModelPackageSummary_inferenceSpecification = Lens.lens (\BatchDescribeModelPackageSummary' {inferenceSpecification} -> inferenceSpecification) (\s@BatchDescribeModelPackageSummary' {} a -> s {inferenceSpecification = a} :: BatchDescribeModelPackageSummary)
+
+-- | The status of the mortgage package.
+batchDescribeModelPackageSummary_modelPackageStatus :: Lens.Lens' BatchDescribeModelPackageSummary ModelPackageStatus
+batchDescribeModelPackageSummary_modelPackageStatus = Lens.lens (\BatchDescribeModelPackageSummary' {modelPackageStatus} -> modelPackageStatus) (\s@BatchDescribeModelPackageSummary' {} a -> s {modelPackageStatus = a} :: BatchDescribeModelPackageSummary)
+
+instance
+  Data.FromJSON
+    BatchDescribeModelPackageSummary
+  where
+  parseJSON =
+    Data.withObject
+      "BatchDescribeModelPackageSummary"
+      ( \x ->
+          BatchDescribeModelPackageSummary'
+            Prelude.<$> (x Data..:? "ModelApprovalStatus")
+            Prelude.<*> (x Data..:? "ModelPackageDescription")
+            Prelude.<*> (x Data..:? "ModelPackageVersion")
+            Prelude.<*> (x Data..: "ModelPackageGroupName")
+            Prelude.<*> (x Data..: "ModelPackageArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "InferenceSpecification")
+            Prelude.<*> (x Data..: "ModelPackageStatus")
+      )
+
+instance
+  Prelude.Hashable
+    BatchDescribeModelPackageSummary
+  where
+  hashWithSalt
+    _salt
+    BatchDescribeModelPackageSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` modelApprovalStatus
+        `Prelude.hashWithSalt` modelPackageDescription
+        `Prelude.hashWithSalt` modelPackageVersion
+        `Prelude.hashWithSalt` modelPackageGroupName
+        `Prelude.hashWithSalt` modelPackageArn
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` inferenceSpecification
+        `Prelude.hashWithSalt` modelPackageStatus
+
+instance
+  Prelude.NFData
+    BatchDescribeModelPackageSummary
+  where
+  rnf BatchDescribeModelPackageSummary' {..} =
+    Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelPackageDescription
+      `Prelude.seq` Prelude.rnf modelPackageVersion
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf inferenceSpecification
+      `Prelude.seq` Prelude.rnf modelPackageStatus
diff --git a/gen/Amazonka/SageMaker/Types/BatchStrategy.hs b/gen/Amazonka/SageMaker/Types/BatchStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BatchStrategy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.BatchStrategy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BatchStrategy
+  ( BatchStrategy
+      ( ..,
+        BatchStrategy_MultiRecord,
+        BatchStrategy_SingleRecord
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BatchStrategy = BatchStrategy'
+  { fromBatchStrategy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BatchStrategy_MultiRecord :: BatchStrategy
+pattern BatchStrategy_MultiRecord = BatchStrategy' "MultiRecord"
+
+pattern BatchStrategy_SingleRecord :: BatchStrategy
+pattern BatchStrategy_SingleRecord = BatchStrategy' "SingleRecord"
+
+{-# COMPLETE
+  BatchStrategy_MultiRecord,
+  BatchStrategy_SingleRecord,
+  BatchStrategy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/BatchTransformInput.hs b/gen/Amazonka/SageMaker/Types/BatchTransformInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BatchTransformInput.hs
@@ -0,0 +1,266 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.BatchTransformInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BatchTransformInput 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 Amazonka.SageMaker.Types.MonitoringDatasetFormat
+import Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+import Amazonka.SageMaker.Types.ProcessingS3InputMode
+
+-- | Input object for the batch transform job.
+--
+-- /See:/ 'newBatchTransformInput' smart constructor.
+data BatchTransformInput = BatchTransformInput'
+  { -- | If specified, monitoring jobs substract this time from the end time. For
+    -- information about using offsets for scheduling monitoring jobs, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+    endTimeOffset :: Prelude.Maybe Prelude.Text,
+    -- | The attributes of the input data that are the input features.
+    featuresAttribute :: Prelude.Maybe Prelude.Text,
+    -- | The attribute of the input data that represents the ground truth label.
+    inferenceAttribute :: Prelude.Maybe Prelude.Text,
+    -- | In a classification problem, the attribute that represents the class
+    -- probability.
+    probabilityAttribute :: Prelude.Maybe Prelude.Text,
+    -- | The threshold for the class probability to be evaluated as a positive
+    -- result.
+    probabilityThresholdAttribute :: Prelude.Maybe Prelude.Double,
+    -- | Whether input data distributed in Amazon S3 is fully replicated or
+    -- sharded by an S3 key. Defaults to @FullyReplicated@
+    s3DataDistributionType :: Prelude.Maybe ProcessingS3DataDistributionType,
+    -- | Whether the @Pipe@ or @File@ is used as the input mode for transferring
+    -- data for the monitoring job. @Pipe@ mode is recommended for large
+    -- datasets. @File@ mode is useful for small files that fit in memory.
+    -- Defaults to @File@.
+    s3InputMode :: Prelude.Maybe ProcessingS3InputMode,
+    -- | If specified, monitoring jobs substract this time from the start time.
+    -- For information about using offsets for scheduling monitoring jobs, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+    startTimeOffset :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 location being used to capture the data.
+    dataCapturedDestinationS3Uri :: Prelude.Text,
+    -- | The dataset format for your batch transform job.
+    datasetFormat :: MonitoringDatasetFormat,
+    -- | Path to the filesystem where the batch transform data is available to
+    -- the container.
+    localPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchTransformInput' 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:
+--
+-- 'endTimeOffset', 'batchTransformInput_endTimeOffset' - If specified, monitoring jobs substract this time from the end time. For
+-- information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+--
+-- 'featuresAttribute', 'batchTransformInput_featuresAttribute' - The attributes of the input data that are the input features.
+--
+-- 'inferenceAttribute', 'batchTransformInput_inferenceAttribute' - The attribute of the input data that represents the ground truth label.
+--
+-- 'probabilityAttribute', 'batchTransformInput_probabilityAttribute' - In a classification problem, the attribute that represents the class
+-- probability.
+--
+-- 'probabilityThresholdAttribute', 'batchTransformInput_probabilityThresholdAttribute' - The threshold for the class probability to be evaluated as a positive
+-- result.
+--
+-- 's3DataDistributionType', 'batchTransformInput_s3DataDistributionType' - Whether input data distributed in Amazon S3 is fully replicated or
+-- sharded by an S3 key. Defaults to @FullyReplicated@
+--
+-- 's3InputMode', 'batchTransformInput_s3InputMode' - Whether the @Pipe@ or @File@ is used as the input mode for transferring
+-- data for the monitoring job. @Pipe@ mode is recommended for large
+-- datasets. @File@ mode is useful for small files that fit in memory.
+-- Defaults to @File@.
+--
+-- 'startTimeOffset', 'batchTransformInput_startTimeOffset' - If specified, monitoring jobs substract this time from the start time.
+-- For information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+--
+-- 'dataCapturedDestinationS3Uri', 'batchTransformInput_dataCapturedDestinationS3Uri' - The Amazon S3 location being used to capture the data.
+--
+-- 'datasetFormat', 'batchTransformInput_datasetFormat' - The dataset format for your batch transform job.
+--
+-- 'localPath', 'batchTransformInput_localPath' - Path to the filesystem where the batch transform data is available to
+-- the container.
+newBatchTransformInput ::
+  -- | 'dataCapturedDestinationS3Uri'
+  Prelude.Text ->
+  -- | 'datasetFormat'
+  MonitoringDatasetFormat ->
+  -- | 'localPath'
+  Prelude.Text ->
+  BatchTransformInput
+newBatchTransformInput
+  pDataCapturedDestinationS3Uri_
+  pDatasetFormat_
+  pLocalPath_ =
+    BatchTransformInput'
+      { endTimeOffset =
+          Prelude.Nothing,
+        featuresAttribute = Prelude.Nothing,
+        inferenceAttribute = Prelude.Nothing,
+        probabilityAttribute = Prelude.Nothing,
+        probabilityThresholdAttribute = Prelude.Nothing,
+        s3DataDistributionType = Prelude.Nothing,
+        s3InputMode = Prelude.Nothing,
+        startTimeOffset = Prelude.Nothing,
+        dataCapturedDestinationS3Uri =
+          pDataCapturedDestinationS3Uri_,
+        datasetFormat = pDatasetFormat_,
+        localPath = pLocalPath_
+      }
+
+-- | If specified, monitoring jobs substract this time from the end time. For
+-- information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+batchTransformInput_endTimeOffset :: Lens.Lens' BatchTransformInput (Prelude.Maybe Prelude.Text)
+batchTransformInput_endTimeOffset = Lens.lens (\BatchTransformInput' {endTimeOffset} -> endTimeOffset) (\s@BatchTransformInput' {} a -> s {endTimeOffset = a} :: BatchTransformInput)
+
+-- | The attributes of the input data that are the input features.
+batchTransformInput_featuresAttribute :: Lens.Lens' BatchTransformInput (Prelude.Maybe Prelude.Text)
+batchTransformInput_featuresAttribute = Lens.lens (\BatchTransformInput' {featuresAttribute} -> featuresAttribute) (\s@BatchTransformInput' {} a -> s {featuresAttribute = a} :: BatchTransformInput)
+
+-- | The attribute of the input data that represents the ground truth label.
+batchTransformInput_inferenceAttribute :: Lens.Lens' BatchTransformInput (Prelude.Maybe Prelude.Text)
+batchTransformInput_inferenceAttribute = Lens.lens (\BatchTransformInput' {inferenceAttribute} -> inferenceAttribute) (\s@BatchTransformInput' {} a -> s {inferenceAttribute = a} :: BatchTransformInput)
+
+-- | In a classification problem, the attribute that represents the class
+-- probability.
+batchTransformInput_probabilityAttribute :: Lens.Lens' BatchTransformInput (Prelude.Maybe Prelude.Text)
+batchTransformInput_probabilityAttribute = Lens.lens (\BatchTransformInput' {probabilityAttribute} -> probabilityAttribute) (\s@BatchTransformInput' {} a -> s {probabilityAttribute = a} :: BatchTransformInput)
+
+-- | The threshold for the class probability to be evaluated as a positive
+-- result.
+batchTransformInput_probabilityThresholdAttribute :: Lens.Lens' BatchTransformInput (Prelude.Maybe Prelude.Double)
+batchTransformInput_probabilityThresholdAttribute = Lens.lens (\BatchTransformInput' {probabilityThresholdAttribute} -> probabilityThresholdAttribute) (\s@BatchTransformInput' {} a -> s {probabilityThresholdAttribute = a} :: BatchTransformInput)
+
+-- | Whether input data distributed in Amazon S3 is fully replicated or
+-- sharded by an S3 key. Defaults to @FullyReplicated@
+batchTransformInput_s3DataDistributionType :: Lens.Lens' BatchTransformInput (Prelude.Maybe ProcessingS3DataDistributionType)
+batchTransformInput_s3DataDistributionType = Lens.lens (\BatchTransformInput' {s3DataDistributionType} -> s3DataDistributionType) (\s@BatchTransformInput' {} a -> s {s3DataDistributionType = a} :: BatchTransformInput)
+
+-- | Whether the @Pipe@ or @File@ is used as the input mode for transferring
+-- data for the monitoring job. @Pipe@ mode is recommended for large
+-- datasets. @File@ mode is useful for small files that fit in memory.
+-- Defaults to @File@.
+batchTransformInput_s3InputMode :: Lens.Lens' BatchTransformInput (Prelude.Maybe ProcessingS3InputMode)
+batchTransformInput_s3InputMode = Lens.lens (\BatchTransformInput' {s3InputMode} -> s3InputMode) (\s@BatchTransformInput' {} a -> s {s3InputMode = a} :: BatchTransformInput)
+
+-- | If specified, monitoring jobs substract this time from the start time.
+-- For information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+batchTransformInput_startTimeOffset :: Lens.Lens' BatchTransformInput (Prelude.Maybe Prelude.Text)
+batchTransformInput_startTimeOffset = Lens.lens (\BatchTransformInput' {startTimeOffset} -> startTimeOffset) (\s@BatchTransformInput' {} a -> s {startTimeOffset = a} :: BatchTransformInput)
+
+-- | The Amazon S3 location being used to capture the data.
+batchTransformInput_dataCapturedDestinationS3Uri :: Lens.Lens' BatchTransformInput Prelude.Text
+batchTransformInput_dataCapturedDestinationS3Uri = Lens.lens (\BatchTransformInput' {dataCapturedDestinationS3Uri} -> dataCapturedDestinationS3Uri) (\s@BatchTransformInput' {} a -> s {dataCapturedDestinationS3Uri = a} :: BatchTransformInput)
+
+-- | The dataset format for your batch transform job.
+batchTransformInput_datasetFormat :: Lens.Lens' BatchTransformInput MonitoringDatasetFormat
+batchTransformInput_datasetFormat = Lens.lens (\BatchTransformInput' {datasetFormat} -> datasetFormat) (\s@BatchTransformInput' {} a -> s {datasetFormat = a} :: BatchTransformInput)
+
+-- | Path to the filesystem where the batch transform data is available to
+-- the container.
+batchTransformInput_localPath :: Lens.Lens' BatchTransformInput Prelude.Text
+batchTransformInput_localPath = Lens.lens (\BatchTransformInput' {localPath} -> localPath) (\s@BatchTransformInput' {} a -> s {localPath = a} :: BatchTransformInput)
+
+instance Data.FromJSON BatchTransformInput where
+  parseJSON =
+    Data.withObject
+      "BatchTransformInput"
+      ( \x ->
+          BatchTransformInput'
+            Prelude.<$> (x Data..:? "EndTimeOffset")
+            Prelude.<*> (x Data..:? "FeaturesAttribute")
+            Prelude.<*> (x Data..:? "InferenceAttribute")
+            Prelude.<*> (x Data..:? "ProbabilityAttribute")
+            Prelude.<*> (x Data..:? "ProbabilityThresholdAttribute")
+            Prelude.<*> (x Data..:? "S3DataDistributionType")
+            Prelude.<*> (x Data..:? "S3InputMode")
+            Prelude.<*> (x Data..:? "StartTimeOffset")
+            Prelude.<*> (x Data..: "DataCapturedDestinationS3Uri")
+            Prelude.<*> (x Data..: "DatasetFormat")
+            Prelude.<*> (x Data..: "LocalPath")
+      )
+
+instance Prelude.Hashable BatchTransformInput where
+  hashWithSalt _salt BatchTransformInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTimeOffset
+      `Prelude.hashWithSalt` featuresAttribute
+      `Prelude.hashWithSalt` inferenceAttribute
+      `Prelude.hashWithSalt` probabilityAttribute
+      `Prelude.hashWithSalt` probabilityThresholdAttribute
+      `Prelude.hashWithSalt` s3DataDistributionType
+      `Prelude.hashWithSalt` s3InputMode
+      `Prelude.hashWithSalt` startTimeOffset
+      `Prelude.hashWithSalt` dataCapturedDestinationS3Uri
+      `Prelude.hashWithSalt` datasetFormat
+      `Prelude.hashWithSalt` localPath
+
+instance Prelude.NFData BatchTransformInput where
+  rnf BatchTransformInput' {..} =
+    Prelude.rnf endTimeOffset
+      `Prelude.seq` Prelude.rnf featuresAttribute
+      `Prelude.seq` Prelude.rnf inferenceAttribute
+      `Prelude.seq` Prelude.rnf probabilityAttribute
+      `Prelude.seq` Prelude.rnf probabilityThresholdAttribute
+      `Prelude.seq` Prelude.rnf s3DataDistributionType
+      `Prelude.seq` Prelude.rnf s3InputMode
+      `Prelude.seq` Prelude.rnf startTimeOffset
+      `Prelude.seq` Prelude.rnf dataCapturedDestinationS3Uri
+      `Prelude.seq` Prelude.rnf datasetFormat
+      `Prelude.seq` Prelude.rnf localPath
+
+instance Data.ToJSON BatchTransformInput where
+  toJSON BatchTransformInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EndTimeOffset" Data..=) Prelude.<$> endTimeOffset,
+            ("FeaturesAttribute" Data..=)
+              Prelude.<$> featuresAttribute,
+            ("InferenceAttribute" Data..=)
+              Prelude.<$> inferenceAttribute,
+            ("ProbabilityAttribute" Data..=)
+              Prelude.<$> probabilityAttribute,
+            ("ProbabilityThresholdAttribute" Data..=)
+              Prelude.<$> probabilityThresholdAttribute,
+            ("S3DataDistributionType" Data..=)
+              Prelude.<$> s3DataDistributionType,
+            ("S3InputMode" Data..=) Prelude.<$> s3InputMode,
+            ("StartTimeOffset" Data..=)
+              Prelude.<$> startTimeOffset,
+            Prelude.Just
+              ( "DataCapturedDestinationS3Uri"
+                  Data..= dataCapturedDestinationS3Uri
+              ),
+            Prelude.Just ("DatasetFormat" Data..= datasetFormat),
+            Prelude.Just ("LocalPath" Data..= localPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Bias.hs b/gen/Amazonka/SageMaker/Types/Bias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Bias.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Bias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Bias 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 Amazonka.SageMaker.Types.MetricsSource
+
+-- | Contains bias metrics for a model.
+--
+-- /See:/ 'newBias' smart constructor.
+data Bias = Bias'
+  { -- | The post-training bias report for a model.
+    postTrainingReport :: Prelude.Maybe MetricsSource,
+    -- | The pre-training bias report for a model.
+    preTrainingReport :: Prelude.Maybe MetricsSource,
+    -- | The bias report for a model
+    report :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Bias' 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:
+--
+-- 'postTrainingReport', 'bias_postTrainingReport' - The post-training bias report for a model.
+--
+-- 'preTrainingReport', 'bias_preTrainingReport' - The pre-training bias report for a model.
+--
+-- 'report', 'bias_report' - The bias report for a model
+newBias ::
+  Bias
+newBias =
+  Bias'
+    { postTrainingReport = Prelude.Nothing,
+      preTrainingReport = Prelude.Nothing,
+      report = Prelude.Nothing
+    }
+
+-- | The post-training bias report for a model.
+bias_postTrainingReport :: Lens.Lens' Bias (Prelude.Maybe MetricsSource)
+bias_postTrainingReport = Lens.lens (\Bias' {postTrainingReport} -> postTrainingReport) (\s@Bias' {} a -> s {postTrainingReport = a} :: Bias)
+
+-- | The pre-training bias report for a model.
+bias_preTrainingReport :: Lens.Lens' Bias (Prelude.Maybe MetricsSource)
+bias_preTrainingReport = Lens.lens (\Bias' {preTrainingReport} -> preTrainingReport) (\s@Bias' {} a -> s {preTrainingReport = a} :: Bias)
+
+-- | The bias report for a model
+bias_report :: Lens.Lens' Bias (Prelude.Maybe MetricsSource)
+bias_report = Lens.lens (\Bias' {report} -> report) (\s@Bias' {} a -> s {report = a} :: Bias)
+
+instance Data.FromJSON Bias where
+  parseJSON =
+    Data.withObject
+      "Bias"
+      ( \x ->
+          Bias'
+            Prelude.<$> (x Data..:? "PostTrainingReport")
+            Prelude.<*> (x Data..:? "PreTrainingReport")
+            Prelude.<*> (x Data..:? "Report")
+      )
+
+instance Prelude.Hashable Bias where
+  hashWithSalt _salt Bias' {..} =
+    _salt
+      `Prelude.hashWithSalt` postTrainingReport
+      `Prelude.hashWithSalt` preTrainingReport
+      `Prelude.hashWithSalt` report
+
+instance Prelude.NFData Bias where
+  rnf Bias' {..} =
+    Prelude.rnf postTrainingReport
+      `Prelude.seq` Prelude.rnf preTrainingReport
+      `Prelude.seq` Prelude.rnf report
+
+instance Data.ToJSON Bias where
+  toJSON Bias' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PostTrainingReport" Data..=)
+              Prelude.<$> postTrainingReport,
+            ("PreTrainingReport" Data..=)
+              Prelude.<$> preTrainingReport,
+            ("Report" Data..=) Prelude.<$> report
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/BlueGreenUpdatePolicy.hs b/gen/Amazonka/SageMaker/Types/BlueGreenUpdatePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BlueGreenUpdatePolicy.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.BlueGreenUpdatePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BlueGreenUpdatePolicy 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 Amazonka.SageMaker.Types.TrafficRoutingConfig
+
+-- | Update policy for a blue\/green deployment. If this update policy is
+-- specified, SageMaker creates a new fleet during the deployment while
+-- maintaining the old fleet. SageMaker flips traffic to the new fleet
+-- according to the specified traffic routing configuration. Only one
+-- update policy should be used in the deployment configuration. If no
+-- update policy is specified, SageMaker uses a blue\/green deployment
+-- strategy with all at once traffic shifting by default.
+--
+-- /See:/ 'newBlueGreenUpdatePolicy' smart constructor.
+data BlueGreenUpdatePolicy = BlueGreenUpdatePolicy'
+  { -- | Maximum execution timeout for the deployment. Note that the timeout
+    -- value should be larger than the total waiting time specified in
+    -- @TerminationWaitInSeconds@ and @WaitIntervalInSeconds@.
+    maximumExecutionTimeoutInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Additional waiting time in seconds after the completion of an endpoint
+    -- deployment before terminating the old endpoint fleet. Default is 0.
+    terminationWaitInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Defines the traffic routing strategy to shift traffic from the old fleet
+    -- to the new fleet during an endpoint deployment.
+    trafficRoutingConfiguration :: TrafficRoutingConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BlueGreenUpdatePolicy' 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:
+--
+-- 'maximumExecutionTimeoutInSeconds', 'blueGreenUpdatePolicy_maximumExecutionTimeoutInSeconds' - Maximum execution timeout for the deployment. Note that the timeout
+-- value should be larger than the total waiting time specified in
+-- @TerminationWaitInSeconds@ and @WaitIntervalInSeconds@.
+--
+-- 'terminationWaitInSeconds', 'blueGreenUpdatePolicy_terminationWaitInSeconds' - Additional waiting time in seconds after the completion of an endpoint
+-- deployment before terminating the old endpoint fleet. Default is 0.
+--
+-- 'trafficRoutingConfiguration', 'blueGreenUpdatePolicy_trafficRoutingConfiguration' - Defines the traffic routing strategy to shift traffic from the old fleet
+-- to the new fleet during an endpoint deployment.
+newBlueGreenUpdatePolicy ::
+  -- | 'trafficRoutingConfiguration'
+  TrafficRoutingConfig ->
+  BlueGreenUpdatePolicy
+newBlueGreenUpdatePolicy
+  pTrafficRoutingConfiguration_ =
+    BlueGreenUpdatePolicy'
+      { maximumExecutionTimeoutInSeconds =
+          Prelude.Nothing,
+        terminationWaitInSeconds = Prelude.Nothing,
+        trafficRoutingConfiguration =
+          pTrafficRoutingConfiguration_
+      }
+
+-- | Maximum execution timeout for the deployment. Note that the timeout
+-- value should be larger than the total waiting time specified in
+-- @TerminationWaitInSeconds@ and @WaitIntervalInSeconds@.
+blueGreenUpdatePolicy_maximumExecutionTimeoutInSeconds :: Lens.Lens' BlueGreenUpdatePolicy (Prelude.Maybe Prelude.Natural)
+blueGreenUpdatePolicy_maximumExecutionTimeoutInSeconds = Lens.lens (\BlueGreenUpdatePolicy' {maximumExecutionTimeoutInSeconds} -> maximumExecutionTimeoutInSeconds) (\s@BlueGreenUpdatePolicy' {} a -> s {maximumExecutionTimeoutInSeconds = a} :: BlueGreenUpdatePolicy)
+
+-- | Additional waiting time in seconds after the completion of an endpoint
+-- deployment before terminating the old endpoint fleet. Default is 0.
+blueGreenUpdatePolicy_terminationWaitInSeconds :: Lens.Lens' BlueGreenUpdatePolicy (Prelude.Maybe Prelude.Natural)
+blueGreenUpdatePolicy_terminationWaitInSeconds = Lens.lens (\BlueGreenUpdatePolicy' {terminationWaitInSeconds} -> terminationWaitInSeconds) (\s@BlueGreenUpdatePolicy' {} a -> s {terminationWaitInSeconds = a} :: BlueGreenUpdatePolicy)
+
+-- | Defines the traffic routing strategy to shift traffic from the old fleet
+-- to the new fleet during an endpoint deployment.
+blueGreenUpdatePolicy_trafficRoutingConfiguration :: Lens.Lens' BlueGreenUpdatePolicy TrafficRoutingConfig
+blueGreenUpdatePolicy_trafficRoutingConfiguration = Lens.lens (\BlueGreenUpdatePolicy' {trafficRoutingConfiguration} -> trafficRoutingConfiguration) (\s@BlueGreenUpdatePolicy' {} a -> s {trafficRoutingConfiguration = a} :: BlueGreenUpdatePolicy)
+
+instance Data.FromJSON BlueGreenUpdatePolicy where
+  parseJSON =
+    Data.withObject
+      "BlueGreenUpdatePolicy"
+      ( \x ->
+          BlueGreenUpdatePolicy'
+            Prelude.<$> (x Data..:? "MaximumExecutionTimeoutInSeconds")
+            Prelude.<*> (x Data..:? "TerminationWaitInSeconds")
+            Prelude.<*> (x Data..: "TrafficRoutingConfiguration")
+      )
+
+instance Prelude.Hashable BlueGreenUpdatePolicy where
+  hashWithSalt _salt BlueGreenUpdatePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` maximumExecutionTimeoutInSeconds
+      `Prelude.hashWithSalt` terminationWaitInSeconds
+      `Prelude.hashWithSalt` trafficRoutingConfiguration
+
+instance Prelude.NFData BlueGreenUpdatePolicy where
+  rnf BlueGreenUpdatePolicy' {..} =
+    Prelude.rnf maximumExecutionTimeoutInSeconds
+      `Prelude.seq` Prelude.rnf terminationWaitInSeconds
+      `Prelude.seq` Prelude.rnf trafficRoutingConfiguration
+
+instance Data.ToJSON BlueGreenUpdatePolicy where
+  toJSON BlueGreenUpdatePolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaximumExecutionTimeoutInSeconds" Data..=)
+              Prelude.<$> maximumExecutionTimeoutInSeconds,
+            ("TerminationWaitInSeconds" Data..=)
+              Prelude.<$> terminationWaitInSeconds,
+            Prelude.Just
+              ( "TrafficRoutingConfiguration"
+                  Data..= trafficRoutingConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/BooleanOperator.hs b/gen/Amazonka/SageMaker/Types/BooleanOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/BooleanOperator.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.BooleanOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.BooleanOperator
+  ( BooleanOperator
+      ( ..,
+        BooleanOperator_And,
+        BooleanOperator_Or
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BooleanOperator = BooleanOperator'
+  { fromBooleanOperator ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BooleanOperator_And :: BooleanOperator
+pattern BooleanOperator_And = BooleanOperator' "And"
+
+pattern BooleanOperator_Or :: BooleanOperator
+pattern BooleanOperator_Or = BooleanOperator' "Or"
+
+{-# COMPLETE
+  BooleanOperator_And,
+  BooleanOperator_Or,
+  BooleanOperator'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CacheHitResult.hs b/gen/Amazonka/SageMaker/Types/CacheHitResult.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CacheHitResult.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CacheHitResult
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CacheHitResult 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
+
+-- | Details on the cache hit of a pipeline execution step.
+--
+-- /See:/ 'newCacheHitResult' smart constructor.
+data CacheHitResult = CacheHitResult'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    sourcePipelineExecutionArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CacheHitResult' 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:
+--
+-- 'sourcePipelineExecutionArn', 'cacheHitResult_sourcePipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+newCacheHitResult ::
+  CacheHitResult
+newCacheHitResult =
+  CacheHitResult'
+    { sourcePipelineExecutionArn =
+        Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+cacheHitResult_sourcePipelineExecutionArn :: Lens.Lens' CacheHitResult (Prelude.Maybe Prelude.Text)
+cacheHitResult_sourcePipelineExecutionArn = Lens.lens (\CacheHitResult' {sourcePipelineExecutionArn} -> sourcePipelineExecutionArn) (\s@CacheHitResult' {} a -> s {sourcePipelineExecutionArn = a} :: CacheHitResult)
+
+instance Data.FromJSON CacheHitResult where
+  parseJSON =
+    Data.withObject
+      "CacheHitResult"
+      ( \x ->
+          CacheHitResult'
+            Prelude.<$> (x Data..:? "SourcePipelineExecutionArn")
+      )
+
+instance Prelude.Hashable CacheHitResult where
+  hashWithSalt _salt CacheHitResult' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourcePipelineExecutionArn
+
+instance Prelude.NFData CacheHitResult where
+  rnf CacheHitResult' {..} =
+    Prelude.rnf sourcePipelineExecutionArn
diff --git a/gen/Amazonka/SageMaker/Types/CallbackStepMetadata.hs b/gen/Amazonka/SageMaker/Types/CallbackStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CallbackStepMetadata.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CallbackStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CallbackStepMetadata 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 Amazonka.SageMaker.Types.OutputParameter
+
+-- | Metadata about a callback step.
+--
+-- /See:/ 'newCallbackStepMetadata' smart constructor.
+data CallbackStepMetadata = CallbackStepMetadata'
+  { -- | The pipeline generated token from the Amazon SQS queue.
+    callbackToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of the output parameters of the callback step.
+    outputParameters :: Prelude.Maybe [OutputParameter],
+    -- | The URL of the Amazon Simple Queue Service (Amazon SQS) queue used by
+    -- the callback step.
+    sqsQueueUrl :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CallbackStepMetadata' 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:
+--
+-- 'callbackToken', 'callbackStepMetadata_callbackToken' - The pipeline generated token from the Amazon SQS queue.
+--
+-- 'outputParameters', 'callbackStepMetadata_outputParameters' - A list of the output parameters of the callback step.
+--
+-- 'sqsQueueUrl', 'callbackStepMetadata_sqsQueueUrl' - The URL of the Amazon Simple Queue Service (Amazon SQS) queue used by
+-- the callback step.
+newCallbackStepMetadata ::
+  CallbackStepMetadata
+newCallbackStepMetadata =
+  CallbackStepMetadata'
+    { callbackToken =
+        Prelude.Nothing,
+      outputParameters = Prelude.Nothing,
+      sqsQueueUrl = Prelude.Nothing
+    }
+
+-- | The pipeline generated token from the Amazon SQS queue.
+callbackStepMetadata_callbackToken :: Lens.Lens' CallbackStepMetadata (Prelude.Maybe Prelude.Text)
+callbackStepMetadata_callbackToken = Lens.lens (\CallbackStepMetadata' {callbackToken} -> callbackToken) (\s@CallbackStepMetadata' {} a -> s {callbackToken = a} :: CallbackStepMetadata)
+
+-- | A list of the output parameters of the callback step.
+callbackStepMetadata_outputParameters :: Lens.Lens' CallbackStepMetadata (Prelude.Maybe [OutputParameter])
+callbackStepMetadata_outputParameters = Lens.lens (\CallbackStepMetadata' {outputParameters} -> outputParameters) (\s@CallbackStepMetadata' {} a -> s {outputParameters = a} :: CallbackStepMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The URL of the Amazon Simple Queue Service (Amazon SQS) queue used by
+-- the callback step.
+callbackStepMetadata_sqsQueueUrl :: Lens.Lens' CallbackStepMetadata (Prelude.Maybe Prelude.Text)
+callbackStepMetadata_sqsQueueUrl = Lens.lens (\CallbackStepMetadata' {sqsQueueUrl} -> sqsQueueUrl) (\s@CallbackStepMetadata' {} a -> s {sqsQueueUrl = a} :: CallbackStepMetadata)
+
+instance Data.FromJSON CallbackStepMetadata where
+  parseJSON =
+    Data.withObject
+      "CallbackStepMetadata"
+      ( \x ->
+          CallbackStepMetadata'
+            Prelude.<$> (x Data..:? "CallbackToken")
+            Prelude.<*> ( x
+                            Data..:? "OutputParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SqsQueueUrl")
+      )
+
+instance Prelude.Hashable CallbackStepMetadata where
+  hashWithSalt _salt CallbackStepMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` callbackToken
+      `Prelude.hashWithSalt` outputParameters
+      `Prelude.hashWithSalt` sqsQueueUrl
+
+instance Prelude.NFData CallbackStepMetadata where
+  rnf CallbackStepMetadata' {..} =
+    Prelude.rnf callbackToken
+      `Prelude.seq` Prelude.rnf outputParameters
+      `Prelude.seq` Prelude.rnf sqsQueueUrl
diff --git a/gen/Amazonka/SageMaker/Types/CandidateArtifactLocations.hs b/gen/Amazonka/SageMaker/Types/CandidateArtifactLocations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CandidateArtifactLocations.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CandidateArtifactLocations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CandidateArtifactLocations 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
+
+-- | The location of artifacts for an AutoML candidate job.
+--
+-- /See:/ 'newCandidateArtifactLocations' smart constructor.
+data CandidateArtifactLocations = CandidateArtifactLocations'
+  { -- | The Amazon S3 prefix to the model insight artifacts generated for the
+    -- AutoML candidate.
+    modelInsights :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 prefix to the explainability artifacts generated for the
+    -- AutoML candidate.
+    explainability :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CandidateArtifactLocations' 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:
+--
+-- 'modelInsights', 'candidateArtifactLocations_modelInsights' - The Amazon S3 prefix to the model insight artifacts generated for the
+-- AutoML candidate.
+--
+-- 'explainability', 'candidateArtifactLocations_explainability' - The Amazon S3 prefix to the explainability artifacts generated for the
+-- AutoML candidate.
+newCandidateArtifactLocations ::
+  -- | 'explainability'
+  Prelude.Text ->
+  CandidateArtifactLocations
+newCandidateArtifactLocations pExplainability_ =
+  CandidateArtifactLocations'
+    { modelInsights =
+        Prelude.Nothing,
+      explainability = pExplainability_
+    }
+
+-- | The Amazon S3 prefix to the model insight artifacts generated for the
+-- AutoML candidate.
+candidateArtifactLocations_modelInsights :: Lens.Lens' CandidateArtifactLocations (Prelude.Maybe Prelude.Text)
+candidateArtifactLocations_modelInsights = Lens.lens (\CandidateArtifactLocations' {modelInsights} -> modelInsights) (\s@CandidateArtifactLocations' {} a -> s {modelInsights = a} :: CandidateArtifactLocations)
+
+-- | The Amazon S3 prefix to the explainability artifacts generated for the
+-- AutoML candidate.
+candidateArtifactLocations_explainability :: Lens.Lens' CandidateArtifactLocations Prelude.Text
+candidateArtifactLocations_explainability = Lens.lens (\CandidateArtifactLocations' {explainability} -> explainability) (\s@CandidateArtifactLocations' {} a -> s {explainability = a} :: CandidateArtifactLocations)
+
+instance Data.FromJSON CandidateArtifactLocations where
+  parseJSON =
+    Data.withObject
+      "CandidateArtifactLocations"
+      ( \x ->
+          CandidateArtifactLocations'
+            Prelude.<$> (x Data..:? "ModelInsights")
+            Prelude.<*> (x Data..: "Explainability")
+      )
+
+instance Prelude.Hashable CandidateArtifactLocations where
+  hashWithSalt _salt CandidateArtifactLocations' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelInsights
+      `Prelude.hashWithSalt` explainability
+
+instance Prelude.NFData CandidateArtifactLocations where
+  rnf CandidateArtifactLocations' {..} =
+    Prelude.rnf modelInsights
+      `Prelude.seq` Prelude.rnf explainability
diff --git a/gen/Amazonka/SageMaker/Types/CandidateProperties.hs b/gen/Amazonka/SageMaker/Types/CandidateProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CandidateProperties.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CandidateProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CandidateProperties 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 Amazonka.SageMaker.Types.CandidateArtifactLocations
+import Amazonka.SageMaker.Types.MetricDatum
+
+-- | The properties of an AutoML candidate job.
+--
+-- /See:/ 'newCandidateProperties' smart constructor.
+data CandidateProperties = CandidateProperties'
+  { -- | The Amazon S3 prefix to the artifacts generated for an AutoML candidate.
+    candidateArtifactLocations :: Prelude.Maybe CandidateArtifactLocations,
+    -- | Information about the candidate metrics for an AutoML job.
+    candidateMetrics :: Prelude.Maybe [MetricDatum]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CandidateProperties' 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:
+--
+-- 'candidateArtifactLocations', 'candidateProperties_candidateArtifactLocations' - The Amazon S3 prefix to the artifacts generated for an AutoML candidate.
+--
+-- 'candidateMetrics', 'candidateProperties_candidateMetrics' - Information about the candidate metrics for an AutoML job.
+newCandidateProperties ::
+  CandidateProperties
+newCandidateProperties =
+  CandidateProperties'
+    { candidateArtifactLocations =
+        Prelude.Nothing,
+      candidateMetrics = Prelude.Nothing
+    }
+
+-- | The Amazon S3 prefix to the artifacts generated for an AutoML candidate.
+candidateProperties_candidateArtifactLocations :: Lens.Lens' CandidateProperties (Prelude.Maybe CandidateArtifactLocations)
+candidateProperties_candidateArtifactLocations = Lens.lens (\CandidateProperties' {candidateArtifactLocations} -> candidateArtifactLocations) (\s@CandidateProperties' {} a -> s {candidateArtifactLocations = a} :: CandidateProperties)
+
+-- | Information about the candidate metrics for an AutoML job.
+candidateProperties_candidateMetrics :: Lens.Lens' CandidateProperties (Prelude.Maybe [MetricDatum])
+candidateProperties_candidateMetrics = Lens.lens (\CandidateProperties' {candidateMetrics} -> candidateMetrics) (\s@CandidateProperties' {} a -> s {candidateMetrics = a} :: CandidateProperties) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CandidateProperties where
+  parseJSON =
+    Data.withObject
+      "CandidateProperties"
+      ( \x ->
+          CandidateProperties'
+            Prelude.<$> (x Data..:? "CandidateArtifactLocations")
+            Prelude.<*> ( x
+                            Data..:? "CandidateMetrics"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CandidateProperties where
+  hashWithSalt _salt CandidateProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` candidateArtifactLocations
+      `Prelude.hashWithSalt` candidateMetrics
+
+instance Prelude.NFData CandidateProperties where
+  rnf CandidateProperties' {..} =
+    Prelude.rnf candidateArtifactLocations
+      `Prelude.seq` Prelude.rnf candidateMetrics
diff --git a/gen/Amazonka/SageMaker/Types/CandidateSortBy.hs b/gen/Amazonka/SageMaker/Types/CandidateSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CandidateSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CandidateSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CandidateSortBy
+  ( CandidateSortBy
+      ( ..,
+        CandidateSortBy_CreationTime,
+        CandidateSortBy_FinalObjectiveMetricValue,
+        CandidateSortBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CandidateSortBy = CandidateSortBy'
+  { fromCandidateSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CandidateSortBy_CreationTime :: CandidateSortBy
+pattern CandidateSortBy_CreationTime = CandidateSortBy' "CreationTime"
+
+pattern CandidateSortBy_FinalObjectiveMetricValue :: CandidateSortBy
+pattern CandidateSortBy_FinalObjectiveMetricValue = CandidateSortBy' "FinalObjectiveMetricValue"
+
+pattern CandidateSortBy_Status :: CandidateSortBy
+pattern CandidateSortBy_Status = CandidateSortBy' "Status"
+
+{-# COMPLETE
+  CandidateSortBy_CreationTime,
+  CandidateSortBy_FinalObjectiveMetricValue,
+  CandidateSortBy_Status,
+  CandidateSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CandidateStatus.hs b/gen/Amazonka/SageMaker/Types/CandidateStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CandidateStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CandidateStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CandidateStatus
+  ( CandidateStatus
+      ( ..,
+        CandidateStatus_Completed,
+        CandidateStatus_Failed,
+        CandidateStatus_InProgress,
+        CandidateStatus_Stopped,
+        CandidateStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CandidateStatus = CandidateStatus'
+  { fromCandidateStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CandidateStatus_Completed :: CandidateStatus
+pattern CandidateStatus_Completed = CandidateStatus' "Completed"
+
+pattern CandidateStatus_Failed :: CandidateStatus
+pattern CandidateStatus_Failed = CandidateStatus' "Failed"
+
+pattern CandidateStatus_InProgress :: CandidateStatus
+pattern CandidateStatus_InProgress = CandidateStatus' "InProgress"
+
+pattern CandidateStatus_Stopped :: CandidateStatus
+pattern CandidateStatus_Stopped = CandidateStatus' "Stopped"
+
+pattern CandidateStatus_Stopping :: CandidateStatus
+pattern CandidateStatus_Stopping = CandidateStatus' "Stopping"
+
+{-# COMPLETE
+  CandidateStatus_Completed,
+  CandidateStatus_Failed,
+  CandidateStatus_InProgress,
+  CandidateStatus_Stopped,
+  CandidateStatus_Stopping,
+  CandidateStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CandidateStepType.hs b/gen/Amazonka/SageMaker/Types/CandidateStepType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CandidateStepType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CandidateStepType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CandidateStepType
+  ( CandidateStepType
+      ( ..,
+        CandidateStepType_AWS__SageMaker__ProcessingJob,
+        CandidateStepType_AWS__SageMaker__TrainingJob,
+        CandidateStepType_AWS__SageMaker__TransformJob
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CandidateStepType = CandidateStepType'
+  { fromCandidateStepType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CandidateStepType_AWS__SageMaker__ProcessingJob :: CandidateStepType
+pattern CandidateStepType_AWS__SageMaker__ProcessingJob = CandidateStepType' "AWS::SageMaker::ProcessingJob"
+
+pattern CandidateStepType_AWS__SageMaker__TrainingJob :: CandidateStepType
+pattern CandidateStepType_AWS__SageMaker__TrainingJob = CandidateStepType' "AWS::SageMaker::TrainingJob"
+
+pattern CandidateStepType_AWS__SageMaker__TransformJob :: CandidateStepType
+pattern CandidateStepType_AWS__SageMaker__TransformJob = CandidateStepType' "AWS::SageMaker::TransformJob"
+
+{-# COMPLETE
+  CandidateStepType_AWS__SageMaker__ProcessingJob,
+  CandidateStepType_AWS__SageMaker__TrainingJob,
+  CandidateStepType_AWS__SageMaker__TransformJob,
+  CandidateStepType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CanvasAppSettings.hs b/gen/Amazonka/SageMaker/Types/CanvasAppSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CanvasAppSettings.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CanvasAppSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CanvasAppSettings 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 Amazonka.SageMaker.Types.TimeSeriesForecastingSettings
+
+-- | The SageMaker Canvas app settings.
+--
+-- /See:/ 'newCanvasAppSettings' smart constructor.
+data CanvasAppSettings = CanvasAppSettings'
+  { -- | Time series forecast settings for the Canvas app.
+    timeSeriesForecastingSettings :: Prelude.Maybe TimeSeriesForecastingSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CanvasAppSettings' 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:
+--
+-- 'timeSeriesForecastingSettings', 'canvasAppSettings_timeSeriesForecastingSettings' - Time series forecast settings for the Canvas app.
+newCanvasAppSettings ::
+  CanvasAppSettings
+newCanvasAppSettings =
+  CanvasAppSettings'
+    { timeSeriesForecastingSettings =
+        Prelude.Nothing
+    }
+
+-- | Time series forecast settings for the Canvas app.
+canvasAppSettings_timeSeriesForecastingSettings :: Lens.Lens' CanvasAppSettings (Prelude.Maybe TimeSeriesForecastingSettings)
+canvasAppSettings_timeSeriesForecastingSettings = Lens.lens (\CanvasAppSettings' {timeSeriesForecastingSettings} -> timeSeriesForecastingSettings) (\s@CanvasAppSettings' {} a -> s {timeSeriesForecastingSettings = a} :: CanvasAppSettings)
+
+instance Data.FromJSON CanvasAppSettings where
+  parseJSON =
+    Data.withObject
+      "CanvasAppSettings"
+      ( \x ->
+          CanvasAppSettings'
+            Prelude.<$> (x Data..:? "TimeSeriesForecastingSettings")
+      )
+
+instance Prelude.Hashable CanvasAppSettings where
+  hashWithSalt _salt CanvasAppSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` timeSeriesForecastingSettings
+
+instance Prelude.NFData CanvasAppSettings where
+  rnf CanvasAppSettings' {..} =
+    Prelude.rnf timeSeriesForecastingSettings
+
+instance Data.ToJSON CanvasAppSettings where
+  toJSON CanvasAppSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TimeSeriesForecastingSettings" Data..=)
+              Prelude.<$> timeSeriesForecastingSettings
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CapacitySize.hs b/gen/Amazonka/SageMaker/Types/CapacitySize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CapacitySize.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CapacitySize
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CapacitySize 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 Amazonka.SageMaker.Types.CapacitySizeType
+
+-- | Specifies the endpoint capacity to activate for production.
+--
+-- /See:/ 'newCapacitySize' smart constructor.
+data CapacitySize = CapacitySize'
+  { -- | Specifies the endpoint capacity type.
+    --
+    -- -   @INSTANCE_COUNT@: The endpoint activates based on the number of
+    --     instances.
+    --
+    -- -   @CAPACITY_PERCENT@: The endpoint activates based on the specified
+    --     percentage of capacity.
+    type' :: CapacitySizeType,
+    -- | Defines the capacity size, either as a number of instances or a capacity
+    -- percentage.
+    value :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CapacitySize' 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:
+--
+-- 'type'', 'capacitySize_type' - Specifies the endpoint capacity type.
+--
+-- -   @INSTANCE_COUNT@: The endpoint activates based on the number of
+--     instances.
+--
+-- -   @CAPACITY_PERCENT@: The endpoint activates based on the specified
+--     percentage of capacity.
+--
+-- 'value', 'capacitySize_value' - Defines the capacity size, either as a number of instances or a capacity
+-- percentage.
+newCapacitySize ::
+  -- | 'type''
+  CapacitySizeType ->
+  -- | 'value'
+  Prelude.Natural ->
+  CapacitySize
+newCapacitySize pType_ pValue_ =
+  CapacitySize' {type' = pType_, value = pValue_}
+
+-- | Specifies the endpoint capacity type.
+--
+-- -   @INSTANCE_COUNT@: The endpoint activates based on the number of
+--     instances.
+--
+-- -   @CAPACITY_PERCENT@: The endpoint activates based on the specified
+--     percentage of capacity.
+capacitySize_type :: Lens.Lens' CapacitySize CapacitySizeType
+capacitySize_type = Lens.lens (\CapacitySize' {type'} -> type') (\s@CapacitySize' {} a -> s {type' = a} :: CapacitySize)
+
+-- | Defines the capacity size, either as a number of instances or a capacity
+-- percentage.
+capacitySize_value :: Lens.Lens' CapacitySize Prelude.Natural
+capacitySize_value = Lens.lens (\CapacitySize' {value} -> value) (\s@CapacitySize' {} a -> s {value = a} :: CapacitySize)
+
+instance Data.FromJSON CapacitySize where
+  parseJSON =
+    Data.withObject
+      "CapacitySize"
+      ( \x ->
+          CapacitySize'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable CapacitySize where
+  hashWithSalt _salt CapacitySize' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData CapacitySize where
+  rnf CapacitySize' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON CapacitySize where
+  toJSON CapacitySize' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CapacitySizeType.hs b/gen/Amazonka/SageMaker/Types/CapacitySizeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CapacitySizeType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CapacitySizeType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CapacitySizeType
+  ( CapacitySizeType
+      ( ..,
+        CapacitySizeType_CAPACITY_PERCENT,
+        CapacitySizeType_INSTANCE_COUNT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CapacitySizeType = CapacitySizeType'
+  { fromCapacitySizeType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CapacitySizeType_CAPACITY_PERCENT :: CapacitySizeType
+pattern CapacitySizeType_CAPACITY_PERCENT = CapacitySizeType' "CAPACITY_PERCENT"
+
+pattern CapacitySizeType_INSTANCE_COUNT :: CapacitySizeType
+pattern CapacitySizeType_INSTANCE_COUNT = CapacitySizeType' "INSTANCE_COUNT"
+
+{-# COMPLETE
+  CapacitySizeType_CAPACITY_PERCENT,
+  CapacitySizeType_INSTANCE_COUNT,
+  CapacitySizeType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CaptureContentTypeHeader.hs b/gen/Amazonka/SageMaker/Types/CaptureContentTypeHeader.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CaptureContentTypeHeader.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CaptureContentTypeHeader
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CaptureContentTypeHeader 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
+
+-- | Configuration specifying how to treat different headers. If no headers
+-- are specified SageMaker will by default base64 encode when capturing the
+-- data.
+--
+-- /See:/ 'newCaptureContentTypeHeader' smart constructor.
+data CaptureContentTypeHeader = CaptureContentTypeHeader'
+  { -- | The list of all content type headers that SageMaker will treat as CSV
+    -- and capture accordingly.
+    csvContentTypes :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The list of all content type headers that SageMaker will treat as JSON
+    -- and capture accordingly.
+    jsonContentTypes :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptureContentTypeHeader' 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:
+--
+-- 'csvContentTypes', 'captureContentTypeHeader_csvContentTypes' - The list of all content type headers that SageMaker will treat as CSV
+-- and capture accordingly.
+--
+-- 'jsonContentTypes', 'captureContentTypeHeader_jsonContentTypes' - The list of all content type headers that SageMaker will treat as JSON
+-- and capture accordingly.
+newCaptureContentTypeHeader ::
+  CaptureContentTypeHeader
+newCaptureContentTypeHeader =
+  CaptureContentTypeHeader'
+    { csvContentTypes =
+        Prelude.Nothing,
+      jsonContentTypes = Prelude.Nothing
+    }
+
+-- | The list of all content type headers that SageMaker will treat as CSV
+-- and capture accordingly.
+captureContentTypeHeader_csvContentTypes :: Lens.Lens' CaptureContentTypeHeader (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+captureContentTypeHeader_csvContentTypes = Lens.lens (\CaptureContentTypeHeader' {csvContentTypes} -> csvContentTypes) (\s@CaptureContentTypeHeader' {} a -> s {csvContentTypes = a} :: CaptureContentTypeHeader) Prelude.. Lens.mapping Lens.coerced
+
+-- | The list of all content type headers that SageMaker will treat as JSON
+-- and capture accordingly.
+captureContentTypeHeader_jsonContentTypes :: Lens.Lens' CaptureContentTypeHeader (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+captureContentTypeHeader_jsonContentTypes = Lens.lens (\CaptureContentTypeHeader' {jsonContentTypes} -> jsonContentTypes) (\s@CaptureContentTypeHeader' {} a -> s {jsonContentTypes = a} :: CaptureContentTypeHeader) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CaptureContentTypeHeader where
+  parseJSON =
+    Data.withObject
+      "CaptureContentTypeHeader"
+      ( \x ->
+          CaptureContentTypeHeader'
+            Prelude.<$> (x Data..:? "CsvContentTypes")
+            Prelude.<*> (x Data..:? "JsonContentTypes")
+      )
+
+instance Prelude.Hashable CaptureContentTypeHeader where
+  hashWithSalt _salt CaptureContentTypeHeader' {..} =
+    _salt
+      `Prelude.hashWithSalt` csvContentTypes
+      `Prelude.hashWithSalt` jsonContentTypes
+
+instance Prelude.NFData CaptureContentTypeHeader where
+  rnf CaptureContentTypeHeader' {..} =
+    Prelude.rnf csvContentTypes
+      `Prelude.seq` Prelude.rnf jsonContentTypes
+
+instance Data.ToJSON CaptureContentTypeHeader where
+  toJSON CaptureContentTypeHeader' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CsvContentTypes" Data..=)
+              Prelude.<$> csvContentTypes,
+            ("JsonContentTypes" Data..=)
+              Prelude.<$> jsonContentTypes
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CaptureMode.hs b/gen/Amazonka/SageMaker/Types/CaptureMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CaptureMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CaptureMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CaptureMode
+  ( CaptureMode
+      ( ..,
+        CaptureMode_Input,
+        CaptureMode_Output
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CaptureMode = CaptureMode'
+  { fromCaptureMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CaptureMode_Input :: CaptureMode
+pattern CaptureMode_Input = CaptureMode' "Input"
+
+pattern CaptureMode_Output :: CaptureMode
+pattern CaptureMode_Output = CaptureMode' "Output"
+
+{-# COMPLETE
+  CaptureMode_Input,
+  CaptureMode_Output,
+  CaptureMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CaptureOption.hs b/gen/Amazonka/SageMaker/Types/CaptureOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CaptureOption.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CaptureOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CaptureOption 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 Amazonka.SageMaker.Types.CaptureMode
+
+-- | Specifies data Model Monitor will capture.
+--
+-- /See:/ 'newCaptureOption' smart constructor.
+data CaptureOption = CaptureOption'
+  { -- | Specify the boundary of data to capture.
+    captureMode :: CaptureMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CaptureOption' 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:
+--
+-- 'captureMode', 'captureOption_captureMode' - Specify the boundary of data to capture.
+newCaptureOption ::
+  -- | 'captureMode'
+  CaptureMode ->
+  CaptureOption
+newCaptureOption pCaptureMode_ =
+  CaptureOption' {captureMode = pCaptureMode_}
+
+-- | Specify the boundary of data to capture.
+captureOption_captureMode :: Lens.Lens' CaptureOption CaptureMode
+captureOption_captureMode = Lens.lens (\CaptureOption' {captureMode} -> captureMode) (\s@CaptureOption' {} a -> s {captureMode = a} :: CaptureOption)
+
+instance Data.FromJSON CaptureOption where
+  parseJSON =
+    Data.withObject
+      "CaptureOption"
+      ( \x ->
+          CaptureOption' Prelude.<$> (x Data..: "CaptureMode")
+      )
+
+instance Prelude.Hashable CaptureOption where
+  hashWithSalt _salt CaptureOption' {..} =
+    _salt `Prelude.hashWithSalt` captureMode
+
+instance Prelude.NFData CaptureOption where
+  rnf CaptureOption' {..} = Prelude.rnf captureMode
+
+instance Data.ToJSON CaptureOption where
+  toJSON CaptureOption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("CaptureMode" Data..= captureMode)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CaptureStatus.hs b/gen/Amazonka/SageMaker/Types/CaptureStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CaptureStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CaptureStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CaptureStatus
+  ( CaptureStatus
+      ( ..,
+        CaptureStatus_Started,
+        CaptureStatus_Stopped
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CaptureStatus = CaptureStatus'
+  { fromCaptureStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CaptureStatus_Started :: CaptureStatus
+pattern CaptureStatus_Started = CaptureStatus' "Started"
+
+pattern CaptureStatus_Stopped :: CaptureStatus
+pattern CaptureStatus_Stopped = CaptureStatus' "Stopped"
+
+{-# COMPLETE
+  CaptureStatus_Started,
+  CaptureStatus_Stopped,
+  CaptureStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CategoricalParameter.hs b/gen/Amazonka/SageMaker/Types/CategoricalParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CategoricalParameter.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CategoricalParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CategoricalParameter 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
+
+-- | Environment parameters you want to benchmark your load test against.
+--
+-- /See:/ 'newCategoricalParameter' smart constructor.
+data CategoricalParameter = CategoricalParameter'
+  { -- | The Name of the environment variable.
+    name :: Prelude.Text,
+    -- | The list of values you can pass.
+    value :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoricalParameter' 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:
+--
+-- 'name', 'categoricalParameter_name' - The Name of the environment variable.
+--
+-- 'value', 'categoricalParameter_value' - The list of values you can pass.
+newCategoricalParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.NonEmpty Prelude.Text ->
+  CategoricalParameter
+newCategoricalParameter pName_ pValue_ =
+  CategoricalParameter'
+    { name = pName_,
+      value = Lens.coerced Lens.# pValue_
+    }
+
+-- | The Name of the environment variable.
+categoricalParameter_name :: Lens.Lens' CategoricalParameter Prelude.Text
+categoricalParameter_name = Lens.lens (\CategoricalParameter' {name} -> name) (\s@CategoricalParameter' {} a -> s {name = a} :: CategoricalParameter)
+
+-- | The list of values you can pass.
+categoricalParameter_value :: Lens.Lens' CategoricalParameter (Prelude.NonEmpty Prelude.Text)
+categoricalParameter_value = Lens.lens (\CategoricalParameter' {value} -> value) (\s@CategoricalParameter' {} a -> s {value = a} :: CategoricalParameter) Prelude.. Lens.coerced
+
+instance Data.FromJSON CategoricalParameter where
+  parseJSON =
+    Data.withObject
+      "CategoricalParameter"
+      ( \x ->
+          CategoricalParameter'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable CategoricalParameter where
+  hashWithSalt _salt CategoricalParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData CategoricalParameter where
+  rnf CategoricalParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON CategoricalParameter where
+  toJSON CategoricalParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CategoricalParameterRange.hs b/gen/Amazonka/SageMaker/Types/CategoricalParameterRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CategoricalParameterRange.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CategoricalParameterRange
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CategoricalParameterRange 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
+
+-- | A list of categorical hyperparameters to tune.
+--
+-- /See:/ 'newCategoricalParameterRange' smart constructor.
+data CategoricalParameterRange = CategoricalParameterRange'
+  { -- | The name of the categorical hyperparameter to tune.
+    name :: Prelude.Text,
+    -- | A list of the categories for the hyperparameter.
+    values :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoricalParameterRange' 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:
+--
+-- 'name', 'categoricalParameterRange_name' - The name of the categorical hyperparameter to tune.
+--
+-- 'values', 'categoricalParameterRange_values' - A list of the categories for the hyperparameter.
+newCategoricalParameterRange ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'values'
+  Prelude.NonEmpty Prelude.Text ->
+  CategoricalParameterRange
+newCategoricalParameterRange pName_ pValues_ =
+  CategoricalParameterRange'
+    { name = pName_,
+      values = Lens.coerced Lens.# pValues_
+    }
+
+-- | The name of the categorical hyperparameter to tune.
+categoricalParameterRange_name :: Lens.Lens' CategoricalParameterRange Prelude.Text
+categoricalParameterRange_name = Lens.lens (\CategoricalParameterRange' {name} -> name) (\s@CategoricalParameterRange' {} a -> s {name = a} :: CategoricalParameterRange)
+
+-- | A list of the categories for the hyperparameter.
+categoricalParameterRange_values :: Lens.Lens' CategoricalParameterRange (Prelude.NonEmpty Prelude.Text)
+categoricalParameterRange_values = Lens.lens (\CategoricalParameterRange' {values} -> values) (\s@CategoricalParameterRange' {} a -> s {values = a} :: CategoricalParameterRange) Prelude.. Lens.coerced
+
+instance Data.FromJSON CategoricalParameterRange where
+  parseJSON =
+    Data.withObject
+      "CategoricalParameterRange"
+      ( \x ->
+          CategoricalParameterRange'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Values")
+      )
+
+instance Prelude.Hashable CategoricalParameterRange where
+  hashWithSalt _salt CategoricalParameterRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData CategoricalParameterRange where
+  rnf CategoricalParameterRange' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON CategoricalParameterRange where
+  toJSON CategoricalParameterRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CategoricalParameterRangeSpecification.hs b/gen/Amazonka/SageMaker/Types/CategoricalParameterRangeSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CategoricalParameterRangeSpecification.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CategoricalParameterRangeSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CategoricalParameterRangeSpecification 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
+
+-- | Defines the possible values for a categorical hyperparameter.
+--
+-- /See:/ 'newCategoricalParameterRangeSpecification' smart constructor.
+data CategoricalParameterRangeSpecification = CategoricalParameterRangeSpecification'
+  { -- | The allowed categories for the hyperparameter.
+    values :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoricalParameterRangeSpecification' 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:
+--
+-- 'values', 'categoricalParameterRangeSpecification_values' - The allowed categories for the hyperparameter.
+newCategoricalParameterRangeSpecification ::
+  -- | 'values'
+  Prelude.NonEmpty Prelude.Text ->
+  CategoricalParameterRangeSpecification
+newCategoricalParameterRangeSpecification pValues_ =
+  CategoricalParameterRangeSpecification'
+    { values =
+        Lens.coerced Lens.# pValues_
+    }
+
+-- | The allowed categories for the hyperparameter.
+categoricalParameterRangeSpecification_values :: Lens.Lens' CategoricalParameterRangeSpecification (Prelude.NonEmpty Prelude.Text)
+categoricalParameterRangeSpecification_values = Lens.lens (\CategoricalParameterRangeSpecification' {values} -> values) (\s@CategoricalParameterRangeSpecification' {} a -> s {values = a} :: CategoricalParameterRangeSpecification) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    CategoricalParameterRangeSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "CategoricalParameterRangeSpecification"
+      ( \x ->
+          CategoricalParameterRangeSpecification'
+            Prelude.<$> (x Data..: "Values")
+      )
+
+instance
+  Prelude.Hashable
+    CategoricalParameterRangeSpecification
+  where
+  hashWithSalt
+    _salt
+    CategoricalParameterRangeSpecification' {..} =
+      _salt `Prelude.hashWithSalt` values
+
+instance
+  Prelude.NFData
+    CategoricalParameterRangeSpecification
+  where
+  rnf CategoricalParameterRangeSpecification' {..} =
+    Prelude.rnf values
+
+instance
+  Data.ToJSON
+    CategoricalParameterRangeSpecification
+  where
+  toJSON CategoricalParameterRangeSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Values" Data..= values)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Channel.hs b/gen/Amazonka/SageMaker/Types/Channel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Channel.hs
@@ -0,0 +1,268 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Channel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Channel 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 Amazonka.SageMaker.Types.CompressionType
+import Amazonka.SageMaker.Types.DataSource
+import Amazonka.SageMaker.Types.RecordWrapper
+import Amazonka.SageMaker.Types.ShuffleConfig
+import Amazonka.SageMaker.Types.TrainingInputMode
+
+-- | A channel is a named input source that training algorithms can consume.
+--
+-- /See:/ 'newChannel' smart constructor.
+data Channel = Channel'
+  { -- | If training data is compressed, the compression type. The default value
+    -- is @None@. @CompressionType@ is used only in Pipe input mode. In File
+    -- mode, leave this field unset or set it to None.
+    compressionType :: Prelude.Maybe CompressionType,
+    -- | The MIME type of the data.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) The input mode to use for the data channel in a training job.
+    -- If you don\'t set a value for @InputMode@, SageMaker uses the value set
+    -- for @TrainingInputMode@. Use this parameter to override the
+    -- @TrainingInputMode@ setting in a AlgorithmSpecification request when you
+    -- have a channel that needs a different input mode from the training
+    -- job\'s general setting. To download the data from Amazon Simple Storage
+    -- Service (Amazon S3) to the provisioned ML storage volume, and mount the
+    -- directory to a Docker volume, use @File@ input mode. To stream data
+    -- directly from Amazon S3 to the container, choose @Pipe@ input mode.
+    --
+    -- To use a model for incremental training, choose @File@ input model.
+    inputMode :: Prelude.Maybe TrainingInputMode,
+    -- | Specify RecordIO as the value when input data is in raw format but the
+    -- training algorithm requires the RecordIO format. In this case, SageMaker
+    -- wraps each individual S3 object in a RecordIO record. If the input data
+    -- is already in RecordIO format, you don\'t need to set this attribute.
+    -- For more information, see
+    -- <https://mxnet.apache.org/api/architecture/note_data_loading#data-format Create a Dataset Using RecordIO>.
+    --
+    -- In File mode, leave this field unset or set it to None.
+    recordWrapperType :: Prelude.Maybe RecordWrapper,
+    -- | A configuration for a shuffle option for input data in a channel. If you
+    -- use @S3Prefix@ for @S3DataType@, this shuffles the results of the S3 key
+    -- prefix matches. If you use @ManifestFile@, the order of the S3 object
+    -- references in the @ManifestFile@ is shuffled. If you use
+    -- @AugmentedManifestFile@, the order of the JSON lines in the
+    -- @AugmentedManifestFile@ is shuffled. The shuffling order is determined
+    -- using the @Seed@ value.
+    --
+    -- For Pipe input mode, shuffling is done at the start of every epoch. With
+    -- large datasets this ensures that the order of the training data is
+    -- different for each epoch, it helps reduce bias and possible overfitting.
+    -- In a multi-node training job when ShuffleConfig is combined with
+    -- @S3DataDistributionType@ of @ShardedByS3Key@, the data is shuffled
+    -- across nodes so that the content sent to a particular node on the first
+    -- epoch might be sent to a different node on the second epoch.
+    shuffleConfig :: Prelude.Maybe ShuffleConfig,
+    -- | The name of the channel.
+    channelName :: Prelude.Text,
+    -- | The location of the channel data.
+    dataSource :: DataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Channel' 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:
+--
+-- 'compressionType', 'channel_compressionType' - If training data is compressed, the compression type. The default value
+-- is @None@. @CompressionType@ is used only in Pipe input mode. In File
+-- mode, leave this field unset or set it to None.
+--
+-- 'contentType', 'channel_contentType' - The MIME type of the data.
+--
+-- 'inputMode', 'channel_inputMode' - (Optional) The input mode to use for the data channel in a training job.
+-- If you don\'t set a value for @InputMode@, SageMaker uses the value set
+-- for @TrainingInputMode@. Use this parameter to override the
+-- @TrainingInputMode@ setting in a AlgorithmSpecification request when you
+-- have a channel that needs a different input mode from the training
+-- job\'s general setting. To download the data from Amazon Simple Storage
+-- Service (Amazon S3) to the provisioned ML storage volume, and mount the
+-- directory to a Docker volume, use @File@ input mode. To stream data
+-- directly from Amazon S3 to the container, choose @Pipe@ input mode.
+--
+-- To use a model for incremental training, choose @File@ input model.
+--
+-- 'recordWrapperType', 'channel_recordWrapperType' - Specify RecordIO as the value when input data is in raw format but the
+-- training algorithm requires the RecordIO format. In this case, SageMaker
+-- wraps each individual S3 object in a RecordIO record. If the input data
+-- is already in RecordIO format, you don\'t need to set this attribute.
+-- For more information, see
+-- <https://mxnet.apache.org/api/architecture/note_data_loading#data-format Create a Dataset Using RecordIO>.
+--
+-- In File mode, leave this field unset or set it to None.
+--
+-- 'shuffleConfig', 'channel_shuffleConfig' - A configuration for a shuffle option for input data in a channel. If you
+-- use @S3Prefix@ for @S3DataType@, this shuffles the results of the S3 key
+-- prefix matches. If you use @ManifestFile@, the order of the S3 object
+-- references in the @ManifestFile@ is shuffled. If you use
+-- @AugmentedManifestFile@, the order of the JSON lines in the
+-- @AugmentedManifestFile@ is shuffled. The shuffling order is determined
+-- using the @Seed@ value.
+--
+-- For Pipe input mode, shuffling is done at the start of every epoch. With
+-- large datasets this ensures that the order of the training data is
+-- different for each epoch, it helps reduce bias and possible overfitting.
+-- In a multi-node training job when ShuffleConfig is combined with
+-- @S3DataDistributionType@ of @ShardedByS3Key@, the data is shuffled
+-- across nodes so that the content sent to a particular node on the first
+-- epoch might be sent to a different node on the second epoch.
+--
+-- 'channelName', 'channel_channelName' - The name of the channel.
+--
+-- 'dataSource', 'channel_dataSource' - The location of the channel data.
+newChannel ::
+  -- | 'channelName'
+  Prelude.Text ->
+  -- | 'dataSource'
+  DataSource ->
+  Channel
+newChannel pChannelName_ pDataSource_ =
+  Channel'
+    { compressionType = Prelude.Nothing,
+      contentType = Prelude.Nothing,
+      inputMode = Prelude.Nothing,
+      recordWrapperType = Prelude.Nothing,
+      shuffleConfig = Prelude.Nothing,
+      channelName = pChannelName_,
+      dataSource = pDataSource_
+    }
+
+-- | If training data is compressed, the compression type. The default value
+-- is @None@. @CompressionType@ is used only in Pipe input mode. In File
+-- mode, leave this field unset or set it to None.
+channel_compressionType :: Lens.Lens' Channel (Prelude.Maybe CompressionType)
+channel_compressionType = Lens.lens (\Channel' {compressionType} -> compressionType) (\s@Channel' {} a -> s {compressionType = a} :: Channel)
+
+-- | The MIME type of the data.
+channel_contentType :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_contentType = Lens.lens (\Channel' {contentType} -> contentType) (\s@Channel' {} a -> s {contentType = a} :: Channel)
+
+-- | (Optional) The input mode to use for the data channel in a training job.
+-- If you don\'t set a value for @InputMode@, SageMaker uses the value set
+-- for @TrainingInputMode@. Use this parameter to override the
+-- @TrainingInputMode@ setting in a AlgorithmSpecification request when you
+-- have a channel that needs a different input mode from the training
+-- job\'s general setting. To download the data from Amazon Simple Storage
+-- Service (Amazon S3) to the provisioned ML storage volume, and mount the
+-- directory to a Docker volume, use @File@ input mode. To stream data
+-- directly from Amazon S3 to the container, choose @Pipe@ input mode.
+--
+-- To use a model for incremental training, choose @File@ input model.
+channel_inputMode :: Lens.Lens' Channel (Prelude.Maybe TrainingInputMode)
+channel_inputMode = Lens.lens (\Channel' {inputMode} -> inputMode) (\s@Channel' {} a -> s {inputMode = a} :: Channel)
+
+-- | Specify RecordIO as the value when input data is in raw format but the
+-- training algorithm requires the RecordIO format. In this case, SageMaker
+-- wraps each individual S3 object in a RecordIO record. If the input data
+-- is already in RecordIO format, you don\'t need to set this attribute.
+-- For more information, see
+-- <https://mxnet.apache.org/api/architecture/note_data_loading#data-format Create a Dataset Using RecordIO>.
+--
+-- In File mode, leave this field unset or set it to None.
+channel_recordWrapperType :: Lens.Lens' Channel (Prelude.Maybe RecordWrapper)
+channel_recordWrapperType = Lens.lens (\Channel' {recordWrapperType} -> recordWrapperType) (\s@Channel' {} a -> s {recordWrapperType = a} :: Channel)
+
+-- | A configuration for a shuffle option for input data in a channel. If you
+-- use @S3Prefix@ for @S3DataType@, this shuffles the results of the S3 key
+-- prefix matches. If you use @ManifestFile@, the order of the S3 object
+-- references in the @ManifestFile@ is shuffled. If you use
+-- @AugmentedManifestFile@, the order of the JSON lines in the
+-- @AugmentedManifestFile@ is shuffled. The shuffling order is determined
+-- using the @Seed@ value.
+--
+-- For Pipe input mode, shuffling is done at the start of every epoch. With
+-- large datasets this ensures that the order of the training data is
+-- different for each epoch, it helps reduce bias and possible overfitting.
+-- In a multi-node training job when ShuffleConfig is combined with
+-- @S3DataDistributionType@ of @ShardedByS3Key@, the data is shuffled
+-- across nodes so that the content sent to a particular node on the first
+-- epoch might be sent to a different node on the second epoch.
+channel_shuffleConfig :: Lens.Lens' Channel (Prelude.Maybe ShuffleConfig)
+channel_shuffleConfig = Lens.lens (\Channel' {shuffleConfig} -> shuffleConfig) (\s@Channel' {} a -> s {shuffleConfig = a} :: Channel)
+
+-- | The name of the channel.
+channel_channelName :: Lens.Lens' Channel Prelude.Text
+channel_channelName = Lens.lens (\Channel' {channelName} -> channelName) (\s@Channel' {} a -> s {channelName = a} :: Channel)
+
+-- | The location of the channel data.
+channel_dataSource :: Lens.Lens' Channel DataSource
+channel_dataSource = Lens.lens (\Channel' {dataSource} -> dataSource) (\s@Channel' {} a -> s {dataSource = a} :: Channel)
+
+instance Data.FromJSON Channel where
+  parseJSON =
+    Data.withObject
+      "Channel"
+      ( \x ->
+          Channel'
+            Prelude.<$> (x Data..:? "CompressionType")
+            Prelude.<*> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..:? "InputMode")
+            Prelude.<*> (x Data..:? "RecordWrapperType")
+            Prelude.<*> (x Data..:? "ShuffleConfig")
+            Prelude.<*> (x Data..: "ChannelName")
+            Prelude.<*> (x Data..: "DataSource")
+      )
+
+instance Prelude.Hashable Channel where
+  hashWithSalt _salt Channel' {..} =
+    _salt
+      `Prelude.hashWithSalt` compressionType
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` inputMode
+      `Prelude.hashWithSalt` recordWrapperType
+      `Prelude.hashWithSalt` shuffleConfig
+      `Prelude.hashWithSalt` channelName
+      `Prelude.hashWithSalt` dataSource
+
+instance Prelude.NFData Channel where
+  rnf Channel' {..} =
+    Prelude.rnf compressionType
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf inputMode
+      `Prelude.seq` Prelude.rnf recordWrapperType
+      `Prelude.seq` Prelude.rnf shuffleConfig
+      `Prelude.seq` Prelude.rnf channelName
+      `Prelude.seq` Prelude.rnf dataSource
+
+instance Data.ToJSON Channel where
+  toJSON Channel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CompressionType" Data..=)
+              Prelude.<$> compressionType,
+            ("ContentType" Data..=) Prelude.<$> contentType,
+            ("InputMode" Data..=) Prelude.<$> inputMode,
+            ("RecordWrapperType" Data..=)
+              Prelude.<$> recordWrapperType,
+            ("ShuffleConfig" Data..=) Prelude.<$> shuffleConfig,
+            Prelude.Just ("ChannelName" Data..= channelName),
+            Prelude.Just ("DataSource" Data..= dataSource)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ChannelSpecification.hs b/gen/Amazonka/SageMaker/Types/ChannelSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ChannelSpecification.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ChannelSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ChannelSpecification 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 Amazonka.SageMaker.Types.CompressionType
+import Amazonka.SageMaker.Types.TrainingInputMode
+
+-- | Defines a named input source, called a channel, to be used by an
+-- algorithm.
+--
+-- /See:/ 'newChannelSpecification' smart constructor.
+data ChannelSpecification = ChannelSpecification'
+  { -- | A brief description of the channel.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the channel is required by the algorithm.
+    isRequired :: Prelude.Maybe Prelude.Bool,
+    -- | The allowed compression types, if data compression is used.
+    supportedCompressionTypes :: Prelude.Maybe [CompressionType],
+    -- | The name of the channel.
+    name :: Prelude.Text,
+    -- | The supported MIME types for the data.
+    supportedContentTypes :: [Prelude.Text],
+    -- | The allowed input mode, either FILE or PIPE.
+    --
+    -- In FILE mode, Amazon SageMaker copies the data from the input source
+    -- onto the local Amazon Elastic Block Store (Amazon EBS) volumes before
+    -- starting your training algorithm. This is the most commonly used input
+    -- mode.
+    --
+    -- In PIPE mode, Amazon SageMaker streams input data from the source
+    -- directly to your algorithm without using the EBS volume.
+    supportedInputModes :: Prelude.NonEmpty TrainingInputMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChannelSpecification' 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:
+--
+-- 'description', 'channelSpecification_description' - A brief description of the channel.
+--
+-- 'isRequired', 'channelSpecification_isRequired' - Indicates whether the channel is required by the algorithm.
+--
+-- 'supportedCompressionTypes', 'channelSpecification_supportedCompressionTypes' - The allowed compression types, if data compression is used.
+--
+-- 'name', 'channelSpecification_name' - The name of the channel.
+--
+-- 'supportedContentTypes', 'channelSpecification_supportedContentTypes' - The supported MIME types for the data.
+--
+-- 'supportedInputModes', 'channelSpecification_supportedInputModes' - The allowed input mode, either FILE or PIPE.
+--
+-- In FILE mode, Amazon SageMaker copies the data from the input source
+-- onto the local Amazon Elastic Block Store (Amazon EBS) volumes before
+-- starting your training algorithm. This is the most commonly used input
+-- mode.
+--
+-- In PIPE mode, Amazon SageMaker streams input data from the source
+-- directly to your algorithm without using the EBS volume.
+newChannelSpecification ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'supportedInputModes'
+  Prelude.NonEmpty TrainingInputMode ->
+  ChannelSpecification
+newChannelSpecification pName_ pSupportedInputModes_ =
+  ChannelSpecification'
+    { description =
+        Prelude.Nothing,
+      isRequired = Prelude.Nothing,
+      supportedCompressionTypes = Prelude.Nothing,
+      name = pName_,
+      supportedContentTypes = Prelude.mempty,
+      supportedInputModes =
+        Lens.coerced Lens.# pSupportedInputModes_
+    }
+
+-- | A brief description of the channel.
+channelSpecification_description :: Lens.Lens' ChannelSpecification (Prelude.Maybe Prelude.Text)
+channelSpecification_description = Lens.lens (\ChannelSpecification' {description} -> description) (\s@ChannelSpecification' {} a -> s {description = a} :: ChannelSpecification)
+
+-- | Indicates whether the channel is required by the algorithm.
+channelSpecification_isRequired :: Lens.Lens' ChannelSpecification (Prelude.Maybe Prelude.Bool)
+channelSpecification_isRequired = Lens.lens (\ChannelSpecification' {isRequired} -> isRequired) (\s@ChannelSpecification' {} a -> s {isRequired = a} :: ChannelSpecification)
+
+-- | The allowed compression types, if data compression is used.
+channelSpecification_supportedCompressionTypes :: Lens.Lens' ChannelSpecification (Prelude.Maybe [CompressionType])
+channelSpecification_supportedCompressionTypes = Lens.lens (\ChannelSpecification' {supportedCompressionTypes} -> supportedCompressionTypes) (\s@ChannelSpecification' {} a -> s {supportedCompressionTypes = a} :: ChannelSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the channel.
+channelSpecification_name :: Lens.Lens' ChannelSpecification Prelude.Text
+channelSpecification_name = Lens.lens (\ChannelSpecification' {name} -> name) (\s@ChannelSpecification' {} a -> s {name = a} :: ChannelSpecification)
+
+-- | The supported MIME types for the data.
+channelSpecification_supportedContentTypes :: Lens.Lens' ChannelSpecification [Prelude.Text]
+channelSpecification_supportedContentTypes = Lens.lens (\ChannelSpecification' {supportedContentTypes} -> supportedContentTypes) (\s@ChannelSpecification' {} a -> s {supportedContentTypes = a} :: ChannelSpecification) Prelude.. Lens.coerced
+
+-- | The allowed input mode, either FILE or PIPE.
+--
+-- In FILE mode, Amazon SageMaker copies the data from the input source
+-- onto the local Amazon Elastic Block Store (Amazon EBS) volumes before
+-- starting your training algorithm. This is the most commonly used input
+-- mode.
+--
+-- In PIPE mode, Amazon SageMaker streams input data from the source
+-- directly to your algorithm without using the EBS volume.
+channelSpecification_supportedInputModes :: Lens.Lens' ChannelSpecification (Prelude.NonEmpty TrainingInputMode)
+channelSpecification_supportedInputModes = Lens.lens (\ChannelSpecification' {supportedInputModes} -> supportedInputModes) (\s@ChannelSpecification' {} a -> s {supportedInputModes = a} :: ChannelSpecification) Prelude.. Lens.coerced
+
+instance Data.FromJSON ChannelSpecification where
+  parseJSON =
+    Data.withObject
+      "ChannelSpecification"
+      ( \x ->
+          ChannelSpecification'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "IsRequired")
+            Prelude.<*> ( x
+                            Data..:? "SupportedCompressionTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> ( x
+                            Data..:? "SupportedContentTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "SupportedInputModes")
+      )
+
+instance Prelude.Hashable ChannelSpecification where
+  hashWithSalt _salt ChannelSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` isRequired
+      `Prelude.hashWithSalt` supportedCompressionTypes
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` supportedContentTypes
+      `Prelude.hashWithSalt` supportedInputModes
+
+instance Prelude.NFData ChannelSpecification where
+  rnf ChannelSpecification' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf isRequired
+      `Prelude.seq` Prelude.rnf supportedCompressionTypes
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf supportedContentTypes
+      `Prelude.seq` Prelude.rnf supportedInputModes
+
+instance Data.ToJSON ChannelSpecification where
+  toJSON ChannelSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("IsRequired" Data..=) Prelude.<$> isRequired,
+            ("SupportedCompressionTypes" Data..=)
+              Prelude.<$> supportedCompressionTypes,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ( "SupportedContentTypes"
+                  Data..= supportedContentTypes
+              ),
+            Prelude.Just
+              ("SupportedInputModes" Data..= supportedInputModes)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CheckpointConfig.hs b/gen/Amazonka/SageMaker/Types/CheckpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CheckpointConfig.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CheckpointConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CheckpointConfig 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
+
+-- | Contains information about the output location for managed spot training
+-- checkpoint data.
+--
+-- /See:/ 'newCheckpointConfig' smart constructor.
+data CheckpointConfig = CheckpointConfig'
+  { -- | (Optional) The local directory where checkpoints are written. The
+    -- default directory is @\/opt\/ml\/checkpoints\/@.
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the S3 path where you want SageMaker to store checkpoints.
+    -- For example, @s3:\/\/bucket-name\/key-name-prefix@.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CheckpointConfig' 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:
+--
+-- 'localPath', 'checkpointConfig_localPath' - (Optional) The local directory where checkpoints are written. The
+-- default directory is @\/opt\/ml\/checkpoints\/@.
+--
+-- 's3Uri', 'checkpointConfig_s3Uri' - Identifies the S3 path where you want SageMaker to store checkpoints.
+-- For example, @s3:\/\/bucket-name\/key-name-prefix@.
+newCheckpointConfig ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  CheckpointConfig
+newCheckpointConfig pS3Uri_ =
+  CheckpointConfig'
+    { localPath = Prelude.Nothing,
+      s3Uri = pS3Uri_
+    }
+
+-- | (Optional) The local directory where checkpoints are written. The
+-- default directory is @\/opt\/ml\/checkpoints\/@.
+checkpointConfig_localPath :: Lens.Lens' CheckpointConfig (Prelude.Maybe Prelude.Text)
+checkpointConfig_localPath = Lens.lens (\CheckpointConfig' {localPath} -> localPath) (\s@CheckpointConfig' {} a -> s {localPath = a} :: CheckpointConfig)
+
+-- | Identifies the S3 path where you want SageMaker to store checkpoints.
+-- For example, @s3:\/\/bucket-name\/key-name-prefix@.
+checkpointConfig_s3Uri :: Lens.Lens' CheckpointConfig Prelude.Text
+checkpointConfig_s3Uri = Lens.lens (\CheckpointConfig' {s3Uri} -> s3Uri) (\s@CheckpointConfig' {} a -> s {s3Uri = a} :: CheckpointConfig)
+
+instance Data.FromJSON CheckpointConfig where
+  parseJSON =
+    Data.withObject
+      "CheckpointConfig"
+      ( \x ->
+          CheckpointConfig'
+            Prelude.<$> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable CheckpointConfig where
+  hashWithSalt _salt CheckpointConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData CheckpointConfig where
+  rnf CheckpointConfig' {..} =
+    Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON CheckpointConfig where
+  toJSON CheckpointConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LocalPath" Data..=) Prelude.<$> localPath,
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyCheckStepMetadata.hs b/gen/Amazonka/SageMaker/Types/ClarifyCheckStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyCheckStepMetadata.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ClarifyCheckStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyCheckStepMetadata 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
+
+-- | The container for the metadata for the ClarifyCheck step. For more
+-- information, see the topic on
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-clarify-check ClarifyCheck step>
+-- in the /Amazon SageMaker Developer Guide/.
+--
+-- /See:/ 'newClarifyCheckStepMetadata' smart constructor.
+data ClarifyCheckStepMetadata = ClarifyCheckStepMetadata'
+  { -- | The Amazon S3 URI of baseline constraints file to be used for the drift
+    -- check.
+    baselineUsedForDriftCheckConstraints :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 URI of the newly calculated baseline constraints file.
+    calculatedBaselineConstraints :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the check processing job that was run
+    -- by this step\'s execution.
+    checkJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The type of the Clarify Check step
+    checkType :: Prelude.Maybe Prelude.Text,
+    -- | The model package group name.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | This flag indicates if a newly calculated baseline can be accessed
+    -- through step properties @BaselineUsedForDriftCheckConstraints@ and
+    -- @BaselineUsedForDriftCheckStatistics@. If it is set to @False@, the
+    -- previous baseline of the configured check type must also be available.
+    -- These can be accessed through the @BaselineUsedForDriftCheckConstraints@
+    -- property.
+    registerNewBaseline :: Prelude.Maybe Prelude.Bool,
+    -- | This flag indicates if the drift check against the previous baseline
+    -- will be skipped or not. If it is set to @False@, the previous baseline
+    -- of the configured check type must be available.
+    skipCheck :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon S3 URI of the violation report if violations are detected.
+    violationReport :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClarifyCheckStepMetadata' 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:
+--
+-- 'baselineUsedForDriftCheckConstraints', 'clarifyCheckStepMetadata_baselineUsedForDriftCheckConstraints' - The Amazon S3 URI of baseline constraints file to be used for the drift
+-- check.
+--
+-- 'calculatedBaselineConstraints', 'clarifyCheckStepMetadata_calculatedBaselineConstraints' - The Amazon S3 URI of the newly calculated baseline constraints file.
+--
+-- 'checkJobArn', 'clarifyCheckStepMetadata_checkJobArn' - The Amazon Resource Name (ARN) of the check processing job that was run
+-- by this step\'s execution.
+--
+-- 'checkType', 'clarifyCheckStepMetadata_checkType' - The type of the Clarify Check step
+--
+-- 'modelPackageGroupName', 'clarifyCheckStepMetadata_modelPackageGroupName' - The model package group name.
+--
+-- 'registerNewBaseline', 'clarifyCheckStepMetadata_registerNewBaseline' - This flag indicates if a newly calculated baseline can be accessed
+-- through step properties @BaselineUsedForDriftCheckConstraints@ and
+-- @BaselineUsedForDriftCheckStatistics@. If it is set to @False@, the
+-- previous baseline of the configured check type must also be available.
+-- These can be accessed through the @BaselineUsedForDriftCheckConstraints@
+-- property.
+--
+-- 'skipCheck', 'clarifyCheckStepMetadata_skipCheck' - This flag indicates if the drift check against the previous baseline
+-- will be skipped or not. If it is set to @False@, the previous baseline
+-- of the configured check type must be available.
+--
+-- 'violationReport', 'clarifyCheckStepMetadata_violationReport' - The Amazon S3 URI of the violation report if violations are detected.
+newClarifyCheckStepMetadata ::
+  ClarifyCheckStepMetadata
+newClarifyCheckStepMetadata =
+  ClarifyCheckStepMetadata'
+    { baselineUsedForDriftCheckConstraints =
+        Prelude.Nothing,
+      calculatedBaselineConstraints = Prelude.Nothing,
+      checkJobArn = Prelude.Nothing,
+      checkType = Prelude.Nothing,
+      modelPackageGroupName = Prelude.Nothing,
+      registerNewBaseline = Prelude.Nothing,
+      skipCheck = Prelude.Nothing,
+      violationReport = Prelude.Nothing
+    }
+
+-- | The Amazon S3 URI of baseline constraints file to be used for the drift
+-- check.
+clarifyCheckStepMetadata_baselineUsedForDriftCheckConstraints :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Text)
+clarifyCheckStepMetadata_baselineUsedForDriftCheckConstraints = Lens.lens (\ClarifyCheckStepMetadata' {baselineUsedForDriftCheckConstraints} -> baselineUsedForDriftCheckConstraints) (\s@ClarifyCheckStepMetadata' {} a -> s {baselineUsedForDriftCheckConstraints = a} :: ClarifyCheckStepMetadata)
+
+-- | The Amazon S3 URI of the newly calculated baseline constraints file.
+clarifyCheckStepMetadata_calculatedBaselineConstraints :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Text)
+clarifyCheckStepMetadata_calculatedBaselineConstraints = Lens.lens (\ClarifyCheckStepMetadata' {calculatedBaselineConstraints} -> calculatedBaselineConstraints) (\s@ClarifyCheckStepMetadata' {} a -> s {calculatedBaselineConstraints = a} :: ClarifyCheckStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the check processing job that was run
+-- by this step\'s execution.
+clarifyCheckStepMetadata_checkJobArn :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Text)
+clarifyCheckStepMetadata_checkJobArn = Lens.lens (\ClarifyCheckStepMetadata' {checkJobArn} -> checkJobArn) (\s@ClarifyCheckStepMetadata' {} a -> s {checkJobArn = a} :: ClarifyCheckStepMetadata)
+
+-- | The type of the Clarify Check step
+clarifyCheckStepMetadata_checkType :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Text)
+clarifyCheckStepMetadata_checkType = Lens.lens (\ClarifyCheckStepMetadata' {checkType} -> checkType) (\s@ClarifyCheckStepMetadata' {} a -> s {checkType = a} :: ClarifyCheckStepMetadata)
+
+-- | The model package group name.
+clarifyCheckStepMetadata_modelPackageGroupName :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Text)
+clarifyCheckStepMetadata_modelPackageGroupName = Lens.lens (\ClarifyCheckStepMetadata' {modelPackageGroupName} -> modelPackageGroupName) (\s@ClarifyCheckStepMetadata' {} a -> s {modelPackageGroupName = a} :: ClarifyCheckStepMetadata)
+
+-- | This flag indicates if a newly calculated baseline can be accessed
+-- through step properties @BaselineUsedForDriftCheckConstraints@ and
+-- @BaselineUsedForDriftCheckStatistics@. If it is set to @False@, the
+-- previous baseline of the configured check type must also be available.
+-- These can be accessed through the @BaselineUsedForDriftCheckConstraints@
+-- property.
+clarifyCheckStepMetadata_registerNewBaseline :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Bool)
+clarifyCheckStepMetadata_registerNewBaseline = Lens.lens (\ClarifyCheckStepMetadata' {registerNewBaseline} -> registerNewBaseline) (\s@ClarifyCheckStepMetadata' {} a -> s {registerNewBaseline = a} :: ClarifyCheckStepMetadata)
+
+-- | This flag indicates if the drift check against the previous baseline
+-- will be skipped or not. If it is set to @False@, the previous baseline
+-- of the configured check type must be available.
+clarifyCheckStepMetadata_skipCheck :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Bool)
+clarifyCheckStepMetadata_skipCheck = Lens.lens (\ClarifyCheckStepMetadata' {skipCheck} -> skipCheck) (\s@ClarifyCheckStepMetadata' {} a -> s {skipCheck = a} :: ClarifyCheckStepMetadata)
+
+-- | The Amazon S3 URI of the violation report if violations are detected.
+clarifyCheckStepMetadata_violationReport :: Lens.Lens' ClarifyCheckStepMetadata (Prelude.Maybe Prelude.Text)
+clarifyCheckStepMetadata_violationReport = Lens.lens (\ClarifyCheckStepMetadata' {violationReport} -> violationReport) (\s@ClarifyCheckStepMetadata' {} a -> s {violationReport = a} :: ClarifyCheckStepMetadata)
+
+instance Data.FromJSON ClarifyCheckStepMetadata where
+  parseJSON =
+    Data.withObject
+      "ClarifyCheckStepMetadata"
+      ( \x ->
+          ClarifyCheckStepMetadata'
+            Prelude.<$> (x Data..:? "BaselineUsedForDriftCheckConstraints")
+            Prelude.<*> (x Data..:? "CalculatedBaselineConstraints")
+            Prelude.<*> (x Data..:? "CheckJobArn")
+            Prelude.<*> (x Data..:? "CheckType")
+            Prelude.<*> (x Data..:? "ModelPackageGroupName")
+            Prelude.<*> (x Data..:? "RegisterNewBaseline")
+            Prelude.<*> (x Data..:? "SkipCheck")
+            Prelude.<*> (x Data..:? "ViolationReport")
+      )
+
+instance Prelude.Hashable ClarifyCheckStepMetadata where
+  hashWithSalt _salt ClarifyCheckStepMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` baselineUsedForDriftCheckConstraints
+      `Prelude.hashWithSalt` calculatedBaselineConstraints
+      `Prelude.hashWithSalt` checkJobArn
+      `Prelude.hashWithSalt` checkType
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` registerNewBaseline
+      `Prelude.hashWithSalt` skipCheck
+      `Prelude.hashWithSalt` violationReport
+
+instance Prelude.NFData ClarifyCheckStepMetadata where
+  rnf ClarifyCheckStepMetadata' {..} =
+    Prelude.rnf baselineUsedForDriftCheckConstraints
+      `Prelude.seq` Prelude.rnf calculatedBaselineConstraints
+      `Prelude.seq` Prelude.rnf checkJobArn
+      `Prelude.seq` Prelude.rnf checkType
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf registerNewBaseline
+      `Prelude.seq` Prelude.rnf skipCheck
+      `Prelude.seq` Prelude.rnf violationReport
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyExplainerConfig.hs b/gen/Amazonka/SageMaker/Types/ClarifyExplainerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyExplainerConfig.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ClarifyExplainerConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyExplainerConfig 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 Amazonka.SageMaker.Types.ClarifyInferenceConfig
+import Amazonka.SageMaker.Types.ClarifyShapConfig
+
+-- | The configuration parameters for the SageMaker Clarify explainer.
+--
+-- /See:/ 'newClarifyExplainerConfig' smart constructor.
+data ClarifyExplainerConfig = ClarifyExplainerConfig'
+  { -- | A JMESPath boolean expression used to filter which records to explain.
+    -- Explanations are activated by default. See
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-enable EnableExplanations>
+    -- for additional information.
+    enableExplanations :: Prelude.Maybe Prelude.Text,
+    -- | The inference configuration parameter for the model container.
+    inferenceConfig :: Prelude.Maybe ClarifyInferenceConfig,
+    -- | The configuration for SHAP analysis.
+    shapConfig :: ClarifyShapConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClarifyExplainerConfig' 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:
+--
+-- 'enableExplanations', 'clarifyExplainerConfig_enableExplanations' - A JMESPath boolean expression used to filter which records to explain.
+-- Explanations are activated by default. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-enable EnableExplanations>
+-- for additional information.
+--
+-- 'inferenceConfig', 'clarifyExplainerConfig_inferenceConfig' - The inference configuration parameter for the model container.
+--
+-- 'shapConfig', 'clarifyExplainerConfig_shapConfig' - The configuration for SHAP analysis.
+newClarifyExplainerConfig ::
+  -- | 'shapConfig'
+  ClarifyShapConfig ->
+  ClarifyExplainerConfig
+newClarifyExplainerConfig pShapConfig_ =
+  ClarifyExplainerConfig'
+    { enableExplanations =
+        Prelude.Nothing,
+      inferenceConfig = Prelude.Nothing,
+      shapConfig = pShapConfig_
+    }
+
+-- | A JMESPath boolean expression used to filter which records to explain.
+-- Explanations are activated by default. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-enable EnableExplanations>
+-- for additional information.
+clarifyExplainerConfig_enableExplanations :: Lens.Lens' ClarifyExplainerConfig (Prelude.Maybe Prelude.Text)
+clarifyExplainerConfig_enableExplanations = Lens.lens (\ClarifyExplainerConfig' {enableExplanations} -> enableExplanations) (\s@ClarifyExplainerConfig' {} a -> s {enableExplanations = a} :: ClarifyExplainerConfig)
+
+-- | The inference configuration parameter for the model container.
+clarifyExplainerConfig_inferenceConfig :: Lens.Lens' ClarifyExplainerConfig (Prelude.Maybe ClarifyInferenceConfig)
+clarifyExplainerConfig_inferenceConfig = Lens.lens (\ClarifyExplainerConfig' {inferenceConfig} -> inferenceConfig) (\s@ClarifyExplainerConfig' {} a -> s {inferenceConfig = a} :: ClarifyExplainerConfig)
+
+-- | The configuration for SHAP analysis.
+clarifyExplainerConfig_shapConfig :: Lens.Lens' ClarifyExplainerConfig ClarifyShapConfig
+clarifyExplainerConfig_shapConfig = Lens.lens (\ClarifyExplainerConfig' {shapConfig} -> shapConfig) (\s@ClarifyExplainerConfig' {} a -> s {shapConfig = a} :: ClarifyExplainerConfig)
+
+instance Data.FromJSON ClarifyExplainerConfig where
+  parseJSON =
+    Data.withObject
+      "ClarifyExplainerConfig"
+      ( \x ->
+          ClarifyExplainerConfig'
+            Prelude.<$> (x Data..:? "EnableExplanations")
+            Prelude.<*> (x Data..:? "InferenceConfig")
+            Prelude.<*> (x Data..: "ShapConfig")
+      )
+
+instance Prelude.Hashable ClarifyExplainerConfig where
+  hashWithSalt _salt ClarifyExplainerConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableExplanations
+      `Prelude.hashWithSalt` inferenceConfig
+      `Prelude.hashWithSalt` shapConfig
+
+instance Prelude.NFData ClarifyExplainerConfig where
+  rnf ClarifyExplainerConfig' {..} =
+    Prelude.rnf enableExplanations
+      `Prelude.seq` Prelude.rnf inferenceConfig
+      `Prelude.seq` Prelude.rnf shapConfig
+
+instance Data.ToJSON ClarifyExplainerConfig where
+  toJSON ClarifyExplainerConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableExplanations" Data..=)
+              Prelude.<$> enableExplanations,
+            ("InferenceConfig" Data..=)
+              Prelude.<$> inferenceConfig,
+            Prelude.Just ("ShapConfig" Data..= shapConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyFeatureType.hs b/gen/Amazonka/SageMaker/Types/ClarifyFeatureType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyFeatureType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ClarifyFeatureType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyFeatureType
+  ( ClarifyFeatureType
+      ( ..,
+        ClarifyFeatureType_Categorical,
+        ClarifyFeatureType_Numerical,
+        ClarifyFeatureType_Text
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ClarifyFeatureType = ClarifyFeatureType'
+  { fromClarifyFeatureType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ClarifyFeatureType_Categorical :: ClarifyFeatureType
+pattern ClarifyFeatureType_Categorical = ClarifyFeatureType' "categorical"
+
+pattern ClarifyFeatureType_Numerical :: ClarifyFeatureType
+pattern ClarifyFeatureType_Numerical = ClarifyFeatureType' "numerical"
+
+pattern ClarifyFeatureType_Text :: ClarifyFeatureType
+pattern ClarifyFeatureType_Text = ClarifyFeatureType' "text"
+
+{-# COMPLETE
+  ClarifyFeatureType_Categorical,
+  ClarifyFeatureType_Numerical,
+  ClarifyFeatureType_Text,
+  ClarifyFeatureType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyInferenceConfig.hs b/gen/Amazonka/SageMaker/Types/ClarifyInferenceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyInferenceConfig.hs
@@ -0,0 +1,436 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ClarifyInferenceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyInferenceConfig 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 Amazonka.SageMaker.Types.ClarifyFeatureType
+
+-- | The inference configuration parameter for the model container.
+--
+-- /See:/ 'newClarifyInferenceConfig' smart constructor.
+data ClarifyInferenceConfig = ClarifyInferenceConfig'
+  { -- | A template string used to format a JSON record into an acceptable model
+    -- container input. For example, a @ContentTemplate@ string
+    -- @\'{\"myfeatures\":$features}\'@ will format a list of features
+    -- @[1,2,3]@ into the record string @\'{\"myfeatures\":[1,2,3]}\'@.
+    -- Required only when the model container input is in JSON Lines format.
+    contentTemplate :: Prelude.Maybe Prelude.Text,
+    -- | The names of the features. If provided, these are included in the
+    -- endpoint response payload to help readability of the @InvokeEndpoint@
+    -- output. See the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response Response>
+    -- section under __Invoke the endpoint__ in the Developer Guide for more
+    -- information.
+    featureHeaders :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | A list of data types of the features (optional). Applicable only to NLP
+    -- explainability. If provided, @FeatureTypes@ must have at least one
+    -- @\'text\'@ string (for example, @[\'text\']@). If @FeatureTypes@ is not
+    -- provided, the explainer infers the feature types based on the baseline
+    -- data. The feature types are included in the endpoint response payload.
+    -- For additional information see the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
+    -- section under __Invoke the endpoint__ in the Developer Guide for more
+    -- information.
+    featureTypes :: Prelude.Maybe (Prelude.NonEmpty ClarifyFeatureType),
+    -- | Provides the JMESPath expression to extract the features from a model
+    -- container input in JSON Lines format. For example, if
+    -- @FeaturesAttribute@ is the JMESPath expression @\'myfeatures\'@, it
+    -- extracts a list of features @[1,2,3]@ from request data
+    -- @\'{\"myfeatures\":[1,2,3]}\'@.
+    featuresAttribute :: Prelude.Maybe Prelude.Text,
+    -- | A JMESPath expression used to locate the list of label headers in the
+    -- model container output.
+    --
+    -- __Example__: If the model container output of a batch request is
+    -- @\'{\"labels\":[\"cat\",\"dog\",\"fish\"],\"probability\":[0.6,0.3,0.1]}\'@,
+    -- then set @LabelAttribute@ to @\'labels\'@ to extract the list of label
+    -- headers @[\"cat\",\"dog\",\"fish\"]@
+    labelAttribute :: Prelude.Maybe Prelude.Text,
+    -- | For multiclass classification problems, the label headers are the names
+    -- of the classes. Otherwise, the label header is the name of the predicted
+    -- label. These are used to help readability for the output of the
+    -- @InvokeEndpoint@ API. See the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
+    -- section under __Invoke the endpoint__ in the Developer Guide for more
+    -- information. If there are no label headers in the model container
+    -- output, provide them manually using this parameter.
+    labelHeaders :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | A zero-based index used to extract a label header or list of label
+    -- headers from model container output in CSV format.
+    --
+    -- __Example for a multiclass model:__ If the model container output
+    -- consists of label headers followed by probabilities:
+    -- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
+    -- @LabelIndex@ to @0@ to select the label headers
+    -- @[\'cat\',\'dog\',\'fish\']@.
+    labelIndex :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum payload size (MB) allowed of a request from the explainer to
+    -- the model container. Defaults to @6@ MB.
+    maxPayloadInMB :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum number of records in a request that the model container can
+    -- process when querying the model container for the predictions of a
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-synthetic synthetic dataset>.
+    -- A record is a unit of input data that inference can be made on, for
+    -- example, a single line in CSV data. If @MaxRecordCount@ is @1@, the
+    -- model container expects one record per request. A value of 2 or greater
+    -- means that the model expects batch requests, which can reduce overhead
+    -- and speed up the inferencing process. If this parameter is not provided,
+    -- the explainer will tune the record count per request according to the
+    -- model container\'s capacity at runtime.
+    maxRecordCount :: Prelude.Maybe Prelude.Natural,
+    -- | A JMESPath expression used to extract the probability (or score) from
+    -- the model container output if the model container is in JSON Lines
+    -- format.
+    --
+    -- __Example__: If the model container output of a single request is
+    -- @\'{\"predicted_label\":1,\"probability\":0.6}\'@, then set
+    -- @ProbabilityAttribute@ to @\'probability\'@.
+    probabilityAttribute :: Prelude.Maybe Prelude.Text,
+    -- | A zero-based index used to extract a probability value (score) or list
+    -- from model container output in CSV format. If this value is not
+    -- provided, the entire model container output will be treated as a
+    -- probability value (score) or list.
+    --
+    -- __Example for a single class model:__ If the model container output
+    -- consists of a string-formatted prediction label followed by its
+    -- probability: @\'1,0.6\'@, set @ProbabilityIndex@ to @1@ to select the
+    -- probability value @0.6@.
+    --
+    -- __Example for a multiclass model:__ If the model container output
+    -- consists of a string-formatted prediction label followed by its
+    -- probability:
+    -- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
+    -- @ProbabilityIndex@ to @1@ to select the probability values
+    -- @[0.1,0.6,0.3]@.
+    probabilityIndex :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClarifyInferenceConfig' 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:
+--
+-- 'contentTemplate', 'clarifyInferenceConfig_contentTemplate' - A template string used to format a JSON record into an acceptable model
+-- container input. For example, a @ContentTemplate@ string
+-- @\'{\"myfeatures\":$features}\'@ will format a list of features
+-- @[1,2,3]@ into the record string @\'{\"myfeatures\":[1,2,3]}\'@.
+-- Required only when the model container input is in JSON Lines format.
+--
+-- 'featureHeaders', 'clarifyInferenceConfig_featureHeaders' - The names of the features. If provided, these are included in the
+-- endpoint response payload to help readability of the @InvokeEndpoint@
+-- output. See the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response Response>
+-- section under __Invoke the endpoint__ in the Developer Guide for more
+-- information.
+--
+-- 'featureTypes', 'clarifyInferenceConfig_featureTypes' - A list of data types of the features (optional). Applicable only to NLP
+-- explainability. If provided, @FeatureTypes@ must have at least one
+-- @\'text\'@ string (for example, @[\'text\']@). If @FeatureTypes@ is not
+-- provided, the explainer infers the feature types based on the baseline
+-- data. The feature types are included in the endpoint response payload.
+-- For additional information see the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
+-- section under __Invoke the endpoint__ in the Developer Guide for more
+-- information.
+--
+-- 'featuresAttribute', 'clarifyInferenceConfig_featuresAttribute' - Provides the JMESPath expression to extract the features from a model
+-- container input in JSON Lines format. For example, if
+-- @FeaturesAttribute@ is the JMESPath expression @\'myfeatures\'@, it
+-- extracts a list of features @[1,2,3]@ from request data
+-- @\'{\"myfeatures\":[1,2,3]}\'@.
+--
+-- 'labelAttribute', 'clarifyInferenceConfig_labelAttribute' - A JMESPath expression used to locate the list of label headers in the
+-- model container output.
+--
+-- __Example__: If the model container output of a batch request is
+-- @\'{\"labels\":[\"cat\",\"dog\",\"fish\"],\"probability\":[0.6,0.3,0.1]}\'@,
+-- then set @LabelAttribute@ to @\'labels\'@ to extract the list of label
+-- headers @[\"cat\",\"dog\",\"fish\"]@
+--
+-- 'labelHeaders', 'clarifyInferenceConfig_labelHeaders' - For multiclass classification problems, the label headers are the names
+-- of the classes. Otherwise, the label header is the name of the predicted
+-- label. These are used to help readability for the output of the
+-- @InvokeEndpoint@ API. See the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
+-- section under __Invoke the endpoint__ in the Developer Guide for more
+-- information. If there are no label headers in the model container
+-- output, provide them manually using this parameter.
+--
+-- 'labelIndex', 'clarifyInferenceConfig_labelIndex' - A zero-based index used to extract a label header or list of label
+-- headers from model container output in CSV format.
+--
+-- __Example for a multiclass model:__ If the model container output
+-- consists of label headers followed by probabilities:
+-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
+-- @LabelIndex@ to @0@ to select the label headers
+-- @[\'cat\',\'dog\',\'fish\']@.
+--
+-- 'maxPayloadInMB', 'clarifyInferenceConfig_maxPayloadInMB' - The maximum payload size (MB) allowed of a request from the explainer to
+-- the model container. Defaults to @6@ MB.
+--
+-- 'maxRecordCount', 'clarifyInferenceConfig_maxRecordCount' - The maximum number of records in a request that the model container can
+-- process when querying the model container for the predictions of a
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-synthetic synthetic dataset>.
+-- A record is a unit of input data that inference can be made on, for
+-- example, a single line in CSV data. If @MaxRecordCount@ is @1@, the
+-- model container expects one record per request. A value of 2 or greater
+-- means that the model expects batch requests, which can reduce overhead
+-- and speed up the inferencing process. If this parameter is not provided,
+-- the explainer will tune the record count per request according to the
+-- model container\'s capacity at runtime.
+--
+-- 'probabilityAttribute', 'clarifyInferenceConfig_probabilityAttribute' - A JMESPath expression used to extract the probability (or score) from
+-- the model container output if the model container is in JSON Lines
+-- format.
+--
+-- __Example__: If the model container output of a single request is
+-- @\'{\"predicted_label\":1,\"probability\":0.6}\'@, then set
+-- @ProbabilityAttribute@ to @\'probability\'@.
+--
+-- 'probabilityIndex', 'clarifyInferenceConfig_probabilityIndex' - A zero-based index used to extract a probability value (score) or list
+-- from model container output in CSV format. If this value is not
+-- provided, the entire model container output will be treated as a
+-- probability value (score) or list.
+--
+-- __Example for a single class model:__ If the model container output
+-- consists of a string-formatted prediction label followed by its
+-- probability: @\'1,0.6\'@, set @ProbabilityIndex@ to @1@ to select the
+-- probability value @0.6@.
+--
+-- __Example for a multiclass model:__ If the model container output
+-- consists of a string-formatted prediction label followed by its
+-- probability:
+-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
+-- @ProbabilityIndex@ to @1@ to select the probability values
+-- @[0.1,0.6,0.3]@.
+newClarifyInferenceConfig ::
+  ClarifyInferenceConfig
+newClarifyInferenceConfig =
+  ClarifyInferenceConfig'
+    { contentTemplate =
+        Prelude.Nothing,
+      featureHeaders = Prelude.Nothing,
+      featureTypes = Prelude.Nothing,
+      featuresAttribute = Prelude.Nothing,
+      labelAttribute = Prelude.Nothing,
+      labelHeaders = Prelude.Nothing,
+      labelIndex = Prelude.Nothing,
+      maxPayloadInMB = Prelude.Nothing,
+      maxRecordCount = Prelude.Nothing,
+      probabilityAttribute = Prelude.Nothing,
+      probabilityIndex = Prelude.Nothing
+    }
+
+-- | A template string used to format a JSON record into an acceptable model
+-- container input. For example, a @ContentTemplate@ string
+-- @\'{\"myfeatures\":$features}\'@ will format a list of features
+-- @[1,2,3]@ into the record string @\'{\"myfeatures\":[1,2,3]}\'@.
+-- Required only when the model container input is in JSON Lines format.
+clarifyInferenceConfig_contentTemplate :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
+clarifyInferenceConfig_contentTemplate = Lens.lens (\ClarifyInferenceConfig' {contentTemplate} -> contentTemplate) (\s@ClarifyInferenceConfig' {} a -> s {contentTemplate = a} :: ClarifyInferenceConfig)
+
+-- | The names of the features. If provided, these are included in the
+-- endpoint response payload to help readability of the @InvokeEndpoint@
+-- output. See the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response Response>
+-- section under __Invoke the endpoint__ in the Developer Guide for more
+-- information.
+clarifyInferenceConfig_featureHeaders :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+clarifyInferenceConfig_featureHeaders = Lens.lens (\ClarifyInferenceConfig' {featureHeaders} -> featureHeaders) (\s@ClarifyInferenceConfig' {} a -> s {featureHeaders = a} :: ClarifyInferenceConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of data types of the features (optional). Applicable only to NLP
+-- explainability. If provided, @FeatureTypes@ must have at least one
+-- @\'text\'@ string (for example, @[\'text\']@). If @FeatureTypes@ is not
+-- provided, the explainer infers the feature types based on the baseline
+-- data. The feature types are included in the endpoint response payload.
+-- For additional information see the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
+-- section under __Invoke the endpoint__ in the Developer Guide for more
+-- information.
+clarifyInferenceConfig_featureTypes :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe (Prelude.NonEmpty ClarifyFeatureType))
+clarifyInferenceConfig_featureTypes = Lens.lens (\ClarifyInferenceConfig' {featureTypes} -> featureTypes) (\s@ClarifyInferenceConfig' {} a -> s {featureTypes = a} :: ClarifyInferenceConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Provides the JMESPath expression to extract the features from a model
+-- container input in JSON Lines format. For example, if
+-- @FeaturesAttribute@ is the JMESPath expression @\'myfeatures\'@, it
+-- extracts a list of features @[1,2,3]@ from request data
+-- @\'{\"myfeatures\":[1,2,3]}\'@.
+clarifyInferenceConfig_featuresAttribute :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
+clarifyInferenceConfig_featuresAttribute = Lens.lens (\ClarifyInferenceConfig' {featuresAttribute} -> featuresAttribute) (\s@ClarifyInferenceConfig' {} a -> s {featuresAttribute = a} :: ClarifyInferenceConfig)
+
+-- | A JMESPath expression used to locate the list of label headers in the
+-- model container output.
+--
+-- __Example__: If the model container output of a batch request is
+-- @\'{\"labels\":[\"cat\",\"dog\",\"fish\"],\"probability\":[0.6,0.3,0.1]}\'@,
+-- then set @LabelAttribute@ to @\'labels\'@ to extract the list of label
+-- headers @[\"cat\",\"dog\",\"fish\"]@
+clarifyInferenceConfig_labelAttribute :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
+clarifyInferenceConfig_labelAttribute = Lens.lens (\ClarifyInferenceConfig' {labelAttribute} -> labelAttribute) (\s@ClarifyInferenceConfig' {} a -> s {labelAttribute = a} :: ClarifyInferenceConfig)
+
+-- | For multiclass classification problems, the label headers are the names
+-- of the classes. Otherwise, the label header is the name of the predicted
+-- label. These are used to help readability for the output of the
+-- @InvokeEndpoint@ API. See the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
+-- section under __Invoke the endpoint__ in the Developer Guide for more
+-- information. If there are no label headers in the model container
+-- output, provide them manually using this parameter.
+clarifyInferenceConfig_labelHeaders :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+clarifyInferenceConfig_labelHeaders = Lens.lens (\ClarifyInferenceConfig' {labelHeaders} -> labelHeaders) (\s@ClarifyInferenceConfig' {} a -> s {labelHeaders = a} :: ClarifyInferenceConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | A zero-based index used to extract a label header or list of label
+-- headers from model container output in CSV format.
+--
+-- __Example for a multiclass model:__ If the model container output
+-- consists of label headers followed by probabilities:
+-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
+-- @LabelIndex@ to @0@ to select the label headers
+-- @[\'cat\',\'dog\',\'fish\']@.
+clarifyInferenceConfig_labelIndex :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
+clarifyInferenceConfig_labelIndex = Lens.lens (\ClarifyInferenceConfig' {labelIndex} -> labelIndex) (\s@ClarifyInferenceConfig' {} a -> s {labelIndex = a} :: ClarifyInferenceConfig)
+
+-- | The maximum payload size (MB) allowed of a request from the explainer to
+-- the model container. Defaults to @6@ MB.
+clarifyInferenceConfig_maxPayloadInMB :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
+clarifyInferenceConfig_maxPayloadInMB = Lens.lens (\ClarifyInferenceConfig' {maxPayloadInMB} -> maxPayloadInMB) (\s@ClarifyInferenceConfig' {} a -> s {maxPayloadInMB = a} :: ClarifyInferenceConfig)
+
+-- | The maximum number of records in a request that the model container can
+-- process when querying the model container for the predictions of a
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-synthetic synthetic dataset>.
+-- A record is a unit of input data that inference can be made on, for
+-- example, a single line in CSV data. If @MaxRecordCount@ is @1@, the
+-- model container expects one record per request. A value of 2 or greater
+-- means that the model expects batch requests, which can reduce overhead
+-- and speed up the inferencing process. If this parameter is not provided,
+-- the explainer will tune the record count per request according to the
+-- model container\'s capacity at runtime.
+clarifyInferenceConfig_maxRecordCount :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
+clarifyInferenceConfig_maxRecordCount = Lens.lens (\ClarifyInferenceConfig' {maxRecordCount} -> maxRecordCount) (\s@ClarifyInferenceConfig' {} a -> s {maxRecordCount = a} :: ClarifyInferenceConfig)
+
+-- | A JMESPath expression used to extract the probability (or score) from
+-- the model container output if the model container is in JSON Lines
+-- format.
+--
+-- __Example__: If the model container output of a single request is
+-- @\'{\"predicted_label\":1,\"probability\":0.6}\'@, then set
+-- @ProbabilityAttribute@ to @\'probability\'@.
+clarifyInferenceConfig_probabilityAttribute :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
+clarifyInferenceConfig_probabilityAttribute = Lens.lens (\ClarifyInferenceConfig' {probabilityAttribute} -> probabilityAttribute) (\s@ClarifyInferenceConfig' {} a -> s {probabilityAttribute = a} :: ClarifyInferenceConfig)
+
+-- | A zero-based index used to extract a probability value (score) or list
+-- from model container output in CSV format. If this value is not
+-- provided, the entire model container output will be treated as a
+-- probability value (score) or list.
+--
+-- __Example for a single class model:__ If the model container output
+-- consists of a string-formatted prediction label followed by its
+-- probability: @\'1,0.6\'@, set @ProbabilityIndex@ to @1@ to select the
+-- probability value @0.6@.
+--
+-- __Example for a multiclass model:__ If the model container output
+-- consists of a string-formatted prediction label followed by its
+-- probability:
+-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
+-- @ProbabilityIndex@ to @1@ to select the probability values
+-- @[0.1,0.6,0.3]@.
+clarifyInferenceConfig_probabilityIndex :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
+clarifyInferenceConfig_probabilityIndex = Lens.lens (\ClarifyInferenceConfig' {probabilityIndex} -> probabilityIndex) (\s@ClarifyInferenceConfig' {} a -> s {probabilityIndex = a} :: ClarifyInferenceConfig)
+
+instance Data.FromJSON ClarifyInferenceConfig where
+  parseJSON =
+    Data.withObject
+      "ClarifyInferenceConfig"
+      ( \x ->
+          ClarifyInferenceConfig'
+            Prelude.<$> (x Data..:? "ContentTemplate")
+            Prelude.<*> (x Data..:? "FeatureHeaders")
+            Prelude.<*> (x Data..:? "FeatureTypes")
+            Prelude.<*> (x Data..:? "FeaturesAttribute")
+            Prelude.<*> (x Data..:? "LabelAttribute")
+            Prelude.<*> (x Data..:? "LabelHeaders")
+            Prelude.<*> (x Data..:? "LabelIndex")
+            Prelude.<*> (x Data..:? "MaxPayloadInMB")
+            Prelude.<*> (x Data..:? "MaxRecordCount")
+            Prelude.<*> (x Data..:? "ProbabilityAttribute")
+            Prelude.<*> (x Data..:? "ProbabilityIndex")
+      )
+
+instance Prelude.Hashable ClarifyInferenceConfig where
+  hashWithSalt _salt ClarifyInferenceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentTemplate
+      `Prelude.hashWithSalt` featureHeaders
+      `Prelude.hashWithSalt` featureTypes
+      `Prelude.hashWithSalt` featuresAttribute
+      `Prelude.hashWithSalt` labelAttribute
+      `Prelude.hashWithSalt` labelHeaders
+      `Prelude.hashWithSalt` labelIndex
+      `Prelude.hashWithSalt` maxPayloadInMB
+      `Prelude.hashWithSalt` maxRecordCount
+      `Prelude.hashWithSalt` probabilityAttribute
+      `Prelude.hashWithSalt` probabilityIndex
+
+instance Prelude.NFData ClarifyInferenceConfig where
+  rnf ClarifyInferenceConfig' {..} =
+    Prelude.rnf contentTemplate
+      `Prelude.seq` Prelude.rnf featureHeaders
+      `Prelude.seq` Prelude.rnf featureTypes
+      `Prelude.seq` Prelude.rnf featuresAttribute
+      `Prelude.seq` Prelude.rnf labelAttribute
+      `Prelude.seq` Prelude.rnf labelHeaders
+      `Prelude.seq` Prelude.rnf labelIndex
+      `Prelude.seq` Prelude.rnf maxPayloadInMB
+      `Prelude.seq` Prelude.rnf maxRecordCount
+      `Prelude.seq` Prelude.rnf probabilityAttribute
+      `Prelude.seq` Prelude.rnf probabilityIndex
+
+instance Data.ToJSON ClarifyInferenceConfig where
+  toJSON ClarifyInferenceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentTemplate" Data..=)
+              Prelude.<$> contentTemplate,
+            ("FeatureHeaders" Data..=)
+              Prelude.<$> featureHeaders,
+            ("FeatureTypes" Data..=) Prelude.<$> featureTypes,
+            ("FeaturesAttribute" Data..=)
+              Prelude.<$> featuresAttribute,
+            ("LabelAttribute" Data..=)
+              Prelude.<$> labelAttribute,
+            ("LabelHeaders" Data..=) Prelude.<$> labelHeaders,
+            ("LabelIndex" Data..=) Prelude.<$> labelIndex,
+            ("MaxPayloadInMB" Data..=)
+              Prelude.<$> maxPayloadInMB,
+            ("MaxRecordCount" Data..=)
+              Prelude.<$> maxRecordCount,
+            ("ProbabilityAttribute" Data..=)
+              Prelude.<$> probabilityAttribute,
+            ("ProbabilityIndex" Data..=)
+              Prelude.<$> probabilityIndex
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyShapBaselineConfig.hs b/gen/Amazonka/SageMaker/Types/ClarifyShapBaselineConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyShapBaselineConfig.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ClarifyShapBaselineConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyShapBaselineConfig 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
+
+-- | The configuration for the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-feature-attribute-shap-baselines.html SHAP baseline>
+-- (also called the background or reference dataset) of the Kernal SHAP
+-- algorithm.
+--
+-- -   The number of records in the baseline data determines the size of
+--     the synthetic dataset, which has an impact on latency of
+--     explainability requests. For more information, see the __Synthetic
+--     data__ of
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html Configure and create an endpoint>.
+--
+-- -   @ShapBaseline@ and @ShapBaselineUri@ are mutually exclusive
+--     parameters. One or the either is required to configure a SHAP
+--     baseline.
+--
+-- /See:/ 'newClarifyShapBaselineConfig' smart constructor.
+data ClarifyShapBaselineConfig = ClarifyShapBaselineConfig'
+  { -- | The MIME type of the baseline data. Choose from @\'text\/csv\'@ or
+    -- @\'application\/jsonlines\'@. Defaults to @\'text\/csv\'@.
+    mimeType :: Prelude.Maybe Prelude.Text,
+    -- | The inline SHAP baseline data in string format. @ShapBaseline@ can have
+    -- one or multiple records to be used as the baseline dataset. The format
+    -- of the SHAP baseline file should be the same format as the training
+    -- dataset. For example, if the training dataset is in CSV format and each
+    -- record contains four features, and all features are numerical, then the
+    -- format of the baseline data should also share these characteristics. For
+    -- natural language processing (NLP) of text columns, the baseline value
+    -- should be the value used to replace the unit of text specified by the
+    -- @Granularity@ of the @TextConfig@ parameter. The size limit for
+    -- @ShapBasline@ is 4 KB. Use the @ShapBaselineUri@ parameter if you want
+    -- to provide more than 4 KB of baseline data.
+    shapBaseline :: Prelude.Maybe Prelude.Text,
+    -- | The uniform resource identifier (URI) of the S3 bucket where the SHAP
+    -- baseline file is stored. The format of the SHAP baseline file should be
+    -- the same format as the format of the training dataset. For example, if
+    -- the training dataset is in CSV format, and each record in the training
+    -- dataset has four features, and all features are numerical, then the
+    -- baseline file should also have this same format. Each record should
+    -- contain only the features. If you are using a virtual private cloud
+    -- (VPC), the @ShapBaselineUri@ should be accessible to the VPC. For more
+    -- information about setting up endpoints with Amazon Virtual Private
+    -- Cloud, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html Give SageMaker access to Resources in your Amazon Virtual Private Cloud>.
+    shapBaselineUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClarifyShapBaselineConfig' 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:
+--
+-- 'mimeType', 'clarifyShapBaselineConfig_mimeType' - The MIME type of the baseline data. Choose from @\'text\/csv\'@ or
+-- @\'application\/jsonlines\'@. Defaults to @\'text\/csv\'@.
+--
+-- 'shapBaseline', 'clarifyShapBaselineConfig_shapBaseline' - The inline SHAP baseline data in string format. @ShapBaseline@ can have
+-- one or multiple records to be used as the baseline dataset. The format
+-- of the SHAP baseline file should be the same format as the training
+-- dataset. For example, if the training dataset is in CSV format and each
+-- record contains four features, and all features are numerical, then the
+-- format of the baseline data should also share these characteristics. For
+-- natural language processing (NLP) of text columns, the baseline value
+-- should be the value used to replace the unit of text specified by the
+-- @Granularity@ of the @TextConfig@ parameter. The size limit for
+-- @ShapBasline@ is 4 KB. Use the @ShapBaselineUri@ parameter if you want
+-- to provide more than 4 KB of baseline data.
+--
+-- 'shapBaselineUri', 'clarifyShapBaselineConfig_shapBaselineUri' - The uniform resource identifier (URI) of the S3 bucket where the SHAP
+-- baseline file is stored. The format of the SHAP baseline file should be
+-- the same format as the format of the training dataset. For example, if
+-- the training dataset is in CSV format, and each record in the training
+-- dataset has four features, and all features are numerical, then the
+-- baseline file should also have this same format. Each record should
+-- contain only the features. If you are using a virtual private cloud
+-- (VPC), the @ShapBaselineUri@ should be accessible to the VPC. For more
+-- information about setting up endpoints with Amazon Virtual Private
+-- Cloud, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html Give SageMaker access to Resources in your Amazon Virtual Private Cloud>.
+newClarifyShapBaselineConfig ::
+  ClarifyShapBaselineConfig
+newClarifyShapBaselineConfig =
+  ClarifyShapBaselineConfig'
+    { mimeType =
+        Prelude.Nothing,
+      shapBaseline = Prelude.Nothing,
+      shapBaselineUri = Prelude.Nothing
+    }
+
+-- | The MIME type of the baseline data. Choose from @\'text\/csv\'@ or
+-- @\'application\/jsonlines\'@. Defaults to @\'text\/csv\'@.
+clarifyShapBaselineConfig_mimeType :: Lens.Lens' ClarifyShapBaselineConfig (Prelude.Maybe Prelude.Text)
+clarifyShapBaselineConfig_mimeType = Lens.lens (\ClarifyShapBaselineConfig' {mimeType} -> mimeType) (\s@ClarifyShapBaselineConfig' {} a -> s {mimeType = a} :: ClarifyShapBaselineConfig)
+
+-- | The inline SHAP baseline data in string format. @ShapBaseline@ can have
+-- one or multiple records to be used as the baseline dataset. The format
+-- of the SHAP baseline file should be the same format as the training
+-- dataset. For example, if the training dataset is in CSV format and each
+-- record contains four features, and all features are numerical, then the
+-- format of the baseline data should also share these characteristics. For
+-- natural language processing (NLP) of text columns, the baseline value
+-- should be the value used to replace the unit of text specified by the
+-- @Granularity@ of the @TextConfig@ parameter. The size limit for
+-- @ShapBasline@ is 4 KB. Use the @ShapBaselineUri@ parameter if you want
+-- to provide more than 4 KB of baseline data.
+clarifyShapBaselineConfig_shapBaseline :: Lens.Lens' ClarifyShapBaselineConfig (Prelude.Maybe Prelude.Text)
+clarifyShapBaselineConfig_shapBaseline = Lens.lens (\ClarifyShapBaselineConfig' {shapBaseline} -> shapBaseline) (\s@ClarifyShapBaselineConfig' {} a -> s {shapBaseline = a} :: ClarifyShapBaselineConfig)
+
+-- | The uniform resource identifier (URI) of the S3 bucket where the SHAP
+-- baseline file is stored. The format of the SHAP baseline file should be
+-- the same format as the format of the training dataset. For example, if
+-- the training dataset is in CSV format, and each record in the training
+-- dataset has four features, and all features are numerical, then the
+-- baseline file should also have this same format. Each record should
+-- contain only the features. If you are using a virtual private cloud
+-- (VPC), the @ShapBaselineUri@ should be accessible to the VPC. For more
+-- information about setting up endpoints with Amazon Virtual Private
+-- Cloud, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html Give SageMaker access to Resources in your Amazon Virtual Private Cloud>.
+clarifyShapBaselineConfig_shapBaselineUri :: Lens.Lens' ClarifyShapBaselineConfig (Prelude.Maybe Prelude.Text)
+clarifyShapBaselineConfig_shapBaselineUri = Lens.lens (\ClarifyShapBaselineConfig' {shapBaselineUri} -> shapBaselineUri) (\s@ClarifyShapBaselineConfig' {} a -> s {shapBaselineUri = a} :: ClarifyShapBaselineConfig)
+
+instance Data.FromJSON ClarifyShapBaselineConfig where
+  parseJSON =
+    Data.withObject
+      "ClarifyShapBaselineConfig"
+      ( \x ->
+          ClarifyShapBaselineConfig'
+            Prelude.<$> (x Data..:? "MimeType")
+            Prelude.<*> (x Data..:? "ShapBaseline")
+            Prelude.<*> (x Data..:? "ShapBaselineUri")
+      )
+
+instance Prelude.Hashable ClarifyShapBaselineConfig where
+  hashWithSalt _salt ClarifyShapBaselineConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` mimeType
+      `Prelude.hashWithSalt` shapBaseline
+      `Prelude.hashWithSalt` shapBaselineUri
+
+instance Prelude.NFData ClarifyShapBaselineConfig where
+  rnf ClarifyShapBaselineConfig' {..} =
+    Prelude.rnf mimeType
+      `Prelude.seq` Prelude.rnf shapBaseline
+      `Prelude.seq` Prelude.rnf shapBaselineUri
+
+instance Data.ToJSON ClarifyShapBaselineConfig where
+  toJSON ClarifyShapBaselineConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MimeType" Data..=) Prelude.<$> mimeType,
+            ("ShapBaseline" Data..=) Prelude.<$> shapBaseline,
+            ("ShapBaselineUri" Data..=)
+              Prelude.<$> shapBaselineUri
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyShapConfig.hs b/gen/Amazonka/SageMaker/Types/ClarifyShapConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyShapConfig.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ClarifyShapConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyShapConfig 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 Amazonka.SageMaker.Types.ClarifyShapBaselineConfig
+import Amazonka.SageMaker.Types.ClarifyTextConfig
+
+-- | The configuration for SHAP analysis using SageMaker Clarify Explainer.
+--
+-- /See:/ 'newClarifyShapConfig' smart constructor.
+data ClarifyShapConfig = ClarifyShapConfig'
+  { -- | The number of samples to be used for analysis by the Kernal SHAP
+    -- algorithm.
+    --
+    -- The number of samples determines the size of the synthetic dataset,
+    -- which has an impact on latency of explainability requests. For more
+    -- information, see the __Synthetic data__ of
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html Configure and create an endpoint>.
+    numberOfSamples :: Prelude.Maybe Prelude.Natural,
+    -- | The starting value used to initialize the random number generator in the
+    -- explainer. Provide a value for this parameter to obtain a deterministic
+    -- SHAP result.
+    seed :: Prelude.Maybe Prelude.Int,
+    -- | A parameter that indicates if text features are treated as text and
+    -- explanations are provided for individual units of text. Required for
+    -- natural language processing (NLP) explainability only.
+    textConfig :: Prelude.Maybe ClarifyTextConfig,
+    -- | A Boolean toggle to indicate if you want to use the logit function
+    -- (true) or log-odds units (false) for model predictions. Defaults to
+    -- false.
+    useLogit :: Prelude.Maybe Prelude.Bool,
+    -- | The configuration for the SHAP baseline of the Kernal SHAP algorithm.
+    shapBaselineConfig :: ClarifyShapBaselineConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClarifyShapConfig' 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:
+--
+-- 'numberOfSamples', 'clarifyShapConfig_numberOfSamples' - The number of samples to be used for analysis by the Kernal SHAP
+-- algorithm.
+--
+-- The number of samples determines the size of the synthetic dataset,
+-- which has an impact on latency of explainability requests. For more
+-- information, see the __Synthetic data__ of
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html Configure and create an endpoint>.
+--
+-- 'seed', 'clarifyShapConfig_seed' - The starting value used to initialize the random number generator in the
+-- explainer. Provide a value for this parameter to obtain a deterministic
+-- SHAP result.
+--
+-- 'textConfig', 'clarifyShapConfig_textConfig' - A parameter that indicates if text features are treated as text and
+-- explanations are provided for individual units of text. Required for
+-- natural language processing (NLP) explainability only.
+--
+-- 'useLogit', 'clarifyShapConfig_useLogit' - A Boolean toggle to indicate if you want to use the logit function
+-- (true) or log-odds units (false) for model predictions. Defaults to
+-- false.
+--
+-- 'shapBaselineConfig', 'clarifyShapConfig_shapBaselineConfig' - The configuration for the SHAP baseline of the Kernal SHAP algorithm.
+newClarifyShapConfig ::
+  -- | 'shapBaselineConfig'
+  ClarifyShapBaselineConfig ->
+  ClarifyShapConfig
+newClarifyShapConfig pShapBaselineConfig_ =
+  ClarifyShapConfig'
+    { numberOfSamples =
+        Prelude.Nothing,
+      seed = Prelude.Nothing,
+      textConfig = Prelude.Nothing,
+      useLogit = Prelude.Nothing,
+      shapBaselineConfig = pShapBaselineConfig_
+    }
+
+-- | The number of samples to be used for analysis by the Kernal SHAP
+-- algorithm.
+--
+-- The number of samples determines the size of the synthetic dataset,
+-- which has an impact on latency of explainability requests. For more
+-- information, see the __Synthetic data__ of
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html Configure and create an endpoint>.
+clarifyShapConfig_numberOfSamples :: Lens.Lens' ClarifyShapConfig (Prelude.Maybe Prelude.Natural)
+clarifyShapConfig_numberOfSamples = Lens.lens (\ClarifyShapConfig' {numberOfSamples} -> numberOfSamples) (\s@ClarifyShapConfig' {} a -> s {numberOfSamples = a} :: ClarifyShapConfig)
+
+-- | The starting value used to initialize the random number generator in the
+-- explainer. Provide a value for this parameter to obtain a deterministic
+-- SHAP result.
+clarifyShapConfig_seed :: Lens.Lens' ClarifyShapConfig (Prelude.Maybe Prelude.Int)
+clarifyShapConfig_seed = Lens.lens (\ClarifyShapConfig' {seed} -> seed) (\s@ClarifyShapConfig' {} a -> s {seed = a} :: ClarifyShapConfig)
+
+-- | A parameter that indicates if text features are treated as text and
+-- explanations are provided for individual units of text. Required for
+-- natural language processing (NLP) explainability only.
+clarifyShapConfig_textConfig :: Lens.Lens' ClarifyShapConfig (Prelude.Maybe ClarifyTextConfig)
+clarifyShapConfig_textConfig = Lens.lens (\ClarifyShapConfig' {textConfig} -> textConfig) (\s@ClarifyShapConfig' {} a -> s {textConfig = a} :: ClarifyShapConfig)
+
+-- | A Boolean toggle to indicate if you want to use the logit function
+-- (true) or log-odds units (false) for model predictions. Defaults to
+-- false.
+clarifyShapConfig_useLogit :: Lens.Lens' ClarifyShapConfig (Prelude.Maybe Prelude.Bool)
+clarifyShapConfig_useLogit = Lens.lens (\ClarifyShapConfig' {useLogit} -> useLogit) (\s@ClarifyShapConfig' {} a -> s {useLogit = a} :: ClarifyShapConfig)
+
+-- | The configuration for the SHAP baseline of the Kernal SHAP algorithm.
+clarifyShapConfig_shapBaselineConfig :: Lens.Lens' ClarifyShapConfig ClarifyShapBaselineConfig
+clarifyShapConfig_shapBaselineConfig = Lens.lens (\ClarifyShapConfig' {shapBaselineConfig} -> shapBaselineConfig) (\s@ClarifyShapConfig' {} a -> s {shapBaselineConfig = a} :: ClarifyShapConfig)
+
+instance Data.FromJSON ClarifyShapConfig where
+  parseJSON =
+    Data.withObject
+      "ClarifyShapConfig"
+      ( \x ->
+          ClarifyShapConfig'
+            Prelude.<$> (x Data..:? "NumberOfSamples")
+            Prelude.<*> (x Data..:? "Seed")
+            Prelude.<*> (x Data..:? "TextConfig")
+            Prelude.<*> (x Data..:? "UseLogit")
+            Prelude.<*> (x Data..: "ShapBaselineConfig")
+      )
+
+instance Prelude.Hashable ClarifyShapConfig where
+  hashWithSalt _salt ClarifyShapConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` numberOfSamples
+      `Prelude.hashWithSalt` seed
+      `Prelude.hashWithSalt` textConfig
+      `Prelude.hashWithSalt` useLogit
+      `Prelude.hashWithSalt` shapBaselineConfig
+
+instance Prelude.NFData ClarifyShapConfig where
+  rnf ClarifyShapConfig' {..} =
+    Prelude.rnf numberOfSamples
+      `Prelude.seq` Prelude.rnf seed
+      `Prelude.seq` Prelude.rnf textConfig
+      `Prelude.seq` Prelude.rnf useLogit
+      `Prelude.seq` Prelude.rnf shapBaselineConfig
+
+instance Data.ToJSON ClarifyShapConfig where
+  toJSON ClarifyShapConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NumberOfSamples" Data..=)
+              Prelude.<$> numberOfSamples,
+            ("Seed" Data..=) Prelude.<$> seed,
+            ("TextConfig" Data..=) Prelude.<$> textConfig,
+            ("UseLogit" Data..=) Prelude.<$> useLogit,
+            Prelude.Just
+              ("ShapBaselineConfig" Data..= shapBaselineConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyTextConfig.hs b/gen/Amazonka/SageMaker/Types/ClarifyTextConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyTextConfig.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ClarifyTextConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyTextConfig 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 Amazonka.SageMaker.Types.ClarifyTextGranularity
+import Amazonka.SageMaker.Types.ClarifyTextLanguage
+
+-- | A parameter used to configure the SageMaker Clarify explainer to treat
+-- text features as text so that explanations are provided for individual
+-- units of text. Required only for natural language processing (NLP)
+-- explainability.
+--
+-- /See:/ 'newClarifyTextConfig' smart constructor.
+data ClarifyTextConfig = ClarifyTextConfig'
+  { -- | Specifies the language of the text features in
+    -- <%20https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ISO 639-1> or
+    -- <https://en.wikipedia.org/wiki/ISO_639-3 ISO 639-3> code of a supported
+    -- language.
+    --
+    -- For a mix of multiple languages, use code @\'xx\'@.
+    language :: ClarifyTextLanguage,
+    -- | The unit of granularity for the analysis of text features. For example,
+    -- if the unit is @\'token\'@, then each token (like a word in English) of
+    -- the text is treated as a feature. SHAP values are computed for each
+    -- unit\/feature.
+    granularity :: ClarifyTextGranularity
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ClarifyTextConfig' 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:
+--
+-- 'language', 'clarifyTextConfig_language' - Specifies the language of the text features in
+-- <%20https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ISO 639-1> or
+-- <https://en.wikipedia.org/wiki/ISO_639-3 ISO 639-3> code of a supported
+-- language.
+--
+-- For a mix of multiple languages, use code @\'xx\'@.
+--
+-- 'granularity', 'clarifyTextConfig_granularity' - The unit of granularity for the analysis of text features. For example,
+-- if the unit is @\'token\'@, then each token (like a word in English) of
+-- the text is treated as a feature. SHAP values are computed for each
+-- unit\/feature.
+newClarifyTextConfig ::
+  -- | 'language'
+  ClarifyTextLanguage ->
+  -- | 'granularity'
+  ClarifyTextGranularity ->
+  ClarifyTextConfig
+newClarifyTextConfig pLanguage_ pGranularity_ =
+  ClarifyTextConfig'
+    { language = pLanguage_,
+      granularity = pGranularity_
+    }
+
+-- | Specifies the language of the text features in
+-- <%20https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ISO 639-1> or
+-- <https://en.wikipedia.org/wiki/ISO_639-3 ISO 639-3> code of a supported
+-- language.
+--
+-- For a mix of multiple languages, use code @\'xx\'@.
+clarifyTextConfig_language :: Lens.Lens' ClarifyTextConfig ClarifyTextLanguage
+clarifyTextConfig_language = Lens.lens (\ClarifyTextConfig' {language} -> language) (\s@ClarifyTextConfig' {} a -> s {language = a} :: ClarifyTextConfig)
+
+-- | The unit of granularity for the analysis of text features. For example,
+-- if the unit is @\'token\'@, then each token (like a word in English) of
+-- the text is treated as a feature. SHAP values are computed for each
+-- unit\/feature.
+clarifyTextConfig_granularity :: Lens.Lens' ClarifyTextConfig ClarifyTextGranularity
+clarifyTextConfig_granularity = Lens.lens (\ClarifyTextConfig' {granularity} -> granularity) (\s@ClarifyTextConfig' {} a -> s {granularity = a} :: ClarifyTextConfig)
+
+instance Data.FromJSON ClarifyTextConfig where
+  parseJSON =
+    Data.withObject
+      "ClarifyTextConfig"
+      ( \x ->
+          ClarifyTextConfig'
+            Prelude.<$> (x Data..: "Language")
+            Prelude.<*> (x Data..: "Granularity")
+      )
+
+instance Prelude.Hashable ClarifyTextConfig where
+  hashWithSalt _salt ClarifyTextConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` language
+      `Prelude.hashWithSalt` granularity
+
+instance Prelude.NFData ClarifyTextConfig where
+  rnf ClarifyTextConfig' {..} =
+    Prelude.rnf language
+      `Prelude.seq` Prelude.rnf granularity
+
+instance Data.ToJSON ClarifyTextConfig where
+  toJSON ClarifyTextConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Language" Data..= language),
+            Prelude.Just ("Granularity" Data..= granularity)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyTextGranularity.hs b/gen/Amazonka/SageMaker/Types/ClarifyTextGranularity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyTextGranularity.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ClarifyTextGranularity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyTextGranularity
+  ( ClarifyTextGranularity
+      ( ..,
+        ClarifyTextGranularity_Paragraph,
+        ClarifyTextGranularity_Sentence,
+        ClarifyTextGranularity_Token
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ClarifyTextGranularity = ClarifyTextGranularity'
+  { fromClarifyTextGranularity ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ClarifyTextGranularity_Paragraph :: ClarifyTextGranularity
+pattern ClarifyTextGranularity_Paragraph = ClarifyTextGranularity' "paragraph"
+
+pattern ClarifyTextGranularity_Sentence :: ClarifyTextGranularity
+pattern ClarifyTextGranularity_Sentence = ClarifyTextGranularity' "sentence"
+
+pattern ClarifyTextGranularity_Token :: ClarifyTextGranularity
+pattern ClarifyTextGranularity_Token = ClarifyTextGranularity' "token"
+
+{-# COMPLETE
+  ClarifyTextGranularity_Paragraph,
+  ClarifyTextGranularity_Sentence,
+  ClarifyTextGranularity_Token,
+  ClarifyTextGranularity'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ClarifyTextLanguage.hs b/gen/Amazonka/SageMaker/Types/ClarifyTextLanguage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ClarifyTextLanguage.hs
@@ -0,0 +1,361 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ClarifyTextLanguage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ClarifyTextLanguage
+  ( ClarifyTextLanguage
+      ( ..,
+        ClarifyTextLanguage_Af,
+        ClarifyTextLanguage_Ar,
+        ClarifyTextLanguage_Bg,
+        ClarifyTextLanguage_Bn,
+        ClarifyTextLanguage_Ca,
+        ClarifyTextLanguage_Cs,
+        ClarifyTextLanguage_Da,
+        ClarifyTextLanguage_De,
+        ClarifyTextLanguage_El,
+        ClarifyTextLanguage_En,
+        ClarifyTextLanguage_Es,
+        ClarifyTextLanguage_Et,
+        ClarifyTextLanguage_Eu,
+        ClarifyTextLanguage_Fa,
+        ClarifyTextLanguage_Fi,
+        ClarifyTextLanguage_Fr,
+        ClarifyTextLanguage_Ga,
+        ClarifyTextLanguage_Gu,
+        ClarifyTextLanguage_He,
+        ClarifyTextLanguage_Hi,
+        ClarifyTextLanguage_Hr,
+        ClarifyTextLanguage_Hu,
+        ClarifyTextLanguage_Hy,
+        ClarifyTextLanguage_Id,
+        ClarifyTextLanguage_Is,
+        ClarifyTextLanguage_It,
+        ClarifyTextLanguage_Kn,
+        ClarifyTextLanguage_Ky,
+        ClarifyTextLanguage_Lb,
+        ClarifyTextLanguage_Lij,
+        ClarifyTextLanguage_Lt,
+        ClarifyTextLanguage_Lv,
+        ClarifyTextLanguage_Mk,
+        ClarifyTextLanguage_Ml,
+        ClarifyTextLanguage_Mr,
+        ClarifyTextLanguage_Nb,
+        ClarifyTextLanguage_Ne,
+        ClarifyTextLanguage_Nl,
+        ClarifyTextLanguage_Pl,
+        ClarifyTextLanguage_Pt,
+        ClarifyTextLanguage_Ro,
+        ClarifyTextLanguage_Ru,
+        ClarifyTextLanguage_Sa,
+        ClarifyTextLanguage_Si,
+        ClarifyTextLanguage_Sk,
+        ClarifyTextLanguage_Sl,
+        ClarifyTextLanguage_Sq,
+        ClarifyTextLanguage_Sr,
+        ClarifyTextLanguage_Sv,
+        ClarifyTextLanguage_Ta,
+        ClarifyTextLanguage_Te,
+        ClarifyTextLanguage_Tl,
+        ClarifyTextLanguage_Tn,
+        ClarifyTextLanguage_Tr,
+        ClarifyTextLanguage_Tt,
+        ClarifyTextLanguage_Uk,
+        ClarifyTextLanguage_Ur,
+        ClarifyTextLanguage_Xx,
+        ClarifyTextLanguage_Yo,
+        ClarifyTextLanguage_Zh
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ClarifyTextLanguage = ClarifyTextLanguage'
+  { fromClarifyTextLanguage ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ClarifyTextLanguage_Af :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Af = ClarifyTextLanguage' "af"
+
+pattern ClarifyTextLanguage_Ar :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ar = ClarifyTextLanguage' "ar"
+
+pattern ClarifyTextLanguage_Bg :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Bg = ClarifyTextLanguage' "bg"
+
+pattern ClarifyTextLanguage_Bn :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Bn = ClarifyTextLanguage' "bn"
+
+pattern ClarifyTextLanguage_Ca :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ca = ClarifyTextLanguage' "ca"
+
+pattern ClarifyTextLanguage_Cs :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Cs = ClarifyTextLanguage' "cs"
+
+pattern ClarifyTextLanguage_Da :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Da = ClarifyTextLanguage' "da"
+
+pattern ClarifyTextLanguage_De :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_De = ClarifyTextLanguage' "de"
+
+pattern ClarifyTextLanguage_El :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_El = ClarifyTextLanguage' "el"
+
+pattern ClarifyTextLanguage_En :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_En = ClarifyTextLanguage' "en"
+
+pattern ClarifyTextLanguage_Es :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Es = ClarifyTextLanguage' "es"
+
+pattern ClarifyTextLanguage_Et :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Et = ClarifyTextLanguage' "et"
+
+pattern ClarifyTextLanguage_Eu :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Eu = ClarifyTextLanguage' "eu"
+
+pattern ClarifyTextLanguage_Fa :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Fa = ClarifyTextLanguage' "fa"
+
+pattern ClarifyTextLanguage_Fi :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Fi = ClarifyTextLanguage' "fi"
+
+pattern ClarifyTextLanguage_Fr :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Fr = ClarifyTextLanguage' "fr"
+
+pattern ClarifyTextLanguage_Ga :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ga = ClarifyTextLanguage' "ga"
+
+pattern ClarifyTextLanguage_Gu :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Gu = ClarifyTextLanguage' "gu"
+
+pattern ClarifyTextLanguage_He :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_He = ClarifyTextLanguage' "he"
+
+pattern ClarifyTextLanguage_Hi :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Hi = ClarifyTextLanguage' "hi"
+
+pattern ClarifyTextLanguage_Hr :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Hr = ClarifyTextLanguage' "hr"
+
+pattern ClarifyTextLanguage_Hu :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Hu = ClarifyTextLanguage' "hu"
+
+pattern ClarifyTextLanguage_Hy :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Hy = ClarifyTextLanguage' "hy"
+
+pattern ClarifyTextLanguage_Id :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Id = ClarifyTextLanguage' "id"
+
+pattern ClarifyTextLanguage_Is :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Is = ClarifyTextLanguage' "is"
+
+pattern ClarifyTextLanguage_It :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_It = ClarifyTextLanguage' "it"
+
+pattern ClarifyTextLanguage_Kn :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Kn = ClarifyTextLanguage' "kn"
+
+pattern ClarifyTextLanguage_Ky :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ky = ClarifyTextLanguage' "ky"
+
+pattern ClarifyTextLanguage_Lb :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Lb = ClarifyTextLanguage' "lb"
+
+pattern ClarifyTextLanguage_Lij :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Lij = ClarifyTextLanguage' "lij"
+
+pattern ClarifyTextLanguage_Lt :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Lt = ClarifyTextLanguage' "lt"
+
+pattern ClarifyTextLanguage_Lv :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Lv = ClarifyTextLanguage' "lv"
+
+pattern ClarifyTextLanguage_Mk :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Mk = ClarifyTextLanguage' "mk"
+
+pattern ClarifyTextLanguage_Ml :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ml = ClarifyTextLanguage' "ml"
+
+pattern ClarifyTextLanguage_Mr :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Mr = ClarifyTextLanguage' "mr"
+
+pattern ClarifyTextLanguage_Nb :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Nb = ClarifyTextLanguage' "nb"
+
+pattern ClarifyTextLanguage_Ne :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ne = ClarifyTextLanguage' "ne"
+
+pattern ClarifyTextLanguage_Nl :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Nl = ClarifyTextLanguage' "nl"
+
+pattern ClarifyTextLanguage_Pl :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Pl = ClarifyTextLanguage' "pl"
+
+pattern ClarifyTextLanguage_Pt :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Pt = ClarifyTextLanguage' "pt"
+
+pattern ClarifyTextLanguage_Ro :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ro = ClarifyTextLanguage' "ro"
+
+pattern ClarifyTextLanguage_Ru :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ru = ClarifyTextLanguage' "ru"
+
+pattern ClarifyTextLanguage_Sa :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Sa = ClarifyTextLanguage' "sa"
+
+pattern ClarifyTextLanguage_Si :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Si = ClarifyTextLanguage' "si"
+
+pattern ClarifyTextLanguage_Sk :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Sk = ClarifyTextLanguage' "sk"
+
+pattern ClarifyTextLanguage_Sl :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Sl = ClarifyTextLanguage' "sl"
+
+pattern ClarifyTextLanguage_Sq :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Sq = ClarifyTextLanguage' "sq"
+
+pattern ClarifyTextLanguage_Sr :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Sr = ClarifyTextLanguage' "sr"
+
+pattern ClarifyTextLanguage_Sv :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Sv = ClarifyTextLanguage' "sv"
+
+pattern ClarifyTextLanguage_Ta :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ta = ClarifyTextLanguage' "ta"
+
+pattern ClarifyTextLanguage_Te :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Te = ClarifyTextLanguage' "te"
+
+pattern ClarifyTextLanguage_Tl :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Tl = ClarifyTextLanguage' "tl"
+
+pattern ClarifyTextLanguage_Tn :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Tn = ClarifyTextLanguage' "tn"
+
+pattern ClarifyTextLanguage_Tr :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Tr = ClarifyTextLanguage' "tr"
+
+pattern ClarifyTextLanguage_Tt :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Tt = ClarifyTextLanguage' "tt"
+
+pattern ClarifyTextLanguage_Uk :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Uk = ClarifyTextLanguage' "uk"
+
+pattern ClarifyTextLanguage_Ur :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Ur = ClarifyTextLanguage' "ur"
+
+pattern ClarifyTextLanguage_Xx :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Xx = ClarifyTextLanguage' "xx"
+
+pattern ClarifyTextLanguage_Yo :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Yo = ClarifyTextLanguage' "yo"
+
+pattern ClarifyTextLanguage_Zh :: ClarifyTextLanguage
+pattern ClarifyTextLanguage_Zh = ClarifyTextLanguage' "zh"
+
+{-# COMPLETE
+  ClarifyTextLanguage_Af,
+  ClarifyTextLanguage_Ar,
+  ClarifyTextLanguage_Bg,
+  ClarifyTextLanguage_Bn,
+  ClarifyTextLanguage_Ca,
+  ClarifyTextLanguage_Cs,
+  ClarifyTextLanguage_Da,
+  ClarifyTextLanguage_De,
+  ClarifyTextLanguage_El,
+  ClarifyTextLanguage_En,
+  ClarifyTextLanguage_Es,
+  ClarifyTextLanguage_Et,
+  ClarifyTextLanguage_Eu,
+  ClarifyTextLanguage_Fa,
+  ClarifyTextLanguage_Fi,
+  ClarifyTextLanguage_Fr,
+  ClarifyTextLanguage_Ga,
+  ClarifyTextLanguage_Gu,
+  ClarifyTextLanguage_He,
+  ClarifyTextLanguage_Hi,
+  ClarifyTextLanguage_Hr,
+  ClarifyTextLanguage_Hu,
+  ClarifyTextLanguage_Hy,
+  ClarifyTextLanguage_Id,
+  ClarifyTextLanguage_Is,
+  ClarifyTextLanguage_It,
+  ClarifyTextLanguage_Kn,
+  ClarifyTextLanguage_Ky,
+  ClarifyTextLanguage_Lb,
+  ClarifyTextLanguage_Lij,
+  ClarifyTextLanguage_Lt,
+  ClarifyTextLanguage_Lv,
+  ClarifyTextLanguage_Mk,
+  ClarifyTextLanguage_Ml,
+  ClarifyTextLanguage_Mr,
+  ClarifyTextLanguage_Nb,
+  ClarifyTextLanguage_Ne,
+  ClarifyTextLanguage_Nl,
+  ClarifyTextLanguage_Pl,
+  ClarifyTextLanguage_Pt,
+  ClarifyTextLanguage_Ro,
+  ClarifyTextLanguage_Ru,
+  ClarifyTextLanguage_Sa,
+  ClarifyTextLanguage_Si,
+  ClarifyTextLanguage_Sk,
+  ClarifyTextLanguage_Sl,
+  ClarifyTextLanguage_Sq,
+  ClarifyTextLanguage_Sr,
+  ClarifyTextLanguage_Sv,
+  ClarifyTextLanguage_Ta,
+  ClarifyTextLanguage_Te,
+  ClarifyTextLanguage_Tl,
+  ClarifyTextLanguage_Tn,
+  ClarifyTextLanguage_Tr,
+  ClarifyTextLanguage_Tt,
+  ClarifyTextLanguage_Uk,
+  ClarifyTextLanguage_Ur,
+  ClarifyTextLanguage_Xx,
+  ClarifyTextLanguage_Yo,
+  ClarifyTextLanguage_Zh,
+  ClarifyTextLanguage'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CodeRepository.hs b/gen/Amazonka/SageMaker/Types/CodeRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CodeRepository.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CodeRepository
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CodeRepository 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
+
+-- | A Git repository that SageMaker automatically displays to users for
+-- cloning in the JupyterServer application.
+--
+-- /See:/ 'newCodeRepository' smart constructor.
+data CodeRepository = CodeRepository'
+  { -- | The URL of the Git repository.
+    repositoryUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeRepository' 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:
+--
+-- 'repositoryUrl', 'codeRepository_repositoryUrl' - The URL of the Git repository.
+newCodeRepository ::
+  -- | 'repositoryUrl'
+  Prelude.Text ->
+  CodeRepository
+newCodeRepository pRepositoryUrl_ =
+  CodeRepository' {repositoryUrl = pRepositoryUrl_}
+
+-- | The URL of the Git repository.
+codeRepository_repositoryUrl :: Lens.Lens' CodeRepository Prelude.Text
+codeRepository_repositoryUrl = Lens.lens (\CodeRepository' {repositoryUrl} -> repositoryUrl) (\s@CodeRepository' {} a -> s {repositoryUrl = a} :: CodeRepository)
+
+instance Data.FromJSON CodeRepository where
+  parseJSON =
+    Data.withObject
+      "CodeRepository"
+      ( \x ->
+          CodeRepository'
+            Prelude.<$> (x Data..: "RepositoryUrl")
+      )
+
+instance Prelude.Hashable CodeRepository where
+  hashWithSalt _salt CodeRepository' {..} =
+    _salt `Prelude.hashWithSalt` repositoryUrl
+
+instance Prelude.NFData CodeRepository where
+  rnf CodeRepository' {..} = Prelude.rnf repositoryUrl
+
+instance Data.ToJSON CodeRepository where
+  toJSON CodeRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("RepositoryUrl" Data..= repositoryUrl)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CodeRepositorySortBy.hs b/gen/Amazonka/SageMaker/Types/CodeRepositorySortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CodeRepositorySortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CodeRepositorySortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CodeRepositorySortBy
+  ( CodeRepositorySortBy
+      ( ..,
+        CodeRepositorySortBy_CreationTime,
+        CodeRepositorySortBy_LastModifiedTime,
+        CodeRepositorySortBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CodeRepositorySortBy = CodeRepositorySortBy'
+  { fromCodeRepositorySortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CodeRepositorySortBy_CreationTime :: CodeRepositorySortBy
+pattern CodeRepositorySortBy_CreationTime = CodeRepositorySortBy' "CreationTime"
+
+pattern CodeRepositorySortBy_LastModifiedTime :: CodeRepositorySortBy
+pattern CodeRepositorySortBy_LastModifiedTime = CodeRepositorySortBy' "LastModifiedTime"
+
+pattern CodeRepositorySortBy_Name :: CodeRepositorySortBy
+pattern CodeRepositorySortBy_Name = CodeRepositorySortBy' "Name"
+
+{-# COMPLETE
+  CodeRepositorySortBy_CreationTime,
+  CodeRepositorySortBy_LastModifiedTime,
+  CodeRepositorySortBy_Name,
+  CodeRepositorySortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CodeRepositorySortOrder.hs b/gen/Amazonka/SageMaker/Types/CodeRepositorySortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CodeRepositorySortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CodeRepositorySortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CodeRepositorySortOrder
+  ( CodeRepositorySortOrder
+      ( ..,
+        CodeRepositorySortOrder_Ascending,
+        CodeRepositorySortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CodeRepositorySortOrder = CodeRepositorySortOrder'
+  { fromCodeRepositorySortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CodeRepositorySortOrder_Ascending :: CodeRepositorySortOrder
+pattern CodeRepositorySortOrder_Ascending = CodeRepositorySortOrder' "Ascending"
+
+pattern CodeRepositorySortOrder_Descending :: CodeRepositorySortOrder
+pattern CodeRepositorySortOrder_Descending = CodeRepositorySortOrder' "Descending"
+
+{-# COMPLETE
+  CodeRepositorySortOrder_Ascending,
+  CodeRepositorySortOrder_Descending,
+  CodeRepositorySortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CodeRepositorySummary.hs b/gen/Amazonka/SageMaker/Types/CodeRepositorySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CodeRepositorySummary.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CodeRepositorySummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CodeRepositorySummary 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 Amazonka.SageMaker.Types.GitConfig
+
+-- | Specifies summary information about a Git repository.
+--
+-- /See:/ 'newCodeRepositorySummary' smart constructor.
+data CodeRepositorySummary = CodeRepositorySummary'
+  { -- | Configuration details for the Git repository, including the URL where it
+    -- is located and the ARN of the Amazon Web Services Secrets Manager secret
+    -- that contains the credentials used to access the repository.
+    gitConfig :: Prelude.Maybe GitConfig,
+    -- | The name of the Git repository.
+    codeRepositoryName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Git repository.
+    codeRepositoryArn :: Prelude.Text,
+    -- | The date and time that the Git repository was created.
+    creationTime :: Data.POSIX,
+    -- | The date and time that the Git repository was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeRepositorySummary' 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:
+--
+-- 'gitConfig', 'codeRepositorySummary_gitConfig' - Configuration details for the Git repository, including the URL where it
+-- is located and the ARN of the Amazon Web Services Secrets Manager secret
+-- that contains the credentials used to access the repository.
+--
+-- 'codeRepositoryName', 'codeRepositorySummary_codeRepositoryName' - The name of the Git repository.
+--
+-- 'codeRepositoryArn', 'codeRepositorySummary_codeRepositoryArn' - The Amazon Resource Name (ARN) of the Git repository.
+--
+-- 'creationTime', 'codeRepositorySummary_creationTime' - The date and time that the Git repository was created.
+--
+-- 'lastModifiedTime', 'codeRepositorySummary_lastModifiedTime' - The date and time that the Git repository was last modified.
+newCodeRepositorySummary ::
+  -- | 'codeRepositoryName'
+  Prelude.Text ->
+  -- | 'codeRepositoryArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  CodeRepositorySummary
+newCodeRepositorySummary
+  pCodeRepositoryName_
+  pCodeRepositoryArn_
+  pCreationTime_
+  pLastModifiedTime_ =
+    CodeRepositorySummary'
+      { gitConfig = Prelude.Nothing,
+        codeRepositoryName = pCodeRepositoryName_,
+        codeRepositoryArn = pCodeRepositoryArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | Configuration details for the Git repository, including the URL where it
+-- is located and the ARN of the Amazon Web Services Secrets Manager secret
+-- that contains the credentials used to access the repository.
+codeRepositorySummary_gitConfig :: Lens.Lens' CodeRepositorySummary (Prelude.Maybe GitConfig)
+codeRepositorySummary_gitConfig = Lens.lens (\CodeRepositorySummary' {gitConfig} -> gitConfig) (\s@CodeRepositorySummary' {} a -> s {gitConfig = a} :: CodeRepositorySummary)
+
+-- | The name of the Git repository.
+codeRepositorySummary_codeRepositoryName :: Lens.Lens' CodeRepositorySummary Prelude.Text
+codeRepositorySummary_codeRepositoryName = Lens.lens (\CodeRepositorySummary' {codeRepositoryName} -> codeRepositoryName) (\s@CodeRepositorySummary' {} a -> s {codeRepositoryName = a} :: CodeRepositorySummary)
+
+-- | The Amazon Resource Name (ARN) of the Git repository.
+codeRepositorySummary_codeRepositoryArn :: Lens.Lens' CodeRepositorySummary Prelude.Text
+codeRepositorySummary_codeRepositoryArn = Lens.lens (\CodeRepositorySummary' {codeRepositoryArn} -> codeRepositoryArn) (\s@CodeRepositorySummary' {} a -> s {codeRepositoryArn = a} :: CodeRepositorySummary)
+
+-- | The date and time that the Git repository was created.
+codeRepositorySummary_creationTime :: Lens.Lens' CodeRepositorySummary Prelude.UTCTime
+codeRepositorySummary_creationTime = Lens.lens (\CodeRepositorySummary' {creationTime} -> creationTime) (\s@CodeRepositorySummary' {} a -> s {creationTime = a} :: CodeRepositorySummary) Prelude.. Data._Time
+
+-- | The date and time that the Git repository was last modified.
+codeRepositorySummary_lastModifiedTime :: Lens.Lens' CodeRepositorySummary Prelude.UTCTime
+codeRepositorySummary_lastModifiedTime = Lens.lens (\CodeRepositorySummary' {lastModifiedTime} -> lastModifiedTime) (\s@CodeRepositorySummary' {} a -> s {lastModifiedTime = a} :: CodeRepositorySummary) Prelude.. Data._Time
+
+instance Data.FromJSON CodeRepositorySummary where
+  parseJSON =
+    Data.withObject
+      "CodeRepositorySummary"
+      ( \x ->
+          CodeRepositorySummary'
+            Prelude.<$> (x Data..:? "GitConfig")
+            Prelude.<*> (x Data..: "CodeRepositoryName")
+            Prelude.<*> (x Data..: "CodeRepositoryArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable CodeRepositorySummary where
+  hashWithSalt _salt CodeRepositorySummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` gitConfig
+      `Prelude.hashWithSalt` codeRepositoryName
+      `Prelude.hashWithSalt` codeRepositoryArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData CodeRepositorySummary where
+  rnf CodeRepositorySummary' {..} =
+    Prelude.rnf gitConfig
+      `Prelude.seq` Prelude.rnf codeRepositoryName
+      `Prelude.seq` Prelude.rnf codeRepositoryArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/CognitoConfig.hs b/gen/Amazonka/SageMaker/Types/CognitoConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CognitoConfig.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CognitoConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CognitoConfig 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
+
+-- | Use this parameter to configure your Amazon Cognito workforce. A single
+-- Cognito workforce is created using and corresponds to a single
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+--
+-- /See:/ 'newCognitoConfig' smart constructor.
+data CognitoConfig = CognitoConfig'
+  { -- | A
+    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html user pool>
+    -- is a user directory in Amazon Cognito. With a user pool, your users can
+    -- sign in to your web or mobile app through Amazon Cognito. Your users can
+    -- also sign in through social identity providers like Google, Facebook,
+    -- Amazon, or Apple, and through SAML identity providers.
+    userPool :: Prelude.Text,
+    -- | The client ID for your Amazon Cognito user pool.
+    clientId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CognitoConfig' 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:
+--
+-- 'userPool', 'cognitoConfig_userPool' - A
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html user pool>
+-- is a user directory in Amazon Cognito. With a user pool, your users can
+-- sign in to your web or mobile app through Amazon Cognito. Your users can
+-- also sign in through social identity providers like Google, Facebook,
+-- Amazon, or Apple, and through SAML identity providers.
+--
+-- 'clientId', 'cognitoConfig_clientId' - The client ID for your Amazon Cognito user pool.
+newCognitoConfig ::
+  -- | 'userPool'
+  Prelude.Text ->
+  -- | 'clientId'
+  Prelude.Text ->
+  CognitoConfig
+newCognitoConfig pUserPool_ pClientId_ =
+  CognitoConfig'
+    { userPool = pUserPool_,
+      clientId = pClientId_
+    }
+
+-- | A
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html user pool>
+-- is a user directory in Amazon Cognito. With a user pool, your users can
+-- sign in to your web or mobile app through Amazon Cognito. Your users can
+-- also sign in through social identity providers like Google, Facebook,
+-- Amazon, or Apple, and through SAML identity providers.
+cognitoConfig_userPool :: Lens.Lens' CognitoConfig Prelude.Text
+cognitoConfig_userPool = Lens.lens (\CognitoConfig' {userPool} -> userPool) (\s@CognitoConfig' {} a -> s {userPool = a} :: CognitoConfig)
+
+-- | The client ID for your Amazon Cognito user pool.
+cognitoConfig_clientId :: Lens.Lens' CognitoConfig Prelude.Text
+cognitoConfig_clientId = Lens.lens (\CognitoConfig' {clientId} -> clientId) (\s@CognitoConfig' {} a -> s {clientId = a} :: CognitoConfig)
+
+instance Data.FromJSON CognitoConfig where
+  parseJSON =
+    Data.withObject
+      "CognitoConfig"
+      ( \x ->
+          CognitoConfig'
+            Prelude.<$> (x Data..: "UserPool")
+            Prelude.<*> (x Data..: "ClientId")
+      )
+
+instance Prelude.Hashable CognitoConfig where
+  hashWithSalt _salt CognitoConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` userPool
+      `Prelude.hashWithSalt` clientId
+
+instance Prelude.NFData CognitoConfig where
+  rnf CognitoConfig' {..} =
+    Prelude.rnf userPool
+      `Prelude.seq` Prelude.rnf clientId
+
+instance Data.ToJSON CognitoConfig where
+  toJSON CognitoConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("UserPool" Data..= userPool),
+            Prelude.Just ("ClientId" Data..= clientId)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CognitoMemberDefinition.hs b/gen/Amazonka/SageMaker/Types/CognitoMemberDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CognitoMemberDefinition.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CognitoMemberDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CognitoMemberDefinition 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
+
+-- | Identifies a Amazon Cognito user group. A user group can be used in on
+-- or more work teams.
+--
+-- /See:/ 'newCognitoMemberDefinition' smart constructor.
+data CognitoMemberDefinition = CognitoMemberDefinition'
+  { -- | An identifier for a user pool. The user pool must be in the same region
+    -- as the service that you are calling.
+    userPool :: Prelude.Text,
+    -- | An identifier for a user group.
+    userGroup :: Prelude.Text,
+    -- | An identifier for an application client. You must create the app client
+    -- ID using Amazon Cognito.
+    clientId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CognitoMemberDefinition' 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:
+--
+-- 'userPool', 'cognitoMemberDefinition_userPool' - An identifier for a user pool. The user pool must be in the same region
+-- as the service that you are calling.
+--
+-- 'userGroup', 'cognitoMemberDefinition_userGroup' - An identifier for a user group.
+--
+-- 'clientId', 'cognitoMemberDefinition_clientId' - An identifier for an application client. You must create the app client
+-- ID using Amazon Cognito.
+newCognitoMemberDefinition ::
+  -- | 'userPool'
+  Prelude.Text ->
+  -- | 'userGroup'
+  Prelude.Text ->
+  -- | 'clientId'
+  Prelude.Text ->
+  CognitoMemberDefinition
+newCognitoMemberDefinition
+  pUserPool_
+  pUserGroup_
+  pClientId_ =
+    CognitoMemberDefinition'
+      { userPool = pUserPool_,
+        userGroup = pUserGroup_,
+        clientId = pClientId_
+      }
+
+-- | An identifier for a user pool. The user pool must be in the same region
+-- as the service that you are calling.
+cognitoMemberDefinition_userPool :: Lens.Lens' CognitoMemberDefinition Prelude.Text
+cognitoMemberDefinition_userPool = Lens.lens (\CognitoMemberDefinition' {userPool} -> userPool) (\s@CognitoMemberDefinition' {} a -> s {userPool = a} :: CognitoMemberDefinition)
+
+-- | An identifier for a user group.
+cognitoMemberDefinition_userGroup :: Lens.Lens' CognitoMemberDefinition Prelude.Text
+cognitoMemberDefinition_userGroup = Lens.lens (\CognitoMemberDefinition' {userGroup} -> userGroup) (\s@CognitoMemberDefinition' {} a -> s {userGroup = a} :: CognitoMemberDefinition)
+
+-- | An identifier for an application client. You must create the app client
+-- ID using Amazon Cognito.
+cognitoMemberDefinition_clientId :: Lens.Lens' CognitoMemberDefinition Prelude.Text
+cognitoMemberDefinition_clientId = Lens.lens (\CognitoMemberDefinition' {clientId} -> clientId) (\s@CognitoMemberDefinition' {} a -> s {clientId = a} :: CognitoMemberDefinition)
+
+instance Data.FromJSON CognitoMemberDefinition where
+  parseJSON =
+    Data.withObject
+      "CognitoMemberDefinition"
+      ( \x ->
+          CognitoMemberDefinition'
+            Prelude.<$> (x Data..: "UserPool")
+            Prelude.<*> (x Data..: "UserGroup")
+            Prelude.<*> (x Data..: "ClientId")
+      )
+
+instance Prelude.Hashable CognitoMemberDefinition where
+  hashWithSalt _salt CognitoMemberDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` userPool
+      `Prelude.hashWithSalt` userGroup
+      `Prelude.hashWithSalt` clientId
+
+instance Prelude.NFData CognitoMemberDefinition where
+  rnf CognitoMemberDefinition' {..} =
+    Prelude.rnf userPool
+      `Prelude.seq` Prelude.rnf userGroup
+      `Prelude.seq` Prelude.rnf clientId
+
+instance Data.ToJSON CognitoMemberDefinition where
+  toJSON CognitoMemberDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("UserPool" Data..= userPool),
+            Prelude.Just ("UserGroup" Data..= userGroup),
+            Prelude.Just ("ClientId" Data..= clientId)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CollectionConfiguration.hs b/gen/Amazonka/SageMaker/Types/CollectionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CollectionConfiguration.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CollectionConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CollectionConfiguration 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
+
+-- | Configuration information for the Amazon SageMaker Debugger output
+-- tensor collections.
+--
+-- /See:/ 'newCollectionConfiguration' smart constructor.
+data CollectionConfiguration = CollectionConfiguration'
+  { -- | The name of the tensor collection. The name must be unique relative to
+    -- other rule configuration names.
+    collectionName :: Prelude.Maybe Prelude.Text,
+    -- | Parameter values for the tensor collection. The allowed parameters are
+    -- @\"name\"@, @\"include_regex\"@, @\"reduction_config\"@,
+    -- @\"save_config\"@, @\"tensor_names\"@, and @\"save_histogram\"@.
+    collectionParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CollectionConfiguration' 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:
+--
+-- 'collectionName', 'collectionConfiguration_collectionName' - The name of the tensor collection. The name must be unique relative to
+-- other rule configuration names.
+--
+-- 'collectionParameters', 'collectionConfiguration_collectionParameters' - Parameter values for the tensor collection. The allowed parameters are
+-- @\"name\"@, @\"include_regex\"@, @\"reduction_config\"@,
+-- @\"save_config\"@, @\"tensor_names\"@, and @\"save_histogram\"@.
+newCollectionConfiguration ::
+  CollectionConfiguration
+newCollectionConfiguration =
+  CollectionConfiguration'
+    { collectionName =
+        Prelude.Nothing,
+      collectionParameters = Prelude.Nothing
+    }
+
+-- | The name of the tensor collection. The name must be unique relative to
+-- other rule configuration names.
+collectionConfiguration_collectionName :: Lens.Lens' CollectionConfiguration (Prelude.Maybe Prelude.Text)
+collectionConfiguration_collectionName = Lens.lens (\CollectionConfiguration' {collectionName} -> collectionName) (\s@CollectionConfiguration' {} a -> s {collectionName = a} :: CollectionConfiguration)
+
+-- | Parameter values for the tensor collection. The allowed parameters are
+-- @\"name\"@, @\"include_regex\"@, @\"reduction_config\"@,
+-- @\"save_config\"@, @\"tensor_names\"@, and @\"save_histogram\"@.
+collectionConfiguration_collectionParameters :: Lens.Lens' CollectionConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+collectionConfiguration_collectionParameters = Lens.lens (\CollectionConfiguration' {collectionParameters} -> collectionParameters) (\s@CollectionConfiguration' {} a -> s {collectionParameters = a} :: CollectionConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CollectionConfiguration where
+  parseJSON =
+    Data.withObject
+      "CollectionConfiguration"
+      ( \x ->
+          CollectionConfiguration'
+            Prelude.<$> (x Data..:? "CollectionName")
+            Prelude.<*> ( x
+                            Data..:? "CollectionParameters"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CollectionConfiguration where
+  hashWithSalt _salt CollectionConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` collectionName
+      `Prelude.hashWithSalt` collectionParameters
+
+instance Prelude.NFData CollectionConfiguration where
+  rnf CollectionConfiguration' {..} =
+    Prelude.rnf collectionName
+      `Prelude.seq` Prelude.rnf collectionParameters
+
+instance Data.ToJSON CollectionConfiguration where
+  toJSON CollectionConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CollectionName" Data..=)
+              Prelude.<$> collectionName,
+            ("CollectionParameters" Data..=)
+              Prelude.<$> collectionParameters
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CompilationJobStatus.hs b/gen/Amazonka/SageMaker/Types/CompilationJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CompilationJobStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CompilationJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CompilationJobStatus
+  ( CompilationJobStatus
+      ( ..,
+        CompilationJobStatus_COMPLETED,
+        CompilationJobStatus_FAILED,
+        CompilationJobStatus_INPROGRESS,
+        CompilationJobStatus_STARTING,
+        CompilationJobStatus_STOPPED,
+        CompilationJobStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CompilationJobStatus = CompilationJobStatus'
+  { fromCompilationJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CompilationJobStatus_COMPLETED :: CompilationJobStatus
+pattern CompilationJobStatus_COMPLETED = CompilationJobStatus' "COMPLETED"
+
+pattern CompilationJobStatus_FAILED :: CompilationJobStatus
+pattern CompilationJobStatus_FAILED = CompilationJobStatus' "FAILED"
+
+pattern CompilationJobStatus_INPROGRESS :: CompilationJobStatus
+pattern CompilationJobStatus_INPROGRESS = CompilationJobStatus' "INPROGRESS"
+
+pattern CompilationJobStatus_STARTING :: CompilationJobStatus
+pattern CompilationJobStatus_STARTING = CompilationJobStatus' "STARTING"
+
+pattern CompilationJobStatus_STOPPED :: CompilationJobStatus
+pattern CompilationJobStatus_STOPPED = CompilationJobStatus' "STOPPED"
+
+pattern CompilationJobStatus_STOPPING :: CompilationJobStatus
+pattern CompilationJobStatus_STOPPING = CompilationJobStatus' "STOPPING"
+
+{-# COMPLETE
+  CompilationJobStatus_COMPLETED,
+  CompilationJobStatus_FAILED,
+  CompilationJobStatus_INPROGRESS,
+  CompilationJobStatus_STARTING,
+  CompilationJobStatus_STOPPED,
+  CompilationJobStatus_STOPPING,
+  CompilationJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/CompilationJobSummary.hs b/gen/Amazonka/SageMaker/Types/CompilationJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CompilationJobSummary.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CompilationJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CompilationJobSummary 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 Amazonka.SageMaker.Types.CompilationJobStatus
+import Amazonka.SageMaker.Types.TargetDevice
+import Amazonka.SageMaker.Types.TargetPlatformAccelerator
+import Amazonka.SageMaker.Types.TargetPlatformArch
+import Amazonka.SageMaker.Types.TargetPlatformOs
+
+-- | A summary of a model compilation job.
+--
+-- /See:/ 'newCompilationJobSummary' smart constructor.
+data CompilationJobSummary = CompilationJobSummary'
+  { -- | The time when the model compilation job completed.
+    compilationEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The time when the model compilation job started.
+    compilationStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The type of device that the model will run on after the compilation job
+    -- has completed.
+    compilationTargetDevice :: Prelude.Maybe TargetDevice,
+    -- | The type of accelerator that the model will run on after the compilation
+    -- job has completed.
+    compilationTargetPlatformAccelerator :: Prelude.Maybe TargetPlatformAccelerator,
+    -- | The type of architecture that the model will run on after the
+    -- compilation job has completed.
+    compilationTargetPlatformArch :: Prelude.Maybe TargetPlatformArch,
+    -- | The type of OS that the model will run on after the compilation job has
+    -- completed.
+    compilationTargetPlatformOs :: Prelude.Maybe TargetPlatformOs,
+    -- | The time when the model compilation job was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the model compilation job that you want a summary for.
+    compilationJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model compilation job.
+    compilationJobArn :: Prelude.Text,
+    -- | The time when the model compilation job was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the model compilation job.
+    compilationJobStatus :: CompilationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CompilationJobSummary' 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:
+--
+-- 'compilationEndTime', 'compilationJobSummary_compilationEndTime' - The time when the model compilation job completed.
+--
+-- 'compilationStartTime', 'compilationJobSummary_compilationStartTime' - The time when the model compilation job started.
+--
+-- 'compilationTargetDevice', 'compilationJobSummary_compilationTargetDevice' - The type of device that the model will run on after the compilation job
+-- has completed.
+--
+-- 'compilationTargetPlatformAccelerator', 'compilationJobSummary_compilationTargetPlatformAccelerator' - The type of accelerator that the model will run on after the compilation
+-- job has completed.
+--
+-- 'compilationTargetPlatformArch', 'compilationJobSummary_compilationTargetPlatformArch' - The type of architecture that the model will run on after the
+-- compilation job has completed.
+--
+-- 'compilationTargetPlatformOs', 'compilationJobSummary_compilationTargetPlatformOs' - The type of OS that the model will run on after the compilation job has
+-- completed.
+--
+-- 'lastModifiedTime', 'compilationJobSummary_lastModifiedTime' - The time when the model compilation job was last modified.
+--
+-- 'compilationJobName', 'compilationJobSummary_compilationJobName' - The name of the model compilation job that you want a summary for.
+--
+-- 'compilationJobArn', 'compilationJobSummary_compilationJobArn' - The Amazon Resource Name (ARN) of the model compilation job.
+--
+-- 'creationTime', 'compilationJobSummary_creationTime' - The time when the model compilation job was created.
+--
+-- 'compilationJobStatus', 'compilationJobSummary_compilationJobStatus' - The status of the model compilation job.
+newCompilationJobSummary ::
+  -- | 'compilationJobName'
+  Prelude.Text ->
+  -- | 'compilationJobArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'compilationJobStatus'
+  CompilationJobStatus ->
+  CompilationJobSummary
+newCompilationJobSummary
+  pCompilationJobName_
+  pCompilationJobArn_
+  pCreationTime_
+  pCompilationJobStatus_ =
+    CompilationJobSummary'
+      { compilationEndTime =
+          Prelude.Nothing,
+        compilationStartTime = Prelude.Nothing,
+        compilationTargetDevice = Prelude.Nothing,
+        compilationTargetPlatformAccelerator =
+          Prelude.Nothing,
+        compilationTargetPlatformArch = Prelude.Nothing,
+        compilationTargetPlatformOs = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        compilationJobName = pCompilationJobName_,
+        compilationJobArn = pCompilationJobArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        compilationJobStatus = pCompilationJobStatus_
+      }
+
+-- | The time when the model compilation job completed.
+compilationJobSummary_compilationEndTime :: Lens.Lens' CompilationJobSummary (Prelude.Maybe Prelude.UTCTime)
+compilationJobSummary_compilationEndTime = Lens.lens (\CompilationJobSummary' {compilationEndTime} -> compilationEndTime) (\s@CompilationJobSummary' {} a -> s {compilationEndTime = a} :: CompilationJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time when the model compilation job started.
+compilationJobSummary_compilationStartTime :: Lens.Lens' CompilationJobSummary (Prelude.Maybe Prelude.UTCTime)
+compilationJobSummary_compilationStartTime = Lens.lens (\CompilationJobSummary' {compilationStartTime} -> compilationStartTime) (\s@CompilationJobSummary' {} a -> s {compilationStartTime = a} :: CompilationJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The type of device that the model will run on after the compilation job
+-- has completed.
+compilationJobSummary_compilationTargetDevice :: Lens.Lens' CompilationJobSummary (Prelude.Maybe TargetDevice)
+compilationJobSummary_compilationTargetDevice = Lens.lens (\CompilationJobSummary' {compilationTargetDevice} -> compilationTargetDevice) (\s@CompilationJobSummary' {} a -> s {compilationTargetDevice = a} :: CompilationJobSummary)
+
+-- | The type of accelerator that the model will run on after the compilation
+-- job has completed.
+compilationJobSummary_compilationTargetPlatformAccelerator :: Lens.Lens' CompilationJobSummary (Prelude.Maybe TargetPlatformAccelerator)
+compilationJobSummary_compilationTargetPlatformAccelerator = Lens.lens (\CompilationJobSummary' {compilationTargetPlatformAccelerator} -> compilationTargetPlatformAccelerator) (\s@CompilationJobSummary' {} a -> s {compilationTargetPlatformAccelerator = a} :: CompilationJobSummary)
+
+-- | The type of architecture that the model will run on after the
+-- compilation job has completed.
+compilationJobSummary_compilationTargetPlatformArch :: Lens.Lens' CompilationJobSummary (Prelude.Maybe TargetPlatformArch)
+compilationJobSummary_compilationTargetPlatformArch = Lens.lens (\CompilationJobSummary' {compilationTargetPlatformArch} -> compilationTargetPlatformArch) (\s@CompilationJobSummary' {} a -> s {compilationTargetPlatformArch = a} :: CompilationJobSummary)
+
+-- | The type of OS that the model will run on after the compilation job has
+-- completed.
+compilationJobSummary_compilationTargetPlatformOs :: Lens.Lens' CompilationJobSummary (Prelude.Maybe TargetPlatformOs)
+compilationJobSummary_compilationTargetPlatformOs = Lens.lens (\CompilationJobSummary' {compilationTargetPlatformOs} -> compilationTargetPlatformOs) (\s@CompilationJobSummary' {} a -> s {compilationTargetPlatformOs = a} :: CompilationJobSummary)
+
+-- | The time when the model compilation job was last modified.
+compilationJobSummary_lastModifiedTime :: Lens.Lens' CompilationJobSummary (Prelude.Maybe Prelude.UTCTime)
+compilationJobSummary_lastModifiedTime = Lens.lens (\CompilationJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@CompilationJobSummary' {} a -> s {lastModifiedTime = a} :: CompilationJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the model compilation job that you want a summary for.
+compilationJobSummary_compilationJobName :: Lens.Lens' CompilationJobSummary Prelude.Text
+compilationJobSummary_compilationJobName = Lens.lens (\CompilationJobSummary' {compilationJobName} -> compilationJobName) (\s@CompilationJobSummary' {} a -> s {compilationJobName = a} :: CompilationJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the model compilation job.
+compilationJobSummary_compilationJobArn :: Lens.Lens' CompilationJobSummary Prelude.Text
+compilationJobSummary_compilationJobArn = Lens.lens (\CompilationJobSummary' {compilationJobArn} -> compilationJobArn) (\s@CompilationJobSummary' {} a -> s {compilationJobArn = a} :: CompilationJobSummary)
+
+-- | The time when the model compilation job was created.
+compilationJobSummary_creationTime :: Lens.Lens' CompilationJobSummary Prelude.UTCTime
+compilationJobSummary_creationTime = Lens.lens (\CompilationJobSummary' {creationTime} -> creationTime) (\s@CompilationJobSummary' {} a -> s {creationTime = a} :: CompilationJobSummary) Prelude.. Data._Time
+
+-- | The status of the model compilation job.
+compilationJobSummary_compilationJobStatus :: Lens.Lens' CompilationJobSummary CompilationJobStatus
+compilationJobSummary_compilationJobStatus = Lens.lens (\CompilationJobSummary' {compilationJobStatus} -> compilationJobStatus) (\s@CompilationJobSummary' {} a -> s {compilationJobStatus = a} :: CompilationJobSummary)
+
+instance Data.FromJSON CompilationJobSummary where
+  parseJSON =
+    Data.withObject
+      "CompilationJobSummary"
+      ( \x ->
+          CompilationJobSummary'
+            Prelude.<$> (x Data..:? "CompilationEndTime")
+            Prelude.<*> (x Data..:? "CompilationStartTime")
+            Prelude.<*> (x Data..:? "CompilationTargetDevice")
+            Prelude.<*> (x Data..:? "CompilationTargetPlatformAccelerator")
+            Prelude.<*> (x Data..:? "CompilationTargetPlatformArch")
+            Prelude.<*> (x Data..:? "CompilationTargetPlatformOs")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..: "CompilationJobName")
+            Prelude.<*> (x Data..: "CompilationJobArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "CompilationJobStatus")
+      )
+
+instance Prelude.Hashable CompilationJobSummary where
+  hashWithSalt _salt CompilationJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` compilationEndTime
+      `Prelude.hashWithSalt` compilationStartTime
+      `Prelude.hashWithSalt` compilationTargetDevice
+      `Prelude.hashWithSalt` compilationTargetPlatformAccelerator
+      `Prelude.hashWithSalt` compilationTargetPlatformArch
+      `Prelude.hashWithSalt` compilationTargetPlatformOs
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` compilationJobName
+      `Prelude.hashWithSalt` compilationJobArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` compilationJobStatus
+
+instance Prelude.NFData CompilationJobSummary where
+  rnf CompilationJobSummary' {..} =
+    Prelude.rnf compilationEndTime
+      `Prelude.seq` Prelude.rnf compilationStartTime
+      `Prelude.seq` Prelude.rnf compilationTargetDevice
+      `Prelude.seq` Prelude.rnf compilationTargetPlatformAccelerator
+      `Prelude.seq` Prelude.rnf compilationTargetPlatformArch
+      `Prelude.seq` Prelude.rnf compilationTargetPlatformOs
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf compilationJobName
+      `Prelude.seq` Prelude.rnf compilationJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf compilationJobStatus
diff --git a/gen/Amazonka/SageMaker/Types/CompressionType.hs b/gen/Amazonka/SageMaker/Types/CompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CompressionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.CompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CompressionType
+  ( CompressionType
+      ( ..,
+        CompressionType_Gzip,
+        CompressionType_None
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CompressionType = CompressionType'
+  { fromCompressionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CompressionType_Gzip :: CompressionType
+pattern CompressionType_Gzip = CompressionType' "Gzip"
+
+pattern CompressionType_None :: CompressionType
+pattern CompressionType_None = CompressionType' "None"
+
+{-# COMPLETE
+  CompressionType_Gzip,
+  CompressionType_None,
+  CompressionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ConditionOutcome.hs b/gen/Amazonka/SageMaker/Types/ConditionOutcome.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ConditionOutcome.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ConditionOutcome
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ConditionOutcome
+  ( ConditionOutcome
+      ( ..,
+        ConditionOutcome_False,
+        ConditionOutcome_True
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConditionOutcome = ConditionOutcome'
+  { fromConditionOutcome ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ConditionOutcome_False :: ConditionOutcome
+pattern ConditionOutcome_False = ConditionOutcome' "False"
+
+pattern ConditionOutcome_True :: ConditionOutcome
+pattern ConditionOutcome_True = ConditionOutcome' "True"
+
+{-# COMPLETE
+  ConditionOutcome_False,
+  ConditionOutcome_True,
+  ConditionOutcome'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ConditionStepMetadata.hs b/gen/Amazonka/SageMaker/Types/ConditionStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ConditionStepMetadata.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ConditionStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ConditionStepMetadata 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 Amazonka.SageMaker.Types.ConditionOutcome
+
+-- | Metadata for a Condition step.
+--
+-- /See:/ 'newConditionStepMetadata' smart constructor.
+data ConditionStepMetadata = ConditionStepMetadata'
+  { -- | The outcome of the Condition step evaluation.
+    outcome :: Prelude.Maybe ConditionOutcome
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConditionStepMetadata' 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:
+--
+-- 'outcome', 'conditionStepMetadata_outcome' - The outcome of the Condition step evaluation.
+newConditionStepMetadata ::
+  ConditionStepMetadata
+newConditionStepMetadata =
+  ConditionStepMetadata' {outcome = Prelude.Nothing}
+
+-- | The outcome of the Condition step evaluation.
+conditionStepMetadata_outcome :: Lens.Lens' ConditionStepMetadata (Prelude.Maybe ConditionOutcome)
+conditionStepMetadata_outcome = Lens.lens (\ConditionStepMetadata' {outcome} -> outcome) (\s@ConditionStepMetadata' {} a -> s {outcome = a} :: ConditionStepMetadata)
+
+instance Data.FromJSON ConditionStepMetadata where
+  parseJSON =
+    Data.withObject
+      "ConditionStepMetadata"
+      ( \x ->
+          ConditionStepMetadata'
+            Prelude.<$> (x Data..:? "Outcome")
+      )
+
+instance Prelude.Hashable ConditionStepMetadata where
+  hashWithSalt _salt ConditionStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` outcome
+
+instance Prelude.NFData ConditionStepMetadata where
+  rnf ConditionStepMetadata' {..} = Prelude.rnf outcome
diff --git a/gen/Amazonka/SageMaker/Types/ContainerDefinition.hs b/gen/Amazonka/SageMaker/Types/ContainerDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContainerDefinition.hs
@@ -0,0 +1,333 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ContainerDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContainerDefinition 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 Amazonka.SageMaker.Types.ContainerMode
+import Amazonka.SageMaker.Types.ImageConfig
+import Amazonka.SageMaker.Types.MultiModelConfig
+
+-- | Describes the container, as part of model definition.
+--
+-- /See:/ 'newContainerDefinition' smart constructor.
+data ContainerDefinition = ContainerDefinition'
+  { -- | This parameter is ignored for models that contain only a
+    -- @PrimaryContainer@.
+    --
+    -- When a @ContainerDefinition@ is part of an inference pipeline, the value
+    -- of the parameter uniquely identifies the container for the purposes of
+    -- logging and metrics. For information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html Use Logs and Metrics to Monitor an Inference Pipeline>.
+    -- If you don\'t specify a value for this parameter for a
+    -- @ContainerDefinition@ that is part of an inference pipeline, a unique
+    -- name is automatically assigned based on the position of the
+    -- @ContainerDefinition@ in the pipeline. If you specify a value for the
+    -- @ContainerHostName@ for any @ContainerDefinition@ that is part of an
+    -- inference pipeline, you must specify a value for the @ContainerHostName@
+    -- parameter of every @ContainerDefinition@ in that pipeline.
+    containerHostname :: Prelude.Maybe Prelude.Text,
+    -- | The environment variables to set in the Docker container. Each key and
+    -- value in the @Environment@ string to string map can have length of up to
+    -- 1024. We support up to 16 entries in the map.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The path where inference code is stored. This can be either in Amazon
+    -- EC2 Container Registry or in a Docker registry that is accessible from
+    -- the same VPC that you configure for your endpoint. If you are using your
+    -- own custom algorithm instead of an algorithm provided by SageMaker, the
+    -- inference code must meet SageMaker requirements. SageMaker supports both
+    -- @registry\/repository[:tag]@ and @registry\/repository[\@digest]@ image
+    -- path formats. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>
+    image :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the model container is in Amazon ECR or a private
+    -- Docker registry accessible from your Amazon Virtual Private Cloud (VPC).
+    -- For information about storing containers in a private Docker registry,
+    -- see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-containers-inference-private.html Use a Private Docker Registry for Real-Time Inference Containers>
+    imageConfig :: Prelude.Maybe ImageConfig,
+    -- | The inference specification name in the model package version.
+    inferenceSpecificationName :: Prelude.Maybe Prelude.Text,
+    -- | Whether the container hosts a single model or multiple models.
+    mode :: Prelude.Maybe ContainerMode,
+    -- | The S3 path where the model artifacts, which result from model training,
+    -- are stored. This path must point to a single gzip compressed tar archive
+    -- (.tar.gz suffix). The S3 path is required for SageMaker built-in
+    -- algorithms, but not if you use your own algorithms. For more information
+    -- on built-in algorithms, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Common Parameters>.
+    --
+    -- The model artifacts must be in an S3 bucket that is in the same region
+    -- as the model or endpoint you are creating.
+    --
+    -- If you provide a value for this parameter, SageMaker uses Amazon Web
+    -- Services Security Token Service to download model artifacts from the S3
+    -- path you provide. Amazon Web Services STS is activated in your IAM user
+    -- account by default. If you previously deactivated Amazon Web Services
+    -- STS for a region, you need to reactivate Amazon Web Services STS for
+    -- that region. For more information, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region>
+    -- in the /Amazon Web Services Identity and Access Management User Guide/.
+    --
+    -- If you use a built-in algorithm to create a model, SageMaker requires
+    -- that you provide a S3 path to the model artifacts in @ModelDataUrl@.
+    modelDataUrl :: Prelude.Maybe Prelude.Text,
+    -- | The name or Amazon Resource Name (ARN) of the model package to use to
+    -- create the model.
+    modelPackageName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies additional configuration for multi-model endpoints.
+    multiModelConfig :: Prelude.Maybe MultiModelConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContainerDefinition' 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:
+--
+-- 'containerHostname', 'containerDefinition_containerHostname' - This parameter is ignored for models that contain only a
+-- @PrimaryContainer@.
+--
+-- When a @ContainerDefinition@ is part of an inference pipeline, the value
+-- of the parameter uniquely identifies the container for the purposes of
+-- logging and metrics. For information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html Use Logs and Metrics to Monitor an Inference Pipeline>.
+-- If you don\'t specify a value for this parameter for a
+-- @ContainerDefinition@ that is part of an inference pipeline, a unique
+-- name is automatically assigned based on the position of the
+-- @ContainerDefinition@ in the pipeline. If you specify a value for the
+-- @ContainerHostName@ for any @ContainerDefinition@ that is part of an
+-- inference pipeline, you must specify a value for the @ContainerHostName@
+-- parameter of every @ContainerDefinition@ in that pipeline.
+--
+-- 'environment', 'containerDefinition_environment' - The environment variables to set in the Docker container. Each key and
+-- value in the @Environment@ string to string map can have length of up to
+-- 1024. We support up to 16 entries in the map.
+--
+-- 'image', 'containerDefinition_image' - The path where inference code is stored. This can be either in Amazon
+-- EC2 Container Registry or in a Docker registry that is accessible from
+-- the same VPC that you configure for your endpoint. If you are using your
+-- own custom algorithm instead of an algorithm provided by SageMaker, the
+-- inference code must meet SageMaker requirements. SageMaker supports both
+-- @registry\/repository[:tag]@ and @registry\/repository[\@digest]@ image
+-- path formats. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>
+--
+-- 'imageConfig', 'containerDefinition_imageConfig' - Specifies whether the model container is in Amazon ECR or a private
+-- Docker registry accessible from your Amazon Virtual Private Cloud (VPC).
+-- For information about storing containers in a private Docker registry,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-containers-inference-private.html Use a Private Docker Registry for Real-Time Inference Containers>
+--
+-- 'inferenceSpecificationName', 'containerDefinition_inferenceSpecificationName' - The inference specification name in the model package version.
+--
+-- 'mode', 'containerDefinition_mode' - Whether the container hosts a single model or multiple models.
+--
+-- 'modelDataUrl', 'containerDefinition_modelDataUrl' - The S3 path where the model artifacts, which result from model training,
+-- are stored. This path must point to a single gzip compressed tar archive
+-- (.tar.gz suffix). The S3 path is required for SageMaker built-in
+-- algorithms, but not if you use your own algorithms. For more information
+-- on built-in algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Common Parameters>.
+--
+-- The model artifacts must be in an S3 bucket that is in the same region
+-- as the model or endpoint you are creating.
+--
+-- If you provide a value for this parameter, SageMaker uses Amazon Web
+-- Services Security Token Service to download model artifacts from the S3
+-- path you provide. Amazon Web Services STS is activated in your IAM user
+-- account by default. If you previously deactivated Amazon Web Services
+-- STS for a region, you need to reactivate Amazon Web Services STS for
+-- that region. For more information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+--
+-- If you use a built-in algorithm to create a model, SageMaker requires
+-- that you provide a S3 path to the model artifacts in @ModelDataUrl@.
+--
+-- 'modelPackageName', 'containerDefinition_modelPackageName' - The name or Amazon Resource Name (ARN) of the model package to use to
+-- create the model.
+--
+-- 'multiModelConfig', 'containerDefinition_multiModelConfig' - Specifies additional configuration for multi-model endpoints.
+newContainerDefinition ::
+  ContainerDefinition
+newContainerDefinition =
+  ContainerDefinition'
+    { containerHostname =
+        Prelude.Nothing,
+      environment = Prelude.Nothing,
+      image = Prelude.Nothing,
+      imageConfig = Prelude.Nothing,
+      inferenceSpecificationName = Prelude.Nothing,
+      mode = Prelude.Nothing,
+      modelDataUrl = Prelude.Nothing,
+      modelPackageName = Prelude.Nothing,
+      multiModelConfig = Prelude.Nothing
+    }
+
+-- | This parameter is ignored for models that contain only a
+-- @PrimaryContainer@.
+--
+-- When a @ContainerDefinition@ is part of an inference pipeline, the value
+-- of the parameter uniquely identifies the container for the purposes of
+-- logging and metrics. For information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html Use Logs and Metrics to Monitor an Inference Pipeline>.
+-- If you don\'t specify a value for this parameter for a
+-- @ContainerDefinition@ that is part of an inference pipeline, a unique
+-- name is automatically assigned based on the position of the
+-- @ContainerDefinition@ in the pipeline. If you specify a value for the
+-- @ContainerHostName@ for any @ContainerDefinition@ that is part of an
+-- inference pipeline, you must specify a value for the @ContainerHostName@
+-- parameter of every @ContainerDefinition@ in that pipeline.
+containerDefinition_containerHostname :: Lens.Lens' ContainerDefinition (Prelude.Maybe Prelude.Text)
+containerDefinition_containerHostname = Lens.lens (\ContainerDefinition' {containerHostname} -> containerHostname) (\s@ContainerDefinition' {} a -> s {containerHostname = a} :: ContainerDefinition)
+
+-- | The environment variables to set in the Docker container. Each key and
+-- value in the @Environment@ string to string map can have length of up to
+-- 1024. We support up to 16 entries in the map.
+containerDefinition_environment :: Lens.Lens' ContainerDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+containerDefinition_environment = Lens.lens (\ContainerDefinition' {environment} -> environment) (\s@ContainerDefinition' {} a -> s {environment = a} :: ContainerDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The path where inference code is stored. This can be either in Amazon
+-- EC2 Container Registry or in a Docker registry that is accessible from
+-- the same VPC that you configure for your endpoint. If you are using your
+-- own custom algorithm instead of an algorithm provided by SageMaker, the
+-- inference code must meet SageMaker requirements. SageMaker supports both
+-- @registry\/repository[:tag]@ and @registry\/repository[\@digest]@ image
+-- path formats. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>
+containerDefinition_image :: Lens.Lens' ContainerDefinition (Prelude.Maybe Prelude.Text)
+containerDefinition_image = Lens.lens (\ContainerDefinition' {image} -> image) (\s@ContainerDefinition' {} a -> s {image = a} :: ContainerDefinition)
+
+-- | Specifies whether the model container is in Amazon ECR or a private
+-- Docker registry accessible from your Amazon Virtual Private Cloud (VPC).
+-- For information about storing containers in a private Docker registry,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-containers-inference-private.html Use a Private Docker Registry for Real-Time Inference Containers>
+containerDefinition_imageConfig :: Lens.Lens' ContainerDefinition (Prelude.Maybe ImageConfig)
+containerDefinition_imageConfig = Lens.lens (\ContainerDefinition' {imageConfig} -> imageConfig) (\s@ContainerDefinition' {} a -> s {imageConfig = a} :: ContainerDefinition)
+
+-- | The inference specification name in the model package version.
+containerDefinition_inferenceSpecificationName :: Lens.Lens' ContainerDefinition (Prelude.Maybe Prelude.Text)
+containerDefinition_inferenceSpecificationName = Lens.lens (\ContainerDefinition' {inferenceSpecificationName} -> inferenceSpecificationName) (\s@ContainerDefinition' {} a -> s {inferenceSpecificationName = a} :: ContainerDefinition)
+
+-- | Whether the container hosts a single model or multiple models.
+containerDefinition_mode :: Lens.Lens' ContainerDefinition (Prelude.Maybe ContainerMode)
+containerDefinition_mode = Lens.lens (\ContainerDefinition' {mode} -> mode) (\s@ContainerDefinition' {} a -> s {mode = a} :: ContainerDefinition)
+
+-- | The S3 path where the model artifacts, which result from model training,
+-- are stored. This path must point to a single gzip compressed tar archive
+-- (.tar.gz suffix). The S3 path is required for SageMaker built-in
+-- algorithms, but not if you use your own algorithms. For more information
+-- on built-in algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Common Parameters>.
+--
+-- The model artifacts must be in an S3 bucket that is in the same region
+-- as the model or endpoint you are creating.
+--
+-- If you provide a value for this parameter, SageMaker uses Amazon Web
+-- Services Security Token Service to download model artifacts from the S3
+-- path you provide. Amazon Web Services STS is activated in your IAM user
+-- account by default. If you previously deactivated Amazon Web Services
+-- STS for a region, you need to reactivate Amazon Web Services STS for
+-- that region. For more information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+--
+-- If you use a built-in algorithm to create a model, SageMaker requires
+-- that you provide a S3 path to the model artifacts in @ModelDataUrl@.
+containerDefinition_modelDataUrl :: Lens.Lens' ContainerDefinition (Prelude.Maybe Prelude.Text)
+containerDefinition_modelDataUrl = Lens.lens (\ContainerDefinition' {modelDataUrl} -> modelDataUrl) (\s@ContainerDefinition' {} a -> s {modelDataUrl = a} :: ContainerDefinition)
+
+-- | The name or Amazon Resource Name (ARN) of the model package to use to
+-- create the model.
+containerDefinition_modelPackageName :: Lens.Lens' ContainerDefinition (Prelude.Maybe Prelude.Text)
+containerDefinition_modelPackageName = Lens.lens (\ContainerDefinition' {modelPackageName} -> modelPackageName) (\s@ContainerDefinition' {} a -> s {modelPackageName = a} :: ContainerDefinition)
+
+-- | Specifies additional configuration for multi-model endpoints.
+containerDefinition_multiModelConfig :: Lens.Lens' ContainerDefinition (Prelude.Maybe MultiModelConfig)
+containerDefinition_multiModelConfig = Lens.lens (\ContainerDefinition' {multiModelConfig} -> multiModelConfig) (\s@ContainerDefinition' {} a -> s {multiModelConfig = a} :: ContainerDefinition)
+
+instance Data.FromJSON ContainerDefinition where
+  parseJSON =
+    Data.withObject
+      "ContainerDefinition"
+      ( \x ->
+          ContainerDefinition'
+            Prelude.<$> (x Data..:? "ContainerHostname")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Image")
+            Prelude.<*> (x Data..:? "ImageConfig")
+            Prelude.<*> (x Data..:? "InferenceSpecificationName")
+            Prelude.<*> (x Data..:? "Mode")
+            Prelude.<*> (x Data..:? "ModelDataUrl")
+            Prelude.<*> (x Data..:? "ModelPackageName")
+            Prelude.<*> (x Data..:? "MultiModelConfig")
+      )
+
+instance Prelude.Hashable ContainerDefinition where
+  hashWithSalt _salt ContainerDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerHostname
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` image
+      `Prelude.hashWithSalt` imageConfig
+      `Prelude.hashWithSalt` inferenceSpecificationName
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` modelDataUrl
+      `Prelude.hashWithSalt` modelPackageName
+      `Prelude.hashWithSalt` multiModelConfig
+
+instance Prelude.NFData ContainerDefinition where
+  rnf ContainerDefinition' {..} =
+    Prelude.rnf containerHostname
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf image
+      `Prelude.seq` Prelude.rnf imageConfig
+      `Prelude.seq` Prelude.rnf inferenceSpecificationName
+      `Prelude.seq` Prelude.rnf mode
+      `Prelude.seq` Prelude.rnf modelDataUrl
+      `Prelude.seq` Prelude.rnf modelPackageName
+      `Prelude.seq` Prelude.rnf multiModelConfig
+
+instance Data.ToJSON ContainerDefinition where
+  toJSON ContainerDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerHostname" Data..=)
+              Prelude.<$> containerHostname,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("Image" Data..=) Prelude.<$> image,
+            ("ImageConfig" Data..=) Prelude.<$> imageConfig,
+            ("InferenceSpecificationName" Data..=)
+              Prelude.<$> inferenceSpecificationName,
+            ("Mode" Data..=) Prelude.<$> mode,
+            ("ModelDataUrl" Data..=) Prelude.<$> modelDataUrl,
+            ("ModelPackageName" Data..=)
+              Prelude.<$> modelPackageName,
+            ("MultiModelConfig" Data..=)
+              Prelude.<$> multiModelConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ContainerMode.hs b/gen/Amazonka/SageMaker/Types/ContainerMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContainerMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ContainerMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContainerMode
+  ( ContainerMode
+      ( ..,
+        ContainerMode_MultiModel,
+        ContainerMode_SingleModel
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ContainerMode = ContainerMode'
+  { fromContainerMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ContainerMode_MultiModel :: ContainerMode
+pattern ContainerMode_MultiModel = ContainerMode' "MultiModel"
+
+pattern ContainerMode_SingleModel :: ContainerMode
+pattern ContainerMode_SingleModel = ContainerMode' "SingleModel"
+
+{-# COMPLETE
+  ContainerMode_MultiModel,
+  ContainerMode_SingleModel,
+  ContainerMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ContentClassifier.hs b/gen/Amazonka/SageMaker/Types/ContentClassifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContentClassifier.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ContentClassifier
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContentClassifier
+  ( ContentClassifier
+      ( ..,
+        ContentClassifier_FreeOfAdultContent,
+        ContentClassifier_FreeOfPersonallyIdentifiableInformation
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ContentClassifier = ContentClassifier'
+  { fromContentClassifier ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ContentClassifier_FreeOfAdultContent :: ContentClassifier
+pattern ContentClassifier_FreeOfAdultContent = ContentClassifier' "FreeOfAdultContent"
+
+pattern ContentClassifier_FreeOfPersonallyIdentifiableInformation :: ContentClassifier
+pattern ContentClassifier_FreeOfPersonallyIdentifiableInformation = ContentClassifier' "FreeOfPersonallyIdentifiableInformation"
+
+{-# COMPLETE
+  ContentClassifier_FreeOfAdultContent,
+  ContentClassifier_FreeOfPersonallyIdentifiableInformation,
+  ContentClassifier'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ContextSource.hs b/gen/Amazonka/SageMaker/Types/ContextSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContextSource.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ContextSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContextSource 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
+
+-- | A structure describing the source of a context.
+--
+-- /See:/ 'newContextSource' smart constructor.
+data ContextSource = ContextSource'
+  { -- | The ID of the source.
+    sourceId :: Prelude.Maybe Prelude.Text,
+    -- | The type of the source.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The URI of the source.
+    sourceUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContextSource' 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:
+--
+-- 'sourceId', 'contextSource_sourceId' - The ID of the source.
+--
+-- 'sourceType', 'contextSource_sourceType' - The type of the source.
+--
+-- 'sourceUri', 'contextSource_sourceUri' - The URI of the source.
+newContextSource ::
+  -- | 'sourceUri'
+  Prelude.Text ->
+  ContextSource
+newContextSource pSourceUri_ =
+  ContextSource'
+    { sourceId = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      sourceUri = pSourceUri_
+    }
+
+-- | The ID of the source.
+contextSource_sourceId :: Lens.Lens' ContextSource (Prelude.Maybe Prelude.Text)
+contextSource_sourceId = Lens.lens (\ContextSource' {sourceId} -> sourceId) (\s@ContextSource' {} a -> s {sourceId = a} :: ContextSource)
+
+-- | The type of the source.
+contextSource_sourceType :: Lens.Lens' ContextSource (Prelude.Maybe Prelude.Text)
+contextSource_sourceType = Lens.lens (\ContextSource' {sourceType} -> sourceType) (\s@ContextSource' {} a -> s {sourceType = a} :: ContextSource)
+
+-- | The URI of the source.
+contextSource_sourceUri :: Lens.Lens' ContextSource Prelude.Text
+contextSource_sourceUri = Lens.lens (\ContextSource' {sourceUri} -> sourceUri) (\s@ContextSource' {} a -> s {sourceUri = a} :: ContextSource)
+
+instance Data.FromJSON ContextSource where
+  parseJSON =
+    Data.withObject
+      "ContextSource"
+      ( \x ->
+          ContextSource'
+            Prelude.<$> (x Data..:? "SourceId")
+            Prelude.<*> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..: "SourceUri")
+      )
+
+instance Prelude.Hashable ContextSource where
+  hashWithSalt _salt ContextSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceId
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceUri
+
+instance Prelude.NFData ContextSource where
+  rnf ContextSource' {..} =
+    Prelude.rnf sourceId
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceUri
+
+instance Data.ToJSON ContextSource where
+  toJSON ContextSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SourceId" Data..=) Prelude.<$> sourceId,
+            ("SourceType" Data..=) Prelude.<$> sourceType,
+            Prelude.Just ("SourceUri" Data..= sourceUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ContextSummary.hs b/gen/Amazonka/SageMaker/Types/ContextSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContextSummary.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ContextSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContextSummary 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 Amazonka.SageMaker.Types.ContextSource
+
+-- | Lists a summary of the properties of a context. A context provides a
+-- logical grouping of other entities.
+--
+-- /See:/ 'newContextSummary' smart constructor.
+data ContextSummary = ContextSummary'
+  { -- | The Amazon Resource Name (ARN) of the context.
+    contextArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the context.
+    contextName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the context.
+    contextType :: Prelude.Maybe Prelude.Text,
+    -- | When the context was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | When the context was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The source of the context.
+    source :: Prelude.Maybe ContextSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContextSummary' 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:
+--
+-- 'contextArn', 'contextSummary_contextArn' - The Amazon Resource Name (ARN) of the context.
+--
+-- 'contextName', 'contextSummary_contextName' - The name of the context.
+--
+-- 'contextType', 'contextSummary_contextType' - The type of the context.
+--
+-- 'creationTime', 'contextSummary_creationTime' - When the context was created.
+--
+-- 'lastModifiedTime', 'contextSummary_lastModifiedTime' - When the context was last modified.
+--
+-- 'source', 'contextSummary_source' - The source of the context.
+newContextSummary ::
+  ContextSummary
+newContextSummary =
+  ContextSummary'
+    { contextArn = Prelude.Nothing,
+      contextName = Prelude.Nothing,
+      contextType = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      source = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the context.
+contextSummary_contextArn :: Lens.Lens' ContextSummary (Prelude.Maybe Prelude.Text)
+contextSummary_contextArn = Lens.lens (\ContextSummary' {contextArn} -> contextArn) (\s@ContextSummary' {} a -> s {contextArn = a} :: ContextSummary)
+
+-- | The name of the context.
+contextSummary_contextName :: Lens.Lens' ContextSummary (Prelude.Maybe Prelude.Text)
+contextSummary_contextName = Lens.lens (\ContextSummary' {contextName} -> contextName) (\s@ContextSummary' {} a -> s {contextName = a} :: ContextSummary)
+
+-- | The type of the context.
+contextSummary_contextType :: Lens.Lens' ContextSummary (Prelude.Maybe Prelude.Text)
+contextSummary_contextType = Lens.lens (\ContextSummary' {contextType} -> contextType) (\s@ContextSummary' {} a -> s {contextType = a} :: ContextSummary)
+
+-- | When the context was created.
+contextSummary_creationTime :: Lens.Lens' ContextSummary (Prelude.Maybe Prelude.UTCTime)
+contextSummary_creationTime = Lens.lens (\ContextSummary' {creationTime} -> creationTime) (\s@ContextSummary' {} a -> s {creationTime = a} :: ContextSummary) Prelude.. Lens.mapping Data._Time
+
+-- | When the context was last modified.
+contextSummary_lastModifiedTime :: Lens.Lens' ContextSummary (Prelude.Maybe Prelude.UTCTime)
+contextSummary_lastModifiedTime = Lens.lens (\ContextSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ContextSummary' {} a -> s {lastModifiedTime = a} :: ContextSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The source of the context.
+contextSummary_source :: Lens.Lens' ContextSummary (Prelude.Maybe ContextSource)
+contextSummary_source = Lens.lens (\ContextSummary' {source} -> source) (\s@ContextSummary' {} a -> s {source = a} :: ContextSummary)
+
+instance Data.FromJSON ContextSummary where
+  parseJSON =
+    Data.withObject
+      "ContextSummary"
+      ( \x ->
+          ContextSummary'
+            Prelude.<$> (x Data..:? "ContextArn")
+            Prelude.<*> (x Data..:? "ContextName")
+            Prelude.<*> (x Data..:? "ContextType")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Source")
+      )
+
+instance Prelude.Hashable ContextSummary where
+  hashWithSalt _salt ContextSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` contextArn
+      `Prelude.hashWithSalt` contextName
+      `Prelude.hashWithSalt` contextType
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` source
+
+instance Prelude.NFData ContextSummary where
+  rnf ContextSummary' {..} =
+    Prelude.rnf contextArn
+      `Prelude.seq` Prelude.rnf contextName
+      `Prelude.seq` Prelude.rnf contextType
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf source
diff --git a/gen/Amazonka/SageMaker/Types/ContinuousParameterRange.hs b/gen/Amazonka/SageMaker/Types/ContinuousParameterRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContinuousParameterRange.hs
@@ -0,0 +1,214 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ContinuousParameterRange
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContinuousParameterRange 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 Amazonka.SageMaker.Types.HyperParameterScalingType
+
+-- | A list of continuous hyperparameters to tune.
+--
+-- /See:/ 'newContinuousParameterRange' smart constructor.
+data ContinuousParameterRange = ContinuousParameterRange'
+  { -- | The scale that hyperparameter tuning uses to search the hyperparameter
+    -- range. For information about choosing a hyperparameter scale, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html#scaling-type Hyperparameter Scaling>.
+    -- One of the following values:
+    --
+    -- [Auto]
+    --     SageMaker hyperparameter tuning chooses the best scale for the
+    --     hyperparameter.
+    --
+    -- [Linear]
+    --     Hyperparameter tuning searches the values in the hyperparameter
+    --     range by using a linear scale.
+    --
+    -- [Logarithmic]
+    --     Hyperparameter tuning searches the values in the hyperparameter
+    --     range by using a logarithmic scale.
+    --
+    --     Logarithmic scaling works only for ranges that have only values
+    --     greater than 0.
+    --
+    -- [ReverseLogarithmic]
+    --     Hyperparameter tuning searches the values in the hyperparameter
+    --     range by using a reverse logarithmic scale.
+    --
+    --     Reverse logarithmic scaling works only for ranges that are entirely
+    --     within the range 0\<=x\<1.0.
+    scalingType :: Prelude.Maybe HyperParameterScalingType,
+    -- | The name of the continuous hyperparameter to tune.
+    name :: Prelude.Text,
+    -- | The minimum value for the hyperparameter. The tuning job uses
+    -- floating-point values between this value and @MaxValue@for tuning.
+    minValue :: Prelude.Text,
+    -- | The maximum value for the hyperparameter. The tuning job uses
+    -- floating-point values between @MinValue@ value and this value for
+    -- tuning.
+    maxValue :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContinuousParameterRange' 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:
+--
+-- 'scalingType', 'continuousParameterRange_scalingType' - The scale that hyperparameter tuning uses to search the hyperparameter
+-- range. For information about choosing a hyperparameter scale, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html#scaling-type Hyperparameter Scaling>.
+-- One of the following values:
+--
+-- [Auto]
+--     SageMaker hyperparameter tuning chooses the best scale for the
+--     hyperparameter.
+--
+-- [Linear]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a linear scale.
+--
+-- [Logarithmic]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a logarithmic scale.
+--
+--     Logarithmic scaling works only for ranges that have only values
+--     greater than 0.
+--
+-- [ReverseLogarithmic]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a reverse logarithmic scale.
+--
+--     Reverse logarithmic scaling works only for ranges that are entirely
+--     within the range 0\<=x\<1.0.
+--
+-- 'name', 'continuousParameterRange_name' - The name of the continuous hyperparameter to tune.
+--
+-- 'minValue', 'continuousParameterRange_minValue' - The minimum value for the hyperparameter. The tuning job uses
+-- floating-point values between this value and @MaxValue@for tuning.
+--
+-- 'maxValue', 'continuousParameterRange_maxValue' - The maximum value for the hyperparameter. The tuning job uses
+-- floating-point values between @MinValue@ value and this value for
+-- tuning.
+newContinuousParameterRange ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'minValue'
+  Prelude.Text ->
+  -- | 'maxValue'
+  Prelude.Text ->
+  ContinuousParameterRange
+newContinuousParameterRange
+  pName_
+  pMinValue_
+  pMaxValue_ =
+    ContinuousParameterRange'
+      { scalingType =
+          Prelude.Nothing,
+        name = pName_,
+        minValue = pMinValue_,
+        maxValue = pMaxValue_
+      }
+
+-- | The scale that hyperparameter tuning uses to search the hyperparameter
+-- range. For information about choosing a hyperparameter scale, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html#scaling-type Hyperparameter Scaling>.
+-- One of the following values:
+--
+-- [Auto]
+--     SageMaker hyperparameter tuning chooses the best scale for the
+--     hyperparameter.
+--
+-- [Linear]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a linear scale.
+--
+-- [Logarithmic]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a logarithmic scale.
+--
+--     Logarithmic scaling works only for ranges that have only values
+--     greater than 0.
+--
+-- [ReverseLogarithmic]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a reverse logarithmic scale.
+--
+--     Reverse logarithmic scaling works only for ranges that are entirely
+--     within the range 0\<=x\<1.0.
+continuousParameterRange_scalingType :: Lens.Lens' ContinuousParameterRange (Prelude.Maybe HyperParameterScalingType)
+continuousParameterRange_scalingType = Lens.lens (\ContinuousParameterRange' {scalingType} -> scalingType) (\s@ContinuousParameterRange' {} a -> s {scalingType = a} :: ContinuousParameterRange)
+
+-- | The name of the continuous hyperparameter to tune.
+continuousParameterRange_name :: Lens.Lens' ContinuousParameterRange Prelude.Text
+continuousParameterRange_name = Lens.lens (\ContinuousParameterRange' {name} -> name) (\s@ContinuousParameterRange' {} a -> s {name = a} :: ContinuousParameterRange)
+
+-- | The minimum value for the hyperparameter. The tuning job uses
+-- floating-point values between this value and @MaxValue@for tuning.
+continuousParameterRange_minValue :: Lens.Lens' ContinuousParameterRange Prelude.Text
+continuousParameterRange_minValue = Lens.lens (\ContinuousParameterRange' {minValue} -> minValue) (\s@ContinuousParameterRange' {} a -> s {minValue = a} :: ContinuousParameterRange)
+
+-- | The maximum value for the hyperparameter. The tuning job uses
+-- floating-point values between @MinValue@ value and this value for
+-- tuning.
+continuousParameterRange_maxValue :: Lens.Lens' ContinuousParameterRange Prelude.Text
+continuousParameterRange_maxValue = Lens.lens (\ContinuousParameterRange' {maxValue} -> maxValue) (\s@ContinuousParameterRange' {} a -> s {maxValue = a} :: ContinuousParameterRange)
+
+instance Data.FromJSON ContinuousParameterRange where
+  parseJSON =
+    Data.withObject
+      "ContinuousParameterRange"
+      ( \x ->
+          ContinuousParameterRange'
+            Prelude.<$> (x Data..:? "ScalingType")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "MinValue")
+            Prelude.<*> (x Data..: "MaxValue")
+      )
+
+instance Prelude.Hashable ContinuousParameterRange where
+  hashWithSalt _salt ContinuousParameterRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` scalingType
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` minValue
+      `Prelude.hashWithSalt` maxValue
+
+instance Prelude.NFData ContinuousParameterRange where
+  rnf ContinuousParameterRange' {..} =
+    Prelude.rnf scalingType
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf minValue
+      `Prelude.seq` Prelude.rnf maxValue
+
+instance Data.ToJSON ContinuousParameterRange where
+  toJSON ContinuousParameterRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ScalingType" Data..=) Prelude.<$> scalingType,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("MinValue" Data..= minValue),
+            Prelude.Just ("MaxValue" Data..= maxValue)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ContinuousParameterRangeSpecification.hs b/gen/Amazonka/SageMaker/Types/ContinuousParameterRangeSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ContinuousParameterRangeSpecification.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ContinuousParameterRangeSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ContinuousParameterRangeSpecification 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
+
+-- | Defines the possible values for a continuous hyperparameter.
+--
+-- /See:/ 'newContinuousParameterRangeSpecification' smart constructor.
+data ContinuousParameterRangeSpecification = ContinuousParameterRangeSpecification'
+  { -- | The minimum floating-point value allowed.
+    minValue :: Prelude.Text,
+    -- | The maximum floating-point value allowed.
+    maxValue :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContinuousParameterRangeSpecification' 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:
+--
+-- 'minValue', 'continuousParameterRangeSpecification_minValue' - The minimum floating-point value allowed.
+--
+-- 'maxValue', 'continuousParameterRangeSpecification_maxValue' - The maximum floating-point value allowed.
+newContinuousParameterRangeSpecification ::
+  -- | 'minValue'
+  Prelude.Text ->
+  -- | 'maxValue'
+  Prelude.Text ->
+  ContinuousParameterRangeSpecification
+newContinuousParameterRangeSpecification
+  pMinValue_
+  pMaxValue_ =
+    ContinuousParameterRangeSpecification'
+      { minValue =
+          pMinValue_,
+        maxValue = pMaxValue_
+      }
+
+-- | The minimum floating-point value allowed.
+continuousParameterRangeSpecification_minValue :: Lens.Lens' ContinuousParameterRangeSpecification Prelude.Text
+continuousParameterRangeSpecification_minValue = Lens.lens (\ContinuousParameterRangeSpecification' {minValue} -> minValue) (\s@ContinuousParameterRangeSpecification' {} a -> s {minValue = a} :: ContinuousParameterRangeSpecification)
+
+-- | The maximum floating-point value allowed.
+continuousParameterRangeSpecification_maxValue :: Lens.Lens' ContinuousParameterRangeSpecification Prelude.Text
+continuousParameterRangeSpecification_maxValue = Lens.lens (\ContinuousParameterRangeSpecification' {maxValue} -> maxValue) (\s@ContinuousParameterRangeSpecification' {} a -> s {maxValue = a} :: ContinuousParameterRangeSpecification)
+
+instance
+  Data.FromJSON
+    ContinuousParameterRangeSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "ContinuousParameterRangeSpecification"
+      ( \x ->
+          ContinuousParameterRangeSpecification'
+            Prelude.<$> (x Data..: "MinValue")
+            Prelude.<*> (x Data..: "MaxValue")
+      )
+
+instance
+  Prelude.Hashable
+    ContinuousParameterRangeSpecification
+  where
+  hashWithSalt
+    _salt
+    ContinuousParameterRangeSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` minValue
+        `Prelude.hashWithSalt` maxValue
+
+instance
+  Prelude.NFData
+    ContinuousParameterRangeSpecification
+  where
+  rnf ContinuousParameterRangeSpecification' {..} =
+    Prelude.rnf minValue
+      `Prelude.seq` Prelude.rnf maxValue
+
+instance
+  Data.ToJSON
+    ContinuousParameterRangeSpecification
+  where
+  toJSON ContinuousParameterRangeSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("MinValue" Data..= minValue),
+            Prelude.Just ("MaxValue" Data..= maxValue)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/CustomImage.hs b/gen/Amazonka/SageMaker/Types/CustomImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/CustomImage.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.CustomImage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.CustomImage 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
+
+-- | A custom SageMaker image. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html Bring your own SageMaker image>.
+--
+-- /See:/ 'newCustomImage' smart constructor.
+data CustomImage = CustomImage'
+  { -- | The version number of the CustomImage.
+    imageVersionNumber :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the CustomImage. Must be unique to your account.
+    imageName :: Prelude.Text,
+    -- | The name of the AppImageConfig.
+    appImageConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomImage' 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:
+--
+-- 'imageVersionNumber', 'customImage_imageVersionNumber' - The version number of the CustomImage.
+--
+-- 'imageName', 'customImage_imageName' - The name of the CustomImage. Must be unique to your account.
+--
+-- 'appImageConfigName', 'customImage_appImageConfigName' - The name of the AppImageConfig.
+newCustomImage ::
+  -- | 'imageName'
+  Prelude.Text ->
+  -- | 'appImageConfigName'
+  Prelude.Text ->
+  CustomImage
+newCustomImage pImageName_ pAppImageConfigName_ =
+  CustomImage'
+    { imageVersionNumber = Prelude.Nothing,
+      imageName = pImageName_,
+      appImageConfigName = pAppImageConfigName_
+    }
+
+-- | The version number of the CustomImage.
+customImage_imageVersionNumber :: Lens.Lens' CustomImage (Prelude.Maybe Prelude.Natural)
+customImage_imageVersionNumber = Lens.lens (\CustomImage' {imageVersionNumber} -> imageVersionNumber) (\s@CustomImage' {} a -> s {imageVersionNumber = a} :: CustomImage)
+
+-- | The name of the CustomImage. Must be unique to your account.
+customImage_imageName :: Lens.Lens' CustomImage Prelude.Text
+customImage_imageName = Lens.lens (\CustomImage' {imageName} -> imageName) (\s@CustomImage' {} a -> s {imageName = a} :: CustomImage)
+
+-- | The name of the AppImageConfig.
+customImage_appImageConfigName :: Lens.Lens' CustomImage Prelude.Text
+customImage_appImageConfigName = Lens.lens (\CustomImage' {appImageConfigName} -> appImageConfigName) (\s@CustomImage' {} a -> s {appImageConfigName = a} :: CustomImage)
+
+instance Data.FromJSON CustomImage where
+  parseJSON =
+    Data.withObject
+      "CustomImage"
+      ( \x ->
+          CustomImage'
+            Prelude.<$> (x Data..:? "ImageVersionNumber")
+            Prelude.<*> (x Data..: "ImageName")
+            Prelude.<*> (x Data..: "AppImageConfigName")
+      )
+
+instance Prelude.Hashable CustomImage where
+  hashWithSalt _salt CustomImage' {..} =
+    _salt
+      `Prelude.hashWithSalt` imageVersionNumber
+      `Prelude.hashWithSalt` imageName
+      `Prelude.hashWithSalt` appImageConfigName
+
+instance Prelude.NFData CustomImage where
+  rnf CustomImage' {..} =
+    Prelude.rnf imageVersionNumber
+      `Prelude.seq` Prelude.rnf imageName
+      `Prelude.seq` Prelude.rnf appImageConfigName
+
+instance Data.ToJSON CustomImage where
+  toJSON CustomImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ImageVersionNumber" Data..=)
+              Prelude.<$> imageVersionNumber,
+            Prelude.Just ("ImageName" Data..= imageName),
+            Prelude.Just
+              ("AppImageConfigName" Data..= appImageConfigName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataCaptureConfig.hs b/gen/Amazonka/SageMaker/Types/DataCaptureConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataCaptureConfig.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataCaptureConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataCaptureConfig 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 Amazonka.SageMaker.Types.CaptureContentTypeHeader
+import Amazonka.SageMaker.Types.CaptureOption
+
+-- | Configuration to control how SageMaker captures inference data.
+--
+-- /See:/ 'newDataCaptureConfig' smart constructor.
+data DataCaptureConfig = DataCaptureConfig'
+  { -- | Configuration specifying how to treat different headers. If no headers
+    -- are specified SageMaker will by default base64 encode when capturing the
+    -- data.
+    captureContentTypeHeader :: Prelude.Maybe CaptureContentTypeHeader,
+    -- | Whether data capture should be enabled or disabled (defaults to
+    -- enabled).
+    enableCapture :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+    -- Service key that SageMaker uses to encrypt the captured data at rest
+    -- using Amazon S3 server-side encryption.
+    --
+    -- The KmsKeyId can be any of the following formats:
+    --
+    -- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Key ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Alias name: @alias\/ExampleAlias@
+    --
+    -- -   Alias name ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The percentage of requests SageMaker will capture. A lower value is
+    -- recommended for Endpoints with high traffic.
+    initialSamplingPercentage :: Prelude.Natural,
+    -- | The Amazon S3 location used to capture the data.
+    destinationS3Uri :: Prelude.Text,
+    -- | Specifies data Model Monitor will capture. You can configure whether to
+    -- collect only input, only output, or both
+    captureOptions :: Prelude.NonEmpty CaptureOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataCaptureConfig' 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:
+--
+-- 'captureContentTypeHeader', 'dataCaptureConfig_captureContentTypeHeader' - Configuration specifying how to treat different headers. If no headers
+-- are specified SageMaker will by default base64 encode when capturing the
+-- data.
+--
+-- 'enableCapture', 'dataCaptureConfig_enableCapture' - Whether data capture should be enabled or disabled (defaults to
+-- enabled).
+--
+-- 'kmsKeyId', 'dataCaptureConfig_kmsKeyId' - The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt the captured data at rest
+-- using Amazon S3 server-side encryption.
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- 'initialSamplingPercentage', 'dataCaptureConfig_initialSamplingPercentage' - The percentage of requests SageMaker will capture. A lower value is
+-- recommended for Endpoints with high traffic.
+--
+-- 'destinationS3Uri', 'dataCaptureConfig_destinationS3Uri' - The Amazon S3 location used to capture the data.
+--
+-- 'captureOptions', 'dataCaptureConfig_captureOptions' - Specifies data Model Monitor will capture. You can configure whether to
+-- collect only input, only output, or both
+newDataCaptureConfig ::
+  -- | 'initialSamplingPercentage'
+  Prelude.Natural ->
+  -- | 'destinationS3Uri'
+  Prelude.Text ->
+  -- | 'captureOptions'
+  Prelude.NonEmpty CaptureOption ->
+  DataCaptureConfig
+newDataCaptureConfig
+  pInitialSamplingPercentage_
+  pDestinationS3Uri_
+  pCaptureOptions_ =
+    DataCaptureConfig'
+      { captureContentTypeHeader =
+          Prelude.Nothing,
+        enableCapture = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        initialSamplingPercentage =
+          pInitialSamplingPercentage_,
+        destinationS3Uri = pDestinationS3Uri_,
+        captureOptions =
+          Lens.coerced Lens.# pCaptureOptions_
+      }
+
+-- | Configuration specifying how to treat different headers. If no headers
+-- are specified SageMaker will by default base64 encode when capturing the
+-- data.
+dataCaptureConfig_captureContentTypeHeader :: Lens.Lens' DataCaptureConfig (Prelude.Maybe CaptureContentTypeHeader)
+dataCaptureConfig_captureContentTypeHeader = Lens.lens (\DataCaptureConfig' {captureContentTypeHeader} -> captureContentTypeHeader) (\s@DataCaptureConfig' {} a -> s {captureContentTypeHeader = a} :: DataCaptureConfig)
+
+-- | Whether data capture should be enabled or disabled (defaults to
+-- enabled).
+dataCaptureConfig_enableCapture :: Lens.Lens' DataCaptureConfig (Prelude.Maybe Prelude.Bool)
+dataCaptureConfig_enableCapture = Lens.lens (\DataCaptureConfig' {enableCapture} -> enableCapture) (\s@DataCaptureConfig' {} a -> s {enableCapture = a} :: DataCaptureConfig)
+
+-- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service key that SageMaker uses to encrypt the captured data at rest
+-- using Amazon S3 server-side encryption.
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+dataCaptureConfig_kmsKeyId :: Lens.Lens' DataCaptureConfig (Prelude.Maybe Prelude.Text)
+dataCaptureConfig_kmsKeyId = Lens.lens (\DataCaptureConfig' {kmsKeyId} -> kmsKeyId) (\s@DataCaptureConfig' {} a -> s {kmsKeyId = a} :: DataCaptureConfig)
+
+-- | The percentage of requests SageMaker will capture. A lower value is
+-- recommended for Endpoints with high traffic.
+dataCaptureConfig_initialSamplingPercentage :: Lens.Lens' DataCaptureConfig Prelude.Natural
+dataCaptureConfig_initialSamplingPercentage = Lens.lens (\DataCaptureConfig' {initialSamplingPercentage} -> initialSamplingPercentage) (\s@DataCaptureConfig' {} a -> s {initialSamplingPercentage = a} :: DataCaptureConfig)
+
+-- | The Amazon S3 location used to capture the data.
+dataCaptureConfig_destinationS3Uri :: Lens.Lens' DataCaptureConfig Prelude.Text
+dataCaptureConfig_destinationS3Uri = Lens.lens (\DataCaptureConfig' {destinationS3Uri} -> destinationS3Uri) (\s@DataCaptureConfig' {} a -> s {destinationS3Uri = a} :: DataCaptureConfig)
+
+-- | Specifies data Model Monitor will capture. You can configure whether to
+-- collect only input, only output, or both
+dataCaptureConfig_captureOptions :: Lens.Lens' DataCaptureConfig (Prelude.NonEmpty CaptureOption)
+dataCaptureConfig_captureOptions = Lens.lens (\DataCaptureConfig' {captureOptions} -> captureOptions) (\s@DataCaptureConfig' {} a -> s {captureOptions = a} :: DataCaptureConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON DataCaptureConfig where
+  parseJSON =
+    Data.withObject
+      "DataCaptureConfig"
+      ( \x ->
+          DataCaptureConfig'
+            Prelude.<$> (x Data..:? "CaptureContentTypeHeader")
+            Prelude.<*> (x Data..:? "EnableCapture")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "InitialSamplingPercentage")
+            Prelude.<*> (x Data..: "DestinationS3Uri")
+            Prelude.<*> (x Data..: "CaptureOptions")
+      )
+
+instance Prelude.Hashable DataCaptureConfig where
+  hashWithSalt _salt DataCaptureConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` captureContentTypeHeader
+      `Prelude.hashWithSalt` enableCapture
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` initialSamplingPercentage
+      `Prelude.hashWithSalt` destinationS3Uri
+      `Prelude.hashWithSalt` captureOptions
+
+instance Prelude.NFData DataCaptureConfig where
+  rnf DataCaptureConfig' {..} =
+    Prelude.rnf captureContentTypeHeader
+      `Prelude.seq` Prelude.rnf enableCapture
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf initialSamplingPercentage
+      `Prelude.seq` Prelude.rnf destinationS3Uri
+      `Prelude.seq` Prelude.rnf captureOptions
+
+instance Data.ToJSON DataCaptureConfig where
+  toJSON DataCaptureConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CaptureContentTypeHeader" Data..=)
+              Prelude.<$> captureContentTypeHeader,
+            ("EnableCapture" Data..=) Prelude.<$> enableCapture,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just
+              ( "InitialSamplingPercentage"
+                  Data..= initialSamplingPercentage
+              ),
+            Prelude.Just
+              ("DestinationS3Uri" Data..= destinationS3Uri),
+            Prelude.Just
+              ("CaptureOptions" Data..= captureOptions)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataCaptureConfigSummary.hs b/gen/Amazonka/SageMaker/Types/DataCaptureConfigSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataCaptureConfigSummary.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataCaptureConfigSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataCaptureConfigSummary 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 Amazonka.SageMaker.Types.CaptureStatus
+
+-- | The currently active data capture configuration used by your Endpoint.
+--
+-- /See:/ 'newDataCaptureConfigSummary' smart constructor.
+data DataCaptureConfigSummary = DataCaptureConfigSummary'
+  { -- | Whether data capture is enabled or disabled.
+    enableCapture :: Prelude.Bool,
+    -- | Whether data capture is currently functional.
+    captureStatus :: CaptureStatus,
+    -- | The percentage of requests being captured by your Endpoint.
+    currentSamplingPercentage :: Prelude.Natural,
+    -- | The Amazon S3 location being used to capture the data.
+    destinationS3Uri :: Prelude.Text,
+    -- | The KMS key being used to encrypt the data in Amazon S3.
+    kmsKeyId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataCaptureConfigSummary' 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:
+--
+-- 'enableCapture', 'dataCaptureConfigSummary_enableCapture' - Whether data capture is enabled or disabled.
+--
+-- 'captureStatus', 'dataCaptureConfigSummary_captureStatus' - Whether data capture is currently functional.
+--
+-- 'currentSamplingPercentage', 'dataCaptureConfigSummary_currentSamplingPercentage' - The percentage of requests being captured by your Endpoint.
+--
+-- 'destinationS3Uri', 'dataCaptureConfigSummary_destinationS3Uri' - The Amazon S3 location being used to capture the data.
+--
+-- 'kmsKeyId', 'dataCaptureConfigSummary_kmsKeyId' - The KMS key being used to encrypt the data in Amazon S3.
+newDataCaptureConfigSummary ::
+  -- | 'enableCapture'
+  Prelude.Bool ->
+  -- | 'captureStatus'
+  CaptureStatus ->
+  -- | 'currentSamplingPercentage'
+  Prelude.Natural ->
+  -- | 'destinationS3Uri'
+  Prelude.Text ->
+  -- | 'kmsKeyId'
+  Prelude.Text ->
+  DataCaptureConfigSummary
+newDataCaptureConfigSummary
+  pEnableCapture_
+  pCaptureStatus_
+  pCurrentSamplingPercentage_
+  pDestinationS3Uri_
+  pKmsKeyId_ =
+    DataCaptureConfigSummary'
+      { enableCapture =
+          pEnableCapture_,
+        captureStatus = pCaptureStatus_,
+        currentSamplingPercentage =
+          pCurrentSamplingPercentage_,
+        destinationS3Uri = pDestinationS3Uri_,
+        kmsKeyId = pKmsKeyId_
+      }
+
+-- | Whether data capture is enabled or disabled.
+dataCaptureConfigSummary_enableCapture :: Lens.Lens' DataCaptureConfigSummary Prelude.Bool
+dataCaptureConfigSummary_enableCapture = Lens.lens (\DataCaptureConfigSummary' {enableCapture} -> enableCapture) (\s@DataCaptureConfigSummary' {} a -> s {enableCapture = a} :: DataCaptureConfigSummary)
+
+-- | Whether data capture is currently functional.
+dataCaptureConfigSummary_captureStatus :: Lens.Lens' DataCaptureConfigSummary CaptureStatus
+dataCaptureConfigSummary_captureStatus = Lens.lens (\DataCaptureConfigSummary' {captureStatus} -> captureStatus) (\s@DataCaptureConfigSummary' {} a -> s {captureStatus = a} :: DataCaptureConfigSummary)
+
+-- | The percentage of requests being captured by your Endpoint.
+dataCaptureConfigSummary_currentSamplingPercentage :: Lens.Lens' DataCaptureConfigSummary Prelude.Natural
+dataCaptureConfigSummary_currentSamplingPercentage = Lens.lens (\DataCaptureConfigSummary' {currentSamplingPercentage} -> currentSamplingPercentage) (\s@DataCaptureConfigSummary' {} a -> s {currentSamplingPercentage = a} :: DataCaptureConfigSummary)
+
+-- | The Amazon S3 location being used to capture the data.
+dataCaptureConfigSummary_destinationS3Uri :: Lens.Lens' DataCaptureConfigSummary Prelude.Text
+dataCaptureConfigSummary_destinationS3Uri = Lens.lens (\DataCaptureConfigSummary' {destinationS3Uri} -> destinationS3Uri) (\s@DataCaptureConfigSummary' {} a -> s {destinationS3Uri = a} :: DataCaptureConfigSummary)
+
+-- | The KMS key being used to encrypt the data in Amazon S3.
+dataCaptureConfigSummary_kmsKeyId :: Lens.Lens' DataCaptureConfigSummary Prelude.Text
+dataCaptureConfigSummary_kmsKeyId = Lens.lens (\DataCaptureConfigSummary' {kmsKeyId} -> kmsKeyId) (\s@DataCaptureConfigSummary' {} a -> s {kmsKeyId = a} :: DataCaptureConfigSummary)
+
+instance Data.FromJSON DataCaptureConfigSummary where
+  parseJSON =
+    Data.withObject
+      "DataCaptureConfigSummary"
+      ( \x ->
+          DataCaptureConfigSummary'
+            Prelude.<$> (x Data..: "EnableCapture")
+            Prelude.<*> (x Data..: "CaptureStatus")
+            Prelude.<*> (x Data..: "CurrentSamplingPercentage")
+            Prelude.<*> (x Data..: "DestinationS3Uri")
+            Prelude.<*> (x Data..: "KmsKeyId")
+      )
+
+instance Prelude.Hashable DataCaptureConfigSummary where
+  hashWithSalt _salt DataCaptureConfigSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableCapture
+      `Prelude.hashWithSalt` captureStatus
+      `Prelude.hashWithSalt` currentSamplingPercentage
+      `Prelude.hashWithSalt` destinationS3Uri
+      `Prelude.hashWithSalt` kmsKeyId
+
+instance Prelude.NFData DataCaptureConfigSummary where
+  rnf DataCaptureConfigSummary' {..} =
+    Prelude.rnf enableCapture
+      `Prelude.seq` Prelude.rnf captureStatus
+      `Prelude.seq` Prelude.rnf currentSamplingPercentage
+      `Prelude.seq` Prelude.rnf destinationS3Uri
+      `Prelude.seq` Prelude.rnf kmsKeyId
diff --git a/gen/Amazonka/SageMaker/Types/DataCatalogConfig.hs b/gen/Amazonka/SageMaker/Types/DataCatalogConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataCatalogConfig.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataCatalogConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataCatalogConfig 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
+
+-- | The meta data of the Glue table which serves as data catalog for the
+-- @OfflineStore@.
+--
+-- /See:/ 'newDataCatalogConfig' smart constructor.
+data DataCatalogConfig = DataCatalogConfig'
+  { -- | The name of the Glue table.
+    tableName :: Prelude.Text,
+    -- | The name of the Glue table catalog.
+    catalog :: Prelude.Text,
+    -- | The name of the Glue table database.
+    database :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataCatalogConfig' 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:
+--
+-- 'tableName', 'dataCatalogConfig_tableName' - The name of the Glue table.
+--
+-- 'catalog', 'dataCatalogConfig_catalog' - The name of the Glue table catalog.
+--
+-- 'database', 'dataCatalogConfig_database' - The name of the Glue table database.
+newDataCatalogConfig ::
+  -- | 'tableName'
+  Prelude.Text ->
+  -- | 'catalog'
+  Prelude.Text ->
+  -- | 'database'
+  Prelude.Text ->
+  DataCatalogConfig
+newDataCatalogConfig pTableName_ pCatalog_ pDatabase_ =
+  DataCatalogConfig'
+    { tableName = pTableName_,
+      catalog = pCatalog_,
+      database = pDatabase_
+    }
+
+-- | The name of the Glue table.
+dataCatalogConfig_tableName :: Lens.Lens' DataCatalogConfig Prelude.Text
+dataCatalogConfig_tableName = Lens.lens (\DataCatalogConfig' {tableName} -> tableName) (\s@DataCatalogConfig' {} a -> s {tableName = a} :: DataCatalogConfig)
+
+-- | The name of the Glue table catalog.
+dataCatalogConfig_catalog :: Lens.Lens' DataCatalogConfig Prelude.Text
+dataCatalogConfig_catalog = Lens.lens (\DataCatalogConfig' {catalog} -> catalog) (\s@DataCatalogConfig' {} a -> s {catalog = a} :: DataCatalogConfig)
+
+-- | The name of the Glue table database.
+dataCatalogConfig_database :: Lens.Lens' DataCatalogConfig Prelude.Text
+dataCatalogConfig_database = Lens.lens (\DataCatalogConfig' {database} -> database) (\s@DataCatalogConfig' {} a -> s {database = a} :: DataCatalogConfig)
+
+instance Data.FromJSON DataCatalogConfig where
+  parseJSON =
+    Data.withObject
+      "DataCatalogConfig"
+      ( \x ->
+          DataCatalogConfig'
+            Prelude.<$> (x Data..: "TableName")
+            Prelude.<*> (x Data..: "Catalog")
+            Prelude.<*> (x Data..: "Database")
+      )
+
+instance Prelude.Hashable DataCatalogConfig where
+  hashWithSalt _salt DataCatalogConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` tableName
+      `Prelude.hashWithSalt` catalog
+      `Prelude.hashWithSalt` database
+
+instance Prelude.NFData DataCatalogConfig where
+  rnf DataCatalogConfig' {..} =
+    Prelude.rnf tableName
+      `Prelude.seq` Prelude.rnf catalog
+      `Prelude.seq` Prelude.rnf database
+
+instance Data.ToJSON DataCatalogConfig where
+  toJSON DataCatalogConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("TableName" Data..= tableName),
+            Prelude.Just ("Catalog" Data..= catalog),
+            Prelude.Just ("Database" Data..= database)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataDistributionType.hs b/gen/Amazonka/SageMaker/Types/DataDistributionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataDistributionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DataDistributionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataDistributionType
+  ( DataDistributionType
+      ( ..,
+        DataDistributionType_FullyReplicated,
+        DataDistributionType_ShardedByS3Key
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataDistributionType = DataDistributionType'
+  { fromDataDistributionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DataDistributionType_FullyReplicated :: DataDistributionType
+pattern DataDistributionType_FullyReplicated = DataDistributionType' "FullyReplicated"
+
+pattern DataDistributionType_ShardedByS3Key :: DataDistributionType
+pattern DataDistributionType_ShardedByS3Key = DataDistributionType' "ShardedByS3Key"
+
+{-# COMPLETE
+  DataDistributionType_FullyReplicated,
+  DataDistributionType_ShardedByS3Key,
+  DataDistributionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/DataProcessing.hs b/gen/Amazonka/SageMaker/Types/DataProcessing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataProcessing.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataProcessing
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataProcessing 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 Amazonka.SageMaker.Types.JoinSource
+
+-- | The data structure used to specify the data to be used for inference in
+-- a batch transform job and to associate the data that is relevant to the
+-- prediction results in the output. The input filter provided allows you
+-- to exclude input data that is not needed for inference in a batch
+-- transform job. The output filter provided allows you to include input
+-- data relevant to interpreting the predictions in the output from the
+-- job. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html Associate Prediction Results with their Corresponding Input Records>.
+--
+-- /See:/ 'newDataProcessing' smart constructor.
+data DataProcessing = DataProcessing'
+  { -- | A
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators JSONPath>
+    -- expression used to select a portion of the input data to pass to the
+    -- algorithm. Use the @InputFilter@ parameter to exclude fields, such as an
+    -- ID column, from the input. If you want SageMaker to pass the entire
+    -- input dataset to the algorithm, accept the default value @$@.
+    --
+    -- Examples: @\"$\"@, @\"$[1:]\"@, @\"$.features\"@
+    inputFilter :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the source of the data to join with the transformed data. The
+    -- valid values are @None@ and @Input@. The default value is @None@, which
+    -- specifies not to join the input with the transformed data. If you want
+    -- the batch transform job to join the original input data with the
+    -- transformed data, set @JoinSource@ to @Input@. You can specify
+    -- @OutputFilter@ as an additional filter to select a portion of the joined
+    -- dataset and store it in the output file.
+    --
+    -- For JSON or JSONLines objects, such as a JSON array, SageMaker adds the
+    -- transformed data to the input JSON object in an attribute called
+    -- @SageMakerOutput@. The joined result for JSON must be a key-value pair
+    -- object. If the input is not a key-value pair object, SageMaker creates a
+    -- new JSON file. In the new JSON file, and the input data is stored under
+    -- the @SageMakerInput@ key and the results are stored in
+    -- @SageMakerOutput@.
+    --
+    -- For CSV data, SageMaker takes each row as a JSON array and joins the
+    -- transformed data with the input by appending each transformed row to the
+    -- end of the input. The joined data has the original input data followed
+    -- by the transformed data and the output is a CSV file.
+    --
+    -- For information on how joining in applied, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#batch-transform-data-processing-workflow Workflow for Associating Inferences with Input Records>.
+    joinSource :: Prelude.Maybe JoinSource,
+    -- | A
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators JSONPath>
+    -- expression used to select a portion of the joined dataset to save in the
+    -- output file for a batch transform job. If you want SageMaker to store
+    -- the entire input dataset in the output file, leave the default value,
+    -- @$@. If you specify indexes that aren\'t within the dimension size of
+    -- the joined dataset, you get an error.
+    --
+    -- Examples: @\"$\"@, @\"$[0,5:]\"@, @\"$[\'id\',\'SageMakerOutput\']\"@
+    outputFilter :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataProcessing' 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:
+--
+-- 'inputFilter', 'dataProcessing_inputFilter' - A
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators JSONPath>
+-- expression used to select a portion of the input data to pass to the
+-- algorithm. Use the @InputFilter@ parameter to exclude fields, such as an
+-- ID column, from the input. If you want SageMaker to pass the entire
+-- input dataset to the algorithm, accept the default value @$@.
+--
+-- Examples: @\"$\"@, @\"$[1:]\"@, @\"$.features\"@
+--
+-- 'joinSource', 'dataProcessing_joinSource' - Specifies the source of the data to join with the transformed data. The
+-- valid values are @None@ and @Input@. The default value is @None@, which
+-- specifies not to join the input with the transformed data. If you want
+-- the batch transform job to join the original input data with the
+-- transformed data, set @JoinSource@ to @Input@. You can specify
+-- @OutputFilter@ as an additional filter to select a portion of the joined
+-- dataset and store it in the output file.
+--
+-- For JSON or JSONLines objects, such as a JSON array, SageMaker adds the
+-- transformed data to the input JSON object in an attribute called
+-- @SageMakerOutput@. The joined result for JSON must be a key-value pair
+-- object. If the input is not a key-value pair object, SageMaker creates a
+-- new JSON file. In the new JSON file, and the input data is stored under
+-- the @SageMakerInput@ key and the results are stored in
+-- @SageMakerOutput@.
+--
+-- For CSV data, SageMaker takes each row as a JSON array and joins the
+-- transformed data with the input by appending each transformed row to the
+-- end of the input. The joined data has the original input data followed
+-- by the transformed data and the output is a CSV file.
+--
+-- For information on how joining in applied, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#batch-transform-data-processing-workflow Workflow for Associating Inferences with Input Records>.
+--
+-- 'outputFilter', 'dataProcessing_outputFilter' - A
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators JSONPath>
+-- expression used to select a portion of the joined dataset to save in the
+-- output file for a batch transform job. If you want SageMaker to store
+-- the entire input dataset in the output file, leave the default value,
+-- @$@. If you specify indexes that aren\'t within the dimension size of
+-- the joined dataset, you get an error.
+--
+-- Examples: @\"$\"@, @\"$[0,5:]\"@, @\"$[\'id\',\'SageMakerOutput\']\"@
+newDataProcessing ::
+  DataProcessing
+newDataProcessing =
+  DataProcessing'
+    { inputFilter = Prelude.Nothing,
+      joinSource = Prelude.Nothing,
+      outputFilter = Prelude.Nothing
+    }
+
+-- | A
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators JSONPath>
+-- expression used to select a portion of the input data to pass to the
+-- algorithm. Use the @InputFilter@ parameter to exclude fields, such as an
+-- ID column, from the input. If you want SageMaker to pass the entire
+-- input dataset to the algorithm, accept the default value @$@.
+--
+-- Examples: @\"$\"@, @\"$[1:]\"@, @\"$.features\"@
+dataProcessing_inputFilter :: Lens.Lens' DataProcessing (Prelude.Maybe Prelude.Text)
+dataProcessing_inputFilter = Lens.lens (\DataProcessing' {inputFilter} -> inputFilter) (\s@DataProcessing' {} a -> s {inputFilter = a} :: DataProcessing)
+
+-- | Specifies the source of the data to join with the transformed data. The
+-- valid values are @None@ and @Input@. The default value is @None@, which
+-- specifies not to join the input with the transformed data. If you want
+-- the batch transform job to join the original input data with the
+-- transformed data, set @JoinSource@ to @Input@. You can specify
+-- @OutputFilter@ as an additional filter to select a portion of the joined
+-- dataset and store it in the output file.
+--
+-- For JSON or JSONLines objects, such as a JSON array, SageMaker adds the
+-- transformed data to the input JSON object in an attribute called
+-- @SageMakerOutput@. The joined result for JSON must be a key-value pair
+-- object. If the input is not a key-value pair object, SageMaker creates a
+-- new JSON file. In the new JSON file, and the input data is stored under
+-- the @SageMakerInput@ key and the results are stored in
+-- @SageMakerOutput@.
+--
+-- For CSV data, SageMaker takes each row as a JSON array and joins the
+-- transformed data with the input by appending each transformed row to the
+-- end of the input. The joined data has the original input data followed
+-- by the transformed data and the output is a CSV file.
+--
+-- For information on how joining in applied, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#batch-transform-data-processing-workflow Workflow for Associating Inferences with Input Records>.
+dataProcessing_joinSource :: Lens.Lens' DataProcessing (Prelude.Maybe JoinSource)
+dataProcessing_joinSource = Lens.lens (\DataProcessing' {joinSource} -> joinSource) (\s@DataProcessing' {} a -> s {joinSource = a} :: DataProcessing)
+
+-- | A
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators JSONPath>
+-- expression used to select a portion of the joined dataset to save in the
+-- output file for a batch transform job. If you want SageMaker to store
+-- the entire input dataset in the output file, leave the default value,
+-- @$@. If you specify indexes that aren\'t within the dimension size of
+-- the joined dataset, you get an error.
+--
+-- Examples: @\"$\"@, @\"$[0,5:]\"@, @\"$[\'id\',\'SageMakerOutput\']\"@
+dataProcessing_outputFilter :: Lens.Lens' DataProcessing (Prelude.Maybe Prelude.Text)
+dataProcessing_outputFilter = Lens.lens (\DataProcessing' {outputFilter} -> outputFilter) (\s@DataProcessing' {} a -> s {outputFilter = a} :: DataProcessing)
+
+instance Data.FromJSON DataProcessing where
+  parseJSON =
+    Data.withObject
+      "DataProcessing"
+      ( \x ->
+          DataProcessing'
+            Prelude.<$> (x Data..:? "InputFilter")
+            Prelude.<*> (x Data..:? "JoinSource")
+            Prelude.<*> (x Data..:? "OutputFilter")
+      )
+
+instance Prelude.Hashable DataProcessing where
+  hashWithSalt _salt DataProcessing' {..} =
+    _salt
+      `Prelude.hashWithSalt` inputFilter
+      `Prelude.hashWithSalt` joinSource
+      `Prelude.hashWithSalt` outputFilter
+
+instance Prelude.NFData DataProcessing where
+  rnf DataProcessing' {..} =
+    Prelude.rnf inputFilter
+      `Prelude.seq` Prelude.rnf joinSource
+      `Prelude.seq` Prelude.rnf outputFilter
+
+instance Data.ToJSON DataProcessing where
+  toJSON DataProcessing' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InputFilter" Data..=) Prelude.<$> inputFilter,
+            ("JoinSource" Data..=) Prelude.<$> joinSource,
+            ("OutputFilter" Data..=) Prelude.<$> outputFilter
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataQualityAppSpecification.hs b/gen/Amazonka/SageMaker/Types/DataQualityAppSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataQualityAppSpecification.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataQualityAppSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataQualityAppSpecification 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
+
+-- | Information about the container that a data quality monitoring job runs.
+--
+-- /See:/ 'newDataQualityAppSpecification' smart constructor.
+data DataQualityAppSpecification = DataQualityAppSpecification'
+  { -- | The arguments to send to the container that the monitoring job runs.
+    containerArguments :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The entrypoint for a container used to run a monitoring job.
+    containerEntrypoint :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Sets the environment variables in the container that the monitoring job
+    -- runs.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | An Amazon S3 URI to a script that is called after analysis has been
+    -- performed. Applicable only for the built-in (first party) containers.
+    postAnalyticsProcessorSourceUri :: Prelude.Maybe Prelude.Text,
+    -- | An Amazon S3 URI to a script that is called per row prior to running
+    -- analysis. It can base64 decode the payload and convert it into a flatted
+    -- json so that the built-in container can use the converted data.
+    -- Applicable only for the built-in (first party) containers.
+    recordPreprocessorSourceUri :: Prelude.Maybe Prelude.Text,
+    -- | The container image that the data quality monitoring job runs.
+    imageUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataQualityAppSpecification' 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:
+--
+-- 'containerArguments', 'dataQualityAppSpecification_containerArguments' - The arguments to send to the container that the monitoring job runs.
+--
+-- 'containerEntrypoint', 'dataQualityAppSpecification_containerEntrypoint' - The entrypoint for a container used to run a monitoring job.
+--
+-- 'environment', 'dataQualityAppSpecification_environment' - Sets the environment variables in the container that the monitoring job
+-- runs.
+--
+-- 'postAnalyticsProcessorSourceUri', 'dataQualityAppSpecification_postAnalyticsProcessorSourceUri' - An Amazon S3 URI to a script that is called after analysis has been
+-- performed. Applicable only for the built-in (first party) containers.
+--
+-- 'recordPreprocessorSourceUri', 'dataQualityAppSpecification_recordPreprocessorSourceUri' - An Amazon S3 URI to a script that is called per row prior to running
+-- analysis. It can base64 decode the payload and convert it into a flatted
+-- json so that the built-in container can use the converted data.
+-- Applicable only for the built-in (first party) containers.
+--
+-- 'imageUri', 'dataQualityAppSpecification_imageUri' - The container image that the data quality monitoring job runs.
+newDataQualityAppSpecification ::
+  -- | 'imageUri'
+  Prelude.Text ->
+  DataQualityAppSpecification
+newDataQualityAppSpecification pImageUri_ =
+  DataQualityAppSpecification'
+    { containerArguments =
+        Prelude.Nothing,
+      containerEntrypoint = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      postAnalyticsProcessorSourceUri =
+        Prelude.Nothing,
+      recordPreprocessorSourceUri = Prelude.Nothing,
+      imageUri = pImageUri_
+    }
+
+-- | The arguments to send to the container that the monitoring job runs.
+dataQualityAppSpecification_containerArguments :: Lens.Lens' DataQualityAppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+dataQualityAppSpecification_containerArguments = Lens.lens (\DataQualityAppSpecification' {containerArguments} -> containerArguments) (\s@DataQualityAppSpecification' {} a -> s {containerArguments = a} :: DataQualityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The entrypoint for a container used to run a monitoring job.
+dataQualityAppSpecification_containerEntrypoint :: Lens.Lens' DataQualityAppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+dataQualityAppSpecification_containerEntrypoint = Lens.lens (\DataQualityAppSpecification' {containerEntrypoint} -> containerEntrypoint) (\s@DataQualityAppSpecification' {} a -> s {containerEntrypoint = a} :: DataQualityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | Sets the environment variables in the container that the monitoring job
+-- runs.
+dataQualityAppSpecification_environment :: Lens.Lens' DataQualityAppSpecification (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+dataQualityAppSpecification_environment = Lens.lens (\DataQualityAppSpecification' {environment} -> environment) (\s@DataQualityAppSpecification' {} a -> s {environment = a} :: DataQualityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | An Amazon S3 URI to a script that is called after analysis has been
+-- performed. Applicable only for the built-in (first party) containers.
+dataQualityAppSpecification_postAnalyticsProcessorSourceUri :: Lens.Lens' DataQualityAppSpecification (Prelude.Maybe Prelude.Text)
+dataQualityAppSpecification_postAnalyticsProcessorSourceUri = Lens.lens (\DataQualityAppSpecification' {postAnalyticsProcessorSourceUri} -> postAnalyticsProcessorSourceUri) (\s@DataQualityAppSpecification' {} a -> s {postAnalyticsProcessorSourceUri = a} :: DataQualityAppSpecification)
+
+-- | An Amazon S3 URI to a script that is called per row prior to running
+-- analysis. It can base64 decode the payload and convert it into a flatted
+-- json so that the built-in container can use the converted data.
+-- Applicable only for the built-in (first party) containers.
+dataQualityAppSpecification_recordPreprocessorSourceUri :: Lens.Lens' DataQualityAppSpecification (Prelude.Maybe Prelude.Text)
+dataQualityAppSpecification_recordPreprocessorSourceUri = Lens.lens (\DataQualityAppSpecification' {recordPreprocessorSourceUri} -> recordPreprocessorSourceUri) (\s@DataQualityAppSpecification' {} a -> s {recordPreprocessorSourceUri = a} :: DataQualityAppSpecification)
+
+-- | The container image that the data quality monitoring job runs.
+dataQualityAppSpecification_imageUri :: Lens.Lens' DataQualityAppSpecification Prelude.Text
+dataQualityAppSpecification_imageUri = Lens.lens (\DataQualityAppSpecification' {imageUri} -> imageUri) (\s@DataQualityAppSpecification' {} a -> s {imageUri = a} :: DataQualityAppSpecification)
+
+instance Data.FromJSON DataQualityAppSpecification where
+  parseJSON =
+    Data.withObject
+      "DataQualityAppSpecification"
+      ( \x ->
+          DataQualityAppSpecification'
+            Prelude.<$> (x Data..:? "ContainerArguments")
+            Prelude.<*> (x Data..:? "ContainerEntrypoint")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "PostAnalyticsProcessorSourceUri")
+            Prelude.<*> (x Data..:? "RecordPreprocessorSourceUri")
+            Prelude.<*> (x Data..: "ImageUri")
+      )
+
+instance Prelude.Hashable DataQualityAppSpecification where
+  hashWithSalt _salt DataQualityAppSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerArguments
+      `Prelude.hashWithSalt` containerEntrypoint
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` postAnalyticsProcessorSourceUri
+      `Prelude.hashWithSalt` recordPreprocessorSourceUri
+      `Prelude.hashWithSalt` imageUri
+
+instance Prelude.NFData DataQualityAppSpecification where
+  rnf DataQualityAppSpecification' {..} =
+    Prelude.rnf containerArguments
+      `Prelude.seq` Prelude.rnf containerEntrypoint
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf postAnalyticsProcessorSourceUri
+      `Prelude.seq` Prelude.rnf recordPreprocessorSourceUri
+      `Prelude.seq` Prelude.rnf imageUri
+
+instance Data.ToJSON DataQualityAppSpecification where
+  toJSON DataQualityAppSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerArguments" Data..=)
+              Prelude.<$> containerArguments,
+            ("ContainerEntrypoint" Data..=)
+              Prelude.<$> containerEntrypoint,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("PostAnalyticsProcessorSourceUri" Data..=)
+              Prelude.<$> postAnalyticsProcessorSourceUri,
+            ("RecordPreprocessorSourceUri" Data..=)
+              Prelude.<$> recordPreprocessorSourceUri,
+            Prelude.Just ("ImageUri" Data..= imageUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataQualityBaselineConfig.hs b/gen/Amazonka/SageMaker/Types/DataQualityBaselineConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataQualityBaselineConfig.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataQualityBaselineConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataQualityBaselineConfig 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 Amazonka.SageMaker.Types.MonitoringConstraintsResource
+import Amazonka.SageMaker.Types.MonitoringStatisticsResource
+
+-- | Configuration for monitoring constraints and monitoring statistics.
+-- These baseline resources are compared against the results of the current
+-- job from the series of jobs scheduled to collect data periodically.
+--
+-- /See:/ 'newDataQualityBaselineConfig' smart constructor.
+data DataQualityBaselineConfig = DataQualityBaselineConfig'
+  { -- | The name of the job that performs baselining for the data quality
+    -- monitoring job.
+    baseliningJobName :: Prelude.Maybe Prelude.Text,
+    constraintsResource :: Prelude.Maybe MonitoringConstraintsResource,
+    statisticsResource :: Prelude.Maybe MonitoringStatisticsResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataQualityBaselineConfig' 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:
+--
+-- 'baseliningJobName', 'dataQualityBaselineConfig_baseliningJobName' - The name of the job that performs baselining for the data quality
+-- monitoring job.
+--
+-- 'constraintsResource', 'dataQualityBaselineConfig_constraintsResource' - Undocumented member.
+--
+-- 'statisticsResource', 'dataQualityBaselineConfig_statisticsResource' - Undocumented member.
+newDataQualityBaselineConfig ::
+  DataQualityBaselineConfig
+newDataQualityBaselineConfig =
+  DataQualityBaselineConfig'
+    { baseliningJobName =
+        Prelude.Nothing,
+      constraintsResource = Prelude.Nothing,
+      statisticsResource = Prelude.Nothing
+    }
+
+-- | The name of the job that performs baselining for the data quality
+-- monitoring job.
+dataQualityBaselineConfig_baseliningJobName :: Lens.Lens' DataQualityBaselineConfig (Prelude.Maybe Prelude.Text)
+dataQualityBaselineConfig_baseliningJobName = Lens.lens (\DataQualityBaselineConfig' {baseliningJobName} -> baseliningJobName) (\s@DataQualityBaselineConfig' {} a -> s {baseliningJobName = a} :: DataQualityBaselineConfig)
+
+-- | Undocumented member.
+dataQualityBaselineConfig_constraintsResource :: Lens.Lens' DataQualityBaselineConfig (Prelude.Maybe MonitoringConstraintsResource)
+dataQualityBaselineConfig_constraintsResource = Lens.lens (\DataQualityBaselineConfig' {constraintsResource} -> constraintsResource) (\s@DataQualityBaselineConfig' {} a -> s {constraintsResource = a} :: DataQualityBaselineConfig)
+
+-- | Undocumented member.
+dataQualityBaselineConfig_statisticsResource :: Lens.Lens' DataQualityBaselineConfig (Prelude.Maybe MonitoringStatisticsResource)
+dataQualityBaselineConfig_statisticsResource = Lens.lens (\DataQualityBaselineConfig' {statisticsResource} -> statisticsResource) (\s@DataQualityBaselineConfig' {} a -> s {statisticsResource = a} :: DataQualityBaselineConfig)
+
+instance Data.FromJSON DataQualityBaselineConfig where
+  parseJSON =
+    Data.withObject
+      "DataQualityBaselineConfig"
+      ( \x ->
+          DataQualityBaselineConfig'
+            Prelude.<$> (x Data..:? "BaseliningJobName")
+            Prelude.<*> (x Data..:? "ConstraintsResource")
+            Prelude.<*> (x Data..:? "StatisticsResource")
+      )
+
+instance Prelude.Hashable DataQualityBaselineConfig where
+  hashWithSalt _salt DataQualityBaselineConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` baseliningJobName
+      `Prelude.hashWithSalt` constraintsResource
+      `Prelude.hashWithSalt` statisticsResource
+
+instance Prelude.NFData DataQualityBaselineConfig where
+  rnf DataQualityBaselineConfig' {..} =
+    Prelude.rnf baseliningJobName
+      `Prelude.seq` Prelude.rnf constraintsResource
+      `Prelude.seq` Prelude.rnf statisticsResource
+
+instance Data.ToJSON DataQualityBaselineConfig where
+  toJSON DataQualityBaselineConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BaseliningJobName" Data..=)
+              Prelude.<$> baseliningJobName,
+            ("ConstraintsResource" Data..=)
+              Prelude.<$> constraintsResource,
+            ("StatisticsResource" Data..=)
+              Prelude.<$> statisticsResource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataQualityJobInput.hs b/gen/Amazonka/SageMaker/Types/DataQualityJobInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataQualityJobInput.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataQualityJobInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataQualityJobInput 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 Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.EndpointInput
+
+-- | The input for the data quality monitoring job. Currently endpoints are
+-- supported for input.
+--
+-- /See:/ 'newDataQualityJobInput' smart constructor.
+data DataQualityJobInput = DataQualityJobInput'
+  { -- | Input object for the batch transform job.
+    batchTransformInput :: Prelude.Maybe BatchTransformInput,
+    endpointInput :: Prelude.Maybe EndpointInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataQualityJobInput' 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:
+--
+-- 'batchTransformInput', 'dataQualityJobInput_batchTransformInput' - Input object for the batch transform job.
+--
+-- 'endpointInput', 'dataQualityJobInput_endpointInput' - Undocumented member.
+newDataQualityJobInput ::
+  DataQualityJobInput
+newDataQualityJobInput =
+  DataQualityJobInput'
+    { batchTransformInput =
+        Prelude.Nothing,
+      endpointInput = Prelude.Nothing
+    }
+
+-- | Input object for the batch transform job.
+dataQualityJobInput_batchTransformInput :: Lens.Lens' DataQualityJobInput (Prelude.Maybe BatchTransformInput)
+dataQualityJobInput_batchTransformInput = Lens.lens (\DataQualityJobInput' {batchTransformInput} -> batchTransformInput) (\s@DataQualityJobInput' {} a -> s {batchTransformInput = a} :: DataQualityJobInput)
+
+-- | Undocumented member.
+dataQualityJobInput_endpointInput :: Lens.Lens' DataQualityJobInput (Prelude.Maybe EndpointInput)
+dataQualityJobInput_endpointInput = Lens.lens (\DataQualityJobInput' {endpointInput} -> endpointInput) (\s@DataQualityJobInput' {} a -> s {endpointInput = a} :: DataQualityJobInput)
+
+instance Data.FromJSON DataQualityJobInput where
+  parseJSON =
+    Data.withObject
+      "DataQualityJobInput"
+      ( \x ->
+          DataQualityJobInput'
+            Prelude.<$> (x Data..:? "BatchTransformInput")
+            Prelude.<*> (x Data..:? "EndpointInput")
+      )
+
+instance Prelude.Hashable DataQualityJobInput where
+  hashWithSalt _salt DataQualityJobInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchTransformInput
+      `Prelude.hashWithSalt` endpointInput
+
+instance Prelude.NFData DataQualityJobInput where
+  rnf DataQualityJobInput' {..} =
+    Prelude.rnf batchTransformInput
+      `Prelude.seq` Prelude.rnf endpointInput
+
+instance Data.ToJSON DataQualityJobInput where
+  toJSON DataQualityJobInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchTransformInput" Data..=)
+              Prelude.<$> batchTransformInput,
+            ("EndpointInput" Data..=) Prelude.<$> endpointInput
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DataSource.hs b/gen/Amazonka/SageMaker/Types/DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DataSource.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DataSource 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 Amazonka.SageMaker.Types.FileSystemDataSource
+import Amazonka.SageMaker.Types.S3DataSource
+
+-- | Describes the location of the channel data.
+--
+-- /See:/ 'newDataSource' smart constructor.
+data DataSource = DataSource'
+  { -- | The file system that is associated with a channel.
+    fileSystemDataSource :: Prelude.Maybe FileSystemDataSource,
+    -- | The S3 location of the data source that is associated with a channel.
+    s3DataSource :: Prelude.Maybe S3DataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSource' 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:
+--
+-- 'fileSystemDataSource', 'dataSource_fileSystemDataSource' - The file system that is associated with a channel.
+--
+-- 's3DataSource', 'dataSource_s3DataSource' - The S3 location of the data source that is associated with a channel.
+newDataSource ::
+  DataSource
+newDataSource =
+  DataSource'
+    { fileSystemDataSource = Prelude.Nothing,
+      s3DataSource = Prelude.Nothing
+    }
+
+-- | The file system that is associated with a channel.
+dataSource_fileSystemDataSource :: Lens.Lens' DataSource (Prelude.Maybe FileSystemDataSource)
+dataSource_fileSystemDataSource = Lens.lens (\DataSource' {fileSystemDataSource} -> fileSystemDataSource) (\s@DataSource' {} a -> s {fileSystemDataSource = a} :: DataSource)
+
+-- | The S3 location of the data source that is associated with a channel.
+dataSource_s3DataSource :: Lens.Lens' DataSource (Prelude.Maybe S3DataSource)
+dataSource_s3DataSource = Lens.lens (\DataSource' {s3DataSource} -> s3DataSource) (\s@DataSource' {} a -> s {s3DataSource = a} :: DataSource)
+
+instance Data.FromJSON DataSource where
+  parseJSON =
+    Data.withObject
+      "DataSource"
+      ( \x ->
+          DataSource'
+            Prelude.<$> (x Data..:? "FileSystemDataSource")
+            Prelude.<*> (x Data..:? "S3DataSource")
+      )
+
+instance Prelude.Hashable DataSource where
+  hashWithSalt _salt DataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` fileSystemDataSource
+      `Prelude.hashWithSalt` s3DataSource
+
+instance Prelude.NFData DataSource where
+  rnf DataSource' {..} =
+    Prelude.rnf fileSystemDataSource
+      `Prelude.seq` Prelude.rnf s3DataSource
+
+instance Data.ToJSON DataSource where
+  toJSON DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FileSystemDataSource" Data..=)
+              Prelude.<$> fileSystemDataSource,
+            ("S3DataSource" Data..=) Prelude.<$> s3DataSource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DatasetDefinition.hs b/gen/Amazonka/SageMaker/Types/DatasetDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DatasetDefinition.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DatasetDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DatasetDefinition 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 Amazonka.SageMaker.Types.AthenaDatasetDefinition
+import Amazonka.SageMaker.Types.DataDistributionType
+import Amazonka.SageMaker.Types.InputMode
+import Amazonka.SageMaker.Types.RedshiftDatasetDefinition
+
+-- | Configuration for Dataset Definition inputs. The Dataset Definition
+-- input must specify exactly one of either @AthenaDatasetDefinition@ or
+-- @RedshiftDatasetDefinition@ types.
+--
+-- /See:/ 'newDatasetDefinition' smart constructor.
+data DatasetDefinition = DatasetDefinition'
+  { athenaDatasetDefinition :: Prelude.Maybe AthenaDatasetDefinition,
+    -- | Whether the generated dataset is @FullyReplicated@ or @ShardedByS3Key@
+    -- (default).
+    dataDistributionType :: Prelude.Maybe DataDistributionType,
+    -- | Whether to use @File@ or @Pipe@ input mode. In @File@ (default) mode,
+    -- Amazon SageMaker copies the data from the input source onto the local
+    -- Amazon Elastic Block Store (Amazon EBS) volumes before starting your
+    -- training algorithm. This is the most commonly used input mode. In @Pipe@
+    -- mode, Amazon SageMaker streams input data from the source directly to
+    -- your algorithm without using the EBS volume.
+    inputMode :: Prelude.Maybe InputMode,
+    -- | The local path where you want Amazon SageMaker to download the Dataset
+    -- Definition inputs to run a processing job. @LocalPath@ is an absolute
+    -- path to the input data. This is a required parameter when @AppManaged@
+    -- is @False@ (default).
+    localPath :: Prelude.Maybe Prelude.Text,
+    redshiftDatasetDefinition :: Prelude.Maybe RedshiftDatasetDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatasetDefinition' 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:
+--
+-- 'athenaDatasetDefinition', 'datasetDefinition_athenaDatasetDefinition' - Undocumented member.
+--
+-- 'dataDistributionType', 'datasetDefinition_dataDistributionType' - Whether the generated dataset is @FullyReplicated@ or @ShardedByS3Key@
+-- (default).
+--
+-- 'inputMode', 'datasetDefinition_inputMode' - Whether to use @File@ or @Pipe@ input mode. In @File@ (default) mode,
+-- Amazon SageMaker copies the data from the input source onto the local
+-- Amazon Elastic Block Store (Amazon EBS) volumes before starting your
+-- training algorithm. This is the most commonly used input mode. In @Pipe@
+-- mode, Amazon SageMaker streams input data from the source directly to
+-- your algorithm without using the EBS volume.
+--
+-- 'localPath', 'datasetDefinition_localPath' - The local path where you want Amazon SageMaker to download the Dataset
+-- Definition inputs to run a processing job. @LocalPath@ is an absolute
+-- path to the input data. This is a required parameter when @AppManaged@
+-- is @False@ (default).
+--
+-- 'redshiftDatasetDefinition', 'datasetDefinition_redshiftDatasetDefinition' - Undocumented member.
+newDatasetDefinition ::
+  DatasetDefinition
+newDatasetDefinition =
+  DatasetDefinition'
+    { athenaDatasetDefinition =
+        Prelude.Nothing,
+      dataDistributionType = Prelude.Nothing,
+      inputMode = Prelude.Nothing,
+      localPath = Prelude.Nothing,
+      redshiftDatasetDefinition = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+datasetDefinition_athenaDatasetDefinition :: Lens.Lens' DatasetDefinition (Prelude.Maybe AthenaDatasetDefinition)
+datasetDefinition_athenaDatasetDefinition = Lens.lens (\DatasetDefinition' {athenaDatasetDefinition} -> athenaDatasetDefinition) (\s@DatasetDefinition' {} a -> s {athenaDatasetDefinition = a} :: DatasetDefinition)
+
+-- | Whether the generated dataset is @FullyReplicated@ or @ShardedByS3Key@
+-- (default).
+datasetDefinition_dataDistributionType :: Lens.Lens' DatasetDefinition (Prelude.Maybe DataDistributionType)
+datasetDefinition_dataDistributionType = Lens.lens (\DatasetDefinition' {dataDistributionType} -> dataDistributionType) (\s@DatasetDefinition' {} a -> s {dataDistributionType = a} :: DatasetDefinition)
+
+-- | Whether to use @File@ or @Pipe@ input mode. In @File@ (default) mode,
+-- Amazon SageMaker copies the data from the input source onto the local
+-- Amazon Elastic Block Store (Amazon EBS) volumes before starting your
+-- training algorithm. This is the most commonly used input mode. In @Pipe@
+-- mode, Amazon SageMaker streams input data from the source directly to
+-- your algorithm without using the EBS volume.
+datasetDefinition_inputMode :: Lens.Lens' DatasetDefinition (Prelude.Maybe InputMode)
+datasetDefinition_inputMode = Lens.lens (\DatasetDefinition' {inputMode} -> inputMode) (\s@DatasetDefinition' {} a -> s {inputMode = a} :: DatasetDefinition)
+
+-- | The local path where you want Amazon SageMaker to download the Dataset
+-- Definition inputs to run a processing job. @LocalPath@ is an absolute
+-- path to the input data. This is a required parameter when @AppManaged@
+-- is @False@ (default).
+datasetDefinition_localPath :: Lens.Lens' DatasetDefinition (Prelude.Maybe Prelude.Text)
+datasetDefinition_localPath = Lens.lens (\DatasetDefinition' {localPath} -> localPath) (\s@DatasetDefinition' {} a -> s {localPath = a} :: DatasetDefinition)
+
+-- | Undocumented member.
+datasetDefinition_redshiftDatasetDefinition :: Lens.Lens' DatasetDefinition (Prelude.Maybe RedshiftDatasetDefinition)
+datasetDefinition_redshiftDatasetDefinition = Lens.lens (\DatasetDefinition' {redshiftDatasetDefinition} -> redshiftDatasetDefinition) (\s@DatasetDefinition' {} a -> s {redshiftDatasetDefinition = a} :: DatasetDefinition)
+
+instance Data.FromJSON DatasetDefinition where
+  parseJSON =
+    Data.withObject
+      "DatasetDefinition"
+      ( \x ->
+          DatasetDefinition'
+            Prelude.<$> (x Data..:? "AthenaDatasetDefinition")
+            Prelude.<*> (x Data..:? "DataDistributionType")
+            Prelude.<*> (x Data..:? "InputMode")
+            Prelude.<*> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..:? "RedshiftDatasetDefinition")
+      )
+
+instance Prelude.Hashable DatasetDefinition where
+  hashWithSalt _salt DatasetDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` athenaDatasetDefinition
+      `Prelude.hashWithSalt` dataDistributionType
+      `Prelude.hashWithSalt` inputMode
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` redshiftDatasetDefinition
+
+instance Prelude.NFData DatasetDefinition where
+  rnf DatasetDefinition' {..} =
+    Prelude.rnf athenaDatasetDefinition
+      `Prelude.seq` Prelude.rnf dataDistributionType
+      `Prelude.seq` Prelude.rnf inputMode
+      `Prelude.seq` Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf redshiftDatasetDefinition
+
+instance Data.ToJSON DatasetDefinition where
+  toJSON DatasetDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AthenaDatasetDefinition" Data..=)
+              Prelude.<$> athenaDatasetDefinition,
+            ("DataDistributionType" Data..=)
+              Prelude.<$> dataDistributionType,
+            ("InputMode" Data..=) Prelude.<$> inputMode,
+            ("LocalPath" Data..=) Prelude.<$> localPath,
+            ("RedshiftDatasetDefinition" Data..=)
+              Prelude.<$> redshiftDatasetDefinition
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DebugHookConfig.hs b/gen/Amazonka/SageMaker/Types/DebugHookConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DebugHookConfig.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DebugHookConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DebugHookConfig 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 Amazonka.SageMaker.Types.CollectionConfiguration
+
+-- | Configuration information for the Amazon SageMaker Debugger hook
+-- parameters, metric and tensor collections, and storage paths. To learn
+-- more about how to configure the @DebugHookConfig@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+--
+-- /See:/ 'newDebugHookConfig' smart constructor.
+data DebugHookConfig = DebugHookConfig'
+  { -- | Configuration information for Amazon SageMaker Debugger tensor
+    -- collections. To learn more about how to configure the
+    -- @CollectionConfiguration@ parameter, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+    collectionConfigurations :: Prelude.Maybe [CollectionConfiguration],
+    -- | Configuration information for the Amazon SageMaker Debugger hook
+    -- parameters.
+    hookParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Path to local storage location for metrics and tensors. Defaults to
+    -- @\/opt\/ml\/output\/tensors\/@.
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Path to Amazon S3 storage location for metrics and tensors.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DebugHookConfig' 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:
+--
+-- 'collectionConfigurations', 'debugHookConfig_collectionConfigurations' - Configuration information for Amazon SageMaker Debugger tensor
+-- collections. To learn more about how to configure the
+-- @CollectionConfiguration@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+--
+-- 'hookParameters', 'debugHookConfig_hookParameters' - Configuration information for the Amazon SageMaker Debugger hook
+-- parameters.
+--
+-- 'localPath', 'debugHookConfig_localPath' - Path to local storage location for metrics and tensors. Defaults to
+-- @\/opt\/ml\/output\/tensors\/@.
+--
+-- 's3OutputPath', 'debugHookConfig_s3OutputPath' - Path to Amazon S3 storage location for metrics and tensors.
+newDebugHookConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  DebugHookConfig
+newDebugHookConfig pS3OutputPath_ =
+  DebugHookConfig'
+    { collectionConfigurations =
+        Prelude.Nothing,
+      hookParameters = Prelude.Nothing,
+      localPath = Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | Configuration information for Amazon SageMaker Debugger tensor
+-- collections. To learn more about how to configure the
+-- @CollectionConfiguration@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+debugHookConfig_collectionConfigurations :: Lens.Lens' DebugHookConfig (Prelude.Maybe [CollectionConfiguration])
+debugHookConfig_collectionConfigurations = Lens.lens (\DebugHookConfig' {collectionConfigurations} -> collectionConfigurations) (\s@DebugHookConfig' {} a -> s {collectionConfigurations = a} :: DebugHookConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Configuration information for the Amazon SageMaker Debugger hook
+-- parameters.
+debugHookConfig_hookParameters :: Lens.Lens' DebugHookConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+debugHookConfig_hookParameters = Lens.lens (\DebugHookConfig' {hookParameters} -> hookParameters) (\s@DebugHookConfig' {} a -> s {hookParameters = a} :: DebugHookConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Path to local storage location for metrics and tensors. Defaults to
+-- @\/opt\/ml\/output\/tensors\/@.
+debugHookConfig_localPath :: Lens.Lens' DebugHookConfig (Prelude.Maybe Prelude.Text)
+debugHookConfig_localPath = Lens.lens (\DebugHookConfig' {localPath} -> localPath) (\s@DebugHookConfig' {} a -> s {localPath = a} :: DebugHookConfig)
+
+-- | Path to Amazon S3 storage location for metrics and tensors.
+debugHookConfig_s3OutputPath :: Lens.Lens' DebugHookConfig Prelude.Text
+debugHookConfig_s3OutputPath = Lens.lens (\DebugHookConfig' {s3OutputPath} -> s3OutputPath) (\s@DebugHookConfig' {} a -> s {s3OutputPath = a} :: DebugHookConfig)
+
+instance Data.FromJSON DebugHookConfig where
+  parseJSON =
+    Data.withObject
+      "DebugHookConfig"
+      ( \x ->
+          DebugHookConfig'
+            Prelude.<$> ( x
+                            Data..:? "CollectionConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "HookParameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable DebugHookConfig where
+  hashWithSalt _salt DebugHookConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` collectionConfigurations
+      `Prelude.hashWithSalt` hookParameters
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData DebugHookConfig where
+  rnf DebugHookConfig' {..} =
+    Prelude.rnf collectionConfigurations
+      `Prelude.seq` Prelude.rnf hookParameters
+      `Prelude.seq` Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON DebugHookConfig where
+  toJSON DebugHookConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CollectionConfigurations" Data..=)
+              Prelude.<$> collectionConfigurations,
+            ("HookParameters" Data..=)
+              Prelude.<$> hookParameters,
+            ("LocalPath" Data..=) Prelude.<$> localPath,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DebugRuleConfiguration.hs b/gen/Amazonka/SageMaker/Types/DebugRuleConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DebugRuleConfiguration.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DebugRuleConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DebugRuleConfiguration 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 Amazonka.SageMaker.Types.ProcessingInstanceType
+
+-- | Configuration information for SageMaker Debugger rules for debugging. To
+-- learn more about how to configure the @DebugRuleConfiguration@
+-- parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+--
+-- /See:/ 'newDebugRuleConfiguration' smart constructor.
+data DebugRuleConfiguration = DebugRuleConfiguration'
+  { -- | The instance type to deploy a custom rule for debugging a training job.
+    instanceType :: Prelude.Maybe ProcessingInstanceType,
+    -- | Path to local storage location for output of rules. Defaults to
+    -- @\/opt\/ml\/processing\/output\/rule\/@.
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Runtime configuration for rule container.
+    ruleParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Path to Amazon S3 storage location for rules.
+    s3OutputPath :: Prelude.Maybe Prelude.Text,
+    -- | The size, in GB, of the ML storage volume attached to the processing
+    -- instance.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the rule configuration. It must be unique relative to other
+    -- rule configuration names.
+    ruleConfigurationName :: Prelude.Text,
+    -- | The Amazon Elastic Container (ECR) Image for the managed rule
+    -- evaluation.
+    ruleEvaluatorImage :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DebugRuleConfiguration' 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:
+--
+-- 'instanceType', 'debugRuleConfiguration_instanceType' - The instance type to deploy a custom rule for debugging a training job.
+--
+-- 'localPath', 'debugRuleConfiguration_localPath' - Path to local storage location for output of rules. Defaults to
+-- @\/opt\/ml\/processing\/output\/rule\/@.
+--
+-- 'ruleParameters', 'debugRuleConfiguration_ruleParameters' - Runtime configuration for rule container.
+--
+-- 's3OutputPath', 'debugRuleConfiguration_s3OutputPath' - Path to Amazon S3 storage location for rules.
+--
+-- 'volumeSizeInGB', 'debugRuleConfiguration_volumeSizeInGB' - The size, in GB, of the ML storage volume attached to the processing
+-- instance.
+--
+-- 'ruleConfigurationName', 'debugRuleConfiguration_ruleConfigurationName' - The name of the rule configuration. It must be unique relative to other
+-- rule configuration names.
+--
+-- 'ruleEvaluatorImage', 'debugRuleConfiguration_ruleEvaluatorImage' - The Amazon Elastic Container (ECR) Image for the managed rule
+-- evaluation.
+newDebugRuleConfiguration ::
+  -- | 'ruleConfigurationName'
+  Prelude.Text ->
+  -- | 'ruleEvaluatorImage'
+  Prelude.Text ->
+  DebugRuleConfiguration
+newDebugRuleConfiguration
+  pRuleConfigurationName_
+  pRuleEvaluatorImage_ =
+    DebugRuleConfiguration'
+      { instanceType =
+          Prelude.Nothing,
+        localPath = Prelude.Nothing,
+        ruleParameters = Prelude.Nothing,
+        s3OutputPath = Prelude.Nothing,
+        volumeSizeInGB = Prelude.Nothing,
+        ruleConfigurationName = pRuleConfigurationName_,
+        ruleEvaluatorImage = pRuleEvaluatorImage_
+      }
+
+-- | The instance type to deploy a custom rule for debugging a training job.
+debugRuleConfiguration_instanceType :: Lens.Lens' DebugRuleConfiguration (Prelude.Maybe ProcessingInstanceType)
+debugRuleConfiguration_instanceType = Lens.lens (\DebugRuleConfiguration' {instanceType} -> instanceType) (\s@DebugRuleConfiguration' {} a -> s {instanceType = a} :: DebugRuleConfiguration)
+
+-- | Path to local storage location for output of rules. Defaults to
+-- @\/opt\/ml\/processing\/output\/rule\/@.
+debugRuleConfiguration_localPath :: Lens.Lens' DebugRuleConfiguration (Prelude.Maybe Prelude.Text)
+debugRuleConfiguration_localPath = Lens.lens (\DebugRuleConfiguration' {localPath} -> localPath) (\s@DebugRuleConfiguration' {} a -> s {localPath = a} :: DebugRuleConfiguration)
+
+-- | Runtime configuration for rule container.
+debugRuleConfiguration_ruleParameters :: Lens.Lens' DebugRuleConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+debugRuleConfiguration_ruleParameters = Lens.lens (\DebugRuleConfiguration' {ruleParameters} -> ruleParameters) (\s@DebugRuleConfiguration' {} a -> s {ruleParameters = a} :: DebugRuleConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Path to Amazon S3 storage location for rules.
+debugRuleConfiguration_s3OutputPath :: Lens.Lens' DebugRuleConfiguration (Prelude.Maybe Prelude.Text)
+debugRuleConfiguration_s3OutputPath = Lens.lens (\DebugRuleConfiguration' {s3OutputPath} -> s3OutputPath) (\s@DebugRuleConfiguration' {} a -> s {s3OutputPath = a} :: DebugRuleConfiguration)
+
+-- | The size, in GB, of the ML storage volume attached to the processing
+-- instance.
+debugRuleConfiguration_volumeSizeInGB :: Lens.Lens' DebugRuleConfiguration (Prelude.Maybe Prelude.Natural)
+debugRuleConfiguration_volumeSizeInGB = Lens.lens (\DebugRuleConfiguration' {volumeSizeInGB} -> volumeSizeInGB) (\s@DebugRuleConfiguration' {} a -> s {volumeSizeInGB = a} :: DebugRuleConfiguration)
+
+-- | The name of the rule configuration. It must be unique relative to other
+-- rule configuration names.
+debugRuleConfiguration_ruleConfigurationName :: Lens.Lens' DebugRuleConfiguration Prelude.Text
+debugRuleConfiguration_ruleConfigurationName = Lens.lens (\DebugRuleConfiguration' {ruleConfigurationName} -> ruleConfigurationName) (\s@DebugRuleConfiguration' {} a -> s {ruleConfigurationName = a} :: DebugRuleConfiguration)
+
+-- | The Amazon Elastic Container (ECR) Image for the managed rule
+-- evaluation.
+debugRuleConfiguration_ruleEvaluatorImage :: Lens.Lens' DebugRuleConfiguration Prelude.Text
+debugRuleConfiguration_ruleEvaluatorImage = Lens.lens (\DebugRuleConfiguration' {ruleEvaluatorImage} -> ruleEvaluatorImage) (\s@DebugRuleConfiguration' {} a -> s {ruleEvaluatorImage = a} :: DebugRuleConfiguration)
+
+instance Data.FromJSON DebugRuleConfiguration where
+  parseJSON =
+    Data.withObject
+      "DebugRuleConfiguration"
+      ( \x ->
+          DebugRuleConfiguration'
+            Prelude.<$> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..:? "RuleParameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "S3OutputPath")
+            Prelude.<*> (x Data..:? "VolumeSizeInGB")
+            Prelude.<*> (x Data..: "RuleConfigurationName")
+            Prelude.<*> (x Data..: "RuleEvaluatorImage")
+      )
+
+instance Prelude.Hashable DebugRuleConfiguration where
+  hashWithSalt _salt DebugRuleConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` ruleParameters
+      `Prelude.hashWithSalt` s3OutputPath
+      `Prelude.hashWithSalt` volumeSizeInGB
+      `Prelude.hashWithSalt` ruleConfigurationName
+      `Prelude.hashWithSalt` ruleEvaluatorImage
+
+instance Prelude.NFData DebugRuleConfiguration where
+  rnf DebugRuleConfiguration' {..} =
+    Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf ruleParameters
+      `Prelude.seq` Prelude.rnf s3OutputPath
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+      `Prelude.seq` Prelude.rnf ruleConfigurationName
+      `Prelude.seq` Prelude.rnf ruleEvaluatorImage
+
+instance Data.ToJSON DebugRuleConfiguration where
+  toJSON DebugRuleConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("LocalPath" Data..=) Prelude.<$> localPath,
+            ("RuleParameters" Data..=)
+              Prelude.<$> ruleParameters,
+            ("S3OutputPath" Data..=) Prelude.<$> s3OutputPath,
+            ("VolumeSizeInGB" Data..=)
+              Prelude.<$> volumeSizeInGB,
+            Prelude.Just
+              ( "RuleConfigurationName"
+                  Data..= ruleConfigurationName
+              ),
+            Prelude.Just
+              ("RuleEvaluatorImage" Data..= ruleEvaluatorImage)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DebugRuleEvaluationStatus.hs b/gen/Amazonka/SageMaker/Types/DebugRuleEvaluationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DebugRuleEvaluationStatus.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DebugRuleEvaluationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DebugRuleEvaluationStatus 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 Amazonka.SageMaker.Types.RuleEvaluationStatus
+
+-- | Information about the status of the rule evaluation.
+--
+-- /See:/ 'newDebugRuleEvaluationStatus' smart constructor.
+data DebugRuleEvaluationStatus = DebugRuleEvaluationStatus'
+  { -- | Timestamp when the rule evaluation status was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the rule configuration.
+    ruleConfigurationName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the rule evaluation job.
+    ruleEvaluationJobArn :: Prelude.Maybe Prelude.Text,
+    -- | Status of the rule evaluation.
+    ruleEvaluationStatus :: Prelude.Maybe RuleEvaluationStatus,
+    -- | Details from the rule evaluation.
+    statusDetails :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DebugRuleEvaluationStatus' 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:
+--
+-- 'lastModifiedTime', 'debugRuleEvaluationStatus_lastModifiedTime' - Timestamp when the rule evaluation status was last modified.
+--
+-- 'ruleConfigurationName', 'debugRuleEvaluationStatus_ruleConfigurationName' - The name of the rule configuration.
+--
+-- 'ruleEvaluationJobArn', 'debugRuleEvaluationStatus_ruleEvaluationJobArn' - The Amazon Resource Name (ARN) of the rule evaluation job.
+--
+-- 'ruleEvaluationStatus', 'debugRuleEvaluationStatus_ruleEvaluationStatus' - Status of the rule evaluation.
+--
+-- 'statusDetails', 'debugRuleEvaluationStatus_statusDetails' - Details from the rule evaluation.
+newDebugRuleEvaluationStatus ::
+  DebugRuleEvaluationStatus
+newDebugRuleEvaluationStatus =
+  DebugRuleEvaluationStatus'
+    { lastModifiedTime =
+        Prelude.Nothing,
+      ruleConfigurationName = Prelude.Nothing,
+      ruleEvaluationJobArn = Prelude.Nothing,
+      ruleEvaluationStatus = Prelude.Nothing,
+      statusDetails = Prelude.Nothing
+    }
+
+-- | Timestamp when the rule evaluation status was last modified.
+debugRuleEvaluationStatus_lastModifiedTime :: Lens.Lens' DebugRuleEvaluationStatus (Prelude.Maybe Prelude.UTCTime)
+debugRuleEvaluationStatus_lastModifiedTime = Lens.lens (\DebugRuleEvaluationStatus' {lastModifiedTime} -> lastModifiedTime) (\s@DebugRuleEvaluationStatus' {} a -> s {lastModifiedTime = a} :: DebugRuleEvaluationStatus) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the rule configuration.
+debugRuleEvaluationStatus_ruleConfigurationName :: Lens.Lens' DebugRuleEvaluationStatus (Prelude.Maybe Prelude.Text)
+debugRuleEvaluationStatus_ruleConfigurationName = Lens.lens (\DebugRuleEvaluationStatus' {ruleConfigurationName} -> ruleConfigurationName) (\s@DebugRuleEvaluationStatus' {} a -> s {ruleConfigurationName = a} :: DebugRuleEvaluationStatus)
+
+-- | The Amazon Resource Name (ARN) of the rule evaluation job.
+debugRuleEvaluationStatus_ruleEvaluationJobArn :: Lens.Lens' DebugRuleEvaluationStatus (Prelude.Maybe Prelude.Text)
+debugRuleEvaluationStatus_ruleEvaluationJobArn = Lens.lens (\DebugRuleEvaluationStatus' {ruleEvaluationJobArn} -> ruleEvaluationJobArn) (\s@DebugRuleEvaluationStatus' {} a -> s {ruleEvaluationJobArn = a} :: DebugRuleEvaluationStatus)
+
+-- | Status of the rule evaluation.
+debugRuleEvaluationStatus_ruleEvaluationStatus :: Lens.Lens' DebugRuleEvaluationStatus (Prelude.Maybe RuleEvaluationStatus)
+debugRuleEvaluationStatus_ruleEvaluationStatus = Lens.lens (\DebugRuleEvaluationStatus' {ruleEvaluationStatus} -> ruleEvaluationStatus) (\s@DebugRuleEvaluationStatus' {} a -> s {ruleEvaluationStatus = a} :: DebugRuleEvaluationStatus)
+
+-- | Details from the rule evaluation.
+debugRuleEvaluationStatus_statusDetails :: Lens.Lens' DebugRuleEvaluationStatus (Prelude.Maybe Prelude.Text)
+debugRuleEvaluationStatus_statusDetails = Lens.lens (\DebugRuleEvaluationStatus' {statusDetails} -> statusDetails) (\s@DebugRuleEvaluationStatus' {} a -> s {statusDetails = a} :: DebugRuleEvaluationStatus)
+
+instance Data.FromJSON DebugRuleEvaluationStatus where
+  parseJSON =
+    Data.withObject
+      "DebugRuleEvaluationStatus"
+      ( \x ->
+          DebugRuleEvaluationStatus'
+            Prelude.<$> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "RuleConfigurationName")
+            Prelude.<*> (x Data..:? "RuleEvaluationJobArn")
+            Prelude.<*> (x Data..:? "RuleEvaluationStatus")
+            Prelude.<*> (x Data..:? "StatusDetails")
+      )
+
+instance Prelude.Hashable DebugRuleEvaluationStatus where
+  hashWithSalt _salt DebugRuleEvaluationStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` ruleConfigurationName
+      `Prelude.hashWithSalt` ruleEvaluationJobArn
+      `Prelude.hashWithSalt` ruleEvaluationStatus
+      `Prelude.hashWithSalt` statusDetails
+
+instance Prelude.NFData DebugRuleEvaluationStatus where
+  rnf DebugRuleEvaluationStatus' {..} =
+    Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf ruleConfigurationName
+      `Prelude.seq` Prelude.rnf ruleEvaluationJobArn
+      `Prelude.seq` Prelude.rnf ruleEvaluationStatus
+      `Prelude.seq` Prelude.rnf statusDetails
diff --git a/gen/Amazonka/SageMaker/Types/DefaultSpaceSettings.hs b/gen/Amazonka/SageMaker/Types/DefaultSpaceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DefaultSpaceSettings.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DefaultSpaceSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DefaultSpaceSettings 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 Amazonka.SageMaker.Types.JupyterServerAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayAppSettings
+
+-- | A collection of settings that apply to spaces created in the Domain.
+--
+-- /See:/ 'newDefaultSpaceSettings' smart constructor.
+data DefaultSpaceSettings = DefaultSpaceSettings'
+  { -- | The execution role for the space.
+    executionRole :: Prelude.Maybe Prelude.Text,
+    jupyterServerAppSettings :: Prelude.Maybe JupyterServerAppSettings,
+    kernelGatewayAppSettings :: Prelude.Maybe KernelGatewayAppSettings,
+    -- | The security groups for the Amazon Virtual Private Cloud that the space
+    -- uses for communication.
+    securityGroups :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultSpaceSettings' 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:
+--
+-- 'executionRole', 'defaultSpaceSettings_executionRole' - The execution role for the space.
+--
+-- 'jupyterServerAppSettings', 'defaultSpaceSettings_jupyterServerAppSettings' - Undocumented member.
+--
+-- 'kernelGatewayAppSettings', 'defaultSpaceSettings_kernelGatewayAppSettings' - Undocumented member.
+--
+-- 'securityGroups', 'defaultSpaceSettings_securityGroups' - The security groups for the Amazon Virtual Private Cloud that the space
+-- uses for communication.
+newDefaultSpaceSettings ::
+  DefaultSpaceSettings
+newDefaultSpaceSettings =
+  DefaultSpaceSettings'
+    { executionRole =
+        Prelude.Nothing,
+      jupyterServerAppSettings = Prelude.Nothing,
+      kernelGatewayAppSettings = Prelude.Nothing,
+      securityGroups = Prelude.Nothing
+    }
+
+-- | The execution role for the space.
+defaultSpaceSettings_executionRole :: Lens.Lens' DefaultSpaceSettings (Prelude.Maybe Prelude.Text)
+defaultSpaceSettings_executionRole = Lens.lens (\DefaultSpaceSettings' {executionRole} -> executionRole) (\s@DefaultSpaceSettings' {} a -> s {executionRole = a} :: DefaultSpaceSettings)
+
+-- | Undocumented member.
+defaultSpaceSettings_jupyterServerAppSettings :: Lens.Lens' DefaultSpaceSettings (Prelude.Maybe JupyterServerAppSettings)
+defaultSpaceSettings_jupyterServerAppSettings = Lens.lens (\DefaultSpaceSettings' {jupyterServerAppSettings} -> jupyterServerAppSettings) (\s@DefaultSpaceSettings' {} a -> s {jupyterServerAppSettings = a} :: DefaultSpaceSettings)
+
+-- | Undocumented member.
+defaultSpaceSettings_kernelGatewayAppSettings :: Lens.Lens' DefaultSpaceSettings (Prelude.Maybe KernelGatewayAppSettings)
+defaultSpaceSettings_kernelGatewayAppSettings = Lens.lens (\DefaultSpaceSettings' {kernelGatewayAppSettings} -> kernelGatewayAppSettings) (\s@DefaultSpaceSettings' {} a -> s {kernelGatewayAppSettings = a} :: DefaultSpaceSettings)
+
+-- | The security groups for the Amazon Virtual Private Cloud that the space
+-- uses for communication.
+defaultSpaceSettings_securityGroups :: Lens.Lens' DefaultSpaceSettings (Prelude.Maybe [Prelude.Text])
+defaultSpaceSettings_securityGroups = Lens.lens (\DefaultSpaceSettings' {securityGroups} -> securityGroups) (\s@DefaultSpaceSettings' {} a -> s {securityGroups = a} :: DefaultSpaceSettings) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DefaultSpaceSettings where
+  parseJSON =
+    Data.withObject
+      "DefaultSpaceSettings"
+      ( \x ->
+          DefaultSpaceSettings'
+            Prelude.<$> (x Data..:? "ExecutionRole")
+            Prelude.<*> (x Data..:? "JupyterServerAppSettings")
+            Prelude.<*> (x Data..:? "KernelGatewayAppSettings")
+            Prelude.<*> ( x
+                            Data..:? "SecurityGroups"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DefaultSpaceSettings where
+  hashWithSalt _salt DefaultSpaceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` executionRole
+      `Prelude.hashWithSalt` jupyterServerAppSettings
+      `Prelude.hashWithSalt` kernelGatewayAppSettings
+      `Prelude.hashWithSalt` securityGroups
+
+instance Prelude.NFData DefaultSpaceSettings where
+  rnf DefaultSpaceSettings' {..} =
+    Prelude.rnf executionRole
+      `Prelude.seq` Prelude.rnf jupyterServerAppSettings
+      `Prelude.seq` Prelude.rnf kernelGatewayAppSettings
+      `Prelude.seq` Prelude.rnf securityGroups
+
+instance Data.ToJSON DefaultSpaceSettings where
+  toJSON DefaultSpaceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExecutionRole" Data..=) Prelude.<$> executionRole,
+            ("JupyterServerAppSettings" Data..=)
+              Prelude.<$> jupyterServerAppSettings,
+            ("KernelGatewayAppSettings" Data..=)
+              Prelude.<$> kernelGatewayAppSettings,
+            ("SecurityGroups" Data..=)
+              Prelude.<$> securityGroups
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DeployedImage.hs b/gen/Amazonka/SageMaker/Types/DeployedImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeployedImage.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeployedImage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeployedImage 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
+
+-- | Gets the Amazon EC2 Container Registry path of the docker image of the
+-- model that is hosted in this ProductionVariant.
+--
+-- If you used the @registry\/repository[:tag]@ form to specify the image
+-- path of the primary container when you created the model hosted in this
+-- @ProductionVariant@, the path resolves to a path of the form
+-- @registry\/repository[\@digest]@. A digest is a hash value that
+-- identifies a specific version of an image. For information about Amazon
+-- ECR paths, see
+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html Pulling an Image>
+-- in the /Amazon ECR User Guide/.
+--
+-- /See:/ 'newDeployedImage' smart constructor.
+data DeployedImage = DeployedImage'
+  { -- | The date and time when the image path for the model resolved to the
+    -- @ResolvedImage@
+    resolutionTime :: Prelude.Maybe Data.POSIX,
+    -- | The specific digest path of the image hosted in this
+    -- @ProductionVariant@.
+    resolvedImage :: Prelude.Maybe Prelude.Text,
+    -- | The image path you specified when you created the model.
+    specifiedImage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeployedImage' 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:
+--
+-- 'resolutionTime', 'deployedImage_resolutionTime' - The date and time when the image path for the model resolved to the
+-- @ResolvedImage@
+--
+-- 'resolvedImage', 'deployedImage_resolvedImage' - The specific digest path of the image hosted in this
+-- @ProductionVariant@.
+--
+-- 'specifiedImage', 'deployedImage_specifiedImage' - The image path you specified when you created the model.
+newDeployedImage ::
+  DeployedImage
+newDeployedImage =
+  DeployedImage'
+    { resolutionTime = Prelude.Nothing,
+      resolvedImage = Prelude.Nothing,
+      specifiedImage = Prelude.Nothing
+    }
+
+-- | The date and time when the image path for the model resolved to the
+-- @ResolvedImage@
+deployedImage_resolutionTime :: Lens.Lens' DeployedImage (Prelude.Maybe Prelude.UTCTime)
+deployedImage_resolutionTime = Lens.lens (\DeployedImage' {resolutionTime} -> resolutionTime) (\s@DeployedImage' {} a -> s {resolutionTime = a} :: DeployedImage) Prelude.. Lens.mapping Data._Time
+
+-- | The specific digest path of the image hosted in this
+-- @ProductionVariant@.
+deployedImage_resolvedImage :: Lens.Lens' DeployedImage (Prelude.Maybe Prelude.Text)
+deployedImage_resolvedImage = Lens.lens (\DeployedImage' {resolvedImage} -> resolvedImage) (\s@DeployedImage' {} a -> s {resolvedImage = a} :: DeployedImage)
+
+-- | The image path you specified when you created the model.
+deployedImage_specifiedImage :: Lens.Lens' DeployedImage (Prelude.Maybe Prelude.Text)
+deployedImage_specifiedImage = Lens.lens (\DeployedImage' {specifiedImage} -> specifiedImage) (\s@DeployedImage' {} a -> s {specifiedImage = a} :: DeployedImage)
+
+instance Data.FromJSON DeployedImage where
+  parseJSON =
+    Data.withObject
+      "DeployedImage"
+      ( \x ->
+          DeployedImage'
+            Prelude.<$> (x Data..:? "ResolutionTime")
+            Prelude.<*> (x Data..:? "ResolvedImage")
+            Prelude.<*> (x Data..:? "SpecifiedImage")
+      )
+
+instance Prelude.Hashable DeployedImage where
+  hashWithSalt _salt DeployedImage' {..} =
+    _salt
+      `Prelude.hashWithSalt` resolutionTime
+      `Prelude.hashWithSalt` resolvedImage
+      `Prelude.hashWithSalt` specifiedImage
+
+instance Prelude.NFData DeployedImage where
+  rnf DeployedImage' {..} =
+    Prelude.rnf resolutionTime
+      `Prelude.seq` Prelude.rnf resolvedImage
+      `Prelude.seq` Prelude.rnf specifiedImage
diff --git a/gen/Amazonka/SageMaker/Types/DeploymentConfig.hs b/gen/Amazonka/SageMaker/Types/DeploymentConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeploymentConfig.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeploymentConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeploymentConfig 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 Amazonka.SageMaker.Types.AutoRollbackConfig
+import Amazonka.SageMaker.Types.BlueGreenUpdatePolicy
+
+-- | The deployment configuration for an endpoint, which contains the desired
+-- deployment strategy and rollback configurations.
+--
+-- /See:/ 'newDeploymentConfig' smart constructor.
+data DeploymentConfig = DeploymentConfig'
+  { -- | Automatic rollback configuration for handling endpoint deployment
+    -- failures and recovery.
+    autoRollbackConfiguration :: Prelude.Maybe AutoRollbackConfig,
+    -- | Update policy for a blue\/green deployment. If this update policy is
+    -- specified, SageMaker creates a new fleet during the deployment while
+    -- maintaining the old fleet. SageMaker flips traffic to the new fleet
+    -- according to the specified traffic routing configuration. Only one
+    -- update policy should be used in the deployment configuration. If no
+    -- update policy is specified, SageMaker uses a blue\/green deployment
+    -- strategy with all at once traffic shifting by default.
+    blueGreenUpdatePolicy :: BlueGreenUpdatePolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeploymentConfig' 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:
+--
+-- 'autoRollbackConfiguration', 'deploymentConfig_autoRollbackConfiguration' - Automatic rollback configuration for handling endpoint deployment
+-- failures and recovery.
+--
+-- 'blueGreenUpdatePolicy', 'deploymentConfig_blueGreenUpdatePolicy' - Update policy for a blue\/green deployment. If this update policy is
+-- specified, SageMaker creates a new fleet during the deployment while
+-- maintaining the old fleet. SageMaker flips traffic to the new fleet
+-- according to the specified traffic routing configuration. Only one
+-- update policy should be used in the deployment configuration. If no
+-- update policy is specified, SageMaker uses a blue\/green deployment
+-- strategy with all at once traffic shifting by default.
+newDeploymentConfig ::
+  -- | 'blueGreenUpdatePolicy'
+  BlueGreenUpdatePolicy ->
+  DeploymentConfig
+newDeploymentConfig pBlueGreenUpdatePolicy_ =
+  DeploymentConfig'
+    { autoRollbackConfiguration =
+        Prelude.Nothing,
+      blueGreenUpdatePolicy = pBlueGreenUpdatePolicy_
+    }
+
+-- | Automatic rollback configuration for handling endpoint deployment
+-- failures and recovery.
+deploymentConfig_autoRollbackConfiguration :: Lens.Lens' DeploymentConfig (Prelude.Maybe AutoRollbackConfig)
+deploymentConfig_autoRollbackConfiguration = Lens.lens (\DeploymentConfig' {autoRollbackConfiguration} -> autoRollbackConfiguration) (\s@DeploymentConfig' {} a -> s {autoRollbackConfiguration = a} :: DeploymentConfig)
+
+-- | Update policy for a blue\/green deployment. If this update policy is
+-- specified, SageMaker creates a new fleet during the deployment while
+-- maintaining the old fleet. SageMaker flips traffic to the new fleet
+-- according to the specified traffic routing configuration. Only one
+-- update policy should be used in the deployment configuration. If no
+-- update policy is specified, SageMaker uses a blue\/green deployment
+-- strategy with all at once traffic shifting by default.
+deploymentConfig_blueGreenUpdatePolicy :: Lens.Lens' DeploymentConfig BlueGreenUpdatePolicy
+deploymentConfig_blueGreenUpdatePolicy = Lens.lens (\DeploymentConfig' {blueGreenUpdatePolicy} -> blueGreenUpdatePolicy) (\s@DeploymentConfig' {} a -> s {blueGreenUpdatePolicy = a} :: DeploymentConfig)
+
+instance Data.FromJSON DeploymentConfig where
+  parseJSON =
+    Data.withObject
+      "DeploymentConfig"
+      ( \x ->
+          DeploymentConfig'
+            Prelude.<$> (x Data..:? "AutoRollbackConfiguration")
+            Prelude.<*> (x Data..: "BlueGreenUpdatePolicy")
+      )
+
+instance Prelude.Hashable DeploymentConfig where
+  hashWithSalt _salt DeploymentConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoRollbackConfiguration
+      `Prelude.hashWithSalt` blueGreenUpdatePolicy
+
+instance Prelude.NFData DeploymentConfig where
+  rnf DeploymentConfig' {..} =
+    Prelude.rnf autoRollbackConfiguration
+      `Prelude.seq` Prelude.rnf blueGreenUpdatePolicy
+
+instance Data.ToJSON DeploymentConfig where
+  toJSON DeploymentConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoRollbackConfiguration" Data..=)
+              Prelude.<$> autoRollbackConfiguration,
+            Prelude.Just
+              ( "BlueGreenUpdatePolicy"
+                  Data..= blueGreenUpdatePolicy
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DeploymentStage.hs b/gen/Amazonka/SageMaker/Types/DeploymentStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeploymentStage.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeploymentStage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeploymentStage 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 Amazonka.SageMaker.Types.DeviceSelectionConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentConfig
+
+-- | Contains information about a stage in an edge deployment plan.
+--
+-- /See:/ 'newDeploymentStage' smart constructor.
+data DeploymentStage = DeploymentStage'
+  { -- | Configuration of the deployment details.
+    deploymentConfig :: Prelude.Maybe EdgeDeploymentConfig,
+    -- | The name of the stage.
+    stageName :: Prelude.Text,
+    -- | Configuration of the devices in the stage.
+    deviceSelectionConfig :: DeviceSelectionConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeploymentStage' 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:
+--
+-- 'deploymentConfig', 'deploymentStage_deploymentConfig' - Configuration of the deployment details.
+--
+-- 'stageName', 'deploymentStage_stageName' - The name of the stage.
+--
+-- 'deviceSelectionConfig', 'deploymentStage_deviceSelectionConfig' - Configuration of the devices in the stage.
+newDeploymentStage ::
+  -- | 'stageName'
+  Prelude.Text ->
+  -- | 'deviceSelectionConfig'
+  DeviceSelectionConfig ->
+  DeploymentStage
+newDeploymentStage
+  pStageName_
+  pDeviceSelectionConfig_ =
+    DeploymentStage'
+      { deploymentConfig =
+          Prelude.Nothing,
+        stageName = pStageName_,
+        deviceSelectionConfig = pDeviceSelectionConfig_
+      }
+
+-- | Configuration of the deployment details.
+deploymentStage_deploymentConfig :: Lens.Lens' DeploymentStage (Prelude.Maybe EdgeDeploymentConfig)
+deploymentStage_deploymentConfig = Lens.lens (\DeploymentStage' {deploymentConfig} -> deploymentConfig) (\s@DeploymentStage' {} a -> s {deploymentConfig = a} :: DeploymentStage)
+
+-- | The name of the stage.
+deploymentStage_stageName :: Lens.Lens' DeploymentStage Prelude.Text
+deploymentStage_stageName = Lens.lens (\DeploymentStage' {stageName} -> stageName) (\s@DeploymentStage' {} a -> s {stageName = a} :: DeploymentStage)
+
+-- | Configuration of the devices in the stage.
+deploymentStage_deviceSelectionConfig :: Lens.Lens' DeploymentStage DeviceSelectionConfig
+deploymentStage_deviceSelectionConfig = Lens.lens (\DeploymentStage' {deviceSelectionConfig} -> deviceSelectionConfig) (\s@DeploymentStage' {} a -> s {deviceSelectionConfig = a} :: DeploymentStage)
+
+instance Prelude.Hashable DeploymentStage where
+  hashWithSalt _salt DeploymentStage' {..} =
+    _salt
+      `Prelude.hashWithSalt` deploymentConfig
+      `Prelude.hashWithSalt` stageName
+      `Prelude.hashWithSalt` deviceSelectionConfig
+
+instance Prelude.NFData DeploymentStage where
+  rnf DeploymentStage' {..} =
+    Prelude.rnf deploymentConfig
+      `Prelude.seq` Prelude.rnf stageName
+      `Prelude.seq` Prelude.rnf deviceSelectionConfig
+
+instance Data.ToJSON DeploymentStage where
+  toJSON DeploymentStage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeploymentConfig" Data..=)
+              Prelude.<$> deploymentConfig,
+            Prelude.Just ("StageName" Data..= stageName),
+            Prelude.Just
+              ( "DeviceSelectionConfig"
+                  Data..= deviceSelectionConfig
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DeploymentStageStatusSummary.hs b/gen/Amazonka/SageMaker/Types/DeploymentStageStatusSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeploymentStageStatusSummary.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeploymentStageStatusSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeploymentStageStatusSummary 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 Amazonka.SageMaker.Types.DeviceSelectionConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentConfig
+import Amazonka.SageMaker.Types.EdgeDeploymentStatus
+
+-- | Contains information summarizing the deployment stage results.
+--
+-- /See:/ 'newDeploymentStageStatusSummary' smart constructor.
+data DeploymentStageStatusSummary = DeploymentStageStatusSummary'
+  { -- | The name of the stage.
+    stageName :: Prelude.Text,
+    -- | Configuration of the devices in the stage.
+    deviceSelectionConfig :: DeviceSelectionConfig,
+    -- | Configuration of the deployment details.
+    deploymentConfig :: EdgeDeploymentConfig,
+    -- | General status of the current state.
+    deploymentStatus :: EdgeDeploymentStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeploymentStageStatusSummary' 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:
+--
+-- 'stageName', 'deploymentStageStatusSummary_stageName' - The name of the stage.
+--
+-- 'deviceSelectionConfig', 'deploymentStageStatusSummary_deviceSelectionConfig' - Configuration of the devices in the stage.
+--
+-- 'deploymentConfig', 'deploymentStageStatusSummary_deploymentConfig' - Configuration of the deployment details.
+--
+-- 'deploymentStatus', 'deploymentStageStatusSummary_deploymentStatus' - General status of the current state.
+newDeploymentStageStatusSummary ::
+  -- | 'stageName'
+  Prelude.Text ->
+  -- | 'deviceSelectionConfig'
+  DeviceSelectionConfig ->
+  -- | 'deploymentConfig'
+  EdgeDeploymentConfig ->
+  -- | 'deploymentStatus'
+  EdgeDeploymentStatus ->
+  DeploymentStageStatusSummary
+newDeploymentStageStatusSummary
+  pStageName_
+  pDeviceSelectionConfig_
+  pDeploymentConfig_
+  pDeploymentStatus_ =
+    DeploymentStageStatusSummary'
+      { stageName =
+          pStageName_,
+        deviceSelectionConfig =
+          pDeviceSelectionConfig_,
+        deploymentConfig = pDeploymentConfig_,
+        deploymentStatus = pDeploymentStatus_
+      }
+
+-- | The name of the stage.
+deploymentStageStatusSummary_stageName :: Lens.Lens' DeploymentStageStatusSummary Prelude.Text
+deploymentStageStatusSummary_stageName = Lens.lens (\DeploymentStageStatusSummary' {stageName} -> stageName) (\s@DeploymentStageStatusSummary' {} a -> s {stageName = a} :: DeploymentStageStatusSummary)
+
+-- | Configuration of the devices in the stage.
+deploymentStageStatusSummary_deviceSelectionConfig :: Lens.Lens' DeploymentStageStatusSummary DeviceSelectionConfig
+deploymentStageStatusSummary_deviceSelectionConfig = Lens.lens (\DeploymentStageStatusSummary' {deviceSelectionConfig} -> deviceSelectionConfig) (\s@DeploymentStageStatusSummary' {} a -> s {deviceSelectionConfig = a} :: DeploymentStageStatusSummary)
+
+-- | Configuration of the deployment details.
+deploymentStageStatusSummary_deploymentConfig :: Lens.Lens' DeploymentStageStatusSummary EdgeDeploymentConfig
+deploymentStageStatusSummary_deploymentConfig = Lens.lens (\DeploymentStageStatusSummary' {deploymentConfig} -> deploymentConfig) (\s@DeploymentStageStatusSummary' {} a -> s {deploymentConfig = a} :: DeploymentStageStatusSummary)
+
+-- | General status of the current state.
+deploymentStageStatusSummary_deploymentStatus :: Lens.Lens' DeploymentStageStatusSummary EdgeDeploymentStatus
+deploymentStageStatusSummary_deploymentStatus = Lens.lens (\DeploymentStageStatusSummary' {deploymentStatus} -> deploymentStatus) (\s@DeploymentStageStatusSummary' {} a -> s {deploymentStatus = a} :: DeploymentStageStatusSummary)
+
+instance Data.FromJSON DeploymentStageStatusSummary where
+  parseJSON =
+    Data.withObject
+      "DeploymentStageStatusSummary"
+      ( \x ->
+          DeploymentStageStatusSummary'
+            Prelude.<$> (x Data..: "StageName")
+            Prelude.<*> (x Data..: "DeviceSelectionConfig")
+            Prelude.<*> (x Data..: "DeploymentConfig")
+            Prelude.<*> (x Data..: "DeploymentStatus")
+      )
+
+instance
+  Prelude.Hashable
+    DeploymentStageStatusSummary
+  where
+  hashWithSalt _salt DeploymentStageStatusSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` stageName
+      `Prelude.hashWithSalt` deviceSelectionConfig
+      `Prelude.hashWithSalt` deploymentConfig
+      `Prelude.hashWithSalt` deploymentStatus
+
+instance Prelude.NFData DeploymentStageStatusSummary where
+  rnf DeploymentStageStatusSummary' {..} =
+    Prelude.rnf stageName
+      `Prelude.seq` Prelude.rnf deviceSelectionConfig
+      `Prelude.seq` Prelude.rnf deploymentConfig
+      `Prelude.seq` Prelude.rnf deploymentStatus
diff --git a/gen/Amazonka/SageMaker/Types/DesiredWeightAndCapacity.hs b/gen/Amazonka/SageMaker/Types/DesiredWeightAndCapacity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DesiredWeightAndCapacity.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DesiredWeightAndCapacity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DesiredWeightAndCapacity 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
+
+-- | Specifies weight and capacity values for a production variant.
+--
+-- /See:/ 'newDesiredWeightAndCapacity' smart constructor.
+data DesiredWeightAndCapacity = DesiredWeightAndCapacity'
+  { -- | The variant\'s capacity.
+    desiredInstanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The variant\'s weight.
+    desiredWeight :: Prelude.Maybe Prelude.Double,
+    -- | The name of the variant to update.
+    variantName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DesiredWeightAndCapacity' 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:
+--
+-- 'desiredInstanceCount', 'desiredWeightAndCapacity_desiredInstanceCount' - The variant\'s capacity.
+--
+-- 'desiredWeight', 'desiredWeightAndCapacity_desiredWeight' - The variant\'s weight.
+--
+-- 'variantName', 'desiredWeightAndCapacity_variantName' - The name of the variant to update.
+newDesiredWeightAndCapacity ::
+  -- | 'variantName'
+  Prelude.Text ->
+  DesiredWeightAndCapacity
+newDesiredWeightAndCapacity pVariantName_ =
+  DesiredWeightAndCapacity'
+    { desiredInstanceCount =
+        Prelude.Nothing,
+      desiredWeight = Prelude.Nothing,
+      variantName = pVariantName_
+    }
+
+-- | The variant\'s capacity.
+desiredWeightAndCapacity_desiredInstanceCount :: Lens.Lens' DesiredWeightAndCapacity (Prelude.Maybe Prelude.Natural)
+desiredWeightAndCapacity_desiredInstanceCount = Lens.lens (\DesiredWeightAndCapacity' {desiredInstanceCount} -> desiredInstanceCount) (\s@DesiredWeightAndCapacity' {} a -> s {desiredInstanceCount = a} :: DesiredWeightAndCapacity)
+
+-- | The variant\'s weight.
+desiredWeightAndCapacity_desiredWeight :: Lens.Lens' DesiredWeightAndCapacity (Prelude.Maybe Prelude.Double)
+desiredWeightAndCapacity_desiredWeight = Lens.lens (\DesiredWeightAndCapacity' {desiredWeight} -> desiredWeight) (\s@DesiredWeightAndCapacity' {} a -> s {desiredWeight = a} :: DesiredWeightAndCapacity)
+
+-- | The name of the variant to update.
+desiredWeightAndCapacity_variantName :: Lens.Lens' DesiredWeightAndCapacity Prelude.Text
+desiredWeightAndCapacity_variantName = Lens.lens (\DesiredWeightAndCapacity' {variantName} -> variantName) (\s@DesiredWeightAndCapacity' {} a -> s {variantName = a} :: DesiredWeightAndCapacity)
+
+instance Prelude.Hashable DesiredWeightAndCapacity where
+  hashWithSalt _salt DesiredWeightAndCapacity' {..} =
+    _salt
+      `Prelude.hashWithSalt` desiredInstanceCount
+      `Prelude.hashWithSalt` desiredWeight
+      `Prelude.hashWithSalt` variantName
+
+instance Prelude.NFData DesiredWeightAndCapacity where
+  rnf DesiredWeightAndCapacity' {..} =
+    Prelude.rnf desiredInstanceCount
+      `Prelude.seq` Prelude.rnf desiredWeight
+      `Prelude.seq` Prelude.rnf variantName
+
+instance Data.ToJSON DesiredWeightAndCapacity where
+  toJSON DesiredWeightAndCapacity' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DesiredInstanceCount" Data..=)
+              Prelude.<$> desiredInstanceCount,
+            ("DesiredWeight" Data..=) Prelude.<$> desiredWeight,
+            Prelude.Just ("VariantName" Data..= variantName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DetailedAlgorithmStatus.hs b/gen/Amazonka/SageMaker/Types/DetailedAlgorithmStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DetailedAlgorithmStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DetailedAlgorithmStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DetailedAlgorithmStatus
+  ( DetailedAlgorithmStatus
+      ( ..,
+        DetailedAlgorithmStatus_Completed,
+        DetailedAlgorithmStatus_Failed,
+        DetailedAlgorithmStatus_InProgress,
+        DetailedAlgorithmStatus_NotStarted
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DetailedAlgorithmStatus = DetailedAlgorithmStatus'
+  { fromDetailedAlgorithmStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DetailedAlgorithmStatus_Completed :: DetailedAlgorithmStatus
+pattern DetailedAlgorithmStatus_Completed = DetailedAlgorithmStatus' "Completed"
+
+pattern DetailedAlgorithmStatus_Failed :: DetailedAlgorithmStatus
+pattern DetailedAlgorithmStatus_Failed = DetailedAlgorithmStatus' "Failed"
+
+pattern DetailedAlgorithmStatus_InProgress :: DetailedAlgorithmStatus
+pattern DetailedAlgorithmStatus_InProgress = DetailedAlgorithmStatus' "InProgress"
+
+pattern DetailedAlgorithmStatus_NotStarted :: DetailedAlgorithmStatus
+pattern DetailedAlgorithmStatus_NotStarted = DetailedAlgorithmStatus' "NotStarted"
+
+{-# COMPLETE
+  DetailedAlgorithmStatus_Completed,
+  DetailedAlgorithmStatus_Failed,
+  DetailedAlgorithmStatus_InProgress,
+  DetailedAlgorithmStatus_NotStarted,
+  DetailedAlgorithmStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/DetailedModelPackageStatus.hs b/gen/Amazonka/SageMaker/Types/DetailedModelPackageStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DetailedModelPackageStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DetailedModelPackageStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DetailedModelPackageStatus
+  ( DetailedModelPackageStatus
+      ( ..,
+        DetailedModelPackageStatus_Completed,
+        DetailedModelPackageStatus_Failed,
+        DetailedModelPackageStatus_InProgress,
+        DetailedModelPackageStatus_NotStarted
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DetailedModelPackageStatus = DetailedModelPackageStatus'
+  { fromDetailedModelPackageStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DetailedModelPackageStatus_Completed :: DetailedModelPackageStatus
+pattern DetailedModelPackageStatus_Completed = DetailedModelPackageStatus' "Completed"
+
+pattern DetailedModelPackageStatus_Failed :: DetailedModelPackageStatus
+pattern DetailedModelPackageStatus_Failed = DetailedModelPackageStatus' "Failed"
+
+pattern DetailedModelPackageStatus_InProgress :: DetailedModelPackageStatus
+pattern DetailedModelPackageStatus_InProgress = DetailedModelPackageStatus' "InProgress"
+
+pattern DetailedModelPackageStatus_NotStarted :: DetailedModelPackageStatus
+pattern DetailedModelPackageStatus_NotStarted = DetailedModelPackageStatus' "NotStarted"
+
+{-# COMPLETE
+  DetailedModelPackageStatus_Completed,
+  DetailedModelPackageStatus_Failed,
+  DetailedModelPackageStatus_InProgress,
+  DetailedModelPackageStatus_NotStarted,
+  DetailedModelPackageStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Device.hs b/gen/Amazonka/SageMaker/Types/Device.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Device.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Device
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Device 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
+
+-- | Information of a particular device.
+--
+-- /See:/ 'newDevice' smart constructor.
+data Device = Device'
+  { -- | Description of the device.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Amazon Web Services Internet of Things (IoT) object name.
+    iotThingName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the device.
+    deviceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Device' 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:
+--
+-- 'description', 'device_description' - Description of the device.
+--
+-- 'iotThingName', 'device_iotThingName' - Amazon Web Services Internet of Things (IoT) object name.
+--
+-- 'deviceName', 'device_deviceName' - The name of the device.
+newDevice ::
+  -- | 'deviceName'
+  Prelude.Text ->
+  Device
+newDevice pDeviceName_ =
+  Device'
+    { description = Prelude.Nothing,
+      iotThingName = Prelude.Nothing,
+      deviceName = pDeviceName_
+    }
+
+-- | Description of the device.
+device_description :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_description = Lens.lens (\Device' {description} -> description) (\s@Device' {} a -> s {description = a} :: Device)
+
+-- | Amazon Web Services Internet of Things (IoT) object name.
+device_iotThingName :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_iotThingName = Lens.lens (\Device' {iotThingName} -> iotThingName) (\s@Device' {} a -> s {iotThingName = a} :: Device)
+
+-- | The name of the device.
+device_deviceName :: Lens.Lens' Device Prelude.Text
+device_deviceName = Lens.lens (\Device' {deviceName} -> deviceName) (\s@Device' {} a -> s {deviceName = a} :: Device)
+
+instance Prelude.Hashable Device where
+  hashWithSalt _salt Device' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` iotThingName
+      `Prelude.hashWithSalt` deviceName
+
+instance Prelude.NFData Device where
+  rnf Device' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf iotThingName
+      `Prelude.seq` Prelude.rnf deviceName
+
+instance Data.ToJSON Device where
+  toJSON Device' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("IotThingName" Data..=) Prelude.<$> iotThingName,
+            Prelude.Just ("DeviceName" Data..= deviceName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DeviceDeploymentStatus.hs b/gen/Amazonka/SageMaker/Types/DeviceDeploymentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceDeploymentStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DeviceDeploymentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceDeploymentStatus
+  ( DeviceDeploymentStatus
+      ( ..,
+        DeviceDeploymentStatus_DEPLOYED,
+        DeviceDeploymentStatus_FAILED,
+        DeviceDeploymentStatus_INPROGRESS,
+        DeviceDeploymentStatus_READYTODEPLOY,
+        DeviceDeploymentStatus_STOPPED,
+        DeviceDeploymentStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceDeploymentStatus = DeviceDeploymentStatus'
+  { fromDeviceDeploymentStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeviceDeploymentStatus_DEPLOYED :: DeviceDeploymentStatus
+pattern DeviceDeploymentStatus_DEPLOYED = DeviceDeploymentStatus' "DEPLOYED"
+
+pattern DeviceDeploymentStatus_FAILED :: DeviceDeploymentStatus
+pattern DeviceDeploymentStatus_FAILED = DeviceDeploymentStatus' "FAILED"
+
+pattern DeviceDeploymentStatus_INPROGRESS :: DeviceDeploymentStatus
+pattern DeviceDeploymentStatus_INPROGRESS = DeviceDeploymentStatus' "INPROGRESS"
+
+pattern DeviceDeploymentStatus_READYTODEPLOY :: DeviceDeploymentStatus
+pattern DeviceDeploymentStatus_READYTODEPLOY = DeviceDeploymentStatus' "READYTODEPLOY"
+
+pattern DeviceDeploymentStatus_STOPPED :: DeviceDeploymentStatus
+pattern DeviceDeploymentStatus_STOPPED = DeviceDeploymentStatus' "STOPPED"
+
+pattern DeviceDeploymentStatus_STOPPING :: DeviceDeploymentStatus
+pattern DeviceDeploymentStatus_STOPPING = DeviceDeploymentStatus' "STOPPING"
+
+{-# COMPLETE
+  DeviceDeploymentStatus_DEPLOYED,
+  DeviceDeploymentStatus_FAILED,
+  DeviceDeploymentStatus_INPROGRESS,
+  DeviceDeploymentStatus_READYTODEPLOY,
+  DeviceDeploymentStatus_STOPPED,
+  DeviceDeploymentStatus_STOPPING,
+  DeviceDeploymentStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/DeviceDeploymentSummary.hs b/gen/Amazonka/SageMaker/Types/DeviceDeploymentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceDeploymentSummary.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeviceDeploymentSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceDeploymentSummary 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 Amazonka.SageMaker.Types.DeviceDeploymentStatus
+
+-- | Contains information summarizing device details and deployment status.
+--
+-- /See:/ 'newDeviceDeploymentSummary' smart constructor.
+data DeviceDeploymentSummary = DeviceDeploymentSummary'
+  { -- | The name of the deployed stage.
+    deployedStageName :: Prelude.Maybe Prelude.Text,
+    -- | The time when the deployment on the device started.
+    deploymentStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the device.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The deployment status of the device.
+    deviceDeploymentStatus :: Prelude.Maybe DeviceDeploymentStatus,
+    -- | The detailed error message for the deployoment status result.
+    deviceDeploymentStatusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The name of the fleet to which the device belongs to.
+    deviceFleetName :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the edge deployment plan.
+    edgeDeploymentPlanArn :: Prelude.Text,
+    -- | The name of the edge deployment plan.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | The name of the stage in the edge deployment plan.
+    stageName :: Prelude.Text,
+    -- | The name of the device.
+    deviceName :: Prelude.Text,
+    -- | The ARN of the device.
+    deviceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceDeploymentSummary' 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:
+--
+-- 'deployedStageName', 'deviceDeploymentSummary_deployedStageName' - The name of the deployed stage.
+--
+-- 'deploymentStartTime', 'deviceDeploymentSummary_deploymentStartTime' - The time when the deployment on the device started.
+--
+-- 'description', 'deviceDeploymentSummary_description' - The description of the device.
+--
+-- 'deviceDeploymentStatus', 'deviceDeploymentSummary_deviceDeploymentStatus' - The deployment status of the device.
+--
+-- 'deviceDeploymentStatusMessage', 'deviceDeploymentSummary_deviceDeploymentStatusMessage' - The detailed error message for the deployoment status result.
+--
+-- 'deviceFleetName', 'deviceDeploymentSummary_deviceFleetName' - The name of the fleet to which the device belongs to.
+--
+-- 'edgeDeploymentPlanArn', 'deviceDeploymentSummary_edgeDeploymentPlanArn' - The ARN of the edge deployment plan.
+--
+-- 'edgeDeploymentPlanName', 'deviceDeploymentSummary_edgeDeploymentPlanName' - The name of the edge deployment plan.
+--
+-- 'stageName', 'deviceDeploymentSummary_stageName' - The name of the stage in the edge deployment plan.
+--
+-- 'deviceName', 'deviceDeploymentSummary_deviceName' - The name of the device.
+--
+-- 'deviceArn', 'deviceDeploymentSummary_deviceArn' - The ARN of the device.
+newDeviceDeploymentSummary ::
+  -- | 'edgeDeploymentPlanArn'
+  Prelude.Text ->
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'stageName'
+  Prelude.Text ->
+  -- | 'deviceName'
+  Prelude.Text ->
+  -- | 'deviceArn'
+  Prelude.Text ->
+  DeviceDeploymentSummary
+newDeviceDeploymentSummary
+  pEdgeDeploymentPlanArn_
+  pEdgeDeploymentPlanName_
+  pStageName_
+  pDeviceName_
+  pDeviceArn_ =
+    DeviceDeploymentSummary'
+      { deployedStageName =
+          Prelude.Nothing,
+        deploymentStartTime = Prelude.Nothing,
+        description = Prelude.Nothing,
+        deviceDeploymentStatus = Prelude.Nothing,
+        deviceDeploymentStatusMessage = Prelude.Nothing,
+        deviceFleetName = Prelude.Nothing,
+        edgeDeploymentPlanArn = pEdgeDeploymentPlanArn_,
+        edgeDeploymentPlanName = pEdgeDeploymentPlanName_,
+        stageName = pStageName_,
+        deviceName = pDeviceName_,
+        deviceArn = pDeviceArn_
+      }
+
+-- | The name of the deployed stage.
+deviceDeploymentSummary_deployedStageName :: Lens.Lens' DeviceDeploymentSummary (Prelude.Maybe Prelude.Text)
+deviceDeploymentSummary_deployedStageName = Lens.lens (\DeviceDeploymentSummary' {deployedStageName} -> deployedStageName) (\s@DeviceDeploymentSummary' {} a -> s {deployedStageName = a} :: DeviceDeploymentSummary)
+
+-- | The time when the deployment on the device started.
+deviceDeploymentSummary_deploymentStartTime :: Lens.Lens' DeviceDeploymentSummary (Prelude.Maybe Prelude.UTCTime)
+deviceDeploymentSummary_deploymentStartTime = Lens.lens (\DeviceDeploymentSummary' {deploymentStartTime} -> deploymentStartTime) (\s@DeviceDeploymentSummary' {} a -> s {deploymentStartTime = a} :: DeviceDeploymentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the device.
+deviceDeploymentSummary_description :: Lens.Lens' DeviceDeploymentSummary (Prelude.Maybe Prelude.Text)
+deviceDeploymentSummary_description = Lens.lens (\DeviceDeploymentSummary' {description} -> description) (\s@DeviceDeploymentSummary' {} a -> s {description = a} :: DeviceDeploymentSummary)
+
+-- | The deployment status of the device.
+deviceDeploymentSummary_deviceDeploymentStatus :: Lens.Lens' DeviceDeploymentSummary (Prelude.Maybe DeviceDeploymentStatus)
+deviceDeploymentSummary_deviceDeploymentStatus = Lens.lens (\DeviceDeploymentSummary' {deviceDeploymentStatus} -> deviceDeploymentStatus) (\s@DeviceDeploymentSummary' {} a -> s {deviceDeploymentStatus = a} :: DeviceDeploymentSummary)
+
+-- | The detailed error message for the deployoment status result.
+deviceDeploymentSummary_deviceDeploymentStatusMessage :: Lens.Lens' DeviceDeploymentSummary (Prelude.Maybe Prelude.Text)
+deviceDeploymentSummary_deviceDeploymentStatusMessage = Lens.lens (\DeviceDeploymentSummary' {deviceDeploymentStatusMessage} -> deviceDeploymentStatusMessage) (\s@DeviceDeploymentSummary' {} a -> s {deviceDeploymentStatusMessage = a} :: DeviceDeploymentSummary)
+
+-- | The name of the fleet to which the device belongs to.
+deviceDeploymentSummary_deviceFleetName :: Lens.Lens' DeviceDeploymentSummary (Prelude.Maybe Prelude.Text)
+deviceDeploymentSummary_deviceFleetName = Lens.lens (\DeviceDeploymentSummary' {deviceFleetName} -> deviceFleetName) (\s@DeviceDeploymentSummary' {} a -> s {deviceFleetName = a} :: DeviceDeploymentSummary)
+
+-- | The ARN of the edge deployment plan.
+deviceDeploymentSummary_edgeDeploymentPlanArn :: Lens.Lens' DeviceDeploymentSummary Prelude.Text
+deviceDeploymentSummary_edgeDeploymentPlanArn = Lens.lens (\DeviceDeploymentSummary' {edgeDeploymentPlanArn} -> edgeDeploymentPlanArn) (\s@DeviceDeploymentSummary' {} a -> s {edgeDeploymentPlanArn = a} :: DeviceDeploymentSummary)
+
+-- | The name of the edge deployment plan.
+deviceDeploymentSummary_edgeDeploymentPlanName :: Lens.Lens' DeviceDeploymentSummary Prelude.Text
+deviceDeploymentSummary_edgeDeploymentPlanName = Lens.lens (\DeviceDeploymentSummary' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@DeviceDeploymentSummary' {} a -> s {edgeDeploymentPlanName = a} :: DeviceDeploymentSummary)
+
+-- | The name of the stage in the edge deployment plan.
+deviceDeploymentSummary_stageName :: Lens.Lens' DeviceDeploymentSummary Prelude.Text
+deviceDeploymentSummary_stageName = Lens.lens (\DeviceDeploymentSummary' {stageName} -> stageName) (\s@DeviceDeploymentSummary' {} a -> s {stageName = a} :: DeviceDeploymentSummary)
+
+-- | The name of the device.
+deviceDeploymentSummary_deviceName :: Lens.Lens' DeviceDeploymentSummary Prelude.Text
+deviceDeploymentSummary_deviceName = Lens.lens (\DeviceDeploymentSummary' {deviceName} -> deviceName) (\s@DeviceDeploymentSummary' {} a -> s {deviceName = a} :: DeviceDeploymentSummary)
+
+-- | The ARN of the device.
+deviceDeploymentSummary_deviceArn :: Lens.Lens' DeviceDeploymentSummary Prelude.Text
+deviceDeploymentSummary_deviceArn = Lens.lens (\DeviceDeploymentSummary' {deviceArn} -> deviceArn) (\s@DeviceDeploymentSummary' {} a -> s {deviceArn = a} :: DeviceDeploymentSummary)
+
+instance Data.FromJSON DeviceDeploymentSummary where
+  parseJSON =
+    Data.withObject
+      "DeviceDeploymentSummary"
+      ( \x ->
+          DeviceDeploymentSummary'
+            Prelude.<$> (x Data..:? "DeployedStageName")
+            Prelude.<*> (x Data..:? "DeploymentStartTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DeviceDeploymentStatus")
+            Prelude.<*> (x Data..:? "DeviceDeploymentStatusMessage")
+            Prelude.<*> (x Data..:? "DeviceFleetName")
+            Prelude.<*> (x Data..: "EdgeDeploymentPlanArn")
+            Prelude.<*> (x Data..: "EdgeDeploymentPlanName")
+            Prelude.<*> (x Data..: "StageName")
+            Prelude.<*> (x Data..: "DeviceName")
+            Prelude.<*> (x Data..: "DeviceArn")
+      )
+
+instance Prelude.Hashable DeviceDeploymentSummary where
+  hashWithSalt _salt DeviceDeploymentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` deployedStageName
+      `Prelude.hashWithSalt` deploymentStartTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` deviceDeploymentStatus
+      `Prelude.hashWithSalt` deviceDeploymentStatusMessage
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` edgeDeploymentPlanArn
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` stageName
+      `Prelude.hashWithSalt` deviceName
+      `Prelude.hashWithSalt` deviceArn
+
+instance Prelude.NFData DeviceDeploymentSummary where
+  rnf DeviceDeploymentSummary' {..} =
+    Prelude.rnf deployedStageName
+      `Prelude.seq` Prelude.rnf deploymentStartTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf deviceDeploymentStatus
+      `Prelude.seq` Prelude.rnf deviceDeploymentStatusMessage
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanArn
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf stageName
+      `Prelude.seq` Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceArn
diff --git a/gen/Amazonka/SageMaker/Types/DeviceFleetSummary.hs b/gen/Amazonka/SageMaker/Types/DeviceFleetSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceFleetSummary.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeviceFleetSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceFleetSummary 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
+
+-- | Summary of the device fleet.
+--
+-- /See:/ 'newDeviceFleetSummary' smart constructor.
+data DeviceFleetSummary = DeviceFleetSummary'
+  { -- | Timestamp of when the device fleet was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | Timestamp of when the device fleet was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | Amazon Resource Name (ARN) of the device fleet.
+    deviceFleetArn :: Prelude.Text,
+    -- | Name of the device fleet.
+    deviceFleetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceFleetSummary' 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:
+--
+-- 'creationTime', 'deviceFleetSummary_creationTime' - Timestamp of when the device fleet was created.
+--
+-- 'lastModifiedTime', 'deviceFleetSummary_lastModifiedTime' - Timestamp of when the device fleet was last updated.
+--
+-- 'deviceFleetArn', 'deviceFleetSummary_deviceFleetArn' - Amazon Resource Name (ARN) of the device fleet.
+--
+-- 'deviceFleetName', 'deviceFleetSummary_deviceFleetName' - Name of the device fleet.
+newDeviceFleetSummary ::
+  -- | 'deviceFleetArn'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  DeviceFleetSummary
+newDeviceFleetSummary
+  pDeviceFleetArn_
+  pDeviceFleetName_ =
+    DeviceFleetSummary'
+      { creationTime = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        deviceFleetArn = pDeviceFleetArn_,
+        deviceFleetName = pDeviceFleetName_
+      }
+
+-- | Timestamp of when the device fleet was created.
+deviceFleetSummary_creationTime :: Lens.Lens' DeviceFleetSummary (Prelude.Maybe Prelude.UTCTime)
+deviceFleetSummary_creationTime = Lens.lens (\DeviceFleetSummary' {creationTime} -> creationTime) (\s@DeviceFleetSummary' {} a -> s {creationTime = a} :: DeviceFleetSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Timestamp of when the device fleet was last updated.
+deviceFleetSummary_lastModifiedTime :: Lens.Lens' DeviceFleetSummary (Prelude.Maybe Prelude.UTCTime)
+deviceFleetSummary_lastModifiedTime = Lens.lens (\DeviceFleetSummary' {lastModifiedTime} -> lastModifiedTime) (\s@DeviceFleetSummary' {} a -> s {lastModifiedTime = a} :: DeviceFleetSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Amazon Resource Name (ARN) of the device fleet.
+deviceFleetSummary_deviceFleetArn :: Lens.Lens' DeviceFleetSummary Prelude.Text
+deviceFleetSummary_deviceFleetArn = Lens.lens (\DeviceFleetSummary' {deviceFleetArn} -> deviceFleetArn) (\s@DeviceFleetSummary' {} a -> s {deviceFleetArn = a} :: DeviceFleetSummary)
+
+-- | Name of the device fleet.
+deviceFleetSummary_deviceFleetName :: Lens.Lens' DeviceFleetSummary Prelude.Text
+deviceFleetSummary_deviceFleetName = Lens.lens (\DeviceFleetSummary' {deviceFleetName} -> deviceFleetName) (\s@DeviceFleetSummary' {} a -> s {deviceFleetName = a} :: DeviceFleetSummary)
+
+instance Data.FromJSON DeviceFleetSummary where
+  parseJSON =
+    Data.withObject
+      "DeviceFleetSummary"
+      ( \x ->
+          DeviceFleetSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..: "DeviceFleetArn")
+            Prelude.<*> (x Data..: "DeviceFleetName")
+      )
+
+instance Prelude.Hashable DeviceFleetSummary where
+  hashWithSalt _salt DeviceFleetSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` deviceFleetArn
+      `Prelude.hashWithSalt` deviceFleetName
+
+instance Prelude.NFData DeviceFleetSummary where
+  rnf DeviceFleetSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf deviceFleetArn
+      `Prelude.seq` Prelude.rnf deviceFleetName
diff --git a/gen/Amazonka/SageMaker/Types/DeviceSelectionConfig.hs b/gen/Amazonka/SageMaker/Types/DeviceSelectionConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceSelectionConfig.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeviceSelectionConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceSelectionConfig 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 Amazonka.SageMaker.Types.DeviceSubsetType
+
+-- | Contains information about the configurations of selected devices.
+--
+-- /See:/ 'newDeviceSelectionConfig' smart constructor.
+data DeviceSelectionConfig = DeviceSelectionConfig'
+  { -- | A filter to select devices with names containing this name.
+    deviceNameContains :: Prelude.Maybe Prelude.Text,
+    -- | List of devices chosen to deploy.
+    deviceNames :: Prelude.Maybe [Prelude.Text],
+    -- | Percentage of devices in the fleet to deploy to the current stage.
+    percentage :: Prelude.Maybe Prelude.Int,
+    -- | Type of device subsets to deploy to the current stage.
+    deviceSubsetType :: DeviceSubsetType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceSelectionConfig' 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:
+--
+-- 'deviceNameContains', 'deviceSelectionConfig_deviceNameContains' - A filter to select devices with names containing this name.
+--
+-- 'deviceNames', 'deviceSelectionConfig_deviceNames' - List of devices chosen to deploy.
+--
+-- 'percentage', 'deviceSelectionConfig_percentage' - Percentage of devices in the fleet to deploy to the current stage.
+--
+-- 'deviceSubsetType', 'deviceSelectionConfig_deviceSubsetType' - Type of device subsets to deploy to the current stage.
+newDeviceSelectionConfig ::
+  -- | 'deviceSubsetType'
+  DeviceSubsetType ->
+  DeviceSelectionConfig
+newDeviceSelectionConfig pDeviceSubsetType_ =
+  DeviceSelectionConfig'
+    { deviceNameContains =
+        Prelude.Nothing,
+      deviceNames = Prelude.Nothing,
+      percentage = Prelude.Nothing,
+      deviceSubsetType = pDeviceSubsetType_
+    }
+
+-- | A filter to select devices with names containing this name.
+deviceSelectionConfig_deviceNameContains :: Lens.Lens' DeviceSelectionConfig (Prelude.Maybe Prelude.Text)
+deviceSelectionConfig_deviceNameContains = Lens.lens (\DeviceSelectionConfig' {deviceNameContains} -> deviceNameContains) (\s@DeviceSelectionConfig' {} a -> s {deviceNameContains = a} :: DeviceSelectionConfig)
+
+-- | List of devices chosen to deploy.
+deviceSelectionConfig_deviceNames :: Lens.Lens' DeviceSelectionConfig (Prelude.Maybe [Prelude.Text])
+deviceSelectionConfig_deviceNames = Lens.lens (\DeviceSelectionConfig' {deviceNames} -> deviceNames) (\s@DeviceSelectionConfig' {} a -> s {deviceNames = a} :: DeviceSelectionConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Percentage of devices in the fleet to deploy to the current stage.
+deviceSelectionConfig_percentage :: Lens.Lens' DeviceSelectionConfig (Prelude.Maybe Prelude.Int)
+deviceSelectionConfig_percentage = Lens.lens (\DeviceSelectionConfig' {percentage} -> percentage) (\s@DeviceSelectionConfig' {} a -> s {percentage = a} :: DeviceSelectionConfig)
+
+-- | Type of device subsets to deploy to the current stage.
+deviceSelectionConfig_deviceSubsetType :: Lens.Lens' DeviceSelectionConfig DeviceSubsetType
+deviceSelectionConfig_deviceSubsetType = Lens.lens (\DeviceSelectionConfig' {deviceSubsetType} -> deviceSubsetType) (\s@DeviceSelectionConfig' {} a -> s {deviceSubsetType = a} :: DeviceSelectionConfig)
+
+instance Data.FromJSON DeviceSelectionConfig where
+  parseJSON =
+    Data.withObject
+      "DeviceSelectionConfig"
+      ( \x ->
+          DeviceSelectionConfig'
+            Prelude.<$> (x Data..:? "DeviceNameContains")
+            Prelude.<*> (x Data..:? "DeviceNames" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Percentage")
+            Prelude.<*> (x Data..: "DeviceSubsetType")
+      )
+
+instance Prelude.Hashable DeviceSelectionConfig where
+  hashWithSalt _salt DeviceSelectionConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceNameContains
+      `Prelude.hashWithSalt` deviceNames
+      `Prelude.hashWithSalt` percentage
+      `Prelude.hashWithSalt` deviceSubsetType
+
+instance Prelude.NFData DeviceSelectionConfig where
+  rnf DeviceSelectionConfig' {..} =
+    Prelude.rnf deviceNameContains
+      `Prelude.seq` Prelude.rnf deviceNames
+      `Prelude.seq` Prelude.rnf percentage
+      `Prelude.seq` Prelude.rnf deviceSubsetType
+
+instance Data.ToJSON DeviceSelectionConfig where
+  toJSON DeviceSelectionConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeviceNameContains" Data..=)
+              Prelude.<$> deviceNameContains,
+            ("DeviceNames" Data..=) Prelude.<$> deviceNames,
+            ("Percentage" Data..=) Prelude.<$> percentage,
+            Prelude.Just
+              ("DeviceSubsetType" Data..= deviceSubsetType)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DeviceStats.hs b/gen/Amazonka/SageMaker/Types/DeviceStats.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceStats.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeviceStats
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceStats 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
+
+-- | Status of devices.
+--
+-- /See:/ 'newDeviceStats' smart constructor.
+data DeviceStats = DeviceStats'
+  { -- | The number of devices connected with a heartbeat.
+    connectedDeviceCount :: Prelude.Integer,
+    -- | The number of registered devices.
+    registeredDeviceCount :: Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceStats' 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:
+--
+-- 'connectedDeviceCount', 'deviceStats_connectedDeviceCount' - The number of devices connected with a heartbeat.
+--
+-- 'registeredDeviceCount', 'deviceStats_registeredDeviceCount' - The number of registered devices.
+newDeviceStats ::
+  -- | 'connectedDeviceCount'
+  Prelude.Integer ->
+  -- | 'registeredDeviceCount'
+  Prelude.Integer ->
+  DeviceStats
+newDeviceStats
+  pConnectedDeviceCount_
+  pRegisteredDeviceCount_ =
+    DeviceStats'
+      { connectedDeviceCount =
+          pConnectedDeviceCount_,
+        registeredDeviceCount = pRegisteredDeviceCount_
+      }
+
+-- | The number of devices connected with a heartbeat.
+deviceStats_connectedDeviceCount :: Lens.Lens' DeviceStats Prelude.Integer
+deviceStats_connectedDeviceCount = Lens.lens (\DeviceStats' {connectedDeviceCount} -> connectedDeviceCount) (\s@DeviceStats' {} a -> s {connectedDeviceCount = a} :: DeviceStats)
+
+-- | The number of registered devices.
+deviceStats_registeredDeviceCount :: Lens.Lens' DeviceStats Prelude.Integer
+deviceStats_registeredDeviceCount = Lens.lens (\DeviceStats' {registeredDeviceCount} -> registeredDeviceCount) (\s@DeviceStats' {} a -> s {registeredDeviceCount = a} :: DeviceStats)
+
+instance Data.FromJSON DeviceStats where
+  parseJSON =
+    Data.withObject
+      "DeviceStats"
+      ( \x ->
+          DeviceStats'
+            Prelude.<$> (x Data..: "ConnectedDeviceCount")
+            Prelude.<*> (x Data..: "RegisteredDeviceCount")
+      )
+
+instance Prelude.Hashable DeviceStats where
+  hashWithSalt _salt DeviceStats' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectedDeviceCount
+      `Prelude.hashWithSalt` registeredDeviceCount
+
+instance Prelude.NFData DeviceStats where
+  rnf DeviceStats' {..} =
+    Prelude.rnf connectedDeviceCount
+      `Prelude.seq` Prelude.rnf registeredDeviceCount
diff --git a/gen/Amazonka/SageMaker/Types/DeviceSubsetType.hs b/gen/Amazonka/SageMaker/Types/DeviceSubsetType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceSubsetType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DeviceSubsetType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceSubsetType
+  ( DeviceSubsetType
+      ( ..,
+        DeviceSubsetType_NAMECONTAINS,
+        DeviceSubsetType_PERCENTAGE,
+        DeviceSubsetType_SELECTION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceSubsetType = DeviceSubsetType'
+  { fromDeviceSubsetType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeviceSubsetType_NAMECONTAINS :: DeviceSubsetType
+pattern DeviceSubsetType_NAMECONTAINS = DeviceSubsetType' "NAMECONTAINS"
+
+pattern DeviceSubsetType_PERCENTAGE :: DeviceSubsetType
+pattern DeviceSubsetType_PERCENTAGE = DeviceSubsetType' "PERCENTAGE"
+
+pattern DeviceSubsetType_SELECTION :: DeviceSubsetType
+pattern DeviceSubsetType_SELECTION = DeviceSubsetType' "SELECTION"
+
+{-# COMPLETE
+  DeviceSubsetType_NAMECONTAINS,
+  DeviceSubsetType_PERCENTAGE,
+  DeviceSubsetType_SELECTION,
+  DeviceSubsetType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/DeviceSummary.hs b/gen/Amazonka/SageMaker/Types/DeviceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DeviceSummary.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DeviceSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DeviceSummary 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 Amazonka.SageMaker.Types.EdgeModelSummary
+
+-- | Summary of the device.
+--
+-- /See:/ 'newDeviceSummary' smart constructor.
+data DeviceSummary = DeviceSummary'
+  { -- | Edge Manager agent version.
+    agentVersion :: Prelude.Maybe Prelude.Text,
+    -- | A description of the device.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the fleet the device belongs to.
+    deviceFleetName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Internet of Things (IoT) object thing name
+    -- associated with the device..
+    iotThingName :: Prelude.Maybe Prelude.Text,
+    -- | The last heartbeat received from the device.
+    latestHeartbeat :: Prelude.Maybe Data.POSIX,
+    -- | Models on the device.
+    models :: Prelude.Maybe [EdgeModelSummary],
+    -- | The timestamp of the last registration or de-reregistration.
+    registrationTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique identifier of the device.
+    deviceName :: Prelude.Text,
+    -- | Amazon Resource Name (ARN) of the device.
+    deviceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceSummary' 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:
+--
+-- 'agentVersion', 'deviceSummary_agentVersion' - Edge Manager agent version.
+--
+-- 'description', 'deviceSummary_description' - A description of the device.
+--
+-- 'deviceFleetName', 'deviceSummary_deviceFleetName' - The name of the fleet the device belongs to.
+--
+-- 'iotThingName', 'deviceSummary_iotThingName' - The Amazon Web Services Internet of Things (IoT) object thing name
+-- associated with the device..
+--
+-- 'latestHeartbeat', 'deviceSummary_latestHeartbeat' - The last heartbeat received from the device.
+--
+-- 'models', 'deviceSummary_models' - Models on the device.
+--
+-- 'registrationTime', 'deviceSummary_registrationTime' - The timestamp of the last registration or de-reregistration.
+--
+-- 'deviceName', 'deviceSummary_deviceName' - The unique identifier of the device.
+--
+-- 'deviceArn', 'deviceSummary_deviceArn' - Amazon Resource Name (ARN) of the device.
+newDeviceSummary ::
+  -- | 'deviceName'
+  Prelude.Text ->
+  -- | 'deviceArn'
+  Prelude.Text ->
+  DeviceSummary
+newDeviceSummary pDeviceName_ pDeviceArn_ =
+  DeviceSummary'
+    { agentVersion = Prelude.Nothing,
+      description = Prelude.Nothing,
+      deviceFleetName = Prelude.Nothing,
+      iotThingName = Prelude.Nothing,
+      latestHeartbeat = Prelude.Nothing,
+      models = Prelude.Nothing,
+      registrationTime = Prelude.Nothing,
+      deviceName = pDeviceName_,
+      deviceArn = pDeviceArn_
+    }
+
+-- | Edge Manager agent version.
+deviceSummary_agentVersion :: Lens.Lens' DeviceSummary (Prelude.Maybe Prelude.Text)
+deviceSummary_agentVersion = Lens.lens (\DeviceSummary' {agentVersion} -> agentVersion) (\s@DeviceSummary' {} a -> s {agentVersion = a} :: DeviceSummary)
+
+-- | A description of the device.
+deviceSummary_description :: Lens.Lens' DeviceSummary (Prelude.Maybe Prelude.Text)
+deviceSummary_description = Lens.lens (\DeviceSummary' {description} -> description) (\s@DeviceSummary' {} a -> s {description = a} :: DeviceSummary)
+
+-- | The name of the fleet the device belongs to.
+deviceSummary_deviceFleetName :: Lens.Lens' DeviceSummary (Prelude.Maybe Prelude.Text)
+deviceSummary_deviceFleetName = Lens.lens (\DeviceSummary' {deviceFleetName} -> deviceFleetName) (\s@DeviceSummary' {} a -> s {deviceFleetName = a} :: DeviceSummary)
+
+-- | The Amazon Web Services Internet of Things (IoT) object thing name
+-- associated with the device..
+deviceSummary_iotThingName :: Lens.Lens' DeviceSummary (Prelude.Maybe Prelude.Text)
+deviceSummary_iotThingName = Lens.lens (\DeviceSummary' {iotThingName} -> iotThingName) (\s@DeviceSummary' {} a -> s {iotThingName = a} :: DeviceSummary)
+
+-- | The last heartbeat received from the device.
+deviceSummary_latestHeartbeat :: Lens.Lens' DeviceSummary (Prelude.Maybe Prelude.UTCTime)
+deviceSummary_latestHeartbeat = Lens.lens (\DeviceSummary' {latestHeartbeat} -> latestHeartbeat) (\s@DeviceSummary' {} a -> s {latestHeartbeat = a} :: DeviceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Models on the device.
+deviceSummary_models :: Lens.Lens' DeviceSummary (Prelude.Maybe [EdgeModelSummary])
+deviceSummary_models = Lens.lens (\DeviceSummary' {models} -> models) (\s@DeviceSummary' {} a -> s {models = a} :: DeviceSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The timestamp of the last registration or de-reregistration.
+deviceSummary_registrationTime :: Lens.Lens' DeviceSummary (Prelude.Maybe Prelude.UTCTime)
+deviceSummary_registrationTime = Lens.lens (\DeviceSummary' {registrationTime} -> registrationTime) (\s@DeviceSummary' {} a -> s {registrationTime = a} :: DeviceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The unique identifier of the device.
+deviceSummary_deviceName :: Lens.Lens' DeviceSummary Prelude.Text
+deviceSummary_deviceName = Lens.lens (\DeviceSummary' {deviceName} -> deviceName) (\s@DeviceSummary' {} a -> s {deviceName = a} :: DeviceSummary)
+
+-- | Amazon Resource Name (ARN) of the device.
+deviceSummary_deviceArn :: Lens.Lens' DeviceSummary Prelude.Text
+deviceSummary_deviceArn = Lens.lens (\DeviceSummary' {deviceArn} -> deviceArn) (\s@DeviceSummary' {} a -> s {deviceArn = a} :: DeviceSummary)
+
+instance Data.FromJSON DeviceSummary where
+  parseJSON =
+    Data.withObject
+      "DeviceSummary"
+      ( \x ->
+          DeviceSummary'
+            Prelude.<$> (x Data..:? "AgentVersion")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DeviceFleetName")
+            Prelude.<*> (x Data..:? "IotThingName")
+            Prelude.<*> (x Data..:? "LatestHeartbeat")
+            Prelude.<*> (x Data..:? "Models" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RegistrationTime")
+            Prelude.<*> (x Data..: "DeviceName")
+            Prelude.<*> (x Data..: "DeviceArn")
+      )
+
+instance Prelude.Hashable DeviceSummary where
+  hashWithSalt _salt DeviceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` agentVersion
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` iotThingName
+      `Prelude.hashWithSalt` latestHeartbeat
+      `Prelude.hashWithSalt` models
+      `Prelude.hashWithSalt` registrationTime
+      `Prelude.hashWithSalt` deviceName
+      `Prelude.hashWithSalt` deviceArn
+
+instance Prelude.NFData DeviceSummary where
+  rnf DeviceSummary' {..} =
+    Prelude.rnf agentVersion
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf iotThingName
+      `Prelude.seq` Prelude.rnf latestHeartbeat
+      `Prelude.seq` Prelude.rnf models
+      `Prelude.seq` Prelude.rnf registrationTime
+      `Prelude.seq` Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceArn
diff --git a/gen/Amazonka/SageMaker/Types/DirectInternetAccess.hs b/gen/Amazonka/SageMaker/Types/DirectInternetAccess.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DirectInternetAccess.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DirectInternetAccess
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DirectInternetAccess
+  ( DirectInternetAccess
+      ( ..,
+        DirectInternetAccess_Disabled,
+        DirectInternetAccess_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DirectInternetAccess = DirectInternetAccess'
+  { fromDirectInternetAccess ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DirectInternetAccess_Disabled :: DirectInternetAccess
+pattern DirectInternetAccess_Disabled = DirectInternetAccess' "Disabled"
+
+pattern DirectInternetAccess_Enabled :: DirectInternetAccess
+pattern DirectInternetAccess_Enabled = DirectInternetAccess' "Enabled"
+
+{-# COMPLETE
+  DirectInternetAccess_Disabled,
+  DirectInternetAccess_Enabled,
+  DirectInternetAccess'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Direction.hs b/gen/Amazonka/SageMaker/Types/Direction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Direction.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.Direction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Direction
+  ( Direction
+      ( ..,
+        Direction_Ascendants,
+        Direction_Both,
+        Direction_Descendants
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Direction = Direction'
+  { fromDirection ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Direction_Ascendants :: Direction
+pattern Direction_Ascendants = Direction' "Ascendants"
+
+pattern Direction_Both :: Direction
+pattern Direction_Both = Direction' "Both"
+
+pattern Direction_Descendants :: Direction
+pattern Direction_Descendants = Direction' "Descendants"
+
+{-# COMPLETE
+  Direction_Ascendants,
+  Direction_Both,
+  Direction_Descendants,
+  Direction'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/DomainDetails.hs b/gen/Amazonka/SageMaker/Types/DomainDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DomainDetails.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DomainDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DomainDetails 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 Amazonka.SageMaker.Types.DomainStatus
+
+-- | The domain\'s details.
+--
+-- /See:/ 'newDomainDetails' smart constructor.
+data DomainDetails = DomainDetails'
+  { -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The domain\'s Amazon Resource Name (ARN).
+    domainArn :: Prelude.Maybe Prelude.Text,
+    -- | The domain ID.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The domain name.
+    domainName :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The status.
+    status :: Prelude.Maybe DomainStatus,
+    -- | The domain\'s URL.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DomainDetails' 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:
+--
+-- 'creationTime', 'domainDetails_creationTime' - The creation time.
+--
+-- 'domainArn', 'domainDetails_domainArn' - The domain\'s Amazon Resource Name (ARN).
+--
+-- 'domainId', 'domainDetails_domainId' - The domain ID.
+--
+-- 'domainName', 'domainDetails_domainName' - The domain name.
+--
+-- 'lastModifiedTime', 'domainDetails_lastModifiedTime' - The last modified time.
+--
+-- 'status', 'domainDetails_status' - The status.
+--
+-- 'url', 'domainDetails_url' - The domain\'s URL.
+newDomainDetails ::
+  DomainDetails
+newDomainDetails =
+  DomainDetails'
+    { creationTime = Prelude.Nothing,
+      domainArn = Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      domainName = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | The creation time.
+domainDetails_creationTime :: Lens.Lens' DomainDetails (Prelude.Maybe Prelude.UTCTime)
+domainDetails_creationTime = Lens.lens (\DomainDetails' {creationTime} -> creationTime) (\s@DomainDetails' {} a -> s {creationTime = a} :: DomainDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The domain\'s Amazon Resource Name (ARN).
+domainDetails_domainArn :: Lens.Lens' DomainDetails (Prelude.Maybe Prelude.Text)
+domainDetails_domainArn = Lens.lens (\DomainDetails' {domainArn} -> domainArn) (\s@DomainDetails' {} a -> s {domainArn = a} :: DomainDetails)
+
+-- | The domain ID.
+domainDetails_domainId :: Lens.Lens' DomainDetails (Prelude.Maybe Prelude.Text)
+domainDetails_domainId = Lens.lens (\DomainDetails' {domainId} -> domainId) (\s@DomainDetails' {} a -> s {domainId = a} :: DomainDetails)
+
+-- | The domain name.
+domainDetails_domainName :: Lens.Lens' DomainDetails (Prelude.Maybe Prelude.Text)
+domainDetails_domainName = Lens.lens (\DomainDetails' {domainName} -> domainName) (\s@DomainDetails' {} a -> s {domainName = a} :: DomainDetails)
+
+-- | The last modified time.
+domainDetails_lastModifiedTime :: Lens.Lens' DomainDetails (Prelude.Maybe Prelude.UTCTime)
+domainDetails_lastModifiedTime = Lens.lens (\DomainDetails' {lastModifiedTime} -> lastModifiedTime) (\s@DomainDetails' {} a -> s {lastModifiedTime = a} :: DomainDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The status.
+domainDetails_status :: Lens.Lens' DomainDetails (Prelude.Maybe DomainStatus)
+domainDetails_status = Lens.lens (\DomainDetails' {status} -> status) (\s@DomainDetails' {} a -> s {status = a} :: DomainDetails)
+
+-- | The domain\'s URL.
+domainDetails_url :: Lens.Lens' DomainDetails (Prelude.Maybe Prelude.Text)
+domainDetails_url = Lens.lens (\DomainDetails' {url} -> url) (\s@DomainDetails' {} a -> s {url = a} :: DomainDetails)
+
+instance Data.FromJSON DomainDetails where
+  parseJSON =
+    Data.withObject
+      "DomainDetails"
+      ( \x ->
+          DomainDetails'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DomainArn")
+            Prelude.<*> (x Data..:? "DomainId")
+            Prelude.<*> (x Data..:? "DomainName")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Url")
+      )
+
+instance Prelude.Hashable DomainDetails where
+  hashWithSalt _salt DomainDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` domainArn
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` domainName
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData DomainDetails where
+  rnf DomainDetails' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainArn
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf domainName
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf url
diff --git a/gen/Amazonka/SageMaker/Types/DomainSettings.hs b/gen/Amazonka/SageMaker/Types/DomainSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DomainSettings.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DomainSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DomainSettings 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 Amazonka.SageMaker.Types.ExecutionRoleIdentityConfig
+import Amazonka.SageMaker.Types.RStudioServerProDomainSettings
+
+-- | A collection of settings that apply to the @SageMaker Domain@. These
+-- settings are specified through the @CreateDomain@ API call.
+--
+-- /See:/ 'newDomainSettings' smart constructor.
+data DomainSettings = DomainSettings'
+  { -- | The configuration for attaching a SageMaker user profile name to the
+    -- execution role as a
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html sts:SourceIdentity key>.
+    executionRoleIdentityConfig :: Prelude.Maybe ExecutionRoleIdentityConfig,
+    -- | A collection of settings that configure the @RStudioServerPro@
+    -- Domain-level app.
+    rStudioServerProDomainSettings :: Prelude.Maybe RStudioServerProDomainSettings,
+    -- | The security groups for the Amazon Virtual Private Cloud that the
+    -- @Domain@ uses for communication between Domain-level apps and user apps.
+    securityGroupIds :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DomainSettings' 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:
+--
+-- 'executionRoleIdentityConfig', 'domainSettings_executionRoleIdentityConfig' - The configuration for attaching a SageMaker user profile name to the
+-- execution role as a
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html sts:SourceIdentity key>.
+--
+-- 'rStudioServerProDomainSettings', 'domainSettings_rStudioServerProDomainSettings' - A collection of settings that configure the @RStudioServerPro@
+-- Domain-level app.
+--
+-- 'securityGroupIds', 'domainSettings_securityGroupIds' - The security groups for the Amazon Virtual Private Cloud that the
+-- @Domain@ uses for communication between Domain-level apps and user apps.
+newDomainSettings ::
+  DomainSettings
+newDomainSettings =
+  DomainSettings'
+    { executionRoleIdentityConfig =
+        Prelude.Nothing,
+      rStudioServerProDomainSettings = Prelude.Nothing,
+      securityGroupIds = Prelude.Nothing
+    }
+
+-- | The configuration for attaching a SageMaker user profile name to the
+-- execution role as a
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html sts:SourceIdentity key>.
+domainSettings_executionRoleIdentityConfig :: Lens.Lens' DomainSettings (Prelude.Maybe ExecutionRoleIdentityConfig)
+domainSettings_executionRoleIdentityConfig = Lens.lens (\DomainSettings' {executionRoleIdentityConfig} -> executionRoleIdentityConfig) (\s@DomainSettings' {} a -> s {executionRoleIdentityConfig = a} :: DomainSettings)
+
+-- | A collection of settings that configure the @RStudioServerPro@
+-- Domain-level app.
+domainSettings_rStudioServerProDomainSettings :: Lens.Lens' DomainSettings (Prelude.Maybe RStudioServerProDomainSettings)
+domainSettings_rStudioServerProDomainSettings = Lens.lens (\DomainSettings' {rStudioServerProDomainSettings} -> rStudioServerProDomainSettings) (\s@DomainSettings' {} a -> s {rStudioServerProDomainSettings = a} :: DomainSettings)
+
+-- | The security groups for the Amazon Virtual Private Cloud that the
+-- @Domain@ uses for communication between Domain-level apps and user apps.
+domainSettings_securityGroupIds :: Lens.Lens' DomainSettings (Prelude.Maybe [Prelude.Text])
+domainSettings_securityGroupIds = Lens.lens (\DomainSettings' {securityGroupIds} -> securityGroupIds) (\s@DomainSettings' {} a -> s {securityGroupIds = a} :: DomainSettings) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DomainSettings where
+  parseJSON =
+    Data.withObject
+      "DomainSettings"
+      ( \x ->
+          DomainSettings'
+            Prelude.<$> (x Data..:? "ExecutionRoleIdentityConfig")
+            Prelude.<*> (x Data..:? "RStudioServerProDomainSettings")
+            Prelude.<*> ( x
+                            Data..:? "SecurityGroupIds"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable DomainSettings where
+  hashWithSalt _salt DomainSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` executionRoleIdentityConfig
+      `Prelude.hashWithSalt` rStudioServerProDomainSettings
+      `Prelude.hashWithSalt` securityGroupIds
+
+instance Prelude.NFData DomainSettings where
+  rnf DomainSettings' {..} =
+    Prelude.rnf executionRoleIdentityConfig
+      `Prelude.seq` Prelude.rnf rStudioServerProDomainSettings
+      `Prelude.seq` Prelude.rnf securityGroupIds
+
+instance Data.ToJSON DomainSettings where
+  toJSON DomainSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExecutionRoleIdentityConfig" Data..=)
+              Prelude.<$> executionRoleIdentityConfig,
+            ("RStudioServerProDomainSettings" Data..=)
+              Prelude.<$> rStudioServerProDomainSettings,
+            ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DomainSettingsForUpdate.hs b/gen/Amazonka/SageMaker/Types/DomainSettingsForUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DomainSettingsForUpdate.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DomainSettingsForUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DomainSettingsForUpdate 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 Amazonka.SageMaker.Types.ExecutionRoleIdentityConfig
+import Amazonka.SageMaker.Types.RStudioServerProDomainSettingsForUpdate
+
+-- | A collection of @Domain@ configuration settings to update.
+--
+-- /See:/ 'newDomainSettingsForUpdate' smart constructor.
+data DomainSettingsForUpdate = DomainSettingsForUpdate'
+  { -- | The configuration for attaching a SageMaker user profile name to the
+    -- execution role as a
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html sts:SourceIdentity key>.
+    -- This configuration can only be modified if there are no apps in the
+    -- @InService@ or @Pending@ state.
+    executionRoleIdentityConfig :: Prelude.Maybe ExecutionRoleIdentityConfig,
+    -- | A collection of @RStudioServerPro@ Domain-level app settings to update.
+    rStudioServerProDomainSettingsForUpdate :: Prelude.Maybe RStudioServerProDomainSettingsForUpdate,
+    -- | The security groups for the Amazon Virtual Private Cloud that the
+    -- @Domain@ uses for communication between Domain-level apps and user apps.
+    securityGroupIds :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DomainSettingsForUpdate' 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:
+--
+-- 'executionRoleIdentityConfig', 'domainSettingsForUpdate_executionRoleIdentityConfig' - The configuration for attaching a SageMaker user profile name to the
+-- execution role as a
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html sts:SourceIdentity key>.
+-- This configuration can only be modified if there are no apps in the
+-- @InService@ or @Pending@ state.
+--
+-- 'rStudioServerProDomainSettingsForUpdate', 'domainSettingsForUpdate_rStudioServerProDomainSettingsForUpdate' - A collection of @RStudioServerPro@ Domain-level app settings to update.
+--
+-- 'securityGroupIds', 'domainSettingsForUpdate_securityGroupIds' - The security groups for the Amazon Virtual Private Cloud that the
+-- @Domain@ uses for communication between Domain-level apps and user apps.
+newDomainSettingsForUpdate ::
+  DomainSettingsForUpdate
+newDomainSettingsForUpdate =
+  DomainSettingsForUpdate'
+    { executionRoleIdentityConfig =
+        Prelude.Nothing,
+      rStudioServerProDomainSettingsForUpdate =
+        Prelude.Nothing,
+      securityGroupIds = Prelude.Nothing
+    }
+
+-- | The configuration for attaching a SageMaker user profile name to the
+-- execution role as a
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html sts:SourceIdentity key>.
+-- This configuration can only be modified if there are no apps in the
+-- @InService@ or @Pending@ state.
+domainSettingsForUpdate_executionRoleIdentityConfig :: Lens.Lens' DomainSettingsForUpdate (Prelude.Maybe ExecutionRoleIdentityConfig)
+domainSettingsForUpdate_executionRoleIdentityConfig = Lens.lens (\DomainSettingsForUpdate' {executionRoleIdentityConfig} -> executionRoleIdentityConfig) (\s@DomainSettingsForUpdate' {} a -> s {executionRoleIdentityConfig = a} :: DomainSettingsForUpdate)
+
+-- | A collection of @RStudioServerPro@ Domain-level app settings to update.
+domainSettingsForUpdate_rStudioServerProDomainSettingsForUpdate :: Lens.Lens' DomainSettingsForUpdate (Prelude.Maybe RStudioServerProDomainSettingsForUpdate)
+domainSettingsForUpdate_rStudioServerProDomainSettingsForUpdate = Lens.lens (\DomainSettingsForUpdate' {rStudioServerProDomainSettingsForUpdate} -> rStudioServerProDomainSettingsForUpdate) (\s@DomainSettingsForUpdate' {} a -> s {rStudioServerProDomainSettingsForUpdate = a} :: DomainSettingsForUpdate)
+
+-- | The security groups for the Amazon Virtual Private Cloud that the
+-- @Domain@ uses for communication between Domain-level apps and user apps.
+domainSettingsForUpdate_securityGroupIds :: Lens.Lens' DomainSettingsForUpdate (Prelude.Maybe [Prelude.Text])
+domainSettingsForUpdate_securityGroupIds = Lens.lens (\DomainSettingsForUpdate' {securityGroupIds} -> securityGroupIds) (\s@DomainSettingsForUpdate' {} a -> s {securityGroupIds = a} :: DomainSettingsForUpdate) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable DomainSettingsForUpdate where
+  hashWithSalt _salt DomainSettingsForUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` executionRoleIdentityConfig
+      `Prelude.hashWithSalt` rStudioServerProDomainSettingsForUpdate
+      `Prelude.hashWithSalt` securityGroupIds
+
+instance Prelude.NFData DomainSettingsForUpdate where
+  rnf DomainSettingsForUpdate' {..} =
+    Prelude.rnf executionRoleIdentityConfig
+      `Prelude.seq` Prelude.rnf rStudioServerProDomainSettingsForUpdate
+      `Prelude.seq` Prelude.rnf securityGroupIds
+
+instance Data.ToJSON DomainSettingsForUpdate where
+  toJSON DomainSettingsForUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExecutionRoleIdentityConfig" Data..=)
+              Prelude.<$> executionRoleIdentityConfig,
+            ("RStudioServerProDomainSettingsForUpdate" Data..=)
+              Prelude.<$> rStudioServerProDomainSettingsForUpdate,
+            ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DomainStatus.hs b/gen/Amazonka/SageMaker/Types/DomainStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DomainStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.DomainStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DomainStatus
+  ( DomainStatus
+      ( ..,
+        DomainStatus_Delete_Failed,
+        DomainStatus_Deleting,
+        DomainStatus_Failed,
+        DomainStatus_InService,
+        DomainStatus_Pending,
+        DomainStatus_Update_Failed,
+        DomainStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DomainStatus = DomainStatus'
+  { fromDomainStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DomainStatus_Delete_Failed :: DomainStatus
+pattern DomainStatus_Delete_Failed = DomainStatus' "Delete_Failed"
+
+pattern DomainStatus_Deleting :: DomainStatus
+pattern DomainStatus_Deleting = DomainStatus' "Deleting"
+
+pattern DomainStatus_Failed :: DomainStatus
+pattern DomainStatus_Failed = DomainStatus' "Failed"
+
+pattern DomainStatus_InService :: DomainStatus
+pattern DomainStatus_InService = DomainStatus' "InService"
+
+pattern DomainStatus_Pending :: DomainStatus
+pattern DomainStatus_Pending = DomainStatus' "Pending"
+
+pattern DomainStatus_Update_Failed :: DomainStatus
+pattern DomainStatus_Update_Failed = DomainStatus' "Update_Failed"
+
+pattern DomainStatus_Updating :: DomainStatus
+pattern DomainStatus_Updating = DomainStatus' "Updating"
+
+{-# COMPLETE
+  DomainStatus_Delete_Failed,
+  DomainStatus_Deleting,
+  DomainStatus_Failed,
+  DomainStatus_InService,
+  DomainStatus_Pending,
+  DomainStatus_Update_Failed,
+  DomainStatus_Updating,
+  DomainStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/DriftCheckBaselines.hs b/gen/Amazonka/SageMaker/Types/DriftCheckBaselines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DriftCheckBaselines.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DriftCheckBaselines
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DriftCheckBaselines 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 Amazonka.SageMaker.Types.DriftCheckBias
+import Amazonka.SageMaker.Types.DriftCheckExplainability
+import Amazonka.SageMaker.Types.DriftCheckModelDataQuality
+import Amazonka.SageMaker.Types.DriftCheckModelQuality
+
+-- | Represents the drift check baselines that can be used when the model
+-- monitor is set using the model package.
+--
+-- /See:/ 'newDriftCheckBaselines' smart constructor.
+data DriftCheckBaselines = DriftCheckBaselines'
+  { -- | Represents the drift check bias baselines that can be used when the
+    -- model monitor is set using the model package.
+    bias :: Prelude.Maybe DriftCheckBias,
+    -- | Represents the drift check explainability baselines that can be used
+    -- when the model monitor is set using the model package.
+    explainability :: Prelude.Maybe DriftCheckExplainability,
+    -- | Represents the drift check model data quality baselines that can be used
+    -- when the model monitor is set using the model package.
+    modelDataQuality :: Prelude.Maybe DriftCheckModelDataQuality,
+    -- | Represents the drift check model quality baselines that can be used when
+    -- the model monitor is set using the model package.
+    modelQuality :: Prelude.Maybe DriftCheckModelQuality
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DriftCheckBaselines' 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:
+--
+-- 'bias', 'driftCheckBaselines_bias' - Represents the drift check bias baselines that can be used when the
+-- model monitor is set using the model package.
+--
+-- 'explainability', 'driftCheckBaselines_explainability' - Represents the drift check explainability baselines that can be used
+-- when the model monitor is set using the model package.
+--
+-- 'modelDataQuality', 'driftCheckBaselines_modelDataQuality' - Represents the drift check model data quality baselines that can be used
+-- when the model monitor is set using the model package.
+--
+-- 'modelQuality', 'driftCheckBaselines_modelQuality' - Represents the drift check model quality baselines that can be used when
+-- the model monitor is set using the model package.
+newDriftCheckBaselines ::
+  DriftCheckBaselines
+newDriftCheckBaselines =
+  DriftCheckBaselines'
+    { bias = Prelude.Nothing,
+      explainability = Prelude.Nothing,
+      modelDataQuality = Prelude.Nothing,
+      modelQuality = Prelude.Nothing
+    }
+
+-- | Represents the drift check bias baselines that can be used when the
+-- model monitor is set using the model package.
+driftCheckBaselines_bias :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckBias)
+driftCheckBaselines_bias = Lens.lens (\DriftCheckBaselines' {bias} -> bias) (\s@DriftCheckBaselines' {} a -> s {bias = a} :: DriftCheckBaselines)
+
+-- | Represents the drift check explainability baselines that can be used
+-- when the model monitor is set using the model package.
+driftCheckBaselines_explainability :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckExplainability)
+driftCheckBaselines_explainability = Lens.lens (\DriftCheckBaselines' {explainability} -> explainability) (\s@DriftCheckBaselines' {} a -> s {explainability = a} :: DriftCheckBaselines)
+
+-- | Represents the drift check model data quality baselines that can be used
+-- when the model monitor is set using the model package.
+driftCheckBaselines_modelDataQuality :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckModelDataQuality)
+driftCheckBaselines_modelDataQuality = Lens.lens (\DriftCheckBaselines' {modelDataQuality} -> modelDataQuality) (\s@DriftCheckBaselines' {} a -> s {modelDataQuality = a} :: DriftCheckBaselines)
+
+-- | Represents the drift check model quality baselines that can be used when
+-- the model monitor is set using the model package.
+driftCheckBaselines_modelQuality :: Lens.Lens' DriftCheckBaselines (Prelude.Maybe DriftCheckModelQuality)
+driftCheckBaselines_modelQuality = Lens.lens (\DriftCheckBaselines' {modelQuality} -> modelQuality) (\s@DriftCheckBaselines' {} a -> s {modelQuality = a} :: DriftCheckBaselines)
+
+instance Data.FromJSON DriftCheckBaselines where
+  parseJSON =
+    Data.withObject
+      "DriftCheckBaselines"
+      ( \x ->
+          DriftCheckBaselines'
+            Prelude.<$> (x Data..:? "Bias")
+            Prelude.<*> (x Data..:? "Explainability")
+            Prelude.<*> (x Data..:? "ModelDataQuality")
+            Prelude.<*> (x Data..:? "ModelQuality")
+      )
+
+instance Prelude.Hashable DriftCheckBaselines where
+  hashWithSalt _salt DriftCheckBaselines' {..} =
+    _salt
+      `Prelude.hashWithSalt` bias
+      `Prelude.hashWithSalt` explainability
+      `Prelude.hashWithSalt` modelDataQuality
+      `Prelude.hashWithSalt` modelQuality
+
+instance Prelude.NFData DriftCheckBaselines where
+  rnf DriftCheckBaselines' {..} =
+    Prelude.rnf bias
+      `Prelude.seq` Prelude.rnf explainability
+      `Prelude.seq` Prelude.rnf modelDataQuality
+      `Prelude.seq` Prelude.rnf modelQuality
+
+instance Data.ToJSON DriftCheckBaselines where
+  toJSON DriftCheckBaselines' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bias" Data..=) Prelude.<$> bias,
+            ("Explainability" Data..=)
+              Prelude.<$> explainability,
+            ("ModelDataQuality" Data..=)
+              Prelude.<$> modelDataQuality,
+            ("ModelQuality" Data..=) Prelude.<$> modelQuality
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DriftCheckBias.hs b/gen/Amazonka/SageMaker/Types/DriftCheckBias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DriftCheckBias.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DriftCheckBias
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DriftCheckBias 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 Amazonka.SageMaker.Types.FileSource
+import Amazonka.SageMaker.Types.MetricsSource
+
+-- | Represents the drift check bias baselines that can be used when the
+-- model monitor is set using the model package.
+--
+-- /See:/ 'newDriftCheckBias' smart constructor.
+data DriftCheckBias = DriftCheckBias'
+  { -- | The bias config file for a model.
+    configFile :: Prelude.Maybe FileSource,
+    -- | The post-training constraints.
+    postTrainingConstraints :: Prelude.Maybe MetricsSource,
+    -- | The pre-training constraints.
+    preTrainingConstraints :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DriftCheckBias' 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:
+--
+-- 'configFile', 'driftCheckBias_configFile' - The bias config file for a model.
+--
+-- 'postTrainingConstraints', 'driftCheckBias_postTrainingConstraints' - The post-training constraints.
+--
+-- 'preTrainingConstraints', 'driftCheckBias_preTrainingConstraints' - The pre-training constraints.
+newDriftCheckBias ::
+  DriftCheckBias
+newDriftCheckBias =
+  DriftCheckBias'
+    { configFile = Prelude.Nothing,
+      postTrainingConstraints = Prelude.Nothing,
+      preTrainingConstraints = Prelude.Nothing
+    }
+
+-- | The bias config file for a model.
+driftCheckBias_configFile :: Lens.Lens' DriftCheckBias (Prelude.Maybe FileSource)
+driftCheckBias_configFile = Lens.lens (\DriftCheckBias' {configFile} -> configFile) (\s@DriftCheckBias' {} a -> s {configFile = a} :: DriftCheckBias)
+
+-- | The post-training constraints.
+driftCheckBias_postTrainingConstraints :: Lens.Lens' DriftCheckBias (Prelude.Maybe MetricsSource)
+driftCheckBias_postTrainingConstraints = Lens.lens (\DriftCheckBias' {postTrainingConstraints} -> postTrainingConstraints) (\s@DriftCheckBias' {} a -> s {postTrainingConstraints = a} :: DriftCheckBias)
+
+-- | The pre-training constraints.
+driftCheckBias_preTrainingConstraints :: Lens.Lens' DriftCheckBias (Prelude.Maybe MetricsSource)
+driftCheckBias_preTrainingConstraints = Lens.lens (\DriftCheckBias' {preTrainingConstraints} -> preTrainingConstraints) (\s@DriftCheckBias' {} a -> s {preTrainingConstraints = a} :: DriftCheckBias)
+
+instance Data.FromJSON DriftCheckBias where
+  parseJSON =
+    Data.withObject
+      "DriftCheckBias"
+      ( \x ->
+          DriftCheckBias'
+            Prelude.<$> (x Data..:? "ConfigFile")
+            Prelude.<*> (x Data..:? "PostTrainingConstraints")
+            Prelude.<*> (x Data..:? "PreTrainingConstraints")
+      )
+
+instance Prelude.Hashable DriftCheckBias where
+  hashWithSalt _salt DriftCheckBias' {..} =
+    _salt
+      `Prelude.hashWithSalt` configFile
+      `Prelude.hashWithSalt` postTrainingConstraints
+      `Prelude.hashWithSalt` preTrainingConstraints
+
+instance Prelude.NFData DriftCheckBias where
+  rnf DriftCheckBias' {..} =
+    Prelude.rnf configFile
+      `Prelude.seq` Prelude.rnf postTrainingConstraints
+      `Prelude.seq` Prelude.rnf preTrainingConstraints
+
+instance Data.ToJSON DriftCheckBias where
+  toJSON DriftCheckBias' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConfigFile" Data..=) Prelude.<$> configFile,
+            ("PostTrainingConstraints" Data..=)
+              Prelude.<$> postTrainingConstraints,
+            ("PreTrainingConstraints" Data..=)
+              Prelude.<$> preTrainingConstraints
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DriftCheckExplainability.hs b/gen/Amazonka/SageMaker/Types/DriftCheckExplainability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DriftCheckExplainability.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DriftCheckExplainability
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DriftCheckExplainability 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 Amazonka.SageMaker.Types.FileSource
+import Amazonka.SageMaker.Types.MetricsSource
+
+-- | Represents the drift check explainability baselines that can be used
+-- when the model monitor is set using the model package.
+--
+-- /See:/ 'newDriftCheckExplainability' smart constructor.
+data DriftCheckExplainability = DriftCheckExplainability'
+  { -- | The explainability config file for the model.
+    configFile :: Prelude.Maybe FileSource,
+    -- | The drift check explainability constraints.
+    constraints :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DriftCheckExplainability' 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:
+--
+-- 'configFile', 'driftCheckExplainability_configFile' - The explainability config file for the model.
+--
+-- 'constraints', 'driftCheckExplainability_constraints' - The drift check explainability constraints.
+newDriftCheckExplainability ::
+  DriftCheckExplainability
+newDriftCheckExplainability =
+  DriftCheckExplainability'
+    { configFile =
+        Prelude.Nothing,
+      constraints = Prelude.Nothing
+    }
+
+-- | The explainability config file for the model.
+driftCheckExplainability_configFile :: Lens.Lens' DriftCheckExplainability (Prelude.Maybe FileSource)
+driftCheckExplainability_configFile = Lens.lens (\DriftCheckExplainability' {configFile} -> configFile) (\s@DriftCheckExplainability' {} a -> s {configFile = a} :: DriftCheckExplainability)
+
+-- | The drift check explainability constraints.
+driftCheckExplainability_constraints :: Lens.Lens' DriftCheckExplainability (Prelude.Maybe MetricsSource)
+driftCheckExplainability_constraints = Lens.lens (\DriftCheckExplainability' {constraints} -> constraints) (\s@DriftCheckExplainability' {} a -> s {constraints = a} :: DriftCheckExplainability)
+
+instance Data.FromJSON DriftCheckExplainability where
+  parseJSON =
+    Data.withObject
+      "DriftCheckExplainability"
+      ( \x ->
+          DriftCheckExplainability'
+            Prelude.<$> (x Data..:? "ConfigFile")
+            Prelude.<*> (x Data..:? "Constraints")
+      )
+
+instance Prelude.Hashable DriftCheckExplainability where
+  hashWithSalt _salt DriftCheckExplainability' {..} =
+    _salt
+      `Prelude.hashWithSalt` configFile
+      `Prelude.hashWithSalt` constraints
+
+instance Prelude.NFData DriftCheckExplainability where
+  rnf DriftCheckExplainability' {..} =
+    Prelude.rnf configFile
+      `Prelude.seq` Prelude.rnf constraints
+
+instance Data.ToJSON DriftCheckExplainability where
+  toJSON DriftCheckExplainability' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConfigFile" Data..=) Prelude.<$> configFile,
+            ("Constraints" Data..=) Prelude.<$> constraints
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DriftCheckModelDataQuality.hs b/gen/Amazonka/SageMaker/Types/DriftCheckModelDataQuality.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DriftCheckModelDataQuality.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DriftCheckModelDataQuality
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DriftCheckModelDataQuality 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 Amazonka.SageMaker.Types.MetricsSource
+
+-- | Represents the drift check data quality baselines that can be used when
+-- the model monitor is set using the model package.
+--
+-- /See:/ 'newDriftCheckModelDataQuality' smart constructor.
+data DriftCheckModelDataQuality = DriftCheckModelDataQuality'
+  { -- | The drift check model data quality constraints.
+    constraints :: Prelude.Maybe MetricsSource,
+    -- | The drift check model data quality statistics.
+    statistics :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DriftCheckModelDataQuality' 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:
+--
+-- 'constraints', 'driftCheckModelDataQuality_constraints' - The drift check model data quality constraints.
+--
+-- 'statistics', 'driftCheckModelDataQuality_statistics' - The drift check model data quality statistics.
+newDriftCheckModelDataQuality ::
+  DriftCheckModelDataQuality
+newDriftCheckModelDataQuality =
+  DriftCheckModelDataQuality'
+    { constraints =
+        Prelude.Nothing,
+      statistics = Prelude.Nothing
+    }
+
+-- | The drift check model data quality constraints.
+driftCheckModelDataQuality_constraints :: Lens.Lens' DriftCheckModelDataQuality (Prelude.Maybe MetricsSource)
+driftCheckModelDataQuality_constraints = Lens.lens (\DriftCheckModelDataQuality' {constraints} -> constraints) (\s@DriftCheckModelDataQuality' {} a -> s {constraints = a} :: DriftCheckModelDataQuality)
+
+-- | The drift check model data quality statistics.
+driftCheckModelDataQuality_statistics :: Lens.Lens' DriftCheckModelDataQuality (Prelude.Maybe MetricsSource)
+driftCheckModelDataQuality_statistics = Lens.lens (\DriftCheckModelDataQuality' {statistics} -> statistics) (\s@DriftCheckModelDataQuality' {} a -> s {statistics = a} :: DriftCheckModelDataQuality)
+
+instance Data.FromJSON DriftCheckModelDataQuality where
+  parseJSON =
+    Data.withObject
+      "DriftCheckModelDataQuality"
+      ( \x ->
+          DriftCheckModelDataQuality'
+            Prelude.<$> (x Data..:? "Constraints")
+            Prelude.<*> (x Data..:? "Statistics")
+      )
+
+instance Prelude.Hashable DriftCheckModelDataQuality where
+  hashWithSalt _salt DriftCheckModelDataQuality' {..} =
+    _salt
+      `Prelude.hashWithSalt` constraints
+      `Prelude.hashWithSalt` statistics
+
+instance Prelude.NFData DriftCheckModelDataQuality where
+  rnf DriftCheckModelDataQuality' {..} =
+    Prelude.rnf constraints
+      `Prelude.seq` Prelude.rnf statistics
+
+instance Data.ToJSON DriftCheckModelDataQuality where
+  toJSON DriftCheckModelDataQuality' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Constraints" Data..=) Prelude.<$> constraints,
+            ("Statistics" Data..=) Prelude.<$> statistics
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/DriftCheckModelQuality.hs b/gen/Amazonka/SageMaker/Types/DriftCheckModelQuality.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/DriftCheckModelQuality.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DriftCheckModelQuality
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.DriftCheckModelQuality 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 Amazonka.SageMaker.Types.MetricsSource
+
+-- | Represents the drift check model quality baselines that can be used when
+-- the model monitor is set using the model package.
+--
+-- /See:/ 'newDriftCheckModelQuality' smart constructor.
+data DriftCheckModelQuality = DriftCheckModelQuality'
+  { -- | The drift check model quality constraints.
+    constraints :: Prelude.Maybe MetricsSource,
+    -- | The drift check model quality statistics.
+    statistics :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DriftCheckModelQuality' 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:
+--
+-- 'constraints', 'driftCheckModelQuality_constraints' - The drift check model quality constraints.
+--
+-- 'statistics', 'driftCheckModelQuality_statistics' - The drift check model quality statistics.
+newDriftCheckModelQuality ::
+  DriftCheckModelQuality
+newDriftCheckModelQuality =
+  DriftCheckModelQuality'
+    { constraints =
+        Prelude.Nothing,
+      statistics = Prelude.Nothing
+    }
+
+-- | The drift check model quality constraints.
+driftCheckModelQuality_constraints :: Lens.Lens' DriftCheckModelQuality (Prelude.Maybe MetricsSource)
+driftCheckModelQuality_constraints = Lens.lens (\DriftCheckModelQuality' {constraints} -> constraints) (\s@DriftCheckModelQuality' {} a -> s {constraints = a} :: DriftCheckModelQuality)
+
+-- | The drift check model quality statistics.
+driftCheckModelQuality_statistics :: Lens.Lens' DriftCheckModelQuality (Prelude.Maybe MetricsSource)
+driftCheckModelQuality_statistics = Lens.lens (\DriftCheckModelQuality' {statistics} -> statistics) (\s@DriftCheckModelQuality' {} a -> s {statistics = a} :: DriftCheckModelQuality)
+
+instance Data.FromJSON DriftCheckModelQuality where
+  parseJSON =
+    Data.withObject
+      "DriftCheckModelQuality"
+      ( \x ->
+          DriftCheckModelQuality'
+            Prelude.<$> (x Data..:? "Constraints")
+            Prelude.<*> (x Data..:? "Statistics")
+      )
+
+instance Prelude.Hashable DriftCheckModelQuality where
+  hashWithSalt _salt DriftCheckModelQuality' {..} =
+    _salt
+      `Prelude.hashWithSalt` constraints
+      `Prelude.hashWithSalt` statistics
+
+instance Prelude.NFData DriftCheckModelQuality where
+  rnf DriftCheckModelQuality' {..} =
+    Prelude.rnf constraints
+      `Prelude.seq` Prelude.rnf statistics
+
+instance Data.ToJSON DriftCheckModelQuality where
+  toJSON DriftCheckModelQuality' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Constraints" Data..=) Prelude.<$> constraints,
+            ("Statistics" Data..=) Prelude.<$> statistics
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EMRStepMetadata.hs b/gen/Amazonka/SageMaker/Types/EMRStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EMRStepMetadata.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EMRStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EMRStepMetadata 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
+
+-- | The configurations and outcomes of an Amazon EMR step execution.
+--
+-- /See:/ 'newEMRStepMetadata' smart constructor.
+data EMRStepMetadata = EMRStepMetadata'
+  { -- | The identifier of the EMR cluster.
+    clusterId :: Prelude.Maybe Prelude.Text,
+    -- | The path to the log file where the cluster step\'s failure root cause is
+    -- recorded.
+    logFilePath :: Prelude.Maybe Prelude.Text,
+    -- | The identifier of the EMR cluster step.
+    stepId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the EMR cluster step.
+    stepName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EMRStepMetadata' 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:
+--
+-- 'clusterId', 'eMRStepMetadata_clusterId' - The identifier of the EMR cluster.
+--
+-- 'logFilePath', 'eMRStepMetadata_logFilePath' - The path to the log file where the cluster step\'s failure root cause is
+-- recorded.
+--
+-- 'stepId', 'eMRStepMetadata_stepId' - The identifier of the EMR cluster step.
+--
+-- 'stepName', 'eMRStepMetadata_stepName' - The name of the EMR cluster step.
+newEMRStepMetadata ::
+  EMRStepMetadata
+newEMRStepMetadata =
+  EMRStepMetadata'
+    { clusterId = Prelude.Nothing,
+      logFilePath = Prelude.Nothing,
+      stepId = Prelude.Nothing,
+      stepName = Prelude.Nothing
+    }
+
+-- | The identifier of the EMR cluster.
+eMRStepMetadata_clusterId :: Lens.Lens' EMRStepMetadata (Prelude.Maybe Prelude.Text)
+eMRStepMetadata_clusterId = Lens.lens (\EMRStepMetadata' {clusterId} -> clusterId) (\s@EMRStepMetadata' {} a -> s {clusterId = a} :: EMRStepMetadata)
+
+-- | The path to the log file where the cluster step\'s failure root cause is
+-- recorded.
+eMRStepMetadata_logFilePath :: Lens.Lens' EMRStepMetadata (Prelude.Maybe Prelude.Text)
+eMRStepMetadata_logFilePath = Lens.lens (\EMRStepMetadata' {logFilePath} -> logFilePath) (\s@EMRStepMetadata' {} a -> s {logFilePath = a} :: EMRStepMetadata)
+
+-- | The identifier of the EMR cluster step.
+eMRStepMetadata_stepId :: Lens.Lens' EMRStepMetadata (Prelude.Maybe Prelude.Text)
+eMRStepMetadata_stepId = Lens.lens (\EMRStepMetadata' {stepId} -> stepId) (\s@EMRStepMetadata' {} a -> s {stepId = a} :: EMRStepMetadata)
+
+-- | The name of the EMR cluster step.
+eMRStepMetadata_stepName :: Lens.Lens' EMRStepMetadata (Prelude.Maybe Prelude.Text)
+eMRStepMetadata_stepName = Lens.lens (\EMRStepMetadata' {stepName} -> stepName) (\s@EMRStepMetadata' {} a -> s {stepName = a} :: EMRStepMetadata)
+
+instance Data.FromJSON EMRStepMetadata where
+  parseJSON =
+    Data.withObject
+      "EMRStepMetadata"
+      ( \x ->
+          EMRStepMetadata'
+            Prelude.<$> (x Data..:? "ClusterId")
+            Prelude.<*> (x Data..:? "LogFilePath")
+            Prelude.<*> (x Data..:? "StepId")
+            Prelude.<*> (x Data..:? "StepName")
+      )
+
+instance Prelude.Hashable EMRStepMetadata where
+  hashWithSalt _salt EMRStepMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` clusterId
+      `Prelude.hashWithSalt` logFilePath
+      `Prelude.hashWithSalt` stepId
+      `Prelude.hashWithSalt` stepName
+
+instance Prelude.NFData EMRStepMetadata where
+  rnf EMRStepMetadata' {..} =
+    Prelude.rnf clusterId
+      `Prelude.seq` Prelude.rnf logFilePath
+      `Prelude.seq` Prelude.rnf stepId
+      `Prelude.seq` Prelude.rnf stepName
diff --git a/gen/Amazonka/SageMaker/Types/Edge.hs b/gen/Amazonka/SageMaker/Types/Edge.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Edge.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Edge
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Edge 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 Amazonka.SageMaker.Types.AssociationEdgeType
+
+-- | A directed edge connecting two lineage entities.
+--
+-- /See:/ 'newEdge' smart constructor.
+data Edge = Edge'
+  { -- | The type of the Association(Edge) between the source and destination.
+    -- For example @ContributedTo@, @Produced@, or @DerivedFrom@.
+    associationType :: Prelude.Maybe AssociationEdgeType,
+    -- | The Amazon Resource Name (ARN) of the destination lineage entity of the
+    -- directed edge.
+    destinationArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the source lineage entity of the
+    -- directed edge.
+    sourceArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Edge' 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:
+--
+-- 'associationType', 'edge_associationType' - The type of the Association(Edge) between the source and destination.
+-- For example @ContributedTo@, @Produced@, or @DerivedFrom@.
+--
+-- 'destinationArn', 'edge_destinationArn' - The Amazon Resource Name (ARN) of the destination lineage entity of the
+-- directed edge.
+--
+-- 'sourceArn', 'edge_sourceArn' - The Amazon Resource Name (ARN) of the source lineage entity of the
+-- directed edge.
+newEdge ::
+  Edge
+newEdge =
+  Edge'
+    { associationType = Prelude.Nothing,
+      destinationArn = Prelude.Nothing,
+      sourceArn = Prelude.Nothing
+    }
+
+-- | The type of the Association(Edge) between the source and destination.
+-- For example @ContributedTo@, @Produced@, or @DerivedFrom@.
+edge_associationType :: Lens.Lens' Edge (Prelude.Maybe AssociationEdgeType)
+edge_associationType = Lens.lens (\Edge' {associationType} -> associationType) (\s@Edge' {} a -> s {associationType = a} :: Edge)
+
+-- | The Amazon Resource Name (ARN) of the destination lineage entity of the
+-- directed edge.
+edge_destinationArn :: Lens.Lens' Edge (Prelude.Maybe Prelude.Text)
+edge_destinationArn = Lens.lens (\Edge' {destinationArn} -> destinationArn) (\s@Edge' {} a -> s {destinationArn = a} :: Edge)
+
+-- | The Amazon Resource Name (ARN) of the source lineage entity of the
+-- directed edge.
+edge_sourceArn :: Lens.Lens' Edge (Prelude.Maybe Prelude.Text)
+edge_sourceArn = Lens.lens (\Edge' {sourceArn} -> sourceArn) (\s@Edge' {} a -> s {sourceArn = a} :: Edge)
+
+instance Data.FromJSON Edge where
+  parseJSON =
+    Data.withObject
+      "Edge"
+      ( \x ->
+          Edge'
+            Prelude.<$> (x Data..:? "AssociationType")
+            Prelude.<*> (x Data..:? "DestinationArn")
+            Prelude.<*> (x Data..:? "SourceArn")
+      )
+
+instance Prelude.Hashable Edge where
+  hashWithSalt _salt Edge' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationType
+      `Prelude.hashWithSalt` destinationArn
+      `Prelude.hashWithSalt` sourceArn
+
+instance Prelude.NFData Edge where
+  rnf Edge' {..} =
+    Prelude.rnf associationType
+      `Prelude.seq` Prelude.rnf destinationArn
+      `Prelude.seq` Prelude.rnf sourceArn
diff --git a/gen/Amazonka/SageMaker/Types/EdgeDeploymentConfig.hs b/gen/Amazonka/SageMaker/Types/EdgeDeploymentConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeDeploymentConfig.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeDeploymentConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeDeploymentConfig 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 Amazonka.SageMaker.Types.FailureHandlingPolicy
+
+-- | Contains information about the configuration of a deployment.
+--
+-- /See:/ 'newEdgeDeploymentConfig' smart constructor.
+data EdgeDeploymentConfig = EdgeDeploymentConfig'
+  { -- | Toggle that determines whether to rollback to previous configuration if
+    -- the current deployment fails. By default this is turned on. You may turn
+    -- this off if you want to investigate the errors yourself.
+    failureHandlingPolicy :: FailureHandlingPolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeDeploymentConfig' 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:
+--
+-- 'failureHandlingPolicy', 'edgeDeploymentConfig_failureHandlingPolicy' - Toggle that determines whether to rollback to previous configuration if
+-- the current deployment fails. By default this is turned on. You may turn
+-- this off if you want to investigate the errors yourself.
+newEdgeDeploymentConfig ::
+  -- | 'failureHandlingPolicy'
+  FailureHandlingPolicy ->
+  EdgeDeploymentConfig
+newEdgeDeploymentConfig pFailureHandlingPolicy_ =
+  EdgeDeploymentConfig'
+    { failureHandlingPolicy =
+        pFailureHandlingPolicy_
+    }
+
+-- | Toggle that determines whether to rollback to previous configuration if
+-- the current deployment fails. By default this is turned on. You may turn
+-- this off if you want to investigate the errors yourself.
+edgeDeploymentConfig_failureHandlingPolicy :: Lens.Lens' EdgeDeploymentConfig FailureHandlingPolicy
+edgeDeploymentConfig_failureHandlingPolicy = Lens.lens (\EdgeDeploymentConfig' {failureHandlingPolicy} -> failureHandlingPolicy) (\s@EdgeDeploymentConfig' {} a -> s {failureHandlingPolicy = a} :: EdgeDeploymentConfig)
+
+instance Data.FromJSON EdgeDeploymentConfig where
+  parseJSON =
+    Data.withObject
+      "EdgeDeploymentConfig"
+      ( \x ->
+          EdgeDeploymentConfig'
+            Prelude.<$> (x Data..: "FailureHandlingPolicy")
+      )
+
+instance Prelude.Hashable EdgeDeploymentConfig where
+  hashWithSalt _salt EdgeDeploymentConfig' {..} =
+    _salt `Prelude.hashWithSalt` failureHandlingPolicy
+
+instance Prelude.NFData EdgeDeploymentConfig where
+  rnf EdgeDeploymentConfig' {..} =
+    Prelude.rnf failureHandlingPolicy
+
+instance Data.ToJSON EdgeDeploymentConfig where
+  toJSON EdgeDeploymentConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "FailureHandlingPolicy"
+                  Data..= failureHandlingPolicy
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EdgeDeploymentModelConfig.hs b/gen/Amazonka/SageMaker/Types/EdgeDeploymentModelConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeDeploymentModelConfig.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeDeploymentModelConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeDeploymentModelConfig 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
+
+-- | Contains information about the configuration of a model in a deployment.
+--
+-- /See:/ 'newEdgeDeploymentModelConfig' smart constructor.
+data EdgeDeploymentModelConfig = EdgeDeploymentModelConfig'
+  { -- | The name the device application uses to reference this model.
+    modelHandle :: Prelude.Text,
+    -- | The edge packaging job associated with this deployment.
+    edgePackagingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeDeploymentModelConfig' 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:
+--
+-- 'modelHandle', 'edgeDeploymentModelConfig_modelHandle' - The name the device application uses to reference this model.
+--
+-- 'edgePackagingJobName', 'edgeDeploymentModelConfig_edgePackagingJobName' - The edge packaging job associated with this deployment.
+newEdgeDeploymentModelConfig ::
+  -- | 'modelHandle'
+  Prelude.Text ->
+  -- | 'edgePackagingJobName'
+  Prelude.Text ->
+  EdgeDeploymentModelConfig
+newEdgeDeploymentModelConfig
+  pModelHandle_
+  pEdgePackagingJobName_ =
+    EdgeDeploymentModelConfig'
+      { modelHandle =
+          pModelHandle_,
+        edgePackagingJobName = pEdgePackagingJobName_
+      }
+
+-- | The name the device application uses to reference this model.
+edgeDeploymentModelConfig_modelHandle :: Lens.Lens' EdgeDeploymentModelConfig Prelude.Text
+edgeDeploymentModelConfig_modelHandle = Lens.lens (\EdgeDeploymentModelConfig' {modelHandle} -> modelHandle) (\s@EdgeDeploymentModelConfig' {} a -> s {modelHandle = a} :: EdgeDeploymentModelConfig)
+
+-- | The edge packaging job associated with this deployment.
+edgeDeploymentModelConfig_edgePackagingJobName :: Lens.Lens' EdgeDeploymentModelConfig Prelude.Text
+edgeDeploymentModelConfig_edgePackagingJobName = Lens.lens (\EdgeDeploymentModelConfig' {edgePackagingJobName} -> edgePackagingJobName) (\s@EdgeDeploymentModelConfig' {} a -> s {edgePackagingJobName = a} :: EdgeDeploymentModelConfig)
+
+instance Data.FromJSON EdgeDeploymentModelConfig where
+  parseJSON =
+    Data.withObject
+      "EdgeDeploymentModelConfig"
+      ( \x ->
+          EdgeDeploymentModelConfig'
+            Prelude.<$> (x Data..: "ModelHandle")
+            Prelude.<*> (x Data..: "EdgePackagingJobName")
+      )
+
+instance Prelude.Hashable EdgeDeploymentModelConfig where
+  hashWithSalt _salt EdgeDeploymentModelConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelHandle
+      `Prelude.hashWithSalt` edgePackagingJobName
+
+instance Prelude.NFData EdgeDeploymentModelConfig where
+  rnf EdgeDeploymentModelConfig' {..} =
+    Prelude.rnf modelHandle
+      `Prelude.seq` Prelude.rnf edgePackagingJobName
+
+instance Data.ToJSON EdgeDeploymentModelConfig where
+  toJSON EdgeDeploymentModelConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ModelHandle" Data..= modelHandle),
+            Prelude.Just
+              ( "EdgePackagingJobName"
+                  Data..= edgePackagingJobName
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EdgeDeploymentPlanSummary.hs b/gen/Amazonka/SageMaker/Types/EdgeDeploymentPlanSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeDeploymentPlanSummary.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeDeploymentPlanSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeDeploymentPlanSummary 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
+
+-- | Contains information summarizing an edge deployment plan.
+--
+-- /See:/ 'newEdgeDeploymentPlanSummary' smart constructor.
+data EdgeDeploymentPlanSummary = EdgeDeploymentPlanSummary'
+  { -- | The time when the edge deployment plan was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The time when the edge deployment plan was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the edge deployment plan.
+    edgeDeploymentPlanArn :: Prelude.Text,
+    -- | The name of the edge deployment plan.
+    edgeDeploymentPlanName :: Prelude.Text,
+    -- | The name of the device fleet used for the deployment.
+    deviceFleetName :: Prelude.Text,
+    -- | The number of edge devices with the successful deployment.
+    edgeDeploymentSuccess :: Prelude.Int,
+    -- | The number of edge devices yet to pick up the deployment, or in
+    -- progress.
+    edgeDeploymentPending :: Prelude.Int,
+    -- | The number of edge devices that failed the deployment.
+    edgeDeploymentFailed :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeDeploymentPlanSummary' 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:
+--
+-- 'creationTime', 'edgeDeploymentPlanSummary_creationTime' - The time when the edge deployment plan was created.
+--
+-- 'lastModifiedTime', 'edgeDeploymentPlanSummary_lastModifiedTime' - The time when the edge deployment plan was last updated.
+--
+-- 'edgeDeploymentPlanArn', 'edgeDeploymentPlanSummary_edgeDeploymentPlanArn' - The ARN of the edge deployment plan.
+--
+-- 'edgeDeploymentPlanName', 'edgeDeploymentPlanSummary_edgeDeploymentPlanName' - The name of the edge deployment plan.
+--
+-- 'deviceFleetName', 'edgeDeploymentPlanSummary_deviceFleetName' - The name of the device fleet used for the deployment.
+--
+-- 'edgeDeploymentSuccess', 'edgeDeploymentPlanSummary_edgeDeploymentSuccess' - The number of edge devices with the successful deployment.
+--
+-- 'edgeDeploymentPending', 'edgeDeploymentPlanSummary_edgeDeploymentPending' - The number of edge devices yet to pick up the deployment, or in
+-- progress.
+--
+-- 'edgeDeploymentFailed', 'edgeDeploymentPlanSummary_edgeDeploymentFailed' - The number of edge devices that failed the deployment.
+newEdgeDeploymentPlanSummary ::
+  -- | 'edgeDeploymentPlanArn'
+  Prelude.Text ->
+  -- | 'edgeDeploymentPlanName'
+  Prelude.Text ->
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  -- | 'edgeDeploymentSuccess'
+  Prelude.Int ->
+  -- | 'edgeDeploymentPending'
+  Prelude.Int ->
+  -- | 'edgeDeploymentFailed'
+  Prelude.Int ->
+  EdgeDeploymentPlanSummary
+newEdgeDeploymentPlanSummary
+  pEdgeDeploymentPlanArn_
+  pEdgeDeploymentPlanName_
+  pDeviceFleetName_
+  pEdgeDeploymentSuccess_
+  pEdgeDeploymentPending_
+  pEdgeDeploymentFailed_ =
+    EdgeDeploymentPlanSummary'
+      { creationTime =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        edgeDeploymentPlanArn = pEdgeDeploymentPlanArn_,
+        edgeDeploymentPlanName =
+          pEdgeDeploymentPlanName_,
+        deviceFleetName = pDeviceFleetName_,
+        edgeDeploymentSuccess = pEdgeDeploymentSuccess_,
+        edgeDeploymentPending = pEdgeDeploymentPending_,
+        edgeDeploymentFailed = pEdgeDeploymentFailed_
+      }
+
+-- | The time when the edge deployment plan was created.
+edgeDeploymentPlanSummary_creationTime :: Lens.Lens' EdgeDeploymentPlanSummary (Prelude.Maybe Prelude.UTCTime)
+edgeDeploymentPlanSummary_creationTime = Lens.lens (\EdgeDeploymentPlanSummary' {creationTime} -> creationTime) (\s@EdgeDeploymentPlanSummary' {} a -> s {creationTime = a} :: EdgeDeploymentPlanSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time when the edge deployment plan was last updated.
+edgeDeploymentPlanSummary_lastModifiedTime :: Lens.Lens' EdgeDeploymentPlanSummary (Prelude.Maybe Prelude.UTCTime)
+edgeDeploymentPlanSummary_lastModifiedTime = Lens.lens (\EdgeDeploymentPlanSummary' {lastModifiedTime} -> lastModifiedTime) (\s@EdgeDeploymentPlanSummary' {} a -> s {lastModifiedTime = a} :: EdgeDeploymentPlanSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the edge deployment plan.
+edgeDeploymentPlanSummary_edgeDeploymentPlanArn :: Lens.Lens' EdgeDeploymentPlanSummary Prelude.Text
+edgeDeploymentPlanSummary_edgeDeploymentPlanArn = Lens.lens (\EdgeDeploymentPlanSummary' {edgeDeploymentPlanArn} -> edgeDeploymentPlanArn) (\s@EdgeDeploymentPlanSummary' {} a -> s {edgeDeploymentPlanArn = a} :: EdgeDeploymentPlanSummary)
+
+-- | The name of the edge deployment plan.
+edgeDeploymentPlanSummary_edgeDeploymentPlanName :: Lens.Lens' EdgeDeploymentPlanSummary Prelude.Text
+edgeDeploymentPlanSummary_edgeDeploymentPlanName = Lens.lens (\EdgeDeploymentPlanSummary' {edgeDeploymentPlanName} -> edgeDeploymentPlanName) (\s@EdgeDeploymentPlanSummary' {} a -> s {edgeDeploymentPlanName = a} :: EdgeDeploymentPlanSummary)
+
+-- | The name of the device fleet used for the deployment.
+edgeDeploymentPlanSummary_deviceFleetName :: Lens.Lens' EdgeDeploymentPlanSummary Prelude.Text
+edgeDeploymentPlanSummary_deviceFleetName = Lens.lens (\EdgeDeploymentPlanSummary' {deviceFleetName} -> deviceFleetName) (\s@EdgeDeploymentPlanSummary' {} a -> s {deviceFleetName = a} :: EdgeDeploymentPlanSummary)
+
+-- | The number of edge devices with the successful deployment.
+edgeDeploymentPlanSummary_edgeDeploymentSuccess :: Lens.Lens' EdgeDeploymentPlanSummary Prelude.Int
+edgeDeploymentPlanSummary_edgeDeploymentSuccess = Lens.lens (\EdgeDeploymentPlanSummary' {edgeDeploymentSuccess} -> edgeDeploymentSuccess) (\s@EdgeDeploymentPlanSummary' {} a -> s {edgeDeploymentSuccess = a} :: EdgeDeploymentPlanSummary)
+
+-- | The number of edge devices yet to pick up the deployment, or in
+-- progress.
+edgeDeploymentPlanSummary_edgeDeploymentPending :: Lens.Lens' EdgeDeploymentPlanSummary Prelude.Int
+edgeDeploymentPlanSummary_edgeDeploymentPending = Lens.lens (\EdgeDeploymentPlanSummary' {edgeDeploymentPending} -> edgeDeploymentPending) (\s@EdgeDeploymentPlanSummary' {} a -> s {edgeDeploymentPending = a} :: EdgeDeploymentPlanSummary)
+
+-- | The number of edge devices that failed the deployment.
+edgeDeploymentPlanSummary_edgeDeploymentFailed :: Lens.Lens' EdgeDeploymentPlanSummary Prelude.Int
+edgeDeploymentPlanSummary_edgeDeploymentFailed = Lens.lens (\EdgeDeploymentPlanSummary' {edgeDeploymentFailed} -> edgeDeploymentFailed) (\s@EdgeDeploymentPlanSummary' {} a -> s {edgeDeploymentFailed = a} :: EdgeDeploymentPlanSummary)
+
+instance Data.FromJSON EdgeDeploymentPlanSummary where
+  parseJSON =
+    Data.withObject
+      "EdgeDeploymentPlanSummary"
+      ( \x ->
+          EdgeDeploymentPlanSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..: "EdgeDeploymentPlanArn")
+            Prelude.<*> (x Data..: "EdgeDeploymentPlanName")
+            Prelude.<*> (x Data..: "DeviceFleetName")
+            Prelude.<*> (x Data..: "EdgeDeploymentSuccess")
+            Prelude.<*> (x Data..: "EdgeDeploymentPending")
+            Prelude.<*> (x Data..: "EdgeDeploymentFailed")
+      )
+
+instance Prelude.Hashable EdgeDeploymentPlanSummary where
+  hashWithSalt _salt EdgeDeploymentPlanSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` edgeDeploymentPlanArn
+      `Prelude.hashWithSalt` edgeDeploymentPlanName
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` edgeDeploymentSuccess
+      `Prelude.hashWithSalt` edgeDeploymentPending
+      `Prelude.hashWithSalt` edgeDeploymentFailed
+
+instance Prelude.NFData EdgeDeploymentPlanSummary where
+  rnf EdgeDeploymentPlanSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanArn
+      `Prelude.seq` Prelude.rnf edgeDeploymentPlanName
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf edgeDeploymentSuccess
+      `Prelude.seq` Prelude.rnf edgeDeploymentPending
+      `Prelude.seq` Prelude.rnf edgeDeploymentFailed
diff --git a/gen/Amazonka/SageMaker/Types/EdgeDeploymentStatus.hs b/gen/Amazonka/SageMaker/Types/EdgeDeploymentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeDeploymentStatus.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeDeploymentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeDeploymentStatus 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 Amazonka.SageMaker.Types.StageStatus
+
+-- | Contains information summarizing the deployment stage results.
+--
+-- /See:/ 'newEdgeDeploymentStatus' smart constructor.
+data EdgeDeploymentStatus = EdgeDeploymentStatus'
+  { -- | The time when the deployment API started.
+    edgeDeploymentStageStartTime :: Prelude.Maybe Data.POSIX,
+    -- | A detailed message about deployment status in current stage.
+    edgeDeploymentStatusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The general status of the current stage.
+    stageStatus :: StageStatus,
+    -- | The number of edge devices with the successful deployment in the current
+    -- stage.
+    edgeDeploymentSuccessInStage :: Prelude.Int,
+    -- | The number of edge devices yet to pick up the deployment in current
+    -- stage, or in progress.
+    edgeDeploymentPendingInStage :: Prelude.Int,
+    -- | The number of edge devices that failed the deployment in current stage.
+    edgeDeploymentFailedInStage :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeDeploymentStatus' 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:
+--
+-- 'edgeDeploymentStageStartTime', 'edgeDeploymentStatus_edgeDeploymentStageStartTime' - The time when the deployment API started.
+--
+-- 'edgeDeploymentStatusMessage', 'edgeDeploymentStatus_edgeDeploymentStatusMessage' - A detailed message about deployment status in current stage.
+--
+-- 'stageStatus', 'edgeDeploymentStatus_stageStatus' - The general status of the current stage.
+--
+-- 'edgeDeploymentSuccessInStage', 'edgeDeploymentStatus_edgeDeploymentSuccessInStage' - The number of edge devices with the successful deployment in the current
+-- stage.
+--
+-- 'edgeDeploymentPendingInStage', 'edgeDeploymentStatus_edgeDeploymentPendingInStage' - The number of edge devices yet to pick up the deployment in current
+-- stage, or in progress.
+--
+-- 'edgeDeploymentFailedInStage', 'edgeDeploymentStatus_edgeDeploymentFailedInStage' - The number of edge devices that failed the deployment in current stage.
+newEdgeDeploymentStatus ::
+  -- | 'stageStatus'
+  StageStatus ->
+  -- | 'edgeDeploymentSuccessInStage'
+  Prelude.Int ->
+  -- | 'edgeDeploymentPendingInStage'
+  Prelude.Int ->
+  -- | 'edgeDeploymentFailedInStage'
+  Prelude.Int ->
+  EdgeDeploymentStatus
+newEdgeDeploymentStatus
+  pStageStatus_
+  pEdgeDeploymentSuccessInStage_
+  pEdgeDeploymentPendingInStage_
+  pEdgeDeploymentFailedInStage_ =
+    EdgeDeploymentStatus'
+      { edgeDeploymentStageStartTime =
+          Prelude.Nothing,
+        edgeDeploymentStatusMessage = Prelude.Nothing,
+        stageStatus = pStageStatus_,
+        edgeDeploymentSuccessInStage =
+          pEdgeDeploymentSuccessInStage_,
+        edgeDeploymentPendingInStage =
+          pEdgeDeploymentPendingInStage_,
+        edgeDeploymentFailedInStage =
+          pEdgeDeploymentFailedInStage_
+      }
+
+-- | The time when the deployment API started.
+edgeDeploymentStatus_edgeDeploymentStageStartTime :: Lens.Lens' EdgeDeploymentStatus (Prelude.Maybe Prelude.UTCTime)
+edgeDeploymentStatus_edgeDeploymentStageStartTime = Lens.lens (\EdgeDeploymentStatus' {edgeDeploymentStageStartTime} -> edgeDeploymentStageStartTime) (\s@EdgeDeploymentStatus' {} a -> s {edgeDeploymentStageStartTime = a} :: EdgeDeploymentStatus) Prelude.. Lens.mapping Data._Time
+
+-- | A detailed message about deployment status in current stage.
+edgeDeploymentStatus_edgeDeploymentStatusMessage :: Lens.Lens' EdgeDeploymentStatus (Prelude.Maybe Prelude.Text)
+edgeDeploymentStatus_edgeDeploymentStatusMessage = Lens.lens (\EdgeDeploymentStatus' {edgeDeploymentStatusMessage} -> edgeDeploymentStatusMessage) (\s@EdgeDeploymentStatus' {} a -> s {edgeDeploymentStatusMessage = a} :: EdgeDeploymentStatus)
+
+-- | The general status of the current stage.
+edgeDeploymentStatus_stageStatus :: Lens.Lens' EdgeDeploymentStatus StageStatus
+edgeDeploymentStatus_stageStatus = Lens.lens (\EdgeDeploymentStatus' {stageStatus} -> stageStatus) (\s@EdgeDeploymentStatus' {} a -> s {stageStatus = a} :: EdgeDeploymentStatus)
+
+-- | The number of edge devices with the successful deployment in the current
+-- stage.
+edgeDeploymentStatus_edgeDeploymentSuccessInStage :: Lens.Lens' EdgeDeploymentStatus Prelude.Int
+edgeDeploymentStatus_edgeDeploymentSuccessInStage = Lens.lens (\EdgeDeploymentStatus' {edgeDeploymentSuccessInStage} -> edgeDeploymentSuccessInStage) (\s@EdgeDeploymentStatus' {} a -> s {edgeDeploymentSuccessInStage = a} :: EdgeDeploymentStatus)
+
+-- | The number of edge devices yet to pick up the deployment in current
+-- stage, or in progress.
+edgeDeploymentStatus_edgeDeploymentPendingInStage :: Lens.Lens' EdgeDeploymentStatus Prelude.Int
+edgeDeploymentStatus_edgeDeploymentPendingInStage = Lens.lens (\EdgeDeploymentStatus' {edgeDeploymentPendingInStage} -> edgeDeploymentPendingInStage) (\s@EdgeDeploymentStatus' {} a -> s {edgeDeploymentPendingInStage = a} :: EdgeDeploymentStatus)
+
+-- | The number of edge devices that failed the deployment in current stage.
+edgeDeploymentStatus_edgeDeploymentFailedInStage :: Lens.Lens' EdgeDeploymentStatus Prelude.Int
+edgeDeploymentStatus_edgeDeploymentFailedInStage = Lens.lens (\EdgeDeploymentStatus' {edgeDeploymentFailedInStage} -> edgeDeploymentFailedInStage) (\s@EdgeDeploymentStatus' {} a -> s {edgeDeploymentFailedInStage = a} :: EdgeDeploymentStatus)
+
+instance Data.FromJSON EdgeDeploymentStatus where
+  parseJSON =
+    Data.withObject
+      "EdgeDeploymentStatus"
+      ( \x ->
+          EdgeDeploymentStatus'
+            Prelude.<$> (x Data..:? "EdgeDeploymentStageStartTime")
+            Prelude.<*> (x Data..:? "EdgeDeploymentStatusMessage")
+            Prelude.<*> (x Data..: "StageStatus")
+            Prelude.<*> (x Data..: "EdgeDeploymentSuccessInStage")
+            Prelude.<*> (x Data..: "EdgeDeploymentPendingInStage")
+            Prelude.<*> (x Data..: "EdgeDeploymentFailedInStage")
+      )
+
+instance Prelude.Hashable EdgeDeploymentStatus where
+  hashWithSalt _salt EdgeDeploymentStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` edgeDeploymentStageStartTime
+      `Prelude.hashWithSalt` edgeDeploymentStatusMessage
+      `Prelude.hashWithSalt` stageStatus
+      `Prelude.hashWithSalt` edgeDeploymentSuccessInStage
+      `Prelude.hashWithSalt` edgeDeploymentPendingInStage
+      `Prelude.hashWithSalt` edgeDeploymentFailedInStage
+
+instance Prelude.NFData EdgeDeploymentStatus where
+  rnf EdgeDeploymentStatus' {..} =
+    Prelude.rnf edgeDeploymentStageStartTime
+      `Prelude.seq` Prelude.rnf edgeDeploymentStatusMessage
+      `Prelude.seq` Prelude.rnf stageStatus
+      `Prelude.seq` Prelude.rnf edgeDeploymentSuccessInStage
+      `Prelude.seq` Prelude.rnf edgeDeploymentPendingInStage
+      `Prelude.seq` Prelude.rnf edgeDeploymentFailedInStage
diff --git a/gen/Amazonka/SageMaker/Types/EdgeModel.hs b/gen/Amazonka/SageMaker/Types/EdgeModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeModel.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeModel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeModel 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
+
+-- | The model on the edge device.
+--
+-- /See:/ 'newEdgeModel' smart constructor.
+data EdgeModel = EdgeModel'
+  { -- | The timestamp of the last inference that was made.
+    latestInference :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp of the last data sample taken.
+    latestSampleTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the model.
+    modelName :: Prelude.Text,
+    -- | The model version.
+    modelVersion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeModel' 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:
+--
+-- 'latestInference', 'edgeModel_latestInference' - The timestamp of the last inference that was made.
+--
+-- 'latestSampleTime', 'edgeModel_latestSampleTime' - The timestamp of the last data sample taken.
+--
+-- 'modelName', 'edgeModel_modelName' - The name of the model.
+--
+-- 'modelVersion', 'edgeModel_modelVersion' - The model version.
+newEdgeModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'modelVersion'
+  Prelude.Text ->
+  EdgeModel
+newEdgeModel pModelName_ pModelVersion_ =
+  EdgeModel'
+    { latestInference = Prelude.Nothing,
+      latestSampleTime = Prelude.Nothing,
+      modelName = pModelName_,
+      modelVersion = pModelVersion_
+    }
+
+-- | The timestamp of the last inference that was made.
+edgeModel_latestInference :: Lens.Lens' EdgeModel (Prelude.Maybe Prelude.UTCTime)
+edgeModel_latestInference = Lens.lens (\EdgeModel' {latestInference} -> latestInference) (\s@EdgeModel' {} a -> s {latestInference = a} :: EdgeModel) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp of the last data sample taken.
+edgeModel_latestSampleTime :: Lens.Lens' EdgeModel (Prelude.Maybe Prelude.UTCTime)
+edgeModel_latestSampleTime = Lens.lens (\EdgeModel' {latestSampleTime} -> latestSampleTime) (\s@EdgeModel' {} a -> s {latestSampleTime = a} :: EdgeModel) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the model.
+edgeModel_modelName :: Lens.Lens' EdgeModel Prelude.Text
+edgeModel_modelName = Lens.lens (\EdgeModel' {modelName} -> modelName) (\s@EdgeModel' {} a -> s {modelName = a} :: EdgeModel)
+
+-- | The model version.
+edgeModel_modelVersion :: Lens.Lens' EdgeModel Prelude.Text
+edgeModel_modelVersion = Lens.lens (\EdgeModel' {modelVersion} -> modelVersion) (\s@EdgeModel' {} a -> s {modelVersion = a} :: EdgeModel)
+
+instance Data.FromJSON EdgeModel where
+  parseJSON =
+    Data.withObject
+      "EdgeModel"
+      ( \x ->
+          EdgeModel'
+            Prelude.<$> (x Data..:? "LatestInference")
+            Prelude.<*> (x Data..:? "LatestSampleTime")
+            Prelude.<*> (x Data..: "ModelName")
+            Prelude.<*> (x Data..: "ModelVersion")
+      )
+
+instance Prelude.Hashable EdgeModel where
+  hashWithSalt _salt EdgeModel' {..} =
+    _salt
+      `Prelude.hashWithSalt` latestInference
+      `Prelude.hashWithSalt` latestSampleTime
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` modelVersion
+
+instance Prelude.NFData EdgeModel where
+  rnf EdgeModel' {..} =
+    Prelude.rnf latestInference
+      `Prelude.seq` Prelude.rnf latestSampleTime
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelVersion
diff --git a/gen/Amazonka/SageMaker/Types/EdgeModelStat.hs b/gen/Amazonka/SageMaker/Types/EdgeModelStat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeModelStat.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeModelStat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeModelStat 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
+
+-- | Status of edge devices with this model.
+--
+-- /See:/ 'newEdgeModelStat' smart constructor.
+data EdgeModelStat = EdgeModelStat'
+  { -- | The name of the model.
+    modelName :: Prelude.Text,
+    -- | The model version.
+    modelVersion :: Prelude.Text,
+    -- | The number of devices that have this model version and do not have a
+    -- heart beat.
+    offlineDeviceCount :: Prelude.Integer,
+    -- | The number of devices that have this model version and have a heart
+    -- beat.
+    connectedDeviceCount :: Prelude.Integer,
+    -- | The number of devices that have this model version, a heart beat, and
+    -- are currently running.
+    activeDeviceCount :: Prelude.Integer,
+    -- | The number of devices with this model version and are producing sample
+    -- data.
+    samplingDeviceCount :: Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeModelStat' 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:
+--
+-- 'modelName', 'edgeModelStat_modelName' - The name of the model.
+--
+-- 'modelVersion', 'edgeModelStat_modelVersion' - The model version.
+--
+-- 'offlineDeviceCount', 'edgeModelStat_offlineDeviceCount' - The number of devices that have this model version and do not have a
+-- heart beat.
+--
+-- 'connectedDeviceCount', 'edgeModelStat_connectedDeviceCount' - The number of devices that have this model version and have a heart
+-- beat.
+--
+-- 'activeDeviceCount', 'edgeModelStat_activeDeviceCount' - The number of devices that have this model version, a heart beat, and
+-- are currently running.
+--
+-- 'samplingDeviceCount', 'edgeModelStat_samplingDeviceCount' - The number of devices with this model version and are producing sample
+-- data.
+newEdgeModelStat ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'modelVersion'
+  Prelude.Text ->
+  -- | 'offlineDeviceCount'
+  Prelude.Integer ->
+  -- | 'connectedDeviceCount'
+  Prelude.Integer ->
+  -- | 'activeDeviceCount'
+  Prelude.Integer ->
+  -- | 'samplingDeviceCount'
+  Prelude.Integer ->
+  EdgeModelStat
+newEdgeModelStat
+  pModelName_
+  pModelVersion_
+  pOfflineDeviceCount_
+  pConnectedDeviceCount_
+  pActiveDeviceCount_
+  pSamplingDeviceCount_ =
+    EdgeModelStat'
+      { modelName = pModelName_,
+        modelVersion = pModelVersion_,
+        offlineDeviceCount = pOfflineDeviceCount_,
+        connectedDeviceCount = pConnectedDeviceCount_,
+        activeDeviceCount = pActiveDeviceCount_,
+        samplingDeviceCount = pSamplingDeviceCount_
+      }
+
+-- | The name of the model.
+edgeModelStat_modelName :: Lens.Lens' EdgeModelStat Prelude.Text
+edgeModelStat_modelName = Lens.lens (\EdgeModelStat' {modelName} -> modelName) (\s@EdgeModelStat' {} a -> s {modelName = a} :: EdgeModelStat)
+
+-- | The model version.
+edgeModelStat_modelVersion :: Lens.Lens' EdgeModelStat Prelude.Text
+edgeModelStat_modelVersion = Lens.lens (\EdgeModelStat' {modelVersion} -> modelVersion) (\s@EdgeModelStat' {} a -> s {modelVersion = a} :: EdgeModelStat)
+
+-- | The number of devices that have this model version and do not have a
+-- heart beat.
+edgeModelStat_offlineDeviceCount :: Lens.Lens' EdgeModelStat Prelude.Integer
+edgeModelStat_offlineDeviceCount = Lens.lens (\EdgeModelStat' {offlineDeviceCount} -> offlineDeviceCount) (\s@EdgeModelStat' {} a -> s {offlineDeviceCount = a} :: EdgeModelStat)
+
+-- | The number of devices that have this model version and have a heart
+-- beat.
+edgeModelStat_connectedDeviceCount :: Lens.Lens' EdgeModelStat Prelude.Integer
+edgeModelStat_connectedDeviceCount = Lens.lens (\EdgeModelStat' {connectedDeviceCount} -> connectedDeviceCount) (\s@EdgeModelStat' {} a -> s {connectedDeviceCount = a} :: EdgeModelStat)
+
+-- | The number of devices that have this model version, a heart beat, and
+-- are currently running.
+edgeModelStat_activeDeviceCount :: Lens.Lens' EdgeModelStat Prelude.Integer
+edgeModelStat_activeDeviceCount = Lens.lens (\EdgeModelStat' {activeDeviceCount} -> activeDeviceCount) (\s@EdgeModelStat' {} a -> s {activeDeviceCount = a} :: EdgeModelStat)
+
+-- | The number of devices with this model version and are producing sample
+-- data.
+edgeModelStat_samplingDeviceCount :: Lens.Lens' EdgeModelStat Prelude.Integer
+edgeModelStat_samplingDeviceCount = Lens.lens (\EdgeModelStat' {samplingDeviceCount} -> samplingDeviceCount) (\s@EdgeModelStat' {} a -> s {samplingDeviceCount = a} :: EdgeModelStat)
+
+instance Data.FromJSON EdgeModelStat where
+  parseJSON =
+    Data.withObject
+      "EdgeModelStat"
+      ( \x ->
+          EdgeModelStat'
+            Prelude.<$> (x Data..: "ModelName")
+            Prelude.<*> (x Data..: "ModelVersion")
+            Prelude.<*> (x Data..: "OfflineDeviceCount")
+            Prelude.<*> (x Data..: "ConnectedDeviceCount")
+            Prelude.<*> (x Data..: "ActiveDeviceCount")
+            Prelude.<*> (x Data..: "SamplingDeviceCount")
+      )
+
+instance Prelude.Hashable EdgeModelStat where
+  hashWithSalt _salt EdgeModelStat' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` modelVersion
+      `Prelude.hashWithSalt` offlineDeviceCount
+      `Prelude.hashWithSalt` connectedDeviceCount
+      `Prelude.hashWithSalt` activeDeviceCount
+      `Prelude.hashWithSalt` samplingDeviceCount
+
+instance Prelude.NFData EdgeModelStat where
+  rnf EdgeModelStat' {..} =
+    Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelVersion
+      `Prelude.seq` Prelude.rnf offlineDeviceCount
+      `Prelude.seq` Prelude.rnf connectedDeviceCount
+      `Prelude.seq` Prelude.rnf activeDeviceCount
+      `Prelude.seq` Prelude.rnf samplingDeviceCount
diff --git a/gen/Amazonka/SageMaker/Types/EdgeModelSummary.hs b/gen/Amazonka/SageMaker/Types/EdgeModelSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeModelSummary.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeModelSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeModelSummary 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
+
+-- | Summary of model on edge device.
+--
+-- /See:/ 'newEdgeModelSummary' smart constructor.
+data EdgeModelSummary = EdgeModelSummary'
+  { -- | The name of the model.
+    modelName :: Prelude.Text,
+    -- | The version model.
+    modelVersion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeModelSummary' 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:
+--
+-- 'modelName', 'edgeModelSummary_modelName' - The name of the model.
+--
+-- 'modelVersion', 'edgeModelSummary_modelVersion' - The version model.
+newEdgeModelSummary ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'modelVersion'
+  Prelude.Text ->
+  EdgeModelSummary
+newEdgeModelSummary pModelName_ pModelVersion_ =
+  EdgeModelSummary'
+    { modelName = pModelName_,
+      modelVersion = pModelVersion_
+    }
+
+-- | The name of the model.
+edgeModelSummary_modelName :: Lens.Lens' EdgeModelSummary Prelude.Text
+edgeModelSummary_modelName = Lens.lens (\EdgeModelSummary' {modelName} -> modelName) (\s@EdgeModelSummary' {} a -> s {modelName = a} :: EdgeModelSummary)
+
+-- | The version model.
+edgeModelSummary_modelVersion :: Lens.Lens' EdgeModelSummary Prelude.Text
+edgeModelSummary_modelVersion = Lens.lens (\EdgeModelSummary' {modelVersion} -> modelVersion) (\s@EdgeModelSummary' {} a -> s {modelVersion = a} :: EdgeModelSummary)
+
+instance Data.FromJSON EdgeModelSummary where
+  parseJSON =
+    Data.withObject
+      "EdgeModelSummary"
+      ( \x ->
+          EdgeModelSummary'
+            Prelude.<$> (x Data..: "ModelName")
+            Prelude.<*> (x Data..: "ModelVersion")
+      )
+
+instance Prelude.Hashable EdgeModelSummary where
+  hashWithSalt _salt EdgeModelSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` modelVersion
+
+instance Prelude.NFData EdgeModelSummary where
+  rnf EdgeModelSummary' {..} =
+    Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelVersion
diff --git a/gen/Amazonka/SageMaker/Types/EdgeOutputConfig.hs b/gen/Amazonka/SageMaker/Types/EdgeOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgeOutputConfig.hs
@@ -0,0 +1,227 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgeOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgeOutputConfig 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 Amazonka.SageMaker.Types.EdgePresetDeploymentType
+
+-- | The output configuration.
+--
+-- /See:/ 'newEdgeOutputConfig' smart constructor.
+data EdgeOutputConfig = EdgeOutputConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data on the storage volume
+    -- after compilation job. If you don\'t provide a KMS key ID, Amazon
+    -- SageMaker uses the default KMS key for Amazon S3 for your role\'s
+    -- account.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The configuration used to create deployment artifacts. Specify
+    -- configuration options with a JSON string. The available configuration
+    -- options for each type are:
+    --
+    -- -   @ComponentName@ (optional) - Name of the GreenGrass V2 component. If
+    --     not specified, the default name generated consists of
+    --     \"SagemakerEdgeManager\" and the name of your SageMaker Edge Manager
+    --     packaging job.
+    --
+    -- -   @ComponentDescription@ (optional) - Description of the component.
+    --
+    -- -   @ComponentVersion@ (optional) - The version of the component.
+    --
+    --     Amazon Web Services IoT Greengrass uses semantic versions for
+    --     components. Semantic versions follow a /major.minor.patch/ number
+    --     system. For example, version 1.0.0 represents the first major
+    --     release for a component. For more information, see the
+    --     <https://semver.org/ semantic version specification>.
+    --
+    -- -   @PlatformOS@ (optional) - The name of the operating system for the
+    --     platform. Supported platforms include Windows and Linux.
+    --
+    -- -   @PlatformArchitecture@ (optional) - The processor architecture for
+    --     the platform.
+    --
+    --     Supported architectures Windows include: Windows32_x86,
+    --     Windows64_x64.
+    --
+    --     Supported architectures for Linux include: Linux x86_64, Linux
+    --     ARMV8.
+    presetDeploymentConfig :: Prelude.Maybe Prelude.Text,
+    -- | The deployment type SageMaker Edge Manager will create. Currently only
+    -- supports Amazon Web Services IoT Greengrass Version 2 components.
+    presetDeploymentType :: Prelude.Maybe EdgePresetDeploymentType,
+    -- | The Amazon Simple Storage (S3) bucker URI.
+    s3OutputLocation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgeOutputConfig' 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:
+--
+-- 'kmsKeyId', 'edgeOutputConfig_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- after compilation job. If you don\'t provide a KMS key ID, Amazon
+-- SageMaker uses the default KMS key for Amazon S3 for your role\'s
+-- account.
+--
+-- 'presetDeploymentConfig', 'edgeOutputConfig_presetDeploymentConfig' - The configuration used to create deployment artifacts. Specify
+-- configuration options with a JSON string. The available configuration
+-- options for each type are:
+--
+-- -   @ComponentName@ (optional) - Name of the GreenGrass V2 component. If
+--     not specified, the default name generated consists of
+--     \"SagemakerEdgeManager\" and the name of your SageMaker Edge Manager
+--     packaging job.
+--
+-- -   @ComponentDescription@ (optional) - Description of the component.
+--
+-- -   @ComponentVersion@ (optional) - The version of the component.
+--
+--     Amazon Web Services IoT Greengrass uses semantic versions for
+--     components. Semantic versions follow a /major.minor.patch/ number
+--     system. For example, version 1.0.0 represents the first major
+--     release for a component. For more information, see the
+--     <https://semver.org/ semantic version specification>.
+--
+-- -   @PlatformOS@ (optional) - The name of the operating system for the
+--     platform. Supported platforms include Windows and Linux.
+--
+-- -   @PlatformArchitecture@ (optional) - The processor architecture for
+--     the platform.
+--
+--     Supported architectures Windows include: Windows32_x86,
+--     Windows64_x64.
+--
+--     Supported architectures for Linux include: Linux x86_64, Linux
+--     ARMV8.
+--
+-- 'presetDeploymentType', 'edgeOutputConfig_presetDeploymentType' - The deployment type SageMaker Edge Manager will create. Currently only
+-- supports Amazon Web Services IoT Greengrass Version 2 components.
+--
+-- 's3OutputLocation', 'edgeOutputConfig_s3OutputLocation' - The Amazon Simple Storage (S3) bucker URI.
+newEdgeOutputConfig ::
+  -- | 's3OutputLocation'
+  Prelude.Text ->
+  EdgeOutputConfig
+newEdgeOutputConfig pS3OutputLocation_ =
+  EdgeOutputConfig'
+    { kmsKeyId = Prelude.Nothing,
+      presetDeploymentConfig = Prelude.Nothing,
+      presetDeploymentType = Prelude.Nothing,
+      s3OutputLocation = pS3OutputLocation_
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- after compilation job. If you don\'t provide a KMS key ID, Amazon
+-- SageMaker uses the default KMS key for Amazon S3 for your role\'s
+-- account.
+edgeOutputConfig_kmsKeyId :: Lens.Lens' EdgeOutputConfig (Prelude.Maybe Prelude.Text)
+edgeOutputConfig_kmsKeyId = Lens.lens (\EdgeOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@EdgeOutputConfig' {} a -> s {kmsKeyId = a} :: EdgeOutputConfig)
+
+-- | The configuration used to create deployment artifacts. Specify
+-- configuration options with a JSON string. The available configuration
+-- options for each type are:
+--
+-- -   @ComponentName@ (optional) - Name of the GreenGrass V2 component. If
+--     not specified, the default name generated consists of
+--     \"SagemakerEdgeManager\" and the name of your SageMaker Edge Manager
+--     packaging job.
+--
+-- -   @ComponentDescription@ (optional) - Description of the component.
+--
+-- -   @ComponentVersion@ (optional) - The version of the component.
+--
+--     Amazon Web Services IoT Greengrass uses semantic versions for
+--     components. Semantic versions follow a /major.minor.patch/ number
+--     system. For example, version 1.0.0 represents the first major
+--     release for a component. For more information, see the
+--     <https://semver.org/ semantic version specification>.
+--
+-- -   @PlatformOS@ (optional) - The name of the operating system for the
+--     platform. Supported platforms include Windows and Linux.
+--
+-- -   @PlatformArchitecture@ (optional) - The processor architecture for
+--     the platform.
+--
+--     Supported architectures Windows include: Windows32_x86,
+--     Windows64_x64.
+--
+--     Supported architectures for Linux include: Linux x86_64, Linux
+--     ARMV8.
+edgeOutputConfig_presetDeploymentConfig :: Lens.Lens' EdgeOutputConfig (Prelude.Maybe Prelude.Text)
+edgeOutputConfig_presetDeploymentConfig = Lens.lens (\EdgeOutputConfig' {presetDeploymentConfig} -> presetDeploymentConfig) (\s@EdgeOutputConfig' {} a -> s {presetDeploymentConfig = a} :: EdgeOutputConfig)
+
+-- | The deployment type SageMaker Edge Manager will create. Currently only
+-- supports Amazon Web Services IoT Greengrass Version 2 components.
+edgeOutputConfig_presetDeploymentType :: Lens.Lens' EdgeOutputConfig (Prelude.Maybe EdgePresetDeploymentType)
+edgeOutputConfig_presetDeploymentType = Lens.lens (\EdgeOutputConfig' {presetDeploymentType} -> presetDeploymentType) (\s@EdgeOutputConfig' {} a -> s {presetDeploymentType = a} :: EdgeOutputConfig)
+
+-- | The Amazon Simple Storage (S3) bucker URI.
+edgeOutputConfig_s3OutputLocation :: Lens.Lens' EdgeOutputConfig Prelude.Text
+edgeOutputConfig_s3OutputLocation = Lens.lens (\EdgeOutputConfig' {s3OutputLocation} -> s3OutputLocation) (\s@EdgeOutputConfig' {} a -> s {s3OutputLocation = a} :: EdgeOutputConfig)
+
+instance Data.FromJSON EdgeOutputConfig where
+  parseJSON =
+    Data.withObject
+      "EdgeOutputConfig"
+      ( \x ->
+          EdgeOutputConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "PresetDeploymentConfig")
+            Prelude.<*> (x Data..:? "PresetDeploymentType")
+            Prelude.<*> (x Data..: "S3OutputLocation")
+      )
+
+instance Prelude.Hashable EdgeOutputConfig where
+  hashWithSalt _salt EdgeOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` presetDeploymentConfig
+      `Prelude.hashWithSalt` presetDeploymentType
+      `Prelude.hashWithSalt` s3OutputLocation
+
+instance Prelude.NFData EdgeOutputConfig where
+  rnf EdgeOutputConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf presetDeploymentConfig
+      `Prelude.seq` Prelude.rnf presetDeploymentType
+      `Prelude.seq` Prelude.rnf s3OutputLocation
+
+instance Data.ToJSON EdgeOutputConfig where
+  toJSON EdgeOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("PresetDeploymentConfig" Data..=)
+              Prelude.<$> presetDeploymentConfig,
+            ("PresetDeploymentType" Data..=)
+              Prelude.<$> presetDeploymentType,
+            Prelude.Just
+              ("S3OutputLocation" Data..= s3OutputLocation)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EdgePackagingJobStatus.hs b/gen/Amazonka/SageMaker/Types/EdgePackagingJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgePackagingJobStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.EdgePackagingJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgePackagingJobStatus
+  ( EdgePackagingJobStatus
+      ( ..,
+        EdgePackagingJobStatus_COMPLETED,
+        EdgePackagingJobStatus_FAILED,
+        EdgePackagingJobStatus_INPROGRESS,
+        EdgePackagingJobStatus_STARTING,
+        EdgePackagingJobStatus_STOPPED,
+        EdgePackagingJobStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EdgePackagingJobStatus = EdgePackagingJobStatus'
+  { fromEdgePackagingJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EdgePackagingJobStatus_COMPLETED :: EdgePackagingJobStatus
+pattern EdgePackagingJobStatus_COMPLETED = EdgePackagingJobStatus' "COMPLETED"
+
+pattern EdgePackagingJobStatus_FAILED :: EdgePackagingJobStatus
+pattern EdgePackagingJobStatus_FAILED = EdgePackagingJobStatus' "FAILED"
+
+pattern EdgePackagingJobStatus_INPROGRESS :: EdgePackagingJobStatus
+pattern EdgePackagingJobStatus_INPROGRESS = EdgePackagingJobStatus' "INPROGRESS"
+
+pattern EdgePackagingJobStatus_STARTING :: EdgePackagingJobStatus
+pattern EdgePackagingJobStatus_STARTING = EdgePackagingJobStatus' "STARTING"
+
+pattern EdgePackagingJobStatus_STOPPED :: EdgePackagingJobStatus
+pattern EdgePackagingJobStatus_STOPPED = EdgePackagingJobStatus' "STOPPED"
+
+pattern EdgePackagingJobStatus_STOPPING :: EdgePackagingJobStatus
+pattern EdgePackagingJobStatus_STOPPING = EdgePackagingJobStatus' "STOPPING"
+
+{-# COMPLETE
+  EdgePackagingJobStatus_COMPLETED,
+  EdgePackagingJobStatus_FAILED,
+  EdgePackagingJobStatus_INPROGRESS,
+  EdgePackagingJobStatus_STARTING,
+  EdgePackagingJobStatus_STOPPED,
+  EdgePackagingJobStatus_STOPPING,
+  EdgePackagingJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/EdgePackagingJobSummary.hs b/gen/Amazonka/SageMaker/Types/EdgePackagingJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgePackagingJobSummary.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgePackagingJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgePackagingJobSummary 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 Amazonka.SageMaker.Types.EdgePackagingJobStatus
+
+-- | Summary of edge packaging job.
+--
+-- /See:/ 'newEdgePackagingJobSummary' smart constructor.
+data EdgePackagingJobSummary = EdgePackagingJobSummary'
+  { -- | The name of the SageMaker Neo compilation job.
+    compilationJobName :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp of when the job was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp of when the edge packaging job was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the model.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | The version of the model.
+    modelVersion :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the edge packaging job.
+    edgePackagingJobArn :: Prelude.Text,
+    -- | The name of the edge packaging job.
+    edgePackagingJobName :: Prelude.Text,
+    -- | The status of the edge packaging job.
+    edgePackagingJobStatus :: EdgePackagingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgePackagingJobSummary' 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:
+--
+-- 'compilationJobName', 'edgePackagingJobSummary_compilationJobName' - The name of the SageMaker Neo compilation job.
+--
+-- 'creationTime', 'edgePackagingJobSummary_creationTime' - The timestamp of when the job was created.
+--
+-- 'lastModifiedTime', 'edgePackagingJobSummary_lastModifiedTime' - The timestamp of when the edge packaging job was last updated.
+--
+-- 'modelName', 'edgePackagingJobSummary_modelName' - The name of the model.
+--
+-- 'modelVersion', 'edgePackagingJobSummary_modelVersion' - The version of the model.
+--
+-- 'edgePackagingJobArn', 'edgePackagingJobSummary_edgePackagingJobArn' - The Amazon Resource Name (ARN) of the edge packaging job.
+--
+-- 'edgePackagingJobName', 'edgePackagingJobSummary_edgePackagingJobName' - The name of the edge packaging job.
+--
+-- 'edgePackagingJobStatus', 'edgePackagingJobSummary_edgePackagingJobStatus' - The status of the edge packaging job.
+newEdgePackagingJobSummary ::
+  -- | 'edgePackagingJobArn'
+  Prelude.Text ->
+  -- | 'edgePackagingJobName'
+  Prelude.Text ->
+  -- | 'edgePackagingJobStatus'
+  EdgePackagingJobStatus ->
+  EdgePackagingJobSummary
+newEdgePackagingJobSummary
+  pEdgePackagingJobArn_
+  pEdgePackagingJobName_
+  pEdgePackagingJobStatus_ =
+    EdgePackagingJobSummary'
+      { compilationJobName =
+          Prelude.Nothing,
+        creationTime = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        modelName = Prelude.Nothing,
+        modelVersion = Prelude.Nothing,
+        edgePackagingJobArn = pEdgePackagingJobArn_,
+        edgePackagingJobName = pEdgePackagingJobName_,
+        edgePackagingJobStatus = pEdgePackagingJobStatus_
+      }
+
+-- | The name of the SageMaker Neo compilation job.
+edgePackagingJobSummary_compilationJobName :: Lens.Lens' EdgePackagingJobSummary (Prelude.Maybe Prelude.Text)
+edgePackagingJobSummary_compilationJobName = Lens.lens (\EdgePackagingJobSummary' {compilationJobName} -> compilationJobName) (\s@EdgePackagingJobSummary' {} a -> s {compilationJobName = a} :: EdgePackagingJobSummary)
+
+-- | The timestamp of when the job was created.
+edgePackagingJobSummary_creationTime :: Lens.Lens' EdgePackagingJobSummary (Prelude.Maybe Prelude.UTCTime)
+edgePackagingJobSummary_creationTime = Lens.lens (\EdgePackagingJobSummary' {creationTime} -> creationTime) (\s@EdgePackagingJobSummary' {} a -> s {creationTime = a} :: EdgePackagingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp of when the edge packaging job was last updated.
+edgePackagingJobSummary_lastModifiedTime :: Lens.Lens' EdgePackagingJobSummary (Prelude.Maybe Prelude.UTCTime)
+edgePackagingJobSummary_lastModifiedTime = Lens.lens (\EdgePackagingJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@EdgePackagingJobSummary' {} a -> s {lastModifiedTime = a} :: EdgePackagingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the model.
+edgePackagingJobSummary_modelName :: Lens.Lens' EdgePackagingJobSummary (Prelude.Maybe Prelude.Text)
+edgePackagingJobSummary_modelName = Lens.lens (\EdgePackagingJobSummary' {modelName} -> modelName) (\s@EdgePackagingJobSummary' {} a -> s {modelName = a} :: EdgePackagingJobSummary)
+
+-- | The version of the model.
+edgePackagingJobSummary_modelVersion :: Lens.Lens' EdgePackagingJobSummary (Prelude.Maybe Prelude.Text)
+edgePackagingJobSummary_modelVersion = Lens.lens (\EdgePackagingJobSummary' {modelVersion} -> modelVersion) (\s@EdgePackagingJobSummary' {} a -> s {modelVersion = a} :: EdgePackagingJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the edge packaging job.
+edgePackagingJobSummary_edgePackagingJobArn :: Lens.Lens' EdgePackagingJobSummary Prelude.Text
+edgePackagingJobSummary_edgePackagingJobArn = Lens.lens (\EdgePackagingJobSummary' {edgePackagingJobArn} -> edgePackagingJobArn) (\s@EdgePackagingJobSummary' {} a -> s {edgePackagingJobArn = a} :: EdgePackagingJobSummary)
+
+-- | The name of the edge packaging job.
+edgePackagingJobSummary_edgePackagingJobName :: Lens.Lens' EdgePackagingJobSummary Prelude.Text
+edgePackagingJobSummary_edgePackagingJobName = Lens.lens (\EdgePackagingJobSummary' {edgePackagingJobName} -> edgePackagingJobName) (\s@EdgePackagingJobSummary' {} a -> s {edgePackagingJobName = a} :: EdgePackagingJobSummary)
+
+-- | The status of the edge packaging job.
+edgePackagingJobSummary_edgePackagingJobStatus :: Lens.Lens' EdgePackagingJobSummary EdgePackagingJobStatus
+edgePackagingJobSummary_edgePackagingJobStatus = Lens.lens (\EdgePackagingJobSummary' {edgePackagingJobStatus} -> edgePackagingJobStatus) (\s@EdgePackagingJobSummary' {} a -> s {edgePackagingJobStatus = a} :: EdgePackagingJobSummary)
+
+instance Data.FromJSON EdgePackagingJobSummary where
+  parseJSON =
+    Data.withObject
+      "EdgePackagingJobSummary"
+      ( \x ->
+          EdgePackagingJobSummary'
+            Prelude.<$> (x Data..:? "CompilationJobName")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ModelName")
+            Prelude.<*> (x Data..:? "ModelVersion")
+            Prelude.<*> (x Data..: "EdgePackagingJobArn")
+            Prelude.<*> (x Data..: "EdgePackagingJobName")
+            Prelude.<*> (x Data..: "EdgePackagingJobStatus")
+      )
+
+instance Prelude.Hashable EdgePackagingJobSummary where
+  hashWithSalt _salt EdgePackagingJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` compilationJobName
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` modelVersion
+      `Prelude.hashWithSalt` edgePackagingJobArn
+      `Prelude.hashWithSalt` edgePackagingJobName
+      `Prelude.hashWithSalt` edgePackagingJobStatus
+
+instance Prelude.NFData EdgePackagingJobSummary where
+  rnf EdgePackagingJobSummary' {..} =
+    Prelude.rnf compilationJobName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelVersion
+      `Prelude.seq` Prelude.rnf edgePackagingJobArn
+      `Prelude.seq` Prelude.rnf edgePackagingJobName
+      `Prelude.seq` Prelude.rnf edgePackagingJobStatus
diff --git a/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentOutput.hs b/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentOutput.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EdgePresetDeploymentOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgePresetDeploymentOutput 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 Amazonka.SageMaker.Types.EdgePresetDeploymentStatus
+import Amazonka.SageMaker.Types.EdgePresetDeploymentType
+
+-- | The output of a SageMaker Edge Manager deployable resource.
+--
+-- /See:/ 'newEdgePresetDeploymentOutput' smart constructor.
+data EdgePresetDeploymentOutput = EdgePresetDeploymentOutput'
+  { -- | The Amazon Resource Name (ARN) of the generated deployable resource.
+    artifact :: Prelude.Maybe Prelude.Text,
+    -- | The status of the deployable resource.
+    status :: Prelude.Maybe EdgePresetDeploymentStatus,
+    -- | Returns a message describing the status of the deployed resource.
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The deployment type created by SageMaker Edge Manager. Currently only
+    -- supports Amazon Web Services IoT Greengrass Version 2 components.
+    type' :: EdgePresetDeploymentType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EdgePresetDeploymentOutput' 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:
+--
+-- 'artifact', 'edgePresetDeploymentOutput_artifact' - The Amazon Resource Name (ARN) of the generated deployable resource.
+--
+-- 'status', 'edgePresetDeploymentOutput_status' - The status of the deployable resource.
+--
+-- 'statusMessage', 'edgePresetDeploymentOutput_statusMessage' - Returns a message describing the status of the deployed resource.
+--
+-- 'type'', 'edgePresetDeploymentOutput_type' - The deployment type created by SageMaker Edge Manager. Currently only
+-- supports Amazon Web Services IoT Greengrass Version 2 components.
+newEdgePresetDeploymentOutput ::
+  -- | 'type''
+  EdgePresetDeploymentType ->
+  EdgePresetDeploymentOutput
+newEdgePresetDeploymentOutput pType_ =
+  EdgePresetDeploymentOutput'
+    { artifact =
+        Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusMessage = Prelude.Nothing,
+      type' = pType_
+    }
+
+-- | The Amazon Resource Name (ARN) of the generated deployable resource.
+edgePresetDeploymentOutput_artifact :: Lens.Lens' EdgePresetDeploymentOutput (Prelude.Maybe Prelude.Text)
+edgePresetDeploymentOutput_artifact = Lens.lens (\EdgePresetDeploymentOutput' {artifact} -> artifact) (\s@EdgePresetDeploymentOutput' {} a -> s {artifact = a} :: EdgePresetDeploymentOutput)
+
+-- | The status of the deployable resource.
+edgePresetDeploymentOutput_status :: Lens.Lens' EdgePresetDeploymentOutput (Prelude.Maybe EdgePresetDeploymentStatus)
+edgePresetDeploymentOutput_status = Lens.lens (\EdgePresetDeploymentOutput' {status} -> status) (\s@EdgePresetDeploymentOutput' {} a -> s {status = a} :: EdgePresetDeploymentOutput)
+
+-- | Returns a message describing the status of the deployed resource.
+edgePresetDeploymentOutput_statusMessage :: Lens.Lens' EdgePresetDeploymentOutput (Prelude.Maybe Prelude.Text)
+edgePresetDeploymentOutput_statusMessage = Lens.lens (\EdgePresetDeploymentOutput' {statusMessage} -> statusMessage) (\s@EdgePresetDeploymentOutput' {} a -> s {statusMessage = a} :: EdgePresetDeploymentOutput)
+
+-- | The deployment type created by SageMaker Edge Manager. Currently only
+-- supports Amazon Web Services IoT Greengrass Version 2 components.
+edgePresetDeploymentOutput_type :: Lens.Lens' EdgePresetDeploymentOutput EdgePresetDeploymentType
+edgePresetDeploymentOutput_type = Lens.lens (\EdgePresetDeploymentOutput' {type'} -> type') (\s@EdgePresetDeploymentOutput' {} a -> s {type' = a} :: EdgePresetDeploymentOutput)
+
+instance Data.FromJSON EdgePresetDeploymentOutput where
+  parseJSON =
+    Data.withObject
+      "EdgePresetDeploymentOutput"
+      ( \x ->
+          EdgePresetDeploymentOutput'
+            Prelude.<$> (x Data..:? "Artifact")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StatusMessage")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable EdgePresetDeploymentOutput where
+  hashWithSalt _salt EdgePresetDeploymentOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifact
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData EdgePresetDeploymentOutput where
+  rnf EdgePresetDeploymentOutput' {..} =
+    Prelude.rnf artifact
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentStatus.hs b/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.EdgePresetDeploymentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgePresetDeploymentStatus
+  ( EdgePresetDeploymentStatus
+      ( ..,
+        EdgePresetDeploymentStatus_COMPLETED,
+        EdgePresetDeploymentStatus_FAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EdgePresetDeploymentStatus = EdgePresetDeploymentStatus'
+  { fromEdgePresetDeploymentStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EdgePresetDeploymentStatus_COMPLETED :: EdgePresetDeploymentStatus
+pattern EdgePresetDeploymentStatus_COMPLETED = EdgePresetDeploymentStatus' "COMPLETED"
+
+pattern EdgePresetDeploymentStatus_FAILED :: EdgePresetDeploymentStatus
+pattern EdgePresetDeploymentStatus_FAILED = EdgePresetDeploymentStatus' "FAILED"
+
+{-# COMPLETE
+  EdgePresetDeploymentStatus_COMPLETED,
+  EdgePresetDeploymentStatus_FAILED,
+  EdgePresetDeploymentStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentType.hs b/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EdgePresetDeploymentType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.EdgePresetDeploymentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EdgePresetDeploymentType
+  ( EdgePresetDeploymentType
+      ( ..,
+        EdgePresetDeploymentType_GreengrassV2Component
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EdgePresetDeploymentType = EdgePresetDeploymentType'
+  { fromEdgePresetDeploymentType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EdgePresetDeploymentType_GreengrassV2Component :: EdgePresetDeploymentType
+pattern EdgePresetDeploymentType_GreengrassV2Component = EdgePresetDeploymentType' "GreengrassV2Component"
+
+{-# COMPLETE
+  EdgePresetDeploymentType_GreengrassV2Component,
+  EdgePresetDeploymentType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Endpoint.hs b/gen/Amazonka/SageMaker/Types/Endpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Endpoint.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Endpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Endpoint 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 Amazonka.SageMaker.Types.DataCaptureConfigSummary
+import Amazonka.SageMaker.Types.EndpointStatus
+import Amazonka.SageMaker.Types.MonitoringSchedule
+import Amazonka.SageMaker.Types.ProductionVariantSummary
+import Amazonka.SageMaker.Types.Tag
+
+-- | A hosted endpoint for real-time inference.
+--
+-- /See:/ 'newEndpoint' smart constructor.
+data Endpoint = Endpoint'
+  { dataCaptureConfig :: Prelude.Maybe DataCaptureConfigSummary,
+    -- | If the endpoint failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A list of monitoring schedules for the endpoint. For information about
+    -- model monitoring, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
+    monitoringSchedules :: Prelude.Maybe [MonitoringSchedule],
+    -- | A list of the production variants hosted on the endpoint. Each
+    -- production variant is a model.
+    productionVariants :: Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary),
+    -- | A list of the shadow variants hosted on the endpoint. Each shadow
+    -- variant is a model in shadow mode with production traffic replicated
+    -- from the proudction variant.
+    shadowProductionVariants :: Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary),
+    -- | A list of the tags associated with the endpoint. 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/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the endpoint.
+    endpointName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the endpoint.
+    endpointArn :: Prelude.Text,
+    -- | The endpoint configuration associated with the endpoint.
+    endpointConfigName :: Prelude.Text,
+    -- | The status of the endpoint.
+    endpointStatus :: EndpointStatus,
+    -- | The time that the endpoint was created.
+    creationTime :: Data.POSIX,
+    -- | The last time the endpoint was modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Endpoint' 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:
+--
+-- 'dataCaptureConfig', 'endpoint_dataCaptureConfig' - Undocumented member.
+--
+-- 'failureReason', 'endpoint_failureReason' - If the endpoint failed, the reason it failed.
+--
+-- 'monitoringSchedules', 'endpoint_monitoringSchedules' - A list of monitoring schedules for the endpoint. For information about
+-- model monitoring, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
+--
+-- 'productionVariants', 'endpoint_productionVariants' - A list of the production variants hosted on the endpoint. Each
+-- production variant is a model.
+--
+-- 'shadowProductionVariants', 'endpoint_shadowProductionVariants' - A list of the shadow variants hosted on the endpoint. Each shadow
+-- variant is a model in shadow mode with production traffic replicated
+-- from the proudction variant.
+--
+-- 'tags', 'endpoint_tags' - A list of the tags associated with the endpoint. 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/.
+--
+-- 'endpointName', 'endpoint_endpointName' - The name of the endpoint.
+--
+-- 'endpointArn', 'endpoint_endpointArn' - The Amazon Resource Name (ARN) of the endpoint.
+--
+-- 'endpointConfigName', 'endpoint_endpointConfigName' - The endpoint configuration associated with the endpoint.
+--
+-- 'endpointStatus', 'endpoint_endpointStatus' - The status of the endpoint.
+--
+-- 'creationTime', 'endpoint_creationTime' - The time that the endpoint was created.
+--
+-- 'lastModifiedTime', 'endpoint_lastModifiedTime' - The last time the endpoint was modified.
+newEndpoint ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  -- | 'endpointStatus'
+  EndpointStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  Endpoint
+newEndpoint
+  pEndpointName_
+  pEndpointArn_
+  pEndpointConfigName_
+  pEndpointStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    Endpoint'
+      { dataCaptureConfig = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        monitoringSchedules = Prelude.Nothing,
+        productionVariants = Prelude.Nothing,
+        shadowProductionVariants = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        endpointName = pEndpointName_,
+        endpointArn = pEndpointArn_,
+        endpointConfigName = pEndpointConfigName_,
+        endpointStatus = pEndpointStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | Undocumented member.
+endpoint_dataCaptureConfig :: Lens.Lens' Endpoint (Prelude.Maybe DataCaptureConfigSummary)
+endpoint_dataCaptureConfig = Lens.lens (\Endpoint' {dataCaptureConfig} -> dataCaptureConfig) (\s@Endpoint' {} a -> s {dataCaptureConfig = a} :: Endpoint)
+
+-- | If the endpoint failed, the reason it failed.
+endpoint_failureReason :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
+endpoint_failureReason = Lens.lens (\Endpoint' {failureReason} -> failureReason) (\s@Endpoint' {} a -> s {failureReason = a} :: Endpoint)
+
+-- | A list of monitoring schedules for the endpoint. For information about
+-- model monitoring, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
+endpoint_monitoringSchedules :: Lens.Lens' Endpoint (Prelude.Maybe [MonitoringSchedule])
+endpoint_monitoringSchedules = Lens.lens (\Endpoint' {monitoringSchedules} -> monitoringSchedules) (\s@Endpoint' {} a -> s {monitoringSchedules = a} :: Endpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the production variants hosted on the endpoint. Each
+-- production variant is a model.
+endpoint_productionVariants :: Lens.Lens' Endpoint (Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary))
+endpoint_productionVariants = Lens.lens (\Endpoint' {productionVariants} -> productionVariants) (\s@Endpoint' {} a -> s {productionVariants = a} :: Endpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the shadow variants hosted on the endpoint. Each shadow
+-- variant is a model in shadow mode with production traffic replicated
+-- from the proudction variant.
+endpoint_shadowProductionVariants :: Lens.Lens' Endpoint (Prelude.Maybe (Prelude.NonEmpty ProductionVariantSummary))
+endpoint_shadowProductionVariants = Lens.lens (\Endpoint' {shadowProductionVariants} -> shadowProductionVariants) (\s@Endpoint' {} a -> s {shadowProductionVariants = a} :: Endpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the tags associated with the endpoint. 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/.
+endpoint_tags :: Lens.Lens' Endpoint (Prelude.Maybe [Tag])
+endpoint_tags = Lens.lens (\Endpoint' {tags} -> tags) (\s@Endpoint' {} a -> s {tags = a} :: Endpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the endpoint.
+endpoint_endpointName :: Lens.Lens' Endpoint Prelude.Text
+endpoint_endpointName = Lens.lens (\Endpoint' {endpointName} -> endpointName) (\s@Endpoint' {} a -> s {endpointName = a} :: Endpoint)
+
+-- | The Amazon Resource Name (ARN) of the endpoint.
+endpoint_endpointArn :: Lens.Lens' Endpoint Prelude.Text
+endpoint_endpointArn = Lens.lens (\Endpoint' {endpointArn} -> endpointArn) (\s@Endpoint' {} a -> s {endpointArn = a} :: Endpoint)
+
+-- | The endpoint configuration associated with the endpoint.
+endpoint_endpointConfigName :: Lens.Lens' Endpoint Prelude.Text
+endpoint_endpointConfigName = Lens.lens (\Endpoint' {endpointConfigName} -> endpointConfigName) (\s@Endpoint' {} a -> s {endpointConfigName = a} :: Endpoint)
+
+-- | The status of the endpoint.
+endpoint_endpointStatus :: Lens.Lens' Endpoint EndpointStatus
+endpoint_endpointStatus = Lens.lens (\Endpoint' {endpointStatus} -> endpointStatus) (\s@Endpoint' {} a -> s {endpointStatus = a} :: Endpoint)
+
+-- | The time that the endpoint was created.
+endpoint_creationTime :: Lens.Lens' Endpoint Prelude.UTCTime
+endpoint_creationTime = Lens.lens (\Endpoint' {creationTime} -> creationTime) (\s@Endpoint' {} a -> s {creationTime = a} :: Endpoint) Prelude.. Data._Time
+
+-- | The last time the endpoint was modified.
+endpoint_lastModifiedTime :: Lens.Lens' Endpoint Prelude.UTCTime
+endpoint_lastModifiedTime = Lens.lens (\Endpoint' {lastModifiedTime} -> lastModifiedTime) (\s@Endpoint' {} a -> s {lastModifiedTime = a} :: Endpoint) Prelude.. Data._Time
+
+instance Data.FromJSON Endpoint where
+  parseJSON =
+    Data.withObject
+      "Endpoint"
+      ( \x ->
+          Endpoint'
+            Prelude.<$> (x Data..:? "DataCaptureConfig")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> ( x
+                            Data..:? "MonitoringSchedules"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "ProductionVariants")
+            Prelude.<*> (x Data..:? "ShadowProductionVariants")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "EndpointName")
+            Prelude.<*> (x Data..: "EndpointArn")
+            Prelude.<*> (x Data..: "EndpointConfigName")
+            Prelude.<*> (x Data..: "EndpointStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable Endpoint where
+  hashWithSalt _salt Endpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataCaptureConfig
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` monitoringSchedules
+      `Prelude.hashWithSalt` productionVariants
+      `Prelude.hashWithSalt` shadowProductionVariants
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` endpointArn
+      `Prelude.hashWithSalt` endpointConfigName
+      `Prelude.hashWithSalt` endpointStatus
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData Endpoint where
+  rnf Endpoint' {..} =
+    Prelude.rnf dataCaptureConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf monitoringSchedules
+      `Prelude.seq` Prelude.rnf productionVariants
+      `Prelude.seq` Prelude.rnf shadowProductionVariants
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf endpointArn
+      `Prelude.seq` Prelude.rnf endpointConfigName
+      `Prelude.seq` Prelude.rnf endpointStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/EndpointConfigSortKey.hs b/gen/Amazonka/SageMaker/Types/EndpointConfigSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointConfigSortKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.EndpointConfigSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointConfigSortKey
+  ( EndpointConfigSortKey
+      ( ..,
+        EndpointConfigSortKey_CreationTime,
+        EndpointConfigSortKey_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EndpointConfigSortKey = EndpointConfigSortKey'
+  { fromEndpointConfigSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EndpointConfigSortKey_CreationTime :: EndpointConfigSortKey
+pattern EndpointConfigSortKey_CreationTime = EndpointConfigSortKey' "CreationTime"
+
+pattern EndpointConfigSortKey_Name :: EndpointConfigSortKey
+pattern EndpointConfigSortKey_Name = EndpointConfigSortKey' "Name"
+
+{-# COMPLETE
+  EndpointConfigSortKey_CreationTime,
+  EndpointConfigSortKey_Name,
+  EndpointConfigSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/EndpointConfigSummary.hs b/gen/Amazonka/SageMaker/Types/EndpointConfigSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointConfigSummary.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointConfigSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointConfigSummary 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
+
+-- | Provides summary information for an endpoint configuration.
+--
+-- /See:/ 'newEndpointConfigSummary' smart constructor.
+data EndpointConfigSummary = EndpointConfigSummary'
+  { -- | The name of the endpoint configuration.
+    endpointConfigName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the endpoint configuration.
+    endpointConfigArn :: Prelude.Text,
+    -- | A timestamp that shows when the endpoint configuration was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointConfigSummary' 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:
+--
+-- 'endpointConfigName', 'endpointConfigSummary_endpointConfigName' - The name of the endpoint configuration.
+--
+-- 'endpointConfigArn', 'endpointConfigSummary_endpointConfigArn' - The Amazon Resource Name (ARN) of the endpoint configuration.
+--
+-- 'creationTime', 'endpointConfigSummary_creationTime' - A timestamp that shows when the endpoint configuration was created.
+newEndpointConfigSummary ::
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  -- | 'endpointConfigArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  EndpointConfigSummary
+newEndpointConfigSummary
+  pEndpointConfigName_
+  pEndpointConfigArn_
+  pCreationTime_ =
+    EndpointConfigSummary'
+      { endpointConfigName =
+          pEndpointConfigName_,
+        endpointConfigArn = pEndpointConfigArn_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The name of the endpoint configuration.
+endpointConfigSummary_endpointConfigName :: Lens.Lens' EndpointConfigSummary Prelude.Text
+endpointConfigSummary_endpointConfigName = Lens.lens (\EndpointConfigSummary' {endpointConfigName} -> endpointConfigName) (\s@EndpointConfigSummary' {} a -> s {endpointConfigName = a} :: EndpointConfigSummary)
+
+-- | The Amazon Resource Name (ARN) of the endpoint configuration.
+endpointConfigSummary_endpointConfigArn :: Lens.Lens' EndpointConfigSummary Prelude.Text
+endpointConfigSummary_endpointConfigArn = Lens.lens (\EndpointConfigSummary' {endpointConfigArn} -> endpointConfigArn) (\s@EndpointConfigSummary' {} a -> s {endpointConfigArn = a} :: EndpointConfigSummary)
+
+-- | A timestamp that shows when the endpoint configuration was created.
+endpointConfigSummary_creationTime :: Lens.Lens' EndpointConfigSummary Prelude.UTCTime
+endpointConfigSummary_creationTime = Lens.lens (\EndpointConfigSummary' {creationTime} -> creationTime) (\s@EndpointConfigSummary' {} a -> s {creationTime = a} :: EndpointConfigSummary) Prelude.. Data._Time
+
+instance Data.FromJSON EndpointConfigSummary where
+  parseJSON =
+    Data.withObject
+      "EndpointConfigSummary"
+      ( \x ->
+          EndpointConfigSummary'
+            Prelude.<$> (x Data..: "EndpointConfigName")
+            Prelude.<*> (x Data..: "EndpointConfigArn")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable EndpointConfigSummary where
+  hashWithSalt _salt EndpointConfigSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointConfigName
+      `Prelude.hashWithSalt` endpointConfigArn
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData EndpointConfigSummary where
+  rnf EndpointConfigSummary' {..} =
+    Prelude.rnf endpointConfigName
+      `Prelude.seq` Prelude.rnf endpointConfigArn
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/EndpointInfo.hs b/gen/Amazonka/SageMaker/Types/EndpointInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointInfo.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointInfo 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
+
+-- | Details about a customer endpoint that was compared in an Inference
+-- Recommender job.
+--
+-- /See:/ 'newEndpointInfo' smart constructor.
+data EndpointInfo = EndpointInfo'
+  { -- | The name of a customer\'s endpoint.
+    endpointName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointInfo' 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:
+--
+-- 'endpointName', 'endpointInfo_endpointName' - The name of a customer\'s endpoint.
+newEndpointInfo ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  EndpointInfo
+newEndpointInfo pEndpointName_ =
+  EndpointInfo' {endpointName = pEndpointName_}
+
+-- | The name of a customer\'s endpoint.
+endpointInfo_endpointName :: Lens.Lens' EndpointInfo Prelude.Text
+endpointInfo_endpointName = Lens.lens (\EndpointInfo' {endpointName} -> endpointName) (\s@EndpointInfo' {} a -> s {endpointName = a} :: EndpointInfo)
+
+instance Data.FromJSON EndpointInfo where
+  parseJSON =
+    Data.withObject
+      "EndpointInfo"
+      ( \x ->
+          EndpointInfo' Prelude.<$> (x Data..: "EndpointName")
+      )
+
+instance Prelude.Hashable EndpointInfo where
+  hashWithSalt _salt EndpointInfo' {..} =
+    _salt `Prelude.hashWithSalt` endpointName
+
+instance Prelude.NFData EndpointInfo where
+  rnf EndpointInfo' {..} = Prelude.rnf endpointName
+
+instance Data.ToJSON EndpointInfo where
+  toJSON EndpointInfo' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("EndpointName" Data..= endpointName)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EndpointInput.hs b/gen/Amazonka/SageMaker/Types/EndpointInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointInput.hs
@@ -0,0 +1,245 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointInput 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 Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+import Amazonka.SageMaker.Types.ProcessingS3InputMode
+
+-- | Input object for the endpoint
+--
+-- /See:/ 'newEndpointInput' smart constructor.
+data EndpointInput = EndpointInput'
+  { -- | If specified, monitoring jobs substract this time from the end time. For
+    -- information about using offsets for scheduling monitoring jobs, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+    endTimeOffset :: Prelude.Maybe Prelude.Text,
+    -- | The attributes of the input data that are the input features.
+    featuresAttribute :: Prelude.Maybe Prelude.Text,
+    -- | The attribute of the input data that represents the ground truth label.
+    inferenceAttribute :: Prelude.Maybe Prelude.Text,
+    -- | In a classification problem, the attribute that represents the class
+    -- probability.
+    probabilityAttribute :: Prelude.Maybe Prelude.Text,
+    -- | The threshold for the class probability to be evaluated as a positive
+    -- result.
+    probabilityThresholdAttribute :: Prelude.Maybe Prelude.Double,
+    -- | Whether input data distributed in Amazon S3 is fully replicated or
+    -- sharded by an S3 key. Defaults to @FullyReplicated@
+    s3DataDistributionType :: Prelude.Maybe ProcessingS3DataDistributionType,
+    -- | Whether the @Pipe@ or @File@ is used as the input mode for transferring
+    -- data for the monitoring job. @Pipe@ mode is recommended for large
+    -- datasets. @File@ mode is useful for small files that fit in memory.
+    -- Defaults to @File@.
+    s3InputMode :: Prelude.Maybe ProcessingS3InputMode,
+    -- | If specified, monitoring jobs substract this time from the start time.
+    -- For information about using offsets for scheduling monitoring jobs, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+    startTimeOffset :: Prelude.Maybe Prelude.Text,
+    -- | An endpoint in customer\'s account which has enabled @DataCaptureConfig@
+    -- enabled.
+    endpointName :: Prelude.Text,
+    -- | Path to the filesystem where the endpoint data is available to the
+    -- container.
+    localPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointInput' 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:
+--
+-- 'endTimeOffset', 'endpointInput_endTimeOffset' - If specified, monitoring jobs substract this time from the end time. For
+-- information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+--
+-- 'featuresAttribute', 'endpointInput_featuresAttribute' - The attributes of the input data that are the input features.
+--
+-- 'inferenceAttribute', 'endpointInput_inferenceAttribute' - The attribute of the input data that represents the ground truth label.
+--
+-- 'probabilityAttribute', 'endpointInput_probabilityAttribute' - In a classification problem, the attribute that represents the class
+-- probability.
+--
+-- 'probabilityThresholdAttribute', 'endpointInput_probabilityThresholdAttribute' - The threshold for the class probability to be evaluated as a positive
+-- result.
+--
+-- 's3DataDistributionType', 'endpointInput_s3DataDistributionType' - Whether input data distributed in Amazon S3 is fully replicated or
+-- sharded by an S3 key. Defaults to @FullyReplicated@
+--
+-- 's3InputMode', 'endpointInput_s3InputMode' - Whether the @Pipe@ or @File@ is used as the input mode for transferring
+-- data for the monitoring job. @Pipe@ mode is recommended for large
+-- datasets. @File@ mode is useful for small files that fit in memory.
+-- Defaults to @File@.
+--
+-- 'startTimeOffset', 'endpointInput_startTimeOffset' - If specified, monitoring jobs substract this time from the start time.
+-- For information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+--
+-- 'endpointName', 'endpointInput_endpointName' - An endpoint in customer\'s account which has enabled @DataCaptureConfig@
+-- enabled.
+--
+-- 'localPath', 'endpointInput_localPath' - Path to the filesystem where the endpoint data is available to the
+-- container.
+newEndpointInput ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'localPath'
+  Prelude.Text ->
+  EndpointInput
+newEndpointInput pEndpointName_ pLocalPath_ =
+  EndpointInput'
+    { endTimeOffset = Prelude.Nothing,
+      featuresAttribute = Prelude.Nothing,
+      inferenceAttribute = Prelude.Nothing,
+      probabilityAttribute = Prelude.Nothing,
+      probabilityThresholdAttribute = Prelude.Nothing,
+      s3DataDistributionType = Prelude.Nothing,
+      s3InputMode = Prelude.Nothing,
+      startTimeOffset = Prelude.Nothing,
+      endpointName = pEndpointName_,
+      localPath = pLocalPath_
+    }
+
+-- | If specified, monitoring jobs substract this time from the end time. For
+-- information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+endpointInput_endTimeOffset :: Lens.Lens' EndpointInput (Prelude.Maybe Prelude.Text)
+endpointInput_endTimeOffset = Lens.lens (\EndpointInput' {endTimeOffset} -> endTimeOffset) (\s@EndpointInput' {} a -> s {endTimeOffset = a} :: EndpointInput)
+
+-- | The attributes of the input data that are the input features.
+endpointInput_featuresAttribute :: Lens.Lens' EndpointInput (Prelude.Maybe Prelude.Text)
+endpointInput_featuresAttribute = Lens.lens (\EndpointInput' {featuresAttribute} -> featuresAttribute) (\s@EndpointInput' {} a -> s {featuresAttribute = a} :: EndpointInput)
+
+-- | The attribute of the input data that represents the ground truth label.
+endpointInput_inferenceAttribute :: Lens.Lens' EndpointInput (Prelude.Maybe Prelude.Text)
+endpointInput_inferenceAttribute = Lens.lens (\EndpointInput' {inferenceAttribute} -> inferenceAttribute) (\s@EndpointInput' {} a -> s {inferenceAttribute = a} :: EndpointInput)
+
+-- | In a classification problem, the attribute that represents the class
+-- probability.
+endpointInput_probabilityAttribute :: Lens.Lens' EndpointInput (Prelude.Maybe Prelude.Text)
+endpointInput_probabilityAttribute = Lens.lens (\EndpointInput' {probabilityAttribute} -> probabilityAttribute) (\s@EndpointInput' {} a -> s {probabilityAttribute = a} :: EndpointInput)
+
+-- | The threshold for the class probability to be evaluated as a positive
+-- result.
+endpointInput_probabilityThresholdAttribute :: Lens.Lens' EndpointInput (Prelude.Maybe Prelude.Double)
+endpointInput_probabilityThresholdAttribute = Lens.lens (\EndpointInput' {probabilityThresholdAttribute} -> probabilityThresholdAttribute) (\s@EndpointInput' {} a -> s {probabilityThresholdAttribute = a} :: EndpointInput)
+
+-- | Whether input data distributed in Amazon S3 is fully replicated or
+-- sharded by an S3 key. Defaults to @FullyReplicated@
+endpointInput_s3DataDistributionType :: Lens.Lens' EndpointInput (Prelude.Maybe ProcessingS3DataDistributionType)
+endpointInput_s3DataDistributionType = Lens.lens (\EndpointInput' {s3DataDistributionType} -> s3DataDistributionType) (\s@EndpointInput' {} a -> s {s3DataDistributionType = a} :: EndpointInput)
+
+-- | Whether the @Pipe@ or @File@ is used as the input mode for transferring
+-- data for the monitoring job. @Pipe@ mode is recommended for large
+-- datasets. @File@ mode is useful for small files that fit in memory.
+-- Defaults to @File@.
+endpointInput_s3InputMode :: Lens.Lens' EndpointInput (Prelude.Maybe ProcessingS3InputMode)
+endpointInput_s3InputMode = Lens.lens (\EndpointInput' {s3InputMode} -> s3InputMode) (\s@EndpointInput' {} a -> s {s3InputMode = a} :: EndpointInput)
+
+-- | If specified, monitoring jobs substract this time from the start time.
+-- For information about using offsets for scheduling monitoring jobs, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-schedule.html Schedule Model Quality Monitoring Jobs>.
+endpointInput_startTimeOffset :: Lens.Lens' EndpointInput (Prelude.Maybe Prelude.Text)
+endpointInput_startTimeOffset = Lens.lens (\EndpointInput' {startTimeOffset} -> startTimeOffset) (\s@EndpointInput' {} a -> s {startTimeOffset = a} :: EndpointInput)
+
+-- | An endpoint in customer\'s account which has enabled @DataCaptureConfig@
+-- enabled.
+endpointInput_endpointName :: Lens.Lens' EndpointInput Prelude.Text
+endpointInput_endpointName = Lens.lens (\EndpointInput' {endpointName} -> endpointName) (\s@EndpointInput' {} a -> s {endpointName = a} :: EndpointInput)
+
+-- | Path to the filesystem where the endpoint data is available to the
+-- container.
+endpointInput_localPath :: Lens.Lens' EndpointInput Prelude.Text
+endpointInput_localPath = Lens.lens (\EndpointInput' {localPath} -> localPath) (\s@EndpointInput' {} a -> s {localPath = a} :: EndpointInput)
+
+instance Data.FromJSON EndpointInput where
+  parseJSON =
+    Data.withObject
+      "EndpointInput"
+      ( \x ->
+          EndpointInput'
+            Prelude.<$> (x Data..:? "EndTimeOffset")
+            Prelude.<*> (x Data..:? "FeaturesAttribute")
+            Prelude.<*> (x Data..:? "InferenceAttribute")
+            Prelude.<*> (x Data..:? "ProbabilityAttribute")
+            Prelude.<*> (x Data..:? "ProbabilityThresholdAttribute")
+            Prelude.<*> (x Data..:? "S3DataDistributionType")
+            Prelude.<*> (x Data..:? "S3InputMode")
+            Prelude.<*> (x Data..:? "StartTimeOffset")
+            Prelude.<*> (x Data..: "EndpointName")
+            Prelude.<*> (x Data..: "LocalPath")
+      )
+
+instance Prelude.Hashable EndpointInput where
+  hashWithSalt _salt EndpointInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTimeOffset
+      `Prelude.hashWithSalt` featuresAttribute
+      `Prelude.hashWithSalt` inferenceAttribute
+      `Prelude.hashWithSalt` probabilityAttribute
+      `Prelude.hashWithSalt` probabilityThresholdAttribute
+      `Prelude.hashWithSalt` s3DataDistributionType
+      `Prelude.hashWithSalt` s3InputMode
+      `Prelude.hashWithSalt` startTimeOffset
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` localPath
+
+instance Prelude.NFData EndpointInput where
+  rnf EndpointInput' {..} =
+    Prelude.rnf endTimeOffset
+      `Prelude.seq` Prelude.rnf featuresAttribute
+      `Prelude.seq` Prelude.rnf inferenceAttribute
+      `Prelude.seq` Prelude.rnf probabilityAttribute
+      `Prelude.seq` Prelude.rnf probabilityThresholdAttribute
+      `Prelude.seq` Prelude.rnf s3DataDistributionType
+      `Prelude.seq` Prelude.rnf s3InputMode
+      `Prelude.seq` Prelude.rnf startTimeOffset
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf localPath
+
+instance Data.ToJSON EndpointInput where
+  toJSON EndpointInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EndTimeOffset" Data..=) Prelude.<$> endTimeOffset,
+            ("FeaturesAttribute" Data..=)
+              Prelude.<$> featuresAttribute,
+            ("InferenceAttribute" Data..=)
+              Prelude.<$> inferenceAttribute,
+            ("ProbabilityAttribute" Data..=)
+              Prelude.<$> probabilityAttribute,
+            ("ProbabilityThresholdAttribute" Data..=)
+              Prelude.<$> probabilityThresholdAttribute,
+            ("S3DataDistributionType" Data..=)
+              Prelude.<$> s3DataDistributionType,
+            ("S3InputMode" Data..=) Prelude.<$> s3InputMode,
+            ("StartTimeOffset" Data..=)
+              Prelude.<$> startTimeOffset,
+            Prelude.Just ("EndpointName" Data..= endpointName),
+            Prelude.Just ("LocalPath" Data..= localPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EndpointInputConfiguration.hs b/gen/Amazonka/SageMaker/Types/EndpointInputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointInputConfiguration.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointInputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointInputConfiguration 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 Amazonka.SageMaker.Types.EnvironmentParameterRanges
+import Amazonka.SageMaker.Types.ProductionVariantInstanceType
+
+-- | The endpoint configuration for the load test.
+--
+-- /See:/ 'newEndpointInputConfiguration' smart constructor.
+data EndpointInputConfiguration = EndpointInputConfiguration'
+  { -- | The parameter you want to benchmark against.
+    environmentParameterRanges :: Prelude.Maybe EnvironmentParameterRanges,
+    -- | The inference specification name in the model package version.
+    inferenceSpecificationName :: Prelude.Maybe Prelude.Text,
+    -- | The instance types to use for the load test.
+    instanceType :: ProductionVariantInstanceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointInputConfiguration' 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:
+--
+-- 'environmentParameterRanges', 'endpointInputConfiguration_environmentParameterRanges' - The parameter you want to benchmark against.
+--
+-- 'inferenceSpecificationName', 'endpointInputConfiguration_inferenceSpecificationName' - The inference specification name in the model package version.
+--
+-- 'instanceType', 'endpointInputConfiguration_instanceType' - The instance types to use for the load test.
+newEndpointInputConfiguration ::
+  -- | 'instanceType'
+  ProductionVariantInstanceType ->
+  EndpointInputConfiguration
+newEndpointInputConfiguration pInstanceType_ =
+  EndpointInputConfiguration'
+    { environmentParameterRanges =
+        Prelude.Nothing,
+      inferenceSpecificationName = Prelude.Nothing,
+      instanceType = pInstanceType_
+    }
+
+-- | The parameter you want to benchmark against.
+endpointInputConfiguration_environmentParameterRanges :: Lens.Lens' EndpointInputConfiguration (Prelude.Maybe EnvironmentParameterRanges)
+endpointInputConfiguration_environmentParameterRanges = Lens.lens (\EndpointInputConfiguration' {environmentParameterRanges} -> environmentParameterRanges) (\s@EndpointInputConfiguration' {} a -> s {environmentParameterRanges = a} :: EndpointInputConfiguration)
+
+-- | The inference specification name in the model package version.
+endpointInputConfiguration_inferenceSpecificationName :: Lens.Lens' EndpointInputConfiguration (Prelude.Maybe Prelude.Text)
+endpointInputConfiguration_inferenceSpecificationName = Lens.lens (\EndpointInputConfiguration' {inferenceSpecificationName} -> inferenceSpecificationName) (\s@EndpointInputConfiguration' {} a -> s {inferenceSpecificationName = a} :: EndpointInputConfiguration)
+
+-- | The instance types to use for the load test.
+endpointInputConfiguration_instanceType :: Lens.Lens' EndpointInputConfiguration ProductionVariantInstanceType
+endpointInputConfiguration_instanceType = Lens.lens (\EndpointInputConfiguration' {instanceType} -> instanceType) (\s@EndpointInputConfiguration' {} a -> s {instanceType = a} :: EndpointInputConfiguration)
+
+instance Data.FromJSON EndpointInputConfiguration where
+  parseJSON =
+    Data.withObject
+      "EndpointInputConfiguration"
+      ( \x ->
+          EndpointInputConfiguration'
+            Prelude.<$> (x Data..:? "EnvironmentParameterRanges")
+            Prelude.<*> (x Data..:? "InferenceSpecificationName")
+            Prelude.<*> (x Data..: "InstanceType")
+      )
+
+instance Prelude.Hashable EndpointInputConfiguration where
+  hashWithSalt _salt EndpointInputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` environmentParameterRanges
+      `Prelude.hashWithSalt` inferenceSpecificationName
+      `Prelude.hashWithSalt` instanceType
+
+instance Prelude.NFData EndpointInputConfiguration where
+  rnf EndpointInputConfiguration' {..} =
+    Prelude.rnf environmentParameterRanges
+      `Prelude.seq` Prelude.rnf inferenceSpecificationName
+      `Prelude.seq` Prelude.rnf instanceType
+
+instance Data.ToJSON EndpointInputConfiguration where
+  toJSON EndpointInputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnvironmentParameterRanges" Data..=)
+              Prelude.<$> environmentParameterRanges,
+            ("InferenceSpecificationName" Data..=)
+              Prelude.<$> inferenceSpecificationName,
+            Prelude.Just ("InstanceType" Data..= instanceType)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/EndpointMetadata.hs b/gen/Amazonka/SageMaker/Types/EndpointMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointMetadata.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointMetadata 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 Amazonka.SageMaker.Types.EndpointStatus
+
+-- | The metadata of the endpoint.
+--
+-- /See:/ 'newEndpointMetadata' smart constructor.
+data EndpointMetadata = EndpointMetadata'
+  { -- | The name of the endpoint configuration.
+    endpointConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the endpoint. For possible values of the status of an
+    -- endpoint, see EndpointSummary$EndpointStatus.
+    endpointStatus :: Prelude.Maybe EndpointStatus,
+    -- | If the status of the endpoint is @Failed@, or the status is @InService@
+    -- but update operation fails, this provides the reason why it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the endpoint.
+    endpointName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointMetadata' 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:
+--
+-- 'endpointConfigName', 'endpointMetadata_endpointConfigName' - The name of the endpoint configuration.
+--
+-- 'endpointStatus', 'endpointMetadata_endpointStatus' - The status of the endpoint. For possible values of the status of an
+-- endpoint, see EndpointSummary$EndpointStatus.
+--
+-- 'failureReason', 'endpointMetadata_failureReason' - If the status of the endpoint is @Failed@, or the status is @InService@
+-- but update operation fails, this provides the reason why it failed.
+--
+-- 'endpointName', 'endpointMetadata_endpointName' - The name of the endpoint.
+newEndpointMetadata ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  EndpointMetadata
+newEndpointMetadata pEndpointName_ =
+  EndpointMetadata'
+    { endpointConfigName =
+        Prelude.Nothing,
+      endpointStatus = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      endpointName = pEndpointName_
+    }
+
+-- | The name of the endpoint configuration.
+endpointMetadata_endpointConfigName :: Lens.Lens' EndpointMetadata (Prelude.Maybe Prelude.Text)
+endpointMetadata_endpointConfigName = Lens.lens (\EndpointMetadata' {endpointConfigName} -> endpointConfigName) (\s@EndpointMetadata' {} a -> s {endpointConfigName = a} :: EndpointMetadata)
+
+-- | The status of the endpoint. For possible values of the status of an
+-- endpoint, see EndpointSummary$EndpointStatus.
+endpointMetadata_endpointStatus :: Lens.Lens' EndpointMetadata (Prelude.Maybe EndpointStatus)
+endpointMetadata_endpointStatus = Lens.lens (\EndpointMetadata' {endpointStatus} -> endpointStatus) (\s@EndpointMetadata' {} a -> s {endpointStatus = a} :: EndpointMetadata)
+
+-- | If the status of the endpoint is @Failed@, or the status is @InService@
+-- but update operation fails, this provides the reason why it failed.
+endpointMetadata_failureReason :: Lens.Lens' EndpointMetadata (Prelude.Maybe Prelude.Text)
+endpointMetadata_failureReason = Lens.lens (\EndpointMetadata' {failureReason} -> failureReason) (\s@EndpointMetadata' {} a -> s {failureReason = a} :: EndpointMetadata)
+
+-- | The name of the endpoint.
+endpointMetadata_endpointName :: Lens.Lens' EndpointMetadata Prelude.Text
+endpointMetadata_endpointName = Lens.lens (\EndpointMetadata' {endpointName} -> endpointName) (\s@EndpointMetadata' {} a -> s {endpointName = a} :: EndpointMetadata)
+
+instance Data.FromJSON EndpointMetadata where
+  parseJSON =
+    Data.withObject
+      "EndpointMetadata"
+      ( \x ->
+          EndpointMetadata'
+            Prelude.<$> (x Data..:? "EndpointConfigName")
+            Prelude.<*> (x Data..:? "EndpointStatus")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "EndpointName")
+      )
+
+instance Prelude.Hashable EndpointMetadata where
+  hashWithSalt _salt EndpointMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointConfigName
+      `Prelude.hashWithSalt` endpointStatus
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` endpointName
+
+instance Prelude.NFData EndpointMetadata where
+  rnf EndpointMetadata' {..} =
+    Prelude.rnf endpointConfigName
+      `Prelude.seq` Prelude.rnf endpointStatus
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf endpointName
diff --git a/gen/Amazonka/SageMaker/Types/EndpointOutputConfiguration.hs b/gen/Amazonka/SageMaker/Types/EndpointOutputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointOutputConfiguration.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointOutputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointOutputConfiguration 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 Amazonka.SageMaker.Types.ProductionVariantInstanceType
+
+-- | The endpoint configuration made by Inference Recommender during a
+-- recommendation job.
+--
+-- /See:/ 'newEndpointOutputConfiguration' smart constructor.
+data EndpointOutputConfiguration = EndpointOutputConfiguration'
+  { -- | The name of the endpoint made during a recommendation job.
+    endpointName :: Prelude.Text,
+    -- | The name of the production variant (deployed model) made during a
+    -- recommendation job.
+    variantName :: Prelude.Text,
+    -- | The instance type recommended by Amazon SageMaker Inference Recommender.
+    instanceType :: ProductionVariantInstanceType,
+    -- | The number of instances recommended to launch initially.
+    initialInstanceCount :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointOutputConfiguration' 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:
+--
+-- 'endpointName', 'endpointOutputConfiguration_endpointName' - The name of the endpoint made during a recommendation job.
+--
+-- 'variantName', 'endpointOutputConfiguration_variantName' - The name of the production variant (deployed model) made during a
+-- recommendation job.
+--
+-- 'instanceType', 'endpointOutputConfiguration_instanceType' - The instance type recommended by Amazon SageMaker Inference Recommender.
+--
+-- 'initialInstanceCount', 'endpointOutputConfiguration_initialInstanceCount' - The number of instances recommended to launch initially.
+newEndpointOutputConfiguration ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'variantName'
+  Prelude.Text ->
+  -- | 'instanceType'
+  ProductionVariantInstanceType ->
+  -- | 'initialInstanceCount'
+  Prelude.Int ->
+  EndpointOutputConfiguration
+newEndpointOutputConfiguration
+  pEndpointName_
+  pVariantName_
+  pInstanceType_
+  pInitialInstanceCount_ =
+    EndpointOutputConfiguration'
+      { endpointName =
+          pEndpointName_,
+        variantName = pVariantName_,
+        instanceType = pInstanceType_,
+        initialInstanceCount = pInitialInstanceCount_
+      }
+
+-- | The name of the endpoint made during a recommendation job.
+endpointOutputConfiguration_endpointName :: Lens.Lens' EndpointOutputConfiguration Prelude.Text
+endpointOutputConfiguration_endpointName = Lens.lens (\EndpointOutputConfiguration' {endpointName} -> endpointName) (\s@EndpointOutputConfiguration' {} a -> s {endpointName = a} :: EndpointOutputConfiguration)
+
+-- | The name of the production variant (deployed model) made during a
+-- recommendation job.
+endpointOutputConfiguration_variantName :: Lens.Lens' EndpointOutputConfiguration Prelude.Text
+endpointOutputConfiguration_variantName = Lens.lens (\EndpointOutputConfiguration' {variantName} -> variantName) (\s@EndpointOutputConfiguration' {} a -> s {variantName = a} :: EndpointOutputConfiguration)
+
+-- | The instance type recommended by Amazon SageMaker Inference Recommender.
+endpointOutputConfiguration_instanceType :: Lens.Lens' EndpointOutputConfiguration ProductionVariantInstanceType
+endpointOutputConfiguration_instanceType = Lens.lens (\EndpointOutputConfiguration' {instanceType} -> instanceType) (\s@EndpointOutputConfiguration' {} a -> s {instanceType = a} :: EndpointOutputConfiguration)
+
+-- | The number of instances recommended to launch initially.
+endpointOutputConfiguration_initialInstanceCount :: Lens.Lens' EndpointOutputConfiguration Prelude.Int
+endpointOutputConfiguration_initialInstanceCount = Lens.lens (\EndpointOutputConfiguration' {initialInstanceCount} -> initialInstanceCount) (\s@EndpointOutputConfiguration' {} a -> s {initialInstanceCount = a} :: EndpointOutputConfiguration)
+
+instance Data.FromJSON EndpointOutputConfiguration where
+  parseJSON =
+    Data.withObject
+      "EndpointOutputConfiguration"
+      ( \x ->
+          EndpointOutputConfiguration'
+            Prelude.<$> (x Data..: "EndpointName")
+            Prelude.<*> (x Data..: "VariantName")
+            Prelude.<*> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "InitialInstanceCount")
+      )
+
+instance Prelude.Hashable EndpointOutputConfiguration where
+  hashWithSalt _salt EndpointOutputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` variantName
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` initialInstanceCount
+
+instance Prelude.NFData EndpointOutputConfiguration where
+  rnf EndpointOutputConfiguration' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf variantName
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf initialInstanceCount
diff --git a/gen/Amazonka/SageMaker/Types/EndpointPerformance.hs b/gen/Amazonka/SageMaker/Types/EndpointPerformance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointPerformance.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointPerformance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointPerformance 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 Amazonka.SageMaker.Types.EndpointInfo
+import Amazonka.SageMaker.Types.InferenceMetrics
+
+-- | The performance results from running an Inference Recommender job on an
+-- existing endpoint.
+--
+-- /See:/ 'newEndpointPerformance' smart constructor.
+data EndpointPerformance = EndpointPerformance'
+  { -- | The metrics for an existing endpoint.
+    metrics :: InferenceMetrics,
+    endpointInfo :: EndpointInfo
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointPerformance' 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:
+--
+-- 'metrics', 'endpointPerformance_metrics' - The metrics for an existing endpoint.
+--
+-- 'endpointInfo', 'endpointPerformance_endpointInfo' - Undocumented member.
+newEndpointPerformance ::
+  -- | 'metrics'
+  InferenceMetrics ->
+  -- | 'endpointInfo'
+  EndpointInfo ->
+  EndpointPerformance
+newEndpointPerformance pMetrics_ pEndpointInfo_ =
+  EndpointPerformance'
+    { metrics = pMetrics_,
+      endpointInfo = pEndpointInfo_
+    }
+
+-- | The metrics for an existing endpoint.
+endpointPerformance_metrics :: Lens.Lens' EndpointPerformance InferenceMetrics
+endpointPerformance_metrics = Lens.lens (\EndpointPerformance' {metrics} -> metrics) (\s@EndpointPerformance' {} a -> s {metrics = a} :: EndpointPerformance)
+
+-- | Undocumented member.
+endpointPerformance_endpointInfo :: Lens.Lens' EndpointPerformance EndpointInfo
+endpointPerformance_endpointInfo = Lens.lens (\EndpointPerformance' {endpointInfo} -> endpointInfo) (\s@EndpointPerformance' {} a -> s {endpointInfo = a} :: EndpointPerformance)
+
+instance Data.FromJSON EndpointPerformance where
+  parseJSON =
+    Data.withObject
+      "EndpointPerformance"
+      ( \x ->
+          EndpointPerformance'
+            Prelude.<$> (x Data..: "Metrics")
+            Prelude.<*> (x Data..: "EndpointInfo")
+      )
+
+instance Prelude.Hashable EndpointPerformance where
+  hashWithSalt _salt EndpointPerformance' {..} =
+    _salt
+      `Prelude.hashWithSalt` metrics
+      `Prelude.hashWithSalt` endpointInfo
+
+instance Prelude.NFData EndpointPerformance where
+  rnf EndpointPerformance' {..} =
+    Prelude.rnf metrics
+      `Prelude.seq` Prelude.rnf endpointInfo
diff --git a/gen/Amazonka/SageMaker/Types/EndpointSortKey.hs b/gen/Amazonka/SageMaker/Types/EndpointSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.EndpointSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointSortKey
+  ( EndpointSortKey
+      ( ..,
+        EndpointSortKey_CreationTime,
+        EndpointSortKey_Name,
+        EndpointSortKey_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EndpointSortKey = EndpointSortKey'
+  { fromEndpointSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EndpointSortKey_CreationTime :: EndpointSortKey
+pattern EndpointSortKey_CreationTime = EndpointSortKey' "CreationTime"
+
+pattern EndpointSortKey_Name :: EndpointSortKey
+pattern EndpointSortKey_Name = EndpointSortKey' "Name"
+
+pattern EndpointSortKey_Status :: EndpointSortKey
+pattern EndpointSortKey_Status = EndpointSortKey' "Status"
+
+{-# COMPLETE
+  EndpointSortKey_CreationTime,
+  EndpointSortKey_Name,
+  EndpointSortKey_Status,
+  EndpointSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/EndpointStatus.hs b/gen/Amazonka/SageMaker/Types/EndpointStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointStatus.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.EndpointStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointStatus
+  ( EndpointStatus
+      ( ..,
+        EndpointStatus_Creating,
+        EndpointStatus_Deleting,
+        EndpointStatus_Failed,
+        EndpointStatus_InService,
+        EndpointStatus_OutOfService,
+        EndpointStatus_RollingBack,
+        EndpointStatus_SystemUpdating,
+        EndpointStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EndpointStatus = EndpointStatus'
+  { fromEndpointStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EndpointStatus_Creating :: EndpointStatus
+pattern EndpointStatus_Creating = EndpointStatus' "Creating"
+
+pattern EndpointStatus_Deleting :: EndpointStatus
+pattern EndpointStatus_Deleting = EndpointStatus' "Deleting"
+
+pattern EndpointStatus_Failed :: EndpointStatus
+pattern EndpointStatus_Failed = EndpointStatus' "Failed"
+
+pattern EndpointStatus_InService :: EndpointStatus
+pattern EndpointStatus_InService = EndpointStatus' "InService"
+
+pattern EndpointStatus_OutOfService :: EndpointStatus
+pattern EndpointStatus_OutOfService = EndpointStatus' "OutOfService"
+
+pattern EndpointStatus_RollingBack :: EndpointStatus
+pattern EndpointStatus_RollingBack = EndpointStatus' "RollingBack"
+
+pattern EndpointStatus_SystemUpdating :: EndpointStatus
+pattern EndpointStatus_SystemUpdating = EndpointStatus' "SystemUpdating"
+
+pattern EndpointStatus_Updating :: EndpointStatus
+pattern EndpointStatus_Updating = EndpointStatus' "Updating"
+
+{-# COMPLETE
+  EndpointStatus_Creating,
+  EndpointStatus_Deleting,
+  EndpointStatus_Failed,
+  EndpointStatus_InService,
+  EndpointStatus_OutOfService,
+  EndpointStatus_RollingBack,
+  EndpointStatus_SystemUpdating,
+  EndpointStatus_Updating,
+  EndpointStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/EndpointSummary.hs b/gen/Amazonka/SageMaker/Types/EndpointSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EndpointSummary.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EndpointSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EndpointSummary 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 Amazonka.SageMaker.Types.EndpointStatus
+
+-- | Provides summary information for an endpoint.
+--
+-- /See:/ 'newEndpointSummary' smart constructor.
+data EndpointSummary = EndpointSummary'
+  { -- | The name of the endpoint.
+    endpointName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the endpoint.
+    endpointArn :: Prelude.Text,
+    -- | A timestamp that shows when the endpoint was created.
+    creationTime :: Data.POSIX,
+    -- | A timestamp that shows when the endpoint was last modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The status of the endpoint.
+    --
+    -- -   @OutOfService@: Endpoint is not available to take incoming requests.
+    --
+    -- -   @Creating@: CreateEndpoint is executing.
+    --
+    -- -   @Updating@: UpdateEndpoint or UpdateEndpointWeightsAndCapacities is
+    --     executing.
+    --
+    -- -   @SystemUpdating@: Endpoint is undergoing maintenance and cannot be
+    --     updated or deleted or re-scaled until it has completed. This
+    --     maintenance operation does not change any customer-specified values
+    --     such as VPC config, KMS encryption, model, instance type, or
+    --     instance count.
+    --
+    -- -   @RollingBack@: Endpoint fails to scale up or down or change its
+    --     variant weight and is in the process of rolling back to its previous
+    --     configuration. Once the rollback completes, endpoint returns to an
+    --     @InService@ status. This transitional status only applies to an
+    --     endpoint that has autoscaling enabled and is undergoing variant
+    --     weight or capacity changes as part of an
+    --     UpdateEndpointWeightsAndCapacities call or when the
+    --     UpdateEndpointWeightsAndCapacities operation is called explicitly.
+    --
+    -- -   @InService@: Endpoint is available to process incoming requests.
+    --
+    -- -   @Deleting@: DeleteEndpoint is executing.
+    --
+    -- -   @Failed@: Endpoint could not be created, updated, or re-scaled. Use
+    --     DescribeEndpointOutput$FailureReason for information about the
+    --     failure. DeleteEndpoint is the only operation that can be performed
+    --     on a failed endpoint.
+    --
+    -- To get a list of endpoints with a specified status, use the
+    -- ListEndpointsInput$StatusEquals filter.
+    endpointStatus :: EndpointStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EndpointSummary' 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:
+--
+-- 'endpointName', 'endpointSummary_endpointName' - The name of the endpoint.
+--
+-- 'endpointArn', 'endpointSummary_endpointArn' - The Amazon Resource Name (ARN) of the endpoint.
+--
+-- 'creationTime', 'endpointSummary_creationTime' - A timestamp that shows when the endpoint was created.
+--
+-- 'lastModifiedTime', 'endpointSummary_lastModifiedTime' - A timestamp that shows when the endpoint was last modified.
+--
+-- 'endpointStatus', 'endpointSummary_endpointStatus' - The status of the endpoint.
+--
+-- -   @OutOfService@: Endpoint is not available to take incoming requests.
+--
+-- -   @Creating@: CreateEndpoint is executing.
+--
+-- -   @Updating@: UpdateEndpoint or UpdateEndpointWeightsAndCapacities is
+--     executing.
+--
+-- -   @SystemUpdating@: Endpoint is undergoing maintenance and cannot be
+--     updated or deleted or re-scaled until it has completed. This
+--     maintenance operation does not change any customer-specified values
+--     such as VPC config, KMS encryption, model, instance type, or
+--     instance count.
+--
+-- -   @RollingBack@: Endpoint fails to scale up or down or change its
+--     variant weight and is in the process of rolling back to its previous
+--     configuration. Once the rollback completes, endpoint returns to an
+--     @InService@ status. This transitional status only applies to an
+--     endpoint that has autoscaling enabled and is undergoing variant
+--     weight or capacity changes as part of an
+--     UpdateEndpointWeightsAndCapacities call or when the
+--     UpdateEndpointWeightsAndCapacities operation is called explicitly.
+--
+-- -   @InService@: Endpoint is available to process incoming requests.
+--
+-- -   @Deleting@: DeleteEndpoint is executing.
+--
+-- -   @Failed@: Endpoint could not be created, updated, or re-scaled. Use
+--     DescribeEndpointOutput$FailureReason for information about the
+--     failure. DeleteEndpoint is the only operation that can be performed
+--     on a failed endpoint.
+--
+-- To get a list of endpoints with a specified status, use the
+-- ListEndpointsInput$StatusEquals filter.
+newEndpointSummary ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'endpointStatus'
+  EndpointStatus ->
+  EndpointSummary
+newEndpointSummary
+  pEndpointName_
+  pEndpointArn_
+  pCreationTime_
+  pLastModifiedTime_
+  pEndpointStatus_ =
+    EndpointSummary'
+      { endpointName = pEndpointName_,
+        endpointArn = pEndpointArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        endpointStatus = pEndpointStatus_
+      }
+
+-- | The name of the endpoint.
+endpointSummary_endpointName :: Lens.Lens' EndpointSummary Prelude.Text
+endpointSummary_endpointName = Lens.lens (\EndpointSummary' {endpointName} -> endpointName) (\s@EndpointSummary' {} a -> s {endpointName = a} :: EndpointSummary)
+
+-- | The Amazon Resource Name (ARN) of the endpoint.
+endpointSummary_endpointArn :: Lens.Lens' EndpointSummary Prelude.Text
+endpointSummary_endpointArn = Lens.lens (\EndpointSummary' {endpointArn} -> endpointArn) (\s@EndpointSummary' {} a -> s {endpointArn = a} :: EndpointSummary)
+
+-- | A timestamp that shows when the endpoint was created.
+endpointSummary_creationTime :: Lens.Lens' EndpointSummary Prelude.UTCTime
+endpointSummary_creationTime = Lens.lens (\EndpointSummary' {creationTime} -> creationTime) (\s@EndpointSummary' {} a -> s {creationTime = a} :: EndpointSummary) Prelude.. Data._Time
+
+-- | A timestamp that shows when the endpoint was last modified.
+endpointSummary_lastModifiedTime :: Lens.Lens' EndpointSummary Prelude.UTCTime
+endpointSummary_lastModifiedTime = Lens.lens (\EndpointSummary' {lastModifiedTime} -> lastModifiedTime) (\s@EndpointSummary' {} a -> s {lastModifiedTime = a} :: EndpointSummary) Prelude.. Data._Time
+
+-- | The status of the endpoint.
+--
+-- -   @OutOfService@: Endpoint is not available to take incoming requests.
+--
+-- -   @Creating@: CreateEndpoint is executing.
+--
+-- -   @Updating@: UpdateEndpoint or UpdateEndpointWeightsAndCapacities is
+--     executing.
+--
+-- -   @SystemUpdating@: Endpoint is undergoing maintenance and cannot be
+--     updated or deleted or re-scaled until it has completed. This
+--     maintenance operation does not change any customer-specified values
+--     such as VPC config, KMS encryption, model, instance type, or
+--     instance count.
+--
+-- -   @RollingBack@: Endpoint fails to scale up or down or change its
+--     variant weight and is in the process of rolling back to its previous
+--     configuration. Once the rollback completes, endpoint returns to an
+--     @InService@ status. This transitional status only applies to an
+--     endpoint that has autoscaling enabled and is undergoing variant
+--     weight or capacity changes as part of an
+--     UpdateEndpointWeightsAndCapacities call or when the
+--     UpdateEndpointWeightsAndCapacities operation is called explicitly.
+--
+-- -   @InService@: Endpoint is available to process incoming requests.
+--
+-- -   @Deleting@: DeleteEndpoint is executing.
+--
+-- -   @Failed@: Endpoint could not be created, updated, or re-scaled. Use
+--     DescribeEndpointOutput$FailureReason for information about the
+--     failure. DeleteEndpoint is the only operation that can be performed
+--     on a failed endpoint.
+--
+-- To get a list of endpoints with a specified status, use the
+-- ListEndpointsInput$StatusEquals filter.
+endpointSummary_endpointStatus :: Lens.Lens' EndpointSummary EndpointStatus
+endpointSummary_endpointStatus = Lens.lens (\EndpointSummary' {endpointStatus} -> endpointStatus) (\s@EndpointSummary' {} a -> s {endpointStatus = a} :: EndpointSummary)
+
+instance Data.FromJSON EndpointSummary where
+  parseJSON =
+    Data.withObject
+      "EndpointSummary"
+      ( \x ->
+          EndpointSummary'
+            Prelude.<$> (x Data..: "EndpointName")
+            Prelude.<*> (x Data..: "EndpointArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "EndpointStatus")
+      )
+
+instance Prelude.Hashable EndpointSummary where
+  hashWithSalt _salt EndpointSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` endpointArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` endpointStatus
+
+instance Prelude.NFData EndpointSummary where
+  rnf EndpointSummary' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf endpointArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf endpointStatus
diff --git a/gen/Amazonka/SageMaker/Types/EnvironmentParameter.hs b/gen/Amazonka/SageMaker/Types/EnvironmentParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EnvironmentParameter.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EnvironmentParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EnvironmentParameter 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
+
+-- | A list of environment parameters suggested by the Amazon SageMaker
+-- Inference Recommender.
+--
+-- /See:/ 'newEnvironmentParameter' smart constructor.
+data EnvironmentParameter = EnvironmentParameter'
+  { -- | The environment key suggested by the Amazon SageMaker Inference
+    -- Recommender.
+    key :: Prelude.Text,
+    -- | The value type suggested by the Amazon SageMaker Inference Recommender.
+    valueType :: Prelude.Text,
+    -- | The value suggested by the Amazon SageMaker Inference Recommender.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EnvironmentParameter' 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:
+--
+-- 'key', 'environmentParameter_key' - The environment key suggested by the Amazon SageMaker Inference
+-- Recommender.
+--
+-- 'valueType', 'environmentParameter_valueType' - The value type suggested by the Amazon SageMaker Inference Recommender.
+--
+-- 'value', 'environmentParameter_value' - The value suggested by the Amazon SageMaker Inference Recommender.
+newEnvironmentParameter ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'valueType'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  EnvironmentParameter
+newEnvironmentParameter pKey_ pValueType_ pValue_ =
+  EnvironmentParameter'
+    { key = pKey_,
+      valueType = pValueType_,
+      value = pValue_
+    }
+
+-- | The environment key suggested by the Amazon SageMaker Inference
+-- Recommender.
+environmentParameter_key :: Lens.Lens' EnvironmentParameter Prelude.Text
+environmentParameter_key = Lens.lens (\EnvironmentParameter' {key} -> key) (\s@EnvironmentParameter' {} a -> s {key = a} :: EnvironmentParameter)
+
+-- | The value type suggested by the Amazon SageMaker Inference Recommender.
+environmentParameter_valueType :: Lens.Lens' EnvironmentParameter Prelude.Text
+environmentParameter_valueType = Lens.lens (\EnvironmentParameter' {valueType} -> valueType) (\s@EnvironmentParameter' {} a -> s {valueType = a} :: EnvironmentParameter)
+
+-- | The value suggested by the Amazon SageMaker Inference Recommender.
+environmentParameter_value :: Lens.Lens' EnvironmentParameter Prelude.Text
+environmentParameter_value = Lens.lens (\EnvironmentParameter' {value} -> value) (\s@EnvironmentParameter' {} a -> s {value = a} :: EnvironmentParameter)
+
+instance Data.FromJSON EnvironmentParameter where
+  parseJSON =
+    Data.withObject
+      "EnvironmentParameter"
+      ( \x ->
+          EnvironmentParameter'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "ValueType")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable EnvironmentParameter where
+  hashWithSalt _salt EnvironmentParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` valueType
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData EnvironmentParameter where
+  rnf EnvironmentParameter' {..} =
+    Prelude.rnf key
+      `Prelude.seq` Prelude.rnf valueType
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/SageMaker/Types/EnvironmentParameterRanges.hs b/gen/Amazonka/SageMaker/Types/EnvironmentParameterRanges.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/EnvironmentParameterRanges.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.EnvironmentParameterRanges
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.EnvironmentParameterRanges 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 Amazonka.SageMaker.Types.CategoricalParameter
+
+-- | Specifies the range of environment parameters
+--
+-- /See:/ 'newEnvironmentParameterRanges' smart constructor.
+data EnvironmentParameterRanges = EnvironmentParameterRanges'
+  { -- | Specified a list of parameters for each category.
+    categoricalParameterRanges :: Prelude.Maybe (Prelude.NonEmpty CategoricalParameter)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EnvironmentParameterRanges' 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:
+--
+-- 'categoricalParameterRanges', 'environmentParameterRanges_categoricalParameterRanges' - Specified a list of parameters for each category.
+newEnvironmentParameterRanges ::
+  EnvironmentParameterRanges
+newEnvironmentParameterRanges =
+  EnvironmentParameterRanges'
+    { categoricalParameterRanges =
+        Prelude.Nothing
+    }
+
+-- | Specified a list of parameters for each category.
+environmentParameterRanges_categoricalParameterRanges :: Lens.Lens' EnvironmentParameterRanges (Prelude.Maybe (Prelude.NonEmpty CategoricalParameter))
+environmentParameterRanges_categoricalParameterRanges = Lens.lens (\EnvironmentParameterRanges' {categoricalParameterRanges} -> categoricalParameterRanges) (\s@EnvironmentParameterRanges' {} a -> s {categoricalParameterRanges = a} :: EnvironmentParameterRanges) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON EnvironmentParameterRanges where
+  parseJSON =
+    Data.withObject
+      "EnvironmentParameterRanges"
+      ( \x ->
+          EnvironmentParameterRanges'
+            Prelude.<$> (x Data..:? "CategoricalParameterRanges")
+      )
+
+instance Prelude.Hashable EnvironmentParameterRanges where
+  hashWithSalt _salt EnvironmentParameterRanges' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoricalParameterRanges
+
+instance Prelude.NFData EnvironmentParameterRanges where
+  rnf EnvironmentParameterRanges' {..} =
+    Prelude.rnf categoricalParameterRanges
+
+instance Data.ToJSON EnvironmentParameterRanges where
+  toJSON EnvironmentParameterRanges' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoricalParameterRanges" Data..=)
+              Prelude.<$> categoricalParameterRanges
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ExecutionRoleIdentityConfig.hs b/gen/Amazonka/SageMaker/Types/ExecutionRoleIdentityConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ExecutionRoleIdentityConfig.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ExecutionRoleIdentityConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ExecutionRoleIdentityConfig
+  ( ExecutionRoleIdentityConfig
+      ( ..,
+        ExecutionRoleIdentityConfig_DISABLED,
+        ExecutionRoleIdentityConfig_USER_PROFILE_NAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ExecutionRoleIdentityConfig = ExecutionRoleIdentityConfig'
+  { fromExecutionRoleIdentityConfig ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ExecutionRoleIdentityConfig_DISABLED :: ExecutionRoleIdentityConfig
+pattern ExecutionRoleIdentityConfig_DISABLED = ExecutionRoleIdentityConfig' "DISABLED"
+
+pattern ExecutionRoleIdentityConfig_USER_PROFILE_NAME :: ExecutionRoleIdentityConfig
+pattern ExecutionRoleIdentityConfig_USER_PROFILE_NAME = ExecutionRoleIdentityConfig' "USER_PROFILE_NAME"
+
+{-# COMPLETE
+  ExecutionRoleIdentityConfig_DISABLED,
+  ExecutionRoleIdentityConfig_USER_PROFILE_NAME,
+  ExecutionRoleIdentityConfig'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ExecutionStatus.hs b/gen/Amazonka/SageMaker/Types/ExecutionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ExecutionStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ExecutionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ExecutionStatus
+  ( ExecutionStatus
+      ( ..,
+        ExecutionStatus_Completed,
+        ExecutionStatus_CompletedWithViolations,
+        ExecutionStatus_Failed,
+        ExecutionStatus_InProgress,
+        ExecutionStatus_Pending,
+        ExecutionStatus_Stopped,
+        ExecutionStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ExecutionStatus = ExecutionStatus'
+  { fromExecutionStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ExecutionStatus_Completed :: ExecutionStatus
+pattern ExecutionStatus_Completed = ExecutionStatus' "Completed"
+
+pattern ExecutionStatus_CompletedWithViolations :: ExecutionStatus
+pattern ExecutionStatus_CompletedWithViolations = ExecutionStatus' "CompletedWithViolations"
+
+pattern ExecutionStatus_Failed :: ExecutionStatus
+pattern ExecutionStatus_Failed = ExecutionStatus' "Failed"
+
+pattern ExecutionStatus_InProgress :: ExecutionStatus
+pattern ExecutionStatus_InProgress = ExecutionStatus' "InProgress"
+
+pattern ExecutionStatus_Pending :: ExecutionStatus
+pattern ExecutionStatus_Pending = ExecutionStatus' "Pending"
+
+pattern ExecutionStatus_Stopped :: ExecutionStatus
+pattern ExecutionStatus_Stopped = ExecutionStatus' "Stopped"
+
+pattern ExecutionStatus_Stopping :: ExecutionStatus
+pattern ExecutionStatus_Stopping = ExecutionStatus' "Stopping"
+
+{-# COMPLETE
+  ExecutionStatus_Completed,
+  ExecutionStatus_CompletedWithViolations,
+  ExecutionStatus_Failed,
+  ExecutionStatus_InProgress,
+  ExecutionStatus_Pending,
+  ExecutionStatus_Stopped,
+  ExecutionStatus_Stopping,
+  ExecutionStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Experiment.hs b/gen/Amazonka/SageMaker/Types/Experiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Experiment.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Experiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Experiment 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 Amazonka.SageMaker.Types.ExperimentSource
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | The properties of an experiment as returned by the Search API.
+--
+-- /See:/ 'newExperiment' smart constructor.
+data Experiment = Experiment'
+  { -- | Who created the experiment.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the experiment was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment as displayed. If @DisplayName@ isn\'t
+    -- specified, @ExperimentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the experiment.
+    experimentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the experiment was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    source :: Prelude.Maybe ExperimentSource,
+    -- | The list of tags that are associated with the experiment. You can use
+    -- Search API to search on the tags.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Experiment' 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:
+--
+-- 'createdBy', 'experiment_createdBy' - Who created the experiment.
+--
+-- 'creationTime', 'experiment_creationTime' - When the experiment was created.
+--
+-- 'description', 'experiment_description' - The description of the experiment.
+--
+-- 'displayName', 'experiment_displayName' - The name of the experiment as displayed. If @DisplayName@ isn\'t
+-- specified, @ExperimentName@ is displayed.
+--
+-- 'experimentArn', 'experiment_experimentArn' - The Amazon Resource Name (ARN) of the experiment.
+--
+-- 'experimentName', 'experiment_experimentName' - The name of the experiment.
+--
+-- 'lastModifiedBy', 'experiment_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'experiment_lastModifiedTime' - When the experiment was last modified.
+--
+-- 'source', 'experiment_source' - Undocumented member.
+--
+-- 'tags', 'experiment_tags' - The list of tags that are associated with the experiment. You can use
+-- Search API to search on the tags.
+newExperiment ::
+  Experiment
+newExperiment =
+  Experiment'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      experimentArn = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      source = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Who created the experiment.
+experiment_createdBy :: Lens.Lens' Experiment (Prelude.Maybe UserContext)
+experiment_createdBy = Lens.lens (\Experiment' {createdBy} -> createdBy) (\s@Experiment' {} a -> s {createdBy = a} :: Experiment)
+
+-- | When the experiment was created.
+experiment_creationTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)
+experiment_creationTime = Lens.lens (\Experiment' {creationTime} -> creationTime) (\s@Experiment' {} a -> s {creationTime = a} :: Experiment) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the experiment.
+experiment_description :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
+experiment_description = Lens.lens (\Experiment' {description} -> description) (\s@Experiment' {} a -> s {description = a} :: Experiment)
+
+-- | The name of the experiment as displayed. If @DisplayName@ isn\'t
+-- specified, @ExperimentName@ is displayed.
+experiment_displayName :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
+experiment_displayName = Lens.lens (\Experiment' {displayName} -> displayName) (\s@Experiment' {} a -> s {displayName = a} :: Experiment)
+
+-- | The Amazon Resource Name (ARN) of the experiment.
+experiment_experimentArn :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
+experiment_experimentArn = Lens.lens (\Experiment' {experimentArn} -> experimentArn) (\s@Experiment' {} a -> s {experimentArn = a} :: Experiment)
+
+-- | The name of the experiment.
+experiment_experimentName :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
+experiment_experimentName = Lens.lens (\Experiment' {experimentName} -> experimentName) (\s@Experiment' {} a -> s {experimentName = a} :: Experiment)
+
+-- | Undocumented member.
+experiment_lastModifiedBy :: Lens.Lens' Experiment (Prelude.Maybe UserContext)
+experiment_lastModifiedBy = Lens.lens (\Experiment' {lastModifiedBy} -> lastModifiedBy) (\s@Experiment' {} a -> s {lastModifiedBy = a} :: Experiment)
+
+-- | When the experiment was last modified.
+experiment_lastModifiedTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)
+experiment_lastModifiedTime = Lens.lens (\Experiment' {lastModifiedTime} -> lastModifiedTime) (\s@Experiment' {} a -> s {lastModifiedTime = a} :: Experiment) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+experiment_source :: Lens.Lens' Experiment (Prelude.Maybe ExperimentSource)
+experiment_source = Lens.lens (\Experiment' {source} -> source) (\s@Experiment' {} a -> s {source = a} :: Experiment)
+
+-- | The list of tags that are associated with the experiment. You can use
+-- Search API to search on the tags.
+experiment_tags :: Lens.Lens' Experiment (Prelude.Maybe [Tag])
+experiment_tags = Lens.lens (\Experiment' {tags} -> tags) (\s@Experiment' {} a -> s {tags = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Experiment where
+  parseJSON =
+    Data.withObject
+      "Experiment"
+      ( \x ->
+          Experiment'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "ExperimentArn")
+            Prelude.<*> (x Data..:? "ExperimentName")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Experiment where
+  hashWithSalt _salt Experiment' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` experimentArn
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Experiment where
+  rnf Experiment' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf experimentArn
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/ExperimentConfig.hs b/gen/Amazonka/SageMaker/Types/ExperimentConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ExperimentConfig.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ExperimentConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ExperimentConfig 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
+
+-- | Associates a SageMaker job as a trial component with an experiment and
+-- trial. Specified when you call the following APIs:
+--
+-- -   CreateProcessingJob
+--
+-- -   CreateTrainingJob
+--
+-- -   CreateTransformJob
+--
+-- /See:/ 'newExperimentConfig' smart constructor.
+data ExperimentConfig = ExperimentConfig'
+  { -- | The name of an existing experiment to associate with the trial
+    -- component.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment run to associate with the trial component.
+    runName :: Prelude.Maybe Prelude.Text,
+    -- | The display name for the trial component. If this key isn\'t specified,
+    -- the display name is the trial component name.
+    trialComponentDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of an existing trial to associate the trial component with. If
+    -- not specified, a new trial is created.
+    trialName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExperimentConfig' 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:
+--
+-- 'experimentName', 'experimentConfig_experimentName' - The name of an existing experiment to associate with the trial
+-- component.
+--
+-- 'runName', 'experimentConfig_runName' - The name of the experiment run to associate with the trial component.
+--
+-- 'trialComponentDisplayName', 'experimentConfig_trialComponentDisplayName' - The display name for the trial component. If this key isn\'t specified,
+-- the display name is the trial component name.
+--
+-- 'trialName', 'experimentConfig_trialName' - The name of an existing trial to associate the trial component with. If
+-- not specified, a new trial is created.
+newExperimentConfig ::
+  ExperimentConfig
+newExperimentConfig =
+  ExperimentConfig'
+    { experimentName = Prelude.Nothing,
+      runName = Prelude.Nothing,
+      trialComponentDisplayName = Prelude.Nothing,
+      trialName = Prelude.Nothing
+    }
+
+-- | The name of an existing experiment to associate with the trial
+-- component.
+experimentConfig_experimentName :: Lens.Lens' ExperimentConfig (Prelude.Maybe Prelude.Text)
+experimentConfig_experimentName = Lens.lens (\ExperimentConfig' {experimentName} -> experimentName) (\s@ExperimentConfig' {} a -> s {experimentName = a} :: ExperimentConfig)
+
+-- | The name of the experiment run to associate with the trial component.
+experimentConfig_runName :: Lens.Lens' ExperimentConfig (Prelude.Maybe Prelude.Text)
+experimentConfig_runName = Lens.lens (\ExperimentConfig' {runName} -> runName) (\s@ExperimentConfig' {} a -> s {runName = a} :: ExperimentConfig)
+
+-- | The display name for the trial component. If this key isn\'t specified,
+-- the display name is the trial component name.
+experimentConfig_trialComponentDisplayName :: Lens.Lens' ExperimentConfig (Prelude.Maybe Prelude.Text)
+experimentConfig_trialComponentDisplayName = Lens.lens (\ExperimentConfig' {trialComponentDisplayName} -> trialComponentDisplayName) (\s@ExperimentConfig' {} a -> s {trialComponentDisplayName = a} :: ExperimentConfig)
+
+-- | The name of an existing trial to associate the trial component with. If
+-- not specified, a new trial is created.
+experimentConfig_trialName :: Lens.Lens' ExperimentConfig (Prelude.Maybe Prelude.Text)
+experimentConfig_trialName = Lens.lens (\ExperimentConfig' {trialName} -> trialName) (\s@ExperimentConfig' {} a -> s {trialName = a} :: ExperimentConfig)
+
+instance Data.FromJSON ExperimentConfig where
+  parseJSON =
+    Data.withObject
+      "ExperimentConfig"
+      ( \x ->
+          ExperimentConfig'
+            Prelude.<$> (x Data..:? "ExperimentName")
+            Prelude.<*> (x Data..:? "RunName")
+            Prelude.<*> (x Data..:? "TrialComponentDisplayName")
+            Prelude.<*> (x Data..:? "TrialName")
+      )
+
+instance Prelude.Hashable ExperimentConfig where
+  hashWithSalt _salt ExperimentConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` runName
+      `Prelude.hashWithSalt` trialComponentDisplayName
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData ExperimentConfig where
+  rnf ExperimentConfig' {..} =
+    Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf runName
+      `Prelude.seq` Prelude.rnf trialComponentDisplayName
+      `Prelude.seq` Prelude.rnf trialName
+
+instance Data.ToJSON ExperimentConfig where
+  toJSON ExperimentConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExperimentName" Data..=)
+              Prelude.<$> experimentName,
+            ("RunName" Data..=) Prelude.<$> runName,
+            ("TrialComponentDisplayName" Data..=)
+              Prelude.<$> trialComponentDisplayName,
+            ("TrialName" Data..=) Prelude.<$> trialName
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ExperimentSource.hs b/gen/Amazonka/SageMaker/Types/ExperimentSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ExperimentSource.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ExperimentSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ExperimentSource 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
+
+-- | The source of the experiment.
+--
+-- /See:/ 'newExperimentSource' smart constructor.
+data ExperimentSource = ExperimentSource'
+  { -- | The source type.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the source.
+    sourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExperimentSource' 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:
+--
+-- 'sourceType', 'experimentSource_sourceType' - The source type.
+--
+-- 'sourceArn', 'experimentSource_sourceArn' - The Amazon Resource Name (ARN) of the source.
+newExperimentSource ::
+  -- | 'sourceArn'
+  Prelude.Text ->
+  ExperimentSource
+newExperimentSource pSourceArn_ =
+  ExperimentSource'
+    { sourceType = Prelude.Nothing,
+      sourceArn = pSourceArn_
+    }
+
+-- | The source type.
+experimentSource_sourceType :: Lens.Lens' ExperimentSource (Prelude.Maybe Prelude.Text)
+experimentSource_sourceType = Lens.lens (\ExperimentSource' {sourceType} -> sourceType) (\s@ExperimentSource' {} a -> s {sourceType = a} :: ExperimentSource)
+
+-- | The Amazon Resource Name (ARN) of the source.
+experimentSource_sourceArn :: Lens.Lens' ExperimentSource Prelude.Text
+experimentSource_sourceArn = Lens.lens (\ExperimentSource' {sourceArn} -> sourceArn) (\s@ExperimentSource' {} a -> s {sourceArn = a} :: ExperimentSource)
+
+instance Data.FromJSON ExperimentSource where
+  parseJSON =
+    Data.withObject
+      "ExperimentSource"
+      ( \x ->
+          ExperimentSource'
+            Prelude.<$> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..: "SourceArn")
+      )
+
+instance Prelude.Hashable ExperimentSource where
+  hashWithSalt _salt ExperimentSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceArn
+
+instance Prelude.NFData ExperimentSource where
+  rnf ExperimentSource' {..} =
+    Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceArn
diff --git a/gen/Amazonka/SageMaker/Types/ExperimentSummary.hs b/gen/Amazonka/SageMaker/Types/ExperimentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ExperimentSummary.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ExperimentSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ExperimentSummary 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 Amazonka.SageMaker.Types.ExperimentSource
+
+-- | A summary of the properties of an experiment. To get the complete set of
+-- properties, call the DescribeExperiment API and provide the
+-- @ExperimentName@.
+--
+-- /See:/ 'newExperimentSummary' smart constructor.
+data ExperimentSummary = ExperimentSummary'
+  { -- | When the experiment was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the experiment as displayed. If @DisplayName@ isn\'t
+    -- specified, @ExperimentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the experiment.
+    experimentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    experimentSource :: Prelude.Maybe ExperimentSource,
+    -- | When the experiment was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExperimentSummary' 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:
+--
+-- 'creationTime', 'experimentSummary_creationTime' - When the experiment was created.
+--
+-- 'displayName', 'experimentSummary_displayName' - The name of the experiment as displayed. If @DisplayName@ isn\'t
+-- specified, @ExperimentName@ is displayed.
+--
+-- 'experimentArn', 'experimentSummary_experimentArn' - The Amazon Resource Name (ARN) of the experiment.
+--
+-- 'experimentName', 'experimentSummary_experimentName' - The name of the experiment.
+--
+-- 'experimentSource', 'experimentSummary_experimentSource' - Undocumented member.
+--
+-- 'lastModifiedTime', 'experimentSummary_lastModifiedTime' - When the experiment was last modified.
+newExperimentSummary ::
+  ExperimentSummary
+newExperimentSummary =
+  ExperimentSummary'
+    { creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      experimentArn = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      experimentSource = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing
+    }
+
+-- | When the experiment was created.
+experimentSummary_creationTime :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.UTCTime)
+experimentSummary_creationTime = Lens.lens (\ExperimentSummary' {creationTime} -> creationTime) (\s@ExperimentSummary' {} a -> s {creationTime = a} :: ExperimentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the experiment as displayed. If @DisplayName@ isn\'t
+-- specified, @ExperimentName@ is displayed.
+experimentSummary_displayName :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.Text)
+experimentSummary_displayName = Lens.lens (\ExperimentSummary' {displayName} -> displayName) (\s@ExperimentSummary' {} a -> s {displayName = a} :: ExperimentSummary)
+
+-- | The Amazon Resource Name (ARN) of the experiment.
+experimentSummary_experimentArn :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.Text)
+experimentSummary_experimentArn = Lens.lens (\ExperimentSummary' {experimentArn} -> experimentArn) (\s@ExperimentSummary' {} a -> s {experimentArn = a} :: ExperimentSummary)
+
+-- | The name of the experiment.
+experimentSummary_experimentName :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.Text)
+experimentSummary_experimentName = Lens.lens (\ExperimentSummary' {experimentName} -> experimentName) (\s@ExperimentSummary' {} a -> s {experimentName = a} :: ExperimentSummary)
+
+-- | Undocumented member.
+experimentSummary_experimentSource :: Lens.Lens' ExperimentSummary (Prelude.Maybe ExperimentSource)
+experimentSummary_experimentSource = Lens.lens (\ExperimentSummary' {experimentSource} -> experimentSource) (\s@ExperimentSummary' {} a -> s {experimentSource = a} :: ExperimentSummary)
+
+-- | When the experiment was last modified.
+experimentSummary_lastModifiedTime :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.UTCTime)
+experimentSummary_lastModifiedTime = Lens.lens (\ExperimentSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ExperimentSummary' {} a -> s {lastModifiedTime = a} :: ExperimentSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON ExperimentSummary where
+  parseJSON =
+    Data.withObject
+      "ExperimentSummary"
+      ( \x ->
+          ExperimentSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "ExperimentArn")
+            Prelude.<*> (x Data..:? "ExperimentName")
+            Prelude.<*> (x Data..:? "ExperimentSource")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+      )
+
+instance Prelude.Hashable ExperimentSummary where
+  hashWithSalt _salt ExperimentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` experimentArn
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` experimentSource
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData ExperimentSummary where
+  rnf ExperimentSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf experimentArn
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf experimentSource
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/Explainability.hs b/gen/Amazonka/SageMaker/Types/Explainability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Explainability.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Explainability
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Explainability 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 Amazonka.SageMaker.Types.MetricsSource
+
+-- | Contains explainability metrics for a model.
+--
+-- /See:/ 'newExplainability' smart constructor.
+data Explainability = Explainability'
+  { -- | The explainability report for a model.
+    report :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Explainability' 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:
+--
+-- 'report', 'explainability_report' - The explainability report for a model.
+newExplainability ::
+  Explainability
+newExplainability =
+  Explainability' {report = Prelude.Nothing}
+
+-- | The explainability report for a model.
+explainability_report :: Lens.Lens' Explainability (Prelude.Maybe MetricsSource)
+explainability_report = Lens.lens (\Explainability' {report} -> report) (\s@Explainability' {} a -> s {report = a} :: Explainability)
+
+instance Data.FromJSON Explainability where
+  parseJSON =
+    Data.withObject
+      "Explainability"
+      ( \x ->
+          Explainability' Prelude.<$> (x Data..:? "Report")
+      )
+
+instance Prelude.Hashable Explainability where
+  hashWithSalt _salt Explainability' {..} =
+    _salt `Prelude.hashWithSalt` report
+
+instance Prelude.NFData Explainability where
+  rnf Explainability' {..} = Prelude.rnf report
+
+instance Data.ToJSON Explainability where
+  toJSON Explainability' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Report" Data..=) Prelude.<$> report]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ExplainerConfig.hs b/gen/Amazonka/SageMaker/Types/ExplainerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ExplainerConfig.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ExplainerConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ExplainerConfig 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 Amazonka.SageMaker.Types.ClarifyExplainerConfig
+
+-- | A parameter to activate explainers.
+--
+-- /See:/ 'newExplainerConfig' smart constructor.
+data ExplainerConfig = ExplainerConfig'
+  { -- | A member of @ExplainerConfig@ that contains configuration parameters for
+    -- the SageMaker Clarify explainer.
+    clarifyExplainerConfig :: Prelude.Maybe ClarifyExplainerConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExplainerConfig' 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:
+--
+-- 'clarifyExplainerConfig', 'explainerConfig_clarifyExplainerConfig' - A member of @ExplainerConfig@ that contains configuration parameters for
+-- the SageMaker Clarify explainer.
+newExplainerConfig ::
+  ExplainerConfig
+newExplainerConfig =
+  ExplainerConfig'
+    { clarifyExplainerConfig =
+        Prelude.Nothing
+    }
+
+-- | A member of @ExplainerConfig@ that contains configuration parameters for
+-- the SageMaker Clarify explainer.
+explainerConfig_clarifyExplainerConfig :: Lens.Lens' ExplainerConfig (Prelude.Maybe ClarifyExplainerConfig)
+explainerConfig_clarifyExplainerConfig = Lens.lens (\ExplainerConfig' {clarifyExplainerConfig} -> clarifyExplainerConfig) (\s@ExplainerConfig' {} a -> s {clarifyExplainerConfig = a} :: ExplainerConfig)
+
+instance Data.FromJSON ExplainerConfig where
+  parseJSON =
+    Data.withObject
+      "ExplainerConfig"
+      ( \x ->
+          ExplainerConfig'
+            Prelude.<$> (x Data..:? "ClarifyExplainerConfig")
+      )
+
+instance Prelude.Hashable ExplainerConfig where
+  hashWithSalt _salt ExplainerConfig' {..} =
+    _salt `Prelude.hashWithSalt` clarifyExplainerConfig
+
+instance Prelude.NFData ExplainerConfig where
+  rnf ExplainerConfig' {..} =
+    Prelude.rnf clarifyExplainerConfig
+
+instance Data.ToJSON ExplainerConfig where
+  toJSON ExplainerConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClarifyExplainerConfig" Data..=)
+              Prelude.<$> clarifyExplainerConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FailStepMetadata.hs b/gen/Amazonka/SageMaker/Types/FailStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FailStepMetadata.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FailStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FailStepMetadata 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
+
+-- | The container for the metadata for Fail step.
+--
+-- /See:/ 'newFailStepMetadata' smart constructor.
+data FailStepMetadata = FailStepMetadata'
+  { -- | A message that you define and then is processed and rendered by the Fail
+    -- step when the error occurs.
+    errorMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FailStepMetadata' 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:
+--
+-- 'errorMessage', 'failStepMetadata_errorMessage' - A message that you define and then is processed and rendered by the Fail
+-- step when the error occurs.
+newFailStepMetadata ::
+  FailStepMetadata
+newFailStepMetadata =
+  FailStepMetadata' {errorMessage = Prelude.Nothing}
+
+-- | A message that you define and then is processed and rendered by the Fail
+-- step when the error occurs.
+failStepMetadata_errorMessage :: Lens.Lens' FailStepMetadata (Prelude.Maybe Prelude.Text)
+failStepMetadata_errorMessage = Lens.lens (\FailStepMetadata' {errorMessage} -> errorMessage) (\s@FailStepMetadata' {} a -> s {errorMessage = a} :: FailStepMetadata)
+
+instance Data.FromJSON FailStepMetadata where
+  parseJSON =
+    Data.withObject
+      "FailStepMetadata"
+      ( \x ->
+          FailStepMetadata'
+            Prelude.<$> (x Data..:? "ErrorMessage")
+      )
+
+instance Prelude.Hashable FailStepMetadata where
+  hashWithSalt _salt FailStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` errorMessage
+
+instance Prelude.NFData FailStepMetadata where
+  rnf FailStepMetadata' {..} = Prelude.rnf errorMessage
diff --git a/gen/Amazonka/SageMaker/Types/FailureHandlingPolicy.hs b/gen/Amazonka/SageMaker/Types/FailureHandlingPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FailureHandlingPolicy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FailureHandlingPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FailureHandlingPolicy
+  ( FailureHandlingPolicy
+      ( ..,
+        FailureHandlingPolicy_DO_NOTHING,
+        FailureHandlingPolicy_ROLLBACK_ON_FAILURE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FailureHandlingPolicy = FailureHandlingPolicy'
+  { fromFailureHandlingPolicy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FailureHandlingPolicy_DO_NOTHING :: FailureHandlingPolicy
+pattern FailureHandlingPolicy_DO_NOTHING = FailureHandlingPolicy' "DO_NOTHING"
+
+pattern FailureHandlingPolicy_ROLLBACK_ON_FAILURE :: FailureHandlingPolicy
+pattern FailureHandlingPolicy_ROLLBACK_ON_FAILURE = FailureHandlingPolicy' "ROLLBACK_ON_FAILURE"
+
+{-# COMPLETE
+  FailureHandlingPolicy_DO_NOTHING,
+  FailureHandlingPolicy_ROLLBACK_ON_FAILURE,
+  FailureHandlingPolicy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FeatureDefinition.hs b/gen/Amazonka/SageMaker/Types/FeatureDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureDefinition.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FeatureDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureDefinition 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 Amazonka.SageMaker.Types.FeatureType
+
+-- | A list of features. You must include @FeatureName@ and @FeatureType@.
+-- Valid feature @FeatureType@s are @Integral@, @Fractional@ and @String@.
+--
+-- /See:/ 'newFeatureDefinition' smart constructor.
+data FeatureDefinition = FeatureDefinition'
+  { -- | The name of a feature. The type must be a string. @FeatureName@ cannot
+    -- be any of the following: @is_deleted@, @write_time@,
+    -- @api_invocation_time@.
+    featureName :: Prelude.Maybe Prelude.Text,
+    -- | The value type of a feature. Valid values are Integral, Fractional, or
+    -- String.
+    featureType :: Prelude.Maybe FeatureType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FeatureDefinition' 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:
+--
+-- 'featureName', 'featureDefinition_featureName' - The name of a feature. The type must be a string. @FeatureName@ cannot
+-- be any of the following: @is_deleted@, @write_time@,
+-- @api_invocation_time@.
+--
+-- 'featureType', 'featureDefinition_featureType' - The value type of a feature. Valid values are Integral, Fractional, or
+-- String.
+newFeatureDefinition ::
+  FeatureDefinition
+newFeatureDefinition =
+  FeatureDefinition'
+    { featureName = Prelude.Nothing,
+      featureType = Prelude.Nothing
+    }
+
+-- | The name of a feature. The type must be a string. @FeatureName@ cannot
+-- be any of the following: @is_deleted@, @write_time@,
+-- @api_invocation_time@.
+featureDefinition_featureName :: Lens.Lens' FeatureDefinition (Prelude.Maybe Prelude.Text)
+featureDefinition_featureName = Lens.lens (\FeatureDefinition' {featureName} -> featureName) (\s@FeatureDefinition' {} a -> s {featureName = a} :: FeatureDefinition)
+
+-- | The value type of a feature. Valid values are Integral, Fractional, or
+-- String.
+featureDefinition_featureType :: Lens.Lens' FeatureDefinition (Prelude.Maybe FeatureType)
+featureDefinition_featureType = Lens.lens (\FeatureDefinition' {featureType} -> featureType) (\s@FeatureDefinition' {} a -> s {featureType = a} :: FeatureDefinition)
+
+instance Data.FromJSON FeatureDefinition where
+  parseJSON =
+    Data.withObject
+      "FeatureDefinition"
+      ( \x ->
+          FeatureDefinition'
+            Prelude.<$> (x Data..:? "FeatureName")
+            Prelude.<*> (x Data..:? "FeatureType")
+      )
+
+instance Prelude.Hashable FeatureDefinition where
+  hashWithSalt _salt FeatureDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` featureName
+      `Prelude.hashWithSalt` featureType
+
+instance Prelude.NFData FeatureDefinition where
+  rnf FeatureDefinition' {..} =
+    Prelude.rnf featureName
+      `Prelude.seq` Prelude.rnf featureType
+
+instance Data.ToJSON FeatureDefinition where
+  toJSON FeatureDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FeatureName" Data..=) Prelude.<$> featureName,
+            ("FeatureType" Data..=) Prelude.<$> featureType
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FeatureGroup.hs b/gen/Amazonka/SageMaker/Types/FeatureGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureGroup.hs
@@ -0,0 +1,314 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FeatureGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureGroup 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 Amazonka.SageMaker.Types.FeatureDefinition
+import Amazonka.SageMaker.Types.FeatureGroupStatus
+import Amazonka.SageMaker.Types.LastUpdateStatus
+import Amazonka.SageMaker.Types.OfflineStoreConfig
+import Amazonka.SageMaker.Types.OfflineStoreStatus
+import Amazonka.SageMaker.Types.OnlineStoreConfig
+import Amazonka.SageMaker.Types.Tag
+
+-- | Amazon SageMaker Feature Store stores features in a collection called
+-- Feature Group. A Feature Group can be visualized as a table which has
+-- rows, with a unique identifier for each row where each column in the
+-- table is a feature. In principle, a Feature Group is composed of
+-- features and values per features.
+--
+-- /See:/ 'newFeatureGroup' smart constructor.
+data FeatureGroup = FeatureGroup'
+  { -- | The time a @FeatureGroup@ was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | A free form description of a @FeatureGroup@.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the feature that stores the @EventTime@ of a Record in a
+    -- @FeatureGroup@.
+    --
+    -- A @EventTime@ is point in time when a new event occurs that corresponds
+    -- to the creation or update of a @Record@ in @FeatureGroup@. All @Records@
+    -- in the @FeatureGroup@ must have a corresponding @EventTime@.
+    eventTimeFeatureName :: Prelude.Maybe Prelude.Text,
+    -- | The reason that the @FeatureGroup@ failed to be replicated in the
+    -- @OfflineStore@. This is failure may be due to a failure to create a
+    -- @FeatureGroup@ in or delete a @FeatureGroup@ from the @OfflineStore@.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A list of @Feature@s. Each @Feature@ must include a @FeatureName@ and a
+    -- @FeatureType@.
+    --
+    -- Valid @FeatureType@s are @Integral@, @Fractional@ and @String@.
+    --
+    -- @FeatureName@s cannot be any of the following: @is_deleted@,
+    -- @write_time@, @api_invocation_time@.
+    --
+    -- You can create up to 2,500 @FeatureDefinition@s per @FeatureGroup@.
+    featureDefinitions :: Prelude.Maybe (Prelude.NonEmpty FeatureDefinition),
+    -- | The Amazon Resource Name (ARN) of a @FeatureGroup@.
+    featureGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the @FeatureGroup@.
+    featureGroupName :: Prelude.Maybe Prelude.Text,
+    -- | A @FeatureGroup@ status.
+    featureGroupStatus :: Prelude.Maybe FeatureGroupStatus,
+    -- | A timestamp indicating the last time you updated the feature group.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | A value that indicates whether the feature group was updated
+    -- successfully.
+    lastUpdateStatus :: Prelude.Maybe LastUpdateStatus,
+    offlineStoreConfig :: Prelude.Maybe OfflineStoreConfig,
+    offlineStoreStatus :: Prelude.Maybe OfflineStoreStatus,
+    onlineStoreConfig :: Prelude.Maybe OnlineStoreConfig,
+    -- | The name of the @Feature@ whose value uniquely identifies a @Record@
+    -- defined in the @FeatureGroup@ @FeatureDefinitions@.
+    recordIdentifierFeatureName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM execution role used to create
+    -- the feature group.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Tags used to define a @FeatureGroup@.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FeatureGroup' 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:
+--
+-- 'creationTime', 'featureGroup_creationTime' - The time a @FeatureGroup@ was created.
+--
+-- 'description', 'featureGroup_description' - A free form description of a @FeatureGroup@.
+--
+-- 'eventTimeFeatureName', 'featureGroup_eventTimeFeatureName' - The name of the feature that stores the @EventTime@ of a Record in a
+-- @FeatureGroup@.
+--
+-- A @EventTime@ is point in time when a new event occurs that corresponds
+-- to the creation or update of a @Record@ in @FeatureGroup@. All @Records@
+-- in the @FeatureGroup@ must have a corresponding @EventTime@.
+--
+-- 'failureReason', 'featureGroup_failureReason' - The reason that the @FeatureGroup@ failed to be replicated in the
+-- @OfflineStore@. This is failure may be due to a failure to create a
+-- @FeatureGroup@ in or delete a @FeatureGroup@ from the @OfflineStore@.
+--
+-- 'featureDefinitions', 'featureGroup_featureDefinitions' - A list of @Feature@s. Each @Feature@ must include a @FeatureName@ and a
+-- @FeatureType@.
+--
+-- Valid @FeatureType@s are @Integral@, @Fractional@ and @String@.
+--
+-- @FeatureName@s cannot be any of the following: @is_deleted@,
+-- @write_time@, @api_invocation_time@.
+--
+-- You can create up to 2,500 @FeatureDefinition@s per @FeatureGroup@.
+--
+-- 'featureGroupArn', 'featureGroup_featureGroupArn' - The Amazon Resource Name (ARN) of a @FeatureGroup@.
+--
+-- 'featureGroupName', 'featureGroup_featureGroupName' - The name of the @FeatureGroup@.
+--
+-- 'featureGroupStatus', 'featureGroup_featureGroupStatus' - A @FeatureGroup@ status.
+--
+-- 'lastModifiedTime', 'featureGroup_lastModifiedTime' - A timestamp indicating the last time you updated the feature group.
+--
+-- 'lastUpdateStatus', 'featureGroup_lastUpdateStatus' - A value that indicates whether the feature group was updated
+-- successfully.
+--
+-- 'offlineStoreConfig', 'featureGroup_offlineStoreConfig' - Undocumented member.
+--
+-- 'offlineStoreStatus', 'featureGroup_offlineStoreStatus' - Undocumented member.
+--
+-- 'onlineStoreConfig', 'featureGroup_onlineStoreConfig' - Undocumented member.
+--
+-- 'recordIdentifierFeatureName', 'featureGroup_recordIdentifierFeatureName' - The name of the @Feature@ whose value uniquely identifies a @Record@
+-- defined in the @FeatureGroup@ @FeatureDefinitions@.
+--
+-- 'roleArn', 'featureGroup_roleArn' - The Amazon Resource Name (ARN) of the IAM execution role used to create
+-- the feature group.
+--
+-- 'tags', 'featureGroup_tags' - Tags used to define a @FeatureGroup@.
+newFeatureGroup ::
+  FeatureGroup
+newFeatureGroup =
+  FeatureGroup'
+    { creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      eventTimeFeatureName = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      featureDefinitions = Prelude.Nothing,
+      featureGroupArn = Prelude.Nothing,
+      featureGroupName = Prelude.Nothing,
+      featureGroupStatus = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lastUpdateStatus = Prelude.Nothing,
+      offlineStoreConfig = Prelude.Nothing,
+      offlineStoreStatus = Prelude.Nothing,
+      onlineStoreConfig = Prelude.Nothing,
+      recordIdentifierFeatureName = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The time a @FeatureGroup@ was created.
+featureGroup_creationTime :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.UTCTime)
+featureGroup_creationTime = Lens.lens (\FeatureGroup' {creationTime} -> creationTime) (\s@FeatureGroup' {} a -> s {creationTime = a} :: FeatureGroup) Prelude.. Lens.mapping Data._Time
+
+-- | A free form description of a @FeatureGroup@.
+featureGroup_description :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_description = Lens.lens (\FeatureGroup' {description} -> description) (\s@FeatureGroup' {} a -> s {description = a} :: FeatureGroup)
+
+-- | The name of the feature that stores the @EventTime@ of a Record in a
+-- @FeatureGroup@.
+--
+-- A @EventTime@ is point in time when a new event occurs that corresponds
+-- to the creation or update of a @Record@ in @FeatureGroup@. All @Records@
+-- in the @FeatureGroup@ must have a corresponding @EventTime@.
+featureGroup_eventTimeFeatureName :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_eventTimeFeatureName = Lens.lens (\FeatureGroup' {eventTimeFeatureName} -> eventTimeFeatureName) (\s@FeatureGroup' {} a -> s {eventTimeFeatureName = a} :: FeatureGroup)
+
+-- | The reason that the @FeatureGroup@ failed to be replicated in the
+-- @OfflineStore@. This is failure may be due to a failure to create a
+-- @FeatureGroup@ in or delete a @FeatureGroup@ from the @OfflineStore@.
+featureGroup_failureReason :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_failureReason = Lens.lens (\FeatureGroup' {failureReason} -> failureReason) (\s@FeatureGroup' {} a -> s {failureReason = a} :: FeatureGroup)
+
+-- | A list of @Feature@s. Each @Feature@ must include a @FeatureName@ and a
+-- @FeatureType@.
+--
+-- Valid @FeatureType@s are @Integral@, @Fractional@ and @String@.
+--
+-- @FeatureName@s cannot be any of the following: @is_deleted@,
+-- @write_time@, @api_invocation_time@.
+--
+-- You can create up to 2,500 @FeatureDefinition@s per @FeatureGroup@.
+featureGroup_featureDefinitions :: Lens.Lens' FeatureGroup (Prelude.Maybe (Prelude.NonEmpty FeatureDefinition))
+featureGroup_featureDefinitions = Lens.lens (\FeatureGroup' {featureDefinitions} -> featureDefinitions) (\s@FeatureGroup' {} a -> s {featureDefinitions = a} :: FeatureGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of a @FeatureGroup@.
+featureGroup_featureGroupArn :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_featureGroupArn = Lens.lens (\FeatureGroup' {featureGroupArn} -> featureGroupArn) (\s@FeatureGroup' {} a -> s {featureGroupArn = a} :: FeatureGroup)
+
+-- | The name of the @FeatureGroup@.
+featureGroup_featureGroupName :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_featureGroupName = Lens.lens (\FeatureGroup' {featureGroupName} -> featureGroupName) (\s@FeatureGroup' {} a -> s {featureGroupName = a} :: FeatureGroup)
+
+-- | A @FeatureGroup@ status.
+featureGroup_featureGroupStatus :: Lens.Lens' FeatureGroup (Prelude.Maybe FeatureGroupStatus)
+featureGroup_featureGroupStatus = Lens.lens (\FeatureGroup' {featureGroupStatus} -> featureGroupStatus) (\s@FeatureGroup' {} a -> s {featureGroupStatus = a} :: FeatureGroup)
+
+-- | A timestamp indicating the last time you updated the feature group.
+featureGroup_lastModifiedTime :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.UTCTime)
+featureGroup_lastModifiedTime = Lens.lens (\FeatureGroup' {lastModifiedTime} -> lastModifiedTime) (\s@FeatureGroup' {} a -> s {lastModifiedTime = a} :: FeatureGroup) Prelude.. Lens.mapping Data._Time
+
+-- | A value that indicates whether the feature group was updated
+-- successfully.
+featureGroup_lastUpdateStatus :: Lens.Lens' FeatureGroup (Prelude.Maybe LastUpdateStatus)
+featureGroup_lastUpdateStatus = Lens.lens (\FeatureGroup' {lastUpdateStatus} -> lastUpdateStatus) (\s@FeatureGroup' {} a -> s {lastUpdateStatus = a} :: FeatureGroup)
+
+-- | Undocumented member.
+featureGroup_offlineStoreConfig :: Lens.Lens' FeatureGroup (Prelude.Maybe OfflineStoreConfig)
+featureGroup_offlineStoreConfig = Lens.lens (\FeatureGroup' {offlineStoreConfig} -> offlineStoreConfig) (\s@FeatureGroup' {} a -> s {offlineStoreConfig = a} :: FeatureGroup)
+
+-- | Undocumented member.
+featureGroup_offlineStoreStatus :: Lens.Lens' FeatureGroup (Prelude.Maybe OfflineStoreStatus)
+featureGroup_offlineStoreStatus = Lens.lens (\FeatureGroup' {offlineStoreStatus} -> offlineStoreStatus) (\s@FeatureGroup' {} a -> s {offlineStoreStatus = a} :: FeatureGroup)
+
+-- | Undocumented member.
+featureGroup_onlineStoreConfig :: Lens.Lens' FeatureGroup (Prelude.Maybe OnlineStoreConfig)
+featureGroup_onlineStoreConfig = Lens.lens (\FeatureGroup' {onlineStoreConfig} -> onlineStoreConfig) (\s@FeatureGroup' {} a -> s {onlineStoreConfig = a} :: FeatureGroup)
+
+-- | The name of the @Feature@ whose value uniquely identifies a @Record@
+-- defined in the @FeatureGroup@ @FeatureDefinitions@.
+featureGroup_recordIdentifierFeatureName :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_recordIdentifierFeatureName = Lens.lens (\FeatureGroup' {recordIdentifierFeatureName} -> recordIdentifierFeatureName) (\s@FeatureGroup' {} a -> s {recordIdentifierFeatureName = a} :: FeatureGroup)
+
+-- | The Amazon Resource Name (ARN) of the IAM execution role used to create
+-- the feature group.
+featureGroup_roleArn :: Lens.Lens' FeatureGroup (Prelude.Maybe Prelude.Text)
+featureGroup_roleArn = Lens.lens (\FeatureGroup' {roleArn} -> roleArn) (\s@FeatureGroup' {} a -> s {roleArn = a} :: FeatureGroup)
+
+-- | Tags used to define a @FeatureGroup@.
+featureGroup_tags :: Lens.Lens' FeatureGroup (Prelude.Maybe [Tag])
+featureGroup_tags = Lens.lens (\FeatureGroup' {tags} -> tags) (\s@FeatureGroup' {} a -> s {tags = a} :: FeatureGroup) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FeatureGroup where
+  parseJSON =
+    Data.withObject
+      "FeatureGroup"
+      ( \x ->
+          FeatureGroup'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "EventTimeFeatureName")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "FeatureDefinitions")
+            Prelude.<*> (x Data..:? "FeatureGroupArn")
+            Prelude.<*> (x Data..:? "FeatureGroupName")
+            Prelude.<*> (x Data..:? "FeatureGroupStatus")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "LastUpdateStatus")
+            Prelude.<*> (x Data..:? "OfflineStoreConfig")
+            Prelude.<*> (x Data..:? "OfflineStoreStatus")
+            Prelude.<*> (x Data..:? "OnlineStoreConfig")
+            Prelude.<*> (x Data..:? "RecordIdentifierFeatureName")
+            Prelude.<*> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable FeatureGroup where
+  hashWithSalt _salt FeatureGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` eventTimeFeatureName
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` featureDefinitions
+      `Prelude.hashWithSalt` featureGroupArn
+      `Prelude.hashWithSalt` featureGroupName
+      `Prelude.hashWithSalt` featureGroupStatus
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` lastUpdateStatus
+      `Prelude.hashWithSalt` offlineStoreConfig
+      `Prelude.hashWithSalt` offlineStoreStatus
+      `Prelude.hashWithSalt` onlineStoreConfig
+      `Prelude.hashWithSalt` recordIdentifierFeatureName
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData FeatureGroup where
+  rnf FeatureGroup' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf eventTimeFeatureName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf featureDefinitions
+      `Prelude.seq` Prelude.rnf featureGroupArn
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf featureGroupStatus
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lastUpdateStatus
+      `Prelude.seq` Prelude.rnf offlineStoreConfig
+      `Prelude.seq` Prelude.rnf offlineStoreStatus
+      `Prelude.seq` Prelude.rnf onlineStoreConfig
+      `Prelude.seq` Prelude.rnf recordIdentifierFeatureName
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/FeatureGroupSortBy.hs b/gen/Amazonka/SageMaker/Types/FeatureGroupSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureGroupSortBy.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FeatureGroupSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureGroupSortBy
+  ( FeatureGroupSortBy
+      ( ..,
+        FeatureGroupSortBy_CreationTime,
+        FeatureGroupSortBy_FeatureGroupStatus,
+        FeatureGroupSortBy_Name,
+        FeatureGroupSortBy_OfflineStoreStatus
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeatureGroupSortBy = FeatureGroupSortBy'
+  { fromFeatureGroupSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FeatureGroupSortBy_CreationTime :: FeatureGroupSortBy
+pattern FeatureGroupSortBy_CreationTime = FeatureGroupSortBy' "CreationTime"
+
+pattern FeatureGroupSortBy_FeatureGroupStatus :: FeatureGroupSortBy
+pattern FeatureGroupSortBy_FeatureGroupStatus = FeatureGroupSortBy' "FeatureGroupStatus"
+
+pattern FeatureGroupSortBy_Name :: FeatureGroupSortBy
+pattern FeatureGroupSortBy_Name = FeatureGroupSortBy' "Name"
+
+pattern FeatureGroupSortBy_OfflineStoreStatus :: FeatureGroupSortBy
+pattern FeatureGroupSortBy_OfflineStoreStatus = FeatureGroupSortBy' "OfflineStoreStatus"
+
+{-# COMPLETE
+  FeatureGroupSortBy_CreationTime,
+  FeatureGroupSortBy_FeatureGroupStatus,
+  FeatureGroupSortBy_Name,
+  FeatureGroupSortBy_OfflineStoreStatus,
+  FeatureGroupSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FeatureGroupSortOrder.hs b/gen/Amazonka/SageMaker/Types/FeatureGroupSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureGroupSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FeatureGroupSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureGroupSortOrder
+  ( FeatureGroupSortOrder
+      ( ..,
+        FeatureGroupSortOrder_Ascending,
+        FeatureGroupSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeatureGroupSortOrder = FeatureGroupSortOrder'
+  { fromFeatureGroupSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FeatureGroupSortOrder_Ascending :: FeatureGroupSortOrder
+pattern FeatureGroupSortOrder_Ascending = FeatureGroupSortOrder' "Ascending"
+
+pattern FeatureGroupSortOrder_Descending :: FeatureGroupSortOrder
+pattern FeatureGroupSortOrder_Descending = FeatureGroupSortOrder' "Descending"
+
+{-# COMPLETE
+  FeatureGroupSortOrder_Ascending,
+  FeatureGroupSortOrder_Descending,
+  FeatureGroupSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FeatureGroupStatus.hs b/gen/Amazonka/SageMaker/Types/FeatureGroupStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureGroupStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FeatureGroupStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureGroupStatus
+  ( FeatureGroupStatus
+      ( ..,
+        FeatureGroupStatus_CreateFailed,
+        FeatureGroupStatus_Created,
+        FeatureGroupStatus_Creating,
+        FeatureGroupStatus_DeleteFailed,
+        FeatureGroupStatus_Deleting
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeatureGroupStatus = FeatureGroupStatus'
+  { fromFeatureGroupStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FeatureGroupStatus_CreateFailed :: FeatureGroupStatus
+pattern FeatureGroupStatus_CreateFailed = FeatureGroupStatus' "CreateFailed"
+
+pattern FeatureGroupStatus_Created :: FeatureGroupStatus
+pattern FeatureGroupStatus_Created = FeatureGroupStatus' "Created"
+
+pattern FeatureGroupStatus_Creating :: FeatureGroupStatus
+pattern FeatureGroupStatus_Creating = FeatureGroupStatus' "Creating"
+
+pattern FeatureGroupStatus_DeleteFailed :: FeatureGroupStatus
+pattern FeatureGroupStatus_DeleteFailed = FeatureGroupStatus' "DeleteFailed"
+
+pattern FeatureGroupStatus_Deleting :: FeatureGroupStatus
+pattern FeatureGroupStatus_Deleting = FeatureGroupStatus' "Deleting"
+
+{-# COMPLETE
+  FeatureGroupStatus_CreateFailed,
+  FeatureGroupStatus_Created,
+  FeatureGroupStatus_Creating,
+  FeatureGroupStatus_DeleteFailed,
+  FeatureGroupStatus_Deleting,
+  FeatureGroupStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FeatureGroupSummary.hs b/gen/Amazonka/SageMaker/Types/FeatureGroupSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureGroupSummary.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FeatureGroupSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureGroupSummary 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 Amazonka.SageMaker.Types.FeatureGroupStatus
+import Amazonka.SageMaker.Types.OfflineStoreStatus
+
+-- | The name, Arn, @CreationTime@, @FeatureGroup@ values, @LastUpdatedTime@
+-- and @EnableOnlineStorage@ status of a @FeatureGroup@.
+--
+-- /See:/ 'newFeatureGroupSummary' smart constructor.
+data FeatureGroupSummary = FeatureGroupSummary'
+  { -- | The status of a FeatureGroup. The status can be any of the following:
+    -- @Creating@, @Created@, @CreateFail@, @Deleting@ or @DetailFail@.
+    featureGroupStatus :: Prelude.Maybe FeatureGroupStatus,
+    -- | Notifies you if replicating data into the @OfflineStore@ has failed.
+    -- Returns either: @Active@ or @Blocked@.
+    offlineStoreStatus :: Prelude.Maybe OfflineStoreStatus,
+    -- | The name of @FeatureGroup@.
+    featureGroupName :: Prelude.Text,
+    -- | Unique identifier for the @FeatureGroup@.
+    featureGroupArn :: Prelude.Text,
+    -- | A timestamp indicating the time of creation time of the @FeatureGroup@.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FeatureGroupSummary' 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:
+--
+-- 'featureGroupStatus', 'featureGroupSummary_featureGroupStatus' - The status of a FeatureGroup. The status can be any of the following:
+-- @Creating@, @Created@, @CreateFail@, @Deleting@ or @DetailFail@.
+--
+-- 'offlineStoreStatus', 'featureGroupSummary_offlineStoreStatus' - Notifies you if replicating data into the @OfflineStore@ has failed.
+-- Returns either: @Active@ or @Blocked@.
+--
+-- 'featureGroupName', 'featureGroupSummary_featureGroupName' - The name of @FeatureGroup@.
+--
+-- 'featureGroupArn', 'featureGroupSummary_featureGroupArn' - Unique identifier for the @FeatureGroup@.
+--
+-- 'creationTime', 'featureGroupSummary_creationTime' - A timestamp indicating the time of creation time of the @FeatureGroup@.
+newFeatureGroupSummary ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  -- | 'featureGroupArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  FeatureGroupSummary
+newFeatureGroupSummary
+  pFeatureGroupName_
+  pFeatureGroupArn_
+  pCreationTime_ =
+    FeatureGroupSummary'
+      { featureGroupStatus =
+          Prelude.Nothing,
+        offlineStoreStatus = Prelude.Nothing,
+        featureGroupName = pFeatureGroupName_,
+        featureGroupArn = pFeatureGroupArn_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The status of a FeatureGroup. The status can be any of the following:
+-- @Creating@, @Created@, @CreateFail@, @Deleting@ or @DetailFail@.
+featureGroupSummary_featureGroupStatus :: Lens.Lens' FeatureGroupSummary (Prelude.Maybe FeatureGroupStatus)
+featureGroupSummary_featureGroupStatus = Lens.lens (\FeatureGroupSummary' {featureGroupStatus} -> featureGroupStatus) (\s@FeatureGroupSummary' {} a -> s {featureGroupStatus = a} :: FeatureGroupSummary)
+
+-- | Notifies you if replicating data into the @OfflineStore@ has failed.
+-- Returns either: @Active@ or @Blocked@.
+featureGroupSummary_offlineStoreStatus :: Lens.Lens' FeatureGroupSummary (Prelude.Maybe OfflineStoreStatus)
+featureGroupSummary_offlineStoreStatus = Lens.lens (\FeatureGroupSummary' {offlineStoreStatus} -> offlineStoreStatus) (\s@FeatureGroupSummary' {} a -> s {offlineStoreStatus = a} :: FeatureGroupSummary)
+
+-- | The name of @FeatureGroup@.
+featureGroupSummary_featureGroupName :: Lens.Lens' FeatureGroupSummary Prelude.Text
+featureGroupSummary_featureGroupName = Lens.lens (\FeatureGroupSummary' {featureGroupName} -> featureGroupName) (\s@FeatureGroupSummary' {} a -> s {featureGroupName = a} :: FeatureGroupSummary)
+
+-- | Unique identifier for the @FeatureGroup@.
+featureGroupSummary_featureGroupArn :: Lens.Lens' FeatureGroupSummary Prelude.Text
+featureGroupSummary_featureGroupArn = Lens.lens (\FeatureGroupSummary' {featureGroupArn} -> featureGroupArn) (\s@FeatureGroupSummary' {} a -> s {featureGroupArn = a} :: FeatureGroupSummary)
+
+-- | A timestamp indicating the time of creation time of the @FeatureGroup@.
+featureGroupSummary_creationTime :: Lens.Lens' FeatureGroupSummary Prelude.UTCTime
+featureGroupSummary_creationTime = Lens.lens (\FeatureGroupSummary' {creationTime} -> creationTime) (\s@FeatureGroupSummary' {} a -> s {creationTime = a} :: FeatureGroupSummary) Prelude.. Data._Time
+
+instance Data.FromJSON FeatureGroupSummary where
+  parseJSON =
+    Data.withObject
+      "FeatureGroupSummary"
+      ( \x ->
+          FeatureGroupSummary'
+            Prelude.<$> (x Data..:? "FeatureGroupStatus")
+            Prelude.<*> (x Data..:? "OfflineStoreStatus")
+            Prelude.<*> (x Data..: "FeatureGroupName")
+            Prelude.<*> (x Data..: "FeatureGroupArn")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable FeatureGroupSummary where
+  hashWithSalt _salt FeatureGroupSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` featureGroupStatus
+      `Prelude.hashWithSalt` offlineStoreStatus
+      `Prelude.hashWithSalt` featureGroupName
+      `Prelude.hashWithSalt` featureGroupArn
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData FeatureGroupSummary where
+  rnf FeatureGroupSummary' {..} =
+    Prelude.rnf featureGroupStatus
+      `Prelude.seq` Prelude.rnf offlineStoreStatus
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf featureGroupArn
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/FeatureMetadata.hs b/gen/Amazonka/SageMaker/Types/FeatureMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureMetadata.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FeatureMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureMetadata 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 Amazonka.SageMaker.Types.FeatureParameter
+import Amazonka.SageMaker.Types.FeatureType
+
+-- | The metadata for a feature. It can either be metadata that you specify,
+-- or metadata that is updated automatically.
+--
+-- /See:/ 'newFeatureMetadata' smart constructor.
+data FeatureMetadata = FeatureMetadata'
+  { -- | A timestamp indicating when the feature was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | An optional description that you specify to better describe the feature.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Number (ARN) of the feature group.
+    featureGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the feature group containing the feature.
+    featureGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The name of feature.
+    featureName :: Prelude.Maybe Prelude.Text,
+    -- | The data type of the feature.
+    featureType :: Prelude.Maybe FeatureType,
+    -- | A timestamp indicating when the feature was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | Optional key-value pairs that you specify to better describe the
+    -- feature.
+    parameters :: Prelude.Maybe [FeatureParameter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FeatureMetadata' 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:
+--
+-- 'creationTime', 'featureMetadata_creationTime' - A timestamp indicating when the feature was created.
+--
+-- 'description', 'featureMetadata_description' - An optional description that you specify to better describe the feature.
+--
+-- 'featureGroupArn', 'featureMetadata_featureGroupArn' - The Amazon Resource Number (ARN) of the feature group.
+--
+-- 'featureGroupName', 'featureMetadata_featureGroupName' - The name of the feature group containing the feature.
+--
+-- 'featureName', 'featureMetadata_featureName' - The name of feature.
+--
+-- 'featureType', 'featureMetadata_featureType' - The data type of the feature.
+--
+-- 'lastModifiedTime', 'featureMetadata_lastModifiedTime' - A timestamp indicating when the feature was last modified.
+--
+-- 'parameters', 'featureMetadata_parameters' - Optional key-value pairs that you specify to better describe the
+-- feature.
+newFeatureMetadata ::
+  FeatureMetadata
+newFeatureMetadata =
+  FeatureMetadata'
+    { creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      featureGroupArn = Prelude.Nothing,
+      featureGroupName = Prelude.Nothing,
+      featureName = Prelude.Nothing,
+      featureType = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      parameters = Prelude.Nothing
+    }
+
+-- | A timestamp indicating when the feature was created.
+featureMetadata_creationTime :: Lens.Lens' FeatureMetadata (Prelude.Maybe Prelude.UTCTime)
+featureMetadata_creationTime = Lens.lens (\FeatureMetadata' {creationTime} -> creationTime) (\s@FeatureMetadata' {} a -> s {creationTime = a} :: FeatureMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | An optional description that you specify to better describe the feature.
+featureMetadata_description :: Lens.Lens' FeatureMetadata (Prelude.Maybe Prelude.Text)
+featureMetadata_description = Lens.lens (\FeatureMetadata' {description} -> description) (\s@FeatureMetadata' {} a -> s {description = a} :: FeatureMetadata)
+
+-- | The Amazon Resource Number (ARN) of the feature group.
+featureMetadata_featureGroupArn :: Lens.Lens' FeatureMetadata (Prelude.Maybe Prelude.Text)
+featureMetadata_featureGroupArn = Lens.lens (\FeatureMetadata' {featureGroupArn} -> featureGroupArn) (\s@FeatureMetadata' {} a -> s {featureGroupArn = a} :: FeatureMetadata)
+
+-- | The name of the feature group containing the feature.
+featureMetadata_featureGroupName :: Lens.Lens' FeatureMetadata (Prelude.Maybe Prelude.Text)
+featureMetadata_featureGroupName = Lens.lens (\FeatureMetadata' {featureGroupName} -> featureGroupName) (\s@FeatureMetadata' {} a -> s {featureGroupName = a} :: FeatureMetadata)
+
+-- | The name of feature.
+featureMetadata_featureName :: Lens.Lens' FeatureMetadata (Prelude.Maybe Prelude.Text)
+featureMetadata_featureName = Lens.lens (\FeatureMetadata' {featureName} -> featureName) (\s@FeatureMetadata' {} a -> s {featureName = a} :: FeatureMetadata)
+
+-- | The data type of the feature.
+featureMetadata_featureType :: Lens.Lens' FeatureMetadata (Prelude.Maybe FeatureType)
+featureMetadata_featureType = Lens.lens (\FeatureMetadata' {featureType} -> featureType) (\s@FeatureMetadata' {} a -> s {featureType = a} :: FeatureMetadata)
+
+-- | A timestamp indicating when the feature was last modified.
+featureMetadata_lastModifiedTime :: Lens.Lens' FeatureMetadata (Prelude.Maybe Prelude.UTCTime)
+featureMetadata_lastModifiedTime = Lens.lens (\FeatureMetadata' {lastModifiedTime} -> lastModifiedTime) (\s@FeatureMetadata' {} a -> s {lastModifiedTime = a} :: FeatureMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | Optional key-value pairs that you specify to better describe the
+-- feature.
+featureMetadata_parameters :: Lens.Lens' FeatureMetadata (Prelude.Maybe [FeatureParameter])
+featureMetadata_parameters = Lens.lens (\FeatureMetadata' {parameters} -> parameters) (\s@FeatureMetadata' {} a -> s {parameters = a} :: FeatureMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FeatureMetadata where
+  parseJSON =
+    Data.withObject
+      "FeatureMetadata"
+      ( \x ->
+          FeatureMetadata'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "FeatureGroupArn")
+            Prelude.<*> (x Data..:? "FeatureGroupName")
+            Prelude.<*> (x Data..:? "FeatureName")
+            Prelude.<*> (x Data..:? "FeatureType")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Parameters" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable FeatureMetadata where
+  hashWithSalt _salt FeatureMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` featureGroupArn
+      `Prelude.hashWithSalt` featureGroupName
+      `Prelude.hashWithSalt` featureName
+      `Prelude.hashWithSalt` featureType
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` parameters
+
+instance Prelude.NFData FeatureMetadata where
+  rnf FeatureMetadata' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf featureGroupArn
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf featureName
+      `Prelude.seq` Prelude.rnf featureType
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf parameters
diff --git a/gen/Amazonka/SageMaker/Types/FeatureParameter.hs b/gen/Amazonka/SageMaker/Types/FeatureParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureParameter.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FeatureParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureParameter 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
+
+-- | A key-value pair that you specify to describe the feature.
+--
+-- /See:/ 'newFeatureParameter' smart constructor.
+data FeatureParameter = FeatureParameter'
+  { -- | A key that must contain a value to describe the feature.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The value that belongs to a key.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FeatureParameter' 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:
+--
+-- 'key', 'featureParameter_key' - A key that must contain a value to describe the feature.
+--
+-- 'value', 'featureParameter_value' - The value that belongs to a key.
+newFeatureParameter ::
+  FeatureParameter
+newFeatureParameter =
+  FeatureParameter'
+    { key = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | A key that must contain a value to describe the feature.
+featureParameter_key :: Lens.Lens' FeatureParameter (Prelude.Maybe Prelude.Text)
+featureParameter_key = Lens.lens (\FeatureParameter' {key} -> key) (\s@FeatureParameter' {} a -> s {key = a} :: FeatureParameter)
+
+-- | The value that belongs to a key.
+featureParameter_value :: Lens.Lens' FeatureParameter (Prelude.Maybe Prelude.Text)
+featureParameter_value = Lens.lens (\FeatureParameter' {value} -> value) (\s@FeatureParameter' {} a -> s {value = a} :: FeatureParameter)
+
+instance Data.FromJSON FeatureParameter where
+  parseJSON =
+    Data.withObject
+      "FeatureParameter"
+      ( \x ->
+          FeatureParameter'
+            Prelude.<$> (x Data..:? "Key")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable FeatureParameter where
+  hashWithSalt _salt FeatureParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData FeatureParameter where
+  rnf FeatureParameter' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON FeatureParameter where
+  toJSON FeatureParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Key" Data..=) Prelude.<$> key,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FeatureStatus.hs b/gen/Amazonka/SageMaker/Types/FeatureStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FeatureStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureStatus
+  ( FeatureStatus
+      ( ..,
+        FeatureStatus_DISABLED,
+        FeatureStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeatureStatus = FeatureStatus'
+  { fromFeatureStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FeatureStatus_DISABLED :: FeatureStatus
+pattern FeatureStatus_DISABLED = FeatureStatus' "DISABLED"
+
+pattern FeatureStatus_ENABLED :: FeatureStatus
+pattern FeatureStatus_ENABLED = FeatureStatus' "ENABLED"
+
+{-# COMPLETE
+  FeatureStatus_DISABLED,
+  FeatureStatus_ENABLED,
+  FeatureStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FeatureType.hs b/gen/Amazonka/SageMaker/Types/FeatureType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FeatureType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FeatureType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FeatureType
+  ( FeatureType
+      ( ..,
+        FeatureType_Fractional,
+        FeatureType_Integral,
+        FeatureType_String
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeatureType = FeatureType'
+  { fromFeatureType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FeatureType_Fractional :: FeatureType
+pattern FeatureType_Fractional = FeatureType' "Fractional"
+
+pattern FeatureType_Integral :: FeatureType
+pattern FeatureType_Integral = FeatureType' "Integral"
+
+pattern FeatureType_String :: FeatureType
+pattern FeatureType_String = FeatureType' "String"
+
+{-# COMPLETE
+  FeatureType_Fractional,
+  FeatureType_Integral,
+  FeatureType_String,
+  FeatureType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FileSource.hs b/gen/Amazonka/SageMaker/Types/FileSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FileSource.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FileSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FileSource 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
+
+-- | Contains details regarding the file source.
+--
+-- /See:/ 'newFileSource' smart constructor.
+data FileSource = FileSource'
+  { -- | The digest of the file source.
+    contentDigest :: Prelude.Maybe Prelude.Text,
+    -- | The type of content stored in the file source.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 URI for the file source.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSource' 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:
+--
+-- 'contentDigest', 'fileSource_contentDigest' - The digest of the file source.
+--
+-- 'contentType', 'fileSource_contentType' - The type of content stored in the file source.
+--
+-- 's3Uri', 'fileSource_s3Uri' - The Amazon S3 URI for the file source.
+newFileSource ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  FileSource
+newFileSource pS3Uri_ =
+  FileSource'
+    { contentDigest = Prelude.Nothing,
+      contentType = Prelude.Nothing,
+      s3Uri = pS3Uri_
+    }
+
+-- | The digest of the file source.
+fileSource_contentDigest :: Lens.Lens' FileSource (Prelude.Maybe Prelude.Text)
+fileSource_contentDigest = Lens.lens (\FileSource' {contentDigest} -> contentDigest) (\s@FileSource' {} a -> s {contentDigest = a} :: FileSource)
+
+-- | The type of content stored in the file source.
+fileSource_contentType :: Lens.Lens' FileSource (Prelude.Maybe Prelude.Text)
+fileSource_contentType = Lens.lens (\FileSource' {contentType} -> contentType) (\s@FileSource' {} a -> s {contentType = a} :: FileSource)
+
+-- | The Amazon S3 URI for the file source.
+fileSource_s3Uri :: Lens.Lens' FileSource Prelude.Text
+fileSource_s3Uri = Lens.lens (\FileSource' {s3Uri} -> s3Uri) (\s@FileSource' {} a -> s {s3Uri = a} :: FileSource)
+
+instance Data.FromJSON FileSource where
+  parseJSON =
+    Data.withObject
+      "FileSource"
+      ( \x ->
+          FileSource'
+            Prelude.<$> (x Data..:? "ContentDigest")
+            Prelude.<*> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable FileSource where
+  hashWithSalt _salt FileSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentDigest
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData FileSource where
+  rnf FileSource' {..} =
+    Prelude.rnf contentDigest
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON FileSource where
+  toJSON FileSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentDigest" Data..=) Prelude.<$> contentDigest,
+            ("ContentType" Data..=) Prelude.<$> contentType,
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FileSystemAccessMode.hs b/gen/Amazonka/SageMaker/Types/FileSystemAccessMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FileSystemAccessMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FileSystemAccessMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FileSystemAccessMode
+  ( FileSystemAccessMode
+      ( ..,
+        FileSystemAccessMode_Ro,
+        FileSystemAccessMode_Rw
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileSystemAccessMode = FileSystemAccessMode'
+  { fromFileSystemAccessMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FileSystemAccessMode_Ro :: FileSystemAccessMode
+pattern FileSystemAccessMode_Ro = FileSystemAccessMode' "ro"
+
+pattern FileSystemAccessMode_Rw :: FileSystemAccessMode
+pattern FileSystemAccessMode_Rw = FileSystemAccessMode' "rw"
+
+{-# COMPLETE
+  FileSystemAccessMode_Ro,
+  FileSystemAccessMode_Rw,
+  FileSystemAccessMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FileSystemConfig.hs b/gen/Amazonka/SageMaker/Types/FileSystemConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FileSystemConfig.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FileSystemConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FileSystemConfig 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
+
+-- | The Amazon Elastic File System (EFS) storage configuration for a
+-- SageMaker image.
+--
+-- /See:/ 'newFileSystemConfig' smart constructor.
+data FileSystemConfig = FileSystemConfig'
+  { -- | The default POSIX group ID (GID). If not specified, defaults to @100@.
+    defaultGid :: Prelude.Maybe Prelude.Natural,
+    -- | The default POSIX user ID (UID). If not specified, defaults to @1000@.
+    defaultUid :: Prelude.Maybe Prelude.Natural,
+    -- | The path within the image to mount the user\'s EFS home directory. The
+    -- directory should be empty. If not specified, defaults to
+    -- /\/home\/sagemaker-user/.
+    mountPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSystemConfig' 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:
+--
+-- 'defaultGid', 'fileSystemConfig_defaultGid' - The default POSIX group ID (GID). If not specified, defaults to @100@.
+--
+-- 'defaultUid', 'fileSystemConfig_defaultUid' - The default POSIX user ID (UID). If not specified, defaults to @1000@.
+--
+-- 'mountPath', 'fileSystemConfig_mountPath' - The path within the image to mount the user\'s EFS home directory. The
+-- directory should be empty. If not specified, defaults to
+-- /\/home\/sagemaker-user/.
+newFileSystemConfig ::
+  FileSystemConfig
+newFileSystemConfig =
+  FileSystemConfig'
+    { defaultGid = Prelude.Nothing,
+      defaultUid = Prelude.Nothing,
+      mountPath = Prelude.Nothing
+    }
+
+-- | The default POSIX group ID (GID). If not specified, defaults to @100@.
+fileSystemConfig_defaultGid :: Lens.Lens' FileSystemConfig (Prelude.Maybe Prelude.Natural)
+fileSystemConfig_defaultGid = Lens.lens (\FileSystemConfig' {defaultGid} -> defaultGid) (\s@FileSystemConfig' {} a -> s {defaultGid = a} :: FileSystemConfig)
+
+-- | The default POSIX user ID (UID). If not specified, defaults to @1000@.
+fileSystemConfig_defaultUid :: Lens.Lens' FileSystemConfig (Prelude.Maybe Prelude.Natural)
+fileSystemConfig_defaultUid = Lens.lens (\FileSystemConfig' {defaultUid} -> defaultUid) (\s@FileSystemConfig' {} a -> s {defaultUid = a} :: FileSystemConfig)
+
+-- | The path within the image to mount the user\'s EFS home directory. The
+-- directory should be empty. If not specified, defaults to
+-- /\/home\/sagemaker-user/.
+fileSystemConfig_mountPath :: Lens.Lens' FileSystemConfig (Prelude.Maybe Prelude.Text)
+fileSystemConfig_mountPath = Lens.lens (\FileSystemConfig' {mountPath} -> mountPath) (\s@FileSystemConfig' {} a -> s {mountPath = a} :: FileSystemConfig)
+
+instance Data.FromJSON FileSystemConfig where
+  parseJSON =
+    Data.withObject
+      "FileSystemConfig"
+      ( \x ->
+          FileSystemConfig'
+            Prelude.<$> (x Data..:? "DefaultGid")
+            Prelude.<*> (x Data..:? "DefaultUid")
+            Prelude.<*> (x Data..:? "MountPath")
+      )
+
+instance Prelude.Hashable FileSystemConfig where
+  hashWithSalt _salt FileSystemConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultGid
+      `Prelude.hashWithSalt` defaultUid
+      `Prelude.hashWithSalt` mountPath
+
+instance Prelude.NFData FileSystemConfig where
+  rnf FileSystemConfig' {..} =
+    Prelude.rnf defaultGid
+      `Prelude.seq` Prelude.rnf defaultUid
+      `Prelude.seq` Prelude.rnf mountPath
+
+instance Data.ToJSON FileSystemConfig where
+  toJSON FileSystemConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultGid" Data..=) Prelude.<$> defaultGid,
+            ("DefaultUid" Data..=) Prelude.<$> defaultUid,
+            ("MountPath" Data..=) Prelude.<$> mountPath
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FileSystemDataSource.hs b/gen/Amazonka/SageMaker/Types/FileSystemDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FileSystemDataSource.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FileSystemDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FileSystemDataSource 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 Amazonka.SageMaker.Types.FileSystemAccessMode
+import Amazonka.SageMaker.Types.FileSystemType
+
+-- | Specifies a file system data source for a channel.
+--
+-- /See:/ 'newFileSystemDataSource' smart constructor.
+data FileSystemDataSource = FileSystemDataSource'
+  { -- | The file system id.
+    fileSystemId :: Prelude.Text,
+    -- | The access mode of the mount of the directory associated with the
+    -- channel. A directory can be mounted either in @ro@ (read-only) or @rw@
+    -- (read-write) mode.
+    fileSystemAccessMode :: FileSystemAccessMode,
+    -- | The file system type.
+    fileSystemType :: FileSystemType,
+    -- | The full path to the directory to associate with the channel.
+    directoryPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FileSystemDataSource' 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:
+--
+-- 'fileSystemId', 'fileSystemDataSource_fileSystemId' - The file system id.
+--
+-- 'fileSystemAccessMode', 'fileSystemDataSource_fileSystemAccessMode' - The access mode of the mount of the directory associated with the
+-- channel. A directory can be mounted either in @ro@ (read-only) or @rw@
+-- (read-write) mode.
+--
+-- 'fileSystemType', 'fileSystemDataSource_fileSystemType' - The file system type.
+--
+-- 'directoryPath', 'fileSystemDataSource_directoryPath' - The full path to the directory to associate with the channel.
+newFileSystemDataSource ::
+  -- | 'fileSystemId'
+  Prelude.Text ->
+  -- | 'fileSystemAccessMode'
+  FileSystemAccessMode ->
+  -- | 'fileSystemType'
+  FileSystemType ->
+  -- | 'directoryPath'
+  Prelude.Text ->
+  FileSystemDataSource
+newFileSystemDataSource
+  pFileSystemId_
+  pFileSystemAccessMode_
+  pFileSystemType_
+  pDirectoryPath_ =
+    FileSystemDataSource'
+      { fileSystemId =
+          pFileSystemId_,
+        fileSystemAccessMode = pFileSystemAccessMode_,
+        fileSystemType = pFileSystemType_,
+        directoryPath = pDirectoryPath_
+      }
+
+-- | The file system id.
+fileSystemDataSource_fileSystemId :: Lens.Lens' FileSystemDataSource Prelude.Text
+fileSystemDataSource_fileSystemId = Lens.lens (\FileSystemDataSource' {fileSystemId} -> fileSystemId) (\s@FileSystemDataSource' {} a -> s {fileSystemId = a} :: FileSystemDataSource)
+
+-- | The access mode of the mount of the directory associated with the
+-- channel. A directory can be mounted either in @ro@ (read-only) or @rw@
+-- (read-write) mode.
+fileSystemDataSource_fileSystemAccessMode :: Lens.Lens' FileSystemDataSource FileSystemAccessMode
+fileSystemDataSource_fileSystemAccessMode = Lens.lens (\FileSystemDataSource' {fileSystemAccessMode} -> fileSystemAccessMode) (\s@FileSystemDataSource' {} a -> s {fileSystemAccessMode = a} :: FileSystemDataSource)
+
+-- | The file system type.
+fileSystemDataSource_fileSystemType :: Lens.Lens' FileSystemDataSource FileSystemType
+fileSystemDataSource_fileSystemType = Lens.lens (\FileSystemDataSource' {fileSystemType} -> fileSystemType) (\s@FileSystemDataSource' {} a -> s {fileSystemType = a} :: FileSystemDataSource)
+
+-- | The full path to the directory to associate with the channel.
+fileSystemDataSource_directoryPath :: Lens.Lens' FileSystemDataSource Prelude.Text
+fileSystemDataSource_directoryPath = Lens.lens (\FileSystemDataSource' {directoryPath} -> directoryPath) (\s@FileSystemDataSource' {} a -> s {directoryPath = a} :: FileSystemDataSource)
+
+instance Data.FromJSON FileSystemDataSource where
+  parseJSON =
+    Data.withObject
+      "FileSystemDataSource"
+      ( \x ->
+          FileSystemDataSource'
+            Prelude.<$> (x Data..: "FileSystemId")
+            Prelude.<*> (x Data..: "FileSystemAccessMode")
+            Prelude.<*> (x Data..: "FileSystemType")
+            Prelude.<*> (x Data..: "DirectoryPath")
+      )
+
+instance Prelude.Hashable FileSystemDataSource where
+  hashWithSalt _salt FileSystemDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` fileSystemId
+      `Prelude.hashWithSalt` fileSystemAccessMode
+      `Prelude.hashWithSalt` fileSystemType
+      `Prelude.hashWithSalt` directoryPath
+
+instance Prelude.NFData FileSystemDataSource where
+  rnf FileSystemDataSource' {..} =
+    Prelude.rnf fileSystemId
+      `Prelude.seq` Prelude.rnf fileSystemAccessMode
+      `Prelude.seq` Prelude.rnf fileSystemType
+      `Prelude.seq` Prelude.rnf directoryPath
+
+instance Data.ToJSON FileSystemDataSource where
+  toJSON FileSystemDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("FileSystemId" Data..= fileSystemId),
+            Prelude.Just
+              ( "FileSystemAccessMode"
+                  Data..= fileSystemAccessMode
+              ),
+            Prelude.Just
+              ("FileSystemType" Data..= fileSystemType),
+            Prelude.Just
+              ("DirectoryPath" Data..= directoryPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FileSystemType.hs b/gen/Amazonka/SageMaker/Types/FileSystemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FileSystemType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FileSystemType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FileSystemType
+  ( FileSystemType
+      ( ..,
+        FileSystemType_EFS,
+        FileSystemType_FSxLustre
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FileSystemType = FileSystemType'
+  { fromFileSystemType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FileSystemType_EFS :: FileSystemType
+pattern FileSystemType_EFS = FileSystemType' "EFS"
+
+pattern FileSystemType_FSxLustre :: FileSystemType
+pattern FileSystemType_FSxLustre = FileSystemType' "FSxLustre"
+
+{-# COMPLETE
+  FileSystemType_EFS,
+  FileSystemType_FSxLustre,
+  FileSystemType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Filter.hs b/gen/Amazonka/SageMaker/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Filter.hs
@@ -0,0 +1,365 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Filter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Filter 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 Amazonka.SageMaker.Types.Operator
+
+-- | A conditional statement for a search expression that includes a resource
+-- property, a Boolean operator, and a value. Resources that match the
+-- statement are returned in the results from the Search API.
+--
+-- If you specify a @Value@, but not an @Operator@, Amazon SageMaker uses
+-- the equals operator.
+--
+-- In search, there are several property types:
+--
+-- [Metrics]
+--     To define a metric filter, enter a value using the form
+--     @\"Metrics.\<name>\"@, where @\<name>@ is a metric name. For
+--     example, the following filter searches for training jobs with an
+--     @\"accuracy\"@ metric greater than @\"0.9\"@:
+--
+--     @{@
+--
+--     @\"Name\": \"Metrics.accuracy\",@
+--
+--     @\"Operator\": \"GreaterThan\",@
+--
+--     @\"Value\": \"0.9\"@
+--
+--     @}@
+--
+-- [HyperParameters]
+--     To define a hyperparameter filter, enter a value with the form
+--     @\"HyperParameters.\<name>\"@. Decimal hyperparameter values are
+--     treated as a decimal in a comparison if the specified @Value@ is
+--     also a decimal value. If the specified @Value@ is an integer, the
+--     decimal hyperparameter values are treated as integers. For example,
+--     the following filter is satisfied by training jobs with a
+--     @\"learning_rate\"@ hyperparameter that is less than @\"0.5\"@:
+--
+--     @ {@
+--
+--     @ \"Name\": \"HyperParameters.learning_rate\",@
+--
+--     @ \"Operator\": \"LessThan\",@
+--
+--     @ \"Value\": \"0.5\"@
+--
+--     @ }@
+--
+-- [Tags]
+--     To define a tag filter, enter a value with the form @Tags.\<key>@.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | A Boolean binary operator that is used to evaluate the filter. The
+    -- operator field contains one of the following values:
+    --
+    -- [Equals]
+    --     The value of @Name@ equals @Value@.
+    --
+    -- [NotEquals]
+    --     The value of @Name@ doesn\'t equal @Value@.
+    --
+    -- [Exists]
+    --     The @Name@ property exists.
+    --
+    -- [NotExists]
+    --     The @Name@ property does not exist.
+    --
+    -- [GreaterThan]
+    --     The value of @Name@ is greater than @Value@. Not supported for text
+    --     properties.
+    --
+    -- [GreaterThanOrEqualTo]
+    --     The value of @Name@ is greater than or equal to @Value@. Not
+    --     supported for text properties.
+    --
+    -- [LessThan]
+    --     The value of @Name@ is less than @Value@. Not supported for text
+    --     properties.
+    --
+    -- [LessThanOrEqualTo]
+    --     The value of @Name@ is less than or equal to @Value@. Not supported
+    --     for text properties.
+    --
+    -- [In]
+    --     The value of @Name@ is one of the comma delimited strings in
+    --     @Value@. Only supported for text properties.
+    --
+    -- [Contains]
+    --     The value of @Name@ contains the string @Value@. Only supported for
+    --     text properties.
+    --
+    --     A @SearchExpression@ can include the @Contains@ operator multiple
+    --     times when the value of @Name@ is one of the following:
+    --
+    --     -   @Experiment.DisplayName@
+    --
+    --     -   @Experiment.ExperimentName@
+    --
+    --     -   @Experiment.Tags@
+    --
+    --     -   @Trial.DisplayName@
+    --
+    --     -   @Trial.TrialName@
+    --
+    --     -   @Trial.Tags@
+    --
+    --     -   @TrialComponent.DisplayName@
+    --
+    --     -   @TrialComponent.TrialComponentName@
+    --
+    --     -   @TrialComponent.Tags@
+    --
+    --     -   @TrialComponent.InputArtifacts@
+    --
+    --     -   @TrialComponent.OutputArtifacts@
+    --
+    --     A @SearchExpression@ can include only one @Contains@ operator for
+    --     all other values of @Name@. In these cases, if you include multiple
+    --     @Contains@ operators in the @SearchExpression@, the result is the
+    --     following error message:
+    --     \"@\'CONTAINS\' operator usage limit of 1 exceeded.@\"
+    operator :: Prelude.Maybe Operator,
+    -- | A value used with @Name@ and @Operator@ to determine which resources
+    -- satisfy the filter\'s condition. For numerical properties, @Value@ must
+    -- be an integer or floating-point decimal. For timestamp properties,
+    -- @Value@ must be an ISO 8601 date-time string of the following format:
+    -- @YYYY-mm-dd\'T\'HH:MM:SS@.
+    value :: Prelude.Maybe Prelude.Text,
+    -- | A resource property name. For example, @TrainingJobName@. For valid
+    -- property names, see SearchRecord. You must specify a valid property for
+    -- the resource.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' 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:
+--
+-- 'operator', 'filter_operator' - A Boolean binary operator that is used to evaluate the filter. The
+-- operator field contains one of the following values:
+--
+-- [Equals]
+--     The value of @Name@ equals @Value@.
+--
+-- [NotEquals]
+--     The value of @Name@ doesn\'t equal @Value@.
+--
+-- [Exists]
+--     The @Name@ property exists.
+--
+-- [NotExists]
+--     The @Name@ property does not exist.
+--
+-- [GreaterThan]
+--     The value of @Name@ is greater than @Value@. Not supported for text
+--     properties.
+--
+-- [GreaterThanOrEqualTo]
+--     The value of @Name@ is greater than or equal to @Value@. Not
+--     supported for text properties.
+--
+-- [LessThan]
+--     The value of @Name@ is less than @Value@. Not supported for text
+--     properties.
+--
+-- [LessThanOrEqualTo]
+--     The value of @Name@ is less than or equal to @Value@. Not supported
+--     for text properties.
+--
+-- [In]
+--     The value of @Name@ is one of the comma delimited strings in
+--     @Value@. Only supported for text properties.
+--
+-- [Contains]
+--     The value of @Name@ contains the string @Value@. Only supported for
+--     text properties.
+--
+--     A @SearchExpression@ can include the @Contains@ operator multiple
+--     times when the value of @Name@ is one of the following:
+--
+--     -   @Experiment.DisplayName@
+--
+--     -   @Experiment.ExperimentName@
+--
+--     -   @Experiment.Tags@
+--
+--     -   @Trial.DisplayName@
+--
+--     -   @Trial.TrialName@
+--
+--     -   @Trial.Tags@
+--
+--     -   @TrialComponent.DisplayName@
+--
+--     -   @TrialComponent.TrialComponentName@
+--
+--     -   @TrialComponent.Tags@
+--
+--     -   @TrialComponent.InputArtifacts@
+--
+--     -   @TrialComponent.OutputArtifacts@
+--
+--     A @SearchExpression@ can include only one @Contains@ operator for
+--     all other values of @Name@. In these cases, if you include multiple
+--     @Contains@ operators in the @SearchExpression@, the result is the
+--     following error message:
+--     \"@\'CONTAINS\' operator usage limit of 1 exceeded.@\"
+--
+-- 'value', 'filter_value' - A value used with @Name@ and @Operator@ to determine which resources
+-- satisfy the filter\'s condition. For numerical properties, @Value@ must
+-- be an integer or floating-point decimal. For timestamp properties,
+-- @Value@ must be an ISO 8601 date-time string of the following format:
+-- @YYYY-mm-dd\'T\'HH:MM:SS@.
+--
+-- 'name', 'filter_name' - A resource property name. For example, @TrainingJobName@. For valid
+-- property names, see SearchRecord. You must specify a valid property for
+-- the resource.
+newFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  Filter
+newFilter pName_ =
+  Filter'
+    { operator = Prelude.Nothing,
+      value = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | A Boolean binary operator that is used to evaluate the filter. The
+-- operator field contains one of the following values:
+--
+-- [Equals]
+--     The value of @Name@ equals @Value@.
+--
+-- [NotEquals]
+--     The value of @Name@ doesn\'t equal @Value@.
+--
+-- [Exists]
+--     The @Name@ property exists.
+--
+-- [NotExists]
+--     The @Name@ property does not exist.
+--
+-- [GreaterThan]
+--     The value of @Name@ is greater than @Value@. Not supported for text
+--     properties.
+--
+-- [GreaterThanOrEqualTo]
+--     The value of @Name@ is greater than or equal to @Value@. Not
+--     supported for text properties.
+--
+-- [LessThan]
+--     The value of @Name@ is less than @Value@. Not supported for text
+--     properties.
+--
+-- [LessThanOrEqualTo]
+--     The value of @Name@ is less than or equal to @Value@. Not supported
+--     for text properties.
+--
+-- [In]
+--     The value of @Name@ is one of the comma delimited strings in
+--     @Value@. Only supported for text properties.
+--
+-- [Contains]
+--     The value of @Name@ contains the string @Value@. Only supported for
+--     text properties.
+--
+--     A @SearchExpression@ can include the @Contains@ operator multiple
+--     times when the value of @Name@ is one of the following:
+--
+--     -   @Experiment.DisplayName@
+--
+--     -   @Experiment.ExperimentName@
+--
+--     -   @Experiment.Tags@
+--
+--     -   @Trial.DisplayName@
+--
+--     -   @Trial.TrialName@
+--
+--     -   @Trial.Tags@
+--
+--     -   @TrialComponent.DisplayName@
+--
+--     -   @TrialComponent.TrialComponentName@
+--
+--     -   @TrialComponent.Tags@
+--
+--     -   @TrialComponent.InputArtifacts@
+--
+--     -   @TrialComponent.OutputArtifacts@
+--
+--     A @SearchExpression@ can include only one @Contains@ operator for
+--     all other values of @Name@. In these cases, if you include multiple
+--     @Contains@ operators in the @SearchExpression@, the result is the
+--     following error message:
+--     \"@\'CONTAINS\' operator usage limit of 1 exceeded.@\"
+filter_operator :: Lens.Lens' Filter (Prelude.Maybe Operator)
+filter_operator = Lens.lens (\Filter' {operator} -> operator) (\s@Filter' {} a -> s {operator = a} :: Filter)
+
+-- | A value used with @Name@ and @Operator@ to determine which resources
+-- satisfy the filter\'s condition. For numerical properties, @Value@ must
+-- be an integer or floating-point decimal. For timestamp properties,
+-- @Value@ must be an ISO 8601 date-time string of the following format:
+-- @YYYY-mm-dd\'T\'HH:MM:SS@.
+filter_value :: Lens.Lens' Filter (Prelude.Maybe Prelude.Text)
+filter_value = Lens.lens (\Filter' {value} -> value) (\s@Filter' {} a -> s {value = a} :: Filter)
+
+-- | A resource property name. For example, @TrainingJobName@. For valid
+-- property names, see SearchRecord. You must specify a valid property for
+-- the resource.
+filter_name :: Lens.Lens' Filter Prelude.Text
+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Operator" Data..=) Prelude.<$> operator,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FinalAutoMLJobObjectiveMetric.hs b/gen/Amazonka/SageMaker/Types/FinalAutoMLJobObjectiveMetric.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FinalAutoMLJobObjectiveMetric.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FinalAutoMLJobObjectiveMetric
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FinalAutoMLJobObjectiveMetric 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 Amazonka.SageMaker.Types.AutoMLJobObjectiveType
+import Amazonka.SageMaker.Types.AutoMLMetricEnum
+
+-- | The best candidate result from an AutoML training job.
+--
+-- /See:/ 'newFinalAutoMLJobObjectiveMetric' smart constructor.
+data FinalAutoMLJobObjectiveMetric = FinalAutoMLJobObjectiveMetric'
+  { -- | The type of metric with the best result.
+    type' :: Prelude.Maybe AutoMLJobObjectiveType,
+    -- | The name of the metric with the best result. For a description of the
+    -- possible objective metrics, see AutoMLJobObjective$MetricName.
+    metricName :: AutoMLMetricEnum,
+    -- | The value of the metric with the best result.
+    value :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FinalAutoMLJobObjectiveMetric' 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:
+--
+-- 'type'', 'finalAutoMLJobObjectiveMetric_type' - The type of metric with the best result.
+--
+-- 'metricName', 'finalAutoMLJobObjectiveMetric_metricName' - The name of the metric with the best result. For a description of the
+-- possible objective metrics, see AutoMLJobObjective$MetricName.
+--
+-- 'value', 'finalAutoMLJobObjectiveMetric_value' - The value of the metric with the best result.
+newFinalAutoMLJobObjectiveMetric ::
+  -- | 'metricName'
+  AutoMLMetricEnum ->
+  -- | 'value'
+  Prelude.Double ->
+  FinalAutoMLJobObjectiveMetric
+newFinalAutoMLJobObjectiveMetric pMetricName_ pValue_ =
+  FinalAutoMLJobObjectiveMetric'
+    { type' =
+        Prelude.Nothing,
+      metricName = pMetricName_,
+      value = pValue_
+    }
+
+-- | The type of metric with the best result.
+finalAutoMLJobObjectiveMetric_type :: Lens.Lens' FinalAutoMLJobObjectiveMetric (Prelude.Maybe AutoMLJobObjectiveType)
+finalAutoMLJobObjectiveMetric_type = Lens.lens (\FinalAutoMLJobObjectiveMetric' {type'} -> type') (\s@FinalAutoMLJobObjectiveMetric' {} a -> s {type' = a} :: FinalAutoMLJobObjectiveMetric)
+
+-- | The name of the metric with the best result. For a description of the
+-- possible objective metrics, see AutoMLJobObjective$MetricName.
+finalAutoMLJobObjectiveMetric_metricName :: Lens.Lens' FinalAutoMLJobObjectiveMetric AutoMLMetricEnum
+finalAutoMLJobObjectiveMetric_metricName = Lens.lens (\FinalAutoMLJobObjectiveMetric' {metricName} -> metricName) (\s@FinalAutoMLJobObjectiveMetric' {} a -> s {metricName = a} :: FinalAutoMLJobObjectiveMetric)
+
+-- | The value of the metric with the best result.
+finalAutoMLJobObjectiveMetric_value :: Lens.Lens' FinalAutoMLJobObjectiveMetric Prelude.Double
+finalAutoMLJobObjectiveMetric_value = Lens.lens (\FinalAutoMLJobObjectiveMetric' {value} -> value) (\s@FinalAutoMLJobObjectiveMetric' {} a -> s {value = a} :: FinalAutoMLJobObjectiveMetric)
+
+instance Data.FromJSON FinalAutoMLJobObjectiveMetric where
+  parseJSON =
+    Data.withObject
+      "FinalAutoMLJobObjectiveMetric"
+      ( \x ->
+          FinalAutoMLJobObjectiveMetric'
+            Prelude.<$> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "MetricName")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance
+  Prelude.Hashable
+    FinalAutoMLJobObjectiveMetric
+  where
+  hashWithSalt _salt FinalAutoMLJobObjectiveMetric' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` metricName
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData FinalAutoMLJobObjectiveMetric where
+  rnf FinalAutoMLJobObjectiveMetric' {..} =
+    Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf metricName
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/SageMaker/Types/FinalHyperParameterTuningJobObjectiveMetric.hs b/gen/Amazonka/SageMaker/Types/FinalHyperParameterTuningJobObjectiveMetric.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FinalHyperParameterTuningJobObjectiveMetric.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FinalHyperParameterTuningJobObjectiveMetric
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FinalHyperParameterTuningJobObjectiveMetric 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 Amazonka.SageMaker.Types.HyperParameterTuningJobObjectiveType
+
+-- | Shows the final value for the objective metric for a training job that
+-- was launched by a hyperparameter tuning job. You define the objective
+-- metric in the @HyperParameterTuningJobObjective@ parameter of
+-- HyperParameterTuningJobConfig.
+--
+-- /See:/ 'newFinalHyperParameterTuningJobObjectiveMetric' smart constructor.
+data FinalHyperParameterTuningJobObjectiveMetric = FinalHyperParameterTuningJobObjectiveMetric'
+  { -- | Whether to minimize or maximize the objective metric. Valid values are
+    -- Minimize and Maximize.
+    type' :: Prelude.Maybe HyperParameterTuningJobObjectiveType,
+    -- | The name of the objective metric.
+    metricName :: Prelude.Text,
+    -- | The value of the objective metric.
+    value :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FinalHyperParameterTuningJobObjectiveMetric' 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:
+--
+-- 'type'', 'finalHyperParameterTuningJobObjectiveMetric_type' - Whether to minimize or maximize the objective metric. Valid values are
+-- Minimize and Maximize.
+--
+-- 'metricName', 'finalHyperParameterTuningJobObjectiveMetric_metricName' - The name of the objective metric.
+--
+-- 'value', 'finalHyperParameterTuningJobObjectiveMetric_value' - The value of the objective metric.
+newFinalHyperParameterTuningJobObjectiveMetric ::
+  -- | 'metricName'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Double ->
+  FinalHyperParameterTuningJobObjectiveMetric
+newFinalHyperParameterTuningJobObjectiveMetric
+  pMetricName_
+  pValue_ =
+    FinalHyperParameterTuningJobObjectiveMetric'
+      { type' =
+          Prelude.Nothing,
+        metricName = pMetricName_,
+        value = pValue_
+      }
+
+-- | Whether to minimize or maximize the objective metric. Valid values are
+-- Minimize and Maximize.
+finalHyperParameterTuningJobObjectiveMetric_type :: Lens.Lens' FinalHyperParameterTuningJobObjectiveMetric (Prelude.Maybe HyperParameterTuningJobObjectiveType)
+finalHyperParameterTuningJobObjectiveMetric_type = Lens.lens (\FinalHyperParameterTuningJobObjectiveMetric' {type'} -> type') (\s@FinalHyperParameterTuningJobObjectiveMetric' {} a -> s {type' = a} :: FinalHyperParameterTuningJobObjectiveMetric)
+
+-- | The name of the objective metric.
+finalHyperParameterTuningJobObjectiveMetric_metricName :: Lens.Lens' FinalHyperParameterTuningJobObjectiveMetric Prelude.Text
+finalHyperParameterTuningJobObjectiveMetric_metricName = Lens.lens (\FinalHyperParameterTuningJobObjectiveMetric' {metricName} -> metricName) (\s@FinalHyperParameterTuningJobObjectiveMetric' {} a -> s {metricName = a} :: FinalHyperParameterTuningJobObjectiveMetric)
+
+-- | The value of the objective metric.
+finalHyperParameterTuningJobObjectiveMetric_value :: Lens.Lens' FinalHyperParameterTuningJobObjectiveMetric Prelude.Double
+finalHyperParameterTuningJobObjectiveMetric_value = Lens.lens (\FinalHyperParameterTuningJobObjectiveMetric' {value} -> value) (\s@FinalHyperParameterTuningJobObjectiveMetric' {} a -> s {value = a} :: FinalHyperParameterTuningJobObjectiveMetric)
+
+instance
+  Data.FromJSON
+    FinalHyperParameterTuningJobObjectiveMetric
+  where
+  parseJSON =
+    Data.withObject
+      "FinalHyperParameterTuningJobObjectiveMetric"
+      ( \x ->
+          FinalHyperParameterTuningJobObjectiveMetric'
+            Prelude.<$> (x Data..:? "Type")
+            Prelude.<*> (x Data..: "MetricName")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance
+  Prelude.Hashable
+    FinalHyperParameterTuningJobObjectiveMetric
+  where
+  hashWithSalt
+    _salt
+    FinalHyperParameterTuningJobObjectiveMetric' {..} =
+      _salt
+        `Prelude.hashWithSalt` type'
+        `Prelude.hashWithSalt` metricName
+        `Prelude.hashWithSalt` value
+
+instance
+  Prelude.NFData
+    FinalHyperParameterTuningJobObjectiveMetric
+  where
+  rnf FinalHyperParameterTuningJobObjectiveMetric' {..} =
+    Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf metricName
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/SageMaker/Types/FlowDefinitionOutputConfig.hs b/gen/Amazonka/SageMaker/Types/FlowDefinitionOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FlowDefinitionOutputConfig.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FlowDefinitionOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FlowDefinitionOutputConfig 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
+
+-- | Contains information about where human output will be stored.
+--
+-- /See:/ 'newFlowDefinitionOutputConfig' smart constructor.
+data FlowDefinitionOutputConfig = FlowDefinitionOutputConfig'
+  { -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 path where the object containing human output will be made
+    -- available.
+    --
+    -- To learn more about the format of Amazon A2I output data, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-output-data.html Amazon A2I Output Data>.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FlowDefinitionOutputConfig' 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:
+--
+-- 'kmsKeyId', 'flowDefinitionOutputConfig_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 's3OutputPath', 'flowDefinitionOutputConfig_s3OutputPath' - The Amazon S3 path where the object containing human output will be made
+-- available.
+--
+-- To learn more about the format of Amazon A2I output data, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-output-data.html Amazon A2I Output Data>.
+newFlowDefinitionOutputConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  FlowDefinitionOutputConfig
+newFlowDefinitionOutputConfig pS3OutputPath_ =
+  FlowDefinitionOutputConfig'
+    { kmsKeyId =
+        Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+flowDefinitionOutputConfig_kmsKeyId :: Lens.Lens' FlowDefinitionOutputConfig (Prelude.Maybe Prelude.Text)
+flowDefinitionOutputConfig_kmsKeyId = Lens.lens (\FlowDefinitionOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@FlowDefinitionOutputConfig' {} a -> s {kmsKeyId = a} :: FlowDefinitionOutputConfig)
+
+-- | The Amazon S3 path where the object containing human output will be made
+-- available.
+--
+-- To learn more about the format of Amazon A2I output data, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-output-data.html Amazon A2I Output Data>.
+flowDefinitionOutputConfig_s3OutputPath :: Lens.Lens' FlowDefinitionOutputConfig Prelude.Text
+flowDefinitionOutputConfig_s3OutputPath = Lens.lens (\FlowDefinitionOutputConfig' {s3OutputPath} -> s3OutputPath) (\s@FlowDefinitionOutputConfig' {} a -> s {s3OutputPath = a} :: FlowDefinitionOutputConfig)
+
+instance Data.FromJSON FlowDefinitionOutputConfig where
+  parseJSON =
+    Data.withObject
+      "FlowDefinitionOutputConfig"
+      ( \x ->
+          FlowDefinitionOutputConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable FlowDefinitionOutputConfig where
+  hashWithSalt _salt FlowDefinitionOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData FlowDefinitionOutputConfig where
+  rnf FlowDefinitionOutputConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON FlowDefinitionOutputConfig where
+  toJSON FlowDefinitionOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/FlowDefinitionStatus.hs b/gen/Amazonka/SageMaker/Types/FlowDefinitionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FlowDefinitionStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.FlowDefinitionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FlowDefinitionStatus
+  ( FlowDefinitionStatus
+      ( ..,
+        FlowDefinitionStatus_Active,
+        FlowDefinitionStatus_Deleting,
+        FlowDefinitionStatus_Failed,
+        FlowDefinitionStatus_Initializing
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FlowDefinitionStatus = FlowDefinitionStatus'
+  { fromFlowDefinitionStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FlowDefinitionStatus_Active :: FlowDefinitionStatus
+pattern FlowDefinitionStatus_Active = FlowDefinitionStatus' "Active"
+
+pattern FlowDefinitionStatus_Deleting :: FlowDefinitionStatus
+pattern FlowDefinitionStatus_Deleting = FlowDefinitionStatus' "Deleting"
+
+pattern FlowDefinitionStatus_Failed :: FlowDefinitionStatus
+pattern FlowDefinitionStatus_Failed = FlowDefinitionStatus' "Failed"
+
+pattern FlowDefinitionStatus_Initializing :: FlowDefinitionStatus
+pattern FlowDefinitionStatus_Initializing = FlowDefinitionStatus' "Initializing"
+
+{-# COMPLETE
+  FlowDefinitionStatus_Active,
+  FlowDefinitionStatus_Deleting,
+  FlowDefinitionStatus_Failed,
+  FlowDefinitionStatus_Initializing,
+  FlowDefinitionStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/FlowDefinitionSummary.hs b/gen/Amazonka/SageMaker/Types/FlowDefinitionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/FlowDefinitionSummary.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.FlowDefinitionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.FlowDefinitionSummary 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 Amazonka.SageMaker.Types.FlowDefinitionStatus
+
+-- | Contains summary information about the flow definition.
+--
+-- /See:/ 'newFlowDefinitionSummary' smart constructor.
+data FlowDefinitionSummary = FlowDefinitionSummary'
+  { -- | The reason why the flow definition creation failed. A failure reason is
+    -- returned only when the flow definition status is @Failed@.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the flow definition.
+    flowDefinitionName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the flow definition.
+    flowDefinitionArn :: Prelude.Text,
+    -- | The status of the flow definition. Valid values:
+    flowDefinitionStatus :: FlowDefinitionStatus,
+    -- | The timestamp when SageMaker created the flow definition.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FlowDefinitionSummary' 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:
+--
+-- 'failureReason', 'flowDefinitionSummary_failureReason' - The reason why the flow definition creation failed. A failure reason is
+-- returned only when the flow definition status is @Failed@.
+--
+-- 'flowDefinitionName', 'flowDefinitionSummary_flowDefinitionName' - The name of the flow definition.
+--
+-- 'flowDefinitionArn', 'flowDefinitionSummary_flowDefinitionArn' - The Amazon Resource Name (ARN) of the flow definition.
+--
+-- 'flowDefinitionStatus', 'flowDefinitionSummary_flowDefinitionStatus' - The status of the flow definition. Valid values:
+--
+-- 'creationTime', 'flowDefinitionSummary_creationTime' - The timestamp when SageMaker created the flow definition.
+newFlowDefinitionSummary ::
+  -- | 'flowDefinitionName'
+  Prelude.Text ->
+  -- | 'flowDefinitionArn'
+  Prelude.Text ->
+  -- | 'flowDefinitionStatus'
+  FlowDefinitionStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  FlowDefinitionSummary
+newFlowDefinitionSummary
+  pFlowDefinitionName_
+  pFlowDefinitionArn_
+  pFlowDefinitionStatus_
+  pCreationTime_ =
+    FlowDefinitionSummary'
+      { failureReason =
+          Prelude.Nothing,
+        flowDefinitionName = pFlowDefinitionName_,
+        flowDefinitionArn = pFlowDefinitionArn_,
+        flowDefinitionStatus = pFlowDefinitionStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The reason why the flow definition creation failed. A failure reason is
+-- returned only when the flow definition status is @Failed@.
+flowDefinitionSummary_failureReason :: Lens.Lens' FlowDefinitionSummary (Prelude.Maybe Prelude.Text)
+flowDefinitionSummary_failureReason = Lens.lens (\FlowDefinitionSummary' {failureReason} -> failureReason) (\s@FlowDefinitionSummary' {} a -> s {failureReason = a} :: FlowDefinitionSummary)
+
+-- | The name of the flow definition.
+flowDefinitionSummary_flowDefinitionName :: Lens.Lens' FlowDefinitionSummary Prelude.Text
+flowDefinitionSummary_flowDefinitionName = Lens.lens (\FlowDefinitionSummary' {flowDefinitionName} -> flowDefinitionName) (\s@FlowDefinitionSummary' {} a -> s {flowDefinitionName = a} :: FlowDefinitionSummary)
+
+-- | The Amazon Resource Name (ARN) of the flow definition.
+flowDefinitionSummary_flowDefinitionArn :: Lens.Lens' FlowDefinitionSummary Prelude.Text
+flowDefinitionSummary_flowDefinitionArn = Lens.lens (\FlowDefinitionSummary' {flowDefinitionArn} -> flowDefinitionArn) (\s@FlowDefinitionSummary' {} a -> s {flowDefinitionArn = a} :: FlowDefinitionSummary)
+
+-- | The status of the flow definition. Valid values:
+flowDefinitionSummary_flowDefinitionStatus :: Lens.Lens' FlowDefinitionSummary FlowDefinitionStatus
+flowDefinitionSummary_flowDefinitionStatus = Lens.lens (\FlowDefinitionSummary' {flowDefinitionStatus} -> flowDefinitionStatus) (\s@FlowDefinitionSummary' {} a -> s {flowDefinitionStatus = a} :: FlowDefinitionSummary)
+
+-- | The timestamp when SageMaker created the flow definition.
+flowDefinitionSummary_creationTime :: Lens.Lens' FlowDefinitionSummary Prelude.UTCTime
+flowDefinitionSummary_creationTime = Lens.lens (\FlowDefinitionSummary' {creationTime} -> creationTime) (\s@FlowDefinitionSummary' {} a -> s {creationTime = a} :: FlowDefinitionSummary) Prelude.. Data._Time
+
+instance Data.FromJSON FlowDefinitionSummary where
+  parseJSON =
+    Data.withObject
+      "FlowDefinitionSummary"
+      ( \x ->
+          FlowDefinitionSummary'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "FlowDefinitionName")
+            Prelude.<*> (x Data..: "FlowDefinitionArn")
+            Prelude.<*> (x Data..: "FlowDefinitionStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable FlowDefinitionSummary where
+  hashWithSalt _salt FlowDefinitionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` flowDefinitionName
+      `Prelude.hashWithSalt` flowDefinitionArn
+      `Prelude.hashWithSalt` flowDefinitionStatus
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData FlowDefinitionSummary where
+  rnf FlowDefinitionSummary' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf flowDefinitionName
+      `Prelude.seq` Prelude.rnf flowDefinitionArn
+      `Prelude.seq` Prelude.rnf flowDefinitionStatus
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/Framework.hs b/gen/Amazonka/SageMaker/Types/Framework.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Framework.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.Framework
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Framework
+  ( Framework
+      ( ..,
+        Framework_DARKNET,
+        Framework_KERAS,
+        Framework_MXNET,
+        Framework_ONNX,
+        Framework_PYTORCH,
+        Framework_SKLEARN,
+        Framework_TENSORFLOW,
+        Framework_TFLITE,
+        Framework_XGBOOST
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Framework = Framework'
+  { fromFramework ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Framework_DARKNET :: Framework
+pattern Framework_DARKNET = Framework' "DARKNET"
+
+pattern Framework_KERAS :: Framework
+pattern Framework_KERAS = Framework' "KERAS"
+
+pattern Framework_MXNET :: Framework
+pattern Framework_MXNET = Framework' "MXNET"
+
+pattern Framework_ONNX :: Framework
+pattern Framework_ONNX = Framework' "ONNX"
+
+pattern Framework_PYTORCH :: Framework
+pattern Framework_PYTORCH = Framework' "PYTORCH"
+
+pattern Framework_SKLEARN :: Framework
+pattern Framework_SKLEARN = Framework' "SKLEARN"
+
+pattern Framework_TENSORFLOW :: Framework
+pattern Framework_TENSORFLOW = Framework' "TENSORFLOW"
+
+pattern Framework_TFLITE :: Framework
+pattern Framework_TFLITE = Framework' "TFLITE"
+
+pattern Framework_XGBOOST :: Framework
+pattern Framework_XGBOOST = Framework' "XGBOOST"
+
+{-# COMPLETE
+  Framework_DARKNET,
+  Framework_KERAS,
+  Framework_MXNET,
+  Framework_ONNX,
+  Framework_PYTORCH,
+  Framework_SKLEARN,
+  Framework_TENSORFLOW,
+  Framework_TFLITE,
+  Framework_XGBOOST,
+  Framework'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/GitConfig.hs b/gen/Amazonka/SageMaker/Types/GitConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/GitConfig.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.GitConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.GitConfig 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
+
+-- | Specifies configuration details for a Git repository in your Amazon Web
+-- Services account.
+--
+-- /See:/ 'newGitConfig' smart constructor.
+data GitConfig = GitConfig'
+  { -- | The default branch for the Git repository.
+    branch :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
+    -- Manager secret that contains the credentials used to access the git
+    -- repository. The secret must have a staging label of @AWSCURRENT@ and
+    -- must be in the following format:
+    --
+    -- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+    secretArn :: Prelude.Maybe Prelude.Text,
+    -- | The URL where the Git repository is located.
+    repositoryUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GitConfig' 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:
+--
+-- 'branch', 'gitConfig_branch' - The default branch for the Git repository.
+--
+-- 'secretArn', 'gitConfig_secretArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
+-- Manager secret that contains the credentials used to access the git
+-- repository. The secret must have a staging label of @AWSCURRENT@ and
+-- must be in the following format:
+--
+-- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+--
+-- 'repositoryUrl', 'gitConfig_repositoryUrl' - The URL where the Git repository is located.
+newGitConfig ::
+  -- | 'repositoryUrl'
+  Prelude.Text ->
+  GitConfig
+newGitConfig pRepositoryUrl_ =
+  GitConfig'
+    { branch = Prelude.Nothing,
+      secretArn = Prelude.Nothing,
+      repositoryUrl = pRepositoryUrl_
+    }
+
+-- | The default branch for the Git repository.
+gitConfig_branch :: Lens.Lens' GitConfig (Prelude.Maybe Prelude.Text)
+gitConfig_branch = Lens.lens (\GitConfig' {branch} -> branch) (\s@GitConfig' {} a -> s {branch = a} :: GitConfig)
+
+-- | The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
+-- Manager secret that contains the credentials used to access the git
+-- repository. The secret must have a staging label of @AWSCURRENT@ and
+-- must be in the following format:
+--
+-- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+gitConfig_secretArn :: Lens.Lens' GitConfig (Prelude.Maybe Prelude.Text)
+gitConfig_secretArn = Lens.lens (\GitConfig' {secretArn} -> secretArn) (\s@GitConfig' {} a -> s {secretArn = a} :: GitConfig)
+
+-- | The URL where the Git repository is located.
+gitConfig_repositoryUrl :: Lens.Lens' GitConfig Prelude.Text
+gitConfig_repositoryUrl = Lens.lens (\GitConfig' {repositoryUrl} -> repositoryUrl) (\s@GitConfig' {} a -> s {repositoryUrl = a} :: GitConfig)
+
+instance Data.FromJSON GitConfig where
+  parseJSON =
+    Data.withObject
+      "GitConfig"
+      ( \x ->
+          GitConfig'
+            Prelude.<$> (x Data..:? "Branch")
+            Prelude.<*> (x Data..:? "SecretArn")
+            Prelude.<*> (x Data..: "RepositoryUrl")
+      )
+
+instance Prelude.Hashable GitConfig where
+  hashWithSalt _salt GitConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` branch
+      `Prelude.hashWithSalt` secretArn
+      `Prelude.hashWithSalt` repositoryUrl
+
+instance Prelude.NFData GitConfig where
+  rnf GitConfig' {..} =
+    Prelude.rnf branch
+      `Prelude.seq` Prelude.rnf secretArn
+      `Prelude.seq` Prelude.rnf repositoryUrl
+
+instance Data.ToJSON GitConfig where
+  toJSON GitConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Branch" Data..=) Prelude.<$> branch,
+            ("SecretArn" Data..=) Prelude.<$> secretArn,
+            Prelude.Just
+              ("RepositoryUrl" Data..= repositoryUrl)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/GitConfigForUpdate.hs b/gen/Amazonka/SageMaker/Types/GitConfigForUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/GitConfigForUpdate.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.GitConfigForUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.GitConfigForUpdate 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
+
+-- | Specifies configuration details for a Git repository when the repository
+-- is updated.
+--
+-- /See:/ 'newGitConfigForUpdate' smart constructor.
+data GitConfigForUpdate = GitConfigForUpdate'
+  { -- | The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
+    -- Manager secret that contains the credentials used to access the git
+    -- repository. The secret must have a staging label of @AWSCURRENT@ and
+    -- must be in the following format:
+    --
+    -- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+    secretArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GitConfigForUpdate' 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:
+--
+-- 'secretArn', 'gitConfigForUpdate_secretArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
+-- Manager secret that contains the credentials used to access the git
+-- repository. The secret must have a staging label of @AWSCURRENT@ and
+-- must be in the following format:
+--
+-- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+newGitConfigForUpdate ::
+  GitConfigForUpdate
+newGitConfigForUpdate =
+  GitConfigForUpdate' {secretArn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
+-- Manager secret that contains the credentials used to access the git
+-- repository. The secret must have a staging label of @AWSCURRENT@ and
+-- must be in the following format:
+--
+-- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+gitConfigForUpdate_secretArn :: Lens.Lens' GitConfigForUpdate (Prelude.Maybe Prelude.Text)
+gitConfigForUpdate_secretArn = Lens.lens (\GitConfigForUpdate' {secretArn} -> secretArn) (\s@GitConfigForUpdate' {} a -> s {secretArn = a} :: GitConfigForUpdate)
+
+instance Prelude.Hashable GitConfigForUpdate where
+  hashWithSalt _salt GitConfigForUpdate' {..} =
+    _salt `Prelude.hashWithSalt` secretArn
+
+instance Prelude.NFData GitConfigForUpdate where
+  rnf GitConfigForUpdate' {..} = Prelude.rnf secretArn
+
+instance Data.ToJSON GitConfigForUpdate where
+  toJSON GitConfigForUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("SecretArn" Data..=) Prelude.<$> secretArn]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HubContentDependency.hs b/gen/Amazonka/SageMaker/Types/HubContentDependency.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubContentDependency.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HubContentDependency
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubContentDependency 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
+
+-- | Any dependencies related to hub content, such as scripts, model
+-- artifacts, datasets, or notebooks.
+--
+-- /See:/ 'newHubContentDependency' smart constructor.
+data HubContentDependency = HubContentDependency'
+  { -- | The hub content dependency copy path.
+    dependencyCopyPath :: Prelude.Maybe Prelude.Text,
+    -- | The hub content dependency origin path.
+    dependencyOriginPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HubContentDependency' 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:
+--
+-- 'dependencyCopyPath', 'hubContentDependency_dependencyCopyPath' - The hub content dependency copy path.
+--
+-- 'dependencyOriginPath', 'hubContentDependency_dependencyOriginPath' - The hub content dependency origin path.
+newHubContentDependency ::
+  HubContentDependency
+newHubContentDependency =
+  HubContentDependency'
+    { dependencyCopyPath =
+        Prelude.Nothing,
+      dependencyOriginPath = Prelude.Nothing
+    }
+
+-- | The hub content dependency copy path.
+hubContentDependency_dependencyCopyPath :: Lens.Lens' HubContentDependency (Prelude.Maybe Prelude.Text)
+hubContentDependency_dependencyCopyPath = Lens.lens (\HubContentDependency' {dependencyCopyPath} -> dependencyCopyPath) (\s@HubContentDependency' {} a -> s {dependencyCopyPath = a} :: HubContentDependency)
+
+-- | The hub content dependency origin path.
+hubContentDependency_dependencyOriginPath :: Lens.Lens' HubContentDependency (Prelude.Maybe Prelude.Text)
+hubContentDependency_dependencyOriginPath = Lens.lens (\HubContentDependency' {dependencyOriginPath} -> dependencyOriginPath) (\s@HubContentDependency' {} a -> s {dependencyOriginPath = a} :: HubContentDependency)
+
+instance Data.FromJSON HubContentDependency where
+  parseJSON =
+    Data.withObject
+      "HubContentDependency"
+      ( \x ->
+          HubContentDependency'
+            Prelude.<$> (x Data..:? "DependencyCopyPath")
+            Prelude.<*> (x Data..:? "DependencyOriginPath")
+      )
+
+instance Prelude.Hashable HubContentDependency where
+  hashWithSalt _salt HubContentDependency' {..} =
+    _salt
+      `Prelude.hashWithSalt` dependencyCopyPath
+      `Prelude.hashWithSalt` dependencyOriginPath
+
+instance Prelude.NFData HubContentDependency where
+  rnf HubContentDependency' {..} =
+    Prelude.rnf dependencyCopyPath
+      `Prelude.seq` Prelude.rnf dependencyOriginPath
diff --git a/gen/Amazonka/SageMaker/Types/HubContentInfo.hs b/gen/Amazonka/SageMaker/Types/HubContentInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubContentInfo.hs
@@ -0,0 +1,207 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HubContentInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubContentInfo 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 Amazonka.SageMaker.Types.HubContentStatus
+import Amazonka.SageMaker.Types.HubContentType
+
+-- | Information about hub content.
+--
+-- /See:/ 'newHubContentInfo' smart constructor.
+data HubContentInfo = HubContentInfo'
+  { -- | A description of the hub content.
+    hubContentDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the hub content.
+    hubContentDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords for the hub content.
+    hubContentSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the hub content.
+    hubContentName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the hub content.
+    hubContentArn :: Prelude.Text,
+    -- | The version of the hub content.
+    hubContentVersion :: Prelude.Text,
+    -- | The type of hub content.
+    hubContentType :: HubContentType,
+    -- | The version of the hub content document schema.
+    documentSchemaVersion :: Prelude.Text,
+    -- | The status of the hub content.
+    hubContentStatus :: HubContentStatus,
+    -- | The date and time that the hub content was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HubContentInfo' 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:
+--
+-- 'hubContentDescription', 'hubContentInfo_hubContentDescription' - A description of the hub content.
+--
+-- 'hubContentDisplayName', 'hubContentInfo_hubContentDisplayName' - The display name of the hub content.
+--
+-- 'hubContentSearchKeywords', 'hubContentInfo_hubContentSearchKeywords' - The searchable keywords for the hub content.
+--
+-- 'hubContentName', 'hubContentInfo_hubContentName' - The name of the hub content.
+--
+-- 'hubContentArn', 'hubContentInfo_hubContentArn' - The Amazon Resource Name (ARN) of the hub content.
+--
+-- 'hubContentVersion', 'hubContentInfo_hubContentVersion' - The version of the hub content.
+--
+-- 'hubContentType', 'hubContentInfo_hubContentType' - The type of hub content.
+--
+-- 'documentSchemaVersion', 'hubContentInfo_documentSchemaVersion' - The version of the hub content document schema.
+--
+-- 'hubContentStatus', 'hubContentInfo_hubContentStatus' - The status of the hub content.
+--
+-- 'creationTime', 'hubContentInfo_creationTime' - The date and time that the hub content was created.
+newHubContentInfo ::
+  -- | 'hubContentName'
+  Prelude.Text ->
+  -- | 'hubContentArn'
+  Prelude.Text ->
+  -- | 'hubContentVersion'
+  Prelude.Text ->
+  -- | 'hubContentType'
+  HubContentType ->
+  -- | 'documentSchemaVersion'
+  Prelude.Text ->
+  -- | 'hubContentStatus'
+  HubContentStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  HubContentInfo
+newHubContentInfo
+  pHubContentName_
+  pHubContentArn_
+  pHubContentVersion_
+  pHubContentType_
+  pDocumentSchemaVersion_
+  pHubContentStatus_
+  pCreationTime_ =
+    HubContentInfo'
+      { hubContentDescription =
+          Prelude.Nothing,
+        hubContentDisplayName = Prelude.Nothing,
+        hubContentSearchKeywords = Prelude.Nothing,
+        hubContentName = pHubContentName_,
+        hubContentArn = pHubContentArn_,
+        hubContentVersion = pHubContentVersion_,
+        hubContentType = pHubContentType_,
+        documentSchemaVersion = pDocumentSchemaVersion_,
+        hubContentStatus = pHubContentStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | A description of the hub content.
+hubContentInfo_hubContentDescription :: Lens.Lens' HubContentInfo (Prelude.Maybe Prelude.Text)
+hubContentInfo_hubContentDescription = Lens.lens (\HubContentInfo' {hubContentDescription} -> hubContentDescription) (\s@HubContentInfo' {} a -> s {hubContentDescription = a} :: HubContentInfo)
+
+-- | The display name of the hub content.
+hubContentInfo_hubContentDisplayName :: Lens.Lens' HubContentInfo (Prelude.Maybe Prelude.Text)
+hubContentInfo_hubContentDisplayName = Lens.lens (\HubContentInfo' {hubContentDisplayName} -> hubContentDisplayName) (\s@HubContentInfo' {} a -> s {hubContentDisplayName = a} :: HubContentInfo)
+
+-- | The searchable keywords for the hub content.
+hubContentInfo_hubContentSearchKeywords :: Lens.Lens' HubContentInfo (Prelude.Maybe [Prelude.Text])
+hubContentInfo_hubContentSearchKeywords = Lens.lens (\HubContentInfo' {hubContentSearchKeywords} -> hubContentSearchKeywords) (\s@HubContentInfo' {} a -> s {hubContentSearchKeywords = a} :: HubContentInfo) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the hub content.
+hubContentInfo_hubContentName :: Lens.Lens' HubContentInfo Prelude.Text
+hubContentInfo_hubContentName = Lens.lens (\HubContentInfo' {hubContentName} -> hubContentName) (\s@HubContentInfo' {} a -> s {hubContentName = a} :: HubContentInfo)
+
+-- | The Amazon Resource Name (ARN) of the hub content.
+hubContentInfo_hubContentArn :: Lens.Lens' HubContentInfo Prelude.Text
+hubContentInfo_hubContentArn = Lens.lens (\HubContentInfo' {hubContentArn} -> hubContentArn) (\s@HubContentInfo' {} a -> s {hubContentArn = a} :: HubContentInfo)
+
+-- | The version of the hub content.
+hubContentInfo_hubContentVersion :: Lens.Lens' HubContentInfo Prelude.Text
+hubContentInfo_hubContentVersion = Lens.lens (\HubContentInfo' {hubContentVersion} -> hubContentVersion) (\s@HubContentInfo' {} a -> s {hubContentVersion = a} :: HubContentInfo)
+
+-- | The type of hub content.
+hubContentInfo_hubContentType :: Lens.Lens' HubContentInfo HubContentType
+hubContentInfo_hubContentType = Lens.lens (\HubContentInfo' {hubContentType} -> hubContentType) (\s@HubContentInfo' {} a -> s {hubContentType = a} :: HubContentInfo)
+
+-- | The version of the hub content document schema.
+hubContentInfo_documentSchemaVersion :: Lens.Lens' HubContentInfo Prelude.Text
+hubContentInfo_documentSchemaVersion = Lens.lens (\HubContentInfo' {documentSchemaVersion} -> documentSchemaVersion) (\s@HubContentInfo' {} a -> s {documentSchemaVersion = a} :: HubContentInfo)
+
+-- | The status of the hub content.
+hubContentInfo_hubContentStatus :: Lens.Lens' HubContentInfo HubContentStatus
+hubContentInfo_hubContentStatus = Lens.lens (\HubContentInfo' {hubContentStatus} -> hubContentStatus) (\s@HubContentInfo' {} a -> s {hubContentStatus = a} :: HubContentInfo)
+
+-- | The date and time that the hub content was created.
+hubContentInfo_creationTime :: Lens.Lens' HubContentInfo Prelude.UTCTime
+hubContentInfo_creationTime = Lens.lens (\HubContentInfo' {creationTime} -> creationTime) (\s@HubContentInfo' {} a -> s {creationTime = a} :: HubContentInfo) Prelude.. Data._Time
+
+instance Data.FromJSON HubContentInfo where
+  parseJSON =
+    Data.withObject
+      "HubContentInfo"
+      ( \x ->
+          HubContentInfo'
+            Prelude.<$> (x Data..:? "HubContentDescription")
+            Prelude.<*> (x Data..:? "HubContentDisplayName")
+            Prelude.<*> ( x
+                            Data..:? "HubContentSearchKeywords"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "HubContentName")
+            Prelude.<*> (x Data..: "HubContentArn")
+            Prelude.<*> (x Data..: "HubContentVersion")
+            Prelude.<*> (x Data..: "HubContentType")
+            Prelude.<*> (x Data..: "DocumentSchemaVersion")
+            Prelude.<*> (x Data..: "HubContentStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable HubContentInfo where
+  hashWithSalt _salt HubContentInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubContentDescription
+      `Prelude.hashWithSalt` hubContentDisplayName
+      `Prelude.hashWithSalt` hubContentSearchKeywords
+      `Prelude.hashWithSalt` hubContentName
+      `Prelude.hashWithSalt` hubContentArn
+      `Prelude.hashWithSalt` hubContentVersion
+      `Prelude.hashWithSalt` hubContentType
+      `Prelude.hashWithSalt` documentSchemaVersion
+      `Prelude.hashWithSalt` hubContentStatus
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData HubContentInfo where
+  rnf HubContentInfo' {..} =
+    Prelude.rnf hubContentDescription
+      `Prelude.seq` Prelude.rnf hubContentDisplayName
+      `Prelude.seq` Prelude.rnf hubContentSearchKeywords
+      `Prelude.seq` Prelude.rnf hubContentName
+      `Prelude.seq` Prelude.rnf hubContentArn
+      `Prelude.seq` Prelude.rnf hubContentVersion
+      `Prelude.seq` Prelude.rnf hubContentType
+      `Prelude.seq` Prelude.rnf documentSchemaVersion
+      `Prelude.seq` Prelude.rnf hubContentStatus
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/HubContentSortBy.hs b/gen/Amazonka/SageMaker/Types/HubContentSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubContentSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HubContentSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubContentSortBy
+  ( HubContentSortBy
+      ( ..,
+        HubContentSortBy_CreationTime,
+        HubContentSortBy_HubContentName,
+        HubContentSortBy_HubContentStatus
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HubContentSortBy = HubContentSortBy'
+  { fromHubContentSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HubContentSortBy_CreationTime :: HubContentSortBy
+pattern HubContentSortBy_CreationTime = HubContentSortBy' "CreationTime"
+
+pattern HubContentSortBy_HubContentName :: HubContentSortBy
+pattern HubContentSortBy_HubContentName = HubContentSortBy' "HubContentName"
+
+pattern HubContentSortBy_HubContentStatus :: HubContentSortBy
+pattern HubContentSortBy_HubContentStatus = HubContentSortBy' "HubContentStatus"
+
+{-# COMPLETE
+  HubContentSortBy_CreationTime,
+  HubContentSortBy_HubContentName,
+  HubContentSortBy_HubContentStatus,
+  HubContentSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HubContentStatus.hs b/gen/Amazonka/SageMaker/Types/HubContentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubContentStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HubContentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubContentStatus
+  ( HubContentStatus
+      ( ..,
+        HubContentStatus_Available,
+        HubContentStatus_DeleteFailed,
+        HubContentStatus_Deleting,
+        HubContentStatus_ImportFailed,
+        HubContentStatus_Importing
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HubContentStatus = HubContentStatus'
+  { fromHubContentStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HubContentStatus_Available :: HubContentStatus
+pattern HubContentStatus_Available = HubContentStatus' "Available"
+
+pattern HubContentStatus_DeleteFailed :: HubContentStatus
+pattern HubContentStatus_DeleteFailed = HubContentStatus' "DeleteFailed"
+
+pattern HubContentStatus_Deleting :: HubContentStatus
+pattern HubContentStatus_Deleting = HubContentStatus' "Deleting"
+
+pattern HubContentStatus_ImportFailed :: HubContentStatus
+pattern HubContentStatus_ImportFailed = HubContentStatus' "ImportFailed"
+
+pattern HubContentStatus_Importing :: HubContentStatus
+pattern HubContentStatus_Importing = HubContentStatus' "Importing"
+
+{-# COMPLETE
+  HubContentStatus_Available,
+  HubContentStatus_DeleteFailed,
+  HubContentStatus_Deleting,
+  HubContentStatus_ImportFailed,
+  HubContentStatus_Importing,
+  HubContentStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HubContentType.hs b/gen/Amazonka/SageMaker/Types/HubContentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubContentType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HubContentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubContentType
+  ( HubContentType
+      ( ..,
+        HubContentType_Model,
+        HubContentType_Notebook
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HubContentType = HubContentType'
+  { fromHubContentType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HubContentType_Model :: HubContentType
+pattern HubContentType_Model = HubContentType' "Model"
+
+pattern HubContentType_Notebook :: HubContentType
+pattern HubContentType_Notebook = HubContentType' "Notebook"
+
+{-# COMPLETE
+  HubContentType_Model,
+  HubContentType_Notebook,
+  HubContentType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HubInfo.hs b/gen/Amazonka/SageMaker/Types/HubInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubInfo.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HubInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubInfo 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 Amazonka.SageMaker.Types.HubStatus
+
+-- | Information about a hub.
+--
+-- /See:/ 'newHubInfo' smart constructor.
+data HubInfo = HubInfo'
+  { -- | A description of the hub.
+    hubDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the hub.
+    hubDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords for the hub.
+    hubSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the hub.
+    hubName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the hub.
+    hubArn :: Prelude.Text,
+    -- | The status of the hub.
+    hubStatus :: HubStatus,
+    -- | The date and time that the hub was created.
+    creationTime :: Data.POSIX,
+    -- | The date and time that the hub was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HubInfo' 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:
+--
+-- 'hubDescription', 'hubInfo_hubDescription' - A description of the hub.
+--
+-- 'hubDisplayName', 'hubInfo_hubDisplayName' - The display name of the hub.
+--
+-- 'hubSearchKeywords', 'hubInfo_hubSearchKeywords' - The searchable keywords for the hub.
+--
+-- 'hubName', 'hubInfo_hubName' - The name of the hub.
+--
+-- 'hubArn', 'hubInfo_hubArn' - The Amazon Resource Name (ARN) of the hub.
+--
+-- 'hubStatus', 'hubInfo_hubStatus' - The status of the hub.
+--
+-- 'creationTime', 'hubInfo_creationTime' - The date and time that the hub was created.
+--
+-- 'lastModifiedTime', 'hubInfo_lastModifiedTime' - The date and time that the hub was last modified.
+newHubInfo ::
+  -- | 'hubName'
+  Prelude.Text ->
+  -- | 'hubArn'
+  Prelude.Text ->
+  -- | 'hubStatus'
+  HubStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  HubInfo
+newHubInfo
+  pHubName_
+  pHubArn_
+  pHubStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    HubInfo'
+      { hubDescription = Prelude.Nothing,
+        hubDisplayName = Prelude.Nothing,
+        hubSearchKeywords = Prelude.Nothing,
+        hubName = pHubName_,
+        hubArn = pHubArn_,
+        hubStatus = pHubStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | A description of the hub.
+hubInfo_hubDescription :: Lens.Lens' HubInfo (Prelude.Maybe Prelude.Text)
+hubInfo_hubDescription = Lens.lens (\HubInfo' {hubDescription} -> hubDescription) (\s@HubInfo' {} a -> s {hubDescription = a} :: HubInfo)
+
+-- | The display name of the hub.
+hubInfo_hubDisplayName :: Lens.Lens' HubInfo (Prelude.Maybe Prelude.Text)
+hubInfo_hubDisplayName = Lens.lens (\HubInfo' {hubDisplayName} -> hubDisplayName) (\s@HubInfo' {} a -> s {hubDisplayName = a} :: HubInfo)
+
+-- | The searchable keywords for the hub.
+hubInfo_hubSearchKeywords :: Lens.Lens' HubInfo (Prelude.Maybe [Prelude.Text])
+hubInfo_hubSearchKeywords = Lens.lens (\HubInfo' {hubSearchKeywords} -> hubSearchKeywords) (\s@HubInfo' {} a -> s {hubSearchKeywords = a} :: HubInfo) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the hub.
+hubInfo_hubName :: Lens.Lens' HubInfo Prelude.Text
+hubInfo_hubName = Lens.lens (\HubInfo' {hubName} -> hubName) (\s@HubInfo' {} a -> s {hubName = a} :: HubInfo)
+
+-- | The Amazon Resource Name (ARN) of the hub.
+hubInfo_hubArn :: Lens.Lens' HubInfo Prelude.Text
+hubInfo_hubArn = Lens.lens (\HubInfo' {hubArn} -> hubArn) (\s@HubInfo' {} a -> s {hubArn = a} :: HubInfo)
+
+-- | The status of the hub.
+hubInfo_hubStatus :: Lens.Lens' HubInfo HubStatus
+hubInfo_hubStatus = Lens.lens (\HubInfo' {hubStatus} -> hubStatus) (\s@HubInfo' {} a -> s {hubStatus = a} :: HubInfo)
+
+-- | The date and time that the hub was created.
+hubInfo_creationTime :: Lens.Lens' HubInfo Prelude.UTCTime
+hubInfo_creationTime = Lens.lens (\HubInfo' {creationTime} -> creationTime) (\s@HubInfo' {} a -> s {creationTime = a} :: HubInfo) Prelude.. Data._Time
+
+-- | The date and time that the hub was last modified.
+hubInfo_lastModifiedTime :: Lens.Lens' HubInfo Prelude.UTCTime
+hubInfo_lastModifiedTime = Lens.lens (\HubInfo' {lastModifiedTime} -> lastModifiedTime) (\s@HubInfo' {} a -> s {lastModifiedTime = a} :: HubInfo) Prelude.. Data._Time
+
+instance Data.FromJSON HubInfo where
+  parseJSON =
+    Data.withObject
+      "HubInfo"
+      ( \x ->
+          HubInfo'
+            Prelude.<$> (x Data..:? "HubDescription")
+            Prelude.<*> (x Data..:? "HubDisplayName")
+            Prelude.<*> ( x
+                            Data..:? "HubSearchKeywords"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "HubName")
+            Prelude.<*> (x Data..: "HubArn")
+            Prelude.<*> (x Data..: "HubStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable HubInfo where
+  hashWithSalt _salt HubInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubDescription
+      `Prelude.hashWithSalt` hubDisplayName
+      `Prelude.hashWithSalt` hubSearchKeywords
+      `Prelude.hashWithSalt` hubName
+      `Prelude.hashWithSalt` hubArn
+      `Prelude.hashWithSalt` hubStatus
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData HubInfo where
+  rnf HubInfo' {..} =
+    Prelude.rnf hubDescription
+      `Prelude.seq` Prelude.rnf hubDisplayName
+      `Prelude.seq` Prelude.rnf hubSearchKeywords
+      `Prelude.seq` Prelude.rnf hubName
+      `Prelude.seq` Prelude.rnf hubArn
+      `Prelude.seq` Prelude.rnf hubStatus
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/HubS3StorageConfig.hs b/gen/Amazonka/SageMaker/Types/HubS3StorageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubS3StorageConfig.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HubS3StorageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubS3StorageConfig 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
+
+-- | The Amazon S3 storage configuration of a hub.
+--
+-- /See:/ 'newHubS3StorageConfig' smart constructor.
+data HubS3StorageConfig = HubS3StorageConfig'
+  { -- | The Amazon S3 output path for the hub.
+    s3OutputPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HubS3StorageConfig' 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:
+--
+-- 's3OutputPath', 'hubS3StorageConfig_s3OutputPath' - The Amazon S3 output path for the hub.
+newHubS3StorageConfig ::
+  HubS3StorageConfig
+newHubS3StorageConfig =
+  HubS3StorageConfig' {s3OutputPath = Prelude.Nothing}
+
+-- | The Amazon S3 output path for the hub.
+hubS3StorageConfig_s3OutputPath :: Lens.Lens' HubS3StorageConfig (Prelude.Maybe Prelude.Text)
+hubS3StorageConfig_s3OutputPath = Lens.lens (\HubS3StorageConfig' {s3OutputPath} -> s3OutputPath) (\s@HubS3StorageConfig' {} a -> s {s3OutputPath = a} :: HubS3StorageConfig)
+
+instance Data.FromJSON HubS3StorageConfig where
+  parseJSON =
+    Data.withObject
+      "HubS3StorageConfig"
+      ( \x ->
+          HubS3StorageConfig'
+            Prelude.<$> (x Data..:? "S3OutputPath")
+      )
+
+instance Prelude.Hashable HubS3StorageConfig where
+  hashWithSalt _salt HubS3StorageConfig' {..} =
+    _salt `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData HubS3StorageConfig where
+  rnf HubS3StorageConfig' {..} =
+    Prelude.rnf s3OutputPath
+
+instance Data.ToJSON HubS3StorageConfig where
+  toJSON HubS3StorageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3OutputPath" Data..=) Prelude.<$> s3OutputPath]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HubSortBy.hs b/gen/Amazonka/SageMaker/Types/HubSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubSortBy.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HubSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubSortBy
+  ( HubSortBy
+      ( ..,
+        HubSortBy_AccountIdOwner,
+        HubSortBy_CreationTime,
+        HubSortBy_HubName,
+        HubSortBy_HubStatus
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HubSortBy = HubSortBy'
+  { fromHubSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HubSortBy_AccountIdOwner :: HubSortBy
+pattern HubSortBy_AccountIdOwner = HubSortBy' "AccountIdOwner"
+
+pattern HubSortBy_CreationTime :: HubSortBy
+pattern HubSortBy_CreationTime = HubSortBy' "CreationTime"
+
+pattern HubSortBy_HubName :: HubSortBy
+pattern HubSortBy_HubName = HubSortBy' "HubName"
+
+pattern HubSortBy_HubStatus :: HubSortBy
+pattern HubSortBy_HubStatus = HubSortBy' "HubStatus"
+
+{-# COMPLETE
+  HubSortBy_AccountIdOwner,
+  HubSortBy_CreationTime,
+  HubSortBy_HubName,
+  HubSortBy_HubStatus,
+  HubSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HubStatus.hs b/gen/Amazonka/SageMaker/Types/HubStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HubStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HubStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HubStatus
+  ( HubStatus
+      ( ..,
+        HubStatus_CreateFailed,
+        HubStatus_Creating,
+        HubStatus_DeleteFailed,
+        HubStatus_Deleting,
+        HubStatus_InService,
+        HubStatus_UpdateFailed,
+        HubStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HubStatus = HubStatus'
+  { fromHubStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HubStatus_CreateFailed :: HubStatus
+pattern HubStatus_CreateFailed = HubStatus' "CreateFailed"
+
+pattern HubStatus_Creating :: HubStatus
+pattern HubStatus_Creating = HubStatus' "Creating"
+
+pattern HubStatus_DeleteFailed :: HubStatus
+pattern HubStatus_DeleteFailed = HubStatus' "DeleteFailed"
+
+pattern HubStatus_Deleting :: HubStatus
+pattern HubStatus_Deleting = HubStatus' "Deleting"
+
+pattern HubStatus_InService :: HubStatus
+pattern HubStatus_InService = HubStatus' "InService"
+
+pattern HubStatus_UpdateFailed :: HubStatus
+pattern HubStatus_UpdateFailed = HubStatus' "UpdateFailed"
+
+pattern HubStatus_Updating :: HubStatus
+pattern HubStatus_Updating = HubStatus' "Updating"
+
+{-# COMPLETE
+  HubStatus_CreateFailed,
+  HubStatus_Creating,
+  HubStatus_DeleteFailed,
+  HubStatus_Deleting,
+  HubStatus_InService,
+  HubStatus_UpdateFailed,
+  HubStatus_Updating,
+  HubStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HumanLoopActivationConditionsConfig.hs b/gen/Amazonka/SageMaker/Types/HumanLoopActivationConditionsConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanLoopActivationConditionsConfig.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HumanLoopActivationConditionsConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanLoopActivationConditionsConfig 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
+
+-- | Defines under what conditions SageMaker creates a human loop. Used
+-- within . See for the required format of activation conditions.
+--
+-- /See:/ 'newHumanLoopActivationConditionsConfig' smart constructor.
+data HumanLoopActivationConditionsConfig = HumanLoopActivationConditionsConfig'
+  { -- | JSON expressing use-case specific conditions declaratively. If any
+    -- condition is matched, atomic tasks are created against the configured
+    -- work team. The set of conditions is different for Rekognition and
+    -- Textract. For more information about how to structure the JSON, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-human-fallback-conditions-json-schema.html JSON Schema for Human Loop Activation Conditions in Amazon Augmented AI>
+    -- in the /Amazon SageMaker Developer Guide/.
+    humanLoopActivationConditions :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HumanLoopActivationConditionsConfig' 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:
+--
+-- 'humanLoopActivationConditions', 'humanLoopActivationConditionsConfig_humanLoopActivationConditions' - JSON expressing use-case specific conditions declaratively. If any
+-- condition is matched, atomic tasks are created against the configured
+-- work team. The set of conditions is different for Rekognition and
+-- Textract. For more information about how to structure the JSON, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-human-fallback-conditions-json-schema.html JSON Schema for Human Loop Activation Conditions in Amazon Augmented AI>
+-- in the /Amazon SageMaker Developer Guide/.
+newHumanLoopActivationConditionsConfig ::
+  -- | 'humanLoopActivationConditions'
+  Prelude.Text ->
+  HumanLoopActivationConditionsConfig
+newHumanLoopActivationConditionsConfig
+  pHumanLoopActivationConditions_ =
+    HumanLoopActivationConditionsConfig'
+      { humanLoopActivationConditions =
+          pHumanLoopActivationConditions_
+      }
+
+-- | JSON expressing use-case specific conditions declaratively. If any
+-- condition is matched, atomic tasks are created against the configured
+-- work team. The set of conditions is different for Rekognition and
+-- Textract. For more information about how to structure the JSON, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-human-fallback-conditions-json-schema.html JSON Schema for Human Loop Activation Conditions in Amazon Augmented AI>
+-- in the /Amazon SageMaker Developer Guide/.
+humanLoopActivationConditionsConfig_humanLoopActivationConditions :: Lens.Lens' HumanLoopActivationConditionsConfig Prelude.Text
+humanLoopActivationConditionsConfig_humanLoopActivationConditions = Lens.lens (\HumanLoopActivationConditionsConfig' {humanLoopActivationConditions} -> humanLoopActivationConditions) (\s@HumanLoopActivationConditionsConfig' {} a -> s {humanLoopActivationConditions = a} :: HumanLoopActivationConditionsConfig)
+
+instance
+  Data.FromJSON
+    HumanLoopActivationConditionsConfig
+  where
+  parseJSON =
+    Data.withObject
+      "HumanLoopActivationConditionsConfig"
+      ( \x ->
+          HumanLoopActivationConditionsConfig'
+            Prelude.<$> (x Data..: "HumanLoopActivationConditions")
+      )
+
+instance
+  Prelude.Hashable
+    HumanLoopActivationConditionsConfig
+  where
+  hashWithSalt
+    _salt
+    HumanLoopActivationConditionsConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` humanLoopActivationConditions
+
+instance
+  Prelude.NFData
+    HumanLoopActivationConditionsConfig
+  where
+  rnf HumanLoopActivationConditionsConfig' {..} =
+    Prelude.rnf humanLoopActivationConditions
+
+instance
+  Data.ToJSON
+    HumanLoopActivationConditionsConfig
+  where
+  toJSON HumanLoopActivationConditionsConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "HumanLoopActivationConditions"
+                  Data..= humanLoopActivationConditions
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HumanLoopActivationConfig.hs b/gen/Amazonka/SageMaker/Types/HumanLoopActivationConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanLoopActivationConfig.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HumanLoopActivationConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanLoopActivationConfig 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 Amazonka.SageMaker.Types.HumanLoopActivationConditionsConfig
+
+-- | Provides information about how and under what conditions SageMaker
+-- creates a human loop. If @HumanLoopActivationConfig@ is not given, then
+-- all requests go to humans.
+--
+-- /See:/ 'newHumanLoopActivationConfig' smart constructor.
+data HumanLoopActivationConfig = HumanLoopActivationConfig'
+  { -- | Container structure for defining under what conditions SageMaker creates
+    -- a human loop.
+    humanLoopActivationConditionsConfig :: HumanLoopActivationConditionsConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HumanLoopActivationConfig' 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:
+--
+-- 'humanLoopActivationConditionsConfig', 'humanLoopActivationConfig_humanLoopActivationConditionsConfig' - Container structure for defining under what conditions SageMaker creates
+-- a human loop.
+newHumanLoopActivationConfig ::
+  -- | 'humanLoopActivationConditionsConfig'
+  HumanLoopActivationConditionsConfig ->
+  HumanLoopActivationConfig
+newHumanLoopActivationConfig
+  pHumanLoopActivationConditionsConfig_ =
+    HumanLoopActivationConfig'
+      { humanLoopActivationConditionsConfig =
+          pHumanLoopActivationConditionsConfig_
+      }
+
+-- | Container structure for defining under what conditions SageMaker creates
+-- a human loop.
+humanLoopActivationConfig_humanLoopActivationConditionsConfig :: Lens.Lens' HumanLoopActivationConfig HumanLoopActivationConditionsConfig
+humanLoopActivationConfig_humanLoopActivationConditionsConfig = Lens.lens (\HumanLoopActivationConfig' {humanLoopActivationConditionsConfig} -> humanLoopActivationConditionsConfig) (\s@HumanLoopActivationConfig' {} a -> s {humanLoopActivationConditionsConfig = a} :: HumanLoopActivationConfig)
+
+instance Data.FromJSON HumanLoopActivationConfig where
+  parseJSON =
+    Data.withObject
+      "HumanLoopActivationConfig"
+      ( \x ->
+          HumanLoopActivationConfig'
+            Prelude.<$> (x Data..: "HumanLoopActivationConditionsConfig")
+      )
+
+instance Prelude.Hashable HumanLoopActivationConfig where
+  hashWithSalt _salt HumanLoopActivationConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` humanLoopActivationConditionsConfig
+
+instance Prelude.NFData HumanLoopActivationConfig where
+  rnf HumanLoopActivationConfig' {..} =
+    Prelude.rnf humanLoopActivationConditionsConfig
+
+instance Data.ToJSON HumanLoopActivationConfig where
+  toJSON HumanLoopActivationConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "HumanLoopActivationConditionsConfig"
+                  Data..= humanLoopActivationConditionsConfig
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HumanLoopConfig.hs b/gen/Amazonka/SageMaker/Types/HumanLoopConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanLoopConfig.hs
@@ -0,0 +1,262 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HumanLoopConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanLoopConfig 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 Amazonka.SageMaker.Types.PublicWorkforceTaskPrice
+
+-- | Describes the work to be performed by human workers.
+--
+-- /See:/ 'newHumanLoopConfig' smart constructor.
+data HumanLoopConfig = HumanLoopConfig'
+  { publicWorkforceTaskPrice :: Prelude.Maybe PublicWorkforceTaskPrice,
+    -- | The length of time that a task remains available for review by human
+    -- workers.
+    taskAvailabilityLifetimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Keywords used to describe the task so that workers can discover the
+    -- task.
+    taskKeywords :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The amount of time that a worker has to complete a task. The default
+    -- value is 3,600 seconds (1 hour).
+    taskTimeLimitInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Amazon Resource Name (ARN) of a team of workers. To learn more about the
+    -- types of workforces and work teams you can create and use with Amazon
+    -- A2I, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management.html Create and Manage Workforces>.
+    workteamArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the human task user interface.
+    --
+    -- You can use standard HTML and Crowd HTML Elements to create a custom
+    -- worker task template. You use this template to create a human task UI.
+    --
+    -- To learn how to create a custom HTML template, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-custom-templates.html Create Custom Worker Task Template>.
+    --
+    -- To learn how to create a human task UI, which is a worker task template
+    -- that can be used in a flow definition, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-worker-template-console.html Create and Delete a Worker Task Templates>.
+    humanTaskUiArn :: Prelude.Text,
+    -- | A title for the human worker task.
+    taskTitle :: Prelude.Text,
+    -- | A description for the human worker task.
+    taskDescription :: Prelude.Text,
+    -- | The number of distinct workers who will perform the same task on each
+    -- object. For example, if @TaskCount@ is set to @3@ for an image
+    -- classification labeling job, three workers will classify each input
+    -- image. Increasing @TaskCount@ can improve label accuracy.
+    taskCount :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HumanLoopConfig' 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:
+--
+-- 'publicWorkforceTaskPrice', 'humanLoopConfig_publicWorkforceTaskPrice' - Undocumented member.
+--
+-- 'taskAvailabilityLifetimeInSeconds', 'humanLoopConfig_taskAvailabilityLifetimeInSeconds' - The length of time that a task remains available for review by human
+-- workers.
+--
+-- 'taskKeywords', 'humanLoopConfig_taskKeywords' - Keywords used to describe the task so that workers can discover the
+-- task.
+--
+-- 'taskTimeLimitInSeconds', 'humanLoopConfig_taskTimeLimitInSeconds' - The amount of time that a worker has to complete a task. The default
+-- value is 3,600 seconds (1 hour).
+--
+-- 'workteamArn', 'humanLoopConfig_workteamArn' - Amazon Resource Name (ARN) of a team of workers. To learn more about the
+-- types of workforces and work teams you can create and use with Amazon
+-- A2I, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management.html Create and Manage Workforces>.
+--
+-- 'humanTaskUiArn', 'humanLoopConfig_humanTaskUiArn' - The Amazon Resource Name (ARN) of the human task user interface.
+--
+-- You can use standard HTML and Crowd HTML Elements to create a custom
+-- worker task template. You use this template to create a human task UI.
+--
+-- To learn how to create a custom HTML template, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-custom-templates.html Create Custom Worker Task Template>.
+--
+-- To learn how to create a human task UI, which is a worker task template
+-- that can be used in a flow definition, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-worker-template-console.html Create and Delete a Worker Task Templates>.
+--
+-- 'taskTitle', 'humanLoopConfig_taskTitle' - A title for the human worker task.
+--
+-- 'taskDescription', 'humanLoopConfig_taskDescription' - A description for the human worker task.
+--
+-- 'taskCount', 'humanLoopConfig_taskCount' - The number of distinct workers who will perform the same task on each
+-- object. For example, if @TaskCount@ is set to @3@ for an image
+-- classification labeling job, three workers will classify each input
+-- image. Increasing @TaskCount@ can improve label accuracy.
+newHumanLoopConfig ::
+  -- | 'workteamArn'
+  Prelude.Text ->
+  -- | 'humanTaskUiArn'
+  Prelude.Text ->
+  -- | 'taskTitle'
+  Prelude.Text ->
+  -- | 'taskDescription'
+  Prelude.Text ->
+  -- | 'taskCount'
+  Prelude.Natural ->
+  HumanLoopConfig
+newHumanLoopConfig
+  pWorkteamArn_
+  pHumanTaskUiArn_
+  pTaskTitle_
+  pTaskDescription_
+  pTaskCount_ =
+    HumanLoopConfig'
+      { publicWorkforceTaskPrice =
+          Prelude.Nothing,
+        taskAvailabilityLifetimeInSeconds = Prelude.Nothing,
+        taskKeywords = Prelude.Nothing,
+        taskTimeLimitInSeconds = Prelude.Nothing,
+        workteamArn = pWorkteamArn_,
+        humanTaskUiArn = pHumanTaskUiArn_,
+        taskTitle = pTaskTitle_,
+        taskDescription = pTaskDescription_,
+        taskCount = pTaskCount_
+      }
+
+-- | Undocumented member.
+humanLoopConfig_publicWorkforceTaskPrice :: Lens.Lens' HumanLoopConfig (Prelude.Maybe PublicWorkforceTaskPrice)
+humanLoopConfig_publicWorkforceTaskPrice = Lens.lens (\HumanLoopConfig' {publicWorkforceTaskPrice} -> publicWorkforceTaskPrice) (\s@HumanLoopConfig' {} a -> s {publicWorkforceTaskPrice = a} :: HumanLoopConfig)
+
+-- | The length of time that a task remains available for review by human
+-- workers.
+humanLoopConfig_taskAvailabilityLifetimeInSeconds :: Lens.Lens' HumanLoopConfig (Prelude.Maybe Prelude.Natural)
+humanLoopConfig_taskAvailabilityLifetimeInSeconds = Lens.lens (\HumanLoopConfig' {taskAvailabilityLifetimeInSeconds} -> taskAvailabilityLifetimeInSeconds) (\s@HumanLoopConfig' {} a -> s {taskAvailabilityLifetimeInSeconds = a} :: HumanLoopConfig)
+
+-- | Keywords used to describe the task so that workers can discover the
+-- task.
+humanLoopConfig_taskKeywords :: Lens.Lens' HumanLoopConfig (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+humanLoopConfig_taskKeywords = Lens.lens (\HumanLoopConfig' {taskKeywords} -> taskKeywords) (\s@HumanLoopConfig' {} a -> s {taskKeywords = a} :: HumanLoopConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The amount of time that a worker has to complete a task. The default
+-- value is 3,600 seconds (1 hour).
+humanLoopConfig_taskTimeLimitInSeconds :: Lens.Lens' HumanLoopConfig (Prelude.Maybe Prelude.Natural)
+humanLoopConfig_taskTimeLimitInSeconds = Lens.lens (\HumanLoopConfig' {taskTimeLimitInSeconds} -> taskTimeLimitInSeconds) (\s@HumanLoopConfig' {} a -> s {taskTimeLimitInSeconds = a} :: HumanLoopConfig)
+
+-- | Amazon Resource Name (ARN) of a team of workers. To learn more about the
+-- types of workforces and work teams you can create and use with Amazon
+-- A2I, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management.html Create and Manage Workforces>.
+humanLoopConfig_workteamArn :: Lens.Lens' HumanLoopConfig Prelude.Text
+humanLoopConfig_workteamArn = Lens.lens (\HumanLoopConfig' {workteamArn} -> workteamArn) (\s@HumanLoopConfig' {} a -> s {workteamArn = a} :: HumanLoopConfig)
+
+-- | The Amazon Resource Name (ARN) of the human task user interface.
+--
+-- You can use standard HTML and Crowd HTML Elements to create a custom
+-- worker task template. You use this template to create a human task UI.
+--
+-- To learn how to create a custom HTML template, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-custom-templates.html Create Custom Worker Task Template>.
+--
+-- To learn how to create a human task UI, which is a worker task template
+-- that can be used in a flow definition, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-worker-template-console.html Create and Delete a Worker Task Templates>.
+humanLoopConfig_humanTaskUiArn :: Lens.Lens' HumanLoopConfig Prelude.Text
+humanLoopConfig_humanTaskUiArn = Lens.lens (\HumanLoopConfig' {humanTaskUiArn} -> humanTaskUiArn) (\s@HumanLoopConfig' {} a -> s {humanTaskUiArn = a} :: HumanLoopConfig)
+
+-- | A title for the human worker task.
+humanLoopConfig_taskTitle :: Lens.Lens' HumanLoopConfig Prelude.Text
+humanLoopConfig_taskTitle = Lens.lens (\HumanLoopConfig' {taskTitle} -> taskTitle) (\s@HumanLoopConfig' {} a -> s {taskTitle = a} :: HumanLoopConfig)
+
+-- | A description for the human worker task.
+humanLoopConfig_taskDescription :: Lens.Lens' HumanLoopConfig Prelude.Text
+humanLoopConfig_taskDescription = Lens.lens (\HumanLoopConfig' {taskDescription} -> taskDescription) (\s@HumanLoopConfig' {} a -> s {taskDescription = a} :: HumanLoopConfig)
+
+-- | The number of distinct workers who will perform the same task on each
+-- object. For example, if @TaskCount@ is set to @3@ for an image
+-- classification labeling job, three workers will classify each input
+-- image. Increasing @TaskCount@ can improve label accuracy.
+humanLoopConfig_taskCount :: Lens.Lens' HumanLoopConfig Prelude.Natural
+humanLoopConfig_taskCount = Lens.lens (\HumanLoopConfig' {taskCount} -> taskCount) (\s@HumanLoopConfig' {} a -> s {taskCount = a} :: HumanLoopConfig)
+
+instance Data.FromJSON HumanLoopConfig where
+  parseJSON =
+    Data.withObject
+      "HumanLoopConfig"
+      ( \x ->
+          HumanLoopConfig'
+            Prelude.<$> (x Data..:? "PublicWorkforceTaskPrice")
+            Prelude.<*> (x Data..:? "TaskAvailabilityLifetimeInSeconds")
+            Prelude.<*> (x Data..:? "TaskKeywords")
+            Prelude.<*> (x Data..:? "TaskTimeLimitInSeconds")
+            Prelude.<*> (x Data..: "WorkteamArn")
+            Prelude.<*> (x Data..: "HumanTaskUiArn")
+            Prelude.<*> (x Data..: "TaskTitle")
+            Prelude.<*> (x Data..: "TaskDescription")
+            Prelude.<*> (x Data..: "TaskCount")
+      )
+
+instance Prelude.Hashable HumanLoopConfig where
+  hashWithSalt _salt HumanLoopConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` publicWorkforceTaskPrice
+      `Prelude.hashWithSalt` taskAvailabilityLifetimeInSeconds
+      `Prelude.hashWithSalt` taskKeywords
+      `Prelude.hashWithSalt` taskTimeLimitInSeconds
+      `Prelude.hashWithSalt` workteamArn
+      `Prelude.hashWithSalt` humanTaskUiArn
+      `Prelude.hashWithSalt` taskTitle
+      `Prelude.hashWithSalt` taskDescription
+      `Prelude.hashWithSalt` taskCount
+
+instance Prelude.NFData HumanLoopConfig where
+  rnf HumanLoopConfig' {..} =
+    Prelude.rnf publicWorkforceTaskPrice
+      `Prelude.seq` Prelude.rnf taskAvailabilityLifetimeInSeconds
+      `Prelude.seq` Prelude.rnf taskKeywords
+      `Prelude.seq` Prelude.rnf taskTimeLimitInSeconds
+      `Prelude.seq` Prelude.rnf workteamArn
+      `Prelude.seq` Prelude.rnf humanTaskUiArn
+      `Prelude.seq` Prelude.rnf taskTitle
+      `Prelude.seq` Prelude.rnf taskDescription
+      `Prelude.seq` Prelude.rnf taskCount
+
+instance Data.ToJSON HumanLoopConfig where
+  toJSON HumanLoopConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PublicWorkforceTaskPrice" Data..=)
+              Prelude.<$> publicWorkforceTaskPrice,
+            ("TaskAvailabilityLifetimeInSeconds" Data..=)
+              Prelude.<$> taskAvailabilityLifetimeInSeconds,
+            ("TaskKeywords" Data..=) Prelude.<$> taskKeywords,
+            ("TaskTimeLimitInSeconds" Data..=)
+              Prelude.<$> taskTimeLimitInSeconds,
+            Prelude.Just ("WorkteamArn" Data..= workteamArn),
+            Prelude.Just
+              ("HumanTaskUiArn" Data..= humanTaskUiArn),
+            Prelude.Just ("TaskTitle" Data..= taskTitle),
+            Prelude.Just
+              ("TaskDescription" Data..= taskDescription),
+            Prelude.Just ("TaskCount" Data..= taskCount)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HumanLoopRequestSource.hs b/gen/Amazonka/SageMaker/Types/HumanLoopRequestSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanLoopRequestSource.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HumanLoopRequestSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanLoopRequestSource 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 Amazonka.SageMaker.Types.AwsManagedHumanLoopRequestSource
+
+-- | Container for configuring the source of human task requests.
+--
+-- /See:/ 'newHumanLoopRequestSource' smart constructor.
+data HumanLoopRequestSource = HumanLoopRequestSource'
+  { -- | Specifies whether Amazon Rekognition or Amazon Textract are used as the
+    -- integration source. The default field settings and JSON parsing rules
+    -- are different based on the integration source. Valid values:
+    awsManagedHumanLoopRequestSource :: AwsManagedHumanLoopRequestSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HumanLoopRequestSource' 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:
+--
+-- 'awsManagedHumanLoopRequestSource', 'humanLoopRequestSource_awsManagedHumanLoopRequestSource' - Specifies whether Amazon Rekognition or Amazon Textract are used as the
+-- integration source. The default field settings and JSON parsing rules
+-- are different based on the integration source. Valid values:
+newHumanLoopRequestSource ::
+  -- | 'awsManagedHumanLoopRequestSource'
+  AwsManagedHumanLoopRequestSource ->
+  HumanLoopRequestSource
+newHumanLoopRequestSource
+  pAwsManagedHumanLoopRequestSource_ =
+    HumanLoopRequestSource'
+      { awsManagedHumanLoopRequestSource =
+          pAwsManagedHumanLoopRequestSource_
+      }
+
+-- | Specifies whether Amazon Rekognition or Amazon Textract are used as the
+-- integration source. The default field settings and JSON parsing rules
+-- are different based on the integration source. Valid values:
+humanLoopRequestSource_awsManagedHumanLoopRequestSource :: Lens.Lens' HumanLoopRequestSource AwsManagedHumanLoopRequestSource
+humanLoopRequestSource_awsManagedHumanLoopRequestSource = Lens.lens (\HumanLoopRequestSource' {awsManagedHumanLoopRequestSource} -> awsManagedHumanLoopRequestSource) (\s@HumanLoopRequestSource' {} a -> s {awsManagedHumanLoopRequestSource = a} :: HumanLoopRequestSource)
+
+instance Data.FromJSON HumanLoopRequestSource where
+  parseJSON =
+    Data.withObject
+      "HumanLoopRequestSource"
+      ( \x ->
+          HumanLoopRequestSource'
+            Prelude.<$> (x Data..: "AwsManagedHumanLoopRequestSource")
+      )
+
+instance Prelude.Hashable HumanLoopRequestSource where
+  hashWithSalt _salt HumanLoopRequestSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsManagedHumanLoopRequestSource
+
+instance Prelude.NFData HumanLoopRequestSource where
+  rnf HumanLoopRequestSource' {..} =
+    Prelude.rnf awsManagedHumanLoopRequestSource
+
+instance Data.ToJSON HumanLoopRequestSource where
+  toJSON HumanLoopRequestSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "AwsManagedHumanLoopRequestSource"
+                  Data..= awsManagedHumanLoopRequestSource
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HumanTaskConfig.hs b/gen/Amazonka/SageMaker/Types/HumanTaskConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanTaskConfig.hs
@@ -0,0 +1,2315 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HumanTaskConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanTaskConfig 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 Amazonka.SageMaker.Types.AnnotationConsolidationConfig
+import Amazonka.SageMaker.Types.PublicWorkforceTaskPrice
+import Amazonka.SageMaker.Types.UiConfig
+
+-- | Information required for human workers to complete a labeling task.
+--
+-- /See:/ 'newHumanTaskConfig' smart constructor.
+data HumanTaskConfig = HumanTaskConfig'
+  { -- | Defines the maximum number of data objects that can be labeled by human
+    -- workers at the same time. Also referred to as batch size. Each object
+    -- may have more than one worker at one time. The default value is 1000
+    -- objects. To increase the maximum value to 5000 objects, contact Amazon
+    -- Web Services Support.
+    maxConcurrentTaskCount :: Prelude.Maybe Prelude.Natural,
+    -- | The price that you pay for each task performed by an Amazon Mechanical
+    -- Turk worker.
+    publicWorkforceTaskPrice :: Prelude.Maybe PublicWorkforceTaskPrice,
+    -- | The length of time that a task remains available for labeling by human
+    -- workers. The default and maximum values for this parameter depend on the
+    -- type of workforce you use.
+    --
+    -- -   If you choose the Amazon Mechanical Turk workforce, the maximum is
+    --     12 hours (43,200 seconds). The default is 6 hours (21,600 seconds).
+    --
+    -- -   If you choose a private or vendor workforce, the default value is 30
+    --     days (2592,000 seconds) for non-AL mode. For most users, the maximum
+    --     is also 30 days.
+    taskAvailabilityLifetimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Keywords used to describe the task so that workers on Amazon Mechanical
+    -- Turk can discover the task.
+    taskKeywords :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the work team assigned to complete the
+    -- tasks.
+    workteamArn :: Prelude.Text,
+    -- | Information about the user interface that workers use to complete the
+    -- labeling task.
+    uiConfig :: UiConfig,
+    -- | The Amazon Resource Name (ARN) of a Lambda function that is run before a
+    -- data object is sent to a human worker. Use this function to provide
+    -- input to a custom labeling job.
+    --
+    -- For
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+    -- use one of the following Amazon SageMaker Ground Truth Lambda function
+    -- ARNs for @PreHumanTaskLambdaArn@. For custom labeling workflows, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3.html#sms-custom-templates-step3-prelambda Pre-annotation Lambda>.
+    --
+    -- __Bounding box__ - Finds the most similar boxes from different workers
+    -- based on the Jaccard index of the boxes.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-BoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-BoundingBox@
+    --
+    -- __Image classification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true class of an image based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-ImageMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-ImageMultiClass@
+    --
+    -- __Multi-label image classification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true classes of an image based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-ImageMultiClassMultiLabel@
+    --
+    -- __Semantic segmentation__ - Treats each pixel in an image as a
+    -- multi-class classification and treats pixel annotations from workers as
+    -- \"votes\" for the correct label.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-SemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-SemanticSegmentation@
+    --
+    -- __Text classification__ - Uses a variant of the Expectation Maximization
+    -- approach to estimate the true class of text based on annotations from
+    -- individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-TextMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-TextMultiClass@
+    --
+    -- __Multi-label text classification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true classes of text based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-TextMultiClassMultiLabel@
+    --
+    -- __Named entity recognition__ - Groups similar selections and calculates
+    -- aggregate boundaries, resolving to most-assigned label.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-NamedEntityRecognition@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-NamedEntityRecognition@
+    --
+    -- __Video Classification__ - Use this task type when you need workers to
+    -- classify videos using predefined labels that you specify. Workers are
+    -- shown videos and are asked to choose one label for each video.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoMultiClass@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoMultiClass@
+    --
+    -- __Video Frame Object Detection__ - Use this task type to have workers
+    -- identify and locate objects in a sequence of video frames (images
+    -- extracted from a video) using bounding boxes. For example, you can use
+    -- this task to ask workers to identify and localize various objects in a
+    -- series of video frames, such as cars, bikes, and pedestrians.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoObjectDetection@
+    --
+    -- __Video Frame Object Tracking__ - Use this task type to have workers
+    -- track the movement of objects in a sequence of video frames (images
+    -- extracted from a video) using bounding boxes. For example, you can use
+    -- this task to ask workers to track the movement of objects, such as cars,
+    -- bikes, and pedestrians.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoObjectTracking@
+    --
+    -- __3D Point Cloud Modalities__
+    --
+    -- Use the following pre-annotation lambdas for 3D point cloud labeling
+    -- modality tasks. See
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-task-types.html 3D Point Cloud Task types>
+    -- to learn more.
+    --
+    -- __3D Point Cloud Object Detection__ - Use this task type when you want
+    -- workers to classify objects in a 3D point cloud by drawing 3D cuboids
+    -- around objects. For example, you can use this task type to ask workers
+    -- to identify different types of objects in a point cloud, such as cars,
+    -- bikes, and pedestrians.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudObjectDetection@
+    --
+    -- __3D Point Cloud Object Tracking__ - Use this task type when you want
+    -- workers to draw 3D cuboids around objects that appear in a sequence of
+    -- 3D point cloud frames. For example, you can use this task type to ask
+    -- workers to track the movement of vehicles across multiple point cloud
+    -- frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudObjectTracking@
+    --
+    -- __3D Point Cloud Semantic Segmentation__ - Use this task type when you
+    -- want workers to create a point-level semantic segmentation masks by
+    -- painting objects in a 3D point cloud using different colors where each
+    -- color is assigned to one of the classes you specify.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudSemanticSegmentation@
+    --
+    -- __Use the following ARNs for Label Verification and Adjustment Jobs__
+    --
+    -- Use label verification and adjustment jobs to review and adjust labels.
+    -- To learn more, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>
+    -- .
+    --
+    -- __Bounding box verification__ - Uses a variant of the Expectation
+    -- Maximization approach to estimate the true class of verification
+    -- judgement for bounding box labels based on annotations from individual
+    -- workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VerificationBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VerificationBoundingBox@
+    --
+    -- __Bounding box adjustment__ - Finds the most similar boxes from
+    -- different workers based on the Jaccard index of the adjusted
+    -- annotations.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentBoundingBox@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentBoundingBox@
+    --
+    -- __Semantic segmentation verification__ - Uses a variant of the
+    -- Expectation Maximization approach to estimate the true class of
+    -- verification judgment for semantic segmentation labels based on
+    -- annotations from individual workers.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VerificationSemanticSegmentation@
+    --
+    -- __Semantic segmentation adjustment__ - Treats each pixel in an image as
+    -- a multi-class classification and treats pixel adjusted annotations from
+    -- workers as \"votes\" for the correct label.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentSemanticSegmentation@
+    --
+    -- __Video Frame Object Detection Adjustment__ - Use this task type when
+    -- you want workers to adjust bounding boxes that workers have added to
+    -- video frames to classify and localize objects in a sequence of video
+    -- frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentVideoObjectDetection@
+    --
+    -- __Video Frame Object Tracking Adjustment__ - Use this task type when you
+    -- want workers to adjust bounding boxes that workers have added to video
+    -- frames to track object movement across a sequence of video frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentVideoObjectTracking@
+    --
+    -- __3D point cloud object detection adjustment__ - Adjust 3D cuboids in a
+    -- point cloud frame.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudObjectDetection@
+    --
+    -- __3D point cloud object tracking adjustment__ - Adjust 3D cuboids across
+    -- a sequence of point cloud frames.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudObjectTracking@
+    --
+    -- __3D point cloud semantic segmentation adjustment__ - Adjust semantic
+    -- segmentation masks in a 3D point cloud.
+    --
+    -- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    --
+    -- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+    preHumanTaskLambdaArn :: Prelude.Text,
+    -- | A title for the task for your human workers.
+    taskTitle :: Prelude.Text,
+    -- | A description of the task for your human workers.
+    taskDescription :: Prelude.Text,
+    -- | The number of human workers that will label an object.
+    numberOfHumanWorkersPerDataObject :: Prelude.Natural,
+    -- | The amount of time that a worker has to complete a task.
+    --
+    -- If you create a custom labeling job, the maximum value for this
+    -- parameter is 8 hours (28,800 seconds).
+    --
+    -- If you create a labeling job using a
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task type>
+    -- the maximum for this parameter depends on the task type you use:
+    --
+    -- -   For
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-images.html image>
+    --     and
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-text.html text>
+    --     labeling jobs, the maximum is 8 hours (28,800 seconds).
+    --
+    -- -   For
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud.html 3D point cloud>
+    --     and
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-video.html video frame>
+    --     labeling jobs, the maximum is 30 days (2952,000 seconds) for non-AL
+    --     mode. For most users, the maximum is also 30 days.
+    taskTimeLimitInSeconds :: Prelude.Natural,
+    -- | Configures how labels are consolidated across human workers.
+    annotationConsolidationConfig :: AnnotationConsolidationConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HumanTaskConfig' 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:
+--
+-- 'maxConcurrentTaskCount', 'humanTaskConfig_maxConcurrentTaskCount' - Defines the maximum number of data objects that can be labeled by human
+-- workers at the same time. Also referred to as batch size. Each object
+-- may have more than one worker at one time. The default value is 1000
+-- objects. To increase the maximum value to 5000 objects, contact Amazon
+-- Web Services Support.
+--
+-- 'publicWorkforceTaskPrice', 'humanTaskConfig_publicWorkforceTaskPrice' - The price that you pay for each task performed by an Amazon Mechanical
+-- Turk worker.
+--
+-- 'taskAvailabilityLifetimeInSeconds', 'humanTaskConfig_taskAvailabilityLifetimeInSeconds' - The length of time that a task remains available for labeling by human
+-- workers. The default and maximum values for this parameter depend on the
+-- type of workforce you use.
+--
+-- -   If you choose the Amazon Mechanical Turk workforce, the maximum is
+--     12 hours (43,200 seconds). The default is 6 hours (21,600 seconds).
+--
+-- -   If you choose a private or vendor workforce, the default value is 30
+--     days (2592,000 seconds) for non-AL mode. For most users, the maximum
+--     is also 30 days.
+--
+-- 'taskKeywords', 'humanTaskConfig_taskKeywords' - Keywords used to describe the task so that workers on Amazon Mechanical
+-- Turk can discover the task.
+--
+-- 'workteamArn', 'humanTaskConfig_workteamArn' - The Amazon Resource Name (ARN) of the work team assigned to complete the
+-- tasks.
+--
+-- 'uiConfig', 'humanTaskConfig_uiConfig' - Information about the user interface that workers use to complete the
+-- labeling task.
+--
+-- 'preHumanTaskLambdaArn', 'humanTaskConfig_preHumanTaskLambdaArn' - The Amazon Resource Name (ARN) of a Lambda function that is run before a
+-- data object is sent to a human worker. Use this function to provide
+-- input to a custom labeling job.
+--
+-- For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+-- use one of the following Amazon SageMaker Ground Truth Lambda function
+-- ARNs for @PreHumanTaskLambdaArn@. For custom labeling workflows, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3.html#sms-custom-templates-step3-prelambda Pre-annotation Lambda>.
+--
+-- __Bounding box__ - Finds the most similar boxes from different workers
+-- based on the Jaccard index of the boxes.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-BoundingBox@
+--
+-- __Image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-ImageMultiClass@
+--
+-- __Multi-label image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-ImageMultiClassMultiLabel@
+--
+-- __Semantic segmentation__ - Treats each pixel in an image as a
+-- multi-class classification and treats pixel annotations from workers as
+-- \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-SemanticSegmentation@
+--
+-- __Text classification__ - Uses a variant of the Expectation Maximization
+-- approach to estimate the true class of text based on annotations from
+-- individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-TextMultiClass@
+--
+-- __Multi-label text classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of text based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-TextMultiClassMultiLabel@
+--
+-- __Named entity recognition__ - Groups similar selections and calculates
+-- aggregate boundaries, resolving to most-assigned label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-NamedEntityRecognition@
+--
+-- __Video Classification__ - Use this task type when you need workers to
+-- classify videos using predefined labels that you specify. Workers are
+-- shown videos and are asked to choose one label for each video.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoMultiClass@
+--
+-- __Video Frame Object Detection__ - Use this task type to have workers
+-- identify and locate objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to identify and localize various objects in a
+-- series of video frames, such as cars, bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoObjectDetection@
+--
+-- __Video Frame Object Tracking__ - Use this task type to have workers
+-- track the movement of objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to track the movement of objects, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoObjectTracking@
+--
+-- __3D Point Cloud Modalities__
+--
+-- Use the following pre-annotation lambdas for 3D point cloud labeling
+-- modality tasks. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-task-types.html 3D Point Cloud Task types>
+-- to learn more.
+--
+-- __3D Point Cloud Object Detection__ - Use this task type when you want
+-- workers to classify objects in a 3D point cloud by drawing 3D cuboids
+-- around objects. For example, you can use this task type to ask workers
+-- to identify different types of objects in a point cloud, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudObjectDetection@
+--
+-- __3D Point Cloud Object Tracking__ - Use this task type when you want
+-- workers to draw 3D cuboids around objects that appear in a sequence of
+-- 3D point cloud frames. For example, you can use this task type to ask
+-- workers to track the movement of vehicles across multiple point cloud
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudObjectTracking@
+--
+-- __3D Point Cloud Semantic Segmentation__ - Use this task type when you
+-- want workers to create a point-level semantic segmentation masks by
+-- painting objects in a 3D point cloud using different colors where each
+-- color is assigned to one of the classes you specify.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- __Use the following ARNs for Label Verification and Adjustment Jobs__
+--
+-- Use label verification and adjustment jobs to review and adjust labels.
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>
+-- .
+--
+-- __Bounding box verification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of verification
+-- judgement for bounding box labels based on annotations from individual
+-- workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VerificationBoundingBox@
+--
+-- __Bounding box adjustment__ - Finds the most similar boxes from
+-- different workers based on the Jaccard index of the adjusted
+-- annotations.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentBoundingBox@
+--
+-- __Semantic segmentation verification__ - Uses a variant of the
+-- Expectation Maximization approach to estimate the true class of
+-- verification judgment for semantic segmentation labels based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VerificationSemanticSegmentation@
+--
+-- __Semantic segmentation adjustment__ - Treats each pixel in an image as
+-- a multi-class classification and treats pixel adjusted annotations from
+-- workers as \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- __Video Frame Object Detection Adjustment__ - Use this task type when
+-- you want workers to adjust bounding boxes that workers have added to
+-- video frames to classify and localize objects in a sequence of video
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- __Video Frame Object Tracking Adjustment__ - Use this task type when you
+-- want workers to adjust bounding boxes that workers have added to video
+-- frames to track object movement across a sequence of video frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- __3D point cloud object detection adjustment__ - Adjust 3D cuboids in a
+-- point cloud frame.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- __3D point cloud object tracking adjustment__ - Adjust 3D cuboids across
+-- a sequence of point cloud frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- __3D point cloud semantic segmentation adjustment__ - Adjust semantic
+-- segmentation masks in a 3D point cloud.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- 'taskTitle', 'humanTaskConfig_taskTitle' - A title for the task for your human workers.
+--
+-- 'taskDescription', 'humanTaskConfig_taskDescription' - A description of the task for your human workers.
+--
+-- 'numberOfHumanWorkersPerDataObject', 'humanTaskConfig_numberOfHumanWorkersPerDataObject' - The number of human workers that will label an object.
+--
+-- 'taskTimeLimitInSeconds', 'humanTaskConfig_taskTimeLimitInSeconds' - The amount of time that a worker has to complete a task.
+--
+-- If you create a custom labeling job, the maximum value for this
+-- parameter is 8 hours (28,800 seconds).
+--
+-- If you create a labeling job using a
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task type>
+-- the maximum for this parameter depends on the task type you use:
+--
+-- -   For
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-images.html image>
+--     and
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-text.html text>
+--     labeling jobs, the maximum is 8 hours (28,800 seconds).
+--
+-- -   For
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud.html 3D point cloud>
+--     and
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-video.html video frame>
+--     labeling jobs, the maximum is 30 days (2952,000 seconds) for non-AL
+--     mode. For most users, the maximum is also 30 days.
+--
+-- 'annotationConsolidationConfig', 'humanTaskConfig_annotationConsolidationConfig' - Configures how labels are consolidated across human workers.
+newHumanTaskConfig ::
+  -- | 'workteamArn'
+  Prelude.Text ->
+  -- | 'uiConfig'
+  UiConfig ->
+  -- | 'preHumanTaskLambdaArn'
+  Prelude.Text ->
+  -- | 'taskTitle'
+  Prelude.Text ->
+  -- | 'taskDescription'
+  Prelude.Text ->
+  -- | 'numberOfHumanWorkersPerDataObject'
+  Prelude.Natural ->
+  -- | 'taskTimeLimitInSeconds'
+  Prelude.Natural ->
+  -- | 'annotationConsolidationConfig'
+  AnnotationConsolidationConfig ->
+  HumanTaskConfig
+newHumanTaskConfig
+  pWorkteamArn_
+  pUiConfig_
+  pPreHumanTaskLambdaArn_
+  pTaskTitle_
+  pTaskDescription_
+  pNumberOfHumanWorkersPerDataObject_
+  pTaskTimeLimitInSeconds_
+  pAnnotationConsolidationConfig_ =
+    HumanTaskConfig'
+      { maxConcurrentTaskCount =
+          Prelude.Nothing,
+        publicWorkforceTaskPrice = Prelude.Nothing,
+        taskAvailabilityLifetimeInSeconds = Prelude.Nothing,
+        taskKeywords = Prelude.Nothing,
+        workteamArn = pWorkteamArn_,
+        uiConfig = pUiConfig_,
+        preHumanTaskLambdaArn = pPreHumanTaskLambdaArn_,
+        taskTitle = pTaskTitle_,
+        taskDescription = pTaskDescription_,
+        numberOfHumanWorkersPerDataObject =
+          pNumberOfHumanWorkersPerDataObject_,
+        taskTimeLimitInSeconds = pTaskTimeLimitInSeconds_,
+        annotationConsolidationConfig =
+          pAnnotationConsolidationConfig_
+      }
+
+-- | Defines the maximum number of data objects that can be labeled by human
+-- workers at the same time. Also referred to as batch size. Each object
+-- may have more than one worker at one time. The default value is 1000
+-- objects. To increase the maximum value to 5000 objects, contact Amazon
+-- Web Services Support.
+humanTaskConfig_maxConcurrentTaskCount :: Lens.Lens' HumanTaskConfig (Prelude.Maybe Prelude.Natural)
+humanTaskConfig_maxConcurrentTaskCount = Lens.lens (\HumanTaskConfig' {maxConcurrentTaskCount} -> maxConcurrentTaskCount) (\s@HumanTaskConfig' {} a -> s {maxConcurrentTaskCount = a} :: HumanTaskConfig)
+
+-- | The price that you pay for each task performed by an Amazon Mechanical
+-- Turk worker.
+humanTaskConfig_publicWorkforceTaskPrice :: Lens.Lens' HumanTaskConfig (Prelude.Maybe PublicWorkforceTaskPrice)
+humanTaskConfig_publicWorkforceTaskPrice = Lens.lens (\HumanTaskConfig' {publicWorkforceTaskPrice} -> publicWorkforceTaskPrice) (\s@HumanTaskConfig' {} a -> s {publicWorkforceTaskPrice = a} :: HumanTaskConfig)
+
+-- | The length of time that a task remains available for labeling by human
+-- workers. The default and maximum values for this parameter depend on the
+-- type of workforce you use.
+--
+-- -   If you choose the Amazon Mechanical Turk workforce, the maximum is
+--     12 hours (43,200 seconds). The default is 6 hours (21,600 seconds).
+--
+-- -   If you choose a private or vendor workforce, the default value is 30
+--     days (2592,000 seconds) for non-AL mode. For most users, the maximum
+--     is also 30 days.
+humanTaskConfig_taskAvailabilityLifetimeInSeconds :: Lens.Lens' HumanTaskConfig (Prelude.Maybe Prelude.Natural)
+humanTaskConfig_taskAvailabilityLifetimeInSeconds = Lens.lens (\HumanTaskConfig' {taskAvailabilityLifetimeInSeconds} -> taskAvailabilityLifetimeInSeconds) (\s@HumanTaskConfig' {} a -> s {taskAvailabilityLifetimeInSeconds = a} :: HumanTaskConfig)
+
+-- | Keywords used to describe the task so that workers on Amazon Mechanical
+-- Turk can discover the task.
+humanTaskConfig_taskKeywords :: Lens.Lens' HumanTaskConfig (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+humanTaskConfig_taskKeywords = Lens.lens (\HumanTaskConfig' {taskKeywords} -> taskKeywords) (\s@HumanTaskConfig' {} a -> s {taskKeywords = a} :: HumanTaskConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the work team assigned to complete the
+-- tasks.
+humanTaskConfig_workteamArn :: Lens.Lens' HumanTaskConfig Prelude.Text
+humanTaskConfig_workteamArn = Lens.lens (\HumanTaskConfig' {workteamArn} -> workteamArn) (\s@HumanTaskConfig' {} a -> s {workteamArn = a} :: HumanTaskConfig)
+
+-- | Information about the user interface that workers use to complete the
+-- labeling task.
+humanTaskConfig_uiConfig :: Lens.Lens' HumanTaskConfig UiConfig
+humanTaskConfig_uiConfig = Lens.lens (\HumanTaskConfig' {uiConfig} -> uiConfig) (\s@HumanTaskConfig' {} a -> s {uiConfig = a} :: HumanTaskConfig)
+
+-- | The Amazon Resource Name (ARN) of a Lambda function that is run before a
+-- data object is sent to a human worker. Use this function to provide
+-- input to a custom labeling job.
+--
+-- For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task types>,
+-- use one of the following Amazon SageMaker Ground Truth Lambda function
+-- ARNs for @PreHumanTaskLambdaArn@. For custom labeling workflows, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3.html#sms-custom-templates-step3-prelambda Pre-annotation Lambda>.
+--
+-- __Bounding box__ - Finds the most similar boxes from different workers
+-- based on the Jaccard index of the boxes.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-BoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-BoundingBox@
+--
+-- __Image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-ImageMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-ImageMultiClass@
+--
+-- __Multi-label image classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of an image based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-ImageMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-ImageMultiClassMultiLabel@
+--
+-- __Semantic segmentation__ - Treats each pixel in an image as a
+-- multi-class classification and treats pixel annotations from workers as
+-- \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-SemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-SemanticSegmentation@
+--
+-- __Text classification__ - Uses a variant of the Expectation Maximization
+-- approach to estimate the true class of text based on annotations from
+-- individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-TextMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-TextMultiClass@
+--
+-- __Multi-label text classification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true classes of text based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-TextMultiClassMultiLabel@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-TextMultiClassMultiLabel@
+--
+-- __Named entity recognition__ - Groups similar selections and calculates
+-- aggregate boundaries, resolving to most-assigned label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-NamedEntityRecognition@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-NamedEntityRecognition@
+--
+-- __Video Classification__ - Use this task type when you need workers to
+-- classify videos using predefined labels that you specify. Workers are
+-- shown videos and are asked to choose one label for each video.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoMultiClass@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoMultiClass@
+--
+-- __Video Frame Object Detection__ - Use this task type to have workers
+-- identify and locate objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to identify and localize various objects in a
+-- series of video frames, such as cars, bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoObjectDetection@
+--
+-- __Video Frame Object Tracking__ - Use this task type to have workers
+-- track the movement of objects in a sequence of video frames (images
+-- extracted from a video) using bounding boxes. For example, you can use
+-- this task to ask workers to track the movement of objects, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VideoObjectTracking@
+--
+-- __3D Point Cloud Modalities__
+--
+-- Use the following pre-annotation lambdas for 3D point cloud labeling
+-- modality tasks. See
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-task-types.html 3D Point Cloud Task types>
+-- to learn more.
+--
+-- __3D Point Cloud Object Detection__ - Use this task type when you want
+-- workers to classify objects in a 3D point cloud by drawing 3D cuboids
+-- around objects. For example, you can use this task type to ask workers
+-- to identify different types of objects in a point cloud, such as cars,
+-- bikes, and pedestrians.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudObjectDetection@
+--
+-- __3D Point Cloud Object Tracking__ - Use this task type when you want
+-- workers to draw 3D cuboids around objects that appear in a sequence of
+-- 3D point cloud frames. For example, you can use this task type to ask
+-- workers to track the movement of vehicles across multiple point cloud
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudObjectTracking@
+--
+-- __3D Point Cloud Semantic Segmentation__ - Use this task type when you
+-- want workers to create a point-level semantic segmentation masks by
+-- painting objects in a 3D point cloud using different colors where each
+-- color is assigned to one of the classes you specify.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-3DPointCloudSemanticSegmentation@
+--
+-- __Use the following ARNs for Label Verification and Adjustment Jobs__
+--
+-- Use label verification and adjustment jobs to review and adjust labels.
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html Verify and Adjust Labels>
+-- .
+--
+-- __Bounding box verification__ - Uses a variant of the Expectation
+-- Maximization approach to estimate the true class of verification
+-- judgement for bounding box labels based on annotations from individual
+-- workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VerificationBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VerificationBoundingBox@
+--
+-- __Bounding box adjustment__ - Finds the most similar boxes from
+-- different workers based on the Jaccard index of the adjusted
+-- annotations.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentBoundingBox@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentBoundingBox@
+--
+-- __Semantic segmentation verification__ - Uses a variant of the
+-- Expectation Maximization approach to estimate the true class of
+-- verification judgment for semantic segmentation labels based on
+-- annotations from individual workers.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-VerificationSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-VerificationSemanticSegmentation@
+--
+-- __Semantic segmentation adjustment__ - Treats each pixel in an image as
+-- a multi-class classification and treats pixel adjusted annotations from
+-- workers as \"votes\" for the correct label.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentSemanticSegmentation@
+--
+-- __Video Frame Object Detection Adjustment__ - Use this task type when
+-- you want workers to adjust bounding boxes that workers have added to
+-- video frames to classify and localize objects in a sequence of video
+-- frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentVideoObjectDetection@
+--
+-- __Video Frame Object Tracking Adjustment__ - Use this task type when you
+-- want workers to adjust bounding boxes that workers have added to video
+-- frames to track object movement across a sequence of video frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-AdjustmentVideoObjectTracking@
+--
+-- __3D point cloud object detection adjustment__ - Adjust 3D cuboids in a
+-- point cloud frame.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudObjectDetection@
+--
+-- __3D point cloud object tracking adjustment__ - Adjust 3D cuboids across
+-- a sequence of point cloud frames.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudObjectTracking@
+--
+-- __3D point cloud semantic segmentation adjustment__ - Adjust semantic
+-- segmentation masks in a 3D point cloud.
+--
+-- -   @arn:aws:lambda:us-east-1:432418664414:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-east-2:266458841044:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:us-west-2:081040173940:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-1:568282634449:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-1:477331159723:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-2:454466003867:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-south-1:565803892007:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-central-1:203001061592:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-northeast-2:845288260483:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:eu-west-2:487402164563:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ap-southeast-1:377565633583:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+--
+-- -   @arn:aws:lambda:ca-central-1:918755190332:function:PRE-Adjustment3DPointCloudSemanticSegmentation@
+humanTaskConfig_preHumanTaskLambdaArn :: Lens.Lens' HumanTaskConfig Prelude.Text
+humanTaskConfig_preHumanTaskLambdaArn = Lens.lens (\HumanTaskConfig' {preHumanTaskLambdaArn} -> preHumanTaskLambdaArn) (\s@HumanTaskConfig' {} a -> s {preHumanTaskLambdaArn = a} :: HumanTaskConfig)
+
+-- | A title for the task for your human workers.
+humanTaskConfig_taskTitle :: Lens.Lens' HumanTaskConfig Prelude.Text
+humanTaskConfig_taskTitle = Lens.lens (\HumanTaskConfig' {taskTitle} -> taskTitle) (\s@HumanTaskConfig' {} a -> s {taskTitle = a} :: HumanTaskConfig)
+
+-- | A description of the task for your human workers.
+humanTaskConfig_taskDescription :: Lens.Lens' HumanTaskConfig Prelude.Text
+humanTaskConfig_taskDescription = Lens.lens (\HumanTaskConfig' {taskDescription} -> taskDescription) (\s@HumanTaskConfig' {} a -> s {taskDescription = a} :: HumanTaskConfig)
+
+-- | The number of human workers that will label an object.
+humanTaskConfig_numberOfHumanWorkersPerDataObject :: Lens.Lens' HumanTaskConfig Prelude.Natural
+humanTaskConfig_numberOfHumanWorkersPerDataObject = Lens.lens (\HumanTaskConfig' {numberOfHumanWorkersPerDataObject} -> numberOfHumanWorkersPerDataObject) (\s@HumanTaskConfig' {} a -> s {numberOfHumanWorkersPerDataObject = a} :: HumanTaskConfig)
+
+-- | The amount of time that a worker has to complete a task.
+--
+-- If you create a custom labeling job, the maximum value for this
+-- parameter is 8 hours (28,800 seconds).
+--
+-- If you create a labeling job using a
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html built-in task type>
+-- the maximum for this parameter depends on the task type you use:
+--
+-- -   For
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-images.html image>
+--     and
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-text.html text>
+--     labeling jobs, the maximum is 8 hours (28,800 seconds).
+--
+-- -   For
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud.html 3D point cloud>
+--     and
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-video.html video frame>
+--     labeling jobs, the maximum is 30 days (2952,000 seconds) for non-AL
+--     mode. For most users, the maximum is also 30 days.
+humanTaskConfig_taskTimeLimitInSeconds :: Lens.Lens' HumanTaskConfig Prelude.Natural
+humanTaskConfig_taskTimeLimitInSeconds = Lens.lens (\HumanTaskConfig' {taskTimeLimitInSeconds} -> taskTimeLimitInSeconds) (\s@HumanTaskConfig' {} a -> s {taskTimeLimitInSeconds = a} :: HumanTaskConfig)
+
+-- | Configures how labels are consolidated across human workers.
+humanTaskConfig_annotationConsolidationConfig :: Lens.Lens' HumanTaskConfig AnnotationConsolidationConfig
+humanTaskConfig_annotationConsolidationConfig = Lens.lens (\HumanTaskConfig' {annotationConsolidationConfig} -> annotationConsolidationConfig) (\s@HumanTaskConfig' {} a -> s {annotationConsolidationConfig = a} :: HumanTaskConfig)
+
+instance Data.FromJSON HumanTaskConfig where
+  parseJSON =
+    Data.withObject
+      "HumanTaskConfig"
+      ( \x ->
+          HumanTaskConfig'
+            Prelude.<$> (x Data..:? "MaxConcurrentTaskCount")
+            Prelude.<*> (x Data..:? "PublicWorkforceTaskPrice")
+            Prelude.<*> (x Data..:? "TaskAvailabilityLifetimeInSeconds")
+            Prelude.<*> (x Data..:? "TaskKeywords")
+            Prelude.<*> (x Data..: "WorkteamArn")
+            Prelude.<*> (x Data..: "UiConfig")
+            Prelude.<*> (x Data..: "PreHumanTaskLambdaArn")
+            Prelude.<*> (x Data..: "TaskTitle")
+            Prelude.<*> (x Data..: "TaskDescription")
+            Prelude.<*> (x Data..: "NumberOfHumanWorkersPerDataObject")
+            Prelude.<*> (x Data..: "TaskTimeLimitInSeconds")
+            Prelude.<*> (x Data..: "AnnotationConsolidationConfig")
+      )
+
+instance Prelude.Hashable HumanTaskConfig where
+  hashWithSalt _salt HumanTaskConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxConcurrentTaskCount
+      `Prelude.hashWithSalt` publicWorkforceTaskPrice
+      `Prelude.hashWithSalt` taskAvailabilityLifetimeInSeconds
+      `Prelude.hashWithSalt` taskKeywords
+      `Prelude.hashWithSalt` workteamArn
+      `Prelude.hashWithSalt` uiConfig
+      `Prelude.hashWithSalt` preHumanTaskLambdaArn
+      `Prelude.hashWithSalt` taskTitle
+      `Prelude.hashWithSalt` taskDescription
+      `Prelude.hashWithSalt` numberOfHumanWorkersPerDataObject
+      `Prelude.hashWithSalt` taskTimeLimitInSeconds
+      `Prelude.hashWithSalt` annotationConsolidationConfig
+
+instance Prelude.NFData HumanTaskConfig where
+  rnf HumanTaskConfig' {..} =
+    Prelude.rnf maxConcurrentTaskCount
+      `Prelude.seq` Prelude.rnf publicWorkforceTaskPrice
+      `Prelude.seq` Prelude.rnf taskAvailabilityLifetimeInSeconds
+      `Prelude.seq` Prelude.rnf taskKeywords
+      `Prelude.seq` Prelude.rnf workteamArn
+      `Prelude.seq` Prelude.rnf uiConfig
+      `Prelude.seq` Prelude.rnf preHumanTaskLambdaArn
+      `Prelude.seq` Prelude.rnf taskTitle
+      `Prelude.seq` Prelude.rnf taskDescription
+      `Prelude.seq` Prelude.rnf numberOfHumanWorkersPerDataObject
+      `Prelude.seq` Prelude.rnf taskTimeLimitInSeconds
+      `Prelude.seq` Prelude.rnf annotationConsolidationConfig
+
+instance Data.ToJSON HumanTaskConfig where
+  toJSON HumanTaskConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxConcurrentTaskCount" Data..=)
+              Prelude.<$> maxConcurrentTaskCount,
+            ("PublicWorkforceTaskPrice" Data..=)
+              Prelude.<$> publicWorkforceTaskPrice,
+            ("TaskAvailabilityLifetimeInSeconds" Data..=)
+              Prelude.<$> taskAvailabilityLifetimeInSeconds,
+            ("TaskKeywords" Data..=) Prelude.<$> taskKeywords,
+            Prelude.Just ("WorkteamArn" Data..= workteamArn),
+            Prelude.Just ("UiConfig" Data..= uiConfig),
+            Prelude.Just
+              ( "PreHumanTaskLambdaArn"
+                  Data..= preHumanTaskLambdaArn
+              ),
+            Prelude.Just ("TaskTitle" Data..= taskTitle),
+            Prelude.Just
+              ("TaskDescription" Data..= taskDescription),
+            Prelude.Just
+              ( "NumberOfHumanWorkersPerDataObject"
+                  Data..= numberOfHumanWorkersPerDataObject
+              ),
+            Prelude.Just
+              ( "TaskTimeLimitInSeconds"
+                  Data..= taskTimeLimitInSeconds
+              ),
+            Prelude.Just
+              ( "AnnotationConsolidationConfig"
+                  Data..= annotationConsolidationConfig
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HumanTaskUiStatus.hs b/gen/Amazonka/SageMaker/Types/HumanTaskUiStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanTaskUiStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HumanTaskUiStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanTaskUiStatus
+  ( HumanTaskUiStatus
+      ( ..,
+        HumanTaskUiStatus_Active,
+        HumanTaskUiStatus_Deleting
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HumanTaskUiStatus = HumanTaskUiStatus'
+  { fromHumanTaskUiStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HumanTaskUiStatus_Active :: HumanTaskUiStatus
+pattern HumanTaskUiStatus_Active = HumanTaskUiStatus' "Active"
+
+pattern HumanTaskUiStatus_Deleting :: HumanTaskUiStatus
+pattern HumanTaskUiStatus_Deleting = HumanTaskUiStatus' "Deleting"
+
+{-# COMPLETE
+  HumanTaskUiStatus_Active,
+  HumanTaskUiStatus_Deleting,
+  HumanTaskUiStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HumanTaskUiSummary.hs b/gen/Amazonka/SageMaker/Types/HumanTaskUiSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HumanTaskUiSummary.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HumanTaskUiSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HumanTaskUiSummary 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
+
+-- | Container for human task user interface information.
+--
+-- /See:/ 'newHumanTaskUiSummary' smart constructor.
+data HumanTaskUiSummary = HumanTaskUiSummary'
+  { -- | The name of the human task user interface.
+    humanTaskUiName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the human task user interface.
+    humanTaskUiArn :: Prelude.Text,
+    -- | A timestamp when SageMaker created the human task user interface.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HumanTaskUiSummary' 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:
+--
+-- 'humanTaskUiName', 'humanTaskUiSummary_humanTaskUiName' - The name of the human task user interface.
+--
+-- 'humanTaskUiArn', 'humanTaskUiSummary_humanTaskUiArn' - The Amazon Resource Name (ARN) of the human task user interface.
+--
+-- 'creationTime', 'humanTaskUiSummary_creationTime' - A timestamp when SageMaker created the human task user interface.
+newHumanTaskUiSummary ::
+  -- | 'humanTaskUiName'
+  Prelude.Text ->
+  -- | 'humanTaskUiArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  HumanTaskUiSummary
+newHumanTaskUiSummary
+  pHumanTaskUiName_
+  pHumanTaskUiArn_
+  pCreationTime_ =
+    HumanTaskUiSummary'
+      { humanTaskUiName =
+          pHumanTaskUiName_,
+        humanTaskUiArn = pHumanTaskUiArn_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The name of the human task user interface.
+humanTaskUiSummary_humanTaskUiName :: Lens.Lens' HumanTaskUiSummary Prelude.Text
+humanTaskUiSummary_humanTaskUiName = Lens.lens (\HumanTaskUiSummary' {humanTaskUiName} -> humanTaskUiName) (\s@HumanTaskUiSummary' {} a -> s {humanTaskUiName = a} :: HumanTaskUiSummary)
+
+-- | The Amazon Resource Name (ARN) of the human task user interface.
+humanTaskUiSummary_humanTaskUiArn :: Lens.Lens' HumanTaskUiSummary Prelude.Text
+humanTaskUiSummary_humanTaskUiArn = Lens.lens (\HumanTaskUiSummary' {humanTaskUiArn} -> humanTaskUiArn) (\s@HumanTaskUiSummary' {} a -> s {humanTaskUiArn = a} :: HumanTaskUiSummary)
+
+-- | A timestamp when SageMaker created the human task user interface.
+humanTaskUiSummary_creationTime :: Lens.Lens' HumanTaskUiSummary Prelude.UTCTime
+humanTaskUiSummary_creationTime = Lens.lens (\HumanTaskUiSummary' {creationTime} -> creationTime) (\s@HumanTaskUiSummary' {} a -> s {creationTime = a} :: HumanTaskUiSummary) Prelude.. Data._Time
+
+instance Data.FromJSON HumanTaskUiSummary where
+  parseJSON =
+    Data.withObject
+      "HumanTaskUiSummary"
+      ( \x ->
+          HumanTaskUiSummary'
+            Prelude.<$> (x Data..: "HumanTaskUiName")
+            Prelude.<*> (x Data..: "HumanTaskUiArn")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable HumanTaskUiSummary where
+  hashWithSalt _salt HumanTaskUiSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` humanTaskUiName
+      `Prelude.hashWithSalt` humanTaskUiArn
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData HumanTaskUiSummary where
+  rnf HumanTaskUiSummary' {..} =
+    Prelude.rnf humanTaskUiName
+      `Prelude.seq` Prelude.rnf humanTaskUiArn
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterAlgorithmSpecification.hs b/gen/Amazonka/SageMaker/Types/HyperParameterAlgorithmSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterAlgorithmSpecification.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterAlgorithmSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterAlgorithmSpecification 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 Amazonka.SageMaker.Types.MetricDefinition
+import Amazonka.SageMaker.Types.TrainingInputMode
+
+-- | Specifies which training algorithm to use for training jobs that a
+-- hyperparameter tuning job launches and the metrics to monitor.
+--
+-- /See:/ 'newHyperParameterAlgorithmSpecification' smart constructor.
+data HyperParameterAlgorithmSpecification = HyperParameterAlgorithmSpecification'
+  { -- | The name of the resource algorithm to use for the hyperparameter tuning
+    -- job. If you specify a value for this parameter, do not specify a value
+    -- for @TrainingImage@.
+    algorithmName :: Prelude.Maybe Prelude.Text,
+    -- | An array of MetricDefinition objects that specify the metrics that the
+    -- algorithm emits.
+    metricDefinitions :: Prelude.Maybe [MetricDefinition],
+    -- | The registry path of the Docker image that contains the training
+    -- algorithm. For information about Docker registry paths for built-in
+    -- algorithms, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Algorithms Provided by Amazon SageMaker: Common Parameters>.
+    -- SageMaker supports both @registry\/repository[:tag]@ and
+    -- @registry\/repository[\@digest]@ image path formats. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+    trainingImage :: Prelude.Maybe Prelude.Text,
+    trainingInputMode :: TrainingInputMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterAlgorithmSpecification' 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:
+--
+-- 'algorithmName', 'hyperParameterAlgorithmSpecification_algorithmName' - The name of the resource algorithm to use for the hyperparameter tuning
+-- job. If you specify a value for this parameter, do not specify a value
+-- for @TrainingImage@.
+--
+-- 'metricDefinitions', 'hyperParameterAlgorithmSpecification_metricDefinitions' - An array of MetricDefinition objects that specify the metrics that the
+-- algorithm emits.
+--
+-- 'trainingImage', 'hyperParameterAlgorithmSpecification_trainingImage' - The registry path of the Docker image that contains the training
+-- algorithm. For information about Docker registry paths for built-in
+-- algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Algorithms Provided by Amazon SageMaker: Common Parameters>.
+-- SageMaker supports both @registry\/repository[:tag]@ and
+-- @registry\/repository[\@digest]@ image path formats. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+--
+-- 'trainingInputMode', 'hyperParameterAlgorithmSpecification_trainingInputMode' - Undocumented member.
+newHyperParameterAlgorithmSpecification ::
+  -- | 'trainingInputMode'
+  TrainingInputMode ->
+  HyperParameterAlgorithmSpecification
+newHyperParameterAlgorithmSpecification
+  pTrainingInputMode_ =
+    HyperParameterAlgorithmSpecification'
+      { algorithmName =
+          Prelude.Nothing,
+        metricDefinitions = Prelude.Nothing,
+        trainingImage = Prelude.Nothing,
+        trainingInputMode =
+          pTrainingInputMode_
+      }
+
+-- | The name of the resource algorithm to use for the hyperparameter tuning
+-- job. If you specify a value for this parameter, do not specify a value
+-- for @TrainingImage@.
+hyperParameterAlgorithmSpecification_algorithmName :: Lens.Lens' HyperParameterAlgorithmSpecification (Prelude.Maybe Prelude.Text)
+hyperParameterAlgorithmSpecification_algorithmName = Lens.lens (\HyperParameterAlgorithmSpecification' {algorithmName} -> algorithmName) (\s@HyperParameterAlgorithmSpecification' {} a -> s {algorithmName = a} :: HyperParameterAlgorithmSpecification)
+
+-- | An array of MetricDefinition objects that specify the metrics that the
+-- algorithm emits.
+hyperParameterAlgorithmSpecification_metricDefinitions :: Lens.Lens' HyperParameterAlgorithmSpecification (Prelude.Maybe [MetricDefinition])
+hyperParameterAlgorithmSpecification_metricDefinitions = Lens.lens (\HyperParameterAlgorithmSpecification' {metricDefinitions} -> metricDefinitions) (\s@HyperParameterAlgorithmSpecification' {} a -> s {metricDefinitions = a} :: HyperParameterAlgorithmSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The registry path of the Docker image that contains the training
+-- algorithm. For information about Docker registry paths for built-in
+-- algorithms, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html Algorithms Provided by Amazon SageMaker: Common Parameters>.
+-- SageMaker supports both @registry\/repository[:tag]@ and
+-- @registry\/repository[\@digest]@ image path formats. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+hyperParameterAlgorithmSpecification_trainingImage :: Lens.Lens' HyperParameterAlgorithmSpecification (Prelude.Maybe Prelude.Text)
+hyperParameterAlgorithmSpecification_trainingImage = Lens.lens (\HyperParameterAlgorithmSpecification' {trainingImage} -> trainingImage) (\s@HyperParameterAlgorithmSpecification' {} a -> s {trainingImage = a} :: HyperParameterAlgorithmSpecification)
+
+-- | Undocumented member.
+hyperParameterAlgorithmSpecification_trainingInputMode :: Lens.Lens' HyperParameterAlgorithmSpecification TrainingInputMode
+hyperParameterAlgorithmSpecification_trainingInputMode = Lens.lens (\HyperParameterAlgorithmSpecification' {trainingInputMode} -> trainingInputMode) (\s@HyperParameterAlgorithmSpecification' {} a -> s {trainingInputMode = a} :: HyperParameterAlgorithmSpecification)
+
+instance
+  Data.FromJSON
+    HyperParameterAlgorithmSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterAlgorithmSpecification"
+      ( \x ->
+          HyperParameterAlgorithmSpecification'
+            Prelude.<$> (x Data..:? "AlgorithmName")
+            Prelude.<*> ( x
+                            Data..:? "MetricDefinitions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "TrainingImage")
+            Prelude.<*> (x Data..: "TrainingInputMode")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterAlgorithmSpecification
+  where
+  hashWithSalt
+    _salt
+    HyperParameterAlgorithmSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` algorithmName
+        `Prelude.hashWithSalt` metricDefinitions
+        `Prelude.hashWithSalt` trainingImage
+        `Prelude.hashWithSalt` trainingInputMode
+
+instance
+  Prelude.NFData
+    HyperParameterAlgorithmSpecification
+  where
+  rnf HyperParameterAlgorithmSpecification' {..} =
+    Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf metricDefinitions
+      `Prelude.seq` Prelude.rnf trainingImage
+      `Prelude.seq` Prelude.rnf trainingInputMode
+
+instance
+  Data.ToJSON
+    HyperParameterAlgorithmSpecification
+  where
+  toJSON HyperParameterAlgorithmSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlgorithmName" Data..=) Prelude.<$> algorithmName,
+            ("MetricDefinitions" Data..=)
+              Prelude.<$> metricDefinitions,
+            ("TrainingImage" Data..=) Prelude.<$> trainingImage,
+            Prelude.Just
+              ("TrainingInputMode" Data..= trainingInputMode)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterScalingType.hs b/gen/Amazonka/SageMaker/Types/HyperParameterScalingType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterScalingType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterScalingType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterScalingType
+  ( HyperParameterScalingType
+      ( ..,
+        HyperParameterScalingType_Auto,
+        HyperParameterScalingType_Linear,
+        HyperParameterScalingType_Logarithmic,
+        HyperParameterScalingType_ReverseLogarithmic
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HyperParameterScalingType = HyperParameterScalingType'
+  { fromHyperParameterScalingType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterScalingType_Auto :: HyperParameterScalingType
+pattern HyperParameterScalingType_Auto = HyperParameterScalingType' "Auto"
+
+pattern HyperParameterScalingType_Linear :: HyperParameterScalingType
+pattern HyperParameterScalingType_Linear = HyperParameterScalingType' "Linear"
+
+pattern HyperParameterScalingType_Logarithmic :: HyperParameterScalingType
+pattern HyperParameterScalingType_Logarithmic = HyperParameterScalingType' "Logarithmic"
+
+pattern HyperParameterScalingType_ReverseLogarithmic :: HyperParameterScalingType
+pattern HyperParameterScalingType_ReverseLogarithmic = HyperParameterScalingType' "ReverseLogarithmic"
+
+{-# COMPLETE
+  HyperParameterScalingType_Auto,
+  HyperParameterScalingType_Linear,
+  HyperParameterScalingType_Logarithmic,
+  HyperParameterScalingType_ReverseLogarithmic,
+  HyperParameterScalingType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterSpecification.hs b/gen/Amazonka/SageMaker/Types/HyperParameterSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterSpecification.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterSpecification 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 Amazonka.SageMaker.Types.ParameterRange
+import Amazonka.SageMaker.Types.ParameterType
+
+-- | Defines a hyperparameter to be used by an algorithm.
+--
+-- /See:/ 'newHyperParameterSpecification' smart constructor.
+data HyperParameterSpecification = HyperParameterSpecification'
+  { -- | The default value for this hyperparameter. If a default value is
+    -- specified, a hyperparameter cannot be required.
+    defaultValue :: Prelude.Maybe Prelude.Text,
+    -- | A brief description of the hyperparameter.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether this hyperparameter is required.
+    isRequired :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether this hyperparameter is tunable in a hyperparameter
+    -- tuning job.
+    isTunable :: Prelude.Maybe Prelude.Bool,
+    -- | The allowed range for this hyperparameter.
+    range :: Prelude.Maybe ParameterRange,
+    -- | The name of this hyperparameter. The name must be unique.
+    name :: Prelude.Text,
+    -- | The type of this hyperparameter. The valid types are @Integer@,
+    -- @Continuous@, @Categorical@, and @FreeText@.
+    type' :: ParameterType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterSpecification' 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:
+--
+-- 'defaultValue', 'hyperParameterSpecification_defaultValue' - The default value for this hyperparameter. If a default value is
+-- specified, a hyperparameter cannot be required.
+--
+-- 'description', 'hyperParameterSpecification_description' - A brief description of the hyperparameter.
+--
+-- 'isRequired', 'hyperParameterSpecification_isRequired' - Indicates whether this hyperparameter is required.
+--
+-- 'isTunable', 'hyperParameterSpecification_isTunable' - Indicates whether this hyperparameter is tunable in a hyperparameter
+-- tuning job.
+--
+-- 'range', 'hyperParameterSpecification_range' - The allowed range for this hyperparameter.
+--
+-- 'name', 'hyperParameterSpecification_name' - The name of this hyperparameter. The name must be unique.
+--
+-- 'type'', 'hyperParameterSpecification_type' - The type of this hyperparameter. The valid types are @Integer@,
+-- @Continuous@, @Categorical@, and @FreeText@.
+newHyperParameterSpecification ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  ParameterType ->
+  HyperParameterSpecification
+newHyperParameterSpecification pName_ pType_ =
+  HyperParameterSpecification'
+    { defaultValue =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      isRequired = Prelude.Nothing,
+      isTunable = Prelude.Nothing,
+      range = Prelude.Nothing,
+      name = pName_,
+      type' = pType_
+    }
+
+-- | The default value for this hyperparameter. If a default value is
+-- specified, a hyperparameter cannot be required.
+hyperParameterSpecification_defaultValue :: Lens.Lens' HyperParameterSpecification (Prelude.Maybe Prelude.Text)
+hyperParameterSpecification_defaultValue = Lens.lens (\HyperParameterSpecification' {defaultValue} -> defaultValue) (\s@HyperParameterSpecification' {} a -> s {defaultValue = a} :: HyperParameterSpecification)
+
+-- | A brief description of the hyperparameter.
+hyperParameterSpecification_description :: Lens.Lens' HyperParameterSpecification (Prelude.Maybe Prelude.Text)
+hyperParameterSpecification_description = Lens.lens (\HyperParameterSpecification' {description} -> description) (\s@HyperParameterSpecification' {} a -> s {description = a} :: HyperParameterSpecification)
+
+-- | Indicates whether this hyperparameter is required.
+hyperParameterSpecification_isRequired :: Lens.Lens' HyperParameterSpecification (Prelude.Maybe Prelude.Bool)
+hyperParameterSpecification_isRequired = Lens.lens (\HyperParameterSpecification' {isRequired} -> isRequired) (\s@HyperParameterSpecification' {} a -> s {isRequired = a} :: HyperParameterSpecification)
+
+-- | Indicates whether this hyperparameter is tunable in a hyperparameter
+-- tuning job.
+hyperParameterSpecification_isTunable :: Lens.Lens' HyperParameterSpecification (Prelude.Maybe Prelude.Bool)
+hyperParameterSpecification_isTunable = Lens.lens (\HyperParameterSpecification' {isTunable} -> isTunable) (\s@HyperParameterSpecification' {} a -> s {isTunable = a} :: HyperParameterSpecification)
+
+-- | The allowed range for this hyperparameter.
+hyperParameterSpecification_range :: Lens.Lens' HyperParameterSpecification (Prelude.Maybe ParameterRange)
+hyperParameterSpecification_range = Lens.lens (\HyperParameterSpecification' {range} -> range) (\s@HyperParameterSpecification' {} a -> s {range = a} :: HyperParameterSpecification)
+
+-- | The name of this hyperparameter. The name must be unique.
+hyperParameterSpecification_name :: Lens.Lens' HyperParameterSpecification Prelude.Text
+hyperParameterSpecification_name = Lens.lens (\HyperParameterSpecification' {name} -> name) (\s@HyperParameterSpecification' {} a -> s {name = a} :: HyperParameterSpecification)
+
+-- | The type of this hyperparameter. The valid types are @Integer@,
+-- @Continuous@, @Categorical@, and @FreeText@.
+hyperParameterSpecification_type :: Lens.Lens' HyperParameterSpecification ParameterType
+hyperParameterSpecification_type = Lens.lens (\HyperParameterSpecification' {type'} -> type') (\s@HyperParameterSpecification' {} a -> s {type' = a} :: HyperParameterSpecification)
+
+instance Data.FromJSON HyperParameterSpecification where
+  parseJSON =
+    Data.withObject
+      "HyperParameterSpecification"
+      ( \x ->
+          HyperParameterSpecification'
+            Prelude.<$> (x Data..:? "DefaultValue")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "IsRequired")
+            Prelude.<*> (x Data..:? "IsTunable")
+            Prelude.<*> (x Data..:? "Range")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable HyperParameterSpecification where
+  hashWithSalt _salt HyperParameterSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` defaultValue
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` isRequired
+      `Prelude.hashWithSalt` isTunable
+      `Prelude.hashWithSalt` range
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData HyperParameterSpecification where
+  rnf HyperParameterSpecification' {..} =
+    Prelude.rnf defaultValue
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf isRequired
+      `Prelude.seq` Prelude.rnf isTunable
+      `Prelude.seq` Prelude.rnf range
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON HyperParameterSpecification where
+  toJSON HyperParameterSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultValue" Data..=) Prelude.<$> defaultValue,
+            ("Description" Data..=) Prelude.<$> description,
+            ("IsRequired" Data..=) Prelude.<$> isRequired,
+            ("IsTunable" Data..=) Prelude.<$> isTunable,
+            ("Range" Data..=) Prelude.<$> range,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTrainingJobDefinition.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTrainingJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTrainingJobDefinition.hs
@@ -0,0 +1,472 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTrainingJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTrainingJobDefinition 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 Amazonka.SageMaker.Types.Channel
+import Amazonka.SageMaker.Types.CheckpointConfig
+import Amazonka.SageMaker.Types.HyperParameterAlgorithmSpecification
+import Amazonka.SageMaker.Types.HyperParameterTuningJobObjective
+import Amazonka.SageMaker.Types.HyperParameterTuningResourceConfig
+import Amazonka.SageMaker.Types.OutputDataConfig
+import Amazonka.SageMaker.Types.ParameterRanges
+import Amazonka.SageMaker.Types.ResourceConfig
+import Amazonka.SageMaker.Types.RetryStrategy
+import Amazonka.SageMaker.Types.StoppingCondition
+import Amazonka.SageMaker.Types.VpcConfig
+
+-- | Defines the training jobs launched by a hyperparameter tuning job.
+--
+-- /See:/ 'newHyperParameterTrainingJobDefinition' smart constructor.
+data HyperParameterTrainingJobDefinition = HyperParameterTrainingJobDefinition'
+  { checkpointConfig :: Prelude.Maybe CheckpointConfig,
+    -- | The job definition name.
+    definitionName :: Prelude.Maybe Prelude.Text,
+    -- | To encrypt all communications between ML compute instances in
+    -- distributed training, choose @True@. Encryption provides greater
+    -- security for distributed training, but training might take longer. How
+    -- long it takes depends on the amount of communication between compute
+    -- instances, especially if you use a deep learning algorithm in
+    -- distributed training.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | A Boolean indicating whether managed spot training is enabled (@True@)
+    -- or not (@False@).
+    enableManagedSpotTraining :: Prelude.Maybe Prelude.Bool,
+    -- | Isolates the training container. No inbound or outbound network calls
+    -- can be made, except for calls between peers within a training cluster
+    -- for distributed training. If network isolation is used for training jobs
+    -- that are configured to use a VPC, SageMaker downloads and uploads
+    -- customer data and model artifacts through the specified VPC, but the
+    -- training container does not have network access.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    hyperParameterRanges :: Prelude.Maybe ParameterRanges,
+    -- | The configuration for the hyperparameter tuning resources, including the
+    -- compute instances and storage volumes, used for training jobs launched
+    -- by the tuning job. By default, storage volumes hold model artifacts and
+    -- incremental states. Choose @File@ for @TrainingInputMode@ in the
+    -- @AlgorithmSpecification@ parameter to additionally store training data
+    -- in the storage volume (optional).
+    hyperParameterTuningResourceConfig :: Prelude.Maybe HyperParameterTuningResourceConfig,
+    -- | An array of Channel objects that specify the input for the training jobs
+    -- that the tuning job launches.
+    inputDataConfig :: Prelude.Maybe (Prelude.NonEmpty Channel),
+    -- | The resources, including the compute instances and storage volumes, to
+    -- use for the training jobs that the tuning job launches.
+    --
+    -- Storage volumes store model artifacts and incremental states. Training
+    -- algorithms might also use storage volumes for scratch space. If you want
+    -- SageMaker to use the storage volume to store the training data, choose
+    -- @File@ as the @TrainingInputMode@ in the algorithm specification. For
+    -- distributed training algorithms, specify an instance count greater than
+    -- 1.
+    --
+    -- If you want to use hyperparameter optimization with instance type
+    -- flexibility, use @HyperParameterTuningResourceConfig@ instead.
+    resourceConfig :: Prelude.Maybe ResourceConfig,
+    -- | The number of times to retry the job when the job fails due to an
+    -- @InternalServerError@.
+    retryStrategy :: Prelude.Maybe RetryStrategy,
+    -- | Specifies the values of hyperparameters that do not change for the
+    -- tuning job.
+    staticHyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    tuningObjective :: Prelude.Maybe HyperParameterTuningJobObjective,
+    -- | The VpcConfig object that specifies the VPC that you want the training
+    -- jobs that this hyperparameter tuning job launches to connect to. Control
+    -- access to and from your training container by configuring the VPC. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe VpcConfig,
+    -- | The HyperParameterAlgorithmSpecification object that specifies the
+    -- resource algorithm to use for the training jobs that the tuning job
+    -- launches.
+    algorithmSpecification :: HyperParameterAlgorithmSpecification,
+    -- | The Amazon Resource Name (ARN) of the IAM role associated with the
+    -- training jobs that the tuning job launches.
+    roleArn :: Prelude.Text,
+    -- | Specifies the path to the Amazon S3 bucket where you store model
+    -- artifacts from the training jobs that the tuning job launches.
+    outputDataConfig :: OutputDataConfig,
+    -- | Specifies a limit to how long a model hyperparameter training job can
+    -- run. It also specifies how long a managed spot training job has to
+    -- complete. When the job reaches the time limit, SageMaker ends the
+    -- training job. Use this API to cap model training costs.
+    stoppingCondition :: StoppingCondition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTrainingJobDefinition' 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:
+--
+-- 'checkpointConfig', 'hyperParameterTrainingJobDefinition_checkpointConfig' - Undocumented member.
+--
+-- 'definitionName', 'hyperParameterTrainingJobDefinition_definitionName' - The job definition name.
+--
+-- 'enableInterContainerTrafficEncryption', 'hyperParameterTrainingJobDefinition_enableInterContainerTrafficEncryption' - To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithm in
+-- distributed training.
+--
+-- 'enableManagedSpotTraining', 'hyperParameterTrainingJobDefinition_enableManagedSpotTraining' - A Boolean indicating whether managed spot training is enabled (@True@)
+-- or not (@False@).
+--
+-- 'enableNetworkIsolation', 'hyperParameterTrainingJobDefinition_enableNetworkIsolation' - Isolates the training container. No inbound or outbound network calls
+-- can be made, except for calls between peers within a training cluster
+-- for distributed training. If network isolation is used for training jobs
+-- that are configured to use a VPC, SageMaker downloads and uploads
+-- customer data and model artifacts through the specified VPC, but the
+-- training container does not have network access.
+--
+-- 'hyperParameterRanges', 'hyperParameterTrainingJobDefinition_hyperParameterRanges' - Undocumented member.
+--
+-- 'hyperParameterTuningResourceConfig', 'hyperParameterTrainingJobDefinition_hyperParameterTuningResourceConfig' - The configuration for the hyperparameter tuning resources, including the
+-- compute instances and storage volumes, used for training jobs launched
+-- by the tuning job. By default, storage volumes hold model artifacts and
+-- incremental states. Choose @File@ for @TrainingInputMode@ in the
+-- @AlgorithmSpecification@ parameter to additionally store training data
+-- in the storage volume (optional).
+--
+-- 'inputDataConfig', 'hyperParameterTrainingJobDefinition_inputDataConfig' - An array of Channel objects that specify the input for the training jobs
+-- that the tuning job launches.
+--
+-- 'resourceConfig', 'hyperParameterTrainingJobDefinition_resourceConfig' - The resources, including the compute instances and storage volumes, to
+-- use for the training jobs that the tuning job launches.
+--
+-- Storage volumes store model artifacts and incremental states. Training
+-- algorithms might also use storage volumes for scratch space. If you want
+-- SageMaker to use the storage volume to store the training data, choose
+-- @File@ as the @TrainingInputMode@ in the algorithm specification. For
+-- distributed training algorithms, specify an instance count greater than
+-- 1.
+--
+-- If you want to use hyperparameter optimization with instance type
+-- flexibility, use @HyperParameterTuningResourceConfig@ instead.
+--
+-- 'retryStrategy', 'hyperParameterTrainingJobDefinition_retryStrategy' - The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+--
+-- 'staticHyperParameters', 'hyperParameterTrainingJobDefinition_staticHyperParameters' - Specifies the values of hyperparameters that do not change for the
+-- tuning job.
+--
+-- 'tuningObjective', 'hyperParameterTrainingJobDefinition_tuningObjective' - Undocumented member.
+--
+-- 'vpcConfig', 'hyperParameterTrainingJobDefinition_vpcConfig' - The VpcConfig object that specifies the VPC that you want the training
+-- jobs that this hyperparameter tuning job launches to connect to. Control
+-- access to and from your training container by configuring the VPC. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- 'algorithmSpecification', 'hyperParameterTrainingJobDefinition_algorithmSpecification' - The HyperParameterAlgorithmSpecification object that specifies the
+-- resource algorithm to use for the training jobs that the tuning job
+-- launches.
+--
+-- 'roleArn', 'hyperParameterTrainingJobDefinition_roleArn' - The Amazon Resource Name (ARN) of the IAM role associated with the
+-- training jobs that the tuning job launches.
+--
+-- 'outputDataConfig', 'hyperParameterTrainingJobDefinition_outputDataConfig' - Specifies the path to the Amazon S3 bucket where you store model
+-- artifacts from the training jobs that the tuning job launches.
+--
+-- 'stoppingCondition', 'hyperParameterTrainingJobDefinition_stoppingCondition' - Specifies a limit to how long a model hyperparameter training job can
+-- run. It also specifies how long a managed spot training job has to
+-- complete. When the job reaches the time limit, SageMaker ends the
+-- training job. Use this API to cap model training costs.
+newHyperParameterTrainingJobDefinition ::
+  -- | 'algorithmSpecification'
+  HyperParameterAlgorithmSpecification ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'outputDataConfig'
+  OutputDataConfig ->
+  -- | 'stoppingCondition'
+  StoppingCondition ->
+  HyperParameterTrainingJobDefinition
+newHyperParameterTrainingJobDefinition
+  pAlgorithmSpecification_
+  pRoleArn_
+  pOutputDataConfig_
+  pStoppingCondition_ =
+    HyperParameterTrainingJobDefinition'
+      { checkpointConfig =
+          Prelude.Nothing,
+        definitionName = Prelude.Nothing,
+        enableInterContainerTrafficEncryption =
+          Prelude.Nothing,
+        enableManagedSpotTraining =
+          Prelude.Nothing,
+        enableNetworkIsolation =
+          Prelude.Nothing,
+        hyperParameterRanges = Prelude.Nothing,
+        hyperParameterTuningResourceConfig =
+          Prelude.Nothing,
+        inputDataConfig = Prelude.Nothing,
+        resourceConfig = Prelude.Nothing,
+        retryStrategy = Prelude.Nothing,
+        staticHyperParameters =
+          Prelude.Nothing,
+        tuningObjective = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        algorithmSpecification =
+          pAlgorithmSpecification_,
+        roleArn = pRoleArn_,
+        outputDataConfig = pOutputDataConfig_,
+        stoppingCondition =
+          pStoppingCondition_
+      }
+
+-- | Undocumented member.
+hyperParameterTrainingJobDefinition_checkpointConfig :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe CheckpointConfig)
+hyperParameterTrainingJobDefinition_checkpointConfig = Lens.lens (\HyperParameterTrainingJobDefinition' {checkpointConfig} -> checkpointConfig) (\s@HyperParameterTrainingJobDefinition' {} a -> s {checkpointConfig = a} :: HyperParameterTrainingJobDefinition)
+
+-- | The job definition name.
+hyperParameterTrainingJobDefinition_definitionName :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe Prelude.Text)
+hyperParameterTrainingJobDefinition_definitionName = Lens.lens (\HyperParameterTrainingJobDefinition' {definitionName} -> definitionName) (\s@HyperParameterTrainingJobDefinition' {} a -> s {definitionName = a} :: HyperParameterTrainingJobDefinition)
+
+-- | To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithm in
+-- distributed training.
+hyperParameterTrainingJobDefinition_enableInterContainerTrafficEncryption :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe Prelude.Bool)
+hyperParameterTrainingJobDefinition_enableInterContainerTrafficEncryption = Lens.lens (\HyperParameterTrainingJobDefinition' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@HyperParameterTrainingJobDefinition' {} a -> s {enableInterContainerTrafficEncryption = a} :: HyperParameterTrainingJobDefinition)
+
+-- | A Boolean indicating whether managed spot training is enabled (@True@)
+-- or not (@False@).
+hyperParameterTrainingJobDefinition_enableManagedSpotTraining :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe Prelude.Bool)
+hyperParameterTrainingJobDefinition_enableManagedSpotTraining = Lens.lens (\HyperParameterTrainingJobDefinition' {enableManagedSpotTraining} -> enableManagedSpotTraining) (\s@HyperParameterTrainingJobDefinition' {} a -> s {enableManagedSpotTraining = a} :: HyperParameterTrainingJobDefinition)
+
+-- | Isolates the training container. No inbound or outbound network calls
+-- can be made, except for calls between peers within a training cluster
+-- for distributed training. If network isolation is used for training jobs
+-- that are configured to use a VPC, SageMaker downloads and uploads
+-- customer data and model artifacts through the specified VPC, but the
+-- training container does not have network access.
+hyperParameterTrainingJobDefinition_enableNetworkIsolation :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe Prelude.Bool)
+hyperParameterTrainingJobDefinition_enableNetworkIsolation = Lens.lens (\HyperParameterTrainingJobDefinition' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@HyperParameterTrainingJobDefinition' {} a -> s {enableNetworkIsolation = a} :: HyperParameterTrainingJobDefinition)
+
+-- | Undocumented member.
+hyperParameterTrainingJobDefinition_hyperParameterRanges :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe ParameterRanges)
+hyperParameterTrainingJobDefinition_hyperParameterRanges = Lens.lens (\HyperParameterTrainingJobDefinition' {hyperParameterRanges} -> hyperParameterRanges) (\s@HyperParameterTrainingJobDefinition' {} a -> s {hyperParameterRanges = a} :: HyperParameterTrainingJobDefinition)
+
+-- | The configuration for the hyperparameter tuning resources, including the
+-- compute instances and storage volumes, used for training jobs launched
+-- by the tuning job. By default, storage volumes hold model artifacts and
+-- incremental states. Choose @File@ for @TrainingInputMode@ in the
+-- @AlgorithmSpecification@ parameter to additionally store training data
+-- in the storage volume (optional).
+hyperParameterTrainingJobDefinition_hyperParameterTuningResourceConfig :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe HyperParameterTuningResourceConfig)
+hyperParameterTrainingJobDefinition_hyperParameterTuningResourceConfig = Lens.lens (\HyperParameterTrainingJobDefinition' {hyperParameterTuningResourceConfig} -> hyperParameterTuningResourceConfig) (\s@HyperParameterTrainingJobDefinition' {} a -> s {hyperParameterTuningResourceConfig = a} :: HyperParameterTrainingJobDefinition)
+
+-- | An array of Channel objects that specify the input for the training jobs
+-- that the tuning job launches.
+hyperParameterTrainingJobDefinition_inputDataConfig :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe (Prelude.NonEmpty Channel))
+hyperParameterTrainingJobDefinition_inputDataConfig = Lens.lens (\HyperParameterTrainingJobDefinition' {inputDataConfig} -> inputDataConfig) (\s@HyperParameterTrainingJobDefinition' {} a -> s {inputDataConfig = a} :: HyperParameterTrainingJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The resources, including the compute instances and storage volumes, to
+-- use for the training jobs that the tuning job launches.
+--
+-- Storage volumes store model artifacts and incremental states. Training
+-- algorithms might also use storage volumes for scratch space. If you want
+-- SageMaker to use the storage volume to store the training data, choose
+-- @File@ as the @TrainingInputMode@ in the algorithm specification. For
+-- distributed training algorithms, specify an instance count greater than
+-- 1.
+--
+-- If you want to use hyperparameter optimization with instance type
+-- flexibility, use @HyperParameterTuningResourceConfig@ instead.
+hyperParameterTrainingJobDefinition_resourceConfig :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe ResourceConfig)
+hyperParameterTrainingJobDefinition_resourceConfig = Lens.lens (\HyperParameterTrainingJobDefinition' {resourceConfig} -> resourceConfig) (\s@HyperParameterTrainingJobDefinition' {} a -> s {resourceConfig = a} :: HyperParameterTrainingJobDefinition)
+
+-- | The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+hyperParameterTrainingJobDefinition_retryStrategy :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe RetryStrategy)
+hyperParameterTrainingJobDefinition_retryStrategy = Lens.lens (\HyperParameterTrainingJobDefinition' {retryStrategy} -> retryStrategy) (\s@HyperParameterTrainingJobDefinition' {} a -> s {retryStrategy = a} :: HyperParameterTrainingJobDefinition)
+
+-- | Specifies the values of hyperparameters that do not change for the
+-- tuning job.
+hyperParameterTrainingJobDefinition_staticHyperParameters :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+hyperParameterTrainingJobDefinition_staticHyperParameters = Lens.lens (\HyperParameterTrainingJobDefinition' {staticHyperParameters} -> staticHyperParameters) (\s@HyperParameterTrainingJobDefinition' {} a -> s {staticHyperParameters = a} :: HyperParameterTrainingJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+hyperParameterTrainingJobDefinition_tuningObjective :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe HyperParameterTuningJobObjective)
+hyperParameterTrainingJobDefinition_tuningObjective = Lens.lens (\HyperParameterTrainingJobDefinition' {tuningObjective} -> tuningObjective) (\s@HyperParameterTrainingJobDefinition' {} a -> s {tuningObjective = a} :: HyperParameterTrainingJobDefinition)
+
+-- | The VpcConfig object that specifies the VPC that you want the training
+-- jobs that this hyperparameter tuning job launches to connect to. Control
+-- access to and from your training container by configuring the VPC. For
+-- more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+hyperParameterTrainingJobDefinition_vpcConfig :: Lens.Lens' HyperParameterTrainingJobDefinition (Prelude.Maybe VpcConfig)
+hyperParameterTrainingJobDefinition_vpcConfig = Lens.lens (\HyperParameterTrainingJobDefinition' {vpcConfig} -> vpcConfig) (\s@HyperParameterTrainingJobDefinition' {} a -> s {vpcConfig = a} :: HyperParameterTrainingJobDefinition)
+
+-- | The HyperParameterAlgorithmSpecification object that specifies the
+-- resource algorithm to use for the training jobs that the tuning job
+-- launches.
+hyperParameterTrainingJobDefinition_algorithmSpecification :: Lens.Lens' HyperParameterTrainingJobDefinition HyperParameterAlgorithmSpecification
+hyperParameterTrainingJobDefinition_algorithmSpecification = Lens.lens (\HyperParameterTrainingJobDefinition' {algorithmSpecification} -> algorithmSpecification) (\s@HyperParameterTrainingJobDefinition' {} a -> s {algorithmSpecification = a} :: HyperParameterTrainingJobDefinition)
+
+-- | The Amazon Resource Name (ARN) of the IAM role associated with the
+-- training jobs that the tuning job launches.
+hyperParameterTrainingJobDefinition_roleArn :: Lens.Lens' HyperParameterTrainingJobDefinition Prelude.Text
+hyperParameterTrainingJobDefinition_roleArn = Lens.lens (\HyperParameterTrainingJobDefinition' {roleArn} -> roleArn) (\s@HyperParameterTrainingJobDefinition' {} a -> s {roleArn = a} :: HyperParameterTrainingJobDefinition)
+
+-- | Specifies the path to the Amazon S3 bucket where you store model
+-- artifacts from the training jobs that the tuning job launches.
+hyperParameterTrainingJobDefinition_outputDataConfig :: Lens.Lens' HyperParameterTrainingJobDefinition OutputDataConfig
+hyperParameterTrainingJobDefinition_outputDataConfig = Lens.lens (\HyperParameterTrainingJobDefinition' {outputDataConfig} -> outputDataConfig) (\s@HyperParameterTrainingJobDefinition' {} a -> s {outputDataConfig = a} :: HyperParameterTrainingJobDefinition)
+
+-- | Specifies a limit to how long a model hyperparameter training job can
+-- run. It also specifies how long a managed spot training job has to
+-- complete. When the job reaches the time limit, SageMaker ends the
+-- training job. Use this API to cap model training costs.
+hyperParameterTrainingJobDefinition_stoppingCondition :: Lens.Lens' HyperParameterTrainingJobDefinition StoppingCondition
+hyperParameterTrainingJobDefinition_stoppingCondition = Lens.lens (\HyperParameterTrainingJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@HyperParameterTrainingJobDefinition' {} a -> s {stoppingCondition = a} :: HyperParameterTrainingJobDefinition)
+
+instance
+  Data.FromJSON
+    HyperParameterTrainingJobDefinition
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTrainingJobDefinition"
+      ( \x ->
+          HyperParameterTrainingJobDefinition'
+            Prelude.<$> (x Data..:? "CheckpointConfig")
+            Prelude.<*> (x Data..:? "DefinitionName")
+            Prelude.<*> (x Data..:? "EnableInterContainerTrafficEncryption")
+            Prelude.<*> (x Data..:? "EnableManagedSpotTraining")
+            Prelude.<*> (x Data..:? "EnableNetworkIsolation")
+            Prelude.<*> (x Data..:? "HyperParameterRanges")
+            Prelude.<*> (x Data..:? "HyperParameterTuningResourceConfig")
+            Prelude.<*> (x Data..:? "InputDataConfig")
+            Prelude.<*> (x Data..:? "ResourceConfig")
+            Prelude.<*> (x Data..:? "RetryStrategy")
+            Prelude.<*> ( x
+                            Data..:? "StaticHyperParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "TuningObjective")
+            Prelude.<*> (x Data..:? "VpcConfig")
+            Prelude.<*> (x Data..: "AlgorithmSpecification")
+            Prelude.<*> (x Data..: "RoleArn")
+            Prelude.<*> (x Data..: "OutputDataConfig")
+            Prelude.<*> (x Data..: "StoppingCondition")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTrainingJobDefinition
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTrainingJobDefinition' {..} =
+      _salt
+        `Prelude.hashWithSalt` checkpointConfig
+        `Prelude.hashWithSalt` definitionName
+        `Prelude.hashWithSalt` enableInterContainerTrafficEncryption
+        `Prelude.hashWithSalt` enableManagedSpotTraining
+        `Prelude.hashWithSalt` enableNetworkIsolation
+        `Prelude.hashWithSalt` hyperParameterRanges
+        `Prelude.hashWithSalt` hyperParameterTuningResourceConfig
+        `Prelude.hashWithSalt` inputDataConfig
+        `Prelude.hashWithSalt` resourceConfig
+        `Prelude.hashWithSalt` retryStrategy
+        `Prelude.hashWithSalt` staticHyperParameters
+        `Prelude.hashWithSalt` tuningObjective
+        `Prelude.hashWithSalt` vpcConfig
+        `Prelude.hashWithSalt` algorithmSpecification
+        `Prelude.hashWithSalt` roleArn
+        `Prelude.hashWithSalt` outputDataConfig
+        `Prelude.hashWithSalt` stoppingCondition
+
+instance
+  Prelude.NFData
+    HyperParameterTrainingJobDefinition
+  where
+  rnf HyperParameterTrainingJobDefinition' {..} =
+    Prelude.rnf checkpointConfig
+      `Prelude.seq` Prelude.rnf definitionName
+      `Prelude.seq` Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf enableManagedSpotTraining
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf hyperParameterRanges
+      `Prelude.seq` Prelude.rnf hyperParameterTuningResourceConfig
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf retryStrategy
+      `Prelude.seq` Prelude.rnf staticHyperParameters
+      `Prelude.seq` Prelude.rnf tuningObjective
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf algorithmSpecification
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+
+instance
+  Data.ToJSON
+    HyperParameterTrainingJobDefinition
+  where
+  toJSON HyperParameterTrainingJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CheckpointConfig" Data..=)
+              Prelude.<$> checkpointConfig,
+            ("DefinitionName" Data..=)
+              Prelude.<$> definitionName,
+            ("EnableInterContainerTrafficEncryption" Data..=)
+              Prelude.<$> enableInterContainerTrafficEncryption,
+            ("EnableManagedSpotTraining" Data..=)
+              Prelude.<$> enableManagedSpotTraining,
+            ("EnableNetworkIsolation" Data..=)
+              Prelude.<$> enableNetworkIsolation,
+            ("HyperParameterRanges" Data..=)
+              Prelude.<$> hyperParameterRanges,
+            ("HyperParameterTuningResourceConfig" Data..=)
+              Prelude.<$> hyperParameterTuningResourceConfig,
+            ("InputDataConfig" Data..=)
+              Prelude.<$> inputDataConfig,
+            ("ResourceConfig" Data..=)
+              Prelude.<$> resourceConfig,
+            ("RetryStrategy" Data..=) Prelude.<$> retryStrategy,
+            ("StaticHyperParameters" Data..=)
+              Prelude.<$> staticHyperParameters,
+            ("TuningObjective" Data..=)
+              Prelude.<$> tuningObjective,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig,
+            Prelude.Just
+              ( "AlgorithmSpecification"
+                  Data..= algorithmSpecification
+              ),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just
+              ("OutputDataConfig" Data..= outputDataConfig),
+            Prelude.Just
+              ("StoppingCondition" Data..= stoppingCondition)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTrainingJobSummary.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTrainingJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTrainingJobSummary.hs
@@ -0,0 +1,294 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTrainingJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTrainingJobSummary 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 Amazonka.SageMaker.Types.FinalHyperParameterTuningJobObjectiveMetric
+import Amazonka.SageMaker.Types.ObjectiveStatus
+import Amazonka.SageMaker.Types.TrainingJobStatus
+
+-- | The container for the summary information about a training job.
+--
+-- /See:/ 'newHyperParameterTrainingJobSummary' smart constructor.
+data HyperParameterTrainingJobSummary = HyperParameterTrainingJobSummary'
+  { -- | The reason that the training job failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The FinalHyperParameterTuningJobObjectiveMetric object that specifies
+    -- the value of the objective metric of the tuning job that launched this
+    -- training job.
+    finalHyperParameterTuningJobObjectiveMetric :: Prelude.Maybe FinalHyperParameterTuningJobObjectiveMetric,
+    -- | The status of the objective metric for the training job:
+    --
+    -- -   Succeeded: The final objective metric for the training job was
+    --     evaluated by the hyperparameter tuning job and used in the
+    --     hyperparameter tuning process.
+    --
+    -- -   Pending: The training job is in progress and evaluation of its final
+    --     objective metric is pending.
+    --
+    -- -   Failed: The final objective metric for the training job was not
+    --     evaluated, and was not used in the hyperparameter tuning process.
+    --     This typically occurs when the training job failed or did not emit
+    --     an objective metric.
+    objectiveStatus :: Prelude.Maybe ObjectiveStatus,
+    -- | Specifies the time when the training job ends on training instances. You
+    -- are billed for the time interval between the value of
+    -- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+    -- this is the time after model artifacts are uploaded. For failed jobs,
+    -- this is the time when SageMaker detects a job failure.
+    trainingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The training job definition name.
+    trainingJobDefinitionName :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the training job started.
+    trainingStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The HyperParameter tuning job that launched the training job.
+    tuningJobName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the training job.
+    trainingJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the training job.
+    trainingJobArn :: Prelude.Text,
+    -- | The date and time that the training job was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the training job.
+    trainingJobStatus :: TrainingJobStatus,
+    -- | A list of the hyperparameters for which you specified ranges to search.
+    tunedHyperParameters :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTrainingJobSummary' 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:
+--
+-- 'failureReason', 'hyperParameterTrainingJobSummary_failureReason' - The reason that the training job failed.
+--
+-- 'finalHyperParameterTuningJobObjectiveMetric', 'hyperParameterTrainingJobSummary_finalHyperParameterTuningJobObjectiveMetric' - The FinalHyperParameterTuningJobObjectiveMetric object that specifies
+-- the value of the objective metric of the tuning job that launched this
+-- training job.
+--
+-- 'objectiveStatus', 'hyperParameterTrainingJobSummary_objectiveStatus' - The status of the objective metric for the training job:
+--
+-- -   Succeeded: The final objective metric for the training job was
+--     evaluated by the hyperparameter tuning job and used in the
+--     hyperparameter tuning process.
+--
+-- -   Pending: The training job is in progress and evaluation of its final
+--     objective metric is pending.
+--
+-- -   Failed: The final objective metric for the training job was not
+--     evaluated, and was not used in the hyperparameter tuning process.
+--     This typically occurs when the training job failed or did not emit
+--     an objective metric.
+--
+-- 'trainingEndTime', 'hyperParameterTrainingJobSummary_trainingEndTime' - Specifies the time when the training job ends on training instances. You
+-- are billed for the time interval between the value of
+-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+-- this is the time after model artifacts are uploaded. For failed jobs,
+-- this is the time when SageMaker detects a job failure.
+--
+-- 'trainingJobDefinitionName', 'hyperParameterTrainingJobSummary_trainingJobDefinitionName' - The training job definition name.
+--
+-- 'trainingStartTime', 'hyperParameterTrainingJobSummary_trainingStartTime' - The date and time that the training job started.
+--
+-- 'tuningJobName', 'hyperParameterTrainingJobSummary_tuningJobName' - The HyperParameter tuning job that launched the training job.
+--
+-- 'trainingJobName', 'hyperParameterTrainingJobSummary_trainingJobName' - The name of the training job.
+--
+-- 'trainingJobArn', 'hyperParameterTrainingJobSummary_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
+--
+-- 'creationTime', 'hyperParameterTrainingJobSummary_creationTime' - The date and time that the training job was created.
+--
+-- 'trainingJobStatus', 'hyperParameterTrainingJobSummary_trainingJobStatus' - The status of the training job.
+--
+-- 'tunedHyperParameters', 'hyperParameterTrainingJobSummary_tunedHyperParameters' - A list of the hyperparameters for which you specified ranges to search.
+newHyperParameterTrainingJobSummary ::
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  -- | 'trainingJobArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'trainingJobStatus'
+  TrainingJobStatus ->
+  HyperParameterTrainingJobSummary
+newHyperParameterTrainingJobSummary
+  pTrainingJobName_
+  pTrainingJobArn_
+  pCreationTime_
+  pTrainingJobStatus_ =
+    HyperParameterTrainingJobSummary'
+      { failureReason =
+          Prelude.Nothing,
+        finalHyperParameterTuningJobObjectiveMetric =
+          Prelude.Nothing,
+        objectiveStatus = Prelude.Nothing,
+        trainingEndTime = Prelude.Nothing,
+        trainingJobDefinitionName =
+          Prelude.Nothing,
+        trainingStartTime = Prelude.Nothing,
+        tuningJobName = Prelude.Nothing,
+        trainingJobName = pTrainingJobName_,
+        trainingJobArn = pTrainingJobArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        trainingJobStatus = pTrainingJobStatus_,
+        tunedHyperParameters = Prelude.mempty
+      }
+
+-- | The reason that the training job failed.
+hyperParameterTrainingJobSummary_failureReason :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe Prelude.Text)
+hyperParameterTrainingJobSummary_failureReason = Lens.lens (\HyperParameterTrainingJobSummary' {failureReason} -> failureReason) (\s@HyperParameterTrainingJobSummary' {} a -> s {failureReason = a} :: HyperParameterTrainingJobSummary)
+
+-- | The FinalHyperParameterTuningJobObjectiveMetric object that specifies
+-- the value of the objective metric of the tuning job that launched this
+-- training job.
+hyperParameterTrainingJobSummary_finalHyperParameterTuningJobObjectiveMetric :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe FinalHyperParameterTuningJobObjectiveMetric)
+hyperParameterTrainingJobSummary_finalHyperParameterTuningJobObjectiveMetric = Lens.lens (\HyperParameterTrainingJobSummary' {finalHyperParameterTuningJobObjectiveMetric} -> finalHyperParameterTuningJobObjectiveMetric) (\s@HyperParameterTrainingJobSummary' {} a -> s {finalHyperParameterTuningJobObjectiveMetric = a} :: HyperParameterTrainingJobSummary)
+
+-- | The status of the objective metric for the training job:
+--
+-- -   Succeeded: The final objective metric for the training job was
+--     evaluated by the hyperparameter tuning job and used in the
+--     hyperparameter tuning process.
+--
+-- -   Pending: The training job is in progress and evaluation of its final
+--     objective metric is pending.
+--
+-- -   Failed: The final objective metric for the training job was not
+--     evaluated, and was not used in the hyperparameter tuning process.
+--     This typically occurs when the training job failed or did not emit
+--     an objective metric.
+hyperParameterTrainingJobSummary_objectiveStatus :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe ObjectiveStatus)
+hyperParameterTrainingJobSummary_objectiveStatus = Lens.lens (\HyperParameterTrainingJobSummary' {objectiveStatus} -> objectiveStatus) (\s@HyperParameterTrainingJobSummary' {} a -> s {objectiveStatus = a} :: HyperParameterTrainingJobSummary)
+
+-- | Specifies the time when the training job ends on training instances. You
+-- are billed for the time interval between the value of
+-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+-- this is the time after model artifacts are uploaded. For failed jobs,
+-- this is the time when SageMaker detects a job failure.
+hyperParameterTrainingJobSummary_trainingEndTime :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTrainingJobSummary_trainingEndTime = Lens.lens (\HyperParameterTrainingJobSummary' {trainingEndTime} -> trainingEndTime) (\s@HyperParameterTrainingJobSummary' {} a -> s {trainingEndTime = a} :: HyperParameterTrainingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The training job definition name.
+hyperParameterTrainingJobSummary_trainingJobDefinitionName :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe Prelude.Text)
+hyperParameterTrainingJobSummary_trainingJobDefinitionName = Lens.lens (\HyperParameterTrainingJobSummary' {trainingJobDefinitionName} -> trainingJobDefinitionName) (\s@HyperParameterTrainingJobSummary' {} a -> s {trainingJobDefinitionName = a} :: HyperParameterTrainingJobSummary)
+
+-- | The date and time that the training job started.
+hyperParameterTrainingJobSummary_trainingStartTime :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTrainingJobSummary_trainingStartTime = Lens.lens (\HyperParameterTrainingJobSummary' {trainingStartTime} -> trainingStartTime) (\s@HyperParameterTrainingJobSummary' {} a -> s {trainingStartTime = a} :: HyperParameterTrainingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The HyperParameter tuning job that launched the training job.
+hyperParameterTrainingJobSummary_tuningJobName :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.Maybe Prelude.Text)
+hyperParameterTrainingJobSummary_tuningJobName = Lens.lens (\HyperParameterTrainingJobSummary' {tuningJobName} -> tuningJobName) (\s@HyperParameterTrainingJobSummary' {} a -> s {tuningJobName = a} :: HyperParameterTrainingJobSummary)
+
+-- | The name of the training job.
+hyperParameterTrainingJobSummary_trainingJobName :: Lens.Lens' HyperParameterTrainingJobSummary Prelude.Text
+hyperParameterTrainingJobSummary_trainingJobName = Lens.lens (\HyperParameterTrainingJobSummary' {trainingJobName} -> trainingJobName) (\s@HyperParameterTrainingJobSummary' {} a -> s {trainingJobName = a} :: HyperParameterTrainingJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the training job.
+hyperParameterTrainingJobSummary_trainingJobArn :: Lens.Lens' HyperParameterTrainingJobSummary Prelude.Text
+hyperParameterTrainingJobSummary_trainingJobArn = Lens.lens (\HyperParameterTrainingJobSummary' {trainingJobArn} -> trainingJobArn) (\s@HyperParameterTrainingJobSummary' {} a -> s {trainingJobArn = a} :: HyperParameterTrainingJobSummary)
+
+-- | The date and time that the training job was created.
+hyperParameterTrainingJobSummary_creationTime :: Lens.Lens' HyperParameterTrainingJobSummary Prelude.UTCTime
+hyperParameterTrainingJobSummary_creationTime = Lens.lens (\HyperParameterTrainingJobSummary' {creationTime} -> creationTime) (\s@HyperParameterTrainingJobSummary' {} a -> s {creationTime = a} :: HyperParameterTrainingJobSummary) Prelude.. Data._Time
+
+-- | The status of the training job.
+hyperParameterTrainingJobSummary_trainingJobStatus :: Lens.Lens' HyperParameterTrainingJobSummary TrainingJobStatus
+hyperParameterTrainingJobSummary_trainingJobStatus = Lens.lens (\HyperParameterTrainingJobSummary' {trainingJobStatus} -> trainingJobStatus) (\s@HyperParameterTrainingJobSummary' {} a -> s {trainingJobStatus = a} :: HyperParameterTrainingJobSummary)
+
+-- | A list of the hyperparameters for which you specified ranges to search.
+hyperParameterTrainingJobSummary_tunedHyperParameters :: Lens.Lens' HyperParameterTrainingJobSummary (Prelude.HashMap Prelude.Text Prelude.Text)
+hyperParameterTrainingJobSummary_tunedHyperParameters = Lens.lens (\HyperParameterTrainingJobSummary' {tunedHyperParameters} -> tunedHyperParameters) (\s@HyperParameterTrainingJobSummary' {} a -> s {tunedHyperParameters = a} :: HyperParameterTrainingJobSummary) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    HyperParameterTrainingJobSummary
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTrainingJobSummary"
+      ( \x ->
+          HyperParameterTrainingJobSummary'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> ( x
+                            Data..:? "FinalHyperParameterTuningJobObjectiveMetric"
+                        )
+            Prelude.<*> (x Data..:? "ObjectiveStatus")
+            Prelude.<*> (x Data..:? "TrainingEndTime")
+            Prelude.<*> (x Data..:? "TrainingJobDefinitionName")
+            Prelude.<*> (x Data..:? "TrainingStartTime")
+            Prelude.<*> (x Data..:? "TuningJobName")
+            Prelude.<*> (x Data..: "TrainingJobName")
+            Prelude.<*> (x Data..: "TrainingJobArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "TrainingJobStatus")
+            Prelude.<*> ( x
+                            Data..:? "TunedHyperParameters"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTrainingJobSummary
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTrainingJobSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` failureReason
+        `Prelude.hashWithSalt` finalHyperParameterTuningJobObjectiveMetric
+        `Prelude.hashWithSalt` objectiveStatus
+        `Prelude.hashWithSalt` trainingEndTime
+        `Prelude.hashWithSalt` trainingJobDefinitionName
+        `Prelude.hashWithSalt` trainingStartTime
+        `Prelude.hashWithSalt` tuningJobName
+        `Prelude.hashWithSalt` trainingJobName
+        `Prelude.hashWithSalt` trainingJobArn
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` trainingJobStatus
+        `Prelude.hashWithSalt` tunedHyperParameters
+
+instance
+  Prelude.NFData
+    HyperParameterTrainingJobSummary
+  where
+  rnf HyperParameterTrainingJobSummary' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf
+        finalHyperParameterTuningJobObjectiveMetric
+      `Prelude.seq` Prelude.rnf objectiveStatus
+      `Prelude.seq` Prelude.rnf trainingEndTime
+      `Prelude.seq` Prelude.rnf trainingJobDefinitionName
+      `Prelude.seq` Prelude.rnf trainingStartTime
+      `Prelude.seq` Prelude.rnf tuningJobName
+      `Prelude.seq` Prelude.rnf trainingJobName
+      `Prelude.seq` Prelude.rnf trainingJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf trainingJobStatus
+      `Prelude.seq` Prelude.rnf tunedHyperParameters
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningAllocationStrategy.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningAllocationStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningAllocationStrategy.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterTuningAllocationStrategy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningAllocationStrategy
+  ( HyperParameterTuningAllocationStrategy
+      ( ..,
+        HyperParameterTuningAllocationStrategy_Prioritized
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HyperParameterTuningAllocationStrategy = HyperParameterTuningAllocationStrategy'
+  { fromHyperParameterTuningAllocationStrategy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterTuningAllocationStrategy_Prioritized :: HyperParameterTuningAllocationStrategy
+pattern HyperParameterTuningAllocationStrategy_Prioritized = HyperParameterTuningAllocationStrategy' "Prioritized"
+
+{-# COMPLETE
+  HyperParameterTuningAllocationStrategy_Prioritized,
+  HyperParameterTuningAllocationStrategy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningInstanceConfig.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningInstanceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningInstanceConfig.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningInstanceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningInstanceConfig 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 Amazonka.SageMaker.Types.TrainingInstanceType
+
+-- | The configuration for hyperparameter tuning resources for use in
+-- training jobs launched by the tuning job. These resources include
+-- compute instances and storage volumes. Specify one or more compute
+-- instance configurations and allocation strategies to select resources
+-- (optional).
+--
+-- /See:/ 'newHyperParameterTuningInstanceConfig' smart constructor.
+data HyperParameterTuningInstanceConfig = HyperParameterTuningInstanceConfig'
+  { -- | The instance type used for processing of hyperparameter optimization
+    -- jobs. Choose from general purpose (no GPUs) instance types:
+    -- ml.m5.xlarge, ml.m5.2xlarge, and ml.m5.4xlarge or compute optimized (no
+    -- GPUs) instance types: ml.c5.xlarge and ml.c5.2xlarge. For more
+    -- information about instance types, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-available-instance-types.html instance type descriptions>.
+    instanceType :: TrainingInstanceType,
+    -- | The number of instances of the type specified by @InstanceType@. Choose
+    -- an instance count larger than 1 for distributed training algorithms. See
+    -- <https://docs.aws.amazon.com/data-parallel-use-api.html SageMaker distributed training jobs>
+    -- for more informcration.
+    instanceCount :: Prelude.Natural,
+    -- | The volume size in GB of the data to be processed for hyperparameter
+    -- optimization (optional).
+    volumeSizeInGB :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningInstanceConfig' 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:
+--
+-- 'instanceType', 'hyperParameterTuningInstanceConfig_instanceType' - The instance type used for processing of hyperparameter optimization
+-- jobs. Choose from general purpose (no GPUs) instance types:
+-- ml.m5.xlarge, ml.m5.2xlarge, and ml.m5.4xlarge or compute optimized (no
+-- GPUs) instance types: ml.c5.xlarge and ml.c5.2xlarge. For more
+-- information about instance types, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-available-instance-types.html instance type descriptions>.
+--
+-- 'instanceCount', 'hyperParameterTuningInstanceConfig_instanceCount' - The number of instances of the type specified by @InstanceType@. Choose
+-- an instance count larger than 1 for distributed training algorithms. See
+-- <https://docs.aws.amazon.com/data-parallel-use-api.html SageMaker distributed training jobs>
+-- for more informcration.
+--
+-- 'volumeSizeInGB', 'hyperParameterTuningInstanceConfig_volumeSizeInGB' - The volume size in GB of the data to be processed for hyperparameter
+-- optimization (optional).
+newHyperParameterTuningInstanceConfig ::
+  -- | 'instanceType'
+  TrainingInstanceType ->
+  -- | 'instanceCount'
+  Prelude.Natural ->
+  -- | 'volumeSizeInGB'
+  Prelude.Natural ->
+  HyperParameterTuningInstanceConfig
+newHyperParameterTuningInstanceConfig
+  pInstanceType_
+  pInstanceCount_
+  pVolumeSizeInGB_ =
+    HyperParameterTuningInstanceConfig'
+      { instanceType =
+          pInstanceType_,
+        instanceCount = pInstanceCount_,
+        volumeSizeInGB = pVolumeSizeInGB_
+      }
+
+-- | The instance type used for processing of hyperparameter optimization
+-- jobs. Choose from general purpose (no GPUs) instance types:
+-- ml.m5.xlarge, ml.m5.2xlarge, and ml.m5.4xlarge or compute optimized (no
+-- GPUs) instance types: ml.c5.xlarge and ml.c5.2xlarge. For more
+-- information about instance types, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-available-instance-types.html instance type descriptions>.
+hyperParameterTuningInstanceConfig_instanceType :: Lens.Lens' HyperParameterTuningInstanceConfig TrainingInstanceType
+hyperParameterTuningInstanceConfig_instanceType = Lens.lens (\HyperParameterTuningInstanceConfig' {instanceType} -> instanceType) (\s@HyperParameterTuningInstanceConfig' {} a -> s {instanceType = a} :: HyperParameterTuningInstanceConfig)
+
+-- | The number of instances of the type specified by @InstanceType@. Choose
+-- an instance count larger than 1 for distributed training algorithms. See
+-- <https://docs.aws.amazon.com/data-parallel-use-api.html SageMaker distributed training jobs>
+-- for more informcration.
+hyperParameterTuningInstanceConfig_instanceCount :: Lens.Lens' HyperParameterTuningInstanceConfig Prelude.Natural
+hyperParameterTuningInstanceConfig_instanceCount = Lens.lens (\HyperParameterTuningInstanceConfig' {instanceCount} -> instanceCount) (\s@HyperParameterTuningInstanceConfig' {} a -> s {instanceCount = a} :: HyperParameterTuningInstanceConfig)
+
+-- | The volume size in GB of the data to be processed for hyperparameter
+-- optimization (optional).
+hyperParameterTuningInstanceConfig_volumeSizeInGB :: Lens.Lens' HyperParameterTuningInstanceConfig Prelude.Natural
+hyperParameterTuningInstanceConfig_volumeSizeInGB = Lens.lens (\HyperParameterTuningInstanceConfig' {volumeSizeInGB} -> volumeSizeInGB) (\s@HyperParameterTuningInstanceConfig' {} a -> s {volumeSizeInGB = a} :: HyperParameterTuningInstanceConfig)
+
+instance
+  Data.FromJSON
+    HyperParameterTuningInstanceConfig
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningInstanceConfig"
+      ( \x ->
+          HyperParameterTuningInstanceConfig'
+            Prelude.<$> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "InstanceCount")
+            Prelude.<*> (x Data..: "VolumeSizeInGB")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningInstanceConfig
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningInstanceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` instanceType
+        `Prelude.hashWithSalt` instanceCount
+        `Prelude.hashWithSalt` volumeSizeInGB
+
+instance
+  Prelude.NFData
+    HyperParameterTuningInstanceConfig
+  where
+  rnf HyperParameterTuningInstanceConfig' {..} =
+    Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+
+instance
+  Data.ToJSON
+    HyperParameterTuningInstanceConfig
+  where
+  toJSON HyperParameterTuningInstanceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just ("InstanceCount" Data..= instanceCount),
+            Prelude.Just
+              ("VolumeSizeInGB" Data..= volumeSizeInGB)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobConfig.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobConfig.hs
@@ -0,0 +1,283 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningJobConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobConfig 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 Amazonka.SageMaker.Types.HyperParameterTuningJobObjective
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
+import Amazonka.SageMaker.Types.ParameterRanges
+import Amazonka.SageMaker.Types.ResourceLimits
+import Amazonka.SageMaker.Types.TrainingJobEarlyStoppingType
+import Amazonka.SageMaker.Types.TuningJobCompletionCriteria
+
+-- | Configures a hyperparameter tuning job.
+--
+-- /See:/ 'newHyperParameterTuningJobConfig' smart constructor.
+data HyperParameterTuningJobConfig = HyperParameterTuningJobConfig'
+  { -- | The HyperParameterTuningJobObjective specifies the objective metric used
+    -- to evaluate the performance of training jobs launched by this tuning
+    -- job.
+    hyperParameterTuningJobObjective :: Prelude.Maybe HyperParameterTuningJobObjective,
+    -- | The ParameterRanges object that specifies the ranges of hyperparameters
+    -- that this tuning job searches over to find the optimal configuration for
+    -- the highest model performance against your chosen objective metric.
+    parameterRanges :: Prelude.Maybe ParameterRanges,
+    -- | A value used to initialize a pseudo-random number generator. Setting a
+    -- random seed and using the same seed later for the same tuning job will
+    -- allow hyperparameter optimization to find more a consistent
+    -- hyperparameter configuration between the two runs.
+    randomSeed :: Prelude.Maybe Prelude.Natural,
+    -- | The configuration for the @Hyperband@ optimization strategy. This
+    -- parameter should be provided only if @Hyperband@ is selected as the
+    -- strategy for @HyperParameterTuningJobConfig@.
+    strategyConfig :: Prelude.Maybe HyperParameterTuningJobStrategyConfig,
+    -- | Specifies whether to use early stopping for training jobs launched by
+    -- the hyperparameter tuning job. Because the @Hyperband@ strategy has its
+    -- own advanced internal early stopping mechanism,
+    -- @TrainingJobEarlyStoppingType@ must be @OFF@ to use @Hyperband@. This
+    -- parameter can take on one of the following values (the default value is
+    -- @OFF@):
+    --
+    -- [OFF]
+    --     Training jobs launched by the hyperparameter tuning job do not use
+    --     early stopping.
+    --
+    -- [AUTO]
+    --     SageMaker stops training jobs launched by the hyperparameter tuning
+    --     job when they are unlikely to perform better than previously
+    --     completed training jobs. For more information, see
+    --     <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html Stop Training Jobs Early>.
+    trainingJobEarlyStoppingType :: Prelude.Maybe TrainingJobEarlyStoppingType,
+    -- | The tuning job\'s completion criteria.
+    tuningJobCompletionCriteria :: Prelude.Maybe TuningJobCompletionCriteria,
+    -- | Specifies how hyperparameter tuning chooses the combinations of
+    -- hyperparameter values to use for the training job it launches. For
+    -- information about search strategies, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+    strategy :: HyperParameterTuningJobStrategyType,
+    -- | The ResourceLimits object that specifies the maximum number of training
+    -- and parallel training jobs that can be used for this hyperparameter
+    -- tuning job.
+    resourceLimits :: ResourceLimits
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningJobConfig' 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:
+--
+-- 'hyperParameterTuningJobObjective', 'hyperParameterTuningJobConfig_hyperParameterTuningJobObjective' - The HyperParameterTuningJobObjective specifies the objective metric used
+-- to evaluate the performance of training jobs launched by this tuning
+-- job.
+--
+-- 'parameterRanges', 'hyperParameterTuningJobConfig_parameterRanges' - The ParameterRanges object that specifies the ranges of hyperparameters
+-- that this tuning job searches over to find the optimal configuration for
+-- the highest model performance against your chosen objective metric.
+--
+-- 'randomSeed', 'hyperParameterTuningJobConfig_randomSeed' - A value used to initialize a pseudo-random number generator. Setting a
+-- random seed and using the same seed later for the same tuning job will
+-- allow hyperparameter optimization to find more a consistent
+-- hyperparameter configuration between the two runs.
+--
+-- 'strategyConfig', 'hyperParameterTuningJobConfig_strategyConfig' - The configuration for the @Hyperband@ optimization strategy. This
+-- parameter should be provided only if @Hyperband@ is selected as the
+-- strategy for @HyperParameterTuningJobConfig@.
+--
+-- 'trainingJobEarlyStoppingType', 'hyperParameterTuningJobConfig_trainingJobEarlyStoppingType' - Specifies whether to use early stopping for training jobs launched by
+-- the hyperparameter tuning job. Because the @Hyperband@ strategy has its
+-- own advanced internal early stopping mechanism,
+-- @TrainingJobEarlyStoppingType@ must be @OFF@ to use @Hyperband@. This
+-- parameter can take on one of the following values (the default value is
+-- @OFF@):
+--
+-- [OFF]
+--     Training jobs launched by the hyperparameter tuning job do not use
+--     early stopping.
+--
+-- [AUTO]
+--     SageMaker stops training jobs launched by the hyperparameter tuning
+--     job when they are unlikely to perform better than previously
+--     completed training jobs. For more information, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html Stop Training Jobs Early>.
+--
+-- 'tuningJobCompletionCriteria', 'hyperParameterTuningJobConfig_tuningJobCompletionCriteria' - The tuning job\'s completion criteria.
+--
+-- 'strategy', 'hyperParameterTuningJobConfig_strategy' - Specifies how hyperparameter tuning chooses the combinations of
+-- hyperparameter values to use for the training job it launches. For
+-- information about search strategies, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+--
+-- 'resourceLimits', 'hyperParameterTuningJobConfig_resourceLimits' - The ResourceLimits object that specifies the maximum number of training
+-- and parallel training jobs that can be used for this hyperparameter
+-- tuning job.
+newHyperParameterTuningJobConfig ::
+  -- | 'strategy'
+  HyperParameterTuningJobStrategyType ->
+  -- | 'resourceLimits'
+  ResourceLimits ->
+  HyperParameterTuningJobConfig
+newHyperParameterTuningJobConfig
+  pStrategy_
+  pResourceLimits_ =
+    HyperParameterTuningJobConfig'
+      { hyperParameterTuningJobObjective =
+          Prelude.Nothing,
+        parameterRanges = Prelude.Nothing,
+        randomSeed = Prelude.Nothing,
+        strategyConfig = Prelude.Nothing,
+        trainingJobEarlyStoppingType =
+          Prelude.Nothing,
+        tuningJobCompletionCriteria =
+          Prelude.Nothing,
+        strategy = pStrategy_,
+        resourceLimits = pResourceLimits_
+      }
+
+-- | The HyperParameterTuningJobObjective specifies the objective metric used
+-- to evaluate the performance of training jobs launched by this tuning
+-- job.
+hyperParameterTuningJobConfig_hyperParameterTuningJobObjective :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe HyperParameterTuningJobObjective)
+hyperParameterTuningJobConfig_hyperParameterTuningJobObjective = Lens.lens (\HyperParameterTuningJobConfig' {hyperParameterTuningJobObjective} -> hyperParameterTuningJobObjective) (\s@HyperParameterTuningJobConfig' {} a -> s {hyperParameterTuningJobObjective = a} :: HyperParameterTuningJobConfig)
+
+-- | The ParameterRanges object that specifies the ranges of hyperparameters
+-- that this tuning job searches over to find the optimal configuration for
+-- the highest model performance against your chosen objective metric.
+hyperParameterTuningJobConfig_parameterRanges :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe ParameterRanges)
+hyperParameterTuningJobConfig_parameterRanges = Lens.lens (\HyperParameterTuningJobConfig' {parameterRanges} -> parameterRanges) (\s@HyperParameterTuningJobConfig' {} a -> s {parameterRanges = a} :: HyperParameterTuningJobConfig)
+
+-- | A value used to initialize a pseudo-random number generator. Setting a
+-- random seed and using the same seed later for the same tuning job will
+-- allow hyperparameter optimization to find more a consistent
+-- hyperparameter configuration between the two runs.
+hyperParameterTuningJobConfig_randomSeed :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe Prelude.Natural)
+hyperParameterTuningJobConfig_randomSeed = Lens.lens (\HyperParameterTuningJobConfig' {randomSeed} -> randomSeed) (\s@HyperParameterTuningJobConfig' {} a -> s {randomSeed = a} :: HyperParameterTuningJobConfig)
+
+-- | The configuration for the @Hyperband@ optimization strategy. This
+-- parameter should be provided only if @Hyperband@ is selected as the
+-- strategy for @HyperParameterTuningJobConfig@.
+hyperParameterTuningJobConfig_strategyConfig :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe HyperParameterTuningJobStrategyConfig)
+hyperParameterTuningJobConfig_strategyConfig = Lens.lens (\HyperParameterTuningJobConfig' {strategyConfig} -> strategyConfig) (\s@HyperParameterTuningJobConfig' {} a -> s {strategyConfig = a} :: HyperParameterTuningJobConfig)
+
+-- | Specifies whether to use early stopping for training jobs launched by
+-- the hyperparameter tuning job. Because the @Hyperband@ strategy has its
+-- own advanced internal early stopping mechanism,
+-- @TrainingJobEarlyStoppingType@ must be @OFF@ to use @Hyperband@. This
+-- parameter can take on one of the following values (the default value is
+-- @OFF@):
+--
+-- [OFF]
+--     Training jobs launched by the hyperparameter tuning job do not use
+--     early stopping.
+--
+-- [AUTO]
+--     SageMaker stops training jobs launched by the hyperparameter tuning
+--     job when they are unlikely to perform better than previously
+--     completed training jobs. For more information, see
+--     <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html Stop Training Jobs Early>.
+hyperParameterTuningJobConfig_trainingJobEarlyStoppingType :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe TrainingJobEarlyStoppingType)
+hyperParameterTuningJobConfig_trainingJobEarlyStoppingType = Lens.lens (\HyperParameterTuningJobConfig' {trainingJobEarlyStoppingType} -> trainingJobEarlyStoppingType) (\s@HyperParameterTuningJobConfig' {} a -> s {trainingJobEarlyStoppingType = a} :: HyperParameterTuningJobConfig)
+
+-- | The tuning job\'s completion criteria.
+hyperParameterTuningJobConfig_tuningJobCompletionCriteria :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe TuningJobCompletionCriteria)
+hyperParameterTuningJobConfig_tuningJobCompletionCriteria = Lens.lens (\HyperParameterTuningJobConfig' {tuningJobCompletionCriteria} -> tuningJobCompletionCriteria) (\s@HyperParameterTuningJobConfig' {} a -> s {tuningJobCompletionCriteria = a} :: HyperParameterTuningJobConfig)
+
+-- | Specifies how hyperparameter tuning chooses the combinations of
+-- hyperparameter values to use for the training job it launches. For
+-- information about search strategies, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+hyperParameterTuningJobConfig_strategy :: Lens.Lens' HyperParameterTuningJobConfig HyperParameterTuningJobStrategyType
+hyperParameterTuningJobConfig_strategy = Lens.lens (\HyperParameterTuningJobConfig' {strategy} -> strategy) (\s@HyperParameterTuningJobConfig' {} a -> s {strategy = a} :: HyperParameterTuningJobConfig)
+
+-- | The ResourceLimits object that specifies the maximum number of training
+-- and parallel training jobs that can be used for this hyperparameter
+-- tuning job.
+hyperParameterTuningJobConfig_resourceLimits :: Lens.Lens' HyperParameterTuningJobConfig ResourceLimits
+hyperParameterTuningJobConfig_resourceLimits = Lens.lens (\HyperParameterTuningJobConfig' {resourceLimits} -> resourceLimits) (\s@HyperParameterTuningJobConfig' {} a -> s {resourceLimits = a} :: HyperParameterTuningJobConfig)
+
+instance Data.FromJSON HyperParameterTuningJobConfig where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningJobConfig"
+      ( \x ->
+          HyperParameterTuningJobConfig'
+            Prelude.<$> (x Data..:? "HyperParameterTuningJobObjective")
+            Prelude.<*> (x Data..:? "ParameterRanges")
+            Prelude.<*> (x Data..:? "RandomSeed")
+            Prelude.<*> (x Data..:? "StrategyConfig")
+            Prelude.<*> (x Data..:? "TrainingJobEarlyStoppingType")
+            Prelude.<*> (x Data..:? "TuningJobCompletionCriteria")
+            Prelude.<*> (x Data..: "Strategy")
+            Prelude.<*> (x Data..: "ResourceLimits")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningJobConfig
+  where
+  hashWithSalt _salt HyperParameterTuningJobConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` hyperParameterTuningJobObjective
+      `Prelude.hashWithSalt` parameterRanges
+      `Prelude.hashWithSalt` randomSeed
+      `Prelude.hashWithSalt` strategyConfig
+      `Prelude.hashWithSalt` trainingJobEarlyStoppingType
+      `Prelude.hashWithSalt` tuningJobCompletionCriteria
+      `Prelude.hashWithSalt` strategy
+      `Prelude.hashWithSalt` resourceLimits
+
+instance Prelude.NFData HyperParameterTuningJobConfig where
+  rnf HyperParameterTuningJobConfig' {..} =
+    Prelude.rnf hyperParameterTuningJobObjective
+      `Prelude.seq` Prelude.rnf parameterRanges
+      `Prelude.seq` Prelude.rnf randomSeed
+      `Prelude.seq` Prelude.rnf strategyConfig
+      `Prelude.seq` Prelude.rnf trainingJobEarlyStoppingType
+      `Prelude.seq` Prelude.rnf tuningJobCompletionCriteria
+      `Prelude.seq` Prelude.rnf strategy
+      `Prelude.seq` Prelude.rnf resourceLimits
+
+instance Data.ToJSON HyperParameterTuningJobConfig where
+  toJSON HyperParameterTuningJobConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HyperParameterTuningJobObjective" Data..=)
+              Prelude.<$> hyperParameterTuningJobObjective,
+            ("ParameterRanges" Data..=)
+              Prelude.<$> parameterRanges,
+            ("RandomSeed" Data..=) Prelude.<$> randomSeed,
+            ("StrategyConfig" Data..=)
+              Prelude.<$> strategyConfig,
+            ("TrainingJobEarlyStoppingType" Data..=)
+              Prelude.<$> trainingJobEarlyStoppingType,
+            ("TuningJobCompletionCriteria" Data..=)
+              Prelude.<$> tuningJobCompletionCriteria,
+            Prelude.Just ("Strategy" Data..= strategy),
+            Prelude.Just
+              ("ResourceLimits" Data..= resourceLimits)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobObjective.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobObjective.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobObjective.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningJobObjective
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobObjective 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 Amazonka.SageMaker.Types.HyperParameterTuningJobObjectiveType
+
+-- | Defines the objective metric for a hyperparameter tuning job.
+-- Hyperparameter tuning uses the value of this metric to evaluate the
+-- training jobs it launches, and returns the training job that results in
+-- either the highest or lowest value for this metric, depending on the
+-- value you specify for the @Type@ parameter.
+--
+-- /See:/ 'newHyperParameterTuningJobObjective' smart constructor.
+data HyperParameterTuningJobObjective = HyperParameterTuningJobObjective'
+  { -- | Whether to minimize or maximize the objective metric.
+    type' :: HyperParameterTuningJobObjectiveType,
+    -- | The name of the metric to use for the objective metric.
+    metricName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningJobObjective' 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:
+--
+-- 'type'', 'hyperParameterTuningJobObjective_type' - Whether to minimize or maximize the objective metric.
+--
+-- 'metricName', 'hyperParameterTuningJobObjective_metricName' - The name of the metric to use for the objective metric.
+newHyperParameterTuningJobObjective ::
+  -- | 'type''
+  HyperParameterTuningJobObjectiveType ->
+  -- | 'metricName'
+  Prelude.Text ->
+  HyperParameterTuningJobObjective
+newHyperParameterTuningJobObjective
+  pType_
+  pMetricName_ =
+    HyperParameterTuningJobObjective'
+      { type' = pType_,
+        metricName = pMetricName_
+      }
+
+-- | Whether to minimize or maximize the objective metric.
+hyperParameterTuningJobObjective_type :: Lens.Lens' HyperParameterTuningJobObjective HyperParameterTuningJobObjectiveType
+hyperParameterTuningJobObjective_type = Lens.lens (\HyperParameterTuningJobObjective' {type'} -> type') (\s@HyperParameterTuningJobObjective' {} a -> s {type' = a} :: HyperParameterTuningJobObjective)
+
+-- | The name of the metric to use for the objective metric.
+hyperParameterTuningJobObjective_metricName :: Lens.Lens' HyperParameterTuningJobObjective Prelude.Text
+hyperParameterTuningJobObjective_metricName = Lens.lens (\HyperParameterTuningJobObjective' {metricName} -> metricName) (\s@HyperParameterTuningJobObjective' {} a -> s {metricName = a} :: HyperParameterTuningJobObjective)
+
+instance
+  Data.FromJSON
+    HyperParameterTuningJobObjective
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningJobObjective"
+      ( \x ->
+          HyperParameterTuningJobObjective'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> (x Data..: "MetricName")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningJobObjective
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningJobObjective' {..} =
+      _salt
+        `Prelude.hashWithSalt` type'
+        `Prelude.hashWithSalt` metricName
+
+instance
+  Prelude.NFData
+    HyperParameterTuningJobObjective
+  where
+  rnf HyperParameterTuningJobObjective' {..} =
+    Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf metricName
+
+instance Data.ToJSON HyperParameterTuningJobObjective where
+  toJSON HyperParameterTuningJobObjective' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("MetricName" Data..= metricName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobObjectiveType.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobObjectiveType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobObjectiveType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterTuningJobObjectiveType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobObjectiveType
+  ( HyperParameterTuningJobObjectiveType
+      ( ..,
+        HyperParameterTuningJobObjectiveType_Maximize,
+        HyperParameterTuningJobObjectiveType_Minimize
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HyperParameterTuningJobObjectiveType = HyperParameterTuningJobObjectiveType'
+  { fromHyperParameterTuningJobObjectiveType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterTuningJobObjectiveType_Maximize :: HyperParameterTuningJobObjectiveType
+pattern HyperParameterTuningJobObjectiveType_Maximize = HyperParameterTuningJobObjectiveType' "Maximize"
+
+pattern HyperParameterTuningJobObjectiveType_Minimize :: HyperParameterTuningJobObjectiveType
+pattern HyperParameterTuningJobObjectiveType_Minimize = HyperParameterTuningJobObjectiveType' "Minimize"
+
+{-# COMPLETE
+  HyperParameterTuningJobObjectiveType_Maximize,
+  HyperParameterTuningJobObjectiveType_Minimize,
+  HyperParameterTuningJobObjectiveType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSearchEntity.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSearchEntity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSearchEntity.hs
@@ -0,0 +1,283 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningJobSearchEntity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobSearchEntity 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 Amazonka.SageMaker.Types.HyperParameterTrainingJobDefinition
+import Amazonka.SageMaker.Types.HyperParameterTrainingJobSummary
+import Amazonka.SageMaker.Types.HyperParameterTuningJobConfig
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStatus
+import Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig
+import Amazonka.SageMaker.Types.ObjectiveStatusCounters
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TrainingJobStatusCounters
+
+-- | An entity returned by the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchRecord.html SearchRecord>
+-- API containing the properties of a hyperparameter tuning job.
+--
+-- /See:/ 'newHyperParameterTuningJobSearchEntity' smart constructor.
+data HyperParameterTuningJobSearchEntity = HyperParameterTuningJobSearchEntity'
+  { bestTrainingJob :: Prelude.Maybe HyperParameterTrainingJobSummary,
+    -- | The time that a hyperparameter tuning job was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The error that was created when a hyperparameter tuning job failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The time that a hyperparameter tuning job ended.
+    hyperParameterTuningEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of a hyperparameter tuning job.
+    hyperParameterTuningJobArn :: Prelude.Maybe Prelude.Text,
+    hyperParameterTuningJobConfig :: Prelude.Maybe HyperParameterTuningJobConfig,
+    -- | The name of a hyperparameter tuning job.
+    hyperParameterTuningJobName :: Prelude.Maybe Prelude.Text,
+    -- | The status of a hyperparameter tuning job.
+    hyperParameterTuningJobStatus :: Prelude.Maybe HyperParameterTuningJobStatus,
+    -- | The time that a hyperparameter tuning job was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    objectiveStatusCounters :: Prelude.Maybe ObjectiveStatusCounters,
+    overallBestTrainingJob :: Prelude.Maybe HyperParameterTrainingJobSummary,
+    -- | The tags associated with a hyperparameter tuning job. For more
+    -- information see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>.
+    tags :: Prelude.Maybe [Tag],
+    trainingJobDefinition :: Prelude.Maybe HyperParameterTrainingJobDefinition,
+    -- | The job definitions included in a hyperparameter tuning job.
+    trainingJobDefinitions :: Prelude.Maybe (Prelude.NonEmpty HyperParameterTrainingJobDefinition),
+    trainingJobStatusCounters :: Prelude.Maybe TrainingJobStatusCounters,
+    warmStartConfig :: Prelude.Maybe HyperParameterTuningJobWarmStartConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningJobSearchEntity' 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:
+--
+-- 'bestTrainingJob', 'hyperParameterTuningJobSearchEntity_bestTrainingJob' - Undocumented member.
+--
+-- 'creationTime', 'hyperParameterTuningJobSearchEntity_creationTime' - The time that a hyperparameter tuning job was created.
+--
+-- 'failureReason', 'hyperParameterTuningJobSearchEntity_failureReason' - The error that was created when a hyperparameter tuning job failed.
+--
+-- 'hyperParameterTuningEndTime', 'hyperParameterTuningJobSearchEntity_hyperParameterTuningEndTime' - The time that a hyperparameter tuning job ended.
+--
+-- 'hyperParameterTuningJobArn', 'hyperParameterTuningJobSearchEntity_hyperParameterTuningJobArn' - The Amazon Resource Name (ARN) of a hyperparameter tuning job.
+--
+-- 'hyperParameterTuningJobConfig', 'hyperParameterTuningJobSearchEntity_hyperParameterTuningJobConfig' - Undocumented member.
+--
+-- 'hyperParameterTuningJobName', 'hyperParameterTuningJobSearchEntity_hyperParameterTuningJobName' - The name of a hyperparameter tuning job.
+--
+-- 'hyperParameterTuningJobStatus', 'hyperParameterTuningJobSearchEntity_hyperParameterTuningJobStatus' - The status of a hyperparameter tuning job.
+--
+-- 'lastModifiedTime', 'hyperParameterTuningJobSearchEntity_lastModifiedTime' - The time that a hyperparameter tuning job was last modified.
+--
+-- 'objectiveStatusCounters', 'hyperParameterTuningJobSearchEntity_objectiveStatusCounters' - Undocumented member.
+--
+-- 'overallBestTrainingJob', 'hyperParameterTuningJobSearchEntity_overallBestTrainingJob' - Undocumented member.
+--
+-- 'tags', 'hyperParameterTuningJobSearchEntity_tags' - The tags associated with a hyperparameter tuning job. For more
+-- information see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>.
+--
+-- 'trainingJobDefinition', 'hyperParameterTuningJobSearchEntity_trainingJobDefinition' - Undocumented member.
+--
+-- 'trainingJobDefinitions', 'hyperParameterTuningJobSearchEntity_trainingJobDefinitions' - The job definitions included in a hyperparameter tuning job.
+--
+-- 'trainingJobStatusCounters', 'hyperParameterTuningJobSearchEntity_trainingJobStatusCounters' - Undocumented member.
+--
+-- 'warmStartConfig', 'hyperParameterTuningJobSearchEntity_warmStartConfig' - Undocumented member.
+newHyperParameterTuningJobSearchEntity ::
+  HyperParameterTuningJobSearchEntity
+newHyperParameterTuningJobSearchEntity =
+  HyperParameterTuningJobSearchEntity'
+    { bestTrainingJob =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      hyperParameterTuningEndTime =
+        Prelude.Nothing,
+      hyperParameterTuningJobArn =
+        Prelude.Nothing,
+      hyperParameterTuningJobConfig =
+        Prelude.Nothing,
+      hyperParameterTuningJobName =
+        Prelude.Nothing,
+      hyperParameterTuningJobStatus =
+        Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      objectiveStatusCounters =
+        Prelude.Nothing,
+      overallBestTrainingJob =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      trainingJobDefinition =
+        Prelude.Nothing,
+      trainingJobDefinitions =
+        Prelude.Nothing,
+      trainingJobStatusCounters =
+        Prelude.Nothing,
+      warmStartConfig = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_bestTrainingJob :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe HyperParameterTrainingJobSummary)
+hyperParameterTuningJobSearchEntity_bestTrainingJob = Lens.lens (\HyperParameterTuningJobSearchEntity' {bestTrainingJob} -> bestTrainingJob) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {bestTrainingJob = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The time that a hyperparameter tuning job was created.
+hyperParameterTuningJobSearchEntity_creationTime :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTuningJobSearchEntity_creationTime = Lens.lens (\HyperParameterTuningJobSearchEntity' {creationTime} -> creationTime) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {creationTime = a} :: HyperParameterTuningJobSearchEntity) Prelude.. Lens.mapping Data._Time
+
+-- | The error that was created when a hyperparameter tuning job failed.
+hyperParameterTuningJobSearchEntity_failureReason :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe Prelude.Text)
+hyperParameterTuningJobSearchEntity_failureReason = Lens.lens (\HyperParameterTuningJobSearchEntity' {failureReason} -> failureReason) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {failureReason = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The time that a hyperparameter tuning job ended.
+hyperParameterTuningJobSearchEntity_hyperParameterTuningEndTime :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTuningJobSearchEntity_hyperParameterTuningEndTime = Lens.lens (\HyperParameterTuningJobSearchEntity' {hyperParameterTuningEndTime} -> hyperParameterTuningEndTime) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {hyperParameterTuningEndTime = a} :: HyperParameterTuningJobSearchEntity) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of a hyperparameter tuning job.
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobArn :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe Prelude.Text)
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobArn = Lens.lens (\HyperParameterTuningJobSearchEntity' {hyperParameterTuningJobArn} -> hyperParameterTuningJobArn) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {hyperParameterTuningJobArn = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobConfig :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe HyperParameterTuningJobConfig)
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobConfig = Lens.lens (\HyperParameterTuningJobSearchEntity' {hyperParameterTuningJobConfig} -> hyperParameterTuningJobConfig) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {hyperParameterTuningJobConfig = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The name of a hyperparameter tuning job.
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobName :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe Prelude.Text)
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobName = Lens.lens (\HyperParameterTuningJobSearchEntity' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {hyperParameterTuningJobName = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The status of a hyperparameter tuning job.
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobStatus :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe HyperParameterTuningJobStatus)
+hyperParameterTuningJobSearchEntity_hyperParameterTuningJobStatus = Lens.lens (\HyperParameterTuningJobSearchEntity' {hyperParameterTuningJobStatus} -> hyperParameterTuningJobStatus) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {hyperParameterTuningJobStatus = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The time that a hyperparameter tuning job was last modified.
+hyperParameterTuningJobSearchEntity_lastModifiedTime :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTuningJobSearchEntity_lastModifiedTime = Lens.lens (\HyperParameterTuningJobSearchEntity' {lastModifiedTime} -> lastModifiedTime) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {lastModifiedTime = a} :: HyperParameterTuningJobSearchEntity) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_objectiveStatusCounters :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe ObjectiveStatusCounters)
+hyperParameterTuningJobSearchEntity_objectiveStatusCounters = Lens.lens (\HyperParameterTuningJobSearchEntity' {objectiveStatusCounters} -> objectiveStatusCounters) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {objectiveStatusCounters = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_overallBestTrainingJob :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe HyperParameterTrainingJobSummary)
+hyperParameterTuningJobSearchEntity_overallBestTrainingJob = Lens.lens (\HyperParameterTuningJobSearchEntity' {overallBestTrainingJob} -> overallBestTrainingJob) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {overallBestTrainingJob = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The tags associated with a hyperparameter tuning job. For more
+-- information see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>.
+hyperParameterTuningJobSearchEntity_tags :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe [Tag])
+hyperParameterTuningJobSearchEntity_tags = Lens.lens (\HyperParameterTuningJobSearchEntity' {tags} -> tags) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {tags = a} :: HyperParameterTuningJobSearchEntity) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_trainingJobDefinition :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe HyperParameterTrainingJobDefinition)
+hyperParameterTuningJobSearchEntity_trainingJobDefinition = Lens.lens (\HyperParameterTuningJobSearchEntity' {trainingJobDefinition} -> trainingJobDefinition) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {trainingJobDefinition = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | The job definitions included in a hyperparameter tuning job.
+hyperParameterTuningJobSearchEntity_trainingJobDefinitions :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe (Prelude.NonEmpty HyperParameterTrainingJobDefinition))
+hyperParameterTuningJobSearchEntity_trainingJobDefinitions = Lens.lens (\HyperParameterTuningJobSearchEntity' {trainingJobDefinitions} -> trainingJobDefinitions) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {trainingJobDefinitions = a} :: HyperParameterTuningJobSearchEntity) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_trainingJobStatusCounters :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe TrainingJobStatusCounters)
+hyperParameterTuningJobSearchEntity_trainingJobStatusCounters = Lens.lens (\HyperParameterTuningJobSearchEntity' {trainingJobStatusCounters} -> trainingJobStatusCounters) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {trainingJobStatusCounters = a} :: HyperParameterTuningJobSearchEntity)
+
+-- | Undocumented member.
+hyperParameterTuningJobSearchEntity_warmStartConfig :: Lens.Lens' HyperParameterTuningJobSearchEntity (Prelude.Maybe HyperParameterTuningJobWarmStartConfig)
+hyperParameterTuningJobSearchEntity_warmStartConfig = Lens.lens (\HyperParameterTuningJobSearchEntity' {warmStartConfig} -> warmStartConfig) (\s@HyperParameterTuningJobSearchEntity' {} a -> s {warmStartConfig = a} :: HyperParameterTuningJobSearchEntity)
+
+instance
+  Data.FromJSON
+    HyperParameterTuningJobSearchEntity
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningJobSearchEntity"
+      ( \x ->
+          HyperParameterTuningJobSearchEntity'
+            Prelude.<$> (x Data..:? "BestTrainingJob")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "HyperParameterTuningEndTime")
+            Prelude.<*> (x Data..:? "HyperParameterTuningJobArn")
+            Prelude.<*> (x Data..:? "HyperParameterTuningJobConfig")
+            Prelude.<*> (x Data..:? "HyperParameterTuningJobName")
+            Prelude.<*> (x Data..:? "HyperParameterTuningJobStatus")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ObjectiveStatusCounters")
+            Prelude.<*> (x Data..:? "OverallBestTrainingJob")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TrainingJobDefinition")
+            Prelude.<*> (x Data..:? "TrainingJobDefinitions")
+            Prelude.<*> (x Data..:? "TrainingJobStatusCounters")
+            Prelude.<*> (x Data..:? "WarmStartConfig")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningJobSearchEntity
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningJobSearchEntity' {..} =
+      _salt
+        `Prelude.hashWithSalt` bestTrainingJob
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` failureReason
+        `Prelude.hashWithSalt` hyperParameterTuningEndTime
+        `Prelude.hashWithSalt` hyperParameterTuningJobArn
+        `Prelude.hashWithSalt` hyperParameterTuningJobConfig
+        `Prelude.hashWithSalt` hyperParameterTuningJobName
+        `Prelude.hashWithSalt` hyperParameterTuningJobStatus
+        `Prelude.hashWithSalt` lastModifiedTime
+        `Prelude.hashWithSalt` objectiveStatusCounters
+        `Prelude.hashWithSalt` overallBestTrainingJob
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` trainingJobDefinition
+        `Prelude.hashWithSalt` trainingJobDefinitions
+        `Prelude.hashWithSalt` trainingJobStatusCounters
+        `Prelude.hashWithSalt` warmStartConfig
+
+instance
+  Prelude.NFData
+    HyperParameterTuningJobSearchEntity
+  where
+  rnf HyperParameterTuningJobSearchEntity' {..} =
+    Prelude.rnf bestTrainingJob
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf hyperParameterTuningEndTime
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobArn
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobConfig
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobName
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobStatus
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf objectiveStatusCounters
+      `Prelude.seq` Prelude.rnf overallBestTrainingJob
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trainingJobDefinition
+      `Prelude.seq` Prelude.rnf trainingJobDefinitions
+      `Prelude.seq` Prelude.rnf trainingJobStatusCounters
+      `Prelude.seq` Prelude.rnf warmStartConfig
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSortByOptions.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSortByOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSortByOptions.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterTuningJobSortByOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobSortByOptions
+  ( HyperParameterTuningJobSortByOptions
+      ( ..,
+        HyperParameterTuningJobSortByOptions_CreationTime,
+        HyperParameterTuningJobSortByOptions_Name,
+        HyperParameterTuningJobSortByOptions_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HyperParameterTuningJobSortByOptions = HyperParameterTuningJobSortByOptions'
+  { fromHyperParameterTuningJobSortByOptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterTuningJobSortByOptions_CreationTime :: HyperParameterTuningJobSortByOptions
+pattern HyperParameterTuningJobSortByOptions_CreationTime = HyperParameterTuningJobSortByOptions' "CreationTime"
+
+pattern HyperParameterTuningJobSortByOptions_Name :: HyperParameterTuningJobSortByOptions
+pattern HyperParameterTuningJobSortByOptions_Name = HyperParameterTuningJobSortByOptions' "Name"
+
+pattern HyperParameterTuningJobSortByOptions_Status :: HyperParameterTuningJobSortByOptions
+pattern HyperParameterTuningJobSortByOptions_Status = HyperParameterTuningJobSortByOptions' "Status"
+
+{-# COMPLETE
+  HyperParameterTuningJobSortByOptions_CreationTime,
+  HyperParameterTuningJobSortByOptions_Name,
+  HyperParameterTuningJobSortByOptions_Status,
+  HyperParameterTuningJobSortByOptions'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStatus.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterTuningJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobStatus
+  ( HyperParameterTuningJobStatus
+      ( ..,
+        HyperParameterTuningJobStatus_Completed,
+        HyperParameterTuningJobStatus_Failed,
+        HyperParameterTuningJobStatus_InProgress,
+        HyperParameterTuningJobStatus_Stopped,
+        HyperParameterTuningJobStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HyperParameterTuningJobStatus = HyperParameterTuningJobStatus'
+  { fromHyperParameterTuningJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterTuningJobStatus_Completed :: HyperParameterTuningJobStatus
+pattern HyperParameterTuningJobStatus_Completed = HyperParameterTuningJobStatus' "Completed"
+
+pattern HyperParameterTuningJobStatus_Failed :: HyperParameterTuningJobStatus
+pattern HyperParameterTuningJobStatus_Failed = HyperParameterTuningJobStatus' "Failed"
+
+pattern HyperParameterTuningJobStatus_InProgress :: HyperParameterTuningJobStatus
+pattern HyperParameterTuningJobStatus_InProgress = HyperParameterTuningJobStatus' "InProgress"
+
+pattern HyperParameterTuningJobStatus_Stopped :: HyperParameterTuningJobStatus
+pattern HyperParameterTuningJobStatus_Stopped = HyperParameterTuningJobStatus' "Stopped"
+
+pattern HyperParameterTuningJobStatus_Stopping :: HyperParameterTuningJobStatus
+pattern HyperParameterTuningJobStatus_Stopping = HyperParameterTuningJobStatus' "Stopping"
+
+{-# COMPLETE
+  HyperParameterTuningJobStatus_Completed,
+  HyperParameterTuningJobStatus_Failed,
+  HyperParameterTuningJobStatus_InProgress,
+  HyperParameterTuningJobStatus_Stopped,
+  HyperParameterTuningJobStatus_Stopping,
+  HyperParameterTuningJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStrategyConfig.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStrategyConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStrategyConfig.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningJobStrategyConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyConfig 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 Amazonka.SageMaker.Types.HyperbandStrategyConfig
+
+-- | The configuration for a training job launched by a hyperparameter tuning
+-- job. Choose @Bayesian@ for Bayesian optimization, and @Random@ for
+-- random search optimization. For more advanced use cases, use
+-- @Hyperband@, which evaluates objective metrics for training jobs after
+-- every epoch. For more information about strategies, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
+--
+-- /See:/ 'newHyperParameterTuningJobStrategyConfig' smart constructor.
+data HyperParameterTuningJobStrategyConfig = HyperParameterTuningJobStrategyConfig'
+  { -- | The configuration for the object that specifies the @Hyperband@
+    -- strategy. This parameter is only supported for the @Hyperband@ selection
+    -- for @Strategy@ within the @HyperParameterTuningJobConfig@ API.
+    hyperbandStrategyConfig :: Prelude.Maybe HyperbandStrategyConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningJobStrategyConfig' 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:
+--
+-- 'hyperbandStrategyConfig', 'hyperParameterTuningJobStrategyConfig_hyperbandStrategyConfig' - The configuration for the object that specifies the @Hyperband@
+-- strategy. This parameter is only supported for the @Hyperband@ selection
+-- for @Strategy@ within the @HyperParameterTuningJobConfig@ API.
+newHyperParameterTuningJobStrategyConfig ::
+  HyperParameterTuningJobStrategyConfig
+newHyperParameterTuningJobStrategyConfig =
+  HyperParameterTuningJobStrategyConfig'
+    { hyperbandStrategyConfig =
+        Prelude.Nothing
+    }
+
+-- | The configuration for the object that specifies the @Hyperband@
+-- strategy. This parameter is only supported for the @Hyperband@ selection
+-- for @Strategy@ within the @HyperParameterTuningJobConfig@ API.
+hyperParameterTuningJobStrategyConfig_hyperbandStrategyConfig :: Lens.Lens' HyperParameterTuningJobStrategyConfig (Prelude.Maybe HyperbandStrategyConfig)
+hyperParameterTuningJobStrategyConfig_hyperbandStrategyConfig = Lens.lens (\HyperParameterTuningJobStrategyConfig' {hyperbandStrategyConfig} -> hyperbandStrategyConfig) (\s@HyperParameterTuningJobStrategyConfig' {} a -> s {hyperbandStrategyConfig = a} :: HyperParameterTuningJobStrategyConfig)
+
+instance
+  Data.FromJSON
+    HyperParameterTuningJobStrategyConfig
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningJobStrategyConfig"
+      ( \x ->
+          HyperParameterTuningJobStrategyConfig'
+            Prelude.<$> (x Data..:? "HyperbandStrategyConfig")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningJobStrategyConfig
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningJobStrategyConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` hyperbandStrategyConfig
+
+instance
+  Prelude.NFData
+    HyperParameterTuningJobStrategyConfig
+  where
+  rnf HyperParameterTuningJobStrategyConfig' {..} =
+    Prelude.rnf hyperbandStrategyConfig
+
+instance
+  Data.ToJSON
+    HyperParameterTuningJobStrategyConfig
+  where
+  toJSON HyperParameterTuningJobStrategyConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HyperbandStrategyConfig" Data..=)
+              Prelude.<$> hyperbandStrategyConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStrategyType.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStrategyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobStrategyType.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
+  ( HyperParameterTuningJobStrategyType
+      ( ..,
+        HyperParameterTuningJobStrategyType_Bayesian,
+        HyperParameterTuningJobStrategyType_Grid,
+        HyperParameterTuningJobStrategyType_Hyperband,
+        HyperParameterTuningJobStrategyType_Random
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The strategy hyperparameter tuning uses to find the best combination of
+-- hyperparameters for your model. Currently, the only supported value is
+-- @Bayesian@.
+newtype HyperParameterTuningJobStrategyType = HyperParameterTuningJobStrategyType'
+  { fromHyperParameterTuningJobStrategyType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterTuningJobStrategyType_Bayesian :: HyperParameterTuningJobStrategyType
+pattern HyperParameterTuningJobStrategyType_Bayesian = HyperParameterTuningJobStrategyType' "Bayesian"
+
+pattern HyperParameterTuningJobStrategyType_Grid :: HyperParameterTuningJobStrategyType
+pattern HyperParameterTuningJobStrategyType_Grid = HyperParameterTuningJobStrategyType' "Grid"
+
+pattern HyperParameterTuningJobStrategyType_Hyperband :: HyperParameterTuningJobStrategyType
+pattern HyperParameterTuningJobStrategyType_Hyperband = HyperParameterTuningJobStrategyType' "Hyperband"
+
+pattern HyperParameterTuningJobStrategyType_Random :: HyperParameterTuningJobStrategyType
+pattern HyperParameterTuningJobStrategyType_Random = HyperParameterTuningJobStrategyType' "Random"
+
+{-# COMPLETE
+  HyperParameterTuningJobStrategyType_Bayesian,
+  HyperParameterTuningJobStrategyType_Grid,
+  HyperParameterTuningJobStrategyType_Hyperband,
+  HyperParameterTuningJobStrategyType_Random,
+  HyperParameterTuningJobStrategyType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSummary.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobSummary.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobSummary 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 Amazonka.SageMaker.Types.HyperParameterTuningJobStatus
+import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
+import Amazonka.SageMaker.Types.ObjectiveStatusCounters
+import Amazonka.SageMaker.Types.ResourceLimits
+import Amazonka.SageMaker.Types.TrainingJobStatusCounters
+
+-- | Provides summary information about a hyperparameter tuning job.
+--
+-- /See:/ 'newHyperParameterTuningJobSummary' smart constructor.
+data HyperParameterTuningJobSummary = HyperParameterTuningJobSummary'
+  { -- | The date and time that the tuning job ended.
+    hyperParameterTuningEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The date and time that the tuning job was modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ResourceLimits object that specifies the maximum number of training
+    -- jobs and parallel training jobs allowed for this tuning job.
+    resourceLimits :: Prelude.Maybe ResourceLimits,
+    -- | The name of the tuning job.
+    hyperParameterTuningJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the tuning job.
+    hyperParameterTuningJobArn :: Prelude.Text,
+    -- | The status of the tuning job.
+    hyperParameterTuningJobStatus :: HyperParameterTuningJobStatus,
+    -- | Specifies the search strategy hyperparameter tuning uses to choose which
+    -- hyperparameters to evaluate at each iteration.
+    strategy :: HyperParameterTuningJobStrategyType,
+    -- | The date and time that the tuning job was created.
+    creationTime :: Data.POSIX,
+    -- | The TrainingJobStatusCounters object that specifies the numbers of
+    -- training jobs, categorized by status, that this tuning job launched.
+    trainingJobStatusCounters :: TrainingJobStatusCounters,
+    -- | The ObjectiveStatusCounters object that specifies the numbers of
+    -- training jobs, categorized by objective metric status, that this tuning
+    -- job launched.
+    objectiveStatusCounters :: ObjectiveStatusCounters
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningJobSummary' 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:
+--
+-- 'hyperParameterTuningEndTime', 'hyperParameterTuningJobSummary_hyperParameterTuningEndTime' - The date and time that the tuning job ended.
+--
+-- 'lastModifiedTime', 'hyperParameterTuningJobSummary_lastModifiedTime' - The date and time that the tuning job was modified.
+--
+-- 'resourceLimits', 'hyperParameterTuningJobSummary_resourceLimits' - The ResourceLimits object that specifies the maximum number of training
+-- jobs and parallel training jobs allowed for this tuning job.
+--
+-- 'hyperParameterTuningJobName', 'hyperParameterTuningJobSummary_hyperParameterTuningJobName' - The name of the tuning job.
+--
+-- 'hyperParameterTuningJobArn', 'hyperParameterTuningJobSummary_hyperParameterTuningJobArn' - The Amazon Resource Name (ARN) of the tuning job.
+--
+-- 'hyperParameterTuningJobStatus', 'hyperParameterTuningJobSummary_hyperParameterTuningJobStatus' - The status of the tuning job.
+--
+-- 'strategy', 'hyperParameterTuningJobSummary_strategy' - Specifies the search strategy hyperparameter tuning uses to choose which
+-- hyperparameters to evaluate at each iteration.
+--
+-- 'creationTime', 'hyperParameterTuningJobSummary_creationTime' - The date and time that the tuning job was created.
+--
+-- 'trainingJobStatusCounters', 'hyperParameterTuningJobSummary_trainingJobStatusCounters' - The TrainingJobStatusCounters object that specifies the numbers of
+-- training jobs, categorized by status, that this tuning job launched.
+--
+-- 'objectiveStatusCounters', 'hyperParameterTuningJobSummary_objectiveStatusCounters' - The ObjectiveStatusCounters object that specifies the numbers of
+-- training jobs, categorized by objective metric status, that this tuning
+-- job launched.
+newHyperParameterTuningJobSummary ::
+  -- | 'hyperParameterTuningJobName'
+  Prelude.Text ->
+  -- | 'hyperParameterTuningJobArn'
+  Prelude.Text ->
+  -- | 'hyperParameterTuningJobStatus'
+  HyperParameterTuningJobStatus ->
+  -- | 'strategy'
+  HyperParameterTuningJobStrategyType ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'trainingJobStatusCounters'
+  TrainingJobStatusCounters ->
+  -- | 'objectiveStatusCounters'
+  ObjectiveStatusCounters ->
+  HyperParameterTuningJobSummary
+newHyperParameterTuningJobSummary
+  pHyperParameterTuningJobName_
+  pHyperParameterTuningJobArn_
+  pHyperParameterTuningJobStatus_
+  pStrategy_
+  pCreationTime_
+  pTrainingJobStatusCounters_
+  pObjectiveStatusCounters_ =
+    HyperParameterTuningJobSummary'
+      { hyperParameterTuningEndTime =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        resourceLimits = Prelude.Nothing,
+        hyperParameterTuningJobName =
+          pHyperParameterTuningJobName_,
+        hyperParameterTuningJobArn =
+          pHyperParameterTuningJobArn_,
+        hyperParameterTuningJobStatus =
+          pHyperParameterTuningJobStatus_,
+        strategy = pStrategy_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        trainingJobStatusCounters =
+          pTrainingJobStatusCounters_,
+        objectiveStatusCounters =
+          pObjectiveStatusCounters_
+      }
+
+-- | The date and time that the tuning job ended.
+hyperParameterTuningJobSummary_hyperParameterTuningEndTime :: Lens.Lens' HyperParameterTuningJobSummary (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTuningJobSummary_hyperParameterTuningEndTime = Lens.lens (\HyperParameterTuningJobSummary' {hyperParameterTuningEndTime} -> hyperParameterTuningEndTime) (\s@HyperParameterTuningJobSummary' {} a -> s {hyperParameterTuningEndTime = a} :: HyperParameterTuningJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that the tuning job was modified.
+hyperParameterTuningJobSummary_lastModifiedTime :: Lens.Lens' HyperParameterTuningJobSummary (Prelude.Maybe Prelude.UTCTime)
+hyperParameterTuningJobSummary_lastModifiedTime = Lens.lens (\HyperParameterTuningJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@HyperParameterTuningJobSummary' {} a -> s {lastModifiedTime = a} :: HyperParameterTuningJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ResourceLimits object that specifies the maximum number of training
+-- jobs and parallel training jobs allowed for this tuning job.
+hyperParameterTuningJobSummary_resourceLimits :: Lens.Lens' HyperParameterTuningJobSummary (Prelude.Maybe ResourceLimits)
+hyperParameterTuningJobSummary_resourceLimits = Lens.lens (\HyperParameterTuningJobSummary' {resourceLimits} -> resourceLimits) (\s@HyperParameterTuningJobSummary' {} a -> s {resourceLimits = a} :: HyperParameterTuningJobSummary)
+
+-- | The name of the tuning job.
+hyperParameterTuningJobSummary_hyperParameterTuningJobName :: Lens.Lens' HyperParameterTuningJobSummary Prelude.Text
+hyperParameterTuningJobSummary_hyperParameterTuningJobName = Lens.lens (\HyperParameterTuningJobSummary' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@HyperParameterTuningJobSummary' {} a -> s {hyperParameterTuningJobName = a} :: HyperParameterTuningJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the tuning job.
+hyperParameterTuningJobSummary_hyperParameterTuningJobArn :: Lens.Lens' HyperParameterTuningJobSummary Prelude.Text
+hyperParameterTuningJobSummary_hyperParameterTuningJobArn = Lens.lens (\HyperParameterTuningJobSummary' {hyperParameterTuningJobArn} -> hyperParameterTuningJobArn) (\s@HyperParameterTuningJobSummary' {} a -> s {hyperParameterTuningJobArn = a} :: HyperParameterTuningJobSummary)
+
+-- | The status of the tuning job.
+hyperParameterTuningJobSummary_hyperParameterTuningJobStatus :: Lens.Lens' HyperParameterTuningJobSummary HyperParameterTuningJobStatus
+hyperParameterTuningJobSummary_hyperParameterTuningJobStatus = Lens.lens (\HyperParameterTuningJobSummary' {hyperParameterTuningJobStatus} -> hyperParameterTuningJobStatus) (\s@HyperParameterTuningJobSummary' {} a -> s {hyperParameterTuningJobStatus = a} :: HyperParameterTuningJobSummary)
+
+-- | Specifies the search strategy hyperparameter tuning uses to choose which
+-- hyperparameters to evaluate at each iteration.
+hyperParameterTuningJobSummary_strategy :: Lens.Lens' HyperParameterTuningJobSummary HyperParameterTuningJobStrategyType
+hyperParameterTuningJobSummary_strategy = Lens.lens (\HyperParameterTuningJobSummary' {strategy} -> strategy) (\s@HyperParameterTuningJobSummary' {} a -> s {strategy = a} :: HyperParameterTuningJobSummary)
+
+-- | The date and time that the tuning job was created.
+hyperParameterTuningJobSummary_creationTime :: Lens.Lens' HyperParameterTuningJobSummary Prelude.UTCTime
+hyperParameterTuningJobSummary_creationTime = Lens.lens (\HyperParameterTuningJobSummary' {creationTime} -> creationTime) (\s@HyperParameterTuningJobSummary' {} a -> s {creationTime = a} :: HyperParameterTuningJobSummary) Prelude.. Data._Time
+
+-- | The TrainingJobStatusCounters object that specifies the numbers of
+-- training jobs, categorized by status, that this tuning job launched.
+hyperParameterTuningJobSummary_trainingJobStatusCounters :: Lens.Lens' HyperParameterTuningJobSummary TrainingJobStatusCounters
+hyperParameterTuningJobSummary_trainingJobStatusCounters = Lens.lens (\HyperParameterTuningJobSummary' {trainingJobStatusCounters} -> trainingJobStatusCounters) (\s@HyperParameterTuningJobSummary' {} a -> s {trainingJobStatusCounters = a} :: HyperParameterTuningJobSummary)
+
+-- | The ObjectiveStatusCounters object that specifies the numbers of
+-- training jobs, categorized by objective metric status, that this tuning
+-- job launched.
+hyperParameterTuningJobSummary_objectiveStatusCounters :: Lens.Lens' HyperParameterTuningJobSummary ObjectiveStatusCounters
+hyperParameterTuningJobSummary_objectiveStatusCounters = Lens.lens (\HyperParameterTuningJobSummary' {objectiveStatusCounters} -> objectiveStatusCounters) (\s@HyperParameterTuningJobSummary' {} a -> s {objectiveStatusCounters = a} :: HyperParameterTuningJobSummary)
+
+instance Data.FromJSON HyperParameterTuningJobSummary where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningJobSummary"
+      ( \x ->
+          HyperParameterTuningJobSummary'
+            Prelude.<$> (x Data..:? "HyperParameterTuningEndTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ResourceLimits")
+            Prelude.<*> (x Data..: "HyperParameterTuningJobName")
+            Prelude.<*> (x Data..: "HyperParameterTuningJobArn")
+            Prelude.<*> (x Data..: "HyperParameterTuningJobStatus")
+            Prelude.<*> (x Data..: "Strategy")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "TrainingJobStatusCounters")
+            Prelude.<*> (x Data..: "ObjectiveStatusCounters")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningJobSummary
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningJobSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` hyperParameterTuningEndTime
+        `Prelude.hashWithSalt` lastModifiedTime
+        `Prelude.hashWithSalt` resourceLimits
+        `Prelude.hashWithSalt` hyperParameterTuningJobName
+        `Prelude.hashWithSalt` hyperParameterTuningJobArn
+        `Prelude.hashWithSalt` hyperParameterTuningJobStatus
+        `Prelude.hashWithSalt` strategy
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` trainingJobStatusCounters
+        `Prelude.hashWithSalt` objectiveStatusCounters
+
+instance
+  Prelude.NFData
+    HyperParameterTuningJobSummary
+  where
+  rnf HyperParameterTuningJobSummary' {..} =
+    Prelude.rnf hyperParameterTuningEndTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf resourceLimits
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobName
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobArn
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJobStatus
+      `Prelude.seq` Prelude.rnf strategy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf trainingJobStatusCounters
+      `Prelude.seq` Prelude.rnf objectiveStatusCounters
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartConfig.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartConfig.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningJobWarmStartConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig 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 Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartType
+import Amazonka.SageMaker.Types.ParentHyperParameterTuningJob
+
+-- | Specifies the configuration for a hyperparameter tuning job that uses
+-- one or more previous hyperparameter tuning jobs as a starting point. The
+-- results of previous tuning jobs are used to inform which combinations of
+-- hyperparameters to search over in the new tuning job.
+--
+-- All training jobs launched by the new hyperparameter tuning job are
+-- evaluated by using the objective metric, and the training job that
+-- performs the best is compared to the best training jobs from the parent
+-- tuning jobs. From these, the training job that performs the best as
+-- measured by the objective metric is returned as the overall best
+-- training job.
+--
+-- All training jobs launched by parent hyperparameter tuning jobs and the
+-- new hyperparameter tuning jobs count against the limit of training jobs
+-- for the tuning job.
+--
+-- /See:/ 'newHyperParameterTuningJobWarmStartConfig' smart constructor.
+data HyperParameterTuningJobWarmStartConfig = HyperParameterTuningJobWarmStartConfig'
+  { -- | An array of hyperparameter tuning jobs that are used as the starting
+    -- point for the new hyperparameter tuning job. For more information about
+    -- warm starting a hyperparameter tuning job, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html Using a Previous Hyperparameter Tuning Job as a Starting Point>.
+    --
+    -- Hyperparameter tuning jobs created before October 1, 2018 cannot be used
+    -- as parent jobs for warm start tuning jobs.
+    parentHyperParameterTuningJobs :: Prelude.NonEmpty ParentHyperParameterTuningJob,
+    -- | Specifies one of the following:
+    --
+    -- [IDENTICAL_DATA_AND_ALGORITHM]
+    --     The new hyperparameter tuning job uses the same input data and
+    --     training image as the parent tuning jobs. You can change the
+    --     hyperparameter ranges to search and the maximum number of training
+    --     jobs that the hyperparameter tuning job launches. You cannot use a
+    --     new version of the training algorithm, unless the changes in the new
+    --     version do not affect the algorithm itself. For example, changes
+    --     that improve logging or adding support for a different data format
+    --     are allowed. You can also change hyperparameters from tunable to
+    --     static, and from static to tunable, but the total number of static
+    --     plus tunable hyperparameters must remain the same as it is in all
+    --     parent jobs. The objective metric for the new tuning job must be the
+    --     same as for all parent jobs.
+    --
+    -- [TRANSFER_LEARNING]
+    --     The new hyperparameter tuning job can include input data,
+    --     hyperparameter ranges, maximum number of concurrent training jobs,
+    --     and maximum number of training jobs that are different than those of
+    --     its parent hyperparameter tuning jobs. The training image can also
+    --     be a different version from the version used in the parent
+    --     hyperparameter tuning job. You can also change hyperparameters from
+    --     tunable to static, and from static to tunable, but the total number
+    --     of static plus tunable hyperparameters must remain the same as it is
+    --     in all parent jobs. The objective metric for the new tuning job must
+    --     be the same as for all parent jobs.
+    warmStartType :: HyperParameterTuningJobWarmStartType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningJobWarmStartConfig' 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:
+--
+-- 'parentHyperParameterTuningJobs', 'hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs' - An array of hyperparameter tuning jobs that are used as the starting
+-- point for the new hyperparameter tuning job. For more information about
+-- warm starting a hyperparameter tuning job, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html Using a Previous Hyperparameter Tuning Job as a Starting Point>.
+--
+-- Hyperparameter tuning jobs created before October 1, 2018 cannot be used
+-- as parent jobs for warm start tuning jobs.
+--
+-- 'warmStartType', 'hyperParameterTuningJobWarmStartConfig_warmStartType' - Specifies one of the following:
+--
+-- [IDENTICAL_DATA_AND_ALGORITHM]
+--     The new hyperparameter tuning job uses the same input data and
+--     training image as the parent tuning jobs. You can change the
+--     hyperparameter ranges to search and the maximum number of training
+--     jobs that the hyperparameter tuning job launches. You cannot use a
+--     new version of the training algorithm, unless the changes in the new
+--     version do not affect the algorithm itself. For example, changes
+--     that improve logging or adding support for a different data format
+--     are allowed. You can also change hyperparameters from tunable to
+--     static, and from static to tunable, but the total number of static
+--     plus tunable hyperparameters must remain the same as it is in all
+--     parent jobs. The objective metric for the new tuning job must be the
+--     same as for all parent jobs.
+--
+-- [TRANSFER_LEARNING]
+--     The new hyperparameter tuning job can include input data,
+--     hyperparameter ranges, maximum number of concurrent training jobs,
+--     and maximum number of training jobs that are different than those of
+--     its parent hyperparameter tuning jobs. The training image can also
+--     be a different version from the version used in the parent
+--     hyperparameter tuning job. You can also change hyperparameters from
+--     tunable to static, and from static to tunable, but the total number
+--     of static plus tunable hyperparameters must remain the same as it is
+--     in all parent jobs. The objective metric for the new tuning job must
+--     be the same as for all parent jobs.
+newHyperParameterTuningJobWarmStartConfig ::
+  -- | 'parentHyperParameterTuningJobs'
+  Prelude.NonEmpty ParentHyperParameterTuningJob ->
+  -- | 'warmStartType'
+  HyperParameterTuningJobWarmStartType ->
+  HyperParameterTuningJobWarmStartConfig
+newHyperParameterTuningJobWarmStartConfig
+  pParentHyperParameterTuningJobs_
+  pWarmStartType_ =
+    HyperParameterTuningJobWarmStartConfig'
+      { parentHyperParameterTuningJobs =
+          Lens.coerced
+            Lens.# pParentHyperParameterTuningJobs_,
+        warmStartType = pWarmStartType_
+      }
+
+-- | An array of hyperparameter tuning jobs that are used as the starting
+-- point for the new hyperparameter tuning job. For more information about
+-- warm starting a hyperparameter tuning job, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html Using a Previous Hyperparameter Tuning Job as a Starting Point>.
+--
+-- Hyperparameter tuning jobs created before October 1, 2018 cannot be used
+-- as parent jobs for warm start tuning jobs.
+hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs :: Lens.Lens' HyperParameterTuningJobWarmStartConfig (Prelude.NonEmpty ParentHyperParameterTuningJob)
+hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs = Lens.lens (\HyperParameterTuningJobWarmStartConfig' {parentHyperParameterTuningJobs} -> parentHyperParameterTuningJobs) (\s@HyperParameterTuningJobWarmStartConfig' {} a -> s {parentHyperParameterTuningJobs = a} :: HyperParameterTuningJobWarmStartConfig) Prelude.. Lens.coerced
+
+-- | Specifies one of the following:
+--
+-- [IDENTICAL_DATA_AND_ALGORITHM]
+--     The new hyperparameter tuning job uses the same input data and
+--     training image as the parent tuning jobs. You can change the
+--     hyperparameter ranges to search and the maximum number of training
+--     jobs that the hyperparameter tuning job launches. You cannot use a
+--     new version of the training algorithm, unless the changes in the new
+--     version do not affect the algorithm itself. For example, changes
+--     that improve logging or adding support for a different data format
+--     are allowed. You can also change hyperparameters from tunable to
+--     static, and from static to tunable, but the total number of static
+--     plus tunable hyperparameters must remain the same as it is in all
+--     parent jobs. The objective metric for the new tuning job must be the
+--     same as for all parent jobs.
+--
+-- [TRANSFER_LEARNING]
+--     The new hyperparameter tuning job can include input data,
+--     hyperparameter ranges, maximum number of concurrent training jobs,
+--     and maximum number of training jobs that are different than those of
+--     its parent hyperparameter tuning jobs. The training image can also
+--     be a different version from the version used in the parent
+--     hyperparameter tuning job. You can also change hyperparameters from
+--     tunable to static, and from static to tunable, but the total number
+--     of static plus tunable hyperparameters must remain the same as it is
+--     in all parent jobs. The objective metric for the new tuning job must
+--     be the same as for all parent jobs.
+hyperParameterTuningJobWarmStartConfig_warmStartType :: Lens.Lens' HyperParameterTuningJobWarmStartConfig HyperParameterTuningJobWarmStartType
+hyperParameterTuningJobWarmStartConfig_warmStartType = Lens.lens (\HyperParameterTuningJobWarmStartConfig' {warmStartType} -> warmStartType) (\s@HyperParameterTuningJobWarmStartConfig' {} a -> s {warmStartType = a} :: HyperParameterTuningJobWarmStartConfig)
+
+instance
+  Data.FromJSON
+    HyperParameterTuningJobWarmStartConfig
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningJobWarmStartConfig"
+      ( \x ->
+          HyperParameterTuningJobWarmStartConfig'
+            Prelude.<$> (x Data..: "ParentHyperParameterTuningJobs")
+            Prelude.<*> (x Data..: "WarmStartType")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningJobWarmStartConfig
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningJobWarmStartConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` parentHyperParameterTuningJobs
+        `Prelude.hashWithSalt` warmStartType
+
+instance
+  Prelude.NFData
+    HyperParameterTuningJobWarmStartConfig
+  where
+  rnf HyperParameterTuningJobWarmStartConfig' {..} =
+    Prelude.rnf parentHyperParameterTuningJobs
+      `Prelude.seq` Prelude.rnf warmStartType
+
+instance
+  Data.ToJSON
+    HyperParameterTuningJobWarmStartConfig
+  where
+  toJSON HyperParameterTuningJobWarmStartConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ParentHyperParameterTuningJobs"
+                  Data..= parentHyperParameterTuningJobs
+              ),
+            Prelude.Just
+              ("WarmStartType" Data..= warmStartType)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartType.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartType
+  ( HyperParameterTuningJobWarmStartType
+      ( ..,
+        HyperParameterTuningJobWarmStartType_IdenticalDataAndAlgorithm,
+        HyperParameterTuningJobWarmStartType_TransferLearning
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HyperParameterTuningJobWarmStartType = HyperParameterTuningJobWarmStartType'
+  { fromHyperParameterTuningJobWarmStartType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern HyperParameterTuningJobWarmStartType_IdenticalDataAndAlgorithm :: HyperParameterTuningJobWarmStartType
+pattern HyperParameterTuningJobWarmStartType_IdenticalDataAndAlgorithm = HyperParameterTuningJobWarmStartType' "IdenticalDataAndAlgorithm"
+
+pattern HyperParameterTuningJobWarmStartType_TransferLearning :: HyperParameterTuningJobWarmStartType
+pattern HyperParameterTuningJobWarmStartType_TransferLearning = HyperParameterTuningJobWarmStartType' "TransferLearning"
+
+{-# COMPLETE
+  HyperParameterTuningJobWarmStartType_IdenticalDataAndAlgorithm,
+  HyperParameterTuningJobWarmStartType_TransferLearning,
+  HyperParameterTuningJobWarmStartType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/HyperParameterTuningResourceConfig.hs b/gen/Amazonka/SageMaker/Types/HyperParameterTuningResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperParameterTuningResourceConfig.hs
@@ -0,0 +1,333 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperParameterTuningResourceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperParameterTuningResourceConfig 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 Amazonka.SageMaker.Types.HyperParameterTuningAllocationStrategy
+import Amazonka.SageMaker.Types.HyperParameterTuningInstanceConfig
+import Amazonka.SageMaker.Types.TrainingInstanceType
+
+-- | The configuration of resources, including compute instances and storage
+-- volumes for use in training jobs launched by hyperparameter tuning jobs.
+-- @HyperParameterTuningResourceConfig@ is similar to @ResourceConfig@, but
+-- has the additional @InstanceConfigs@ and @AllocationStrategy@ fields to
+-- allow for flexible instance management. Specify one or more instance
+-- types, count, and the allocation strategy for instance selection.
+--
+-- @HyperParameterTuningResourceConfig@ supports the capabilities of
+-- @ResourceConfig@ with the exception of @KeepAlivePeriodInSeconds@.
+-- Hyperparameter tuning jobs use warm pools by default, which reuse
+-- clusters between training jobs.
+--
+-- /See:/ 'newHyperParameterTuningResourceConfig' smart constructor.
+data HyperParameterTuningResourceConfig = HyperParameterTuningResourceConfig'
+  { -- | The strategy that determines the order of preference for resources
+    -- specified in @InstanceConfigs@ used in hyperparameter optimization.
+    allocationStrategy :: Prelude.Maybe HyperParameterTuningAllocationStrategy,
+    -- | A list containing the configuration(s) for one or more resources for
+    -- processing hyperparameter jobs. These resources include compute
+    -- instances and storage volumes to use in model training jobs launched by
+    -- hyperparameter tuning jobs. The @AllocationStrategy@ controls the order
+    -- in which multiple configurations provided in @InstanceConfigs@ are used.
+    --
+    -- If you only want to use a single instance configuration inside the
+    -- @HyperParameterTuningResourceConfig@ API, do not provide a value for
+    -- @InstanceConfigs@. Instead, use @InstanceType@, @VolumeSizeInGB@ and
+    -- @InstanceCount@. If you use @InstanceConfigs@, do not provide values for
+    -- @InstanceType@, @VolumeSizeInGB@ or @InstanceCount@.
+    instanceConfigs :: Prelude.Maybe (Prelude.NonEmpty HyperParameterTuningInstanceConfig),
+    -- | The number of compute instances of type @InstanceType@ to use. For
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-use-api.html distributed training>,
+    -- select a value greater than 1.
+    instanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The instance type used to run hyperparameter optimization tuning jobs.
+    -- See
+    -- <https://docs.aws.amazon.com/notebooks-available-instance-types.html descriptions of instance types>
+    -- for more information.
+    instanceType :: Prelude.Maybe TrainingInstanceType,
+    -- | A key used by Amazon Web Services Key Management Service to encrypt data
+    -- on the storage volume attached to the compute instances used to run the
+    -- training job. You can use either of the following formats to specify a
+    -- key.
+    --
+    -- KMS Key ID:
+    --
+    -- @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- Amazon Resource Name (ARN) of a KMS key:
+    --
+    -- @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- Some instances use local storage, which use a
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html hardware module to encrypt>
+    -- storage volumes. If you choose one of these instance types, you cannot
+    -- request a @VolumeKmsKeyId@. For a list of instance types that use local
+    -- storage, see
+    -- <http://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/ instance store volumes>.
+    -- For more information about Amazon Web Services Key Management Service,
+    -- see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-kms-permissions.html KMS encryption>
+    -- for more information.
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The volume size in GB for the storage volume to be used in processing
+    -- hyperparameter optimization jobs (optional). These volumes store model
+    -- artifacts, incremental states and optionally, scratch space for training
+    -- algorithms. Do not provide a value for this parameter if a value for
+    -- @InstanceConfigs@ is also specified.
+    --
+    -- Some instance types have a fixed total local storage size. If you select
+    -- one of these instances for training, @VolumeSizeInGB@ cannot be greater
+    -- than this total size. For a list of instance types with local instance
+    -- storage and their sizes, see
+    -- <http://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/ instance store volumes>.
+    --
+    -- SageMaker supports only the
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html General Purpose SSD (gp2)>
+    -- storage volume type.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperParameterTuningResourceConfig' 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:
+--
+-- 'allocationStrategy', 'hyperParameterTuningResourceConfig_allocationStrategy' - The strategy that determines the order of preference for resources
+-- specified in @InstanceConfigs@ used in hyperparameter optimization.
+--
+-- 'instanceConfigs', 'hyperParameterTuningResourceConfig_instanceConfigs' - A list containing the configuration(s) for one or more resources for
+-- processing hyperparameter jobs. These resources include compute
+-- instances and storage volumes to use in model training jobs launched by
+-- hyperparameter tuning jobs. The @AllocationStrategy@ controls the order
+-- in which multiple configurations provided in @InstanceConfigs@ are used.
+--
+-- If you only want to use a single instance configuration inside the
+-- @HyperParameterTuningResourceConfig@ API, do not provide a value for
+-- @InstanceConfigs@. Instead, use @InstanceType@, @VolumeSizeInGB@ and
+-- @InstanceCount@. If you use @InstanceConfigs@, do not provide values for
+-- @InstanceType@, @VolumeSizeInGB@ or @InstanceCount@.
+--
+-- 'instanceCount', 'hyperParameterTuningResourceConfig_instanceCount' - The number of compute instances of type @InstanceType@ to use. For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-use-api.html distributed training>,
+-- select a value greater than 1.
+--
+-- 'instanceType', 'hyperParameterTuningResourceConfig_instanceType' - The instance type used to run hyperparameter optimization tuning jobs.
+-- See
+-- <https://docs.aws.amazon.com/notebooks-available-instance-types.html descriptions of instance types>
+-- for more information.
+--
+-- 'volumeKmsKeyId', 'hyperParameterTuningResourceConfig_volumeKmsKeyId' - A key used by Amazon Web Services Key Management Service to encrypt data
+-- on the storage volume attached to the compute instances used to run the
+-- training job. You can use either of the following formats to specify a
+-- key.
+--
+-- KMS Key ID:
+--
+-- @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- Amazon Resource Name (ARN) of a KMS key:
+--
+-- @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- Some instances use local storage, which use a
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html hardware module to encrypt>
+-- storage volumes. If you choose one of these instance types, you cannot
+-- request a @VolumeKmsKeyId@. For a list of instance types that use local
+-- storage, see
+-- <http://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/ instance store volumes>.
+-- For more information about Amazon Web Services Key Management Service,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-kms-permissions.html KMS encryption>
+-- for more information.
+--
+-- 'volumeSizeInGB', 'hyperParameterTuningResourceConfig_volumeSizeInGB' - The volume size in GB for the storage volume to be used in processing
+-- hyperparameter optimization jobs (optional). These volumes store model
+-- artifacts, incremental states and optionally, scratch space for training
+-- algorithms. Do not provide a value for this parameter if a value for
+-- @InstanceConfigs@ is also specified.
+--
+-- Some instance types have a fixed total local storage size. If you select
+-- one of these instances for training, @VolumeSizeInGB@ cannot be greater
+-- than this total size. For a list of instance types with local instance
+-- storage and their sizes, see
+-- <http://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/ instance store volumes>.
+--
+-- SageMaker supports only the
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html General Purpose SSD (gp2)>
+-- storage volume type.
+newHyperParameterTuningResourceConfig ::
+  HyperParameterTuningResourceConfig
+newHyperParameterTuningResourceConfig =
+  HyperParameterTuningResourceConfig'
+    { allocationStrategy =
+        Prelude.Nothing,
+      instanceConfigs = Prelude.Nothing,
+      instanceCount = Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      volumeKmsKeyId = Prelude.Nothing,
+      volumeSizeInGB = Prelude.Nothing
+    }
+
+-- | The strategy that determines the order of preference for resources
+-- specified in @InstanceConfigs@ used in hyperparameter optimization.
+hyperParameterTuningResourceConfig_allocationStrategy :: Lens.Lens' HyperParameterTuningResourceConfig (Prelude.Maybe HyperParameterTuningAllocationStrategy)
+hyperParameterTuningResourceConfig_allocationStrategy = Lens.lens (\HyperParameterTuningResourceConfig' {allocationStrategy} -> allocationStrategy) (\s@HyperParameterTuningResourceConfig' {} a -> s {allocationStrategy = a} :: HyperParameterTuningResourceConfig)
+
+-- | A list containing the configuration(s) for one or more resources for
+-- processing hyperparameter jobs. These resources include compute
+-- instances and storage volumes to use in model training jobs launched by
+-- hyperparameter tuning jobs. The @AllocationStrategy@ controls the order
+-- in which multiple configurations provided in @InstanceConfigs@ are used.
+--
+-- If you only want to use a single instance configuration inside the
+-- @HyperParameterTuningResourceConfig@ API, do not provide a value for
+-- @InstanceConfigs@. Instead, use @InstanceType@, @VolumeSizeInGB@ and
+-- @InstanceCount@. If you use @InstanceConfigs@, do not provide values for
+-- @InstanceType@, @VolumeSizeInGB@ or @InstanceCount@.
+hyperParameterTuningResourceConfig_instanceConfigs :: Lens.Lens' HyperParameterTuningResourceConfig (Prelude.Maybe (Prelude.NonEmpty HyperParameterTuningInstanceConfig))
+hyperParameterTuningResourceConfig_instanceConfigs = Lens.lens (\HyperParameterTuningResourceConfig' {instanceConfigs} -> instanceConfigs) (\s@HyperParameterTuningResourceConfig' {} a -> s {instanceConfigs = a} :: HyperParameterTuningResourceConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of compute instances of type @InstanceType@ to use. For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-use-api.html distributed training>,
+-- select a value greater than 1.
+hyperParameterTuningResourceConfig_instanceCount :: Lens.Lens' HyperParameterTuningResourceConfig (Prelude.Maybe Prelude.Natural)
+hyperParameterTuningResourceConfig_instanceCount = Lens.lens (\HyperParameterTuningResourceConfig' {instanceCount} -> instanceCount) (\s@HyperParameterTuningResourceConfig' {} a -> s {instanceCount = a} :: HyperParameterTuningResourceConfig)
+
+-- | The instance type used to run hyperparameter optimization tuning jobs.
+-- See
+-- <https://docs.aws.amazon.com/notebooks-available-instance-types.html descriptions of instance types>
+-- for more information.
+hyperParameterTuningResourceConfig_instanceType :: Lens.Lens' HyperParameterTuningResourceConfig (Prelude.Maybe TrainingInstanceType)
+hyperParameterTuningResourceConfig_instanceType = Lens.lens (\HyperParameterTuningResourceConfig' {instanceType} -> instanceType) (\s@HyperParameterTuningResourceConfig' {} a -> s {instanceType = a} :: HyperParameterTuningResourceConfig)
+
+-- | A key used by Amazon Web Services Key Management Service to encrypt data
+-- on the storage volume attached to the compute instances used to run the
+-- training job. You can use either of the following formats to specify a
+-- key.
+--
+-- KMS Key ID:
+--
+-- @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- Amazon Resource Name (ARN) of a KMS key:
+--
+-- @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- Some instances use local storage, which use a
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html hardware module to encrypt>
+-- storage volumes. If you choose one of these instance types, you cannot
+-- request a @VolumeKmsKeyId@. For a list of instance types that use local
+-- storage, see
+-- <http://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/ instance store volumes>.
+-- For more information about Amazon Web Services Key Management Service,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-kms-permissions.html KMS encryption>
+-- for more information.
+hyperParameterTuningResourceConfig_volumeKmsKeyId :: Lens.Lens' HyperParameterTuningResourceConfig (Prelude.Maybe Prelude.Text)
+hyperParameterTuningResourceConfig_volumeKmsKeyId = Lens.lens (\HyperParameterTuningResourceConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@HyperParameterTuningResourceConfig' {} a -> s {volumeKmsKeyId = a} :: HyperParameterTuningResourceConfig)
+
+-- | The volume size in GB for the storage volume to be used in processing
+-- hyperparameter optimization jobs (optional). These volumes store model
+-- artifacts, incremental states and optionally, scratch space for training
+-- algorithms. Do not provide a value for this parameter if a value for
+-- @InstanceConfigs@ is also specified.
+--
+-- Some instance types have a fixed total local storage size. If you select
+-- one of these instances for training, @VolumeSizeInGB@ cannot be greater
+-- than this total size. For a list of instance types with local instance
+-- storage and their sizes, see
+-- <http://aws.amazon.com/releasenotes/host-instance-storage-volumes-table/ instance store volumes>.
+--
+-- SageMaker supports only the
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html General Purpose SSD (gp2)>
+-- storage volume type.
+hyperParameterTuningResourceConfig_volumeSizeInGB :: Lens.Lens' HyperParameterTuningResourceConfig (Prelude.Maybe Prelude.Natural)
+hyperParameterTuningResourceConfig_volumeSizeInGB = Lens.lens (\HyperParameterTuningResourceConfig' {volumeSizeInGB} -> volumeSizeInGB) (\s@HyperParameterTuningResourceConfig' {} a -> s {volumeSizeInGB = a} :: HyperParameterTuningResourceConfig)
+
+instance
+  Data.FromJSON
+    HyperParameterTuningResourceConfig
+  where
+  parseJSON =
+    Data.withObject
+      "HyperParameterTuningResourceConfig"
+      ( \x ->
+          HyperParameterTuningResourceConfig'
+            Prelude.<$> (x Data..:? "AllocationStrategy")
+            Prelude.<*> (x Data..:? "InstanceConfigs")
+            Prelude.<*> (x Data..:? "InstanceCount")
+            Prelude.<*> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..:? "VolumeSizeInGB")
+      )
+
+instance
+  Prelude.Hashable
+    HyperParameterTuningResourceConfig
+  where
+  hashWithSalt
+    _salt
+    HyperParameterTuningResourceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` allocationStrategy
+        `Prelude.hashWithSalt` instanceConfigs
+        `Prelude.hashWithSalt` instanceCount
+        `Prelude.hashWithSalt` instanceType
+        `Prelude.hashWithSalt` volumeKmsKeyId
+        `Prelude.hashWithSalt` volumeSizeInGB
+
+instance
+  Prelude.NFData
+    HyperParameterTuningResourceConfig
+  where
+  rnf HyperParameterTuningResourceConfig' {..} =
+    Prelude.rnf allocationStrategy
+      `Prelude.seq` Prelude.rnf instanceConfigs
+      `Prelude.seq` Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+
+instance
+  Data.ToJSON
+    HyperParameterTuningResourceConfig
+  where
+  toJSON HyperParameterTuningResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AllocationStrategy" Data..=)
+              Prelude.<$> allocationStrategy,
+            ("InstanceConfigs" Data..=)
+              Prelude.<$> instanceConfigs,
+            ("InstanceCount" Data..=) Prelude.<$> instanceCount,
+            ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            ("VolumeSizeInGB" Data..=)
+              Prelude.<$> volumeSizeInGB
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/HyperbandStrategyConfig.hs b/gen/Amazonka/SageMaker/Types/HyperbandStrategyConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/HyperbandStrategyConfig.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.HyperbandStrategyConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.HyperbandStrategyConfig 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
+
+-- | The configuration for @Hyperband@, a multi-fidelity based hyperparameter
+-- tuning strategy. @Hyperband@ uses the final and intermediate results of
+-- a training job to dynamically allocate resources to utilized
+-- hyperparameter configurations while automatically stopping
+-- under-performing configurations. This parameter should be provided only
+-- if @Hyperband@ is selected as the @StrategyConfig@ under the
+-- @HyperParameterTuningJobConfig@ API.
+--
+-- /See:/ 'newHyperbandStrategyConfig' smart constructor.
+data HyperbandStrategyConfig = HyperbandStrategyConfig'
+  { -- | The maximum number of resources (such as epochs) that can be used by a
+    -- training job launched by a hyperparameter tuning job. Once a job reaches
+    -- the @MaxResource@ value, it is stopped. If a value for @MaxResource@ is
+    -- not provided, and @Hyperband@ is selected as the hyperparameter tuning
+    -- strategy, @HyperbandTrainingJ@ attempts to infer @MaxResource@ from the
+    -- following keys (if present) in
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters StaticsHyperParameters>:
+    --
+    -- -   @epochs@
+    --
+    -- -   @numepochs@
+    --
+    -- -   @n-epochs@
+    --
+    -- -   @n_epochs@
+    --
+    -- -   @num_epochs@
+    --
+    -- If @HyperbandStrategyConfig@ is unable to infer a value for
+    -- @MaxResource@, it generates a validation error. The maximum value is
+    -- 20,000 epochs. All metrics that correspond to an objective metric are
+    -- used to derive
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html early stopping decisions>.
+    -- For
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html distributive>
+    -- training jobs, ensure that duplicate metrics are not printed in the logs
+    -- across the individual nodes in a training job. If multiple nodes are
+    -- publishing duplicate or incorrect metrics, training jobs may make an
+    -- incorrect stopping decision and stop the job prematurely.
+    maxResource :: Prelude.Maybe Prelude.Natural,
+    -- | The minimum number of resources (such as epochs) that can be used by a
+    -- training job launched by a hyperparameter tuning job. If the value for
+    -- @MinResource@ has not been reached, the training job will not be stopped
+    -- by @Hyperband@.
+    minResource :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HyperbandStrategyConfig' 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:
+--
+-- 'maxResource', 'hyperbandStrategyConfig_maxResource' - The maximum number of resources (such as epochs) that can be used by a
+-- training job launched by a hyperparameter tuning job. Once a job reaches
+-- the @MaxResource@ value, it is stopped. If a value for @MaxResource@ is
+-- not provided, and @Hyperband@ is selected as the hyperparameter tuning
+-- strategy, @HyperbandTrainingJ@ attempts to infer @MaxResource@ from the
+-- following keys (if present) in
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters StaticsHyperParameters>:
+--
+-- -   @epochs@
+--
+-- -   @numepochs@
+--
+-- -   @n-epochs@
+--
+-- -   @n_epochs@
+--
+-- -   @num_epochs@
+--
+-- If @HyperbandStrategyConfig@ is unable to infer a value for
+-- @MaxResource@, it generates a validation error. The maximum value is
+-- 20,000 epochs. All metrics that correspond to an objective metric are
+-- used to derive
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html early stopping decisions>.
+-- For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html distributive>
+-- training jobs, ensure that duplicate metrics are not printed in the logs
+-- across the individual nodes in a training job. If multiple nodes are
+-- publishing duplicate or incorrect metrics, training jobs may make an
+-- incorrect stopping decision and stop the job prematurely.
+--
+-- 'minResource', 'hyperbandStrategyConfig_minResource' - The minimum number of resources (such as epochs) that can be used by a
+-- training job launched by a hyperparameter tuning job. If the value for
+-- @MinResource@ has not been reached, the training job will not be stopped
+-- by @Hyperband@.
+newHyperbandStrategyConfig ::
+  HyperbandStrategyConfig
+newHyperbandStrategyConfig =
+  HyperbandStrategyConfig'
+    { maxResource =
+        Prelude.Nothing,
+      minResource = Prelude.Nothing
+    }
+
+-- | The maximum number of resources (such as epochs) that can be used by a
+-- training job launched by a hyperparameter tuning job. Once a job reaches
+-- the @MaxResource@ value, it is stopped. If a value for @MaxResource@ is
+-- not provided, and @Hyperband@ is selected as the hyperparameter tuning
+-- strategy, @HyperbandTrainingJ@ attempts to infer @MaxResource@ from the
+-- following keys (if present) in
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters StaticsHyperParameters>:
+--
+-- -   @epochs@
+--
+-- -   @numepochs@
+--
+-- -   @n-epochs@
+--
+-- -   @n_epochs@
+--
+-- -   @num_epochs@
+--
+-- If @HyperbandStrategyConfig@ is unable to infer a value for
+-- @MaxResource@, it generates a validation error. The maximum value is
+-- 20,000 epochs. All metrics that correspond to an objective metric are
+-- used to derive
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html early stopping decisions>.
+-- For
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html distributive>
+-- training jobs, ensure that duplicate metrics are not printed in the logs
+-- across the individual nodes in a training job. If multiple nodes are
+-- publishing duplicate or incorrect metrics, training jobs may make an
+-- incorrect stopping decision and stop the job prematurely.
+hyperbandStrategyConfig_maxResource :: Lens.Lens' HyperbandStrategyConfig (Prelude.Maybe Prelude.Natural)
+hyperbandStrategyConfig_maxResource = Lens.lens (\HyperbandStrategyConfig' {maxResource} -> maxResource) (\s@HyperbandStrategyConfig' {} a -> s {maxResource = a} :: HyperbandStrategyConfig)
+
+-- | The minimum number of resources (such as epochs) that can be used by a
+-- training job launched by a hyperparameter tuning job. If the value for
+-- @MinResource@ has not been reached, the training job will not be stopped
+-- by @Hyperband@.
+hyperbandStrategyConfig_minResource :: Lens.Lens' HyperbandStrategyConfig (Prelude.Maybe Prelude.Natural)
+hyperbandStrategyConfig_minResource = Lens.lens (\HyperbandStrategyConfig' {minResource} -> minResource) (\s@HyperbandStrategyConfig' {} a -> s {minResource = a} :: HyperbandStrategyConfig)
+
+instance Data.FromJSON HyperbandStrategyConfig where
+  parseJSON =
+    Data.withObject
+      "HyperbandStrategyConfig"
+      ( \x ->
+          HyperbandStrategyConfig'
+            Prelude.<$> (x Data..:? "MaxResource")
+            Prelude.<*> (x Data..:? "MinResource")
+      )
+
+instance Prelude.Hashable HyperbandStrategyConfig where
+  hashWithSalt _salt HyperbandStrategyConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResource
+      `Prelude.hashWithSalt` minResource
+
+instance Prelude.NFData HyperbandStrategyConfig where
+  rnf HyperbandStrategyConfig' {..} =
+    Prelude.rnf maxResource
+      `Prelude.seq` Prelude.rnf minResource
+
+instance Data.ToJSON HyperbandStrategyConfig where
+  toJSON HyperbandStrategyConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResource" Data..=) Prelude.<$> maxResource,
+            ("MinResource" Data..=) Prelude.<$> minResource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Image.hs b/gen/Amazonka/SageMaker/Types/Image.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Image.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Image
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Image 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 Amazonka.SageMaker.Types.ImageStatus
+
+-- | A SageMaker image. A SageMaker image represents a set of container
+-- images that are derived from a common base container image. Each of
+-- these container images is represented by a SageMaker @ImageVersion@.
+--
+-- /See:/ 'newImage' smart constructor.
+data Image = Image'
+  { -- | The description of the image.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the image as displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When a create, update, or delete operation fails, the reason for the
+    -- failure.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | When the image was created.
+    creationTime :: Data.POSIX,
+    -- | The ARN of the image.
+    imageArn :: Prelude.Text,
+    -- | The name of the image.
+    imageName :: Prelude.Text,
+    -- | The status of the image.
+    imageStatus :: ImageStatus,
+    -- | When the image was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Image' 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:
+--
+-- 'description', 'image_description' - The description of the image.
+--
+-- 'displayName', 'image_displayName' - The name of the image as displayed.
+--
+-- 'failureReason', 'image_failureReason' - When a create, update, or delete operation fails, the reason for the
+-- failure.
+--
+-- 'creationTime', 'image_creationTime' - When the image was created.
+--
+-- 'imageArn', 'image_imageArn' - The ARN of the image.
+--
+-- 'imageName', 'image_imageName' - The name of the image.
+--
+-- 'imageStatus', 'image_imageStatus' - The status of the image.
+--
+-- 'lastModifiedTime', 'image_lastModifiedTime' - When the image was last modified.
+newImage ::
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'imageArn'
+  Prelude.Text ->
+  -- | 'imageName'
+  Prelude.Text ->
+  -- | 'imageStatus'
+  ImageStatus ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  Image
+newImage
+  pCreationTime_
+  pImageArn_
+  pImageName_
+  pImageStatus_
+  pLastModifiedTime_ =
+    Image'
+      { description = Prelude.Nothing,
+        displayName = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        imageArn = pImageArn_,
+        imageName = pImageName_,
+        imageStatus = pImageStatus_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | The description of the image.
+image_description :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)
+image_description = Lens.lens (\Image' {description} -> description) (\s@Image' {} a -> s {description = a} :: Image)
+
+-- | The name of the image as displayed.
+image_displayName :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)
+image_displayName = Lens.lens (\Image' {displayName} -> displayName) (\s@Image' {} a -> s {displayName = a} :: Image)
+
+-- | When a create, update, or delete operation fails, the reason for the
+-- failure.
+image_failureReason :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)
+image_failureReason = Lens.lens (\Image' {failureReason} -> failureReason) (\s@Image' {} a -> s {failureReason = a} :: Image)
+
+-- | When the image was created.
+image_creationTime :: Lens.Lens' Image Prelude.UTCTime
+image_creationTime = Lens.lens (\Image' {creationTime} -> creationTime) (\s@Image' {} a -> s {creationTime = a} :: Image) Prelude.. Data._Time
+
+-- | The ARN of the image.
+image_imageArn :: Lens.Lens' Image Prelude.Text
+image_imageArn = Lens.lens (\Image' {imageArn} -> imageArn) (\s@Image' {} a -> s {imageArn = a} :: Image)
+
+-- | The name of the image.
+image_imageName :: Lens.Lens' Image Prelude.Text
+image_imageName = Lens.lens (\Image' {imageName} -> imageName) (\s@Image' {} a -> s {imageName = a} :: Image)
+
+-- | The status of the image.
+image_imageStatus :: Lens.Lens' Image ImageStatus
+image_imageStatus = Lens.lens (\Image' {imageStatus} -> imageStatus) (\s@Image' {} a -> s {imageStatus = a} :: Image)
+
+-- | When the image was last modified.
+image_lastModifiedTime :: Lens.Lens' Image Prelude.UTCTime
+image_lastModifiedTime = Lens.lens (\Image' {lastModifiedTime} -> lastModifiedTime) (\s@Image' {} a -> s {lastModifiedTime = a} :: Image) Prelude.. Data._Time
+
+instance Data.FromJSON Image where
+  parseJSON =
+    Data.withObject
+      "Image"
+      ( \x ->
+          Image'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "ImageArn")
+            Prelude.<*> (x Data..: "ImageName")
+            Prelude.<*> (x Data..: "ImageStatus")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable Image where
+  hashWithSalt _salt Image' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` imageArn
+      `Prelude.hashWithSalt` imageName
+      `Prelude.hashWithSalt` imageStatus
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData Image where
+  rnf Image' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf imageArn
+      `Prelude.seq` Prelude.rnf imageName
+      `Prelude.seq` Prelude.rnf imageStatus
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/ImageConfig.hs b/gen/Amazonka/SageMaker/Types/ImageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageConfig.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ImageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageConfig 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 Amazonka.SageMaker.Types.RepositoryAccessMode
+import Amazonka.SageMaker.Types.RepositoryAuthConfig
+
+-- | Specifies whether the model container is in Amazon ECR or a private
+-- Docker registry accessible from your Amazon Virtual Private Cloud (VPC).
+--
+-- /See:/ 'newImageConfig' smart constructor.
+data ImageConfig = ImageConfig'
+  { -- | (Optional) Specifies an authentication configuration for the private
+    -- docker registry where your model image is hosted. Specify a value for
+    -- this property only if you specified @Vpc@ as the value for the
+    -- @RepositoryAccessMode@ field, and the private Docker registry where the
+    -- model image is hosted requires authentication.
+    repositoryAuthConfig :: Prelude.Maybe RepositoryAuthConfig,
+    -- | Set this to one of the following values:
+    --
+    -- -   @Platform@ - The model image is hosted in Amazon ECR.
+    --
+    -- -   @Vpc@ - The model image is hosted in a private Docker registry in
+    --     your VPC.
+    repositoryAccessMode :: RepositoryAccessMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImageConfig' 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:
+--
+-- 'repositoryAuthConfig', 'imageConfig_repositoryAuthConfig' - (Optional) Specifies an authentication configuration for the private
+-- docker registry where your model image is hosted. Specify a value for
+-- this property only if you specified @Vpc@ as the value for the
+-- @RepositoryAccessMode@ field, and the private Docker registry where the
+-- model image is hosted requires authentication.
+--
+-- 'repositoryAccessMode', 'imageConfig_repositoryAccessMode' - Set this to one of the following values:
+--
+-- -   @Platform@ - The model image is hosted in Amazon ECR.
+--
+-- -   @Vpc@ - The model image is hosted in a private Docker registry in
+--     your VPC.
+newImageConfig ::
+  -- | 'repositoryAccessMode'
+  RepositoryAccessMode ->
+  ImageConfig
+newImageConfig pRepositoryAccessMode_ =
+  ImageConfig'
+    { repositoryAuthConfig =
+        Prelude.Nothing,
+      repositoryAccessMode = pRepositoryAccessMode_
+    }
+
+-- | (Optional) Specifies an authentication configuration for the private
+-- docker registry where your model image is hosted. Specify a value for
+-- this property only if you specified @Vpc@ as the value for the
+-- @RepositoryAccessMode@ field, and the private Docker registry where the
+-- model image is hosted requires authentication.
+imageConfig_repositoryAuthConfig :: Lens.Lens' ImageConfig (Prelude.Maybe RepositoryAuthConfig)
+imageConfig_repositoryAuthConfig = Lens.lens (\ImageConfig' {repositoryAuthConfig} -> repositoryAuthConfig) (\s@ImageConfig' {} a -> s {repositoryAuthConfig = a} :: ImageConfig)
+
+-- | Set this to one of the following values:
+--
+-- -   @Platform@ - The model image is hosted in Amazon ECR.
+--
+-- -   @Vpc@ - The model image is hosted in a private Docker registry in
+--     your VPC.
+imageConfig_repositoryAccessMode :: Lens.Lens' ImageConfig RepositoryAccessMode
+imageConfig_repositoryAccessMode = Lens.lens (\ImageConfig' {repositoryAccessMode} -> repositoryAccessMode) (\s@ImageConfig' {} a -> s {repositoryAccessMode = a} :: ImageConfig)
+
+instance Data.FromJSON ImageConfig where
+  parseJSON =
+    Data.withObject
+      "ImageConfig"
+      ( \x ->
+          ImageConfig'
+            Prelude.<$> (x Data..:? "RepositoryAuthConfig")
+            Prelude.<*> (x Data..: "RepositoryAccessMode")
+      )
+
+instance Prelude.Hashable ImageConfig where
+  hashWithSalt _salt ImageConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` repositoryAuthConfig
+      `Prelude.hashWithSalt` repositoryAccessMode
+
+instance Prelude.NFData ImageConfig where
+  rnf ImageConfig' {..} =
+    Prelude.rnf repositoryAuthConfig
+      `Prelude.seq` Prelude.rnf repositoryAccessMode
+
+instance Data.ToJSON ImageConfig where
+  toJSON ImageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RepositoryAuthConfig" Data..=)
+              Prelude.<$> repositoryAuthConfig,
+            Prelude.Just
+              ( "RepositoryAccessMode"
+                  Data..= repositoryAccessMode
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ImageSortBy.hs b/gen/Amazonka/SageMaker/Types/ImageSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ImageSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageSortBy
+  ( ImageSortBy
+      ( ..,
+        ImageSortBy_CREATION_TIME,
+        ImageSortBy_IMAGE_NAME,
+        ImageSortBy_LAST_MODIFIED_TIME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImageSortBy = ImageSortBy'
+  { fromImageSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImageSortBy_CREATION_TIME :: ImageSortBy
+pattern ImageSortBy_CREATION_TIME = ImageSortBy' "CREATION_TIME"
+
+pattern ImageSortBy_IMAGE_NAME :: ImageSortBy
+pattern ImageSortBy_IMAGE_NAME = ImageSortBy' "IMAGE_NAME"
+
+pattern ImageSortBy_LAST_MODIFIED_TIME :: ImageSortBy
+pattern ImageSortBy_LAST_MODIFIED_TIME = ImageSortBy' "LAST_MODIFIED_TIME"
+
+{-# COMPLETE
+  ImageSortBy_CREATION_TIME,
+  ImageSortBy_IMAGE_NAME,
+  ImageSortBy_LAST_MODIFIED_TIME,
+  ImageSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ImageSortOrder.hs b/gen/Amazonka/SageMaker/Types/ImageSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ImageSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageSortOrder
+  ( ImageSortOrder
+      ( ..,
+        ImageSortOrder_ASCENDING,
+        ImageSortOrder_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImageSortOrder = ImageSortOrder'
+  { fromImageSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImageSortOrder_ASCENDING :: ImageSortOrder
+pattern ImageSortOrder_ASCENDING = ImageSortOrder' "ASCENDING"
+
+pattern ImageSortOrder_DESCENDING :: ImageSortOrder
+pattern ImageSortOrder_DESCENDING = ImageSortOrder' "DESCENDING"
+
+{-# COMPLETE
+  ImageSortOrder_ASCENDING,
+  ImageSortOrder_DESCENDING,
+  ImageSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ImageStatus.hs b/gen/Amazonka/SageMaker/Types/ImageStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ImageStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageStatus
+  ( ImageStatus
+      ( ..,
+        ImageStatus_CREATED,
+        ImageStatus_CREATE_FAILED,
+        ImageStatus_CREATING,
+        ImageStatus_DELETE_FAILED,
+        ImageStatus_DELETING,
+        ImageStatus_UPDATE_FAILED,
+        ImageStatus_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImageStatus = ImageStatus'
+  { fromImageStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImageStatus_CREATED :: ImageStatus
+pattern ImageStatus_CREATED = ImageStatus' "CREATED"
+
+pattern ImageStatus_CREATE_FAILED :: ImageStatus
+pattern ImageStatus_CREATE_FAILED = ImageStatus' "CREATE_FAILED"
+
+pattern ImageStatus_CREATING :: ImageStatus
+pattern ImageStatus_CREATING = ImageStatus' "CREATING"
+
+pattern ImageStatus_DELETE_FAILED :: ImageStatus
+pattern ImageStatus_DELETE_FAILED = ImageStatus' "DELETE_FAILED"
+
+pattern ImageStatus_DELETING :: ImageStatus
+pattern ImageStatus_DELETING = ImageStatus' "DELETING"
+
+pattern ImageStatus_UPDATE_FAILED :: ImageStatus
+pattern ImageStatus_UPDATE_FAILED = ImageStatus' "UPDATE_FAILED"
+
+pattern ImageStatus_UPDATING :: ImageStatus
+pattern ImageStatus_UPDATING = ImageStatus' "UPDATING"
+
+{-# COMPLETE
+  ImageStatus_CREATED,
+  ImageStatus_CREATE_FAILED,
+  ImageStatus_CREATING,
+  ImageStatus_DELETE_FAILED,
+  ImageStatus_DELETING,
+  ImageStatus_UPDATE_FAILED,
+  ImageStatus_UPDATING,
+  ImageStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ImageVersion.hs b/gen/Amazonka/SageMaker/Types/ImageVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageVersion.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ImageVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageVersion 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 Amazonka.SageMaker.Types.ImageVersionStatus
+
+-- | A version of a SageMaker @Image@. A version represents an existing
+-- container image.
+--
+-- /See:/ 'newImageVersion' smart constructor.
+data ImageVersion = ImageVersion'
+  { -- | When a create or delete operation fails, the reason for the failure.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | When the version was created.
+    creationTime :: Data.POSIX,
+    -- | The ARN of the image the version is based on.
+    imageArn :: Prelude.Text,
+    -- | The ARN of the version.
+    imageVersionArn :: Prelude.Text,
+    -- | The status of the version.
+    imageVersionStatus :: ImageVersionStatus,
+    -- | When the version was last modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The version number.
+    version :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImageVersion' 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:
+--
+-- 'failureReason', 'imageVersion_failureReason' - When a create or delete operation fails, the reason for the failure.
+--
+-- 'creationTime', 'imageVersion_creationTime' - When the version was created.
+--
+-- 'imageArn', 'imageVersion_imageArn' - The ARN of the image the version is based on.
+--
+-- 'imageVersionArn', 'imageVersion_imageVersionArn' - The ARN of the version.
+--
+-- 'imageVersionStatus', 'imageVersion_imageVersionStatus' - The status of the version.
+--
+-- 'lastModifiedTime', 'imageVersion_lastModifiedTime' - When the version was last modified.
+--
+-- 'version', 'imageVersion_version' - The version number.
+newImageVersion ::
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'imageArn'
+  Prelude.Text ->
+  -- | 'imageVersionArn'
+  Prelude.Text ->
+  -- | 'imageVersionStatus'
+  ImageVersionStatus ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'version'
+  Prelude.Natural ->
+  ImageVersion
+newImageVersion
+  pCreationTime_
+  pImageArn_
+  pImageVersionArn_
+  pImageVersionStatus_
+  pLastModifiedTime_
+  pVersion_ =
+    ImageVersion'
+      { failureReason = Prelude.Nothing,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        imageArn = pImageArn_,
+        imageVersionArn = pImageVersionArn_,
+        imageVersionStatus = pImageVersionStatus_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        version = pVersion_
+      }
+
+-- | When a create or delete operation fails, the reason for the failure.
+imageVersion_failureReason :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)
+imageVersion_failureReason = Lens.lens (\ImageVersion' {failureReason} -> failureReason) (\s@ImageVersion' {} a -> s {failureReason = a} :: ImageVersion)
+
+-- | When the version was created.
+imageVersion_creationTime :: Lens.Lens' ImageVersion Prelude.UTCTime
+imageVersion_creationTime = Lens.lens (\ImageVersion' {creationTime} -> creationTime) (\s@ImageVersion' {} a -> s {creationTime = a} :: ImageVersion) Prelude.. Data._Time
+
+-- | The ARN of the image the version is based on.
+imageVersion_imageArn :: Lens.Lens' ImageVersion Prelude.Text
+imageVersion_imageArn = Lens.lens (\ImageVersion' {imageArn} -> imageArn) (\s@ImageVersion' {} a -> s {imageArn = a} :: ImageVersion)
+
+-- | The ARN of the version.
+imageVersion_imageVersionArn :: Lens.Lens' ImageVersion Prelude.Text
+imageVersion_imageVersionArn = Lens.lens (\ImageVersion' {imageVersionArn} -> imageVersionArn) (\s@ImageVersion' {} a -> s {imageVersionArn = a} :: ImageVersion)
+
+-- | The status of the version.
+imageVersion_imageVersionStatus :: Lens.Lens' ImageVersion ImageVersionStatus
+imageVersion_imageVersionStatus = Lens.lens (\ImageVersion' {imageVersionStatus} -> imageVersionStatus) (\s@ImageVersion' {} a -> s {imageVersionStatus = a} :: ImageVersion)
+
+-- | When the version was last modified.
+imageVersion_lastModifiedTime :: Lens.Lens' ImageVersion Prelude.UTCTime
+imageVersion_lastModifiedTime = Lens.lens (\ImageVersion' {lastModifiedTime} -> lastModifiedTime) (\s@ImageVersion' {} a -> s {lastModifiedTime = a} :: ImageVersion) Prelude.. Data._Time
+
+-- | The version number.
+imageVersion_version :: Lens.Lens' ImageVersion Prelude.Natural
+imageVersion_version = Lens.lens (\ImageVersion' {version} -> version) (\s@ImageVersion' {} a -> s {version = a} :: ImageVersion)
+
+instance Data.FromJSON ImageVersion where
+  parseJSON =
+    Data.withObject
+      "ImageVersion"
+      ( \x ->
+          ImageVersion'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "ImageArn")
+            Prelude.<*> (x Data..: "ImageVersionArn")
+            Prelude.<*> (x Data..: "ImageVersionStatus")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "Version")
+      )
+
+instance Prelude.Hashable ImageVersion where
+  hashWithSalt _salt ImageVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` imageArn
+      `Prelude.hashWithSalt` imageVersionArn
+      `Prelude.hashWithSalt` imageVersionStatus
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` version
+
+instance Prelude.NFData ImageVersion where
+  rnf ImageVersion' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf imageArn
+      `Prelude.seq` Prelude.rnf imageVersionArn
+      `Prelude.seq` Prelude.rnf imageVersionStatus
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf version
diff --git a/gen/Amazonka/SageMaker/Types/ImageVersionSortBy.hs b/gen/Amazonka/SageMaker/Types/ImageVersionSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageVersionSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ImageVersionSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageVersionSortBy
+  ( ImageVersionSortBy
+      ( ..,
+        ImageVersionSortBy_CREATION_TIME,
+        ImageVersionSortBy_LAST_MODIFIED_TIME,
+        ImageVersionSortBy_VERSION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImageVersionSortBy = ImageVersionSortBy'
+  { fromImageVersionSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImageVersionSortBy_CREATION_TIME :: ImageVersionSortBy
+pattern ImageVersionSortBy_CREATION_TIME = ImageVersionSortBy' "CREATION_TIME"
+
+pattern ImageVersionSortBy_LAST_MODIFIED_TIME :: ImageVersionSortBy
+pattern ImageVersionSortBy_LAST_MODIFIED_TIME = ImageVersionSortBy' "LAST_MODIFIED_TIME"
+
+pattern ImageVersionSortBy_VERSION :: ImageVersionSortBy
+pattern ImageVersionSortBy_VERSION = ImageVersionSortBy' "VERSION"
+
+{-# COMPLETE
+  ImageVersionSortBy_CREATION_TIME,
+  ImageVersionSortBy_LAST_MODIFIED_TIME,
+  ImageVersionSortBy_VERSION,
+  ImageVersionSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ImageVersionSortOrder.hs b/gen/Amazonka/SageMaker/Types/ImageVersionSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageVersionSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ImageVersionSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageVersionSortOrder
+  ( ImageVersionSortOrder
+      ( ..,
+        ImageVersionSortOrder_ASCENDING,
+        ImageVersionSortOrder_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImageVersionSortOrder = ImageVersionSortOrder'
+  { fromImageVersionSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImageVersionSortOrder_ASCENDING :: ImageVersionSortOrder
+pattern ImageVersionSortOrder_ASCENDING = ImageVersionSortOrder' "ASCENDING"
+
+pattern ImageVersionSortOrder_DESCENDING :: ImageVersionSortOrder
+pattern ImageVersionSortOrder_DESCENDING = ImageVersionSortOrder' "DESCENDING"
+
+{-# COMPLETE
+  ImageVersionSortOrder_ASCENDING,
+  ImageVersionSortOrder_DESCENDING,
+  ImageVersionSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ImageVersionStatus.hs b/gen/Amazonka/SageMaker/Types/ImageVersionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ImageVersionStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ImageVersionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ImageVersionStatus
+  ( ImageVersionStatus
+      ( ..,
+        ImageVersionStatus_CREATED,
+        ImageVersionStatus_CREATE_FAILED,
+        ImageVersionStatus_CREATING,
+        ImageVersionStatus_DELETE_FAILED,
+        ImageVersionStatus_DELETING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImageVersionStatus = ImageVersionStatus'
+  { fromImageVersionStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImageVersionStatus_CREATED :: ImageVersionStatus
+pattern ImageVersionStatus_CREATED = ImageVersionStatus' "CREATED"
+
+pattern ImageVersionStatus_CREATE_FAILED :: ImageVersionStatus
+pattern ImageVersionStatus_CREATE_FAILED = ImageVersionStatus' "CREATE_FAILED"
+
+pattern ImageVersionStatus_CREATING :: ImageVersionStatus
+pattern ImageVersionStatus_CREATING = ImageVersionStatus' "CREATING"
+
+pattern ImageVersionStatus_DELETE_FAILED :: ImageVersionStatus
+pattern ImageVersionStatus_DELETE_FAILED = ImageVersionStatus' "DELETE_FAILED"
+
+pattern ImageVersionStatus_DELETING :: ImageVersionStatus
+pattern ImageVersionStatus_DELETING = ImageVersionStatus' "DELETING"
+
+{-# COMPLETE
+  ImageVersionStatus_CREATED,
+  ImageVersionStatus_CREATE_FAILED,
+  ImageVersionStatus_CREATING,
+  ImageVersionStatus_DELETE_FAILED,
+  ImageVersionStatus_DELETING,
+  ImageVersionStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExecutionConfig.hs b/gen/Amazonka/SageMaker/Types/InferenceExecutionConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExecutionConfig.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceExecutionConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExecutionConfig 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 Amazonka.SageMaker.Types.InferenceExecutionMode
+
+-- | Specifies details about how containers in a multi-container endpoint are
+-- run.
+--
+-- /See:/ 'newInferenceExecutionConfig' smart constructor.
+data InferenceExecutionConfig = InferenceExecutionConfig'
+  { -- | How containers in a multi-container are run. The following values are
+    -- valid.
+    --
+    -- -   @SERIAL@ - Containers run as a serial pipeline.
+    --
+    -- -   @DIRECT@ - Only the individual container that you specify is run.
+    mode :: InferenceExecutionMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceExecutionConfig' 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:
+--
+-- 'mode', 'inferenceExecutionConfig_mode' - How containers in a multi-container are run. The following values are
+-- valid.
+--
+-- -   @SERIAL@ - Containers run as a serial pipeline.
+--
+-- -   @DIRECT@ - Only the individual container that you specify is run.
+newInferenceExecutionConfig ::
+  -- | 'mode'
+  InferenceExecutionMode ->
+  InferenceExecutionConfig
+newInferenceExecutionConfig pMode_ =
+  InferenceExecutionConfig' {mode = pMode_}
+
+-- | How containers in a multi-container are run. The following values are
+-- valid.
+--
+-- -   @SERIAL@ - Containers run as a serial pipeline.
+--
+-- -   @DIRECT@ - Only the individual container that you specify is run.
+inferenceExecutionConfig_mode :: Lens.Lens' InferenceExecutionConfig InferenceExecutionMode
+inferenceExecutionConfig_mode = Lens.lens (\InferenceExecutionConfig' {mode} -> mode) (\s@InferenceExecutionConfig' {} a -> s {mode = a} :: InferenceExecutionConfig)
+
+instance Data.FromJSON InferenceExecutionConfig where
+  parseJSON =
+    Data.withObject
+      "InferenceExecutionConfig"
+      ( \x ->
+          InferenceExecutionConfig'
+            Prelude.<$> (x Data..: "Mode")
+      )
+
+instance Prelude.Hashable InferenceExecutionConfig where
+  hashWithSalt _salt InferenceExecutionConfig' {..} =
+    _salt `Prelude.hashWithSalt` mode
+
+instance Prelude.NFData InferenceExecutionConfig where
+  rnf InferenceExecutionConfig' {..} = Prelude.rnf mode
+
+instance Data.ToJSON InferenceExecutionConfig where
+  toJSON InferenceExecutionConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Mode" Data..= mode)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExecutionMode.hs b/gen/Amazonka/SageMaker/Types/InferenceExecutionMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExecutionMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.InferenceExecutionMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExecutionMode
+  ( InferenceExecutionMode
+      ( ..,
+        InferenceExecutionMode_Direct,
+        InferenceExecutionMode_Serial
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InferenceExecutionMode = InferenceExecutionMode'
+  { fromInferenceExecutionMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InferenceExecutionMode_Direct :: InferenceExecutionMode
+pattern InferenceExecutionMode_Direct = InferenceExecutionMode' "Direct"
+
+pattern InferenceExecutionMode_Serial :: InferenceExecutionMode
+pattern InferenceExecutionMode_Serial = InferenceExecutionMode' "Serial"
+
+{-# COMPLETE
+  InferenceExecutionMode_Direct,
+  InferenceExecutionMode_Serial,
+  InferenceExecutionMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExperimentDataStorageConfig.hs b/gen/Amazonka/SageMaker/Types/InferenceExperimentDataStorageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExperimentDataStorageConfig.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceExperimentDataStorageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExperimentDataStorageConfig 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 Amazonka.SageMaker.Types.CaptureContentTypeHeader
+
+-- | The Amazon S3 location and configuration for storing inference request
+-- and response data.
+--
+-- /See:/ 'newInferenceExperimentDataStorageConfig' smart constructor.
+data InferenceExperimentDataStorageConfig = InferenceExperimentDataStorageConfig'
+  { contentType :: Prelude.Maybe CaptureContentTypeHeader,
+    -- | The Amazon Web Services Key Management Service key that Amazon SageMaker
+    -- uses to encrypt captured data at rest using Amazon S3 server-side
+    -- encryption.
+    kmsKey :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 bucket where the inference request and response data is
+    -- stored.
+    destination :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceExperimentDataStorageConfig' 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:
+--
+-- 'contentType', 'inferenceExperimentDataStorageConfig_contentType' - Undocumented member.
+--
+-- 'kmsKey', 'inferenceExperimentDataStorageConfig_kmsKey' - The Amazon Web Services Key Management Service key that Amazon SageMaker
+-- uses to encrypt captured data at rest using Amazon S3 server-side
+-- encryption.
+--
+-- 'destination', 'inferenceExperimentDataStorageConfig_destination' - The Amazon S3 bucket where the inference request and response data is
+-- stored.
+newInferenceExperimentDataStorageConfig ::
+  -- | 'destination'
+  Prelude.Text ->
+  InferenceExperimentDataStorageConfig
+newInferenceExperimentDataStorageConfig pDestination_ =
+  InferenceExperimentDataStorageConfig'
+    { contentType =
+        Prelude.Nothing,
+      kmsKey = Prelude.Nothing,
+      destination = pDestination_
+    }
+
+-- | Undocumented member.
+inferenceExperimentDataStorageConfig_contentType :: Lens.Lens' InferenceExperimentDataStorageConfig (Prelude.Maybe CaptureContentTypeHeader)
+inferenceExperimentDataStorageConfig_contentType = Lens.lens (\InferenceExperimentDataStorageConfig' {contentType} -> contentType) (\s@InferenceExperimentDataStorageConfig' {} a -> s {contentType = a} :: InferenceExperimentDataStorageConfig)
+
+-- | The Amazon Web Services Key Management Service key that Amazon SageMaker
+-- uses to encrypt captured data at rest using Amazon S3 server-side
+-- encryption.
+inferenceExperimentDataStorageConfig_kmsKey :: Lens.Lens' InferenceExperimentDataStorageConfig (Prelude.Maybe Prelude.Text)
+inferenceExperimentDataStorageConfig_kmsKey = Lens.lens (\InferenceExperimentDataStorageConfig' {kmsKey} -> kmsKey) (\s@InferenceExperimentDataStorageConfig' {} a -> s {kmsKey = a} :: InferenceExperimentDataStorageConfig)
+
+-- | The Amazon S3 bucket where the inference request and response data is
+-- stored.
+inferenceExperimentDataStorageConfig_destination :: Lens.Lens' InferenceExperimentDataStorageConfig Prelude.Text
+inferenceExperimentDataStorageConfig_destination = Lens.lens (\InferenceExperimentDataStorageConfig' {destination} -> destination) (\s@InferenceExperimentDataStorageConfig' {} a -> s {destination = a} :: InferenceExperimentDataStorageConfig)
+
+instance
+  Data.FromJSON
+    InferenceExperimentDataStorageConfig
+  where
+  parseJSON =
+    Data.withObject
+      "InferenceExperimentDataStorageConfig"
+      ( \x ->
+          InferenceExperimentDataStorageConfig'
+            Prelude.<$> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..:? "KmsKey")
+            Prelude.<*> (x Data..: "Destination")
+      )
+
+instance
+  Prelude.Hashable
+    InferenceExperimentDataStorageConfig
+  where
+  hashWithSalt
+    _salt
+    InferenceExperimentDataStorageConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` contentType
+        `Prelude.hashWithSalt` kmsKey
+        `Prelude.hashWithSalt` destination
+
+instance
+  Prelude.NFData
+    InferenceExperimentDataStorageConfig
+  where
+  rnf InferenceExperimentDataStorageConfig' {..} =
+    Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf kmsKey
+      `Prelude.seq` Prelude.rnf destination
+
+instance
+  Data.ToJSON
+    InferenceExperimentDataStorageConfig
+  where
+  toJSON InferenceExperimentDataStorageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentType" Data..=) Prelude.<$> contentType,
+            ("KmsKey" Data..=) Prelude.<$> kmsKey,
+            Prelude.Just ("Destination" Data..= destination)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExperimentSchedule.hs b/gen/Amazonka/SageMaker/Types/InferenceExperimentSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExperimentSchedule.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceExperimentSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExperimentSchedule 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
+
+-- | The start and end times of an inference experiment.
+--
+-- The maximum duration that you can set for an inference experiment is 30
+-- days.
+--
+-- /See:/ 'newInferenceExperimentSchedule' smart constructor.
+data InferenceExperimentSchedule = InferenceExperimentSchedule'
+  { -- | The timestamp at which the inference experiment ended or will end.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp at which the inference experiment started or will start.
+    startTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceExperimentSchedule' 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:
+--
+-- 'endTime', 'inferenceExperimentSchedule_endTime' - The timestamp at which the inference experiment ended or will end.
+--
+-- 'startTime', 'inferenceExperimentSchedule_startTime' - The timestamp at which the inference experiment started or will start.
+newInferenceExperimentSchedule ::
+  InferenceExperimentSchedule
+newInferenceExperimentSchedule =
+  InferenceExperimentSchedule'
+    { endTime =
+        Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The timestamp at which the inference experiment ended or will end.
+inferenceExperimentSchedule_endTime :: Lens.Lens' InferenceExperimentSchedule (Prelude.Maybe Prelude.UTCTime)
+inferenceExperimentSchedule_endTime = Lens.lens (\InferenceExperimentSchedule' {endTime} -> endTime) (\s@InferenceExperimentSchedule' {} a -> s {endTime = a} :: InferenceExperimentSchedule) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp at which the inference experiment started or will start.
+inferenceExperimentSchedule_startTime :: Lens.Lens' InferenceExperimentSchedule (Prelude.Maybe Prelude.UTCTime)
+inferenceExperimentSchedule_startTime = Lens.lens (\InferenceExperimentSchedule' {startTime} -> startTime) (\s@InferenceExperimentSchedule' {} a -> s {startTime = a} :: InferenceExperimentSchedule) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON InferenceExperimentSchedule where
+  parseJSON =
+    Data.withObject
+      "InferenceExperimentSchedule"
+      ( \x ->
+          InferenceExperimentSchedule'
+            Prelude.<$> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "StartTime")
+      )
+
+instance Prelude.Hashable InferenceExperimentSchedule where
+  hashWithSalt _salt InferenceExperimentSchedule' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData InferenceExperimentSchedule where
+  rnf InferenceExperimentSchedule' {..} =
+    Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToJSON InferenceExperimentSchedule where
+  toJSON InferenceExperimentSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EndTime" Data..=) Prelude.<$> endTime,
+            ("StartTime" Data..=) Prelude.<$> startTime
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExperimentStatus.hs b/gen/Amazonka/SageMaker/Types/InferenceExperimentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExperimentStatus.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.InferenceExperimentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExperimentStatus
+  ( InferenceExperimentStatus
+      ( ..,
+        InferenceExperimentStatus_Cancelled,
+        InferenceExperimentStatus_Completed,
+        InferenceExperimentStatus_Created,
+        InferenceExperimentStatus_Creating,
+        InferenceExperimentStatus_Running,
+        InferenceExperimentStatus_Starting,
+        InferenceExperimentStatus_Stopping,
+        InferenceExperimentStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InferenceExperimentStatus = InferenceExperimentStatus'
+  { fromInferenceExperimentStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InferenceExperimentStatus_Cancelled :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Cancelled = InferenceExperimentStatus' "Cancelled"
+
+pattern InferenceExperimentStatus_Completed :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Completed = InferenceExperimentStatus' "Completed"
+
+pattern InferenceExperimentStatus_Created :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Created = InferenceExperimentStatus' "Created"
+
+pattern InferenceExperimentStatus_Creating :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Creating = InferenceExperimentStatus' "Creating"
+
+pattern InferenceExperimentStatus_Running :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Running = InferenceExperimentStatus' "Running"
+
+pattern InferenceExperimentStatus_Starting :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Starting = InferenceExperimentStatus' "Starting"
+
+pattern InferenceExperimentStatus_Stopping :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Stopping = InferenceExperimentStatus' "Stopping"
+
+pattern InferenceExperimentStatus_Updating :: InferenceExperimentStatus
+pattern InferenceExperimentStatus_Updating = InferenceExperimentStatus' "Updating"
+
+{-# COMPLETE
+  InferenceExperimentStatus_Cancelled,
+  InferenceExperimentStatus_Completed,
+  InferenceExperimentStatus_Created,
+  InferenceExperimentStatus_Creating,
+  InferenceExperimentStatus_Running,
+  InferenceExperimentStatus_Starting,
+  InferenceExperimentStatus_Stopping,
+  InferenceExperimentStatus_Updating,
+  InferenceExperimentStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExperimentStopDesiredState.hs b/gen/Amazonka/SageMaker/Types/InferenceExperimentStopDesiredState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExperimentStopDesiredState.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.InferenceExperimentStopDesiredState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExperimentStopDesiredState
+  ( InferenceExperimentStopDesiredState
+      ( ..,
+        InferenceExperimentStopDesiredState_Cancelled,
+        InferenceExperimentStopDesiredState_Completed
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InferenceExperimentStopDesiredState = InferenceExperimentStopDesiredState'
+  { fromInferenceExperimentStopDesiredState ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InferenceExperimentStopDesiredState_Cancelled :: InferenceExperimentStopDesiredState
+pattern InferenceExperimentStopDesiredState_Cancelled = InferenceExperimentStopDesiredState' "Cancelled"
+
+pattern InferenceExperimentStopDesiredState_Completed :: InferenceExperimentStopDesiredState
+pattern InferenceExperimentStopDesiredState_Completed = InferenceExperimentStopDesiredState' "Completed"
+
+{-# COMPLETE
+  InferenceExperimentStopDesiredState_Cancelled,
+  InferenceExperimentStopDesiredState_Completed,
+  InferenceExperimentStopDesiredState'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExperimentSummary.hs b/gen/Amazonka/SageMaker/Types/InferenceExperimentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExperimentSummary.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceExperimentSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExperimentSummary 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 Amazonka.SageMaker.Types.InferenceExperimentSchedule
+import Amazonka.SageMaker.Types.InferenceExperimentStatus
+import Amazonka.SageMaker.Types.InferenceExperimentType
+
+-- | Lists a summary of properties of an inference experiment.
+--
+-- /See:/ 'newInferenceExperimentSummary' smart constructor.
+data InferenceExperimentSummary = InferenceExperimentSummary'
+  { -- | The timestamp at which the inference experiment was completed.
+    completionTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the inference experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the IAM role that Amazon SageMaker can assume to access model
+    -- artifacts and container images, and manage Amazon SageMaker Inference
+    -- endpoints for model deployment.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The duration for which the inference experiment ran or will run.
+    --
+    -- The maximum duration that you can set for an inference experiment is 30
+    -- days.
+    schedule :: Prelude.Maybe InferenceExperimentSchedule,
+    -- | The error message for the inference experiment status result.
+    statusReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference experiment.
+    name :: Prelude.Text,
+    -- | The type of the inference experiment.
+    type' :: InferenceExperimentType,
+    -- | The status of the inference experiment.
+    status :: InferenceExperimentStatus,
+    -- | The timestamp at which the inference experiment was created.
+    creationTime :: Data.POSIX,
+    -- | The timestamp when you last modified the inference experiment.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceExperimentSummary' 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:
+--
+-- 'completionTime', 'inferenceExperimentSummary_completionTime' - The timestamp at which the inference experiment was completed.
+--
+-- 'description', 'inferenceExperimentSummary_description' - The description of the inference experiment.
+--
+-- 'roleArn', 'inferenceExperimentSummary_roleArn' - The ARN of the IAM role that Amazon SageMaker can assume to access model
+-- artifacts and container images, and manage Amazon SageMaker Inference
+-- endpoints for model deployment.
+--
+-- 'schedule', 'inferenceExperimentSummary_schedule' - The duration for which the inference experiment ran or will run.
+--
+-- The maximum duration that you can set for an inference experiment is 30
+-- days.
+--
+-- 'statusReason', 'inferenceExperimentSummary_statusReason' - The error message for the inference experiment status result.
+--
+-- 'name', 'inferenceExperimentSummary_name' - The name of the inference experiment.
+--
+-- 'type'', 'inferenceExperimentSummary_type' - The type of the inference experiment.
+--
+-- 'status', 'inferenceExperimentSummary_status' - The status of the inference experiment.
+--
+-- 'creationTime', 'inferenceExperimentSummary_creationTime' - The timestamp at which the inference experiment was created.
+--
+-- 'lastModifiedTime', 'inferenceExperimentSummary_lastModifiedTime' - The timestamp when you last modified the inference experiment.
+newInferenceExperimentSummary ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  InferenceExperimentType ->
+  -- | 'status'
+  InferenceExperimentStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  InferenceExperimentSummary
+newInferenceExperimentSummary
+  pName_
+  pType_
+  pStatus_
+  pCreationTime_
+  pLastModifiedTime_ =
+    InferenceExperimentSummary'
+      { completionTime =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        schedule = Prelude.Nothing,
+        statusReason = Prelude.Nothing,
+        name = pName_,
+        type' = pType_,
+        status = pStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | The timestamp at which the inference experiment was completed.
+inferenceExperimentSummary_completionTime :: Lens.Lens' InferenceExperimentSummary (Prelude.Maybe Prelude.UTCTime)
+inferenceExperimentSummary_completionTime = Lens.lens (\InferenceExperimentSummary' {completionTime} -> completionTime) (\s@InferenceExperimentSummary' {} a -> s {completionTime = a} :: InferenceExperimentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the inference experiment.
+inferenceExperimentSummary_description :: Lens.Lens' InferenceExperimentSummary (Prelude.Maybe Prelude.Text)
+inferenceExperimentSummary_description = Lens.lens (\InferenceExperimentSummary' {description} -> description) (\s@InferenceExperimentSummary' {} a -> s {description = a} :: InferenceExperimentSummary)
+
+-- | The ARN of the IAM role that Amazon SageMaker can assume to access model
+-- artifacts and container images, and manage Amazon SageMaker Inference
+-- endpoints for model deployment.
+inferenceExperimentSummary_roleArn :: Lens.Lens' InferenceExperimentSummary (Prelude.Maybe Prelude.Text)
+inferenceExperimentSummary_roleArn = Lens.lens (\InferenceExperimentSummary' {roleArn} -> roleArn) (\s@InferenceExperimentSummary' {} a -> s {roleArn = a} :: InferenceExperimentSummary)
+
+-- | The duration for which the inference experiment ran or will run.
+--
+-- The maximum duration that you can set for an inference experiment is 30
+-- days.
+inferenceExperimentSummary_schedule :: Lens.Lens' InferenceExperimentSummary (Prelude.Maybe InferenceExperimentSchedule)
+inferenceExperimentSummary_schedule = Lens.lens (\InferenceExperimentSummary' {schedule} -> schedule) (\s@InferenceExperimentSummary' {} a -> s {schedule = a} :: InferenceExperimentSummary)
+
+-- | The error message for the inference experiment status result.
+inferenceExperimentSummary_statusReason :: Lens.Lens' InferenceExperimentSummary (Prelude.Maybe Prelude.Text)
+inferenceExperimentSummary_statusReason = Lens.lens (\InferenceExperimentSummary' {statusReason} -> statusReason) (\s@InferenceExperimentSummary' {} a -> s {statusReason = a} :: InferenceExperimentSummary)
+
+-- | The name of the inference experiment.
+inferenceExperimentSummary_name :: Lens.Lens' InferenceExperimentSummary Prelude.Text
+inferenceExperimentSummary_name = Lens.lens (\InferenceExperimentSummary' {name} -> name) (\s@InferenceExperimentSummary' {} a -> s {name = a} :: InferenceExperimentSummary)
+
+-- | The type of the inference experiment.
+inferenceExperimentSummary_type :: Lens.Lens' InferenceExperimentSummary InferenceExperimentType
+inferenceExperimentSummary_type = Lens.lens (\InferenceExperimentSummary' {type'} -> type') (\s@InferenceExperimentSummary' {} a -> s {type' = a} :: InferenceExperimentSummary)
+
+-- | The status of the inference experiment.
+inferenceExperimentSummary_status :: Lens.Lens' InferenceExperimentSummary InferenceExperimentStatus
+inferenceExperimentSummary_status = Lens.lens (\InferenceExperimentSummary' {status} -> status) (\s@InferenceExperimentSummary' {} a -> s {status = a} :: InferenceExperimentSummary)
+
+-- | The timestamp at which the inference experiment was created.
+inferenceExperimentSummary_creationTime :: Lens.Lens' InferenceExperimentSummary Prelude.UTCTime
+inferenceExperimentSummary_creationTime = Lens.lens (\InferenceExperimentSummary' {creationTime} -> creationTime) (\s@InferenceExperimentSummary' {} a -> s {creationTime = a} :: InferenceExperimentSummary) Prelude.. Data._Time
+
+-- | The timestamp when you last modified the inference experiment.
+inferenceExperimentSummary_lastModifiedTime :: Lens.Lens' InferenceExperimentSummary Prelude.UTCTime
+inferenceExperimentSummary_lastModifiedTime = Lens.lens (\InferenceExperimentSummary' {lastModifiedTime} -> lastModifiedTime) (\s@InferenceExperimentSummary' {} a -> s {lastModifiedTime = a} :: InferenceExperimentSummary) Prelude.. Data._Time
+
+instance Data.FromJSON InferenceExperimentSummary where
+  parseJSON =
+    Data.withObject
+      "InferenceExperimentSummary"
+      ( \x ->
+          InferenceExperimentSummary'
+            Prelude.<$> (x Data..:? "CompletionTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "Schedule")
+            Prelude.<*> (x Data..:? "StatusReason")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Type")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable InferenceExperimentSummary where
+  hashWithSalt _salt InferenceExperimentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` completionTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` schedule
+      `Prelude.hashWithSalt` statusReason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData InferenceExperimentSummary where
+  rnf InferenceExperimentSummary' {..} =
+    Prelude.rnf completionTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf schedule
+      `Prelude.seq` Prelude.rnf statusReason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/InferenceExperimentType.hs b/gen/Amazonka/SageMaker/Types/InferenceExperimentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceExperimentType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.InferenceExperimentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceExperimentType
+  ( InferenceExperimentType
+      ( ..,
+        InferenceExperimentType_ShadowMode
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InferenceExperimentType = InferenceExperimentType'
+  { fromInferenceExperimentType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InferenceExperimentType_ShadowMode :: InferenceExperimentType
+pattern InferenceExperimentType_ShadowMode = InferenceExperimentType' "ShadowMode"
+
+{-# COMPLETE
+  InferenceExperimentType_ShadowMode,
+  InferenceExperimentType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/InferenceMetrics.hs b/gen/Amazonka/SageMaker/Types/InferenceMetrics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceMetrics.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceMetrics
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceMetrics 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
+
+-- | The metrics for an existing endpoint compared in an Inference
+-- Recommender job.
+--
+-- /See:/ 'newInferenceMetrics' smart constructor.
+data InferenceMetrics = InferenceMetrics'
+  { -- | The expected maximum number of requests per minute for the instance.
+    maxInvocations :: Prelude.Int,
+    -- | The expected model latency at maximum invocations per minute for the
+    -- instance.
+    modelLatency :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceMetrics' 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:
+--
+-- 'maxInvocations', 'inferenceMetrics_maxInvocations' - The expected maximum number of requests per minute for the instance.
+--
+-- 'modelLatency', 'inferenceMetrics_modelLatency' - The expected model latency at maximum invocations per minute for the
+-- instance.
+newInferenceMetrics ::
+  -- | 'maxInvocations'
+  Prelude.Int ->
+  -- | 'modelLatency'
+  Prelude.Int ->
+  InferenceMetrics
+newInferenceMetrics pMaxInvocations_ pModelLatency_ =
+  InferenceMetrics'
+    { maxInvocations =
+        pMaxInvocations_,
+      modelLatency = pModelLatency_
+    }
+
+-- | The expected maximum number of requests per minute for the instance.
+inferenceMetrics_maxInvocations :: Lens.Lens' InferenceMetrics Prelude.Int
+inferenceMetrics_maxInvocations = Lens.lens (\InferenceMetrics' {maxInvocations} -> maxInvocations) (\s@InferenceMetrics' {} a -> s {maxInvocations = a} :: InferenceMetrics)
+
+-- | The expected model latency at maximum invocations per minute for the
+-- instance.
+inferenceMetrics_modelLatency :: Lens.Lens' InferenceMetrics Prelude.Int
+inferenceMetrics_modelLatency = Lens.lens (\InferenceMetrics' {modelLatency} -> modelLatency) (\s@InferenceMetrics' {} a -> s {modelLatency = a} :: InferenceMetrics)
+
+instance Data.FromJSON InferenceMetrics where
+  parseJSON =
+    Data.withObject
+      "InferenceMetrics"
+      ( \x ->
+          InferenceMetrics'
+            Prelude.<$> (x Data..: "MaxInvocations")
+            Prelude.<*> (x Data..: "ModelLatency")
+      )
+
+instance Prelude.Hashable InferenceMetrics where
+  hashWithSalt _salt InferenceMetrics' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxInvocations
+      `Prelude.hashWithSalt` modelLatency
+
+instance Prelude.NFData InferenceMetrics where
+  rnf InferenceMetrics' {..} =
+    Prelude.rnf maxInvocations
+      `Prelude.seq` Prelude.rnf modelLatency
diff --git a/gen/Amazonka/SageMaker/Types/InferenceRecommendation.hs b/gen/Amazonka/SageMaker/Types/InferenceRecommendation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceRecommendation.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceRecommendation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceRecommendation 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 Amazonka.SageMaker.Types.EndpointOutputConfiguration
+import Amazonka.SageMaker.Types.ModelConfiguration
+import Amazonka.SageMaker.Types.RecommendationMetrics
+
+-- | A list of recommendations made by Amazon SageMaker Inference
+-- Recommender.
+--
+-- /See:/ 'newInferenceRecommendation' smart constructor.
+data InferenceRecommendation = InferenceRecommendation'
+  { -- | The metrics used to decide what recommendation to make.
+    metrics :: RecommendationMetrics,
+    -- | Defines the endpoint configuration parameters.
+    endpointConfiguration :: EndpointOutputConfiguration,
+    -- | Defines the model configuration.
+    modelConfiguration :: ModelConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceRecommendation' 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:
+--
+-- 'metrics', 'inferenceRecommendation_metrics' - The metrics used to decide what recommendation to make.
+--
+-- 'endpointConfiguration', 'inferenceRecommendation_endpointConfiguration' - Defines the endpoint configuration parameters.
+--
+-- 'modelConfiguration', 'inferenceRecommendation_modelConfiguration' - Defines the model configuration.
+newInferenceRecommendation ::
+  -- | 'metrics'
+  RecommendationMetrics ->
+  -- | 'endpointConfiguration'
+  EndpointOutputConfiguration ->
+  -- | 'modelConfiguration'
+  ModelConfiguration ->
+  InferenceRecommendation
+newInferenceRecommendation
+  pMetrics_
+  pEndpointConfiguration_
+  pModelConfiguration_ =
+    InferenceRecommendation'
+      { metrics = pMetrics_,
+        endpointConfiguration = pEndpointConfiguration_,
+        modelConfiguration = pModelConfiguration_
+      }
+
+-- | The metrics used to decide what recommendation to make.
+inferenceRecommendation_metrics :: Lens.Lens' InferenceRecommendation RecommendationMetrics
+inferenceRecommendation_metrics = Lens.lens (\InferenceRecommendation' {metrics} -> metrics) (\s@InferenceRecommendation' {} a -> s {metrics = a} :: InferenceRecommendation)
+
+-- | Defines the endpoint configuration parameters.
+inferenceRecommendation_endpointConfiguration :: Lens.Lens' InferenceRecommendation EndpointOutputConfiguration
+inferenceRecommendation_endpointConfiguration = Lens.lens (\InferenceRecommendation' {endpointConfiguration} -> endpointConfiguration) (\s@InferenceRecommendation' {} a -> s {endpointConfiguration = a} :: InferenceRecommendation)
+
+-- | Defines the model configuration.
+inferenceRecommendation_modelConfiguration :: Lens.Lens' InferenceRecommendation ModelConfiguration
+inferenceRecommendation_modelConfiguration = Lens.lens (\InferenceRecommendation' {modelConfiguration} -> modelConfiguration) (\s@InferenceRecommendation' {} a -> s {modelConfiguration = a} :: InferenceRecommendation)
+
+instance Data.FromJSON InferenceRecommendation where
+  parseJSON =
+    Data.withObject
+      "InferenceRecommendation"
+      ( \x ->
+          InferenceRecommendation'
+            Prelude.<$> (x Data..: "Metrics")
+            Prelude.<*> (x Data..: "EndpointConfiguration")
+            Prelude.<*> (x Data..: "ModelConfiguration")
+      )
+
+instance Prelude.Hashable InferenceRecommendation where
+  hashWithSalt _salt InferenceRecommendation' {..} =
+    _salt
+      `Prelude.hashWithSalt` metrics
+      `Prelude.hashWithSalt` endpointConfiguration
+      `Prelude.hashWithSalt` modelConfiguration
+
+instance Prelude.NFData InferenceRecommendation where
+  rnf InferenceRecommendation' {..} =
+    Prelude.rnf metrics
+      `Prelude.seq` Prelude.rnf endpointConfiguration
+      `Prelude.seq` Prelude.rnf modelConfiguration
diff --git a/gen/Amazonka/SageMaker/Types/InferenceRecommendationsJob.hs b/gen/Amazonka/SageMaker/Types/InferenceRecommendationsJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceRecommendationsJob.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceRecommendationsJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceRecommendationsJob 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 Amazonka.SageMaker.Types.RecommendationJobStatus
+import Amazonka.SageMaker.Types.RecommendationJobType
+
+-- | A structure that contains a list of recommendation jobs.
+--
+-- /See:/ 'newInferenceRecommendationsJob' smart constructor.
+data InferenceRecommendationsJob = InferenceRecommendationsJob'
+  { -- | A timestamp that shows when the job completed.
+    completionTime :: Prelude.Maybe Data.POSIX,
+    -- | If the job fails, provides information why the job failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the job.
+    jobName :: Prelude.Text,
+    -- | The job description.
+    jobDescription :: Prelude.Text,
+    -- | The recommendation job type.
+    jobType :: RecommendationJobType,
+    -- | The Amazon Resource Name (ARN) of the recommendation job.
+    jobArn :: Prelude.Text,
+    -- | The status of the job.
+    status :: RecommendationJobStatus,
+    -- | A timestamp that shows when the job was created.
+    creationTime :: Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+    -- SageMaker to perform tasks on your behalf.
+    roleArn :: Prelude.Text,
+    -- | A timestamp that shows when the job was last modified.
+    lastModifiedTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceRecommendationsJob' 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:
+--
+-- 'completionTime', 'inferenceRecommendationsJob_completionTime' - A timestamp that shows when the job completed.
+--
+-- 'failureReason', 'inferenceRecommendationsJob_failureReason' - If the job fails, provides information why the job failed.
+--
+-- 'jobName', 'inferenceRecommendationsJob_jobName' - The name of the job.
+--
+-- 'jobDescription', 'inferenceRecommendationsJob_jobDescription' - The job description.
+--
+-- 'jobType', 'inferenceRecommendationsJob_jobType' - The recommendation job type.
+--
+-- 'jobArn', 'inferenceRecommendationsJob_jobArn' - The Amazon Resource Name (ARN) of the recommendation job.
+--
+-- 'status', 'inferenceRecommendationsJob_status' - The status of the job.
+--
+-- 'creationTime', 'inferenceRecommendationsJob_creationTime' - A timestamp that shows when the job was created.
+--
+-- 'roleArn', 'inferenceRecommendationsJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to perform tasks on your behalf.
+--
+-- 'lastModifiedTime', 'inferenceRecommendationsJob_lastModifiedTime' - A timestamp that shows when the job was last modified.
+newInferenceRecommendationsJob ::
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'jobDescription'
+  Prelude.Text ->
+  -- | 'jobType'
+  RecommendationJobType ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  -- | 'status'
+  RecommendationJobStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  InferenceRecommendationsJob
+newInferenceRecommendationsJob
+  pJobName_
+  pJobDescription_
+  pJobType_
+  pJobArn_
+  pStatus_
+  pCreationTime_
+  pRoleArn_
+  pLastModifiedTime_ =
+    InferenceRecommendationsJob'
+      { completionTime =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        jobName = pJobName_,
+        jobDescription = pJobDescription_,
+        jobType = pJobType_,
+        jobArn = pJobArn_,
+        status = pStatus_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        roleArn = pRoleArn_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_
+      }
+
+-- | A timestamp that shows when the job completed.
+inferenceRecommendationsJob_completionTime :: Lens.Lens' InferenceRecommendationsJob (Prelude.Maybe Prelude.UTCTime)
+inferenceRecommendationsJob_completionTime = Lens.lens (\InferenceRecommendationsJob' {completionTime} -> completionTime) (\s@InferenceRecommendationsJob' {} a -> s {completionTime = a} :: InferenceRecommendationsJob) Prelude.. Lens.mapping Data._Time
+
+-- | If the job fails, provides information why the job failed.
+inferenceRecommendationsJob_failureReason :: Lens.Lens' InferenceRecommendationsJob (Prelude.Maybe Prelude.Text)
+inferenceRecommendationsJob_failureReason = Lens.lens (\InferenceRecommendationsJob' {failureReason} -> failureReason) (\s@InferenceRecommendationsJob' {} a -> s {failureReason = a} :: InferenceRecommendationsJob)
+
+-- | The name of the job.
+inferenceRecommendationsJob_jobName :: Lens.Lens' InferenceRecommendationsJob Prelude.Text
+inferenceRecommendationsJob_jobName = Lens.lens (\InferenceRecommendationsJob' {jobName} -> jobName) (\s@InferenceRecommendationsJob' {} a -> s {jobName = a} :: InferenceRecommendationsJob)
+
+-- | The job description.
+inferenceRecommendationsJob_jobDescription :: Lens.Lens' InferenceRecommendationsJob Prelude.Text
+inferenceRecommendationsJob_jobDescription = Lens.lens (\InferenceRecommendationsJob' {jobDescription} -> jobDescription) (\s@InferenceRecommendationsJob' {} a -> s {jobDescription = a} :: InferenceRecommendationsJob)
+
+-- | The recommendation job type.
+inferenceRecommendationsJob_jobType :: Lens.Lens' InferenceRecommendationsJob RecommendationJobType
+inferenceRecommendationsJob_jobType = Lens.lens (\InferenceRecommendationsJob' {jobType} -> jobType) (\s@InferenceRecommendationsJob' {} a -> s {jobType = a} :: InferenceRecommendationsJob)
+
+-- | The Amazon Resource Name (ARN) of the recommendation job.
+inferenceRecommendationsJob_jobArn :: Lens.Lens' InferenceRecommendationsJob Prelude.Text
+inferenceRecommendationsJob_jobArn = Lens.lens (\InferenceRecommendationsJob' {jobArn} -> jobArn) (\s@InferenceRecommendationsJob' {} a -> s {jobArn = a} :: InferenceRecommendationsJob)
+
+-- | The status of the job.
+inferenceRecommendationsJob_status :: Lens.Lens' InferenceRecommendationsJob RecommendationJobStatus
+inferenceRecommendationsJob_status = Lens.lens (\InferenceRecommendationsJob' {status} -> status) (\s@InferenceRecommendationsJob' {} a -> s {status = a} :: InferenceRecommendationsJob)
+
+-- | A timestamp that shows when the job was created.
+inferenceRecommendationsJob_creationTime :: Lens.Lens' InferenceRecommendationsJob Prelude.UTCTime
+inferenceRecommendationsJob_creationTime = Lens.lens (\InferenceRecommendationsJob' {creationTime} -> creationTime) (\s@InferenceRecommendationsJob' {} a -> s {creationTime = a} :: InferenceRecommendationsJob) Prelude.. Data._Time
+
+-- | The Amazon Resource Name (ARN) of an IAM role that enables Amazon
+-- SageMaker to perform tasks on your behalf.
+inferenceRecommendationsJob_roleArn :: Lens.Lens' InferenceRecommendationsJob Prelude.Text
+inferenceRecommendationsJob_roleArn = Lens.lens (\InferenceRecommendationsJob' {roleArn} -> roleArn) (\s@InferenceRecommendationsJob' {} a -> s {roleArn = a} :: InferenceRecommendationsJob)
+
+-- | A timestamp that shows when the job was last modified.
+inferenceRecommendationsJob_lastModifiedTime :: Lens.Lens' InferenceRecommendationsJob Prelude.UTCTime
+inferenceRecommendationsJob_lastModifiedTime = Lens.lens (\InferenceRecommendationsJob' {lastModifiedTime} -> lastModifiedTime) (\s@InferenceRecommendationsJob' {} a -> s {lastModifiedTime = a} :: InferenceRecommendationsJob) Prelude.. Data._Time
+
+instance Data.FromJSON InferenceRecommendationsJob where
+  parseJSON =
+    Data.withObject
+      "InferenceRecommendationsJob"
+      ( \x ->
+          InferenceRecommendationsJob'
+            Prelude.<$> (x Data..:? "CompletionTime")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "JobName")
+            Prelude.<*> (x Data..: "JobDescription")
+            Prelude.<*> (x Data..: "JobType")
+            Prelude.<*> (x Data..: "JobArn")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "RoleArn")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+      )
+
+instance Prelude.Hashable InferenceRecommendationsJob where
+  hashWithSalt _salt InferenceRecommendationsJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` completionTime
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` jobDescription
+      `Prelude.hashWithSalt` jobType
+      `Prelude.hashWithSalt` jobArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` lastModifiedTime
+
+instance Prelude.NFData InferenceRecommendationsJob where
+  rnf InferenceRecommendationsJob' {..} =
+    Prelude.rnf completionTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf jobDescription
+      `Prelude.seq` Prelude.rnf jobType
+      `Prelude.seq` Prelude.rnf jobArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf lastModifiedTime
diff --git a/gen/Amazonka/SageMaker/Types/InferenceRecommendationsJobStep.hs b/gen/Amazonka/SageMaker/Types/InferenceRecommendationsJobStep.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceRecommendationsJobStep.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceRecommendationsJobStep
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceRecommendationsJobStep 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 Amazonka.SageMaker.Types.RecommendationJobInferenceBenchmark
+import Amazonka.SageMaker.Types.RecommendationJobStatus
+import Amazonka.SageMaker.Types.RecommendationStepType
+
+-- | A returned array object for the @Steps@ response field in the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InferenceRecommendationsJobStep.html ListInferenceRecommendationsJobSteps>
+-- API command.
+--
+-- /See:/ 'newInferenceRecommendationsJobStep' smart constructor.
+data InferenceRecommendationsJobStep = InferenceRecommendationsJobStep'
+  { -- | The details for a specific benchmark.
+    inferenceBenchmark :: Prelude.Maybe RecommendationJobInferenceBenchmark,
+    -- | The type of the subtask.
+    --
+    -- @BENCHMARK@: Evaluate the performance of your model on different
+    -- instance types.
+    stepType :: RecommendationStepType,
+    -- | The name of the Inference Recommender job.
+    jobName :: Prelude.Text,
+    -- | The current status of the benchmark.
+    status :: RecommendationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceRecommendationsJobStep' 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:
+--
+-- 'inferenceBenchmark', 'inferenceRecommendationsJobStep_inferenceBenchmark' - The details for a specific benchmark.
+--
+-- 'stepType', 'inferenceRecommendationsJobStep_stepType' - The type of the subtask.
+--
+-- @BENCHMARK@: Evaluate the performance of your model on different
+-- instance types.
+--
+-- 'jobName', 'inferenceRecommendationsJobStep_jobName' - The name of the Inference Recommender job.
+--
+-- 'status', 'inferenceRecommendationsJobStep_status' - The current status of the benchmark.
+newInferenceRecommendationsJobStep ::
+  -- | 'stepType'
+  RecommendationStepType ->
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'status'
+  RecommendationJobStatus ->
+  InferenceRecommendationsJobStep
+newInferenceRecommendationsJobStep
+  pStepType_
+  pJobName_
+  pStatus_ =
+    InferenceRecommendationsJobStep'
+      { inferenceBenchmark =
+          Prelude.Nothing,
+        stepType = pStepType_,
+        jobName = pJobName_,
+        status = pStatus_
+      }
+
+-- | The details for a specific benchmark.
+inferenceRecommendationsJobStep_inferenceBenchmark :: Lens.Lens' InferenceRecommendationsJobStep (Prelude.Maybe RecommendationJobInferenceBenchmark)
+inferenceRecommendationsJobStep_inferenceBenchmark = Lens.lens (\InferenceRecommendationsJobStep' {inferenceBenchmark} -> inferenceBenchmark) (\s@InferenceRecommendationsJobStep' {} a -> s {inferenceBenchmark = a} :: InferenceRecommendationsJobStep)
+
+-- | The type of the subtask.
+--
+-- @BENCHMARK@: Evaluate the performance of your model on different
+-- instance types.
+inferenceRecommendationsJobStep_stepType :: Lens.Lens' InferenceRecommendationsJobStep RecommendationStepType
+inferenceRecommendationsJobStep_stepType = Lens.lens (\InferenceRecommendationsJobStep' {stepType} -> stepType) (\s@InferenceRecommendationsJobStep' {} a -> s {stepType = a} :: InferenceRecommendationsJobStep)
+
+-- | The name of the Inference Recommender job.
+inferenceRecommendationsJobStep_jobName :: Lens.Lens' InferenceRecommendationsJobStep Prelude.Text
+inferenceRecommendationsJobStep_jobName = Lens.lens (\InferenceRecommendationsJobStep' {jobName} -> jobName) (\s@InferenceRecommendationsJobStep' {} a -> s {jobName = a} :: InferenceRecommendationsJobStep)
+
+-- | The current status of the benchmark.
+inferenceRecommendationsJobStep_status :: Lens.Lens' InferenceRecommendationsJobStep RecommendationJobStatus
+inferenceRecommendationsJobStep_status = Lens.lens (\InferenceRecommendationsJobStep' {status} -> status) (\s@InferenceRecommendationsJobStep' {} a -> s {status = a} :: InferenceRecommendationsJobStep)
+
+instance
+  Data.FromJSON
+    InferenceRecommendationsJobStep
+  where
+  parseJSON =
+    Data.withObject
+      "InferenceRecommendationsJobStep"
+      ( \x ->
+          InferenceRecommendationsJobStep'
+            Prelude.<$> (x Data..:? "InferenceBenchmark")
+            Prelude.<*> (x Data..: "StepType")
+            Prelude.<*> (x Data..: "JobName")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance
+  Prelude.Hashable
+    InferenceRecommendationsJobStep
+  where
+  hashWithSalt
+    _salt
+    InferenceRecommendationsJobStep' {..} =
+      _salt
+        `Prelude.hashWithSalt` inferenceBenchmark
+        `Prelude.hashWithSalt` stepType
+        `Prelude.hashWithSalt` jobName
+        `Prelude.hashWithSalt` status
+
+instance
+  Prelude.NFData
+    InferenceRecommendationsJobStep
+  where
+  rnf InferenceRecommendationsJobStep' {..} =
+    Prelude.rnf inferenceBenchmark
+      `Prelude.seq` Prelude.rnf stepType
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/InferenceSpecification.hs b/gen/Amazonka/SageMaker/Types/InferenceSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InferenceSpecification.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InferenceSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InferenceSpecification 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 Amazonka.SageMaker.Types.ModelPackageContainerDefinition
+import Amazonka.SageMaker.Types.ProductionVariantInstanceType
+import Amazonka.SageMaker.Types.TransformInstanceType
+
+-- | Defines how to perform inference generation after a training job is run.
+--
+-- /See:/ 'newInferenceSpecification' smart constructor.
+data InferenceSpecification = InferenceSpecification'
+  { -- | A list of the instance types that are used to generate inferences in
+    -- real-time.
+    --
+    -- This parameter is required for unversioned models, and optional for
+    -- versioned models.
+    supportedRealtimeInferenceInstanceTypes :: Prelude.Maybe [ProductionVariantInstanceType],
+    -- | A list of the instance types on which a transformation job can be run or
+    -- on which an endpoint can be deployed.
+    --
+    -- This parameter is required for unversioned models, and optional for
+    -- versioned models.
+    supportedTransformInstanceTypes :: Prelude.Maybe (Prelude.NonEmpty TransformInstanceType),
+    -- | The Amazon ECR registry path of the Docker image that contains the
+    -- inference code.
+    containers :: Prelude.NonEmpty ModelPackageContainerDefinition,
+    -- | The supported MIME types for the input data.
+    supportedContentTypes :: [Prelude.Text],
+    -- | The supported MIME types for the output data.
+    supportedResponseMIMETypes :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceSpecification' 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:
+--
+-- 'supportedRealtimeInferenceInstanceTypes', 'inferenceSpecification_supportedRealtimeInferenceInstanceTypes' - A list of the instance types that are used to generate inferences in
+-- real-time.
+--
+-- This parameter is required for unversioned models, and optional for
+-- versioned models.
+--
+-- 'supportedTransformInstanceTypes', 'inferenceSpecification_supportedTransformInstanceTypes' - A list of the instance types on which a transformation job can be run or
+-- on which an endpoint can be deployed.
+--
+-- This parameter is required for unversioned models, and optional for
+-- versioned models.
+--
+-- 'containers', 'inferenceSpecification_containers' - The Amazon ECR registry path of the Docker image that contains the
+-- inference code.
+--
+-- 'supportedContentTypes', 'inferenceSpecification_supportedContentTypes' - The supported MIME types for the input data.
+--
+-- 'supportedResponseMIMETypes', 'inferenceSpecification_supportedResponseMIMETypes' - The supported MIME types for the output data.
+newInferenceSpecification ::
+  -- | 'containers'
+  Prelude.NonEmpty ModelPackageContainerDefinition ->
+  InferenceSpecification
+newInferenceSpecification pContainers_ =
+  InferenceSpecification'
+    { supportedRealtimeInferenceInstanceTypes =
+        Prelude.Nothing,
+      supportedTransformInstanceTypes = Prelude.Nothing,
+      containers = Lens.coerced Lens.# pContainers_,
+      supportedContentTypes = Prelude.mempty,
+      supportedResponseMIMETypes = Prelude.mempty
+    }
+
+-- | A list of the instance types that are used to generate inferences in
+-- real-time.
+--
+-- This parameter is required for unversioned models, and optional for
+-- versioned models.
+inferenceSpecification_supportedRealtimeInferenceInstanceTypes :: Lens.Lens' InferenceSpecification (Prelude.Maybe [ProductionVariantInstanceType])
+inferenceSpecification_supportedRealtimeInferenceInstanceTypes = Lens.lens (\InferenceSpecification' {supportedRealtimeInferenceInstanceTypes} -> supportedRealtimeInferenceInstanceTypes) (\s@InferenceSpecification' {} a -> s {supportedRealtimeInferenceInstanceTypes = a} :: InferenceSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the instance types on which a transformation job can be run or
+-- on which an endpoint can be deployed.
+--
+-- This parameter is required for unversioned models, and optional for
+-- versioned models.
+inferenceSpecification_supportedTransformInstanceTypes :: Lens.Lens' InferenceSpecification (Prelude.Maybe (Prelude.NonEmpty TransformInstanceType))
+inferenceSpecification_supportedTransformInstanceTypes = Lens.lens (\InferenceSpecification' {supportedTransformInstanceTypes} -> supportedTransformInstanceTypes) (\s@InferenceSpecification' {} a -> s {supportedTransformInstanceTypes = a} :: InferenceSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon ECR registry path of the Docker image that contains the
+-- inference code.
+inferenceSpecification_containers :: Lens.Lens' InferenceSpecification (Prelude.NonEmpty ModelPackageContainerDefinition)
+inferenceSpecification_containers = Lens.lens (\InferenceSpecification' {containers} -> containers) (\s@InferenceSpecification' {} a -> s {containers = a} :: InferenceSpecification) Prelude.. Lens.coerced
+
+-- | The supported MIME types for the input data.
+inferenceSpecification_supportedContentTypes :: Lens.Lens' InferenceSpecification [Prelude.Text]
+inferenceSpecification_supportedContentTypes = Lens.lens (\InferenceSpecification' {supportedContentTypes} -> supportedContentTypes) (\s@InferenceSpecification' {} a -> s {supportedContentTypes = a} :: InferenceSpecification) Prelude.. Lens.coerced
+
+-- | The supported MIME types for the output data.
+inferenceSpecification_supportedResponseMIMETypes :: Lens.Lens' InferenceSpecification [Prelude.Text]
+inferenceSpecification_supportedResponseMIMETypes = Lens.lens (\InferenceSpecification' {supportedResponseMIMETypes} -> supportedResponseMIMETypes) (\s@InferenceSpecification' {} a -> s {supportedResponseMIMETypes = a} :: InferenceSpecification) Prelude.. Lens.coerced
+
+instance Data.FromJSON InferenceSpecification where
+  parseJSON =
+    Data.withObject
+      "InferenceSpecification"
+      ( \x ->
+          InferenceSpecification'
+            Prelude.<$> ( x
+                            Data..:? "SupportedRealtimeInferenceInstanceTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SupportedTransformInstanceTypes")
+            Prelude.<*> (x Data..: "Containers")
+            Prelude.<*> ( x
+                            Data..:? "SupportedContentTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedResponseMIMETypes"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable InferenceSpecification where
+  hashWithSalt _salt InferenceSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` supportedRealtimeInferenceInstanceTypes
+      `Prelude.hashWithSalt` supportedTransformInstanceTypes
+      `Prelude.hashWithSalt` containers
+      `Prelude.hashWithSalt` supportedContentTypes
+      `Prelude.hashWithSalt` supportedResponseMIMETypes
+
+instance Prelude.NFData InferenceSpecification where
+  rnf InferenceSpecification' {..} =
+    Prelude.rnf supportedRealtimeInferenceInstanceTypes
+      `Prelude.seq` Prelude.rnf supportedTransformInstanceTypes
+      `Prelude.seq` Prelude.rnf containers
+      `Prelude.seq` Prelude.rnf supportedContentTypes
+      `Prelude.seq` Prelude.rnf supportedResponseMIMETypes
+
+instance Data.ToJSON InferenceSpecification where
+  toJSON InferenceSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SupportedRealtimeInferenceInstanceTypes" Data..=)
+              Prelude.<$> supportedRealtimeInferenceInstanceTypes,
+            ("SupportedTransformInstanceTypes" Data..=)
+              Prelude.<$> supportedTransformInstanceTypes,
+            Prelude.Just ("Containers" Data..= containers),
+            Prelude.Just
+              ( "SupportedContentTypes"
+                  Data..= supportedContentTypes
+              ),
+            Prelude.Just
+              ( "SupportedResponseMIMETypes"
+                  Data..= supportedResponseMIMETypes
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InputConfig.hs b/gen/Amazonka/SageMaker/Types/InputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InputConfig.hs
@@ -0,0 +1,673 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InputConfig 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 Amazonka.SageMaker.Types.Framework
+
+-- | Contains information about the location of input model artifacts, the
+-- name and shape of the expected data inputs, and the framework in which
+-- the model was trained.
+--
+-- /See:/ 'newInputConfig' smart constructor.
+data InputConfig = InputConfig'
+  { -- | Specifies the framework version to use. This API field is only supported
+    -- for the MXNet, PyTorch, TensorFlow and TensorFlow Lite frameworks.
+    --
+    -- For information about framework versions supported for cloud targets and
+    -- edge devices, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-cloud.html Cloud Supported Instance Types and Frameworks>
+    -- and
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge-frameworks.html Edge Supported Frameworks>.
+    frameworkVersion :: Prelude.Maybe Prelude.Text,
+    -- | The S3 path where the model artifacts, which result from model training,
+    -- are stored. This path must point to a single gzip compressed tar archive
+    -- (.tar.gz suffix).
+    s3Uri :: Prelude.Text,
+    -- | Specifies the name and shape of the expected data inputs for your
+    -- trained model with a JSON dictionary form. The data inputs are
+    -- InputConfig$Framework specific.
+    --
+    -- -   @TensorFlow@: You must specify the name and shape (NHWC format) of
+    --     the expected data inputs using a dictionary format for your trained
+    --     model. The dictionary formats required for the console and CLI are
+    --     different.
+    --
+    --     -   Examples for one input:
+    --
+    --         -   If using the console, @{\"input\":[1,1024,1024,3]}@
+    --
+    --         -   If using the CLI, @{\\\"input\\\":[1,1024,1024,3]}@
+    --
+    --     -   Examples for two inputs:
+    --
+    --         -   If using the console,
+    --             @{\"data1\": [1,28,28,1], \"data2\":[1,28,28,1]}@
+    --
+    --         -   If using the CLI,
+    --             @{\\\"data1\\\": [1,28,28,1], \\\"data2\\\":[1,28,28,1]}@
+    --
+    -- -   @KERAS@: You must specify the name and shape (NCHW format) of
+    --     expected data inputs using a dictionary format for your trained
+    --     model. Note that while Keras model artifacts should be uploaded in
+    --     NHWC (channel-last) format, @DataInputConfig@ should be specified in
+    --     NCHW (channel-first) format. The dictionary formats required for the
+    --     console and CLI are different.
+    --
+    --     -   Examples for one input:
+    --
+    --         -   If using the console, @{\"input_1\":[1,3,224,224]}@
+    --
+    --         -   If using the CLI, @{\\\"input_1\\\":[1,3,224,224]}@
+    --
+    --     -   Examples for two inputs:
+    --
+    --         -   If using the console,
+    --             @{\"input_1\": [1,3,224,224], \"input_2\":[1,3,224,224]} @
+    --
+    --         -   If using the CLI,
+    --             @{\\\"input_1\\\": [1,3,224,224], \\\"input_2\\\":[1,3,224,224]}@
+    --
+    -- -   @MXNET\/ONNX\/DARKNET@: You must specify the name and shape (NCHW
+    --     format) of the expected data inputs in order using a dictionary
+    --     format for your trained model. The dictionary formats required for
+    --     the console and CLI are different.
+    --
+    --     -   Examples for one input:
+    --
+    --         -   If using the console, @{\"data\":[1,3,1024,1024]}@
+    --
+    --         -   If using the CLI, @{\\\"data\\\":[1,3,1024,1024]}@
+    --
+    --     -   Examples for two inputs:
+    --
+    --         -   If using the console,
+    --             @{\"var1\": [1,1,28,28], \"var2\":[1,1,28,28]} @
+    --
+    --         -   If using the CLI,
+    --             @{\\\"var1\\\": [1,1,28,28], \\\"var2\\\":[1,1,28,28]}@
+    --
+    -- -   @PyTorch@: You can either specify the name and shape (NCHW format)
+    --     of expected data inputs in order using a dictionary format for your
+    --     trained model or you can specify the shape only using a list format.
+    --     The dictionary formats required for the console and CLI are
+    --     different. The list formats for the console and CLI are the same.
+    --
+    --     -   Examples for one input in dictionary format:
+    --
+    --         -   If using the console, @{\"input0\":[1,3,224,224]}@
+    --
+    --         -   If using the CLI, @{\\\"input0\\\":[1,3,224,224]}@
+    --
+    --     -   Example for one input in list format: @[[1,3,224,224]]@
+    --
+    --     -   Examples for two inputs in dictionary format:
+    --
+    --         -   If using the console,
+    --             @{\"input0\":[1,3,224,224], \"input1\":[1,3,224,224]}@
+    --
+    --         -   If using the CLI,
+    --             @{\\\"input0\\\":[1,3,224,224], \\\"input1\\\":[1,3,224,224]} @
+    --
+    --     -   Example for two inputs in list format:
+    --         @[[1,3,224,224], [1,3,224,224]]@
+    --
+    -- -   @XGBOOST@: input data name and shape are not needed.
+    --
+    -- @DataInputConfig@ supports the following parameters for @CoreML@
+    -- OutputConfig$TargetDevice (ML Model format):
+    --
+    -- -   @shape@: Input shape, for example
+    --     @{\"input_1\": {\"shape\": [1,224,224,3]}}@. In addition to static
+    --     input shapes, CoreML converter supports Flexible input shapes:
+    --
+    --     -   Range Dimension. You can use the Range Dimension feature if you
+    --         know the input shape will be within some specific interval in
+    --         that dimension, for example:
+    --         @{\"input_1\": {\"shape\": [\"1..10\", 224, 224, 3]}}@
+    --
+    --     -   Enumerated shapes. Sometimes, the models are trained to work
+    --         only on a select set of inputs. You can enumerate all supported
+    --         input shapes, for example:
+    --         @{\"input_1\": {\"shape\": [[1, 224, 224, 3], [1, 160, 160, 3]]}}@
+    --
+    -- -   @default_shape@: Default input shape. You can set a default shape
+    --     during conversion for both Range Dimension and Enumerated Shapes.
+    --     For example
+    --     @{\"input_1\": {\"shape\": [\"1..10\", 224, 224, 3], \"default_shape\": [1, 224, 224, 3]}}@
+    --
+    -- -   @type@: Input type. Allowed values: @Image@ and @Tensor@. By
+    --     default, the converter generates an ML Model with inputs of type
+    --     Tensor (MultiArray). User can set input type to be Image. Image
+    --     input type requires additional input parameters such as @bias@ and
+    --     @scale@.
+    --
+    -- -   @bias@: If the input type is an Image, you need to provide the bias
+    --     vector.
+    --
+    -- -   @scale@: If the input type is an Image, you need to provide a scale
+    --     factor.
+    --
+    -- CoreML @ClassifierConfig@ parameters can be specified using
+    -- OutputConfig$CompilerOptions. CoreML converter supports Tensorflow and
+    -- PyTorch models. CoreML conversion examples:
+    --
+    -- -   Tensor type input:
+    --
+    --     -   @\"DataInputConfig\": {\"input_1\": {\"shape\": [[1,224,224,3], [1,160,160,3]], \"default_shape\": [1,224,224,3]}}@
+    --
+    -- -   Tensor type input without input name (PyTorch):
+    --
+    --     -   @\"DataInputConfig\": [{\"shape\": [[1,3,224,224], [1,3,160,160]], \"default_shape\": [1,3,224,224]}]@
+    --
+    -- -   Image type input:
+    --
+    --     -   @\"DataInputConfig\": {\"input_1\": {\"shape\": [[1,224,224,3], [1,160,160,3]], \"default_shape\": [1,224,224,3], \"type\": \"Image\", \"bias\": [-1,-1,-1], \"scale\": 0.007843137255}}@
+    --
+    --     -   @\"CompilerOptions\": {\"class_labels\": \"imagenet_labels_1000.txt\"}@
+    --
+    -- -   Image type input without input name (PyTorch):
+    --
+    --     -   @\"DataInputConfig\": [{\"shape\": [[1,3,224,224], [1,3,160,160]], \"default_shape\": [1,3,224,224], \"type\": \"Image\", \"bias\": [-1,-1,-1], \"scale\": 0.007843137255}]@
+    --
+    --     -   @\"CompilerOptions\": {\"class_labels\": \"imagenet_labels_1000.txt\"}@
+    --
+    -- Depending on the model format, @DataInputConfig@ requires the following
+    -- parameters for @ml_eia2@
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-TargetDevice OutputConfig:TargetDevice>.
+    --
+    -- -   For TensorFlow models saved in the SavedModel format, specify the
+    --     input names from @signature_def_key@ and the input model shapes for
+    --     @DataInputConfig@. Specify the @signature_def_key@ in
+    --     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-CompilerOptions OutputConfig:CompilerOptions>
+    --     if the model does not use TensorFlow\'s default signature def key.
+    --     For example:
+    --
+    --     -   @\"DataInputConfig\": {\"inputs\": [1, 224, 224, 3]}@
+    --
+    --     -   @\"CompilerOptions\": {\"signature_def_key\": \"serving_custom\"}@
+    --
+    -- -   For TensorFlow models saved as a frozen graph, specify the input
+    --     tensor names and shapes in @DataInputConfig@ and the output tensor
+    --     names for @output_names@ in
+    --     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-CompilerOptions OutputConfig:CompilerOptions>
+    --     . For example:
+    --
+    --     -   @\"DataInputConfig\": {\"input_tensor:0\": [1, 224, 224, 3]}@
+    --
+    --     -   @\"CompilerOptions\": {\"output_names\": [\"output_tensor:0\"]}@
+    dataInputConfig :: Prelude.Text,
+    -- | Identifies the framework in which the model was trained. For example:
+    -- TENSORFLOW.
+    framework :: Framework
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputConfig' 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:
+--
+-- 'frameworkVersion', 'inputConfig_frameworkVersion' - Specifies the framework version to use. This API field is only supported
+-- for the MXNet, PyTorch, TensorFlow and TensorFlow Lite frameworks.
+--
+-- For information about framework versions supported for cloud targets and
+-- edge devices, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-cloud.html Cloud Supported Instance Types and Frameworks>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge-frameworks.html Edge Supported Frameworks>.
+--
+-- 's3Uri', 'inputConfig_s3Uri' - The S3 path where the model artifacts, which result from model training,
+-- are stored. This path must point to a single gzip compressed tar archive
+-- (.tar.gz suffix).
+--
+-- 'dataInputConfig', 'inputConfig_dataInputConfig' - Specifies the name and shape of the expected data inputs for your
+-- trained model with a JSON dictionary form. The data inputs are
+-- InputConfig$Framework specific.
+--
+-- -   @TensorFlow@: You must specify the name and shape (NHWC format) of
+--     the expected data inputs using a dictionary format for your trained
+--     model. The dictionary formats required for the console and CLI are
+--     different.
+--
+--     -   Examples for one input:
+--
+--         -   If using the console, @{\"input\":[1,1024,1024,3]}@
+--
+--         -   If using the CLI, @{\\\"input\\\":[1,1024,1024,3]}@
+--
+--     -   Examples for two inputs:
+--
+--         -   If using the console,
+--             @{\"data1\": [1,28,28,1], \"data2\":[1,28,28,1]}@
+--
+--         -   If using the CLI,
+--             @{\\\"data1\\\": [1,28,28,1], \\\"data2\\\":[1,28,28,1]}@
+--
+-- -   @KERAS@: You must specify the name and shape (NCHW format) of
+--     expected data inputs using a dictionary format for your trained
+--     model. Note that while Keras model artifacts should be uploaded in
+--     NHWC (channel-last) format, @DataInputConfig@ should be specified in
+--     NCHW (channel-first) format. The dictionary formats required for the
+--     console and CLI are different.
+--
+--     -   Examples for one input:
+--
+--         -   If using the console, @{\"input_1\":[1,3,224,224]}@
+--
+--         -   If using the CLI, @{\\\"input_1\\\":[1,3,224,224]}@
+--
+--     -   Examples for two inputs:
+--
+--         -   If using the console,
+--             @{\"input_1\": [1,3,224,224], \"input_2\":[1,3,224,224]} @
+--
+--         -   If using the CLI,
+--             @{\\\"input_1\\\": [1,3,224,224], \\\"input_2\\\":[1,3,224,224]}@
+--
+-- -   @MXNET\/ONNX\/DARKNET@: You must specify the name and shape (NCHW
+--     format) of the expected data inputs in order using a dictionary
+--     format for your trained model. The dictionary formats required for
+--     the console and CLI are different.
+--
+--     -   Examples for one input:
+--
+--         -   If using the console, @{\"data\":[1,3,1024,1024]}@
+--
+--         -   If using the CLI, @{\\\"data\\\":[1,3,1024,1024]}@
+--
+--     -   Examples for two inputs:
+--
+--         -   If using the console,
+--             @{\"var1\": [1,1,28,28], \"var2\":[1,1,28,28]} @
+--
+--         -   If using the CLI,
+--             @{\\\"var1\\\": [1,1,28,28], \\\"var2\\\":[1,1,28,28]}@
+--
+-- -   @PyTorch@: You can either specify the name and shape (NCHW format)
+--     of expected data inputs in order using a dictionary format for your
+--     trained model or you can specify the shape only using a list format.
+--     The dictionary formats required for the console and CLI are
+--     different. The list formats for the console and CLI are the same.
+--
+--     -   Examples for one input in dictionary format:
+--
+--         -   If using the console, @{\"input0\":[1,3,224,224]}@
+--
+--         -   If using the CLI, @{\\\"input0\\\":[1,3,224,224]}@
+--
+--     -   Example for one input in list format: @[[1,3,224,224]]@
+--
+--     -   Examples for two inputs in dictionary format:
+--
+--         -   If using the console,
+--             @{\"input0\":[1,3,224,224], \"input1\":[1,3,224,224]}@
+--
+--         -   If using the CLI,
+--             @{\\\"input0\\\":[1,3,224,224], \\\"input1\\\":[1,3,224,224]} @
+--
+--     -   Example for two inputs in list format:
+--         @[[1,3,224,224], [1,3,224,224]]@
+--
+-- -   @XGBOOST@: input data name and shape are not needed.
+--
+-- @DataInputConfig@ supports the following parameters for @CoreML@
+-- OutputConfig$TargetDevice (ML Model format):
+--
+-- -   @shape@: Input shape, for example
+--     @{\"input_1\": {\"shape\": [1,224,224,3]}}@. In addition to static
+--     input shapes, CoreML converter supports Flexible input shapes:
+--
+--     -   Range Dimension. You can use the Range Dimension feature if you
+--         know the input shape will be within some specific interval in
+--         that dimension, for example:
+--         @{\"input_1\": {\"shape\": [\"1..10\", 224, 224, 3]}}@
+--
+--     -   Enumerated shapes. Sometimes, the models are trained to work
+--         only on a select set of inputs. You can enumerate all supported
+--         input shapes, for example:
+--         @{\"input_1\": {\"shape\": [[1, 224, 224, 3], [1, 160, 160, 3]]}}@
+--
+-- -   @default_shape@: Default input shape. You can set a default shape
+--     during conversion for both Range Dimension and Enumerated Shapes.
+--     For example
+--     @{\"input_1\": {\"shape\": [\"1..10\", 224, 224, 3], \"default_shape\": [1, 224, 224, 3]}}@
+--
+-- -   @type@: Input type. Allowed values: @Image@ and @Tensor@. By
+--     default, the converter generates an ML Model with inputs of type
+--     Tensor (MultiArray). User can set input type to be Image. Image
+--     input type requires additional input parameters such as @bias@ and
+--     @scale@.
+--
+-- -   @bias@: If the input type is an Image, you need to provide the bias
+--     vector.
+--
+-- -   @scale@: If the input type is an Image, you need to provide a scale
+--     factor.
+--
+-- CoreML @ClassifierConfig@ parameters can be specified using
+-- OutputConfig$CompilerOptions. CoreML converter supports Tensorflow and
+-- PyTorch models. CoreML conversion examples:
+--
+-- -   Tensor type input:
+--
+--     -   @\"DataInputConfig\": {\"input_1\": {\"shape\": [[1,224,224,3], [1,160,160,3]], \"default_shape\": [1,224,224,3]}}@
+--
+-- -   Tensor type input without input name (PyTorch):
+--
+--     -   @\"DataInputConfig\": [{\"shape\": [[1,3,224,224], [1,3,160,160]], \"default_shape\": [1,3,224,224]}]@
+--
+-- -   Image type input:
+--
+--     -   @\"DataInputConfig\": {\"input_1\": {\"shape\": [[1,224,224,3], [1,160,160,3]], \"default_shape\": [1,224,224,3], \"type\": \"Image\", \"bias\": [-1,-1,-1], \"scale\": 0.007843137255}}@
+--
+--     -   @\"CompilerOptions\": {\"class_labels\": \"imagenet_labels_1000.txt\"}@
+--
+-- -   Image type input without input name (PyTorch):
+--
+--     -   @\"DataInputConfig\": [{\"shape\": [[1,3,224,224], [1,3,160,160]], \"default_shape\": [1,3,224,224], \"type\": \"Image\", \"bias\": [-1,-1,-1], \"scale\": 0.007843137255}]@
+--
+--     -   @\"CompilerOptions\": {\"class_labels\": \"imagenet_labels_1000.txt\"}@
+--
+-- Depending on the model format, @DataInputConfig@ requires the following
+-- parameters for @ml_eia2@
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-TargetDevice OutputConfig:TargetDevice>.
+--
+-- -   For TensorFlow models saved in the SavedModel format, specify the
+--     input names from @signature_def_key@ and the input model shapes for
+--     @DataInputConfig@. Specify the @signature_def_key@ in
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-CompilerOptions OutputConfig:CompilerOptions>
+--     if the model does not use TensorFlow\'s default signature def key.
+--     For example:
+--
+--     -   @\"DataInputConfig\": {\"inputs\": [1, 224, 224, 3]}@
+--
+--     -   @\"CompilerOptions\": {\"signature_def_key\": \"serving_custom\"}@
+--
+-- -   For TensorFlow models saved as a frozen graph, specify the input
+--     tensor names and shapes in @DataInputConfig@ and the output tensor
+--     names for @output_names@ in
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-CompilerOptions OutputConfig:CompilerOptions>
+--     . For example:
+--
+--     -   @\"DataInputConfig\": {\"input_tensor:0\": [1, 224, 224, 3]}@
+--
+--     -   @\"CompilerOptions\": {\"output_names\": [\"output_tensor:0\"]}@
+--
+-- 'framework', 'inputConfig_framework' - Identifies the framework in which the model was trained. For example:
+-- TENSORFLOW.
+newInputConfig ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  -- | 'dataInputConfig'
+  Prelude.Text ->
+  -- | 'framework'
+  Framework ->
+  InputConfig
+newInputConfig pS3Uri_ pDataInputConfig_ pFramework_ =
+  InputConfig'
+    { frameworkVersion = Prelude.Nothing,
+      s3Uri = pS3Uri_,
+      dataInputConfig = pDataInputConfig_,
+      framework = pFramework_
+    }
+
+-- | Specifies the framework version to use. This API field is only supported
+-- for the MXNet, PyTorch, TensorFlow and TensorFlow Lite frameworks.
+--
+-- For information about framework versions supported for cloud targets and
+-- edge devices, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-cloud.html Cloud Supported Instance Types and Frameworks>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge-frameworks.html Edge Supported Frameworks>.
+inputConfig_frameworkVersion :: Lens.Lens' InputConfig (Prelude.Maybe Prelude.Text)
+inputConfig_frameworkVersion = Lens.lens (\InputConfig' {frameworkVersion} -> frameworkVersion) (\s@InputConfig' {} a -> s {frameworkVersion = a} :: InputConfig)
+
+-- | The S3 path where the model artifacts, which result from model training,
+-- are stored. This path must point to a single gzip compressed tar archive
+-- (.tar.gz suffix).
+inputConfig_s3Uri :: Lens.Lens' InputConfig Prelude.Text
+inputConfig_s3Uri = Lens.lens (\InputConfig' {s3Uri} -> s3Uri) (\s@InputConfig' {} a -> s {s3Uri = a} :: InputConfig)
+
+-- | Specifies the name and shape of the expected data inputs for your
+-- trained model with a JSON dictionary form. The data inputs are
+-- InputConfig$Framework specific.
+--
+-- -   @TensorFlow@: You must specify the name and shape (NHWC format) of
+--     the expected data inputs using a dictionary format for your trained
+--     model. The dictionary formats required for the console and CLI are
+--     different.
+--
+--     -   Examples for one input:
+--
+--         -   If using the console, @{\"input\":[1,1024,1024,3]}@
+--
+--         -   If using the CLI, @{\\\"input\\\":[1,1024,1024,3]}@
+--
+--     -   Examples for two inputs:
+--
+--         -   If using the console,
+--             @{\"data1\": [1,28,28,1], \"data2\":[1,28,28,1]}@
+--
+--         -   If using the CLI,
+--             @{\\\"data1\\\": [1,28,28,1], \\\"data2\\\":[1,28,28,1]}@
+--
+-- -   @KERAS@: You must specify the name and shape (NCHW format) of
+--     expected data inputs using a dictionary format for your trained
+--     model. Note that while Keras model artifacts should be uploaded in
+--     NHWC (channel-last) format, @DataInputConfig@ should be specified in
+--     NCHW (channel-first) format. The dictionary formats required for the
+--     console and CLI are different.
+--
+--     -   Examples for one input:
+--
+--         -   If using the console, @{\"input_1\":[1,3,224,224]}@
+--
+--         -   If using the CLI, @{\\\"input_1\\\":[1,3,224,224]}@
+--
+--     -   Examples for two inputs:
+--
+--         -   If using the console,
+--             @{\"input_1\": [1,3,224,224], \"input_2\":[1,3,224,224]} @
+--
+--         -   If using the CLI,
+--             @{\\\"input_1\\\": [1,3,224,224], \\\"input_2\\\":[1,3,224,224]}@
+--
+-- -   @MXNET\/ONNX\/DARKNET@: You must specify the name and shape (NCHW
+--     format) of the expected data inputs in order using a dictionary
+--     format for your trained model. The dictionary formats required for
+--     the console and CLI are different.
+--
+--     -   Examples for one input:
+--
+--         -   If using the console, @{\"data\":[1,3,1024,1024]}@
+--
+--         -   If using the CLI, @{\\\"data\\\":[1,3,1024,1024]}@
+--
+--     -   Examples for two inputs:
+--
+--         -   If using the console,
+--             @{\"var1\": [1,1,28,28], \"var2\":[1,1,28,28]} @
+--
+--         -   If using the CLI,
+--             @{\\\"var1\\\": [1,1,28,28], \\\"var2\\\":[1,1,28,28]}@
+--
+-- -   @PyTorch@: You can either specify the name and shape (NCHW format)
+--     of expected data inputs in order using a dictionary format for your
+--     trained model or you can specify the shape only using a list format.
+--     The dictionary formats required for the console and CLI are
+--     different. The list formats for the console and CLI are the same.
+--
+--     -   Examples for one input in dictionary format:
+--
+--         -   If using the console, @{\"input0\":[1,3,224,224]}@
+--
+--         -   If using the CLI, @{\\\"input0\\\":[1,3,224,224]}@
+--
+--     -   Example for one input in list format: @[[1,3,224,224]]@
+--
+--     -   Examples for two inputs in dictionary format:
+--
+--         -   If using the console,
+--             @{\"input0\":[1,3,224,224], \"input1\":[1,3,224,224]}@
+--
+--         -   If using the CLI,
+--             @{\\\"input0\\\":[1,3,224,224], \\\"input1\\\":[1,3,224,224]} @
+--
+--     -   Example for two inputs in list format:
+--         @[[1,3,224,224], [1,3,224,224]]@
+--
+-- -   @XGBOOST@: input data name and shape are not needed.
+--
+-- @DataInputConfig@ supports the following parameters for @CoreML@
+-- OutputConfig$TargetDevice (ML Model format):
+--
+-- -   @shape@: Input shape, for example
+--     @{\"input_1\": {\"shape\": [1,224,224,3]}}@. In addition to static
+--     input shapes, CoreML converter supports Flexible input shapes:
+--
+--     -   Range Dimension. You can use the Range Dimension feature if you
+--         know the input shape will be within some specific interval in
+--         that dimension, for example:
+--         @{\"input_1\": {\"shape\": [\"1..10\", 224, 224, 3]}}@
+--
+--     -   Enumerated shapes. Sometimes, the models are trained to work
+--         only on a select set of inputs. You can enumerate all supported
+--         input shapes, for example:
+--         @{\"input_1\": {\"shape\": [[1, 224, 224, 3], [1, 160, 160, 3]]}}@
+--
+-- -   @default_shape@: Default input shape. You can set a default shape
+--     during conversion for both Range Dimension and Enumerated Shapes.
+--     For example
+--     @{\"input_1\": {\"shape\": [\"1..10\", 224, 224, 3], \"default_shape\": [1, 224, 224, 3]}}@
+--
+-- -   @type@: Input type. Allowed values: @Image@ and @Tensor@. By
+--     default, the converter generates an ML Model with inputs of type
+--     Tensor (MultiArray). User can set input type to be Image. Image
+--     input type requires additional input parameters such as @bias@ and
+--     @scale@.
+--
+-- -   @bias@: If the input type is an Image, you need to provide the bias
+--     vector.
+--
+-- -   @scale@: If the input type is an Image, you need to provide a scale
+--     factor.
+--
+-- CoreML @ClassifierConfig@ parameters can be specified using
+-- OutputConfig$CompilerOptions. CoreML converter supports Tensorflow and
+-- PyTorch models. CoreML conversion examples:
+--
+-- -   Tensor type input:
+--
+--     -   @\"DataInputConfig\": {\"input_1\": {\"shape\": [[1,224,224,3], [1,160,160,3]], \"default_shape\": [1,224,224,3]}}@
+--
+-- -   Tensor type input without input name (PyTorch):
+--
+--     -   @\"DataInputConfig\": [{\"shape\": [[1,3,224,224], [1,3,160,160]], \"default_shape\": [1,3,224,224]}]@
+--
+-- -   Image type input:
+--
+--     -   @\"DataInputConfig\": {\"input_1\": {\"shape\": [[1,224,224,3], [1,160,160,3]], \"default_shape\": [1,224,224,3], \"type\": \"Image\", \"bias\": [-1,-1,-1], \"scale\": 0.007843137255}}@
+--
+--     -   @\"CompilerOptions\": {\"class_labels\": \"imagenet_labels_1000.txt\"}@
+--
+-- -   Image type input without input name (PyTorch):
+--
+--     -   @\"DataInputConfig\": [{\"shape\": [[1,3,224,224], [1,3,160,160]], \"default_shape\": [1,3,224,224], \"type\": \"Image\", \"bias\": [-1,-1,-1], \"scale\": 0.007843137255}]@
+--
+--     -   @\"CompilerOptions\": {\"class_labels\": \"imagenet_labels_1000.txt\"}@
+--
+-- Depending on the model format, @DataInputConfig@ requires the following
+-- parameters for @ml_eia2@
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-TargetDevice OutputConfig:TargetDevice>.
+--
+-- -   For TensorFlow models saved in the SavedModel format, specify the
+--     input names from @signature_def_key@ and the input model shapes for
+--     @DataInputConfig@. Specify the @signature_def_key@ in
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-CompilerOptions OutputConfig:CompilerOptions>
+--     if the model does not use TensorFlow\'s default signature def key.
+--     For example:
+--
+--     -   @\"DataInputConfig\": {\"inputs\": [1, 224, 224, 3]}@
+--
+--     -   @\"CompilerOptions\": {\"signature_def_key\": \"serving_custom\"}@
+--
+-- -   For TensorFlow models saved as a frozen graph, specify the input
+--     tensor names and shapes in @DataInputConfig@ and the output tensor
+--     names for @output_names@ in
+--     <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-CompilerOptions OutputConfig:CompilerOptions>
+--     . For example:
+--
+--     -   @\"DataInputConfig\": {\"input_tensor:0\": [1, 224, 224, 3]}@
+--
+--     -   @\"CompilerOptions\": {\"output_names\": [\"output_tensor:0\"]}@
+inputConfig_dataInputConfig :: Lens.Lens' InputConfig Prelude.Text
+inputConfig_dataInputConfig = Lens.lens (\InputConfig' {dataInputConfig} -> dataInputConfig) (\s@InputConfig' {} a -> s {dataInputConfig = a} :: InputConfig)
+
+-- | Identifies the framework in which the model was trained. For example:
+-- TENSORFLOW.
+inputConfig_framework :: Lens.Lens' InputConfig Framework
+inputConfig_framework = Lens.lens (\InputConfig' {framework} -> framework) (\s@InputConfig' {} a -> s {framework = a} :: InputConfig)
+
+instance Data.FromJSON InputConfig where
+  parseJSON =
+    Data.withObject
+      "InputConfig"
+      ( \x ->
+          InputConfig'
+            Prelude.<$> (x Data..:? "FrameworkVersion")
+            Prelude.<*> (x Data..: "S3Uri")
+            Prelude.<*> (x Data..: "DataInputConfig")
+            Prelude.<*> (x Data..: "Framework")
+      )
+
+instance Prelude.Hashable InputConfig where
+  hashWithSalt _salt InputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` frameworkVersion
+      `Prelude.hashWithSalt` s3Uri
+      `Prelude.hashWithSalt` dataInputConfig
+      `Prelude.hashWithSalt` framework
+
+instance Prelude.NFData InputConfig where
+  rnf InputConfig' {..} =
+    Prelude.rnf frameworkVersion
+      `Prelude.seq` Prelude.rnf s3Uri
+      `Prelude.seq` Prelude.rnf dataInputConfig
+      `Prelude.seq` Prelude.rnf framework
+
+instance Data.ToJSON InputConfig where
+  toJSON InputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FrameworkVersion" Data..=)
+              Prelude.<$> frameworkVersion,
+            Prelude.Just ("S3Uri" Data..= s3Uri),
+            Prelude.Just
+              ("DataInputConfig" Data..= dataInputConfig),
+            Prelude.Just ("Framework" Data..= framework)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InputMode.hs b/gen/Amazonka/SageMaker/Types/InputMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InputMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.InputMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InputMode
+  ( InputMode
+      ( ..,
+        InputMode_File,
+        InputMode_Pipe
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InputMode = InputMode'
+  { fromInputMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InputMode_File :: InputMode
+pattern InputMode_File = InputMode' "File"
+
+pattern InputMode_Pipe :: InputMode
+pattern InputMode_Pipe = InputMode' "Pipe"
+
+{-# COMPLETE
+  InputMode_File,
+  InputMode_Pipe,
+  InputMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/InstanceGroup.hs b/gen/Amazonka/SageMaker/Types/InstanceGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InstanceGroup.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InstanceGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InstanceGroup 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 Amazonka.SageMaker.Types.TrainingInstanceType
+
+-- | Defines an instance group for heterogeneous cluster training. When
+-- requesting a training job using the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html CreateTrainingJob>
+-- API, you can configure multiple instance groups .
+--
+-- /See:/ 'newInstanceGroup' smart constructor.
+data InstanceGroup = InstanceGroup'
+  { -- | Specifies the instance type of the instance group.
+    instanceType :: TrainingInstanceType,
+    -- | Specifies the number of instances of the instance group.
+    instanceCount :: Prelude.Natural,
+    -- | Specifies the name of the instance group.
+    instanceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InstanceGroup' 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:
+--
+-- 'instanceType', 'instanceGroup_instanceType' - Specifies the instance type of the instance group.
+--
+-- 'instanceCount', 'instanceGroup_instanceCount' - Specifies the number of instances of the instance group.
+--
+-- 'instanceGroupName', 'instanceGroup_instanceGroupName' - Specifies the name of the instance group.
+newInstanceGroup ::
+  -- | 'instanceType'
+  TrainingInstanceType ->
+  -- | 'instanceCount'
+  Prelude.Natural ->
+  -- | 'instanceGroupName'
+  Prelude.Text ->
+  InstanceGroup
+newInstanceGroup
+  pInstanceType_
+  pInstanceCount_
+  pInstanceGroupName_ =
+    InstanceGroup'
+      { instanceType = pInstanceType_,
+        instanceCount = pInstanceCount_,
+        instanceGroupName = pInstanceGroupName_
+      }
+
+-- | Specifies the instance type of the instance group.
+instanceGroup_instanceType :: Lens.Lens' InstanceGroup TrainingInstanceType
+instanceGroup_instanceType = Lens.lens (\InstanceGroup' {instanceType} -> instanceType) (\s@InstanceGroup' {} a -> s {instanceType = a} :: InstanceGroup)
+
+-- | Specifies the number of instances of the instance group.
+instanceGroup_instanceCount :: Lens.Lens' InstanceGroup Prelude.Natural
+instanceGroup_instanceCount = Lens.lens (\InstanceGroup' {instanceCount} -> instanceCount) (\s@InstanceGroup' {} a -> s {instanceCount = a} :: InstanceGroup)
+
+-- | Specifies the name of the instance group.
+instanceGroup_instanceGroupName :: Lens.Lens' InstanceGroup Prelude.Text
+instanceGroup_instanceGroupName = Lens.lens (\InstanceGroup' {instanceGroupName} -> instanceGroupName) (\s@InstanceGroup' {} a -> s {instanceGroupName = a} :: InstanceGroup)
+
+instance Data.FromJSON InstanceGroup where
+  parseJSON =
+    Data.withObject
+      "InstanceGroup"
+      ( \x ->
+          InstanceGroup'
+            Prelude.<$> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "InstanceCount")
+            Prelude.<*> (x Data..: "InstanceGroupName")
+      )
+
+instance Prelude.Hashable InstanceGroup where
+  hashWithSalt _salt InstanceGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` instanceCount
+      `Prelude.hashWithSalt` instanceGroupName
+
+instance Prelude.NFData InstanceGroup where
+  rnf InstanceGroup' {..} =
+    Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf instanceGroupName
+
+instance Data.ToJSON InstanceGroup where
+  toJSON InstanceGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just ("InstanceCount" Data..= instanceCount),
+            Prelude.Just
+              ("InstanceGroupName" Data..= instanceGroupName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InstanceMetadataServiceConfiguration.hs b/gen/Amazonka/SageMaker/Types/InstanceMetadataServiceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InstanceMetadataServiceConfiguration.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InstanceMetadataServiceConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InstanceMetadataServiceConfiguration 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
+
+-- | Information on the IMDS configuration of the notebook instance
+--
+-- /See:/ 'newInstanceMetadataServiceConfiguration' smart constructor.
+data InstanceMetadataServiceConfiguration = InstanceMetadataServiceConfiguration'
+  { -- | Indicates the minimum IMDS version that the notebook instance supports.
+    -- When passed as part of @CreateNotebookInstance@, if no value is
+    -- selected, then it defaults to IMDSv1. This means that both IMDSv1 and
+    -- IMDSv2 are supported. If passed as part of @UpdateNotebookInstance@,
+    -- there is no default.
+    minimumInstanceMetadataServiceVersion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InstanceMetadataServiceConfiguration' 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:
+--
+-- 'minimumInstanceMetadataServiceVersion', 'instanceMetadataServiceConfiguration_minimumInstanceMetadataServiceVersion' - Indicates the minimum IMDS version that the notebook instance supports.
+-- When passed as part of @CreateNotebookInstance@, if no value is
+-- selected, then it defaults to IMDSv1. This means that both IMDSv1 and
+-- IMDSv2 are supported. If passed as part of @UpdateNotebookInstance@,
+-- there is no default.
+newInstanceMetadataServiceConfiguration ::
+  -- | 'minimumInstanceMetadataServiceVersion'
+  Prelude.Text ->
+  InstanceMetadataServiceConfiguration
+newInstanceMetadataServiceConfiguration
+  pMinimumInstanceMetadataServiceVersion_ =
+    InstanceMetadataServiceConfiguration'
+      { minimumInstanceMetadataServiceVersion =
+          pMinimumInstanceMetadataServiceVersion_
+      }
+
+-- | Indicates the minimum IMDS version that the notebook instance supports.
+-- When passed as part of @CreateNotebookInstance@, if no value is
+-- selected, then it defaults to IMDSv1. This means that both IMDSv1 and
+-- IMDSv2 are supported. If passed as part of @UpdateNotebookInstance@,
+-- there is no default.
+instanceMetadataServiceConfiguration_minimumInstanceMetadataServiceVersion :: Lens.Lens' InstanceMetadataServiceConfiguration Prelude.Text
+instanceMetadataServiceConfiguration_minimumInstanceMetadataServiceVersion = Lens.lens (\InstanceMetadataServiceConfiguration' {minimumInstanceMetadataServiceVersion} -> minimumInstanceMetadataServiceVersion) (\s@InstanceMetadataServiceConfiguration' {} a -> s {minimumInstanceMetadataServiceVersion = a} :: InstanceMetadataServiceConfiguration)
+
+instance
+  Data.FromJSON
+    InstanceMetadataServiceConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "InstanceMetadataServiceConfiguration"
+      ( \x ->
+          InstanceMetadataServiceConfiguration'
+            Prelude.<$> (x Data..: "MinimumInstanceMetadataServiceVersion")
+      )
+
+instance
+  Prelude.Hashable
+    InstanceMetadataServiceConfiguration
+  where
+  hashWithSalt
+    _salt
+    InstanceMetadataServiceConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` minimumInstanceMetadataServiceVersion
+
+instance
+  Prelude.NFData
+    InstanceMetadataServiceConfiguration
+  where
+  rnf InstanceMetadataServiceConfiguration' {..} =
+    Prelude.rnf minimumInstanceMetadataServiceVersion
+
+instance
+  Data.ToJSON
+    InstanceMetadataServiceConfiguration
+  where
+  toJSON InstanceMetadataServiceConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MinimumInstanceMetadataServiceVersion"
+                  Data..= minimumInstanceMetadataServiceVersion
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/InstanceType.hs b/gen/Amazonka/SageMaker/Types/InstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/InstanceType.hs
@@ -0,0 +1,406 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.InstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.InstanceType
+  ( InstanceType
+      ( ..,
+        InstanceType_Ml_c4_2xlarge,
+        InstanceType_Ml_c4_4xlarge,
+        InstanceType_Ml_c4_8xlarge,
+        InstanceType_Ml_c4_xlarge,
+        InstanceType_Ml_c5_18xlarge,
+        InstanceType_Ml_c5_2xlarge,
+        InstanceType_Ml_c5_4xlarge,
+        InstanceType_Ml_c5_9xlarge,
+        InstanceType_Ml_c5_xlarge,
+        InstanceType_Ml_c5d_18xlarge,
+        InstanceType_Ml_c5d_2xlarge,
+        InstanceType_Ml_c5d_4xlarge,
+        InstanceType_Ml_c5d_9xlarge,
+        InstanceType_Ml_c5d_xlarge,
+        InstanceType_Ml_g4dn_12xlarge,
+        InstanceType_Ml_g4dn_16xlarge,
+        InstanceType_Ml_g4dn_2xlarge,
+        InstanceType_Ml_g4dn_4xlarge,
+        InstanceType_Ml_g4dn_8xlarge,
+        InstanceType_Ml_g4dn_xlarge,
+        InstanceType_Ml_g5_12xlarge,
+        InstanceType_Ml_g5_16xlarge,
+        InstanceType_Ml_g5_24xlarge,
+        InstanceType_Ml_g5_2xlarge,
+        InstanceType_Ml_g5_48xlarge,
+        InstanceType_Ml_g5_4xlarge,
+        InstanceType_Ml_g5_8xlarge,
+        InstanceType_Ml_g5_xlarge,
+        InstanceType_Ml_m4_10xlarge,
+        InstanceType_Ml_m4_16xlarge,
+        InstanceType_Ml_m4_2xlarge,
+        InstanceType_Ml_m4_4xlarge,
+        InstanceType_Ml_m4_xlarge,
+        InstanceType_Ml_m5_12xlarge,
+        InstanceType_Ml_m5_24xlarge,
+        InstanceType_Ml_m5_2xlarge,
+        InstanceType_Ml_m5_4xlarge,
+        InstanceType_Ml_m5_xlarge,
+        InstanceType_Ml_m5d_12xlarge,
+        InstanceType_Ml_m5d_16xlarge,
+        InstanceType_Ml_m5d_24xlarge,
+        InstanceType_Ml_m5d_2xlarge,
+        InstanceType_Ml_m5d_4xlarge,
+        InstanceType_Ml_m5d_8xlarge,
+        InstanceType_Ml_m5d_large,
+        InstanceType_Ml_m5d_xlarge,
+        InstanceType_Ml_p2_16xlarge,
+        InstanceType_Ml_p2_8xlarge,
+        InstanceType_Ml_p2_xlarge,
+        InstanceType_Ml_p3_16xlarge,
+        InstanceType_Ml_p3_2xlarge,
+        InstanceType_Ml_p3_8xlarge,
+        InstanceType_Ml_p3dn_24xlarge,
+        InstanceType_Ml_r5_12xlarge,
+        InstanceType_Ml_r5_16xlarge,
+        InstanceType_Ml_r5_24xlarge,
+        InstanceType_Ml_r5_2xlarge,
+        InstanceType_Ml_r5_4xlarge,
+        InstanceType_Ml_r5_8xlarge,
+        InstanceType_Ml_r5_large,
+        InstanceType_Ml_r5_xlarge,
+        InstanceType_Ml_t2_2xlarge,
+        InstanceType_Ml_t2_large,
+        InstanceType_Ml_t2_medium,
+        InstanceType_Ml_t2_xlarge,
+        InstanceType_Ml_t3_2xlarge,
+        InstanceType_Ml_t3_large,
+        InstanceType_Ml_t3_medium,
+        InstanceType_Ml_t3_xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InstanceType = InstanceType'
+  { fromInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InstanceType_Ml_c4_2xlarge :: InstanceType
+pattern InstanceType_Ml_c4_2xlarge = InstanceType' "ml.c4.2xlarge"
+
+pattern InstanceType_Ml_c4_4xlarge :: InstanceType
+pattern InstanceType_Ml_c4_4xlarge = InstanceType' "ml.c4.4xlarge"
+
+pattern InstanceType_Ml_c4_8xlarge :: InstanceType
+pattern InstanceType_Ml_c4_8xlarge = InstanceType' "ml.c4.8xlarge"
+
+pattern InstanceType_Ml_c4_xlarge :: InstanceType
+pattern InstanceType_Ml_c4_xlarge = InstanceType' "ml.c4.xlarge"
+
+pattern InstanceType_Ml_c5_18xlarge :: InstanceType
+pattern InstanceType_Ml_c5_18xlarge = InstanceType' "ml.c5.18xlarge"
+
+pattern InstanceType_Ml_c5_2xlarge :: InstanceType
+pattern InstanceType_Ml_c5_2xlarge = InstanceType' "ml.c5.2xlarge"
+
+pattern InstanceType_Ml_c5_4xlarge :: InstanceType
+pattern InstanceType_Ml_c5_4xlarge = InstanceType' "ml.c5.4xlarge"
+
+pattern InstanceType_Ml_c5_9xlarge :: InstanceType
+pattern InstanceType_Ml_c5_9xlarge = InstanceType' "ml.c5.9xlarge"
+
+pattern InstanceType_Ml_c5_xlarge :: InstanceType
+pattern InstanceType_Ml_c5_xlarge = InstanceType' "ml.c5.xlarge"
+
+pattern InstanceType_Ml_c5d_18xlarge :: InstanceType
+pattern InstanceType_Ml_c5d_18xlarge = InstanceType' "ml.c5d.18xlarge"
+
+pattern InstanceType_Ml_c5d_2xlarge :: InstanceType
+pattern InstanceType_Ml_c5d_2xlarge = InstanceType' "ml.c5d.2xlarge"
+
+pattern InstanceType_Ml_c5d_4xlarge :: InstanceType
+pattern InstanceType_Ml_c5d_4xlarge = InstanceType' "ml.c5d.4xlarge"
+
+pattern InstanceType_Ml_c5d_9xlarge :: InstanceType
+pattern InstanceType_Ml_c5d_9xlarge = InstanceType' "ml.c5d.9xlarge"
+
+pattern InstanceType_Ml_c5d_xlarge :: InstanceType
+pattern InstanceType_Ml_c5d_xlarge = InstanceType' "ml.c5d.xlarge"
+
+pattern InstanceType_Ml_g4dn_12xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_12xlarge = InstanceType' "ml.g4dn.12xlarge"
+
+pattern InstanceType_Ml_g4dn_16xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_16xlarge = InstanceType' "ml.g4dn.16xlarge"
+
+pattern InstanceType_Ml_g4dn_2xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_2xlarge = InstanceType' "ml.g4dn.2xlarge"
+
+pattern InstanceType_Ml_g4dn_4xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_4xlarge = InstanceType' "ml.g4dn.4xlarge"
+
+pattern InstanceType_Ml_g4dn_8xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_8xlarge = InstanceType' "ml.g4dn.8xlarge"
+
+pattern InstanceType_Ml_g4dn_xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_xlarge = InstanceType' "ml.g4dn.xlarge"
+
+pattern InstanceType_Ml_g5_12xlarge :: InstanceType
+pattern InstanceType_Ml_g5_12xlarge = InstanceType' "ml.g5.12xlarge"
+
+pattern InstanceType_Ml_g5_16xlarge :: InstanceType
+pattern InstanceType_Ml_g5_16xlarge = InstanceType' "ml.g5.16xlarge"
+
+pattern InstanceType_Ml_g5_24xlarge :: InstanceType
+pattern InstanceType_Ml_g5_24xlarge = InstanceType' "ml.g5.24xlarge"
+
+pattern InstanceType_Ml_g5_2xlarge :: InstanceType
+pattern InstanceType_Ml_g5_2xlarge = InstanceType' "ml.g5.2xlarge"
+
+pattern InstanceType_Ml_g5_48xlarge :: InstanceType
+pattern InstanceType_Ml_g5_48xlarge = InstanceType' "ml.g5.48xlarge"
+
+pattern InstanceType_Ml_g5_4xlarge :: InstanceType
+pattern InstanceType_Ml_g5_4xlarge = InstanceType' "ml.g5.4xlarge"
+
+pattern InstanceType_Ml_g5_8xlarge :: InstanceType
+pattern InstanceType_Ml_g5_8xlarge = InstanceType' "ml.g5.8xlarge"
+
+pattern InstanceType_Ml_g5_xlarge :: InstanceType
+pattern InstanceType_Ml_g5_xlarge = InstanceType' "ml.g5.xlarge"
+
+pattern InstanceType_Ml_m4_10xlarge :: InstanceType
+pattern InstanceType_Ml_m4_10xlarge = InstanceType' "ml.m4.10xlarge"
+
+pattern InstanceType_Ml_m4_16xlarge :: InstanceType
+pattern InstanceType_Ml_m4_16xlarge = InstanceType' "ml.m4.16xlarge"
+
+pattern InstanceType_Ml_m4_2xlarge :: InstanceType
+pattern InstanceType_Ml_m4_2xlarge = InstanceType' "ml.m4.2xlarge"
+
+pattern InstanceType_Ml_m4_4xlarge :: InstanceType
+pattern InstanceType_Ml_m4_4xlarge = InstanceType' "ml.m4.4xlarge"
+
+pattern InstanceType_Ml_m4_xlarge :: InstanceType
+pattern InstanceType_Ml_m4_xlarge = InstanceType' "ml.m4.xlarge"
+
+pattern InstanceType_Ml_m5_12xlarge :: InstanceType
+pattern InstanceType_Ml_m5_12xlarge = InstanceType' "ml.m5.12xlarge"
+
+pattern InstanceType_Ml_m5_24xlarge :: InstanceType
+pattern InstanceType_Ml_m5_24xlarge = InstanceType' "ml.m5.24xlarge"
+
+pattern InstanceType_Ml_m5_2xlarge :: InstanceType
+pattern InstanceType_Ml_m5_2xlarge = InstanceType' "ml.m5.2xlarge"
+
+pattern InstanceType_Ml_m5_4xlarge :: InstanceType
+pattern InstanceType_Ml_m5_4xlarge = InstanceType' "ml.m5.4xlarge"
+
+pattern InstanceType_Ml_m5_xlarge :: InstanceType
+pattern InstanceType_Ml_m5_xlarge = InstanceType' "ml.m5.xlarge"
+
+pattern InstanceType_Ml_m5d_12xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_12xlarge = InstanceType' "ml.m5d.12xlarge"
+
+pattern InstanceType_Ml_m5d_16xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_16xlarge = InstanceType' "ml.m5d.16xlarge"
+
+pattern InstanceType_Ml_m5d_24xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_24xlarge = InstanceType' "ml.m5d.24xlarge"
+
+pattern InstanceType_Ml_m5d_2xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_2xlarge = InstanceType' "ml.m5d.2xlarge"
+
+pattern InstanceType_Ml_m5d_4xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_4xlarge = InstanceType' "ml.m5d.4xlarge"
+
+pattern InstanceType_Ml_m5d_8xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_8xlarge = InstanceType' "ml.m5d.8xlarge"
+
+pattern InstanceType_Ml_m5d_large :: InstanceType
+pattern InstanceType_Ml_m5d_large = InstanceType' "ml.m5d.large"
+
+pattern InstanceType_Ml_m5d_xlarge :: InstanceType
+pattern InstanceType_Ml_m5d_xlarge = InstanceType' "ml.m5d.xlarge"
+
+pattern InstanceType_Ml_p2_16xlarge :: InstanceType
+pattern InstanceType_Ml_p2_16xlarge = InstanceType' "ml.p2.16xlarge"
+
+pattern InstanceType_Ml_p2_8xlarge :: InstanceType
+pattern InstanceType_Ml_p2_8xlarge = InstanceType' "ml.p2.8xlarge"
+
+pattern InstanceType_Ml_p2_xlarge :: InstanceType
+pattern InstanceType_Ml_p2_xlarge = InstanceType' "ml.p2.xlarge"
+
+pattern InstanceType_Ml_p3_16xlarge :: InstanceType
+pattern InstanceType_Ml_p3_16xlarge = InstanceType' "ml.p3.16xlarge"
+
+pattern InstanceType_Ml_p3_2xlarge :: InstanceType
+pattern InstanceType_Ml_p3_2xlarge = InstanceType' "ml.p3.2xlarge"
+
+pattern InstanceType_Ml_p3_8xlarge :: InstanceType
+pattern InstanceType_Ml_p3_8xlarge = InstanceType' "ml.p3.8xlarge"
+
+pattern InstanceType_Ml_p3dn_24xlarge :: InstanceType
+pattern InstanceType_Ml_p3dn_24xlarge = InstanceType' "ml.p3dn.24xlarge"
+
+pattern InstanceType_Ml_r5_12xlarge :: InstanceType
+pattern InstanceType_Ml_r5_12xlarge = InstanceType' "ml.r5.12xlarge"
+
+pattern InstanceType_Ml_r5_16xlarge :: InstanceType
+pattern InstanceType_Ml_r5_16xlarge = InstanceType' "ml.r5.16xlarge"
+
+pattern InstanceType_Ml_r5_24xlarge :: InstanceType
+pattern InstanceType_Ml_r5_24xlarge = InstanceType' "ml.r5.24xlarge"
+
+pattern InstanceType_Ml_r5_2xlarge :: InstanceType
+pattern InstanceType_Ml_r5_2xlarge = InstanceType' "ml.r5.2xlarge"
+
+pattern InstanceType_Ml_r5_4xlarge :: InstanceType
+pattern InstanceType_Ml_r5_4xlarge = InstanceType' "ml.r5.4xlarge"
+
+pattern InstanceType_Ml_r5_8xlarge :: InstanceType
+pattern InstanceType_Ml_r5_8xlarge = InstanceType' "ml.r5.8xlarge"
+
+pattern InstanceType_Ml_r5_large :: InstanceType
+pattern InstanceType_Ml_r5_large = InstanceType' "ml.r5.large"
+
+pattern InstanceType_Ml_r5_xlarge :: InstanceType
+pattern InstanceType_Ml_r5_xlarge = InstanceType' "ml.r5.xlarge"
+
+pattern InstanceType_Ml_t2_2xlarge :: InstanceType
+pattern InstanceType_Ml_t2_2xlarge = InstanceType' "ml.t2.2xlarge"
+
+pattern InstanceType_Ml_t2_large :: InstanceType
+pattern InstanceType_Ml_t2_large = InstanceType' "ml.t2.large"
+
+pattern InstanceType_Ml_t2_medium :: InstanceType
+pattern InstanceType_Ml_t2_medium = InstanceType' "ml.t2.medium"
+
+pattern InstanceType_Ml_t2_xlarge :: InstanceType
+pattern InstanceType_Ml_t2_xlarge = InstanceType' "ml.t2.xlarge"
+
+pattern InstanceType_Ml_t3_2xlarge :: InstanceType
+pattern InstanceType_Ml_t3_2xlarge = InstanceType' "ml.t3.2xlarge"
+
+pattern InstanceType_Ml_t3_large :: InstanceType
+pattern InstanceType_Ml_t3_large = InstanceType' "ml.t3.large"
+
+pattern InstanceType_Ml_t3_medium :: InstanceType
+pattern InstanceType_Ml_t3_medium = InstanceType' "ml.t3.medium"
+
+pattern InstanceType_Ml_t3_xlarge :: InstanceType
+pattern InstanceType_Ml_t3_xlarge = InstanceType' "ml.t3.xlarge"
+
+{-# COMPLETE
+  InstanceType_Ml_c4_2xlarge,
+  InstanceType_Ml_c4_4xlarge,
+  InstanceType_Ml_c4_8xlarge,
+  InstanceType_Ml_c4_xlarge,
+  InstanceType_Ml_c5_18xlarge,
+  InstanceType_Ml_c5_2xlarge,
+  InstanceType_Ml_c5_4xlarge,
+  InstanceType_Ml_c5_9xlarge,
+  InstanceType_Ml_c5_xlarge,
+  InstanceType_Ml_c5d_18xlarge,
+  InstanceType_Ml_c5d_2xlarge,
+  InstanceType_Ml_c5d_4xlarge,
+  InstanceType_Ml_c5d_9xlarge,
+  InstanceType_Ml_c5d_xlarge,
+  InstanceType_Ml_g4dn_12xlarge,
+  InstanceType_Ml_g4dn_16xlarge,
+  InstanceType_Ml_g4dn_2xlarge,
+  InstanceType_Ml_g4dn_4xlarge,
+  InstanceType_Ml_g4dn_8xlarge,
+  InstanceType_Ml_g4dn_xlarge,
+  InstanceType_Ml_g5_12xlarge,
+  InstanceType_Ml_g5_16xlarge,
+  InstanceType_Ml_g5_24xlarge,
+  InstanceType_Ml_g5_2xlarge,
+  InstanceType_Ml_g5_48xlarge,
+  InstanceType_Ml_g5_4xlarge,
+  InstanceType_Ml_g5_8xlarge,
+  InstanceType_Ml_g5_xlarge,
+  InstanceType_Ml_m4_10xlarge,
+  InstanceType_Ml_m4_16xlarge,
+  InstanceType_Ml_m4_2xlarge,
+  InstanceType_Ml_m4_4xlarge,
+  InstanceType_Ml_m4_xlarge,
+  InstanceType_Ml_m5_12xlarge,
+  InstanceType_Ml_m5_24xlarge,
+  InstanceType_Ml_m5_2xlarge,
+  InstanceType_Ml_m5_4xlarge,
+  InstanceType_Ml_m5_xlarge,
+  InstanceType_Ml_m5d_12xlarge,
+  InstanceType_Ml_m5d_16xlarge,
+  InstanceType_Ml_m5d_24xlarge,
+  InstanceType_Ml_m5d_2xlarge,
+  InstanceType_Ml_m5d_4xlarge,
+  InstanceType_Ml_m5d_8xlarge,
+  InstanceType_Ml_m5d_large,
+  InstanceType_Ml_m5d_xlarge,
+  InstanceType_Ml_p2_16xlarge,
+  InstanceType_Ml_p2_8xlarge,
+  InstanceType_Ml_p2_xlarge,
+  InstanceType_Ml_p3_16xlarge,
+  InstanceType_Ml_p3_2xlarge,
+  InstanceType_Ml_p3_8xlarge,
+  InstanceType_Ml_p3dn_24xlarge,
+  InstanceType_Ml_r5_12xlarge,
+  InstanceType_Ml_r5_16xlarge,
+  InstanceType_Ml_r5_24xlarge,
+  InstanceType_Ml_r5_2xlarge,
+  InstanceType_Ml_r5_4xlarge,
+  InstanceType_Ml_r5_8xlarge,
+  InstanceType_Ml_r5_large,
+  InstanceType_Ml_r5_xlarge,
+  InstanceType_Ml_t2_2xlarge,
+  InstanceType_Ml_t2_large,
+  InstanceType_Ml_t2_medium,
+  InstanceType_Ml_t2_xlarge,
+  InstanceType_Ml_t3_2xlarge,
+  InstanceType_Ml_t3_large,
+  InstanceType_Ml_t3_medium,
+  InstanceType_Ml_t3_xlarge,
+  InstanceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/IntegerParameterRange.hs b/gen/Amazonka/SageMaker/Types/IntegerParameterRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/IntegerParameterRange.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.IntegerParameterRange
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.IntegerParameterRange 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 Amazonka.SageMaker.Types.HyperParameterScalingType
+
+-- | For a hyperparameter of the integer type, specifies the range that a
+-- hyperparameter tuning job searches.
+--
+-- /See:/ 'newIntegerParameterRange' smart constructor.
+data IntegerParameterRange = IntegerParameterRange'
+  { -- | The scale that hyperparameter tuning uses to search the hyperparameter
+    -- range. For information about choosing a hyperparameter scale, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html#scaling-type Hyperparameter Scaling>.
+    -- One of the following values:
+    --
+    -- [Auto]
+    --     SageMaker hyperparameter tuning chooses the best scale for the
+    --     hyperparameter.
+    --
+    -- [Linear]
+    --     Hyperparameter tuning searches the values in the hyperparameter
+    --     range by using a linear scale.
+    --
+    -- [Logarithmic]
+    --     Hyperparameter tuning searches the values in the hyperparameter
+    --     range by using a logarithmic scale.
+    --
+    --     Logarithmic scaling works only for ranges that have only values
+    --     greater than 0.
+    scalingType :: Prelude.Maybe HyperParameterScalingType,
+    -- | The name of the hyperparameter to search.
+    name :: Prelude.Text,
+    -- | The minimum value of the hyperparameter to search.
+    minValue :: Prelude.Text,
+    -- | The maximum value of the hyperparameter to search.
+    maxValue :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IntegerParameterRange' 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:
+--
+-- 'scalingType', 'integerParameterRange_scalingType' - The scale that hyperparameter tuning uses to search the hyperparameter
+-- range. For information about choosing a hyperparameter scale, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html#scaling-type Hyperparameter Scaling>.
+-- One of the following values:
+--
+-- [Auto]
+--     SageMaker hyperparameter tuning chooses the best scale for the
+--     hyperparameter.
+--
+-- [Linear]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a linear scale.
+--
+-- [Logarithmic]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a logarithmic scale.
+--
+--     Logarithmic scaling works only for ranges that have only values
+--     greater than 0.
+--
+-- 'name', 'integerParameterRange_name' - The name of the hyperparameter to search.
+--
+-- 'minValue', 'integerParameterRange_minValue' - The minimum value of the hyperparameter to search.
+--
+-- 'maxValue', 'integerParameterRange_maxValue' - The maximum value of the hyperparameter to search.
+newIntegerParameterRange ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'minValue'
+  Prelude.Text ->
+  -- | 'maxValue'
+  Prelude.Text ->
+  IntegerParameterRange
+newIntegerParameterRange pName_ pMinValue_ pMaxValue_ =
+  IntegerParameterRange'
+    { scalingType =
+        Prelude.Nothing,
+      name = pName_,
+      minValue = pMinValue_,
+      maxValue = pMaxValue_
+    }
+
+-- | The scale that hyperparameter tuning uses to search the hyperparameter
+-- range. For information about choosing a hyperparameter scale, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html#scaling-type Hyperparameter Scaling>.
+-- One of the following values:
+--
+-- [Auto]
+--     SageMaker hyperparameter tuning chooses the best scale for the
+--     hyperparameter.
+--
+-- [Linear]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a linear scale.
+--
+-- [Logarithmic]
+--     Hyperparameter tuning searches the values in the hyperparameter
+--     range by using a logarithmic scale.
+--
+--     Logarithmic scaling works only for ranges that have only values
+--     greater than 0.
+integerParameterRange_scalingType :: Lens.Lens' IntegerParameterRange (Prelude.Maybe HyperParameterScalingType)
+integerParameterRange_scalingType = Lens.lens (\IntegerParameterRange' {scalingType} -> scalingType) (\s@IntegerParameterRange' {} a -> s {scalingType = a} :: IntegerParameterRange)
+
+-- | The name of the hyperparameter to search.
+integerParameterRange_name :: Lens.Lens' IntegerParameterRange Prelude.Text
+integerParameterRange_name = Lens.lens (\IntegerParameterRange' {name} -> name) (\s@IntegerParameterRange' {} a -> s {name = a} :: IntegerParameterRange)
+
+-- | The minimum value of the hyperparameter to search.
+integerParameterRange_minValue :: Lens.Lens' IntegerParameterRange Prelude.Text
+integerParameterRange_minValue = Lens.lens (\IntegerParameterRange' {minValue} -> minValue) (\s@IntegerParameterRange' {} a -> s {minValue = a} :: IntegerParameterRange)
+
+-- | The maximum value of the hyperparameter to search.
+integerParameterRange_maxValue :: Lens.Lens' IntegerParameterRange Prelude.Text
+integerParameterRange_maxValue = Lens.lens (\IntegerParameterRange' {maxValue} -> maxValue) (\s@IntegerParameterRange' {} a -> s {maxValue = a} :: IntegerParameterRange)
+
+instance Data.FromJSON IntegerParameterRange where
+  parseJSON =
+    Data.withObject
+      "IntegerParameterRange"
+      ( \x ->
+          IntegerParameterRange'
+            Prelude.<$> (x Data..:? "ScalingType")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "MinValue")
+            Prelude.<*> (x Data..: "MaxValue")
+      )
+
+instance Prelude.Hashable IntegerParameterRange where
+  hashWithSalt _salt IntegerParameterRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` scalingType
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` minValue
+      `Prelude.hashWithSalt` maxValue
+
+instance Prelude.NFData IntegerParameterRange where
+  rnf IntegerParameterRange' {..} =
+    Prelude.rnf scalingType
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf minValue
+      `Prelude.seq` Prelude.rnf maxValue
+
+instance Data.ToJSON IntegerParameterRange where
+  toJSON IntegerParameterRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ScalingType" Data..=) Prelude.<$> scalingType,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("MinValue" Data..= minValue),
+            Prelude.Just ("MaxValue" Data..= maxValue)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/IntegerParameterRangeSpecification.hs b/gen/Amazonka/SageMaker/Types/IntegerParameterRangeSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/IntegerParameterRangeSpecification.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.IntegerParameterRangeSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.IntegerParameterRangeSpecification 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
+
+-- | Defines the possible values for an integer hyperparameter.
+--
+-- /See:/ 'newIntegerParameterRangeSpecification' smart constructor.
+data IntegerParameterRangeSpecification = IntegerParameterRangeSpecification'
+  { -- | The minimum integer value allowed.
+    minValue :: Prelude.Text,
+    -- | The maximum integer value allowed.
+    maxValue :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IntegerParameterRangeSpecification' 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:
+--
+-- 'minValue', 'integerParameterRangeSpecification_minValue' - The minimum integer value allowed.
+--
+-- 'maxValue', 'integerParameterRangeSpecification_maxValue' - The maximum integer value allowed.
+newIntegerParameterRangeSpecification ::
+  -- | 'minValue'
+  Prelude.Text ->
+  -- | 'maxValue'
+  Prelude.Text ->
+  IntegerParameterRangeSpecification
+newIntegerParameterRangeSpecification
+  pMinValue_
+  pMaxValue_ =
+    IntegerParameterRangeSpecification'
+      { minValue =
+          pMinValue_,
+        maxValue = pMaxValue_
+      }
+
+-- | The minimum integer value allowed.
+integerParameterRangeSpecification_minValue :: Lens.Lens' IntegerParameterRangeSpecification Prelude.Text
+integerParameterRangeSpecification_minValue = Lens.lens (\IntegerParameterRangeSpecification' {minValue} -> minValue) (\s@IntegerParameterRangeSpecification' {} a -> s {minValue = a} :: IntegerParameterRangeSpecification)
+
+-- | The maximum integer value allowed.
+integerParameterRangeSpecification_maxValue :: Lens.Lens' IntegerParameterRangeSpecification Prelude.Text
+integerParameterRangeSpecification_maxValue = Lens.lens (\IntegerParameterRangeSpecification' {maxValue} -> maxValue) (\s@IntegerParameterRangeSpecification' {} a -> s {maxValue = a} :: IntegerParameterRangeSpecification)
+
+instance
+  Data.FromJSON
+    IntegerParameterRangeSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "IntegerParameterRangeSpecification"
+      ( \x ->
+          IntegerParameterRangeSpecification'
+            Prelude.<$> (x Data..: "MinValue")
+            Prelude.<*> (x Data..: "MaxValue")
+      )
+
+instance
+  Prelude.Hashable
+    IntegerParameterRangeSpecification
+  where
+  hashWithSalt
+    _salt
+    IntegerParameterRangeSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` minValue
+        `Prelude.hashWithSalt` maxValue
+
+instance
+  Prelude.NFData
+    IntegerParameterRangeSpecification
+  where
+  rnf IntegerParameterRangeSpecification' {..} =
+    Prelude.rnf minValue
+      `Prelude.seq` Prelude.rnf maxValue
+
+instance
+  Data.ToJSON
+    IntegerParameterRangeSpecification
+  where
+  toJSON IntegerParameterRangeSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("MinValue" Data..= minValue),
+            Prelude.Just ("MaxValue" Data..= maxValue)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/JobType.hs b/gen/Amazonka/SageMaker/Types/JobType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/JobType.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.JobType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.JobType
+  ( JobType
+      ( ..,
+        JobType_INFERENCE,
+        JobType_NOTEBOOK_KERNEL,
+        JobType_TRAINING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JobType = JobType' {fromJobType :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobType_INFERENCE :: JobType
+pattern JobType_INFERENCE = JobType' "INFERENCE"
+
+pattern JobType_NOTEBOOK_KERNEL :: JobType
+pattern JobType_NOTEBOOK_KERNEL = JobType' "NOTEBOOK_KERNEL"
+
+pattern JobType_TRAINING :: JobType
+pattern JobType_TRAINING = JobType' "TRAINING"
+
+{-# COMPLETE
+  JobType_INFERENCE,
+  JobType_NOTEBOOK_KERNEL,
+  JobType_TRAINING,
+  JobType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/JoinSource.hs b/gen/Amazonka/SageMaker/Types/JoinSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/JoinSource.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.JoinSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.JoinSource
+  ( JoinSource
+      ( ..,
+        JoinSource_Input,
+        JoinSource_None
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JoinSource = JoinSource'
+  { fromJoinSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JoinSource_Input :: JoinSource
+pattern JoinSource_Input = JoinSource' "Input"
+
+pattern JoinSource_None :: JoinSource
+pattern JoinSource_None = JoinSource' "None"
+
+{-# COMPLETE
+  JoinSource_Input,
+  JoinSource_None,
+  JoinSource'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/JupyterServerAppSettings.hs b/gen/Amazonka/SageMaker/Types/JupyterServerAppSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/JupyterServerAppSettings.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.JupyterServerAppSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.JupyterServerAppSettings 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 Amazonka.SageMaker.Types.CodeRepository
+import Amazonka.SageMaker.Types.ResourceSpec
+
+-- | The JupyterServer app settings.
+--
+-- /See:/ 'newJupyterServerAppSettings' smart constructor.
+data JupyterServerAppSettings = JupyterServerAppSettings'
+  { -- | A list of Git repositories that SageMaker automatically displays to
+    -- users for cloning in the JupyterServer application.
+    codeRepositories :: Prelude.Maybe [CodeRepository],
+    -- | The default instance type and the Amazon Resource Name (ARN) of the
+    -- default SageMaker image used by the JupyterServer app. If you use the
+    -- @LifecycleConfigArns@ parameter, then this parameter is also required.
+    defaultResourceSpec :: Prelude.Maybe ResourceSpec,
+    -- | The Amazon Resource Name (ARN) of the Lifecycle Configurations attached
+    -- to the JupyterServerApp. If you use this parameter, the
+    -- @DefaultResourceSpec@ parameter is also required.
+    --
+    -- To remove a Lifecycle Config, you must set @LifecycleConfigArns@ to an
+    -- empty list.
+    lifecycleConfigArns :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JupyterServerAppSettings' 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:
+--
+-- 'codeRepositories', 'jupyterServerAppSettings_codeRepositories' - A list of Git repositories that SageMaker automatically displays to
+-- users for cloning in the JupyterServer application.
+--
+-- 'defaultResourceSpec', 'jupyterServerAppSettings_defaultResourceSpec' - The default instance type and the Amazon Resource Name (ARN) of the
+-- default SageMaker image used by the JupyterServer app. If you use the
+-- @LifecycleConfigArns@ parameter, then this parameter is also required.
+--
+-- 'lifecycleConfigArns', 'jupyterServerAppSettings_lifecycleConfigArns' - The Amazon Resource Name (ARN) of the Lifecycle Configurations attached
+-- to the JupyterServerApp. If you use this parameter, the
+-- @DefaultResourceSpec@ parameter is also required.
+--
+-- To remove a Lifecycle Config, you must set @LifecycleConfigArns@ to an
+-- empty list.
+newJupyterServerAppSettings ::
+  JupyterServerAppSettings
+newJupyterServerAppSettings =
+  JupyterServerAppSettings'
+    { codeRepositories =
+        Prelude.Nothing,
+      defaultResourceSpec = Prelude.Nothing,
+      lifecycleConfigArns = Prelude.Nothing
+    }
+
+-- | A list of Git repositories that SageMaker automatically displays to
+-- users for cloning in the JupyterServer application.
+jupyterServerAppSettings_codeRepositories :: Lens.Lens' JupyterServerAppSettings (Prelude.Maybe [CodeRepository])
+jupyterServerAppSettings_codeRepositories = Lens.lens (\JupyterServerAppSettings' {codeRepositories} -> codeRepositories) (\s@JupyterServerAppSettings' {} a -> s {codeRepositories = a} :: JupyterServerAppSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | The default instance type and the Amazon Resource Name (ARN) of the
+-- default SageMaker image used by the JupyterServer app. If you use the
+-- @LifecycleConfigArns@ parameter, then this parameter is also required.
+jupyterServerAppSettings_defaultResourceSpec :: Lens.Lens' JupyterServerAppSettings (Prelude.Maybe ResourceSpec)
+jupyterServerAppSettings_defaultResourceSpec = Lens.lens (\JupyterServerAppSettings' {defaultResourceSpec} -> defaultResourceSpec) (\s@JupyterServerAppSettings' {} a -> s {defaultResourceSpec = a} :: JupyterServerAppSettings)
+
+-- | The Amazon Resource Name (ARN) of the Lifecycle Configurations attached
+-- to the JupyterServerApp. If you use this parameter, the
+-- @DefaultResourceSpec@ parameter is also required.
+--
+-- To remove a Lifecycle Config, you must set @LifecycleConfigArns@ to an
+-- empty list.
+jupyterServerAppSettings_lifecycleConfigArns :: Lens.Lens' JupyterServerAppSettings (Prelude.Maybe [Prelude.Text])
+jupyterServerAppSettings_lifecycleConfigArns = Lens.lens (\JupyterServerAppSettings' {lifecycleConfigArns} -> lifecycleConfigArns) (\s@JupyterServerAppSettings' {} a -> s {lifecycleConfigArns = a} :: JupyterServerAppSettings) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON JupyterServerAppSettings where
+  parseJSON =
+    Data.withObject
+      "JupyterServerAppSettings"
+      ( \x ->
+          JupyterServerAppSettings'
+            Prelude.<$> ( x
+                            Data..:? "CodeRepositories"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "DefaultResourceSpec")
+            Prelude.<*> ( x
+                            Data..:? "LifecycleConfigArns"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable JupyterServerAppSettings where
+  hashWithSalt _salt JupyterServerAppSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` codeRepositories
+      `Prelude.hashWithSalt` defaultResourceSpec
+      `Prelude.hashWithSalt` lifecycleConfigArns
+
+instance Prelude.NFData JupyterServerAppSettings where
+  rnf JupyterServerAppSettings' {..} =
+    Prelude.rnf codeRepositories
+      `Prelude.seq` Prelude.rnf defaultResourceSpec
+      `Prelude.seq` Prelude.rnf lifecycleConfigArns
+
+instance Data.ToJSON JupyterServerAppSettings where
+  toJSON JupyterServerAppSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CodeRepositories" Data..=)
+              Prelude.<$> codeRepositories,
+            ("DefaultResourceSpec" Data..=)
+              Prelude.<$> defaultResourceSpec,
+            ("LifecycleConfigArns" Data..=)
+              Prelude.<$> lifecycleConfigArns
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/KernelGatewayAppSettings.hs b/gen/Amazonka/SageMaker/Types/KernelGatewayAppSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/KernelGatewayAppSettings.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.KernelGatewayAppSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.KernelGatewayAppSettings 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 Amazonka.SageMaker.Types.CustomImage
+import Amazonka.SageMaker.Types.ResourceSpec
+
+-- | The KernelGateway app settings.
+--
+-- /See:/ 'newKernelGatewayAppSettings' smart constructor.
+data KernelGatewayAppSettings = KernelGatewayAppSettings'
+  { -- | A list of custom SageMaker images that are configured to run as a
+    -- KernelGateway app.
+    customImages :: Prelude.Maybe [CustomImage],
+    -- | The default instance type and the Amazon Resource Name (ARN) of the
+    -- default SageMaker image used by the KernelGateway app.
+    --
+    -- The Amazon SageMaker Studio UI does not use the default instance type
+    -- value set here. The default instance type set here is used when Apps are
+    -- created using the Amazon Web Services Command Line Interface or Amazon
+    -- Web Services CloudFormation and the instance type parameter value is not
+    -- passed.
+    defaultResourceSpec :: Prelude.Maybe ResourceSpec,
+    -- | The Amazon Resource Name (ARN) of the Lifecycle Configurations attached
+    -- to the the user profile or domain.
+    --
+    -- To remove a Lifecycle Config, you must set @LifecycleConfigArns@ to an
+    -- empty list.
+    lifecycleConfigArns :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KernelGatewayAppSettings' 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:
+--
+-- 'customImages', 'kernelGatewayAppSettings_customImages' - A list of custom SageMaker images that are configured to run as a
+-- KernelGateway app.
+--
+-- 'defaultResourceSpec', 'kernelGatewayAppSettings_defaultResourceSpec' - The default instance type and the Amazon Resource Name (ARN) of the
+-- default SageMaker image used by the KernelGateway app.
+--
+-- The Amazon SageMaker Studio UI does not use the default instance type
+-- value set here. The default instance type set here is used when Apps are
+-- created using the Amazon Web Services Command Line Interface or Amazon
+-- Web Services CloudFormation and the instance type parameter value is not
+-- passed.
+--
+-- 'lifecycleConfigArns', 'kernelGatewayAppSettings_lifecycleConfigArns' - The Amazon Resource Name (ARN) of the Lifecycle Configurations attached
+-- to the the user profile or domain.
+--
+-- To remove a Lifecycle Config, you must set @LifecycleConfigArns@ to an
+-- empty list.
+newKernelGatewayAppSettings ::
+  KernelGatewayAppSettings
+newKernelGatewayAppSettings =
+  KernelGatewayAppSettings'
+    { customImages =
+        Prelude.Nothing,
+      defaultResourceSpec = Prelude.Nothing,
+      lifecycleConfigArns = Prelude.Nothing
+    }
+
+-- | A list of custom SageMaker images that are configured to run as a
+-- KernelGateway app.
+kernelGatewayAppSettings_customImages :: Lens.Lens' KernelGatewayAppSettings (Prelude.Maybe [CustomImage])
+kernelGatewayAppSettings_customImages = Lens.lens (\KernelGatewayAppSettings' {customImages} -> customImages) (\s@KernelGatewayAppSettings' {} a -> s {customImages = a} :: KernelGatewayAppSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | The default instance type and the Amazon Resource Name (ARN) of the
+-- default SageMaker image used by the KernelGateway app.
+--
+-- The Amazon SageMaker Studio UI does not use the default instance type
+-- value set here. The default instance type set here is used when Apps are
+-- created using the Amazon Web Services Command Line Interface or Amazon
+-- Web Services CloudFormation and the instance type parameter value is not
+-- passed.
+kernelGatewayAppSettings_defaultResourceSpec :: Lens.Lens' KernelGatewayAppSettings (Prelude.Maybe ResourceSpec)
+kernelGatewayAppSettings_defaultResourceSpec = Lens.lens (\KernelGatewayAppSettings' {defaultResourceSpec} -> defaultResourceSpec) (\s@KernelGatewayAppSettings' {} a -> s {defaultResourceSpec = a} :: KernelGatewayAppSettings)
+
+-- | The Amazon Resource Name (ARN) of the Lifecycle Configurations attached
+-- to the the user profile or domain.
+--
+-- To remove a Lifecycle Config, you must set @LifecycleConfigArns@ to an
+-- empty list.
+kernelGatewayAppSettings_lifecycleConfigArns :: Lens.Lens' KernelGatewayAppSettings (Prelude.Maybe [Prelude.Text])
+kernelGatewayAppSettings_lifecycleConfigArns = Lens.lens (\KernelGatewayAppSettings' {lifecycleConfigArns} -> lifecycleConfigArns) (\s@KernelGatewayAppSettings' {} a -> s {lifecycleConfigArns = a} :: KernelGatewayAppSettings) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON KernelGatewayAppSettings where
+  parseJSON =
+    Data.withObject
+      "KernelGatewayAppSettings"
+      ( \x ->
+          KernelGatewayAppSettings'
+            Prelude.<$> (x Data..:? "CustomImages" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "DefaultResourceSpec")
+            Prelude.<*> ( x
+                            Data..:? "LifecycleConfigArns"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable KernelGatewayAppSettings where
+  hashWithSalt _salt KernelGatewayAppSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` customImages
+      `Prelude.hashWithSalt` defaultResourceSpec
+      `Prelude.hashWithSalt` lifecycleConfigArns
+
+instance Prelude.NFData KernelGatewayAppSettings where
+  rnf KernelGatewayAppSettings' {..} =
+    Prelude.rnf customImages
+      `Prelude.seq` Prelude.rnf defaultResourceSpec
+      `Prelude.seq` Prelude.rnf lifecycleConfigArns
+
+instance Data.ToJSON KernelGatewayAppSettings where
+  toJSON KernelGatewayAppSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomImages" Data..=) Prelude.<$> customImages,
+            ("DefaultResourceSpec" Data..=)
+              Prelude.<$> defaultResourceSpec,
+            ("LifecycleConfigArns" Data..=)
+              Prelude.<$> lifecycleConfigArns
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/KernelGatewayImageConfig.hs b/gen/Amazonka/SageMaker/Types/KernelGatewayImageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/KernelGatewayImageConfig.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.KernelGatewayImageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.KernelGatewayImageConfig 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 Amazonka.SageMaker.Types.FileSystemConfig
+import Amazonka.SageMaker.Types.KernelSpec
+
+-- | The configuration for the file system and kernels in a SageMaker image
+-- running as a KernelGateway app.
+--
+-- /See:/ 'newKernelGatewayImageConfig' smart constructor.
+data KernelGatewayImageConfig = KernelGatewayImageConfig'
+  { -- | The Amazon Elastic File System (EFS) storage configuration for a
+    -- SageMaker image.
+    fileSystemConfig :: Prelude.Maybe FileSystemConfig,
+    -- | The specification of the Jupyter kernels in the image.
+    kernelSpecs :: Prelude.NonEmpty KernelSpec
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KernelGatewayImageConfig' 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:
+--
+-- 'fileSystemConfig', 'kernelGatewayImageConfig_fileSystemConfig' - The Amazon Elastic File System (EFS) storage configuration for a
+-- SageMaker image.
+--
+-- 'kernelSpecs', 'kernelGatewayImageConfig_kernelSpecs' - The specification of the Jupyter kernels in the image.
+newKernelGatewayImageConfig ::
+  -- | 'kernelSpecs'
+  Prelude.NonEmpty KernelSpec ->
+  KernelGatewayImageConfig
+newKernelGatewayImageConfig pKernelSpecs_ =
+  KernelGatewayImageConfig'
+    { fileSystemConfig =
+        Prelude.Nothing,
+      kernelSpecs = Lens.coerced Lens.# pKernelSpecs_
+    }
+
+-- | The Amazon Elastic File System (EFS) storage configuration for a
+-- SageMaker image.
+kernelGatewayImageConfig_fileSystemConfig :: Lens.Lens' KernelGatewayImageConfig (Prelude.Maybe FileSystemConfig)
+kernelGatewayImageConfig_fileSystemConfig = Lens.lens (\KernelGatewayImageConfig' {fileSystemConfig} -> fileSystemConfig) (\s@KernelGatewayImageConfig' {} a -> s {fileSystemConfig = a} :: KernelGatewayImageConfig)
+
+-- | The specification of the Jupyter kernels in the image.
+kernelGatewayImageConfig_kernelSpecs :: Lens.Lens' KernelGatewayImageConfig (Prelude.NonEmpty KernelSpec)
+kernelGatewayImageConfig_kernelSpecs = Lens.lens (\KernelGatewayImageConfig' {kernelSpecs} -> kernelSpecs) (\s@KernelGatewayImageConfig' {} a -> s {kernelSpecs = a} :: KernelGatewayImageConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON KernelGatewayImageConfig where
+  parseJSON =
+    Data.withObject
+      "KernelGatewayImageConfig"
+      ( \x ->
+          KernelGatewayImageConfig'
+            Prelude.<$> (x Data..:? "FileSystemConfig")
+            Prelude.<*> (x Data..: "KernelSpecs")
+      )
+
+instance Prelude.Hashable KernelGatewayImageConfig where
+  hashWithSalt _salt KernelGatewayImageConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` fileSystemConfig
+      `Prelude.hashWithSalt` kernelSpecs
+
+instance Prelude.NFData KernelGatewayImageConfig where
+  rnf KernelGatewayImageConfig' {..} =
+    Prelude.rnf fileSystemConfig
+      `Prelude.seq` Prelude.rnf kernelSpecs
+
+instance Data.ToJSON KernelGatewayImageConfig where
+  toJSON KernelGatewayImageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FileSystemConfig" Data..=)
+              Prelude.<$> fileSystemConfig,
+            Prelude.Just ("KernelSpecs" Data..= kernelSpecs)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/KernelSpec.hs b/gen/Amazonka/SageMaker/Types/KernelSpec.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/KernelSpec.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.KernelSpec
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.KernelSpec 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
+
+-- | The specification of a Jupyter kernel.
+--
+-- /See:/ 'newKernelSpec' smart constructor.
+data KernelSpec = KernelSpec'
+  { -- | The display name of the kernel.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Jupyter kernel in the image. This value is case
+    -- sensitive.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KernelSpec' 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:
+--
+-- 'displayName', 'kernelSpec_displayName' - The display name of the kernel.
+--
+-- 'name', 'kernelSpec_name' - The name of the Jupyter kernel in the image. This value is case
+-- sensitive.
+newKernelSpec ::
+  -- | 'name'
+  Prelude.Text ->
+  KernelSpec
+newKernelSpec pName_ =
+  KernelSpec'
+    { displayName = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The display name of the kernel.
+kernelSpec_displayName :: Lens.Lens' KernelSpec (Prelude.Maybe Prelude.Text)
+kernelSpec_displayName = Lens.lens (\KernelSpec' {displayName} -> displayName) (\s@KernelSpec' {} a -> s {displayName = a} :: KernelSpec)
+
+-- | The name of the Jupyter kernel in the image. This value is case
+-- sensitive.
+kernelSpec_name :: Lens.Lens' KernelSpec Prelude.Text
+kernelSpec_name = Lens.lens (\KernelSpec' {name} -> name) (\s@KernelSpec' {} a -> s {name = a} :: KernelSpec)
+
+instance Data.FromJSON KernelSpec where
+  parseJSON =
+    Data.withObject
+      "KernelSpec"
+      ( \x ->
+          KernelSpec'
+            Prelude.<$> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable KernelSpec where
+  hashWithSalt _salt KernelSpec' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData KernelSpec where
+  rnf KernelSpec' {..} =
+    Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON KernelSpec where
+  toJSON KernelSpec' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayName" Data..=) Prelude.<$> displayName,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelCounters.hs b/gen/Amazonka/SageMaker/Types/LabelCounters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelCounters.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelCounters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelCounters 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
+
+-- | Provides a breakdown of the number of objects labeled.
+--
+-- /See:/ 'newLabelCounters' smart constructor.
+data LabelCounters = LabelCounters'
+  { -- | The total number of objects that could not be labeled due to an error.
+    failedNonRetryableError :: Prelude.Maybe Prelude.Natural,
+    -- | The total number of objects labeled by a human worker.
+    humanLabeled :: Prelude.Maybe Prelude.Natural,
+    -- | The total number of objects labeled by automated data labeling.
+    machineLabeled :: Prelude.Maybe Prelude.Natural,
+    -- | The total number of objects labeled.
+    totalLabeled :: Prelude.Maybe Prelude.Natural,
+    -- | The total number of objects not yet labeled.
+    unlabeled :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelCounters' 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:
+--
+-- 'failedNonRetryableError', 'labelCounters_failedNonRetryableError' - The total number of objects that could not be labeled due to an error.
+--
+-- 'humanLabeled', 'labelCounters_humanLabeled' - The total number of objects labeled by a human worker.
+--
+-- 'machineLabeled', 'labelCounters_machineLabeled' - The total number of objects labeled by automated data labeling.
+--
+-- 'totalLabeled', 'labelCounters_totalLabeled' - The total number of objects labeled.
+--
+-- 'unlabeled', 'labelCounters_unlabeled' - The total number of objects not yet labeled.
+newLabelCounters ::
+  LabelCounters
+newLabelCounters =
+  LabelCounters'
+    { failedNonRetryableError =
+        Prelude.Nothing,
+      humanLabeled = Prelude.Nothing,
+      machineLabeled = Prelude.Nothing,
+      totalLabeled = Prelude.Nothing,
+      unlabeled = Prelude.Nothing
+    }
+
+-- | The total number of objects that could not be labeled due to an error.
+labelCounters_failedNonRetryableError :: Lens.Lens' LabelCounters (Prelude.Maybe Prelude.Natural)
+labelCounters_failedNonRetryableError = Lens.lens (\LabelCounters' {failedNonRetryableError} -> failedNonRetryableError) (\s@LabelCounters' {} a -> s {failedNonRetryableError = a} :: LabelCounters)
+
+-- | The total number of objects labeled by a human worker.
+labelCounters_humanLabeled :: Lens.Lens' LabelCounters (Prelude.Maybe Prelude.Natural)
+labelCounters_humanLabeled = Lens.lens (\LabelCounters' {humanLabeled} -> humanLabeled) (\s@LabelCounters' {} a -> s {humanLabeled = a} :: LabelCounters)
+
+-- | The total number of objects labeled by automated data labeling.
+labelCounters_machineLabeled :: Lens.Lens' LabelCounters (Prelude.Maybe Prelude.Natural)
+labelCounters_machineLabeled = Lens.lens (\LabelCounters' {machineLabeled} -> machineLabeled) (\s@LabelCounters' {} a -> s {machineLabeled = a} :: LabelCounters)
+
+-- | The total number of objects labeled.
+labelCounters_totalLabeled :: Lens.Lens' LabelCounters (Prelude.Maybe Prelude.Natural)
+labelCounters_totalLabeled = Lens.lens (\LabelCounters' {totalLabeled} -> totalLabeled) (\s@LabelCounters' {} a -> s {totalLabeled = a} :: LabelCounters)
+
+-- | The total number of objects not yet labeled.
+labelCounters_unlabeled :: Lens.Lens' LabelCounters (Prelude.Maybe Prelude.Natural)
+labelCounters_unlabeled = Lens.lens (\LabelCounters' {unlabeled} -> unlabeled) (\s@LabelCounters' {} a -> s {unlabeled = a} :: LabelCounters)
+
+instance Data.FromJSON LabelCounters where
+  parseJSON =
+    Data.withObject
+      "LabelCounters"
+      ( \x ->
+          LabelCounters'
+            Prelude.<$> (x Data..:? "FailedNonRetryableError")
+            Prelude.<*> (x Data..:? "HumanLabeled")
+            Prelude.<*> (x Data..:? "MachineLabeled")
+            Prelude.<*> (x Data..:? "TotalLabeled")
+            Prelude.<*> (x Data..:? "Unlabeled")
+      )
+
+instance Prelude.Hashable LabelCounters where
+  hashWithSalt _salt LabelCounters' {..} =
+    _salt
+      `Prelude.hashWithSalt` failedNonRetryableError
+      `Prelude.hashWithSalt` humanLabeled
+      `Prelude.hashWithSalt` machineLabeled
+      `Prelude.hashWithSalt` totalLabeled
+      `Prelude.hashWithSalt` unlabeled
+
+instance Prelude.NFData LabelCounters where
+  rnf LabelCounters' {..} =
+    Prelude.rnf failedNonRetryableError
+      `Prelude.seq` Prelude.rnf humanLabeled
+      `Prelude.seq` Prelude.rnf machineLabeled
+      `Prelude.seq` Prelude.rnf totalLabeled
+      `Prelude.seq` Prelude.rnf unlabeled
diff --git a/gen/Amazonka/SageMaker/Types/LabelCountersForWorkteam.hs b/gen/Amazonka/SageMaker/Types/LabelCountersForWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelCountersForWorkteam.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelCountersForWorkteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelCountersForWorkteam 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
+
+-- | Provides counts for human-labeled tasks in the labeling job.
+--
+-- /See:/ 'newLabelCountersForWorkteam' smart constructor.
+data LabelCountersForWorkteam = LabelCountersForWorkteam'
+  { -- | The total number of data objects labeled by a human worker.
+    humanLabeled :: Prelude.Maybe Prelude.Natural,
+    -- | The total number of data objects that need to be labeled by a human
+    -- worker.
+    pendingHuman :: Prelude.Maybe Prelude.Natural,
+    -- | The total number of tasks in the labeling job.
+    total :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelCountersForWorkteam' 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:
+--
+-- 'humanLabeled', 'labelCountersForWorkteam_humanLabeled' - The total number of data objects labeled by a human worker.
+--
+-- 'pendingHuman', 'labelCountersForWorkteam_pendingHuman' - The total number of data objects that need to be labeled by a human
+-- worker.
+--
+-- 'total', 'labelCountersForWorkteam_total' - The total number of tasks in the labeling job.
+newLabelCountersForWorkteam ::
+  LabelCountersForWorkteam
+newLabelCountersForWorkteam =
+  LabelCountersForWorkteam'
+    { humanLabeled =
+        Prelude.Nothing,
+      pendingHuman = Prelude.Nothing,
+      total = Prelude.Nothing
+    }
+
+-- | The total number of data objects labeled by a human worker.
+labelCountersForWorkteam_humanLabeled :: Lens.Lens' LabelCountersForWorkteam (Prelude.Maybe Prelude.Natural)
+labelCountersForWorkteam_humanLabeled = Lens.lens (\LabelCountersForWorkteam' {humanLabeled} -> humanLabeled) (\s@LabelCountersForWorkteam' {} a -> s {humanLabeled = a} :: LabelCountersForWorkteam)
+
+-- | The total number of data objects that need to be labeled by a human
+-- worker.
+labelCountersForWorkteam_pendingHuman :: Lens.Lens' LabelCountersForWorkteam (Prelude.Maybe Prelude.Natural)
+labelCountersForWorkteam_pendingHuman = Lens.lens (\LabelCountersForWorkteam' {pendingHuman} -> pendingHuman) (\s@LabelCountersForWorkteam' {} a -> s {pendingHuman = a} :: LabelCountersForWorkteam)
+
+-- | The total number of tasks in the labeling job.
+labelCountersForWorkteam_total :: Lens.Lens' LabelCountersForWorkteam (Prelude.Maybe Prelude.Natural)
+labelCountersForWorkteam_total = Lens.lens (\LabelCountersForWorkteam' {total} -> total) (\s@LabelCountersForWorkteam' {} a -> s {total = a} :: LabelCountersForWorkteam)
+
+instance Data.FromJSON LabelCountersForWorkteam where
+  parseJSON =
+    Data.withObject
+      "LabelCountersForWorkteam"
+      ( \x ->
+          LabelCountersForWorkteam'
+            Prelude.<$> (x Data..:? "HumanLabeled")
+            Prelude.<*> (x Data..:? "PendingHuman")
+            Prelude.<*> (x Data..:? "Total")
+      )
+
+instance Prelude.Hashable LabelCountersForWorkteam where
+  hashWithSalt _salt LabelCountersForWorkteam' {..} =
+    _salt
+      `Prelude.hashWithSalt` humanLabeled
+      `Prelude.hashWithSalt` pendingHuman
+      `Prelude.hashWithSalt` total
+
+instance Prelude.NFData LabelCountersForWorkteam where
+  rnf LabelCountersForWorkteam' {..} =
+    Prelude.rnf humanLabeled
+      `Prelude.seq` Prelude.rnf pendingHuman
+      `Prelude.seq` Prelude.rnf total
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobAlgorithmsConfig.hs b/gen/Amazonka/SageMaker/Types/LabelingJobAlgorithmsConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobAlgorithmsConfig.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobAlgorithmsConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobAlgorithmsConfig 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 Amazonka.SageMaker.Types.LabelingJobResourceConfig
+
+-- | Provides configuration information for auto-labeling of your data
+-- objects. A @LabelingJobAlgorithmsConfig@ object must be supplied in
+-- order to use auto-labeling.
+--
+-- /See:/ 'newLabelingJobAlgorithmsConfig' smart constructor.
+data LabelingJobAlgorithmsConfig = LabelingJobAlgorithmsConfig'
+  { -- | At the end of an auto-label job Ground Truth sends the Amazon Resource
+    -- Name (ARN) of the final model used for auto-labeling. You can use this
+    -- model as the starting point for subsequent similar jobs by providing the
+    -- ARN of the model here.
+    initialActiveLearningModelArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides configuration information for a labeling job.
+    labelingJobResourceConfig :: Prelude.Maybe LabelingJobResourceConfig,
+    -- | Specifies the Amazon Resource Name (ARN) of the algorithm used for
+    -- auto-labeling. You must select one of the following ARNs:
+    --
+    -- -   /Image classification/
+    --
+    --     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/image-classification@
+    --
+    -- -   /Text classification/
+    --
+    --     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/text-classification@
+    --
+    -- -   /Object detection/
+    --
+    --     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/object-detection@
+    --
+    -- -   /Semantic Segmentation/
+    --
+    --     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/semantic-segmentation@
+    labelingJobAlgorithmSpecificationArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobAlgorithmsConfig' 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:
+--
+-- 'initialActiveLearningModelArn', 'labelingJobAlgorithmsConfig_initialActiveLearningModelArn' - At the end of an auto-label job Ground Truth sends the Amazon Resource
+-- Name (ARN) of the final model used for auto-labeling. You can use this
+-- model as the starting point for subsequent similar jobs by providing the
+-- ARN of the model here.
+--
+-- 'labelingJobResourceConfig', 'labelingJobAlgorithmsConfig_labelingJobResourceConfig' - Provides configuration information for a labeling job.
+--
+-- 'labelingJobAlgorithmSpecificationArn', 'labelingJobAlgorithmsConfig_labelingJobAlgorithmSpecificationArn' - Specifies the Amazon Resource Name (ARN) of the algorithm used for
+-- auto-labeling. You must select one of the following ARNs:
+--
+-- -   /Image classification/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/image-classification@
+--
+-- -   /Text classification/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/text-classification@
+--
+-- -   /Object detection/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/object-detection@
+--
+-- -   /Semantic Segmentation/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/semantic-segmentation@
+newLabelingJobAlgorithmsConfig ::
+  -- | 'labelingJobAlgorithmSpecificationArn'
+  Prelude.Text ->
+  LabelingJobAlgorithmsConfig
+newLabelingJobAlgorithmsConfig
+  pLabelingJobAlgorithmSpecificationArn_ =
+    LabelingJobAlgorithmsConfig'
+      { initialActiveLearningModelArn =
+          Prelude.Nothing,
+        labelingJobResourceConfig = Prelude.Nothing,
+        labelingJobAlgorithmSpecificationArn =
+          pLabelingJobAlgorithmSpecificationArn_
+      }
+
+-- | At the end of an auto-label job Ground Truth sends the Amazon Resource
+-- Name (ARN) of the final model used for auto-labeling. You can use this
+-- model as the starting point for subsequent similar jobs by providing the
+-- ARN of the model here.
+labelingJobAlgorithmsConfig_initialActiveLearningModelArn :: Lens.Lens' LabelingJobAlgorithmsConfig (Prelude.Maybe Prelude.Text)
+labelingJobAlgorithmsConfig_initialActiveLearningModelArn = Lens.lens (\LabelingJobAlgorithmsConfig' {initialActiveLearningModelArn} -> initialActiveLearningModelArn) (\s@LabelingJobAlgorithmsConfig' {} a -> s {initialActiveLearningModelArn = a} :: LabelingJobAlgorithmsConfig)
+
+-- | Provides configuration information for a labeling job.
+labelingJobAlgorithmsConfig_labelingJobResourceConfig :: Lens.Lens' LabelingJobAlgorithmsConfig (Prelude.Maybe LabelingJobResourceConfig)
+labelingJobAlgorithmsConfig_labelingJobResourceConfig = Lens.lens (\LabelingJobAlgorithmsConfig' {labelingJobResourceConfig} -> labelingJobResourceConfig) (\s@LabelingJobAlgorithmsConfig' {} a -> s {labelingJobResourceConfig = a} :: LabelingJobAlgorithmsConfig)
+
+-- | Specifies the Amazon Resource Name (ARN) of the algorithm used for
+-- auto-labeling. You must select one of the following ARNs:
+--
+-- -   /Image classification/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/image-classification@
+--
+-- -   /Text classification/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/text-classification@
+--
+-- -   /Object detection/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/object-detection@
+--
+-- -   /Semantic Segmentation/
+--
+--     @arn:aws:sagemaker:@/@region@/@:027400017018:labeling-job-algorithm-specification\/semantic-segmentation@
+labelingJobAlgorithmsConfig_labelingJobAlgorithmSpecificationArn :: Lens.Lens' LabelingJobAlgorithmsConfig Prelude.Text
+labelingJobAlgorithmsConfig_labelingJobAlgorithmSpecificationArn = Lens.lens (\LabelingJobAlgorithmsConfig' {labelingJobAlgorithmSpecificationArn} -> labelingJobAlgorithmSpecificationArn) (\s@LabelingJobAlgorithmsConfig' {} a -> s {labelingJobAlgorithmSpecificationArn = a} :: LabelingJobAlgorithmsConfig)
+
+instance Data.FromJSON LabelingJobAlgorithmsConfig where
+  parseJSON =
+    Data.withObject
+      "LabelingJobAlgorithmsConfig"
+      ( \x ->
+          LabelingJobAlgorithmsConfig'
+            Prelude.<$> (x Data..:? "InitialActiveLearningModelArn")
+            Prelude.<*> (x Data..:? "LabelingJobResourceConfig")
+            Prelude.<*> (x Data..: "LabelingJobAlgorithmSpecificationArn")
+      )
+
+instance Prelude.Hashable LabelingJobAlgorithmsConfig where
+  hashWithSalt _salt LabelingJobAlgorithmsConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` initialActiveLearningModelArn
+      `Prelude.hashWithSalt` labelingJobResourceConfig
+      `Prelude.hashWithSalt` labelingJobAlgorithmSpecificationArn
+
+instance Prelude.NFData LabelingJobAlgorithmsConfig where
+  rnf LabelingJobAlgorithmsConfig' {..} =
+    Prelude.rnf initialActiveLearningModelArn
+      `Prelude.seq` Prelude.rnf labelingJobResourceConfig
+      `Prelude.seq` Prelude.rnf labelingJobAlgorithmSpecificationArn
+
+instance Data.ToJSON LabelingJobAlgorithmsConfig where
+  toJSON LabelingJobAlgorithmsConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InitialActiveLearningModelArn" Data..=)
+              Prelude.<$> initialActiveLearningModelArn,
+            ("LabelingJobResourceConfig" Data..=)
+              Prelude.<$> labelingJobResourceConfig,
+            Prelude.Just
+              ( "LabelingJobAlgorithmSpecificationArn"
+                  Data..= labelingJobAlgorithmSpecificationArn
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobDataAttributes.hs b/gen/Amazonka/SageMaker/Types/LabelingJobDataAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobDataAttributes.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobDataAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobDataAttributes 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 Amazonka.SageMaker.Types.ContentClassifier
+
+-- | Attributes of the data specified by the customer. Use these to describe
+-- the data to be labeled.
+--
+-- /See:/ 'newLabelingJobDataAttributes' smart constructor.
+data LabelingJobDataAttributes = LabelingJobDataAttributes'
+  { -- | Declares that your content is free of personally identifiable
+    -- information or adult content. SageMaker may restrict the Amazon
+    -- Mechanical Turk workers that can view your task based on this
+    -- information.
+    contentClassifiers :: Prelude.Maybe [ContentClassifier]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobDataAttributes' 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:
+--
+-- 'contentClassifiers', 'labelingJobDataAttributes_contentClassifiers' - Declares that your content is free of personally identifiable
+-- information or adult content. SageMaker may restrict the Amazon
+-- Mechanical Turk workers that can view your task based on this
+-- information.
+newLabelingJobDataAttributes ::
+  LabelingJobDataAttributes
+newLabelingJobDataAttributes =
+  LabelingJobDataAttributes'
+    { contentClassifiers =
+        Prelude.Nothing
+    }
+
+-- | Declares that your content is free of personally identifiable
+-- information or adult content. SageMaker may restrict the Amazon
+-- Mechanical Turk workers that can view your task based on this
+-- information.
+labelingJobDataAttributes_contentClassifiers :: Lens.Lens' LabelingJobDataAttributes (Prelude.Maybe [ContentClassifier])
+labelingJobDataAttributes_contentClassifiers = Lens.lens (\LabelingJobDataAttributes' {contentClassifiers} -> contentClassifiers) (\s@LabelingJobDataAttributes' {} a -> s {contentClassifiers = a} :: LabelingJobDataAttributes) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LabelingJobDataAttributes where
+  parseJSON =
+    Data.withObject
+      "LabelingJobDataAttributes"
+      ( \x ->
+          LabelingJobDataAttributes'
+            Prelude.<$> ( x
+                            Data..:? "ContentClassifiers"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable LabelingJobDataAttributes where
+  hashWithSalt _salt LabelingJobDataAttributes' {..} =
+    _salt `Prelude.hashWithSalt` contentClassifiers
+
+instance Prelude.NFData LabelingJobDataAttributes where
+  rnf LabelingJobDataAttributes' {..} =
+    Prelude.rnf contentClassifiers
+
+instance Data.ToJSON LabelingJobDataAttributes where
+  toJSON LabelingJobDataAttributes' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentClassifiers" Data..=)
+              Prelude.<$> contentClassifiers
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobDataSource.hs b/gen/Amazonka/SageMaker/Types/LabelingJobDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobDataSource.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobDataSource 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 Amazonka.SageMaker.Types.LabelingJobS3DataSource
+import Amazonka.SageMaker.Types.LabelingJobSnsDataSource
+
+-- | Provides information about the location of input data.
+--
+-- You must specify at least one of the following: @S3DataSource@ or
+-- @SnsDataSource@.
+--
+-- Use @SnsDataSource@ to specify an SNS input topic for a streaming
+-- labeling job. If you do not specify and SNS input topic ARN, Ground
+-- Truth will create a one-time labeling job.
+--
+-- Use @S3DataSource@ to specify an input manifest file for both streaming
+-- and one-time labeling jobs. Adding an @S3DataSource@ is optional if you
+-- use @SnsDataSource@ to create a streaming labeling job.
+--
+-- /See:/ 'newLabelingJobDataSource' smart constructor.
+data LabelingJobDataSource = LabelingJobDataSource'
+  { -- | The Amazon S3 location of the input data objects.
+    s3DataSource :: Prelude.Maybe LabelingJobS3DataSource,
+    -- | An Amazon SNS data source used for streaming labeling jobs. To learn
+    -- more, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-send-data Send Data to a Streaming Labeling Job>.
+    snsDataSource :: Prelude.Maybe LabelingJobSnsDataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobDataSource' 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:
+--
+-- 's3DataSource', 'labelingJobDataSource_s3DataSource' - The Amazon S3 location of the input data objects.
+--
+-- 'snsDataSource', 'labelingJobDataSource_snsDataSource' - An Amazon SNS data source used for streaming labeling jobs. To learn
+-- more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-send-data Send Data to a Streaming Labeling Job>.
+newLabelingJobDataSource ::
+  LabelingJobDataSource
+newLabelingJobDataSource =
+  LabelingJobDataSource'
+    { s3DataSource =
+        Prelude.Nothing,
+      snsDataSource = Prelude.Nothing
+    }
+
+-- | The Amazon S3 location of the input data objects.
+labelingJobDataSource_s3DataSource :: Lens.Lens' LabelingJobDataSource (Prelude.Maybe LabelingJobS3DataSource)
+labelingJobDataSource_s3DataSource = Lens.lens (\LabelingJobDataSource' {s3DataSource} -> s3DataSource) (\s@LabelingJobDataSource' {} a -> s {s3DataSource = a} :: LabelingJobDataSource)
+
+-- | An Amazon SNS data source used for streaming labeling jobs. To learn
+-- more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-send-data Send Data to a Streaming Labeling Job>.
+labelingJobDataSource_snsDataSource :: Lens.Lens' LabelingJobDataSource (Prelude.Maybe LabelingJobSnsDataSource)
+labelingJobDataSource_snsDataSource = Lens.lens (\LabelingJobDataSource' {snsDataSource} -> snsDataSource) (\s@LabelingJobDataSource' {} a -> s {snsDataSource = a} :: LabelingJobDataSource)
+
+instance Data.FromJSON LabelingJobDataSource where
+  parseJSON =
+    Data.withObject
+      "LabelingJobDataSource"
+      ( \x ->
+          LabelingJobDataSource'
+            Prelude.<$> (x Data..:? "S3DataSource")
+            Prelude.<*> (x Data..:? "SnsDataSource")
+      )
+
+instance Prelude.Hashable LabelingJobDataSource where
+  hashWithSalt _salt LabelingJobDataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3DataSource
+      `Prelude.hashWithSalt` snsDataSource
+
+instance Prelude.NFData LabelingJobDataSource where
+  rnf LabelingJobDataSource' {..} =
+    Prelude.rnf s3DataSource
+      `Prelude.seq` Prelude.rnf snsDataSource
+
+instance Data.ToJSON LabelingJobDataSource where
+  toJSON LabelingJobDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("S3DataSource" Data..=) Prelude.<$> s3DataSource,
+            ("SnsDataSource" Data..=) Prelude.<$> snsDataSource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobForWorkteamSummary.hs b/gen/Amazonka/SageMaker/Types/LabelingJobForWorkteamSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobForWorkteamSummary.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobForWorkteamSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobForWorkteamSummary 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 Amazonka.SageMaker.Types.LabelCountersForWorkteam
+
+-- | Provides summary information for a work team.
+--
+-- /See:/ 'newLabelingJobForWorkteamSummary' smart constructor.
+data LabelingJobForWorkteamSummary = LabelingJobForWorkteamSummary'
+  { -- | Provides information about the progress of a labeling job.
+    labelCounters :: Prelude.Maybe LabelCountersForWorkteam,
+    -- | The name of the labeling job that the work team is assigned to.
+    labelingJobName :: Prelude.Maybe Prelude.Text,
+    -- | The configured number of workers per data object.
+    numberOfHumanWorkersPerDataObject :: Prelude.Maybe Prelude.Natural,
+    -- | A unique identifier for a labeling job. You can use this to refer to a
+    -- specific labeling job.
+    jobReferenceCode :: Prelude.Text,
+    -- | The Amazon Web Services account ID of the account used to start the
+    -- labeling job.
+    workRequesterAccountId :: Prelude.Text,
+    -- | The date and time that the labeling job was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobForWorkteamSummary' 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:
+--
+-- 'labelCounters', 'labelingJobForWorkteamSummary_labelCounters' - Provides information about the progress of a labeling job.
+--
+-- 'labelingJobName', 'labelingJobForWorkteamSummary_labelingJobName' - The name of the labeling job that the work team is assigned to.
+--
+-- 'numberOfHumanWorkersPerDataObject', 'labelingJobForWorkteamSummary_numberOfHumanWorkersPerDataObject' - The configured number of workers per data object.
+--
+-- 'jobReferenceCode', 'labelingJobForWorkteamSummary_jobReferenceCode' - A unique identifier for a labeling job. You can use this to refer to a
+-- specific labeling job.
+--
+-- 'workRequesterAccountId', 'labelingJobForWorkteamSummary_workRequesterAccountId' - The Amazon Web Services account ID of the account used to start the
+-- labeling job.
+--
+-- 'creationTime', 'labelingJobForWorkteamSummary_creationTime' - The date and time that the labeling job was created.
+newLabelingJobForWorkteamSummary ::
+  -- | 'jobReferenceCode'
+  Prelude.Text ->
+  -- | 'workRequesterAccountId'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  LabelingJobForWorkteamSummary
+newLabelingJobForWorkteamSummary
+  pJobReferenceCode_
+  pWorkRequesterAccountId_
+  pCreationTime_ =
+    LabelingJobForWorkteamSummary'
+      { labelCounters =
+          Prelude.Nothing,
+        labelingJobName = Prelude.Nothing,
+        numberOfHumanWorkersPerDataObject =
+          Prelude.Nothing,
+        jobReferenceCode = pJobReferenceCode_,
+        workRequesterAccountId =
+          pWorkRequesterAccountId_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_
+      }
+
+-- | Provides information about the progress of a labeling job.
+labelingJobForWorkteamSummary_labelCounters :: Lens.Lens' LabelingJobForWorkteamSummary (Prelude.Maybe LabelCountersForWorkteam)
+labelingJobForWorkteamSummary_labelCounters = Lens.lens (\LabelingJobForWorkteamSummary' {labelCounters} -> labelCounters) (\s@LabelingJobForWorkteamSummary' {} a -> s {labelCounters = a} :: LabelingJobForWorkteamSummary)
+
+-- | The name of the labeling job that the work team is assigned to.
+labelingJobForWorkteamSummary_labelingJobName :: Lens.Lens' LabelingJobForWorkteamSummary (Prelude.Maybe Prelude.Text)
+labelingJobForWorkteamSummary_labelingJobName = Lens.lens (\LabelingJobForWorkteamSummary' {labelingJobName} -> labelingJobName) (\s@LabelingJobForWorkteamSummary' {} a -> s {labelingJobName = a} :: LabelingJobForWorkteamSummary)
+
+-- | The configured number of workers per data object.
+labelingJobForWorkteamSummary_numberOfHumanWorkersPerDataObject :: Lens.Lens' LabelingJobForWorkteamSummary (Prelude.Maybe Prelude.Natural)
+labelingJobForWorkteamSummary_numberOfHumanWorkersPerDataObject = Lens.lens (\LabelingJobForWorkteamSummary' {numberOfHumanWorkersPerDataObject} -> numberOfHumanWorkersPerDataObject) (\s@LabelingJobForWorkteamSummary' {} a -> s {numberOfHumanWorkersPerDataObject = a} :: LabelingJobForWorkteamSummary)
+
+-- | A unique identifier for a labeling job. You can use this to refer to a
+-- specific labeling job.
+labelingJobForWorkteamSummary_jobReferenceCode :: Lens.Lens' LabelingJobForWorkteamSummary Prelude.Text
+labelingJobForWorkteamSummary_jobReferenceCode = Lens.lens (\LabelingJobForWorkteamSummary' {jobReferenceCode} -> jobReferenceCode) (\s@LabelingJobForWorkteamSummary' {} a -> s {jobReferenceCode = a} :: LabelingJobForWorkteamSummary)
+
+-- | The Amazon Web Services account ID of the account used to start the
+-- labeling job.
+labelingJobForWorkteamSummary_workRequesterAccountId :: Lens.Lens' LabelingJobForWorkteamSummary Prelude.Text
+labelingJobForWorkteamSummary_workRequesterAccountId = Lens.lens (\LabelingJobForWorkteamSummary' {workRequesterAccountId} -> workRequesterAccountId) (\s@LabelingJobForWorkteamSummary' {} a -> s {workRequesterAccountId = a} :: LabelingJobForWorkteamSummary)
+
+-- | The date and time that the labeling job was created.
+labelingJobForWorkteamSummary_creationTime :: Lens.Lens' LabelingJobForWorkteamSummary Prelude.UTCTime
+labelingJobForWorkteamSummary_creationTime = Lens.lens (\LabelingJobForWorkteamSummary' {creationTime} -> creationTime) (\s@LabelingJobForWorkteamSummary' {} a -> s {creationTime = a} :: LabelingJobForWorkteamSummary) Prelude.. Data._Time
+
+instance Data.FromJSON LabelingJobForWorkteamSummary where
+  parseJSON =
+    Data.withObject
+      "LabelingJobForWorkteamSummary"
+      ( \x ->
+          LabelingJobForWorkteamSummary'
+            Prelude.<$> (x Data..:? "LabelCounters")
+            Prelude.<*> (x Data..:? "LabelingJobName")
+            Prelude.<*> (x Data..:? "NumberOfHumanWorkersPerDataObject")
+            Prelude.<*> (x Data..: "JobReferenceCode")
+            Prelude.<*> (x Data..: "WorkRequesterAccountId")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance
+  Prelude.Hashable
+    LabelingJobForWorkteamSummary
+  where
+  hashWithSalt _salt LabelingJobForWorkteamSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelCounters
+      `Prelude.hashWithSalt` labelingJobName
+      `Prelude.hashWithSalt` numberOfHumanWorkersPerDataObject
+      `Prelude.hashWithSalt` jobReferenceCode
+      `Prelude.hashWithSalt` workRequesterAccountId
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData LabelingJobForWorkteamSummary where
+  rnf LabelingJobForWorkteamSummary' {..} =
+    Prelude.rnf labelCounters
+      `Prelude.seq` Prelude.rnf labelingJobName
+      `Prelude.seq` Prelude.rnf numberOfHumanWorkersPerDataObject
+      `Prelude.seq` Prelude.rnf jobReferenceCode
+      `Prelude.seq` Prelude.rnf workRequesterAccountId
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobInputConfig.hs b/gen/Amazonka/SageMaker/Types/LabelingJobInputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobInputConfig.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobInputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobInputConfig 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 Amazonka.SageMaker.Types.LabelingJobDataAttributes
+import Amazonka.SageMaker.Types.LabelingJobDataSource
+
+-- | Input configuration information for a labeling job.
+--
+-- /See:/ 'newLabelingJobInputConfig' smart constructor.
+data LabelingJobInputConfig = LabelingJobInputConfig'
+  { -- | Attributes of the data specified by the customer.
+    dataAttributes :: Prelude.Maybe LabelingJobDataAttributes,
+    -- | The location of the input data.
+    dataSource :: LabelingJobDataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobInputConfig' 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:
+--
+-- 'dataAttributes', 'labelingJobInputConfig_dataAttributes' - Attributes of the data specified by the customer.
+--
+-- 'dataSource', 'labelingJobInputConfig_dataSource' - The location of the input data.
+newLabelingJobInputConfig ::
+  -- | 'dataSource'
+  LabelingJobDataSource ->
+  LabelingJobInputConfig
+newLabelingJobInputConfig pDataSource_ =
+  LabelingJobInputConfig'
+    { dataAttributes =
+        Prelude.Nothing,
+      dataSource = pDataSource_
+    }
+
+-- | Attributes of the data specified by the customer.
+labelingJobInputConfig_dataAttributes :: Lens.Lens' LabelingJobInputConfig (Prelude.Maybe LabelingJobDataAttributes)
+labelingJobInputConfig_dataAttributes = Lens.lens (\LabelingJobInputConfig' {dataAttributes} -> dataAttributes) (\s@LabelingJobInputConfig' {} a -> s {dataAttributes = a} :: LabelingJobInputConfig)
+
+-- | The location of the input data.
+labelingJobInputConfig_dataSource :: Lens.Lens' LabelingJobInputConfig LabelingJobDataSource
+labelingJobInputConfig_dataSource = Lens.lens (\LabelingJobInputConfig' {dataSource} -> dataSource) (\s@LabelingJobInputConfig' {} a -> s {dataSource = a} :: LabelingJobInputConfig)
+
+instance Data.FromJSON LabelingJobInputConfig where
+  parseJSON =
+    Data.withObject
+      "LabelingJobInputConfig"
+      ( \x ->
+          LabelingJobInputConfig'
+            Prelude.<$> (x Data..:? "DataAttributes")
+            Prelude.<*> (x Data..: "DataSource")
+      )
+
+instance Prelude.Hashable LabelingJobInputConfig where
+  hashWithSalt _salt LabelingJobInputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataAttributes
+      `Prelude.hashWithSalt` dataSource
+
+instance Prelude.NFData LabelingJobInputConfig where
+  rnf LabelingJobInputConfig' {..} =
+    Prelude.rnf dataAttributes
+      `Prelude.seq` Prelude.rnf dataSource
+
+instance Data.ToJSON LabelingJobInputConfig where
+  toJSON LabelingJobInputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataAttributes" Data..=)
+              Prelude.<$> dataAttributes,
+            Prelude.Just ("DataSource" Data..= dataSource)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobOutput.hs b/gen/Amazonka/SageMaker/Types/LabelingJobOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobOutput.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobOutput 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
+
+-- | Specifies the location of the output produced by the labeling job.
+--
+-- /See:/ 'newLabelingJobOutput' smart constructor.
+data LabelingJobOutput = LabelingJobOutput'
+  { -- | The Amazon Resource Name (ARN) for the most recent SageMaker model
+    -- trained as part of automated data labeling.
+    finalActiveLearningModelArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 bucket location of the manifest file for labeled data.
+    outputDatasetS3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobOutput' 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:
+--
+-- 'finalActiveLearningModelArn', 'labelingJobOutput_finalActiveLearningModelArn' - The Amazon Resource Name (ARN) for the most recent SageMaker model
+-- trained as part of automated data labeling.
+--
+-- 'outputDatasetS3Uri', 'labelingJobOutput_outputDatasetS3Uri' - The Amazon S3 bucket location of the manifest file for labeled data.
+newLabelingJobOutput ::
+  -- | 'outputDatasetS3Uri'
+  Prelude.Text ->
+  LabelingJobOutput
+newLabelingJobOutput pOutputDatasetS3Uri_ =
+  LabelingJobOutput'
+    { finalActiveLearningModelArn =
+        Prelude.Nothing,
+      outputDatasetS3Uri = pOutputDatasetS3Uri_
+    }
+
+-- | The Amazon Resource Name (ARN) for the most recent SageMaker model
+-- trained as part of automated data labeling.
+labelingJobOutput_finalActiveLearningModelArn :: Lens.Lens' LabelingJobOutput (Prelude.Maybe Prelude.Text)
+labelingJobOutput_finalActiveLearningModelArn = Lens.lens (\LabelingJobOutput' {finalActiveLearningModelArn} -> finalActiveLearningModelArn) (\s@LabelingJobOutput' {} a -> s {finalActiveLearningModelArn = a} :: LabelingJobOutput)
+
+-- | The Amazon S3 bucket location of the manifest file for labeled data.
+labelingJobOutput_outputDatasetS3Uri :: Lens.Lens' LabelingJobOutput Prelude.Text
+labelingJobOutput_outputDatasetS3Uri = Lens.lens (\LabelingJobOutput' {outputDatasetS3Uri} -> outputDatasetS3Uri) (\s@LabelingJobOutput' {} a -> s {outputDatasetS3Uri = a} :: LabelingJobOutput)
+
+instance Data.FromJSON LabelingJobOutput where
+  parseJSON =
+    Data.withObject
+      "LabelingJobOutput"
+      ( \x ->
+          LabelingJobOutput'
+            Prelude.<$> (x Data..:? "FinalActiveLearningModelArn")
+            Prelude.<*> (x Data..: "OutputDatasetS3Uri")
+      )
+
+instance Prelude.Hashable LabelingJobOutput where
+  hashWithSalt _salt LabelingJobOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` finalActiveLearningModelArn
+      `Prelude.hashWithSalt` outputDatasetS3Uri
+
+instance Prelude.NFData LabelingJobOutput where
+  rnf LabelingJobOutput' {..} =
+    Prelude.rnf finalActiveLearningModelArn
+      `Prelude.seq` Prelude.rnf outputDatasetS3Uri
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobOutputConfig.hs b/gen/Amazonka/SageMaker/Types/LabelingJobOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobOutputConfig.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobOutputConfig 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
+
+-- | Output configuration information for a labeling job.
+--
+-- /See:/ 'newLabelingJobOutputConfig' smart constructor.
+data LabelingJobOutputConfig = LabelingJobOutputConfig'
+  { -- | The Amazon Web Services Key Management Service ID of the key used to
+    -- encrypt the output data, if any.
+    --
+    -- If you provide your own KMS key ID, you must add the required
+    -- permissions to your KMS key described in
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions Encrypt Output Data and Storage Volume with Amazon Web Services KMS>.
+    --
+    -- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+    -- Amazon Web Services KMS key for Amazon S3 for your role\'s account to
+    -- encrypt your output data.
+    --
+    -- If you use a bucket policy with an @s3:PutObject@ permission that only
+    -- allows objects with server-side encryption, set the condition key of
+    -- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+    -- in the /Amazon Simple Storage Service Developer Guide./
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | An Amazon Simple Notification Service (Amazon SNS) output topic ARN.
+    -- Provide a @SnsTopicArn@ if you want to do real time chaining to another
+    -- streaming job and receive an Amazon SNS notifications each time a data
+    -- object is submitted by a worker.
+    --
+    -- If you provide an @SnsTopicArn@ in @OutputConfig@, when workers complete
+    -- labeling tasks, Ground Truth will send labeling task output data to the
+    -- SNS output topic you specify here.
+    --
+    -- To learn more, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data Receive Output Data from a Streaming Labeling Job>.
+    snsTopicArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 location to write output data.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobOutputConfig' 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:
+--
+-- 'kmsKeyId', 'labelingJobOutputConfig_kmsKeyId' - The Amazon Web Services Key Management Service ID of the key used to
+-- encrypt the output data, if any.
+--
+-- If you provide your own KMS key ID, you must add the required
+-- permissions to your KMS key described in
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions Encrypt Output Data and Storage Volume with Amazon Web Services KMS>.
+--
+-- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+-- Amazon Web Services KMS key for Amazon S3 for your role\'s account to
+-- encrypt your output data.
+--
+-- If you use a bucket policy with an @s3:PutObject@ permission that only
+-- allows objects with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- 'snsTopicArn', 'labelingJobOutputConfig_snsTopicArn' - An Amazon Simple Notification Service (Amazon SNS) output topic ARN.
+-- Provide a @SnsTopicArn@ if you want to do real time chaining to another
+-- streaming job and receive an Amazon SNS notifications each time a data
+-- object is submitted by a worker.
+--
+-- If you provide an @SnsTopicArn@ in @OutputConfig@, when workers complete
+-- labeling tasks, Ground Truth will send labeling task output data to the
+-- SNS output topic you specify here.
+--
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data Receive Output Data from a Streaming Labeling Job>.
+--
+-- 's3OutputPath', 'labelingJobOutputConfig_s3OutputPath' - The Amazon S3 location to write output data.
+newLabelingJobOutputConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  LabelingJobOutputConfig
+newLabelingJobOutputConfig pS3OutputPath_ =
+  LabelingJobOutputConfig'
+    { kmsKeyId =
+        Prelude.Nothing,
+      snsTopicArn = Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | The Amazon Web Services Key Management Service ID of the key used to
+-- encrypt the output data, if any.
+--
+-- If you provide your own KMS key ID, you must add the required
+-- permissions to your KMS key described in
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions Encrypt Output Data and Storage Volume with Amazon Web Services KMS>.
+--
+-- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+-- Amazon Web Services KMS key for Amazon S3 for your role\'s account to
+-- encrypt your output data.
+--
+-- If you use a bucket policy with an @s3:PutObject@ permission that only
+-- allows objects with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+labelingJobOutputConfig_kmsKeyId :: Lens.Lens' LabelingJobOutputConfig (Prelude.Maybe Prelude.Text)
+labelingJobOutputConfig_kmsKeyId = Lens.lens (\LabelingJobOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@LabelingJobOutputConfig' {} a -> s {kmsKeyId = a} :: LabelingJobOutputConfig)
+
+-- | An Amazon Simple Notification Service (Amazon SNS) output topic ARN.
+-- Provide a @SnsTopicArn@ if you want to do real time chaining to another
+-- streaming job and receive an Amazon SNS notifications each time a data
+-- object is submitted by a worker.
+--
+-- If you provide an @SnsTopicArn@ in @OutputConfig@, when workers complete
+-- labeling tasks, Ground Truth will send labeling task output data to the
+-- SNS output topic you specify here.
+--
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data Receive Output Data from a Streaming Labeling Job>.
+labelingJobOutputConfig_snsTopicArn :: Lens.Lens' LabelingJobOutputConfig (Prelude.Maybe Prelude.Text)
+labelingJobOutputConfig_snsTopicArn = Lens.lens (\LabelingJobOutputConfig' {snsTopicArn} -> snsTopicArn) (\s@LabelingJobOutputConfig' {} a -> s {snsTopicArn = a} :: LabelingJobOutputConfig)
+
+-- | The Amazon S3 location to write output data.
+labelingJobOutputConfig_s3OutputPath :: Lens.Lens' LabelingJobOutputConfig Prelude.Text
+labelingJobOutputConfig_s3OutputPath = Lens.lens (\LabelingJobOutputConfig' {s3OutputPath} -> s3OutputPath) (\s@LabelingJobOutputConfig' {} a -> s {s3OutputPath = a} :: LabelingJobOutputConfig)
+
+instance Data.FromJSON LabelingJobOutputConfig where
+  parseJSON =
+    Data.withObject
+      "LabelingJobOutputConfig"
+      ( \x ->
+          LabelingJobOutputConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "SnsTopicArn")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable LabelingJobOutputConfig where
+  hashWithSalt _salt LabelingJobOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` snsTopicArn
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData LabelingJobOutputConfig where
+  rnf LabelingJobOutputConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf snsTopicArn
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON LabelingJobOutputConfig where
+  toJSON LabelingJobOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("SnsTopicArn" Data..=) Prelude.<$> snsTopicArn,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobResourceConfig.hs b/gen/Amazonka/SageMaker/Types/LabelingJobResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobResourceConfig.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobResourceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobResourceConfig 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 Amazonka.SageMaker.Types.VpcConfig
+
+-- | Configure encryption on the storage volume attached to the ML compute
+-- instance used to run automated data labeling model training and
+-- inference.
+--
+-- /See:/ 'newLabelingJobResourceConfig' smart constructor.
+data LabelingJobResourceConfig = LabelingJobResourceConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance(s) that run the training and
+    -- inference jobs used for automated data labeling.
+    --
+    -- You can only specify a @VolumeKmsKeyId@ when you create a labeling job
+    -- with automated data labeling enabled using the API operation
+    -- @CreateLabelingJob@. You cannot specify an Amazon Web Services KMS key
+    -- to encrypt the storage volume used for automated data labeling model
+    -- training and inference when you create a labeling job using the console.
+    -- To learn more, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security.html Output Data and Storage Volume Encryption>.
+    --
+    -- The @VolumeKmsKeyId@ can be any of the following formats:
+    --
+    -- -   KMS Key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   Amazon Resource Name (ARN) of a KMS Key
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    vpcConfig :: Prelude.Maybe VpcConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobResourceConfig' 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:
+--
+-- 'volumeKmsKeyId', 'labelingJobResourceConfig_volumeKmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance(s) that run the training and
+-- inference jobs used for automated data labeling.
+--
+-- You can only specify a @VolumeKmsKeyId@ when you create a labeling job
+-- with automated data labeling enabled using the API operation
+-- @CreateLabelingJob@. You cannot specify an Amazon Web Services KMS key
+-- to encrypt the storage volume used for automated data labeling model
+-- training and inference when you create a labeling job using the console.
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security.html Output Data and Storage Volume Encryption>.
+--
+-- The @VolumeKmsKeyId@ can be any of the following formats:
+--
+-- -   KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- 'vpcConfig', 'labelingJobResourceConfig_vpcConfig' - Undocumented member.
+newLabelingJobResourceConfig ::
+  LabelingJobResourceConfig
+newLabelingJobResourceConfig =
+  LabelingJobResourceConfig'
+    { volumeKmsKeyId =
+        Prelude.Nothing,
+      vpcConfig = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance(s) that run the training and
+-- inference jobs used for automated data labeling.
+--
+-- You can only specify a @VolumeKmsKeyId@ when you create a labeling job
+-- with automated data labeling enabled using the API operation
+-- @CreateLabelingJob@. You cannot specify an Amazon Web Services KMS key
+-- to encrypt the storage volume used for automated data labeling model
+-- training and inference when you create a labeling job using the console.
+-- To learn more, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security.html Output Data and Storage Volume Encryption>.
+--
+-- The @VolumeKmsKeyId@ can be any of the following formats:
+--
+-- -   KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+labelingJobResourceConfig_volumeKmsKeyId :: Lens.Lens' LabelingJobResourceConfig (Prelude.Maybe Prelude.Text)
+labelingJobResourceConfig_volumeKmsKeyId = Lens.lens (\LabelingJobResourceConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@LabelingJobResourceConfig' {} a -> s {volumeKmsKeyId = a} :: LabelingJobResourceConfig)
+
+-- | Undocumented member.
+labelingJobResourceConfig_vpcConfig :: Lens.Lens' LabelingJobResourceConfig (Prelude.Maybe VpcConfig)
+labelingJobResourceConfig_vpcConfig = Lens.lens (\LabelingJobResourceConfig' {vpcConfig} -> vpcConfig) (\s@LabelingJobResourceConfig' {} a -> s {vpcConfig = a} :: LabelingJobResourceConfig)
+
+instance Data.FromJSON LabelingJobResourceConfig where
+  parseJSON =
+    Data.withObject
+      "LabelingJobResourceConfig"
+      ( \x ->
+          LabelingJobResourceConfig'
+            Prelude.<$> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..:? "VpcConfig")
+      )
+
+instance Prelude.Hashable LabelingJobResourceConfig where
+  hashWithSalt _salt LabelingJobResourceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` vpcConfig
+
+instance Prelude.NFData LabelingJobResourceConfig where
+  rnf LabelingJobResourceConfig' {..} =
+    Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf vpcConfig
+
+instance Data.ToJSON LabelingJobResourceConfig where
+  toJSON LabelingJobResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobS3DataSource.hs b/gen/Amazonka/SageMaker/Types/LabelingJobS3DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobS3DataSource.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobS3DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobS3DataSource 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
+
+-- | The Amazon S3 location of the input data objects.
+--
+-- /See:/ 'newLabelingJobS3DataSource' smart constructor.
+data LabelingJobS3DataSource = LabelingJobS3DataSource'
+  { -- | The Amazon S3 location of the manifest file that describes the input
+    -- data objects.
+    --
+    -- The input manifest file referenced in @ManifestS3Uri@ must contain one
+    -- of the following keys: @source-ref@ or @source@. The value of the keys
+    -- are interpreted as follows:
+    --
+    -- -   @source-ref@: The source of the object is the Amazon S3 object
+    --     specified in the value. Use this value when the object is a binary
+    --     object, such as an image.
+    --
+    -- -   @source@: The source of the object is the value. Use this value when
+    --     the object is a text value.
+    --
+    -- If you are a new user of Ground Truth, it is recommended you review
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-input-data-input-manifest.html Use an Input Manifest File>
+    -- in the Amazon SageMaker Developer Guide to learn how to create an input
+    -- manifest file.
+    manifestS3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobS3DataSource' 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:
+--
+-- 'manifestS3Uri', 'labelingJobS3DataSource_manifestS3Uri' - The Amazon S3 location of the manifest file that describes the input
+-- data objects.
+--
+-- The input manifest file referenced in @ManifestS3Uri@ must contain one
+-- of the following keys: @source-ref@ or @source@. The value of the keys
+-- are interpreted as follows:
+--
+-- -   @source-ref@: The source of the object is the Amazon S3 object
+--     specified in the value. Use this value when the object is a binary
+--     object, such as an image.
+--
+-- -   @source@: The source of the object is the value. Use this value when
+--     the object is a text value.
+--
+-- If you are a new user of Ground Truth, it is recommended you review
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-input-data-input-manifest.html Use an Input Manifest File>
+-- in the Amazon SageMaker Developer Guide to learn how to create an input
+-- manifest file.
+newLabelingJobS3DataSource ::
+  -- | 'manifestS3Uri'
+  Prelude.Text ->
+  LabelingJobS3DataSource
+newLabelingJobS3DataSource pManifestS3Uri_ =
+  LabelingJobS3DataSource'
+    { manifestS3Uri =
+        pManifestS3Uri_
+    }
+
+-- | The Amazon S3 location of the manifest file that describes the input
+-- data objects.
+--
+-- The input manifest file referenced in @ManifestS3Uri@ must contain one
+-- of the following keys: @source-ref@ or @source@. The value of the keys
+-- are interpreted as follows:
+--
+-- -   @source-ref@: The source of the object is the Amazon S3 object
+--     specified in the value. Use this value when the object is a binary
+--     object, such as an image.
+--
+-- -   @source@: The source of the object is the value. Use this value when
+--     the object is a text value.
+--
+-- If you are a new user of Ground Truth, it is recommended you review
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-input-data-input-manifest.html Use an Input Manifest File>
+-- in the Amazon SageMaker Developer Guide to learn how to create an input
+-- manifest file.
+labelingJobS3DataSource_manifestS3Uri :: Lens.Lens' LabelingJobS3DataSource Prelude.Text
+labelingJobS3DataSource_manifestS3Uri = Lens.lens (\LabelingJobS3DataSource' {manifestS3Uri} -> manifestS3Uri) (\s@LabelingJobS3DataSource' {} a -> s {manifestS3Uri = a} :: LabelingJobS3DataSource)
+
+instance Data.FromJSON LabelingJobS3DataSource where
+  parseJSON =
+    Data.withObject
+      "LabelingJobS3DataSource"
+      ( \x ->
+          LabelingJobS3DataSource'
+            Prelude.<$> (x Data..: "ManifestS3Uri")
+      )
+
+instance Prelude.Hashable LabelingJobS3DataSource where
+  hashWithSalt _salt LabelingJobS3DataSource' {..} =
+    _salt `Prelude.hashWithSalt` manifestS3Uri
+
+instance Prelude.NFData LabelingJobS3DataSource where
+  rnf LabelingJobS3DataSource' {..} =
+    Prelude.rnf manifestS3Uri
+
+instance Data.ToJSON LabelingJobS3DataSource where
+  toJSON LabelingJobS3DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ManifestS3Uri" Data..= manifestS3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobSnsDataSource.hs b/gen/Amazonka/SageMaker/Types/LabelingJobSnsDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobSnsDataSource.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobSnsDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobSnsDataSource 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
+
+-- | An Amazon SNS data source used for streaming labeling jobs.
+--
+-- /See:/ 'newLabelingJobSnsDataSource' smart constructor.
+data LabelingJobSnsDataSource = LabelingJobSnsDataSource'
+  { -- | The Amazon SNS input topic Amazon Resource Name (ARN). Specify the ARN
+    -- of the input topic you will use to send new data objects to a streaming
+    -- labeling job.
+    snsTopicArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobSnsDataSource' 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:
+--
+-- 'snsTopicArn', 'labelingJobSnsDataSource_snsTopicArn' - The Amazon SNS input topic Amazon Resource Name (ARN). Specify the ARN
+-- of the input topic you will use to send new data objects to a streaming
+-- labeling job.
+newLabelingJobSnsDataSource ::
+  -- | 'snsTopicArn'
+  Prelude.Text ->
+  LabelingJobSnsDataSource
+newLabelingJobSnsDataSource pSnsTopicArn_ =
+  LabelingJobSnsDataSource'
+    { snsTopicArn =
+        pSnsTopicArn_
+    }
+
+-- | The Amazon SNS input topic Amazon Resource Name (ARN). Specify the ARN
+-- of the input topic you will use to send new data objects to a streaming
+-- labeling job.
+labelingJobSnsDataSource_snsTopicArn :: Lens.Lens' LabelingJobSnsDataSource Prelude.Text
+labelingJobSnsDataSource_snsTopicArn = Lens.lens (\LabelingJobSnsDataSource' {snsTopicArn} -> snsTopicArn) (\s@LabelingJobSnsDataSource' {} a -> s {snsTopicArn = a} :: LabelingJobSnsDataSource)
+
+instance Data.FromJSON LabelingJobSnsDataSource where
+  parseJSON =
+    Data.withObject
+      "LabelingJobSnsDataSource"
+      ( \x ->
+          LabelingJobSnsDataSource'
+            Prelude.<$> (x Data..: "SnsTopicArn")
+      )
+
+instance Prelude.Hashable LabelingJobSnsDataSource where
+  hashWithSalt _salt LabelingJobSnsDataSource' {..} =
+    _salt `Prelude.hashWithSalt` snsTopicArn
+
+instance Prelude.NFData LabelingJobSnsDataSource where
+  rnf LabelingJobSnsDataSource' {..} =
+    Prelude.rnf snsTopicArn
+
+instance Data.ToJSON LabelingJobSnsDataSource where
+  toJSON LabelingJobSnsDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("SnsTopicArn" Data..= snsTopicArn)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobStatus.hs b/gen/Amazonka/SageMaker/Types/LabelingJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.LabelingJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobStatus
+  ( LabelingJobStatus
+      ( ..,
+        LabelingJobStatus_Completed,
+        LabelingJobStatus_Failed,
+        LabelingJobStatus_InProgress,
+        LabelingJobStatus_Initializing,
+        LabelingJobStatus_Stopped,
+        LabelingJobStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LabelingJobStatus = LabelingJobStatus'
+  { fromLabelingJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LabelingJobStatus_Completed :: LabelingJobStatus
+pattern LabelingJobStatus_Completed = LabelingJobStatus' "Completed"
+
+pattern LabelingJobStatus_Failed :: LabelingJobStatus
+pattern LabelingJobStatus_Failed = LabelingJobStatus' "Failed"
+
+pattern LabelingJobStatus_InProgress :: LabelingJobStatus
+pattern LabelingJobStatus_InProgress = LabelingJobStatus' "InProgress"
+
+pattern LabelingJobStatus_Initializing :: LabelingJobStatus
+pattern LabelingJobStatus_Initializing = LabelingJobStatus' "Initializing"
+
+pattern LabelingJobStatus_Stopped :: LabelingJobStatus
+pattern LabelingJobStatus_Stopped = LabelingJobStatus' "Stopped"
+
+pattern LabelingJobStatus_Stopping :: LabelingJobStatus
+pattern LabelingJobStatus_Stopping = LabelingJobStatus' "Stopping"
+
+{-# COMPLETE
+  LabelingJobStatus_Completed,
+  LabelingJobStatus_Failed,
+  LabelingJobStatus_InProgress,
+  LabelingJobStatus_Initializing,
+  LabelingJobStatus_Stopped,
+  LabelingJobStatus_Stopping,
+  LabelingJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobStoppingConditions.hs b/gen/Amazonka/SageMaker/Types/LabelingJobStoppingConditions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobStoppingConditions.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobStoppingConditions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobStoppingConditions 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
+
+-- | A set of conditions for stopping a labeling job. If any of the
+-- conditions are met, the job is automatically stopped. You can use these
+-- conditions to control the cost of data labeling.
+--
+-- Labeling jobs fail after 30 days with an appropriate client error
+-- message.
+--
+-- /See:/ 'newLabelingJobStoppingConditions' smart constructor.
+data LabelingJobStoppingConditions = LabelingJobStoppingConditions'
+  { -- | The maximum number of objects that can be labeled by human workers.
+    maxHumanLabeledObjectCount :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum number of input data objects that should be labeled.
+    maxPercentageOfInputDatasetLabeled :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobStoppingConditions' 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:
+--
+-- 'maxHumanLabeledObjectCount', 'labelingJobStoppingConditions_maxHumanLabeledObjectCount' - The maximum number of objects that can be labeled by human workers.
+--
+-- 'maxPercentageOfInputDatasetLabeled', 'labelingJobStoppingConditions_maxPercentageOfInputDatasetLabeled' - The maximum number of input data objects that should be labeled.
+newLabelingJobStoppingConditions ::
+  LabelingJobStoppingConditions
+newLabelingJobStoppingConditions =
+  LabelingJobStoppingConditions'
+    { maxHumanLabeledObjectCount =
+        Prelude.Nothing,
+      maxPercentageOfInputDatasetLabeled =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of objects that can be labeled by human workers.
+labelingJobStoppingConditions_maxHumanLabeledObjectCount :: Lens.Lens' LabelingJobStoppingConditions (Prelude.Maybe Prelude.Natural)
+labelingJobStoppingConditions_maxHumanLabeledObjectCount = Lens.lens (\LabelingJobStoppingConditions' {maxHumanLabeledObjectCount} -> maxHumanLabeledObjectCount) (\s@LabelingJobStoppingConditions' {} a -> s {maxHumanLabeledObjectCount = a} :: LabelingJobStoppingConditions)
+
+-- | The maximum number of input data objects that should be labeled.
+labelingJobStoppingConditions_maxPercentageOfInputDatasetLabeled :: Lens.Lens' LabelingJobStoppingConditions (Prelude.Maybe Prelude.Natural)
+labelingJobStoppingConditions_maxPercentageOfInputDatasetLabeled = Lens.lens (\LabelingJobStoppingConditions' {maxPercentageOfInputDatasetLabeled} -> maxPercentageOfInputDatasetLabeled) (\s@LabelingJobStoppingConditions' {} a -> s {maxPercentageOfInputDatasetLabeled = a} :: LabelingJobStoppingConditions)
+
+instance Data.FromJSON LabelingJobStoppingConditions where
+  parseJSON =
+    Data.withObject
+      "LabelingJobStoppingConditions"
+      ( \x ->
+          LabelingJobStoppingConditions'
+            Prelude.<$> (x Data..:? "MaxHumanLabeledObjectCount")
+            Prelude.<*> (x Data..:? "MaxPercentageOfInputDatasetLabeled")
+      )
+
+instance
+  Prelude.Hashable
+    LabelingJobStoppingConditions
+  where
+  hashWithSalt _salt LabelingJobStoppingConditions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxHumanLabeledObjectCount
+      `Prelude.hashWithSalt` maxPercentageOfInputDatasetLabeled
+
+instance Prelude.NFData LabelingJobStoppingConditions where
+  rnf LabelingJobStoppingConditions' {..} =
+    Prelude.rnf maxHumanLabeledObjectCount
+      `Prelude.seq` Prelude.rnf maxPercentageOfInputDatasetLabeled
+
+instance Data.ToJSON LabelingJobStoppingConditions where
+  toJSON LabelingJobStoppingConditions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxHumanLabeledObjectCount" Data..=)
+              Prelude.<$> maxHumanLabeledObjectCount,
+            ("MaxPercentageOfInputDatasetLabeled" Data..=)
+              Prelude.<$> maxPercentageOfInputDatasetLabeled
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/LabelingJobSummary.hs b/gen/Amazonka/SageMaker/Types/LabelingJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LabelingJobSummary.hs
@@ -0,0 +1,252 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LabelingJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LabelingJobSummary 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 Amazonka.SageMaker.Types.LabelCounters
+import Amazonka.SageMaker.Types.LabelingJobInputConfig
+import Amazonka.SageMaker.Types.LabelingJobOutput
+import Amazonka.SageMaker.Types.LabelingJobStatus
+
+-- | Provides summary information about a labeling job.
+--
+-- /See:/ 'newLabelingJobSummary' smart constructor.
+data LabelingJobSummary = LabelingJobSummary'
+  { -- | The Amazon Resource Name (ARN) of the Lambda function used to
+    -- consolidate the annotations from individual workers into a label for a
+    -- data object. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html Annotation Consolidation>.
+    annotationConsolidationLambdaArn :: Prelude.Maybe Prelude.Text,
+    -- | If the @LabelingJobStatus@ field is @Failed@, this field contains a
+    -- description of the error.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Input configuration for the labeling job.
+    inputConfig :: Prelude.Maybe LabelingJobInputConfig,
+    -- | The location of the output produced by the labeling job.
+    labelingJobOutput :: Prelude.Maybe LabelingJobOutput,
+    -- | The name of the labeling job.
+    labelingJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) assigned to the labeling job when it was
+    -- created.
+    labelingJobArn :: Prelude.Text,
+    -- | The date and time that the job was created (timestamp).
+    creationTime :: Data.POSIX,
+    -- | The date and time that the job was last modified (timestamp).
+    lastModifiedTime :: Data.POSIX,
+    -- | The current status of the labeling job.
+    labelingJobStatus :: LabelingJobStatus,
+    -- | Counts showing the progress of the labeling job.
+    labelCounters :: LabelCounters,
+    -- | The Amazon Resource Name (ARN) of the work team assigned to the job.
+    workteamArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of a Lambda function. The function is run
+    -- before each data object is sent to a worker.
+    preHumanTaskLambdaArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelingJobSummary' 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:
+--
+-- 'annotationConsolidationLambdaArn', 'labelingJobSummary_annotationConsolidationLambdaArn' - The Amazon Resource Name (ARN) of the Lambda function used to
+-- consolidate the annotations from individual workers into a label for a
+-- data object. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html Annotation Consolidation>.
+--
+-- 'failureReason', 'labelingJobSummary_failureReason' - If the @LabelingJobStatus@ field is @Failed@, this field contains a
+-- description of the error.
+--
+-- 'inputConfig', 'labelingJobSummary_inputConfig' - Input configuration for the labeling job.
+--
+-- 'labelingJobOutput', 'labelingJobSummary_labelingJobOutput' - The location of the output produced by the labeling job.
+--
+-- 'labelingJobName', 'labelingJobSummary_labelingJobName' - The name of the labeling job.
+--
+-- 'labelingJobArn', 'labelingJobSummary_labelingJobArn' - The Amazon Resource Name (ARN) assigned to the labeling job when it was
+-- created.
+--
+-- 'creationTime', 'labelingJobSummary_creationTime' - The date and time that the job was created (timestamp).
+--
+-- 'lastModifiedTime', 'labelingJobSummary_lastModifiedTime' - The date and time that the job was last modified (timestamp).
+--
+-- 'labelingJobStatus', 'labelingJobSummary_labelingJobStatus' - The current status of the labeling job.
+--
+-- 'labelCounters', 'labelingJobSummary_labelCounters' - Counts showing the progress of the labeling job.
+--
+-- 'workteamArn', 'labelingJobSummary_workteamArn' - The Amazon Resource Name (ARN) of the work team assigned to the job.
+--
+-- 'preHumanTaskLambdaArn', 'labelingJobSummary_preHumanTaskLambdaArn' - The Amazon Resource Name (ARN) of a Lambda function. The function is run
+-- before each data object is sent to a worker.
+newLabelingJobSummary ::
+  -- | 'labelingJobName'
+  Prelude.Text ->
+  -- | 'labelingJobArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'labelingJobStatus'
+  LabelingJobStatus ->
+  -- | 'labelCounters'
+  LabelCounters ->
+  -- | 'workteamArn'
+  Prelude.Text ->
+  -- | 'preHumanTaskLambdaArn'
+  Prelude.Text ->
+  LabelingJobSummary
+newLabelingJobSummary
+  pLabelingJobName_
+  pLabelingJobArn_
+  pCreationTime_
+  pLastModifiedTime_
+  pLabelingJobStatus_
+  pLabelCounters_
+  pWorkteamArn_
+  pPreHumanTaskLambdaArn_ =
+    LabelingJobSummary'
+      { annotationConsolidationLambdaArn =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        inputConfig = Prelude.Nothing,
+        labelingJobOutput = Prelude.Nothing,
+        labelingJobName = pLabelingJobName_,
+        labelingJobArn = pLabelingJobArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        labelingJobStatus = pLabelingJobStatus_,
+        labelCounters = pLabelCounters_,
+        workteamArn = pWorkteamArn_,
+        preHumanTaskLambdaArn = pPreHumanTaskLambdaArn_
+      }
+
+-- | The Amazon Resource Name (ARN) of the Lambda function used to
+-- consolidate the annotations from individual workers into a label for a
+-- data object. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html Annotation Consolidation>.
+labelingJobSummary_annotationConsolidationLambdaArn :: Lens.Lens' LabelingJobSummary (Prelude.Maybe Prelude.Text)
+labelingJobSummary_annotationConsolidationLambdaArn = Lens.lens (\LabelingJobSummary' {annotationConsolidationLambdaArn} -> annotationConsolidationLambdaArn) (\s@LabelingJobSummary' {} a -> s {annotationConsolidationLambdaArn = a} :: LabelingJobSummary)
+
+-- | If the @LabelingJobStatus@ field is @Failed@, this field contains a
+-- description of the error.
+labelingJobSummary_failureReason :: Lens.Lens' LabelingJobSummary (Prelude.Maybe Prelude.Text)
+labelingJobSummary_failureReason = Lens.lens (\LabelingJobSummary' {failureReason} -> failureReason) (\s@LabelingJobSummary' {} a -> s {failureReason = a} :: LabelingJobSummary)
+
+-- | Input configuration for the labeling job.
+labelingJobSummary_inputConfig :: Lens.Lens' LabelingJobSummary (Prelude.Maybe LabelingJobInputConfig)
+labelingJobSummary_inputConfig = Lens.lens (\LabelingJobSummary' {inputConfig} -> inputConfig) (\s@LabelingJobSummary' {} a -> s {inputConfig = a} :: LabelingJobSummary)
+
+-- | The location of the output produced by the labeling job.
+labelingJobSummary_labelingJobOutput :: Lens.Lens' LabelingJobSummary (Prelude.Maybe LabelingJobOutput)
+labelingJobSummary_labelingJobOutput = Lens.lens (\LabelingJobSummary' {labelingJobOutput} -> labelingJobOutput) (\s@LabelingJobSummary' {} a -> s {labelingJobOutput = a} :: LabelingJobSummary)
+
+-- | The name of the labeling job.
+labelingJobSummary_labelingJobName :: Lens.Lens' LabelingJobSummary Prelude.Text
+labelingJobSummary_labelingJobName = Lens.lens (\LabelingJobSummary' {labelingJobName} -> labelingJobName) (\s@LabelingJobSummary' {} a -> s {labelingJobName = a} :: LabelingJobSummary)
+
+-- | The Amazon Resource Name (ARN) assigned to the labeling job when it was
+-- created.
+labelingJobSummary_labelingJobArn :: Lens.Lens' LabelingJobSummary Prelude.Text
+labelingJobSummary_labelingJobArn = Lens.lens (\LabelingJobSummary' {labelingJobArn} -> labelingJobArn) (\s@LabelingJobSummary' {} a -> s {labelingJobArn = a} :: LabelingJobSummary)
+
+-- | The date and time that the job was created (timestamp).
+labelingJobSummary_creationTime :: Lens.Lens' LabelingJobSummary Prelude.UTCTime
+labelingJobSummary_creationTime = Lens.lens (\LabelingJobSummary' {creationTime} -> creationTime) (\s@LabelingJobSummary' {} a -> s {creationTime = a} :: LabelingJobSummary) Prelude.. Data._Time
+
+-- | The date and time that the job was last modified (timestamp).
+labelingJobSummary_lastModifiedTime :: Lens.Lens' LabelingJobSummary Prelude.UTCTime
+labelingJobSummary_lastModifiedTime = Lens.lens (\LabelingJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@LabelingJobSummary' {} a -> s {lastModifiedTime = a} :: LabelingJobSummary) Prelude.. Data._Time
+
+-- | The current status of the labeling job.
+labelingJobSummary_labelingJobStatus :: Lens.Lens' LabelingJobSummary LabelingJobStatus
+labelingJobSummary_labelingJobStatus = Lens.lens (\LabelingJobSummary' {labelingJobStatus} -> labelingJobStatus) (\s@LabelingJobSummary' {} a -> s {labelingJobStatus = a} :: LabelingJobSummary)
+
+-- | Counts showing the progress of the labeling job.
+labelingJobSummary_labelCounters :: Lens.Lens' LabelingJobSummary LabelCounters
+labelingJobSummary_labelCounters = Lens.lens (\LabelingJobSummary' {labelCounters} -> labelCounters) (\s@LabelingJobSummary' {} a -> s {labelCounters = a} :: LabelingJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the work team assigned to the job.
+labelingJobSummary_workteamArn :: Lens.Lens' LabelingJobSummary Prelude.Text
+labelingJobSummary_workteamArn = Lens.lens (\LabelingJobSummary' {workteamArn} -> workteamArn) (\s@LabelingJobSummary' {} a -> s {workteamArn = a} :: LabelingJobSummary)
+
+-- | The Amazon Resource Name (ARN) of a Lambda function. The function is run
+-- before each data object is sent to a worker.
+labelingJobSummary_preHumanTaskLambdaArn :: Lens.Lens' LabelingJobSummary Prelude.Text
+labelingJobSummary_preHumanTaskLambdaArn = Lens.lens (\LabelingJobSummary' {preHumanTaskLambdaArn} -> preHumanTaskLambdaArn) (\s@LabelingJobSummary' {} a -> s {preHumanTaskLambdaArn = a} :: LabelingJobSummary)
+
+instance Data.FromJSON LabelingJobSummary where
+  parseJSON =
+    Data.withObject
+      "LabelingJobSummary"
+      ( \x ->
+          LabelingJobSummary'
+            Prelude.<$> (x Data..:? "AnnotationConsolidationLambdaArn")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "InputConfig")
+            Prelude.<*> (x Data..:? "LabelingJobOutput")
+            Prelude.<*> (x Data..: "LabelingJobName")
+            Prelude.<*> (x Data..: "LabelingJobArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "LabelingJobStatus")
+            Prelude.<*> (x Data..: "LabelCounters")
+            Prelude.<*> (x Data..: "WorkteamArn")
+            Prelude.<*> (x Data..: "PreHumanTaskLambdaArn")
+      )
+
+instance Prelude.Hashable LabelingJobSummary where
+  hashWithSalt _salt LabelingJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` annotationConsolidationLambdaArn
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` inputConfig
+      `Prelude.hashWithSalt` labelingJobOutput
+      `Prelude.hashWithSalt` labelingJobName
+      `Prelude.hashWithSalt` labelingJobArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` labelingJobStatus
+      `Prelude.hashWithSalt` labelCounters
+      `Prelude.hashWithSalt` workteamArn
+      `Prelude.hashWithSalt` preHumanTaskLambdaArn
+
+instance Prelude.NFData LabelingJobSummary where
+  rnf LabelingJobSummary' {..} =
+    Prelude.rnf annotationConsolidationLambdaArn
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf labelingJobOutput
+      `Prelude.seq` Prelude.rnf labelingJobName
+      `Prelude.seq` Prelude.rnf labelingJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf labelingJobStatus
+      `Prelude.seq` Prelude.rnf labelCounters
+      `Prelude.seq` Prelude.rnf workteamArn
+      `Prelude.seq` Prelude.rnf preHumanTaskLambdaArn
diff --git a/gen/Amazonka/SageMaker/Types/LambdaStepMetadata.hs b/gen/Amazonka/SageMaker/Types/LambdaStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LambdaStepMetadata.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LambdaStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LambdaStepMetadata 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 Amazonka.SageMaker.Types.OutputParameter
+
+-- | Metadata for a Lambda step.
+--
+-- /See:/ 'newLambdaStepMetadata' smart constructor.
+data LambdaStepMetadata = LambdaStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the Lambda function that was run by
+    -- this step execution.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A list of the output parameters of the Lambda step.
+    outputParameters :: Prelude.Maybe [OutputParameter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaStepMetadata' 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:
+--
+-- 'arn', 'lambdaStepMetadata_arn' - The Amazon Resource Name (ARN) of the Lambda function that was run by
+-- this step execution.
+--
+-- 'outputParameters', 'lambdaStepMetadata_outputParameters' - A list of the output parameters of the Lambda step.
+newLambdaStepMetadata ::
+  LambdaStepMetadata
+newLambdaStepMetadata =
+  LambdaStepMetadata'
+    { arn = Prelude.Nothing,
+      outputParameters = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the Lambda function that was run by
+-- this step execution.
+lambdaStepMetadata_arn :: Lens.Lens' LambdaStepMetadata (Prelude.Maybe Prelude.Text)
+lambdaStepMetadata_arn = Lens.lens (\LambdaStepMetadata' {arn} -> arn) (\s@LambdaStepMetadata' {} a -> s {arn = a} :: LambdaStepMetadata)
+
+-- | A list of the output parameters of the Lambda step.
+lambdaStepMetadata_outputParameters :: Lens.Lens' LambdaStepMetadata (Prelude.Maybe [OutputParameter])
+lambdaStepMetadata_outputParameters = Lens.lens (\LambdaStepMetadata' {outputParameters} -> outputParameters) (\s@LambdaStepMetadata' {} a -> s {outputParameters = a} :: LambdaStepMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LambdaStepMetadata where
+  parseJSON =
+    Data.withObject
+      "LambdaStepMetadata"
+      ( \x ->
+          LambdaStepMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> ( x
+                            Data..:? "OutputParameters"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable LambdaStepMetadata where
+  hashWithSalt _salt LambdaStepMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` outputParameters
+
+instance Prelude.NFData LambdaStepMetadata where
+  rnf LambdaStepMetadata' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf outputParameters
diff --git a/gen/Amazonka/SageMaker/Types/LastUpdateStatus.hs b/gen/Amazonka/SageMaker/Types/LastUpdateStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LastUpdateStatus.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LastUpdateStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LastUpdateStatus 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 Amazonka.SageMaker.Types.LastUpdateStatusValue
+
+-- | A value that indicates whether the update was successful.
+--
+-- /See:/ 'newLastUpdateStatus' smart constructor.
+data LastUpdateStatus = LastUpdateStatus'
+  { -- | If the update wasn\'t successful, indicates the reason why it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether the update was made successful.
+    status :: LastUpdateStatusValue
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LastUpdateStatus' 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:
+--
+-- 'failureReason', 'lastUpdateStatus_failureReason' - If the update wasn\'t successful, indicates the reason why it failed.
+--
+-- 'status', 'lastUpdateStatus_status' - A value that indicates whether the update was made successful.
+newLastUpdateStatus ::
+  -- | 'status'
+  LastUpdateStatusValue ->
+  LastUpdateStatus
+newLastUpdateStatus pStatus_ =
+  LastUpdateStatus'
+    { failureReason = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | If the update wasn\'t successful, indicates the reason why it failed.
+lastUpdateStatus_failureReason :: Lens.Lens' LastUpdateStatus (Prelude.Maybe Prelude.Text)
+lastUpdateStatus_failureReason = Lens.lens (\LastUpdateStatus' {failureReason} -> failureReason) (\s@LastUpdateStatus' {} a -> s {failureReason = a} :: LastUpdateStatus)
+
+-- | A value that indicates whether the update was made successful.
+lastUpdateStatus_status :: Lens.Lens' LastUpdateStatus LastUpdateStatusValue
+lastUpdateStatus_status = Lens.lens (\LastUpdateStatus' {status} -> status) (\s@LastUpdateStatus' {} a -> s {status = a} :: LastUpdateStatus)
+
+instance Data.FromJSON LastUpdateStatus where
+  parseJSON =
+    Data.withObject
+      "LastUpdateStatus"
+      ( \x ->
+          LastUpdateStatus'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable LastUpdateStatus where
+  hashWithSalt _salt LastUpdateStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData LastUpdateStatus where
+  rnf LastUpdateStatus' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/LastUpdateStatusValue.hs b/gen/Amazonka/SageMaker/Types/LastUpdateStatusValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LastUpdateStatusValue.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.LastUpdateStatusValue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LastUpdateStatusValue
+  ( LastUpdateStatusValue
+      ( ..,
+        LastUpdateStatusValue_Failed,
+        LastUpdateStatusValue_InProgress,
+        LastUpdateStatusValue_Successful
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LastUpdateStatusValue = LastUpdateStatusValue'
+  { fromLastUpdateStatusValue ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LastUpdateStatusValue_Failed :: LastUpdateStatusValue
+pattern LastUpdateStatusValue_Failed = LastUpdateStatusValue' "Failed"
+
+pattern LastUpdateStatusValue_InProgress :: LastUpdateStatusValue
+pattern LastUpdateStatusValue_InProgress = LastUpdateStatusValue' "InProgress"
+
+pattern LastUpdateStatusValue_Successful :: LastUpdateStatusValue
+pattern LastUpdateStatusValue_Successful = LastUpdateStatusValue' "Successful"
+
+{-# COMPLETE
+  LastUpdateStatusValue_Failed,
+  LastUpdateStatusValue_InProgress,
+  LastUpdateStatusValue_Successful,
+  LastUpdateStatusValue'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/LineageGroupSummary.hs b/gen/Amazonka/SageMaker/Types/LineageGroupSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LineageGroupSummary.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.LineageGroupSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LineageGroupSummary 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
+
+-- | Lists a summary of the properties of a lineage group. A lineage group
+-- provides a group of shareable lineage entity resources.
+--
+-- /See:/ 'newLineageGroupSummary' smart constructor.
+data LineageGroupSummary = LineageGroupSummary'
+  { -- | The creation time of the lineage group summary.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The display name of the lineage group summary.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time of the lineage group summary.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group resource.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name or Amazon Resource Name (ARN) of the lineage group.
+    lineageGroupName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineageGroupSummary' 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:
+--
+-- 'creationTime', 'lineageGroupSummary_creationTime' - The creation time of the lineage group summary.
+--
+-- 'displayName', 'lineageGroupSummary_displayName' - The display name of the lineage group summary.
+--
+-- 'lastModifiedTime', 'lineageGroupSummary_lastModifiedTime' - The last modified time of the lineage group summary.
+--
+-- 'lineageGroupArn', 'lineageGroupSummary_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group resource.
+--
+-- 'lineageGroupName', 'lineageGroupSummary_lineageGroupName' - The name or Amazon Resource Name (ARN) of the lineage group.
+newLineageGroupSummary ::
+  LineageGroupSummary
+newLineageGroupSummary =
+  LineageGroupSummary'
+    { creationTime =
+        Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      lineageGroupName = Prelude.Nothing
+    }
+
+-- | The creation time of the lineage group summary.
+lineageGroupSummary_creationTime :: Lens.Lens' LineageGroupSummary (Prelude.Maybe Prelude.UTCTime)
+lineageGroupSummary_creationTime = Lens.lens (\LineageGroupSummary' {creationTime} -> creationTime) (\s@LineageGroupSummary' {} a -> s {creationTime = a} :: LineageGroupSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The display name of the lineage group summary.
+lineageGroupSummary_displayName :: Lens.Lens' LineageGroupSummary (Prelude.Maybe Prelude.Text)
+lineageGroupSummary_displayName = Lens.lens (\LineageGroupSummary' {displayName} -> displayName) (\s@LineageGroupSummary' {} a -> s {displayName = a} :: LineageGroupSummary)
+
+-- | The last modified time of the lineage group summary.
+lineageGroupSummary_lastModifiedTime :: Lens.Lens' LineageGroupSummary (Prelude.Maybe Prelude.UTCTime)
+lineageGroupSummary_lastModifiedTime = Lens.lens (\LineageGroupSummary' {lastModifiedTime} -> lastModifiedTime) (\s@LineageGroupSummary' {} a -> s {lastModifiedTime = a} :: LineageGroupSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group resource.
+lineageGroupSummary_lineageGroupArn :: Lens.Lens' LineageGroupSummary (Prelude.Maybe Prelude.Text)
+lineageGroupSummary_lineageGroupArn = Lens.lens (\LineageGroupSummary' {lineageGroupArn} -> lineageGroupArn) (\s@LineageGroupSummary' {} a -> s {lineageGroupArn = a} :: LineageGroupSummary)
+
+-- | The name or Amazon Resource Name (ARN) of the lineage group.
+lineageGroupSummary_lineageGroupName :: Lens.Lens' LineageGroupSummary (Prelude.Maybe Prelude.Text)
+lineageGroupSummary_lineageGroupName = Lens.lens (\LineageGroupSummary' {lineageGroupName} -> lineageGroupName) (\s@LineageGroupSummary' {} a -> s {lineageGroupName = a} :: LineageGroupSummary)
+
+instance Data.FromJSON LineageGroupSummary where
+  parseJSON =
+    Data.withObject
+      "LineageGroupSummary"
+      ( \x ->
+          LineageGroupSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "LineageGroupArn")
+            Prelude.<*> (x Data..:? "LineageGroupName")
+      )
+
+instance Prelude.Hashable LineageGroupSummary where
+  hashWithSalt _salt LineageGroupSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` lineageGroupArn
+      `Prelude.hashWithSalt` lineageGroupName
+
+instance Prelude.NFData LineageGroupSummary where
+  rnf LineageGroupSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf lineageGroupName
diff --git a/gen/Amazonka/SageMaker/Types/LineageType.hs b/gen/Amazonka/SageMaker/Types/LineageType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/LineageType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.LineageType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.LineageType
+  ( LineageType
+      ( ..,
+        LineageType_Action,
+        LineageType_Artifact,
+        LineageType_Context,
+        LineageType_TrialComponent
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LineageType = LineageType'
+  { fromLineageType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern LineageType_Action :: LineageType
+pattern LineageType_Action = LineageType' "Action"
+
+pattern LineageType_Artifact :: LineageType
+pattern LineageType_Artifact = LineageType' "Artifact"
+
+pattern LineageType_Context :: LineageType
+pattern LineageType_Context = LineageType' "Context"
+
+pattern LineageType_TrialComponent :: LineageType
+pattern LineageType_TrialComponent = LineageType' "TrialComponent"
+
+{-# COMPLETE
+  LineageType_Action,
+  LineageType_Artifact,
+  LineageType_Context,
+  LineageType_TrialComponent,
+  LineageType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListCompilationJobsSortBy.hs b/gen/Amazonka/SageMaker/Types/ListCompilationJobsSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListCompilationJobsSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListCompilationJobsSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListCompilationJobsSortBy
+  ( ListCompilationJobsSortBy
+      ( ..,
+        ListCompilationJobsSortBy_CreationTime,
+        ListCompilationJobsSortBy_Name,
+        ListCompilationJobsSortBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListCompilationJobsSortBy = ListCompilationJobsSortBy'
+  { fromListCompilationJobsSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListCompilationJobsSortBy_CreationTime :: ListCompilationJobsSortBy
+pattern ListCompilationJobsSortBy_CreationTime = ListCompilationJobsSortBy' "CreationTime"
+
+pattern ListCompilationJobsSortBy_Name :: ListCompilationJobsSortBy
+pattern ListCompilationJobsSortBy_Name = ListCompilationJobsSortBy' "Name"
+
+pattern ListCompilationJobsSortBy_Status :: ListCompilationJobsSortBy
+pattern ListCompilationJobsSortBy_Status = ListCompilationJobsSortBy' "Status"
+
+{-# COMPLETE
+  ListCompilationJobsSortBy_CreationTime,
+  ListCompilationJobsSortBy_Name,
+  ListCompilationJobsSortBy_Status,
+  ListCompilationJobsSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListDeviceFleetsSortBy.hs b/gen/Amazonka/SageMaker/Types/ListDeviceFleetsSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListDeviceFleetsSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListDeviceFleetsSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListDeviceFleetsSortBy
+  ( ListDeviceFleetsSortBy
+      ( ..,
+        ListDeviceFleetsSortBy_CREATION_TIME,
+        ListDeviceFleetsSortBy_LAST_MODIFIED_TIME,
+        ListDeviceFleetsSortBy_NAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListDeviceFleetsSortBy = ListDeviceFleetsSortBy'
+  { fromListDeviceFleetsSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListDeviceFleetsSortBy_CREATION_TIME :: ListDeviceFleetsSortBy
+pattern ListDeviceFleetsSortBy_CREATION_TIME = ListDeviceFleetsSortBy' "CREATION_TIME"
+
+pattern ListDeviceFleetsSortBy_LAST_MODIFIED_TIME :: ListDeviceFleetsSortBy
+pattern ListDeviceFleetsSortBy_LAST_MODIFIED_TIME = ListDeviceFleetsSortBy' "LAST_MODIFIED_TIME"
+
+pattern ListDeviceFleetsSortBy_NAME :: ListDeviceFleetsSortBy
+pattern ListDeviceFleetsSortBy_NAME = ListDeviceFleetsSortBy' "NAME"
+
+{-# COMPLETE
+  ListDeviceFleetsSortBy_CREATION_TIME,
+  ListDeviceFleetsSortBy_LAST_MODIFIED_TIME,
+  ListDeviceFleetsSortBy_NAME,
+  ListDeviceFleetsSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListEdgeDeploymentPlansSortBy.hs b/gen/Amazonka/SageMaker/Types/ListEdgeDeploymentPlansSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListEdgeDeploymentPlansSortBy.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListEdgeDeploymentPlansSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListEdgeDeploymentPlansSortBy
+  ( ListEdgeDeploymentPlansSortBy
+      ( ..,
+        ListEdgeDeploymentPlansSortBy_CREATION_TIME,
+        ListEdgeDeploymentPlansSortBy_DEVICE_FLEET_NAME,
+        ListEdgeDeploymentPlansSortBy_LAST_MODIFIED_TIME,
+        ListEdgeDeploymentPlansSortBy_NAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListEdgeDeploymentPlansSortBy = ListEdgeDeploymentPlansSortBy'
+  { fromListEdgeDeploymentPlansSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListEdgeDeploymentPlansSortBy_CREATION_TIME :: ListEdgeDeploymentPlansSortBy
+pattern ListEdgeDeploymentPlansSortBy_CREATION_TIME = ListEdgeDeploymentPlansSortBy' "CREATION_TIME"
+
+pattern ListEdgeDeploymentPlansSortBy_DEVICE_FLEET_NAME :: ListEdgeDeploymentPlansSortBy
+pattern ListEdgeDeploymentPlansSortBy_DEVICE_FLEET_NAME = ListEdgeDeploymentPlansSortBy' "DEVICE_FLEET_NAME"
+
+pattern ListEdgeDeploymentPlansSortBy_LAST_MODIFIED_TIME :: ListEdgeDeploymentPlansSortBy
+pattern ListEdgeDeploymentPlansSortBy_LAST_MODIFIED_TIME = ListEdgeDeploymentPlansSortBy' "LAST_MODIFIED_TIME"
+
+pattern ListEdgeDeploymentPlansSortBy_NAME :: ListEdgeDeploymentPlansSortBy
+pattern ListEdgeDeploymentPlansSortBy_NAME = ListEdgeDeploymentPlansSortBy' "NAME"
+
+{-# COMPLETE
+  ListEdgeDeploymentPlansSortBy_CREATION_TIME,
+  ListEdgeDeploymentPlansSortBy_DEVICE_FLEET_NAME,
+  ListEdgeDeploymentPlansSortBy_LAST_MODIFIED_TIME,
+  ListEdgeDeploymentPlansSortBy_NAME,
+  ListEdgeDeploymentPlansSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListEdgePackagingJobsSortBy.hs b/gen/Amazonka/SageMaker/Types/ListEdgePackagingJobsSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListEdgePackagingJobsSortBy.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListEdgePackagingJobsSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListEdgePackagingJobsSortBy
+  ( ListEdgePackagingJobsSortBy
+      ( ..,
+        ListEdgePackagingJobsSortBy_CREATION_TIME,
+        ListEdgePackagingJobsSortBy_LAST_MODIFIED_TIME,
+        ListEdgePackagingJobsSortBy_MODEL_NAME,
+        ListEdgePackagingJobsSortBy_NAME,
+        ListEdgePackagingJobsSortBy_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListEdgePackagingJobsSortBy = ListEdgePackagingJobsSortBy'
+  { fromListEdgePackagingJobsSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListEdgePackagingJobsSortBy_CREATION_TIME :: ListEdgePackagingJobsSortBy
+pattern ListEdgePackagingJobsSortBy_CREATION_TIME = ListEdgePackagingJobsSortBy' "CREATION_TIME"
+
+pattern ListEdgePackagingJobsSortBy_LAST_MODIFIED_TIME :: ListEdgePackagingJobsSortBy
+pattern ListEdgePackagingJobsSortBy_LAST_MODIFIED_TIME = ListEdgePackagingJobsSortBy' "LAST_MODIFIED_TIME"
+
+pattern ListEdgePackagingJobsSortBy_MODEL_NAME :: ListEdgePackagingJobsSortBy
+pattern ListEdgePackagingJobsSortBy_MODEL_NAME = ListEdgePackagingJobsSortBy' "MODEL_NAME"
+
+pattern ListEdgePackagingJobsSortBy_NAME :: ListEdgePackagingJobsSortBy
+pattern ListEdgePackagingJobsSortBy_NAME = ListEdgePackagingJobsSortBy' "NAME"
+
+pattern ListEdgePackagingJobsSortBy_STATUS :: ListEdgePackagingJobsSortBy
+pattern ListEdgePackagingJobsSortBy_STATUS = ListEdgePackagingJobsSortBy' "STATUS"
+
+{-# COMPLETE
+  ListEdgePackagingJobsSortBy_CREATION_TIME,
+  ListEdgePackagingJobsSortBy_LAST_MODIFIED_TIME,
+  ListEdgePackagingJobsSortBy_MODEL_NAME,
+  ListEdgePackagingJobsSortBy_NAME,
+  ListEdgePackagingJobsSortBy_STATUS,
+  ListEdgePackagingJobsSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListInferenceRecommendationsJobsSortBy.hs b/gen/Amazonka/SageMaker/Types/ListInferenceRecommendationsJobsSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListInferenceRecommendationsJobsSortBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListInferenceRecommendationsJobsSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListInferenceRecommendationsJobsSortBy
+  ( ListInferenceRecommendationsJobsSortBy
+      ( ..,
+        ListInferenceRecommendationsJobsSortBy_CreationTime,
+        ListInferenceRecommendationsJobsSortBy_Name,
+        ListInferenceRecommendationsJobsSortBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListInferenceRecommendationsJobsSortBy = ListInferenceRecommendationsJobsSortBy'
+  { fromListInferenceRecommendationsJobsSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListInferenceRecommendationsJobsSortBy_CreationTime :: ListInferenceRecommendationsJobsSortBy
+pattern ListInferenceRecommendationsJobsSortBy_CreationTime = ListInferenceRecommendationsJobsSortBy' "CreationTime"
+
+pattern ListInferenceRecommendationsJobsSortBy_Name :: ListInferenceRecommendationsJobsSortBy
+pattern ListInferenceRecommendationsJobsSortBy_Name = ListInferenceRecommendationsJobsSortBy' "Name"
+
+pattern ListInferenceRecommendationsJobsSortBy_Status :: ListInferenceRecommendationsJobsSortBy
+pattern ListInferenceRecommendationsJobsSortBy_Status = ListInferenceRecommendationsJobsSortBy' "Status"
+
+{-# COMPLETE
+  ListInferenceRecommendationsJobsSortBy_CreationTime,
+  ListInferenceRecommendationsJobsSortBy_Name,
+  ListInferenceRecommendationsJobsSortBy_Status,
+  ListInferenceRecommendationsJobsSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListLabelingJobsForWorkteamSortByOptions.hs b/gen/Amazonka/SageMaker/Types/ListLabelingJobsForWorkteamSortByOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListLabelingJobsForWorkteamSortByOptions.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListLabelingJobsForWorkteamSortByOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListLabelingJobsForWorkteamSortByOptions
+  ( ListLabelingJobsForWorkteamSortByOptions
+      ( ..,
+        ListLabelingJobsForWorkteamSortByOptions_CreationTime
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListLabelingJobsForWorkteamSortByOptions = ListLabelingJobsForWorkteamSortByOptions'
+  { fromListLabelingJobsForWorkteamSortByOptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListLabelingJobsForWorkteamSortByOptions_CreationTime :: ListLabelingJobsForWorkteamSortByOptions
+pattern ListLabelingJobsForWorkteamSortByOptions_CreationTime = ListLabelingJobsForWorkteamSortByOptions' "CreationTime"
+
+{-# COMPLETE
+  ListLabelingJobsForWorkteamSortByOptions_CreationTime,
+  ListLabelingJobsForWorkteamSortByOptions'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListWorkforcesSortByOptions.hs b/gen/Amazonka/SageMaker/Types/ListWorkforcesSortByOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListWorkforcesSortByOptions.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListWorkforcesSortByOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListWorkforcesSortByOptions
+  ( ListWorkforcesSortByOptions
+      ( ..,
+        ListWorkforcesSortByOptions_CreateDate,
+        ListWorkforcesSortByOptions_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListWorkforcesSortByOptions = ListWorkforcesSortByOptions'
+  { fromListWorkforcesSortByOptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListWorkforcesSortByOptions_CreateDate :: ListWorkforcesSortByOptions
+pattern ListWorkforcesSortByOptions_CreateDate = ListWorkforcesSortByOptions' "CreateDate"
+
+pattern ListWorkforcesSortByOptions_Name :: ListWorkforcesSortByOptions
+pattern ListWorkforcesSortByOptions_Name = ListWorkforcesSortByOptions' "Name"
+
+{-# COMPLETE
+  ListWorkforcesSortByOptions_CreateDate,
+  ListWorkforcesSortByOptions_Name,
+  ListWorkforcesSortByOptions'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ListWorkteamsSortByOptions.hs b/gen/Amazonka/SageMaker/Types/ListWorkteamsSortByOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ListWorkteamsSortByOptions.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ListWorkteamsSortByOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ListWorkteamsSortByOptions
+  ( ListWorkteamsSortByOptions
+      ( ..,
+        ListWorkteamsSortByOptions_CreateDate,
+        ListWorkteamsSortByOptions_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ListWorkteamsSortByOptions = ListWorkteamsSortByOptions'
+  { fromListWorkteamsSortByOptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ListWorkteamsSortByOptions_CreateDate :: ListWorkteamsSortByOptions
+pattern ListWorkteamsSortByOptions_CreateDate = ListWorkteamsSortByOptions' "CreateDate"
+
+pattern ListWorkteamsSortByOptions_Name :: ListWorkteamsSortByOptions
+pattern ListWorkteamsSortByOptions_Name = ListWorkteamsSortByOptions' "Name"
+
+{-# COMPLETE
+  ListWorkteamsSortByOptions_CreateDate,
+  ListWorkteamsSortByOptions_Name,
+  ListWorkteamsSortByOptions'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MemberDefinition.hs b/gen/Amazonka/SageMaker/Types/MemberDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MemberDefinition.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MemberDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MemberDefinition 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 Amazonka.SageMaker.Types.CognitoMemberDefinition
+import Amazonka.SageMaker.Types.OidcMemberDefinition
+
+-- | Defines an Amazon Cognito or your own OIDC IdP user group that is part
+-- of a work team.
+--
+-- /See:/ 'newMemberDefinition' smart constructor.
+data MemberDefinition = MemberDefinition'
+  { -- | The Amazon Cognito user group that is part of the work team.
+    cognitoMemberDefinition :: Prelude.Maybe CognitoMemberDefinition,
+    -- | A list user groups that exist in your OIDC Identity Provider (IdP). One
+    -- to ten groups can be used to create a single private work team. When you
+    -- add a user group to the list of @Groups@, you can add that user group to
+    -- one or more private work teams. If you add a user group to a private
+    -- work team, all workers in that user group are added to the work team.
+    oidcMemberDefinition :: Prelude.Maybe OidcMemberDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MemberDefinition' 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:
+--
+-- 'cognitoMemberDefinition', 'memberDefinition_cognitoMemberDefinition' - The Amazon Cognito user group that is part of the work team.
+--
+-- 'oidcMemberDefinition', 'memberDefinition_oidcMemberDefinition' - A list user groups that exist in your OIDC Identity Provider (IdP). One
+-- to ten groups can be used to create a single private work team. When you
+-- add a user group to the list of @Groups@, you can add that user group to
+-- one or more private work teams. If you add a user group to a private
+-- work team, all workers in that user group are added to the work team.
+newMemberDefinition ::
+  MemberDefinition
+newMemberDefinition =
+  MemberDefinition'
+    { cognitoMemberDefinition =
+        Prelude.Nothing,
+      oidcMemberDefinition = Prelude.Nothing
+    }
+
+-- | The Amazon Cognito user group that is part of the work team.
+memberDefinition_cognitoMemberDefinition :: Lens.Lens' MemberDefinition (Prelude.Maybe CognitoMemberDefinition)
+memberDefinition_cognitoMemberDefinition = Lens.lens (\MemberDefinition' {cognitoMemberDefinition} -> cognitoMemberDefinition) (\s@MemberDefinition' {} a -> s {cognitoMemberDefinition = a} :: MemberDefinition)
+
+-- | A list user groups that exist in your OIDC Identity Provider (IdP). One
+-- to ten groups can be used to create a single private work team. When you
+-- add a user group to the list of @Groups@, you can add that user group to
+-- one or more private work teams. If you add a user group to a private
+-- work team, all workers in that user group are added to the work team.
+memberDefinition_oidcMemberDefinition :: Lens.Lens' MemberDefinition (Prelude.Maybe OidcMemberDefinition)
+memberDefinition_oidcMemberDefinition = Lens.lens (\MemberDefinition' {oidcMemberDefinition} -> oidcMemberDefinition) (\s@MemberDefinition' {} a -> s {oidcMemberDefinition = a} :: MemberDefinition)
+
+instance Data.FromJSON MemberDefinition where
+  parseJSON =
+    Data.withObject
+      "MemberDefinition"
+      ( \x ->
+          MemberDefinition'
+            Prelude.<$> (x Data..:? "CognitoMemberDefinition")
+            Prelude.<*> (x Data..:? "OidcMemberDefinition")
+      )
+
+instance Prelude.Hashable MemberDefinition where
+  hashWithSalt _salt MemberDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` cognitoMemberDefinition
+      `Prelude.hashWithSalt` oidcMemberDefinition
+
+instance Prelude.NFData MemberDefinition where
+  rnf MemberDefinition' {..} =
+    Prelude.rnf cognitoMemberDefinition
+      `Prelude.seq` Prelude.rnf oidcMemberDefinition
+
+instance Data.ToJSON MemberDefinition where
+  toJSON MemberDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CognitoMemberDefinition" Data..=)
+              Prelude.<$> cognitoMemberDefinition,
+            ("OidcMemberDefinition" Data..=)
+              Prelude.<$> oidcMemberDefinition
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MetadataProperties.hs b/gen/Amazonka/SageMaker/Types/MetadataProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MetadataProperties.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MetadataProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MetadataProperties 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
+
+-- | Metadata properties of the tracking entity, trial, or trial component.
+--
+-- /See:/ 'newMetadataProperties' smart constructor.
+data MetadataProperties = MetadataProperties'
+  { -- | The commit ID.
+    commitId :: Prelude.Maybe Prelude.Text,
+    -- | The entity this entity was generated by.
+    generatedBy :: Prelude.Maybe Prelude.Text,
+    -- | The project ID.
+    projectId :: Prelude.Maybe Prelude.Text,
+    -- | The repository.
+    repository :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetadataProperties' 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:
+--
+-- 'commitId', 'metadataProperties_commitId' - The commit ID.
+--
+-- 'generatedBy', 'metadataProperties_generatedBy' - The entity this entity was generated by.
+--
+-- 'projectId', 'metadataProperties_projectId' - The project ID.
+--
+-- 'repository', 'metadataProperties_repository' - The repository.
+newMetadataProperties ::
+  MetadataProperties
+newMetadataProperties =
+  MetadataProperties'
+    { commitId = Prelude.Nothing,
+      generatedBy = Prelude.Nothing,
+      projectId = Prelude.Nothing,
+      repository = Prelude.Nothing
+    }
+
+-- | The commit ID.
+metadataProperties_commitId :: Lens.Lens' MetadataProperties (Prelude.Maybe Prelude.Text)
+metadataProperties_commitId = Lens.lens (\MetadataProperties' {commitId} -> commitId) (\s@MetadataProperties' {} a -> s {commitId = a} :: MetadataProperties)
+
+-- | The entity this entity was generated by.
+metadataProperties_generatedBy :: Lens.Lens' MetadataProperties (Prelude.Maybe Prelude.Text)
+metadataProperties_generatedBy = Lens.lens (\MetadataProperties' {generatedBy} -> generatedBy) (\s@MetadataProperties' {} a -> s {generatedBy = a} :: MetadataProperties)
+
+-- | The project ID.
+metadataProperties_projectId :: Lens.Lens' MetadataProperties (Prelude.Maybe Prelude.Text)
+metadataProperties_projectId = Lens.lens (\MetadataProperties' {projectId} -> projectId) (\s@MetadataProperties' {} a -> s {projectId = a} :: MetadataProperties)
+
+-- | The repository.
+metadataProperties_repository :: Lens.Lens' MetadataProperties (Prelude.Maybe Prelude.Text)
+metadataProperties_repository = Lens.lens (\MetadataProperties' {repository} -> repository) (\s@MetadataProperties' {} a -> s {repository = a} :: MetadataProperties)
+
+instance Data.FromJSON MetadataProperties where
+  parseJSON =
+    Data.withObject
+      "MetadataProperties"
+      ( \x ->
+          MetadataProperties'
+            Prelude.<$> (x Data..:? "CommitId")
+            Prelude.<*> (x Data..:? "GeneratedBy")
+            Prelude.<*> (x Data..:? "ProjectId")
+            Prelude.<*> (x Data..:? "Repository")
+      )
+
+instance Prelude.Hashable MetadataProperties where
+  hashWithSalt _salt MetadataProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` commitId
+      `Prelude.hashWithSalt` generatedBy
+      `Prelude.hashWithSalt` projectId
+      `Prelude.hashWithSalt` repository
+
+instance Prelude.NFData MetadataProperties where
+  rnf MetadataProperties' {..} =
+    Prelude.rnf commitId
+      `Prelude.seq` Prelude.rnf generatedBy
+      `Prelude.seq` Prelude.rnf projectId
+      `Prelude.seq` Prelude.rnf repository
+
+instance Data.ToJSON MetadataProperties where
+  toJSON MetadataProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CommitId" Data..=) Prelude.<$> commitId,
+            ("GeneratedBy" Data..=) Prelude.<$> generatedBy,
+            ("ProjectId" Data..=) Prelude.<$> projectId,
+            ("Repository" Data..=) Prelude.<$> repository
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MetricData.hs b/gen/Amazonka/SageMaker/Types/MetricData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MetricData.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MetricData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MetricData 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
+
+-- | The name, value, and date and time of a metric that was emitted to
+-- Amazon CloudWatch.
+--
+-- /See:/ 'newMetricData' smart constructor.
+data MetricData = MetricData'
+  { -- | The name of the metric.
+    metricName :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the algorithm emitted the metric.
+    timestamp :: Prelude.Maybe Data.POSIX,
+    -- | The value of the metric.
+    value :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricData' 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:
+--
+-- 'metricName', 'metricData_metricName' - The name of the metric.
+--
+-- 'timestamp', 'metricData_timestamp' - The date and time that the algorithm emitted the metric.
+--
+-- 'value', 'metricData_value' - The value of the metric.
+newMetricData ::
+  MetricData
+newMetricData =
+  MetricData'
+    { metricName = Prelude.Nothing,
+      timestamp = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of the metric.
+metricData_metricName :: Lens.Lens' MetricData (Prelude.Maybe Prelude.Text)
+metricData_metricName = Lens.lens (\MetricData' {metricName} -> metricName) (\s@MetricData' {} a -> s {metricName = a} :: MetricData)
+
+-- | The date and time that the algorithm emitted the metric.
+metricData_timestamp :: Lens.Lens' MetricData (Prelude.Maybe Prelude.UTCTime)
+metricData_timestamp = Lens.lens (\MetricData' {timestamp} -> timestamp) (\s@MetricData' {} a -> s {timestamp = a} :: MetricData) Prelude.. Lens.mapping Data._Time
+
+-- | The value of the metric.
+metricData_value :: Lens.Lens' MetricData (Prelude.Maybe Prelude.Double)
+metricData_value = Lens.lens (\MetricData' {value} -> value) (\s@MetricData' {} a -> s {value = a} :: MetricData)
+
+instance Data.FromJSON MetricData where
+  parseJSON =
+    Data.withObject
+      "MetricData"
+      ( \x ->
+          MetricData'
+            Prelude.<$> (x Data..:? "MetricName")
+            Prelude.<*> (x Data..:? "Timestamp")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable MetricData where
+  hashWithSalt _salt MetricData' {..} =
+    _salt
+      `Prelude.hashWithSalt` metricName
+      `Prelude.hashWithSalt` timestamp
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData MetricData where
+  rnf MetricData' {..} =
+    Prelude.rnf metricName
+      `Prelude.seq` Prelude.rnf timestamp
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/SageMaker/Types/MetricDatum.hs b/gen/Amazonka/SageMaker/Types/MetricDatum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MetricDatum.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MetricDatum
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MetricDatum 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 Amazonka.SageMaker.Types.AutoMLMetricEnum
+import Amazonka.SageMaker.Types.AutoMLMetricExtendedEnum
+import Amazonka.SageMaker.Types.MetricSetSource
+
+-- | Information about the metric for a candidate produced by an AutoML job.
+--
+-- /See:/ 'newMetricDatum' smart constructor.
+data MetricDatum = MetricDatum'
+  { -- | The name of the metric.
+    metricName :: Prelude.Maybe AutoMLMetricEnum,
+    -- | The dataset split from which the AutoML job produced the metric.
+    set :: Prelude.Maybe MetricSetSource,
+    -- | The name of the standard metric.
+    --
+    -- For definitions of the standard metrics, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-metrics Autopilot candidate metrics>
+    -- .
+    standardMetricName :: Prelude.Maybe AutoMLMetricExtendedEnum,
+    -- | The value of the metric.
+    value :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricDatum' 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:
+--
+-- 'metricName', 'metricDatum_metricName' - The name of the metric.
+--
+-- 'set', 'metricDatum_set' - The dataset split from which the AutoML job produced the metric.
+--
+-- 'standardMetricName', 'metricDatum_standardMetricName' - The name of the standard metric.
+--
+-- For definitions of the standard metrics, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-metrics Autopilot candidate metrics>
+-- .
+--
+-- 'value', 'metricDatum_value' - The value of the metric.
+newMetricDatum ::
+  MetricDatum
+newMetricDatum =
+  MetricDatum'
+    { metricName = Prelude.Nothing,
+      set = Prelude.Nothing,
+      standardMetricName = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of the metric.
+metricDatum_metricName :: Lens.Lens' MetricDatum (Prelude.Maybe AutoMLMetricEnum)
+metricDatum_metricName = Lens.lens (\MetricDatum' {metricName} -> metricName) (\s@MetricDatum' {} a -> s {metricName = a} :: MetricDatum)
+
+-- | The dataset split from which the AutoML job produced the metric.
+metricDatum_set :: Lens.Lens' MetricDatum (Prelude.Maybe MetricSetSource)
+metricDatum_set = Lens.lens (\MetricDatum' {set} -> set) (\s@MetricDatum' {} a -> s {set = a} :: MetricDatum)
+
+-- | The name of the standard metric.
+--
+-- For definitions of the standard metrics, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-metrics Autopilot candidate metrics>
+-- .
+metricDatum_standardMetricName :: Lens.Lens' MetricDatum (Prelude.Maybe AutoMLMetricExtendedEnum)
+metricDatum_standardMetricName = Lens.lens (\MetricDatum' {standardMetricName} -> standardMetricName) (\s@MetricDatum' {} a -> s {standardMetricName = a} :: MetricDatum)
+
+-- | The value of the metric.
+metricDatum_value :: Lens.Lens' MetricDatum (Prelude.Maybe Prelude.Double)
+metricDatum_value = Lens.lens (\MetricDatum' {value} -> value) (\s@MetricDatum' {} a -> s {value = a} :: MetricDatum)
+
+instance Data.FromJSON MetricDatum where
+  parseJSON =
+    Data.withObject
+      "MetricDatum"
+      ( \x ->
+          MetricDatum'
+            Prelude.<$> (x Data..:? "MetricName")
+            Prelude.<*> (x Data..:? "Set")
+            Prelude.<*> (x Data..:? "StandardMetricName")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable MetricDatum where
+  hashWithSalt _salt MetricDatum' {..} =
+    _salt
+      `Prelude.hashWithSalt` metricName
+      `Prelude.hashWithSalt` set
+      `Prelude.hashWithSalt` standardMetricName
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData MetricDatum where
+  rnf MetricDatum' {..} =
+    Prelude.rnf metricName
+      `Prelude.seq` Prelude.rnf set
+      `Prelude.seq` Prelude.rnf standardMetricName
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/SageMaker/Types/MetricDefinition.hs b/gen/Amazonka/SageMaker/Types/MetricDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MetricDefinition.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MetricDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MetricDefinition 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
+
+-- | Specifies a metric that the training algorithm writes to @stderr@ or
+-- @stdout@. SageMakerhyperparameter tuning captures all defined metrics.
+-- You specify one metric that a hyperparameter tuning job uses as its
+-- objective metric to choose the best training job.
+--
+-- /See:/ 'newMetricDefinition' smart constructor.
+data MetricDefinition = MetricDefinition'
+  { -- | The name of the metric.
+    name :: Prelude.Text,
+    -- | A regular expression that searches the output of a training job and gets
+    -- the value of the metric. For more information about using regular
+    -- expressions to define metrics, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-metrics.html Defining Objective Metrics>.
+    regex :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricDefinition' 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:
+--
+-- 'name', 'metricDefinition_name' - The name of the metric.
+--
+-- 'regex', 'metricDefinition_regex' - A regular expression that searches the output of a training job and gets
+-- the value of the metric. For more information about using regular
+-- expressions to define metrics, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-metrics.html Defining Objective Metrics>.
+newMetricDefinition ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'regex'
+  Prelude.Text ->
+  MetricDefinition
+newMetricDefinition pName_ pRegex_ =
+  MetricDefinition' {name = pName_, regex = pRegex_}
+
+-- | The name of the metric.
+metricDefinition_name :: Lens.Lens' MetricDefinition Prelude.Text
+metricDefinition_name = Lens.lens (\MetricDefinition' {name} -> name) (\s@MetricDefinition' {} a -> s {name = a} :: MetricDefinition)
+
+-- | A regular expression that searches the output of a training job and gets
+-- the value of the metric. For more information about using regular
+-- expressions to define metrics, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-metrics.html Defining Objective Metrics>.
+metricDefinition_regex :: Lens.Lens' MetricDefinition Prelude.Text
+metricDefinition_regex = Lens.lens (\MetricDefinition' {regex} -> regex) (\s@MetricDefinition' {} a -> s {regex = a} :: MetricDefinition)
+
+instance Data.FromJSON MetricDefinition where
+  parseJSON =
+    Data.withObject
+      "MetricDefinition"
+      ( \x ->
+          MetricDefinition'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Regex")
+      )
+
+instance Prelude.Hashable MetricDefinition where
+  hashWithSalt _salt MetricDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` regex
+
+instance Prelude.NFData MetricDefinition where
+  rnf MetricDefinition' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf regex
+
+instance Data.ToJSON MetricDefinition where
+  toJSON MetricDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Regex" Data..= regex)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MetricSetSource.hs b/gen/Amazonka/SageMaker/Types/MetricSetSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MetricSetSource.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MetricSetSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MetricSetSource
+  ( MetricSetSource
+      ( ..,
+        MetricSetSource_Test,
+        MetricSetSource_Train,
+        MetricSetSource_Validation
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MetricSetSource = MetricSetSource'
+  { fromMetricSetSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MetricSetSource_Test :: MetricSetSource
+pattern MetricSetSource_Test = MetricSetSource' "Test"
+
+pattern MetricSetSource_Train :: MetricSetSource
+pattern MetricSetSource_Train = MetricSetSource' "Train"
+
+pattern MetricSetSource_Validation :: MetricSetSource
+pattern MetricSetSource_Validation = MetricSetSource' "Validation"
+
+{-# COMPLETE
+  MetricSetSource_Test,
+  MetricSetSource_Train,
+  MetricSetSource_Validation,
+  MetricSetSource'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MetricsSource.hs b/gen/Amazonka/SageMaker/Types/MetricsSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MetricsSource.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MetricsSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MetricsSource 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
+
+-- | Details about the metrics source.
+--
+-- /See:/ 'newMetricsSource' smart constructor.
+data MetricsSource = MetricsSource'
+  { -- | The hash key used for the metrics source.
+    contentDigest :: Prelude.Maybe Prelude.Text,
+    -- | The metric source content type.
+    contentType :: Prelude.Text,
+    -- | The S3 URI for the metrics source.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricsSource' 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:
+--
+-- 'contentDigest', 'metricsSource_contentDigest' - The hash key used for the metrics source.
+--
+-- 'contentType', 'metricsSource_contentType' - The metric source content type.
+--
+-- 's3Uri', 'metricsSource_s3Uri' - The S3 URI for the metrics source.
+newMetricsSource ::
+  -- | 'contentType'
+  Prelude.Text ->
+  -- | 's3Uri'
+  Prelude.Text ->
+  MetricsSource
+newMetricsSource pContentType_ pS3Uri_ =
+  MetricsSource'
+    { contentDigest = Prelude.Nothing,
+      contentType = pContentType_,
+      s3Uri = pS3Uri_
+    }
+
+-- | The hash key used for the metrics source.
+metricsSource_contentDigest :: Lens.Lens' MetricsSource (Prelude.Maybe Prelude.Text)
+metricsSource_contentDigest = Lens.lens (\MetricsSource' {contentDigest} -> contentDigest) (\s@MetricsSource' {} a -> s {contentDigest = a} :: MetricsSource)
+
+-- | The metric source content type.
+metricsSource_contentType :: Lens.Lens' MetricsSource Prelude.Text
+metricsSource_contentType = Lens.lens (\MetricsSource' {contentType} -> contentType) (\s@MetricsSource' {} a -> s {contentType = a} :: MetricsSource)
+
+-- | The S3 URI for the metrics source.
+metricsSource_s3Uri :: Lens.Lens' MetricsSource Prelude.Text
+metricsSource_s3Uri = Lens.lens (\MetricsSource' {s3Uri} -> s3Uri) (\s@MetricsSource' {} a -> s {s3Uri = a} :: MetricsSource)
+
+instance Data.FromJSON MetricsSource where
+  parseJSON =
+    Data.withObject
+      "MetricsSource"
+      ( \x ->
+          MetricsSource'
+            Prelude.<$> (x Data..:? "ContentDigest")
+            Prelude.<*> (x Data..: "ContentType")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable MetricsSource where
+  hashWithSalt _salt MetricsSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentDigest
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData MetricsSource where
+  rnf MetricsSource' {..} =
+    Prelude.rnf contentDigest
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON MetricsSource where
+  toJSON MetricsSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentDigest" Data..=) Prelude.<$> contentDigest,
+            Prelude.Just ("ContentType" Data..= contentType),
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Model.hs b/gen/Amazonka/SageMaker/Types/Model.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Model.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Model
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Model 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 Amazonka.SageMaker.Types.ContainerDefinition
+import Amazonka.SageMaker.Types.InferenceExecutionConfig
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.VpcConfig
+
+-- | The properties of a model as returned by the Search API.
+--
+-- /See:/ 'newModel' smart constructor.
+data Model = Model'
+  { -- | The containers in the inference pipeline.
+    containers :: Prelude.Maybe [ContainerDefinition],
+    -- | A timestamp that indicates when the model was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | Isolates the model container. No inbound or outbound network calls can
+    -- be made to or from the model container.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the model.
+    executionRoleArn :: Prelude.Maybe Prelude.Text,
+    inferenceExecutionConfig :: Prelude.Maybe InferenceExecutionConfig,
+    -- | The Amazon Resource Name (ARN) of the model.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the model.
+    modelName :: Prelude.Maybe Prelude.Text,
+    primaryContainer :: Prelude.Maybe ContainerDefinition,
+    -- | 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/.
+    tags :: Prelude.Maybe [Tag],
+    vpcConfig :: Prelude.Maybe VpcConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Model' 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:
+--
+-- 'containers', 'model_containers' - The containers in the inference pipeline.
+--
+-- 'creationTime', 'model_creationTime' - A timestamp that indicates when the model was created.
+--
+-- 'enableNetworkIsolation', 'model_enableNetworkIsolation' - Isolates the model container. No inbound or outbound network calls can
+-- be made to or from the model container.
+--
+-- 'executionRoleArn', 'model_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the model.
+--
+-- 'inferenceExecutionConfig', 'model_inferenceExecutionConfig' - Undocumented member.
+--
+-- 'modelArn', 'model_modelArn' - The Amazon Resource Name (ARN) of the model.
+--
+-- 'modelName', 'model_modelName' - The name of the model.
+--
+-- 'primaryContainer', 'model_primaryContainer' - Undocumented member.
+--
+-- 'tags', 'model_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/.
+--
+-- 'vpcConfig', 'model_vpcConfig' - Undocumented member.
+newModel ::
+  Model
+newModel =
+  Model'
+    { containers = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      enableNetworkIsolation = Prelude.Nothing,
+      executionRoleArn = Prelude.Nothing,
+      inferenceExecutionConfig = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      primaryContainer = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcConfig = Prelude.Nothing
+    }
+
+-- | The containers in the inference pipeline.
+model_containers :: Lens.Lens' Model (Prelude.Maybe [ContainerDefinition])
+model_containers = Lens.lens (\Model' {containers} -> containers) (\s@Model' {} a -> s {containers = a} :: Model) Prelude.. Lens.mapping Lens.coerced
+
+-- | A timestamp that indicates when the model was created.
+model_creationTime :: Lens.Lens' Model (Prelude.Maybe Prelude.UTCTime)
+model_creationTime = Lens.lens (\Model' {creationTime} -> creationTime) (\s@Model' {} a -> s {creationTime = a} :: Model) Prelude.. Lens.mapping Data._Time
+
+-- | Isolates the model container. No inbound or outbound network calls can
+-- be made to or from the model container.
+model_enableNetworkIsolation :: Lens.Lens' Model (Prelude.Maybe Prelude.Bool)
+model_enableNetworkIsolation = Lens.lens (\Model' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@Model' {} a -> s {enableNetworkIsolation = a} :: Model)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the model.
+model_executionRoleArn :: Lens.Lens' Model (Prelude.Maybe Prelude.Text)
+model_executionRoleArn = Lens.lens (\Model' {executionRoleArn} -> executionRoleArn) (\s@Model' {} a -> s {executionRoleArn = a} :: Model)
+
+-- | Undocumented member.
+model_inferenceExecutionConfig :: Lens.Lens' Model (Prelude.Maybe InferenceExecutionConfig)
+model_inferenceExecutionConfig = Lens.lens (\Model' {inferenceExecutionConfig} -> inferenceExecutionConfig) (\s@Model' {} a -> s {inferenceExecutionConfig = a} :: Model)
+
+-- | The Amazon Resource Name (ARN) of the model.
+model_modelArn :: Lens.Lens' Model (Prelude.Maybe Prelude.Text)
+model_modelArn = Lens.lens (\Model' {modelArn} -> modelArn) (\s@Model' {} a -> s {modelArn = a} :: Model)
+
+-- | The name of the model.
+model_modelName :: Lens.Lens' Model (Prelude.Maybe Prelude.Text)
+model_modelName = Lens.lens (\Model' {modelName} -> modelName) (\s@Model' {} a -> s {modelName = a} :: Model)
+
+-- | Undocumented member.
+model_primaryContainer :: Lens.Lens' Model (Prelude.Maybe ContainerDefinition)
+model_primaryContainer = Lens.lens (\Model' {primaryContainer} -> primaryContainer) (\s@Model' {} a -> s {primaryContainer = a} :: Model)
+
+-- | 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/.
+model_tags :: Lens.Lens' Model (Prelude.Maybe [Tag])
+model_tags = Lens.lens (\Model' {tags} -> tags) (\s@Model' {} a -> s {tags = a} :: Model) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+model_vpcConfig :: Lens.Lens' Model (Prelude.Maybe VpcConfig)
+model_vpcConfig = Lens.lens (\Model' {vpcConfig} -> vpcConfig) (\s@Model' {} a -> s {vpcConfig = a} :: Model)
+
+instance Data.FromJSON Model where
+  parseJSON =
+    Data.withObject
+      "Model"
+      ( \x ->
+          Model'
+            Prelude.<$> (x Data..:? "Containers" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "EnableNetworkIsolation")
+            Prelude.<*> (x Data..:? "ExecutionRoleArn")
+            Prelude.<*> (x Data..:? "InferenceExecutionConfig")
+            Prelude.<*> (x Data..:? "ModelArn")
+            Prelude.<*> (x Data..:? "ModelName")
+            Prelude.<*> (x Data..:? "PrimaryContainer")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "VpcConfig")
+      )
+
+instance Prelude.Hashable Model where
+  hashWithSalt _salt Model' {..} =
+    _salt
+      `Prelude.hashWithSalt` containers
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` enableNetworkIsolation
+      `Prelude.hashWithSalt` executionRoleArn
+      `Prelude.hashWithSalt` inferenceExecutionConfig
+      `Prelude.hashWithSalt` modelArn
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` primaryContainer
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcConfig
+
+instance Prelude.NFData Model where
+  rnf Model' {..} =
+    Prelude.rnf containers
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf inferenceExecutionConfig
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf primaryContainer
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcConfig
diff --git a/gen/Amazonka/SageMaker/Types/ModelApprovalStatus.hs b/gen/Amazonka/SageMaker/Types/ModelApprovalStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelApprovalStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelApprovalStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelApprovalStatus
+  ( ModelApprovalStatus
+      ( ..,
+        ModelApprovalStatus_Approved,
+        ModelApprovalStatus_PendingManualApproval,
+        ModelApprovalStatus_Rejected
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelApprovalStatus = ModelApprovalStatus'
+  { fromModelApprovalStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelApprovalStatus_Approved :: ModelApprovalStatus
+pattern ModelApprovalStatus_Approved = ModelApprovalStatus' "Approved"
+
+pattern ModelApprovalStatus_PendingManualApproval :: ModelApprovalStatus
+pattern ModelApprovalStatus_PendingManualApproval = ModelApprovalStatus' "PendingManualApproval"
+
+pattern ModelApprovalStatus_Rejected :: ModelApprovalStatus
+pattern ModelApprovalStatus_Rejected = ModelApprovalStatus' "Rejected"
+
+{-# COMPLETE
+  ModelApprovalStatus_Approved,
+  ModelApprovalStatus_PendingManualApproval,
+  ModelApprovalStatus_Rejected,
+  ModelApprovalStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelArtifacts.hs b/gen/Amazonka/SageMaker/Types/ModelArtifacts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelArtifacts.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelArtifacts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelArtifacts 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
+
+-- | Provides information about the location that is configured for storing
+-- model artifacts.
+--
+-- Model artifacts are the output that results from training a model, and
+-- typically consist of trained parameters, a model definition that
+-- describes how to compute inferences, and other metadata.
+--
+-- /See:/ 'newModelArtifacts' smart constructor.
+data ModelArtifacts = ModelArtifacts'
+  { -- | The path of the S3 object that contains the model artifacts. For
+    -- example, @s3:\/\/bucket-name\/keynameprefix\/model.tar.gz@.
+    s3ModelArtifacts :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelArtifacts' 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:
+--
+-- 's3ModelArtifacts', 'modelArtifacts_s3ModelArtifacts' - The path of the S3 object that contains the model artifacts. For
+-- example, @s3:\/\/bucket-name\/keynameprefix\/model.tar.gz@.
+newModelArtifacts ::
+  -- | 's3ModelArtifacts'
+  Prelude.Text ->
+  ModelArtifacts
+newModelArtifacts pS3ModelArtifacts_ =
+  ModelArtifacts'
+    { s3ModelArtifacts =
+        pS3ModelArtifacts_
+    }
+
+-- | The path of the S3 object that contains the model artifacts. For
+-- example, @s3:\/\/bucket-name\/keynameprefix\/model.tar.gz@.
+modelArtifacts_s3ModelArtifacts :: Lens.Lens' ModelArtifacts Prelude.Text
+modelArtifacts_s3ModelArtifacts = Lens.lens (\ModelArtifacts' {s3ModelArtifacts} -> s3ModelArtifacts) (\s@ModelArtifacts' {} a -> s {s3ModelArtifacts = a} :: ModelArtifacts)
+
+instance Data.FromJSON ModelArtifacts where
+  parseJSON =
+    Data.withObject
+      "ModelArtifacts"
+      ( \x ->
+          ModelArtifacts'
+            Prelude.<$> (x Data..: "S3ModelArtifacts")
+      )
+
+instance Prelude.Hashable ModelArtifacts where
+  hashWithSalt _salt ModelArtifacts' {..} =
+    _salt `Prelude.hashWithSalt` s3ModelArtifacts
+
+instance Prelude.NFData ModelArtifacts where
+  rnf ModelArtifacts' {..} =
+    Prelude.rnf s3ModelArtifacts
diff --git a/gen/Amazonka/SageMaker/Types/ModelBiasAppSpecification.hs b/gen/Amazonka/SageMaker/Types/ModelBiasAppSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelBiasAppSpecification.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelBiasAppSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelBiasAppSpecification 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
+
+-- | Docker container image configuration object for the model bias job.
+--
+-- /See:/ 'newModelBiasAppSpecification' smart constructor.
+data ModelBiasAppSpecification = ModelBiasAppSpecification'
+  { -- | Sets the environment variables in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The container image to be run by the model bias job.
+    imageUri :: Prelude.Text,
+    -- | JSON formatted S3 file that defines bias parameters. For more
+    -- information on this JSON configuration file, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-config-json-monitor-bias-parameters.html Configure bias parameters>.
+    configUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelBiasAppSpecification' 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:
+--
+-- 'environment', 'modelBiasAppSpecification_environment' - Sets the environment variables in the Docker container.
+--
+-- 'imageUri', 'modelBiasAppSpecification_imageUri' - The container image to be run by the model bias job.
+--
+-- 'configUri', 'modelBiasAppSpecification_configUri' - JSON formatted S3 file that defines bias parameters. For more
+-- information on this JSON configuration file, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-config-json-monitor-bias-parameters.html Configure bias parameters>.
+newModelBiasAppSpecification ::
+  -- | 'imageUri'
+  Prelude.Text ->
+  -- | 'configUri'
+  Prelude.Text ->
+  ModelBiasAppSpecification
+newModelBiasAppSpecification pImageUri_ pConfigUri_ =
+  ModelBiasAppSpecification'
+    { environment =
+        Prelude.Nothing,
+      imageUri = pImageUri_,
+      configUri = pConfigUri_
+    }
+
+-- | Sets the environment variables in the Docker container.
+modelBiasAppSpecification_environment :: Lens.Lens' ModelBiasAppSpecification (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+modelBiasAppSpecification_environment = Lens.lens (\ModelBiasAppSpecification' {environment} -> environment) (\s@ModelBiasAppSpecification' {} a -> s {environment = a} :: ModelBiasAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The container image to be run by the model bias job.
+modelBiasAppSpecification_imageUri :: Lens.Lens' ModelBiasAppSpecification Prelude.Text
+modelBiasAppSpecification_imageUri = Lens.lens (\ModelBiasAppSpecification' {imageUri} -> imageUri) (\s@ModelBiasAppSpecification' {} a -> s {imageUri = a} :: ModelBiasAppSpecification)
+
+-- | JSON formatted S3 file that defines bias parameters. For more
+-- information on this JSON configuration file, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-config-json-monitor-bias-parameters.html Configure bias parameters>.
+modelBiasAppSpecification_configUri :: Lens.Lens' ModelBiasAppSpecification Prelude.Text
+modelBiasAppSpecification_configUri = Lens.lens (\ModelBiasAppSpecification' {configUri} -> configUri) (\s@ModelBiasAppSpecification' {} a -> s {configUri = a} :: ModelBiasAppSpecification)
+
+instance Data.FromJSON ModelBiasAppSpecification where
+  parseJSON =
+    Data.withObject
+      "ModelBiasAppSpecification"
+      ( \x ->
+          ModelBiasAppSpecification'
+            Prelude.<$> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "ImageUri")
+            Prelude.<*> (x Data..: "ConfigUri")
+      )
+
+instance Prelude.Hashable ModelBiasAppSpecification where
+  hashWithSalt _salt ModelBiasAppSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` imageUri
+      `Prelude.hashWithSalt` configUri
+
+instance Prelude.NFData ModelBiasAppSpecification where
+  rnf ModelBiasAppSpecification' {..} =
+    Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf imageUri
+      `Prelude.seq` Prelude.rnf configUri
+
+instance Data.ToJSON ModelBiasAppSpecification where
+  toJSON ModelBiasAppSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Environment" Data..=) Prelude.<$> environment,
+            Prelude.Just ("ImageUri" Data..= imageUri),
+            Prelude.Just ("ConfigUri" Data..= configUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelBiasBaselineConfig.hs b/gen/Amazonka/SageMaker/Types/ModelBiasBaselineConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelBiasBaselineConfig.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelBiasBaselineConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelBiasBaselineConfig 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 Amazonka.SageMaker.Types.MonitoringConstraintsResource
+
+-- | The configuration for a baseline model bias job.
+--
+-- /See:/ 'newModelBiasBaselineConfig' smart constructor.
+data ModelBiasBaselineConfig = ModelBiasBaselineConfig'
+  { -- | The name of the baseline model bias job.
+    baseliningJobName :: Prelude.Maybe Prelude.Text,
+    constraintsResource :: Prelude.Maybe MonitoringConstraintsResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelBiasBaselineConfig' 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:
+--
+-- 'baseliningJobName', 'modelBiasBaselineConfig_baseliningJobName' - The name of the baseline model bias job.
+--
+-- 'constraintsResource', 'modelBiasBaselineConfig_constraintsResource' - Undocumented member.
+newModelBiasBaselineConfig ::
+  ModelBiasBaselineConfig
+newModelBiasBaselineConfig =
+  ModelBiasBaselineConfig'
+    { baseliningJobName =
+        Prelude.Nothing,
+      constraintsResource = Prelude.Nothing
+    }
+
+-- | The name of the baseline model bias job.
+modelBiasBaselineConfig_baseliningJobName :: Lens.Lens' ModelBiasBaselineConfig (Prelude.Maybe Prelude.Text)
+modelBiasBaselineConfig_baseliningJobName = Lens.lens (\ModelBiasBaselineConfig' {baseliningJobName} -> baseliningJobName) (\s@ModelBiasBaselineConfig' {} a -> s {baseliningJobName = a} :: ModelBiasBaselineConfig)
+
+-- | Undocumented member.
+modelBiasBaselineConfig_constraintsResource :: Lens.Lens' ModelBiasBaselineConfig (Prelude.Maybe MonitoringConstraintsResource)
+modelBiasBaselineConfig_constraintsResource = Lens.lens (\ModelBiasBaselineConfig' {constraintsResource} -> constraintsResource) (\s@ModelBiasBaselineConfig' {} a -> s {constraintsResource = a} :: ModelBiasBaselineConfig)
+
+instance Data.FromJSON ModelBiasBaselineConfig where
+  parseJSON =
+    Data.withObject
+      "ModelBiasBaselineConfig"
+      ( \x ->
+          ModelBiasBaselineConfig'
+            Prelude.<$> (x Data..:? "BaseliningJobName")
+            Prelude.<*> (x Data..:? "ConstraintsResource")
+      )
+
+instance Prelude.Hashable ModelBiasBaselineConfig where
+  hashWithSalt _salt ModelBiasBaselineConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` baseliningJobName
+      `Prelude.hashWithSalt` constraintsResource
+
+instance Prelude.NFData ModelBiasBaselineConfig where
+  rnf ModelBiasBaselineConfig' {..} =
+    Prelude.rnf baseliningJobName
+      `Prelude.seq` Prelude.rnf constraintsResource
+
+instance Data.ToJSON ModelBiasBaselineConfig where
+  toJSON ModelBiasBaselineConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BaseliningJobName" Data..=)
+              Prelude.<$> baseliningJobName,
+            ("ConstraintsResource" Data..=)
+              Prelude.<$> constraintsResource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelBiasJobInput.hs b/gen/Amazonka/SageMaker/Types/ModelBiasJobInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelBiasJobInput.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelBiasJobInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelBiasJobInput 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 Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.EndpointInput
+import Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input
+
+-- | Inputs for the model bias job.
+--
+-- /See:/ 'newModelBiasJobInput' smart constructor.
+data ModelBiasJobInput = ModelBiasJobInput'
+  { -- | Input object for the batch transform job.
+    batchTransformInput :: Prelude.Maybe BatchTransformInput,
+    endpointInput :: Prelude.Maybe EndpointInput,
+    -- | Location of ground truth labels to use in model bias job.
+    groundTruthS3Input :: MonitoringGroundTruthS3Input
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelBiasJobInput' 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:
+--
+-- 'batchTransformInput', 'modelBiasJobInput_batchTransformInput' - Input object for the batch transform job.
+--
+-- 'endpointInput', 'modelBiasJobInput_endpointInput' - Undocumented member.
+--
+-- 'groundTruthS3Input', 'modelBiasJobInput_groundTruthS3Input' - Location of ground truth labels to use in model bias job.
+newModelBiasJobInput ::
+  -- | 'groundTruthS3Input'
+  MonitoringGroundTruthS3Input ->
+  ModelBiasJobInput
+newModelBiasJobInput pGroundTruthS3Input_ =
+  ModelBiasJobInput'
+    { batchTransformInput =
+        Prelude.Nothing,
+      endpointInput = Prelude.Nothing,
+      groundTruthS3Input = pGroundTruthS3Input_
+    }
+
+-- | Input object for the batch transform job.
+modelBiasJobInput_batchTransformInput :: Lens.Lens' ModelBiasJobInput (Prelude.Maybe BatchTransformInput)
+modelBiasJobInput_batchTransformInput = Lens.lens (\ModelBiasJobInput' {batchTransformInput} -> batchTransformInput) (\s@ModelBiasJobInput' {} a -> s {batchTransformInput = a} :: ModelBiasJobInput)
+
+-- | Undocumented member.
+modelBiasJobInput_endpointInput :: Lens.Lens' ModelBiasJobInput (Prelude.Maybe EndpointInput)
+modelBiasJobInput_endpointInput = Lens.lens (\ModelBiasJobInput' {endpointInput} -> endpointInput) (\s@ModelBiasJobInput' {} a -> s {endpointInput = a} :: ModelBiasJobInput)
+
+-- | Location of ground truth labels to use in model bias job.
+modelBiasJobInput_groundTruthS3Input :: Lens.Lens' ModelBiasJobInput MonitoringGroundTruthS3Input
+modelBiasJobInput_groundTruthS3Input = Lens.lens (\ModelBiasJobInput' {groundTruthS3Input} -> groundTruthS3Input) (\s@ModelBiasJobInput' {} a -> s {groundTruthS3Input = a} :: ModelBiasJobInput)
+
+instance Data.FromJSON ModelBiasJobInput where
+  parseJSON =
+    Data.withObject
+      "ModelBiasJobInput"
+      ( \x ->
+          ModelBiasJobInput'
+            Prelude.<$> (x Data..:? "BatchTransformInput")
+            Prelude.<*> (x Data..:? "EndpointInput")
+            Prelude.<*> (x Data..: "GroundTruthS3Input")
+      )
+
+instance Prelude.Hashable ModelBiasJobInput where
+  hashWithSalt _salt ModelBiasJobInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchTransformInput
+      `Prelude.hashWithSalt` endpointInput
+      `Prelude.hashWithSalt` groundTruthS3Input
+
+instance Prelude.NFData ModelBiasJobInput where
+  rnf ModelBiasJobInput' {..} =
+    Prelude.rnf batchTransformInput
+      `Prelude.seq` Prelude.rnf endpointInput
+      `Prelude.seq` Prelude.rnf groundTruthS3Input
+
+instance Data.ToJSON ModelBiasJobInput where
+  toJSON ModelBiasJobInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchTransformInput" Data..=)
+              Prelude.<$> batchTransformInput,
+            ("EndpointInput" Data..=) Prelude.<$> endpointInput,
+            Prelude.Just
+              ("GroundTruthS3Input" Data..= groundTruthS3Input)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelCacheSetting.hs b/gen/Amazonka/SageMaker/Types/ModelCacheSetting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCacheSetting.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCacheSetting
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCacheSetting
+  ( ModelCacheSetting
+      ( ..,
+        ModelCacheSetting_Disabled,
+        ModelCacheSetting_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCacheSetting = ModelCacheSetting'
+  { fromModelCacheSetting ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCacheSetting_Disabled :: ModelCacheSetting
+pattern ModelCacheSetting_Disabled = ModelCacheSetting' "Disabled"
+
+pattern ModelCacheSetting_Enabled :: ModelCacheSetting
+pattern ModelCacheSetting_Enabled = ModelCacheSetting' "Enabled"
+
+{-# COMPLETE
+  ModelCacheSetting_Disabled,
+  ModelCacheSetting_Enabled,
+  ModelCacheSetting'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCard.hs b/gen/Amazonka/SageMaker/Types/ModelCard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCard.hs
@@ -0,0 +1,266 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCard 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 Amazonka.SageMaker.Types.ModelCardSecurityConfig
+import Amazonka.SageMaker.Types.ModelCardStatus
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | An Amazon SageMaker Model Card.
+--
+-- /See:/ 'newModelCard' smart constructor.
+data ModelCard = ModelCard'
+  { -- | The content of the model card. Content uses the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+    -- and provided as a string.
+    content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    createdBy :: Prelude.Maybe UserContext,
+    -- | The date and time that the model card was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The date and time that the model card was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the model card.
+    modelCardArn :: Prelude.Maybe Prelude.Text,
+    -- | The unique name of the model card.
+    modelCardName :: Prelude.Maybe Prelude.Text,
+    -- | The approval status of the model card within your organization.
+    -- Different organizations might have different criteria for model card
+    -- review and approval.
+    --
+    -- -   @Draft@: The model card is a work in progress.
+    --
+    -- -   @PendingReview@: The model card is pending review.
+    --
+    -- -   @Approved@: The model card is approved.
+    --
+    -- -   @Archived@: The model card is archived. No more updates should be
+    --     made to the model card, but it can still be exported.
+    modelCardStatus :: Prelude.Maybe ModelCardStatus,
+    -- | The version of the model card.
+    modelCardVersion :: Prelude.Maybe Prelude.Int,
+    -- | The unique name (ID) of the model.
+    modelId :: Prelude.Maybe Prelude.Text,
+    -- | The risk rating of the model. Different organizations might have
+    -- different criteria for model card risk ratings. For more information,
+    -- see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-risk-rating.html Risk ratings>.
+    riskRating :: Prelude.Maybe Prelude.Text,
+    -- | The security configuration used to protect model card data.
+    securityConfig :: Prelude.Maybe ModelCardSecurityConfig,
+    -- | Key-value pairs used to manage metadata for the model card.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCard' 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:
+--
+-- 'content', 'modelCard_content' - The content of the model card. Content uses the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+-- and provided as a string.
+--
+-- 'createdBy', 'modelCard_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'modelCard_creationTime' - The date and time that the model card was created.
+--
+-- 'lastModifiedBy', 'modelCard_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'modelCard_lastModifiedTime' - The date and time that the model card was last modified.
+--
+-- 'modelCardArn', 'modelCard_modelCardArn' - The Amazon Resource Name (ARN) of the model card.
+--
+-- 'modelCardName', 'modelCard_modelCardName' - The unique name of the model card.
+--
+-- 'modelCardStatus', 'modelCard_modelCardStatus' - The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+--
+-- 'modelCardVersion', 'modelCard_modelCardVersion' - The version of the model card.
+--
+-- 'modelId', 'modelCard_modelId' - The unique name (ID) of the model.
+--
+-- 'riskRating', 'modelCard_riskRating' - The risk rating of the model. Different organizations might have
+-- different criteria for model card risk ratings. For more information,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-risk-rating.html Risk ratings>.
+--
+-- 'securityConfig', 'modelCard_securityConfig' - The security configuration used to protect model card data.
+--
+-- 'tags', 'modelCard_tags' - Key-value pairs used to manage metadata for the model card.
+newModelCard ::
+  ModelCard
+newModelCard =
+  ModelCard'
+    { content = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      modelCardArn = Prelude.Nothing,
+      modelCardName = Prelude.Nothing,
+      modelCardStatus = Prelude.Nothing,
+      modelCardVersion = Prelude.Nothing,
+      modelId = Prelude.Nothing,
+      riskRating = Prelude.Nothing,
+      securityConfig = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The content of the model card. Content uses the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+-- and provided as a string.
+modelCard_content :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.Text)
+modelCard_content = Lens.lens (\ModelCard' {content} -> content) (\s@ModelCard' {} a -> s {content = a} :: ModelCard) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Undocumented member.
+modelCard_createdBy :: Lens.Lens' ModelCard (Prelude.Maybe UserContext)
+modelCard_createdBy = Lens.lens (\ModelCard' {createdBy} -> createdBy) (\s@ModelCard' {} a -> s {createdBy = a} :: ModelCard)
+
+-- | The date and time that the model card was created.
+modelCard_creationTime :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.UTCTime)
+modelCard_creationTime = Lens.lens (\ModelCard' {creationTime} -> creationTime) (\s@ModelCard' {} a -> s {creationTime = a} :: ModelCard) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+modelCard_lastModifiedBy :: Lens.Lens' ModelCard (Prelude.Maybe UserContext)
+modelCard_lastModifiedBy = Lens.lens (\ModelCard' {lastModifiedBy} -> lastModifiedBy) (\s@ModelCard' {} a -> s {lastModifiedBy = a} :: ModelCard)
+
+-- | The date and time that the model card was last modified.
+modelCard_lastModifiedTime :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.UTCTime)
+modelCard_lastModifiedTime = Lens.lens (\ModelCard' {lastModifiedTime} -> lastModifiedTime) (\s@ModelCard' {} a -> s {lastModifiedTime = a} :: ModelCard) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the model card.
+modelCard_modelCardArn :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.Text)
+modelCard_modelCardArn = Lens.lens (\ModelCard' {modelCardArn} -> modelCardArn) (\s@ModelCard' {} a -> s {modelCardArn = a} :: ModelCard)
+
+-- | The unique name of the model card.
+modelCard_modelCardName :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.Text)
+modelCard_modelCardName = Lens.lens (\ModelCard' {modelCardName} -> modelCardName) (\s@ModelCard' {} a -> s {modelCardName = a} :: ModelCard)
+
+-- | The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+modelCard_modelCardStatus :: Lens.Lens' ModelCard (Prelude.Maybe ModelCardStatus)
+modelCard_modelCardStatus = Lens.lens (\ModelCard' {modelCardStatus} -> modelCardStatus) (\s@ModelCard' {} a -> s {modelCardStatus = a} :: ModelCard)
+
+-- | The version of the model card.
+modelCard_modelCardVersion :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.Int)
+modelCard_modelCardVersion = Lens.lens (\ModelCard' {modelCardVersion} -> modelCardVersion) (\s@ModelCard' {} a -> s {modelCardVersion = a} :: ModelCard)
+
+-- | The unique name (ID) of the model.
+modelCard_modelId :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.Text)
+modelCard_modelId = Lens.lens (\ModelCard' {modelId} -> modelId) (\s@ModelCard' {} a -> s {modelId = a} :: ModelCard)
+
+-- | The risk rating of the model. Different organizations might have
+-- different criteria for model card risk ratings. For more information,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-risk-rating.html Risk ratings>.
+modelCard_riskRating :: Lens.Lens' ModelCard (Prelude.Maybe Prelude.Text)
+modelCard_riskRating = Lens.lens (\ModelCard' {riskRating} -> riskRating) (\s@ModelCard' {} a -> s {riskRating = a} :: ModelCard)
+
+-- | The security configuration used to protect model card data.
+modelCard_securityConfig :: Lens.Lens' ModelCard (Prelude.Maybe ModelCardSecurityConfig)
+modelCard_securityConfig = Lens.lens (\ModelCard' {securityConfig} -> securityConfig) (\s@ModelCard' {} a -> s {securityConfig = a} :: ModelCard)
+
+-- | Key-value pairs used to manage metadata for the model card.
+modelCard_tags :: Lens.Lens' ModelCard (Prelude.Maybe [Tag])
+modelCard_tags = Lens.lens (\ModelCard' {tags} -> tags) (\s@ModelCard' {} a -> s {tags = a} :: ModelCard) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ModelCard where
+  parseJSON =
+    Data.withObject
+      "ModelCard"
+      ( \x ->
+          ModelCard'
+            Prelude.<$> (x Data..:? "Content")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ModelCardArn")
+            Prelude.<*> (x Data..:? "ModelCardName")
+            Prelude.<*> (x Data..:? "ModelCardStatus")
+            Prelude.<*> (x Data..:? "ModelCardVersion")
+            Prelude.<*> (x Data..:? "ModelId")
+            Prelude.<*> (x Data..:? "RiskRating")
+            Prelude.<*> (x Data..:? "SecurityConfig")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ModelCard where
+  hashWithSalt _salt ModelCard' {..} =
+    _salt
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modelCardArn
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` modelId
+      `Prelude.hashWithSalt` riskRating
+      `Prelude.hashWithSalt` securityConfig
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ModelCard where
+  rnf ModelCard' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelCardArn
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf modelId
+      `Prelude.seq` Prelude.rnf riskRating
+      `Prelude.seq` Prelude.rnf securityConfig
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardExportArtifacts.hs b/gen/Amazonka/SageMaker/Types/ModelCardExportArtifacts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardExportArtifacts.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCardExportArtifacts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardExportArtifacts 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
+
+-- | The artifacts of the model card export job.
+--
+-- /See:/ 'newModelCardExportArtifacts' smart constructor.
+data ModelCardExportArtifacts = ModelCardExportArtifacts'
+  { -- | The Amazon S3 URI of the exported model artifacts.
+    s3ExportArtifacts :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCardExportArtifacts' 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:
+--
+-- 's3ExportArtifacts', 'modelCardExportArtifacts_s3ExportArtifacts' - The Amazon S3 URI of the exported model artifacts.
+newModelCardExportArtifacts ::
+  -- | 's3ExportArtifacts'
+  Prelude.Text ->
+  ModelCardExportArtifacts
+newModelCardExportArtifacts pS3ExportArtifacts_ =
+  ModelCardExportArtifacts'
+    { s3ExportArtifacts =
+        pS3ExportArtifacts_
+    }
+
+-- | The Amazon S3 URI of the exported model artifacts.
+modelCardExportArtifacts_s3ExportArtifacts :: Lens.Lens' ModelCardExportArtifacts Prelude.Text
+modelCardExportArtifacts_s3ExportArtifacts = Lens.lens (\ModelCardExportArtifacts' {s3ExportArtifacts} -> s3ExportArtifacts) (\s@ModelCardExportArtifacts' {} a -> s {s3ExportArtifacts = a} :: ModelCardExportArtifacts)
+
+instance Data.FromJSON ModelCardExportArtifacts where
+  parseJSON =
+    Data.withObject
+      "ModelCardExportArtifacts"
+      ( \x ->
+          ModelCardExportArtifacts'
+            Prelude.<$> (x Data..: "S3ExportArtifacts")
+      )
+
+instance Prelude.Hashable ModelCardExportArtifacts where
+  hashWithSalt _salt ModelCardExportArtifacts' {..} =
+    _salt `Prelude.hashWithSalt` s3ExportArtifacts
+
+instance Prelude.NFData ModelCardExportArtifacts where
+  rnf ModelCardExportArtifacts' {..} =
+    Prelude.rnf s3ExportArtifacts
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardExportJobSortBy.hs b/gen/Amazonka/SageMaker/Types/ModelCardExportJobSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardExportJobSortBy.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardExportJobSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardExportJobSortBy
+  ( ModelCardExportJobSortBy
+      ( ..,
+        ModelCardExportJobSortBy_CreationTime,
+        ModelCardExportJobSortBy_Name,
+        ModelCardExportJobSortBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Attribute by which to sort returned export jobs.
+newtype ModelCardExportJobSortBy = ModelCardExportJobSortBy'
+  { fromModelCardExportJobSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardExportJobSortBy_CreationTime :: ModelCardExportJobSortBy
+pattern ModelCardExportJobSortBy_CreationTime = ModelCardExportJobSortBy' "CreationTime"
+
+pattern ModelCardExportJobSortBy_Name :: ModelCardExportJobSortBy
+pattern ModelCardExportJobSortBy_Name = ModelCardExportJobSortBy' "Name"
+
+pattern ModelCardExportJobSortBy_Status :: ModelCardExportJobSortBy
+pattern ModelCardExportJobSortBy_Status = ModelCardExportJobSortBy' "Status"
+
+{-# COMPLETE
+  ModelCardExportJobSortBy_CreationTime,
+  ModelCardExportJobSortBy_Name,
+  ModelCardExportJobSortBy_Status,
+  ModelCardExportJobSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardExportJobSortOrder.hs b/gen/Amazonka/SageMaker/Types/ModelCardExportJobSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardExportJobSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardExportJobSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardExportJobSortOrder
+  ( ModelCardExportJobSortOrder
+      ( ..,
+        ModelCardExportJobSortOrder_Ascending,
+        ModelCardExportJobSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardExportJobSortOrder = ModelCardExportJobSortOrder'
+  { fromModelCardExportJobSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardExportJobSortOrder_Ascending :: ModelCardExportJobSortOrder
+pattern ModelCardExportJobSortOrder_Ascending = ModelCardExportJobSortOrder' "Ascending"
+
+pattern ModelCardExportJobSortOrder_Descending :: ModelCardExportJobSortOrder
+pattern ModelCardExportJobSortOrder_Descending = ModelCardExportJobSortOrder' "Descending"
+
+{-# COMPLETE
+  ModelCardExportJobSortOrder_Ascending,
+  ModelCardExportJobSortOrder_Descending,
+  ModelCardExportJobSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardExportJobStatus.hs b/gen/Amazonka/SageMaker/Types/ModelCardExportJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardExportJobStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardExportJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardExportJobStatus
+  ( ModelCardExportJobStatus
+      ( ..,
+        ModelCardExportJobStatus_Completed,
+        ModelCardExportJobStatus_Failed,
+        ModelCardExportJobStatus_InProgress
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardExportJobStatus = ModelCardExportJobStatus'
+  { fromModelCardExportJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardExportJobStatus_Completed :: ModelCardExportJobStatus
+pattern ModelCardExportJobStatus_Completed = ModelCardExportJobStatus' "Completed"
+
+pattern ModelCardExportJobStatus_Failed :: ModelCardExportJobStatus
+pattern ModelCardExportJobStatus_Failed = ModelCardExportJobStatus' "Failed"
+
+pattern ModelCardExportJobStatus_InProgress :: ModelCardExportJobStatus
+pattern ModelCardExportJobStatus_InProgress = ModelCardExportJobStatus' "InProgress"
+
+{-# COMPLETE
+  ModelCardExportJobStatus_Completed,
+  ModelCardExportJobStatus_Failed,
+  ModelCardExportJobStatus_InProgress,
+  ModelCardExportJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardExportJobSummary.hs b/gen/Amazonka/SageMaker/Types/ModelCardExportJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardExportJobSummary.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCardExportJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardExportJobSummary 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 Amazonka.SageMaker.Types.ModelCardExportJobStatus
+
+-- | The summary of the Amazon SageMaker Model Card export job.
+--
+-- /See:/ 'newModelCardExportJobSummary' smart constructor.
+data ModelCardExportJobSummary = ModelCardExportJobSummary'
+  { -- | The name of the model card export job.
+    modelCardExportJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model card export job.
+    modelCardExportJobArn :: Prelude.Text,
+    -- | The completion status of the model card export job.
+    status :: ModelCardExportJobStatus,
+    -- | The name of the model card that the export job exports.
+    modelCardName :: Prelude.Text,
+    -- | The version of the model card that the export job exports.
+    modelCardVersion :: Prelude.Int,
+    -- | The date and time that the model card export job was created.
+    createdAt :: Data.POSIX,
+    -- | The date and time that the model card export job was last modified..
+    lastModifiedAt :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCardExportJobSummary' 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:
+--
+-- 'modelCardExportJobName', 'modelCardExportJobSummary_modelCardExportJobName' - The name of the model card export job.
+--
+-- 'modelCardExportJobArn', 'modelCardExportJobSummary_modelCardExportJobArn' - The Amazon Resource Name (ARN) of the model card export job.
+--
+-- 'status', 'modelCardExportJobSummary_status' - The completion status of the model card export job.
+--
+-- 'modelCardName', 'modelCardExportJobSummary_modelCardName' - The name of the model card that the export job exports.
+--
+-- 'modelCardVersion', 'modelCardExportJobSummary_modelCardVersion' - The version of the model card that the export job exports.
+--
+-- 'createdAt', 'modelCardExportJobSummary_createdAt' - The date and time that the model card export job was created.
+--
+-- 'lastModifiedAt', 'modelCardExportJobSummary_lastModifiedAt' - The date and time that the model card export job was last modified..
+newModelCardExportJobSummary ::
+  -- | 'modelCardExportJobName'
+  Prelude.Text ->
+  -- | 'modelCardExportJobArn'
+  Prelude.Text ->
+  -- | 'status'
+  ModelCardExportJobStatus ->
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'modelCardVersion'
+  Prelude.Int ->
+  -- | 'createdAt'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedAt'
+  Prelude.UTCTime ->
+  ModelCardExportJobSummary
+newModelCardExportJobSummary
+  pModelCardExportJobName_
+  pModelCardExportJobArn_
+  pStatus_
+  pModelCardName_
+  pModelCardVersion_
+  pCreatedAt_
+  pLastModifiedAt_ =
+    ModelCardExportJobSummary'
+      { modelCardExportJobName =
+          pModelCardExportJobName_,
+        modelCardExportJobArn = pModelCardExportJobArn_,
+        status = pStatus_,
+        modelCardName = pModelCardName_,
+        modelCardVersion = pModelCardVersion_,
+        createdAt = Data._Time Lens.# pCreatedAt_,
+        lastModifiedAt =
+          Data._Time Lens.# pLastModifiedAt_
+      }
+
+-- | The name of the model card export job.
+modelCardExportJobSummary_modelCardExportJobName :: Lens.Lens' ModelCardExportJobSummary Prelude.Text
+modelCardExportJobSummary_modelCardExportJobName = Lens.lens (\ModelCardExportJobSummary' {modelCardExportJobName} -> modelCardExportJobName) (\s@ModelCardExportJobSummary' {} a -> s {modelCardExportJobName = a} :: ModelCardExportJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the model card export job.
+modelCardExportJobSummary_modelCardExportJobArn :: Lens.Lens' ModelCardExportJobSummary Prelude.Text
+modelCardExportJobSummary_modelCardExportJobArn = Lens.lens (\ModelCardExportJobSummary' {modelCardExportJobArn} -> modelCardExportJobArn) (\s@ModelCardExportJobSummary' {} a -> s {modelCardExportJobArn = a} :: ModelCardExportJobSummary)
+
+-- | The completion status of the model card export job.
+modelCardExportJobSummary_status :: Lens.Lens' ModelCardExportJobSummary ModelCardExportJobStatus
+modelCardExportJobSummary_status = Lens.lens (\ModelCardExportJobSummary' {status} -> status) (\s@ModelCardExportJobSummary' {} a -> s {status = a} :: ModelCardExportJobSummary)
+
+-- | The name of the model card that the export job exports.
+modelCardExportJobSummary_modelCardName :: Lens.Lens' ModelCardExportJobSummary Prelude.Text
+modelCardExportJobSummary_modelCardName = Lens.lens (\ModelCardExportJobSummary' {modelCardName} -> modelCardName) (\s@ModelCardExportJobSummary' {} a -> s {modelCardName = a} :: ModelCardExportJobSummary)
+
+-- | The version of the model card that the export job exports.
+modelCardExportJobSummary_modelCardVersion :: Lens.Lens' ModelCardExportJobSummary Prelude.Int
+modelCardExportJobSummary_modelCardVersion = Lens.lens (\ModelCardExportJobSummary' {modelCardVersion} -> modelCardVersion) (\s@ModelCardExportJobSummary' {} a -> s {modelCardVersion = a} :: ModelCardExportJobSummary)
+
+-- | The date and time that the model card export job was created.
+modelCardExportJobSummary_createdAt :: Lens.Lens' ModelCardExportJobSummary Prelude.UTCTime
+modelCardExportJobSummary_createdAt = Lens.lens (\ModelCardExportJobSummary' {createdAt} -> createdAt) (\s@ModelCardExportJobSummary' {} a -> s {createdAt = a} :: ModelCardExportJobSummary) Prelude.. Data._Time
+
+-- | The date and time that the model card export job was last modified..
+modelCardExportJobSummary_lastModifiedAt :: Lens.Lens' ModelCardExportJobSummary Prelude.UTCTime
+modelCardExportJobSummary_lastModifiedAt = Lens.lens (\ModelCardExportJobSummary' {lastModifiedAt} -> lastModifiedAt) (\s@ModelCardExportJobSummary' {} a -> s {lastModifiedAt = a} :: ModelCardExportJobSummary) Prelude.. Data._Time
+
+instance Data.FromJSON ModelCardExportJobSummary where
+  parseJSON =
+    Data.withObject
+      "ModelCardExportJobSummary"
+      ( \x ->
+          ModelCardExportJobSummary'
+            Prelude.<$> (x Data..: "ModelCardExportJobName")
+            Prelude.<*> (x Data..: "ModelCardExportJobArn")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "ModelCardName")
+            Prelude.<*> (x Data..: "ModelCardVersion")
+            Prelude.<*> (x Data..: "CreatedAt")
+            Prelude.<*> (x Data..: "LastModifiedAt")
+      )
+
+instance Prelude.Hashable ModelCardExportJobSummary where
+  hashWithSalt _salt ModelCardExportJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelCardExportJobName
+      `Prelude.hashWithSalt` modelCardExportJobArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` lastModifiedAt
+
+instance Prelude.NFData ModelCardExportJobSummary where
+  rnf ModelCardExportJobSummary' {..} =
+    Prelude.rnf modelCardExportJobName
+      `Prelude.seq` Prelude.rnf modelCardExportJobArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf lastModifiedAt
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardExportOutputConfig.hs b/gen/Amazonka/SageMaker/Types/ModelCardExportOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardExportOutputConfig.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCardExportOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardExportOutputConfig 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
+
+-- | Configure the export output details for an Amazon SageMaker Model Card.
+--
+-- /See:/ 'newModelCardExportOutputConfig' smart constructor.
+data ModelCardExportOutputConfig = ModelCardExportOutputConfig'
+  { -- | The Amazon S3 output path to export your model card PDF.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCardExportOutputConfig' 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:
+--
+-- 's3OutputPath', 'modelCardExportOutputConfig_s3OutputPath' - The Amazon S3 output path to export your model card PDF.
+newModelCardExportOutputConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  ModelCardExportOutputConfig
+newModelCardExportOutputConfig pS3OutputPath_ =
+  ModelCardExportOutputConfig'
+    { s3OutputPath =
+        pS3OutputPath_
+    }
+
+-- | The Amazon S3 output path to export your model card PDF.
+modelCardExportOutputConfig_s3OutputPath :: Lens.Lens' ModelCardExportOutputConfig Prelude.Text
+modelCardExportOutputConfig_s3OutputPath = Lens.lens (\ModelCardExportOutputConfig' {s3OutputPath} -> s3OutputPath) (\s@ModelCardExportOutputConfig' {} a -> s {s3OutputPath = a} :: ModelCardExportOutputConfig)
+
+instance Data.FromJSON ModelCardExportOutputConfig where
+  parseJSON =
+    Data.withObject
+      "ModelCardExportOutputConfig"
+      ( \x ->
+          ModelCardExportOutputConfig'
+            Prelude.<$> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable ModelCardExportOutputConfig where
+  hashWithSalt _salt ModelCardExportOutputConfig' {..} =
+    _salt `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData ModelCardExportOutputConfig where
+  rnf ModelCardExportOutputConfig' {..} =
+    Prelude.rnf s3OutputPath
+
+instance Data.ToJSON ModelCardExportOutputConfig where
+  toJSON ModelCardExportOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("S3OutputPath" Data..= s3OutputPath)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardProcessingStatus.hs b/gen/Amazonka/SageMaker/Types/ModelCardProcessingStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardProcessingStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardProcessingStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardProcessingStatus
+  ( ModelCardProcessingStatus
+      ( ..,
+        ModelCardProcessingStatus_ContentDeleted,
+        ModelCardProcessingStatus_DeleteCompleted,
+        ModelCardProcessingStatus_DeleteFailed,
+        ModelCardProcessingStatus_DeleteInProgress,
+        ModelCardProcessingStatus_DeletePending,
+        ModelCardProcessingStatus_ExportJobsDeleted
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardProcessingStatus = ModelCardProcessingStatus'
+  { fromModelCardProcessingStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardProcessingStatus_ContentDeleted :: ModelCardProcessingStatus
+pattern ModelCardProcessingStatus_ContentDeleted = ModelCardProcessingStatus' "ContentDeleted"
+
+pattern ModelCardProcessingStatus_DeleteCompleted :: ModelCardProcessingStatus
+pattern ModelCardProcessingStatus_DeleteCompleted = ModelCardProcessingStatus' "DeleteCompleted"
+
+pattern ModelCardProcessingStatus_DeleteFailed :: ModelCardProcessingStatus
+pattern ModelCardProcessingStatus_DeleteFailed = ModelCardProcessingStatus' "DeleteFailed"
+
+pattern ModelCardProcessingStatus_DeleteInProgress :: ModelCardProcessingStatus
+pattern ModelCardProcessingStatus_DeleteInProgress = ModelCardProcessingStatus' "DeleteInProgress"
+
+pattern ModelCardProcessingStatus_DeletePending :: ModelCardProcessingStatus
+pattern ModelCardProcessingStatus_DeletePending = ModelCardProcessingStatus' "DeletePending"
+
+pattern ModelCardProcessingStatus_ExportJobsDeleted :: ModelCardProcessingStatus
+pattern ModelCardProcessingStatus_ExportJobsDeleted = ModelCardProcessingStatus' "ExportJobsDeleted"
+
+{-# COMPLETE
+  ModelCardProcessingStatus_ContentDeleted,
+  ModelCardProcessingStatus_DeleteCompleted,
+  ModelCardProcessingStatus_DeleteFailed,
+  ModelCardProcessingStatus_DeleteInProgress,
+  ModelCardProcessingStatus_DeletePending,
+  ModelCardProcessingStatus_ExportJobsDeleted,
+  ModelCardProcessingStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardSecurityConfig.hs b/gen/Amazonka/SageMaker/Types/ModelCardSecurityConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardSecurityConfig.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCardSecurityConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardSecurityConfig 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
+
+-- | Configure the security settings to protect model card data.
+--
+-- /See:/ 'newModelCardSecurityConfig' smart constructor.
+data ModelCardSecurityConfig = ModelCardSecurityConfig'
+  { -- | A Key Management Service
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id key ID>
+    -- to use for encrypting a model card.
+    kmsKeyId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCardSecurityConfig' 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:
+--
+-- 'kmsKeyId', 'modelCardSecurityConfig_kmsKeyId' - A Key Management Service
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id key ID>
+-- to use for encrypting a model card.
+newModelCardSecurityConfig ::
+  ModelCardSecurityConfig
+newModelCardSecurityConfig =
+  ModelCardSecurityConfig'
+    { kmsKeyId =
+        Prelude.Nothing
+    }
+
+-- | A Key Management Service
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id key ID>
+-- to use for encrypting a model card.
+modelCardSecurityConfig_kmsKeyId :: Lens.Lens' ModelCardSecurityConfig (Prelude.Maybe Prelude.Text)
+modelCardSecurityConfig_kmsKeyId = Lens.lens (\ModelCardSecurityConfig' {kmsKeyId} -> kmsKeyId) (\s@ModelCardSecurityConfig' {} a -> s {kmsKeyId = a} :: ModelCardSecurityConfig)
+
+instance Data.FromJSON ModelCardSecurityConfig where
+  parseJSON =
+    Data.withObject
+      "ModelCardSecurityConfig"
+      ( \x ->
+          ModelCardSecurityConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+      )
+
+instance Prelude.Hashable ModelCardSecurityConfig where
+  hashWithSalt _salt ModelCardSecurityConfig' {..} =
+    _salt `Prelude.hashWithSalt` kmsKeyId
+
+instance Prelude.NFData ModelCardSecurityConfig where
+  rnf ModelCardSecurityConfig' {..} =
+    Prelude.rnf kmsKeyId
+
+instance Data.ToJSON ModelCardSecurityConfig where
+  toJSON ModelCardSecurityConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("KmsKeyId" Data..=) Prelude.<$> kmsKeyId]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardSortBy.hs b/gen/Amazonka/SageMaker/Types/ModelCardSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardSortBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardSortBy
+  ( ModelCardSortBy
+      ( ..,
+        ModelCardSortBy_CreationTime,
+        ModelCardSortBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardSortBy = ModelCardSortBy'
+  { fromModelCardSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardSortBy_CreationTime :: ModelCardSortBy
+pattern ModelCardSortBy_CreationTime = ModelCardSortBy' "CreationTime"
+
+pattern ModelCardSortBy_Name :: ModelCardSortBy
+pattern ModelCardSortBy_Name = ModelCardSortBy' "Name"
+
+{-# COMPLETE
+  ModelCardSortBy_CreationTime,
+  ModelCardSortBy_Name,
+  ModelCardSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardSortOrder.hs b/gen/Amazonka/SageMaker/Types/ModelCardSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardSortOrder
+  ( ModelCardSortOrder
+      ( ..,
+        ModelCardSortOrder_Ascending,
+        ModelCardSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardSortOrder = ModelCardSortOrder'
+  { fromModelCardSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardSortOrder_Ascending :: ModelCardSortOrder
+pattern ModelCardSortOrder_Ascending = ModelCardSortOrder' "Ascending"
+
+pattern ModelCardSortOrder_Descending :: ModelCardSortOrder
+pattern ModelCardSortOrder_Descending = ModelCardSortOrder' "Descending"
+
+{-# COMPLETE
+  ModelCardSortOrder_Ascending,
+  ModelCardSortOrder_Descending,
+  ModelCardSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardStatus.hs b/gen/Amazonka/SageMaker/Types/ModelCardStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardStatus
+  ( ModelCardStatus
+      ( ..,
+        ModelCardStatus_Approved,
+        ModelCardStatus_Archived,
+        ModelCardStatus_Draft,
+        ModelCardStatus_PendingReview
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardStatus = ModelCardStatus'
+  { fromModelCardStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardStatus_Approved :: ModelCardStatus
+pattern ModelCardStatus_Approved = ModelCardStatus' "Approved"
+
+pattern ModelCardStatus_Archived :: ModelCardStatus
+pattern ModelCardStatus_Archived = ModelCardStatus' "Archived"
+
+pattern ModelCardStatus_Draft :: ModelCardStatus
+pattern ModelCardStatus_Draft = ModelCardStatus' "Draft"
+
+pattern ModelCardStatus_PendingReview :: ModelCardStatus
+pattern ModelCardStatus_PendingReview = ModelCardStatus' "PendingReview"
+
+{-# COMPLETE
+  ModelCardStatus_Approved,
+  ModelCardStatus_Archived,
+  ModelCardStatus_Draft,
+  ModelCardStatus_PendingReview,
+  ModelCardStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardSummary.hs b/gen/Amazonka/SageMaker/Types/ModelCardSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardSummary.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCardSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardSummary 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 Amazonka.SageMaker.Types.ModelCardStatus
+
+-- | A summary of the model card.
+--
+-- /See:/ 'newModelCardSummary' smart constructor.
+data ModelCardSummary = ModelCardSummary'
+  { -- | The date and time that the model card was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the model card.
+    modelCardName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model card.
+    modelCardArn :: Prelude.Text,
+    -- | The approval status of the model card within your organization.
+    -- Different organizations might have different criteria for model card
+    -- review and approval.
+    --
+    -- -   @Draft@: The model card is a work in progress.
+    --
+    -- -   @PendingReview@: The model card is pending review.
+    --
+    -- -   @Approved@: The model card is approved.
+    --
+    -- -   @Archived@: The model card is archived. No more updates should be
+    --     made to the model card, but it can still be exported.
+    modelCardStatus :: ModelCardStatus,
+    -- | The date and time that the model card was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCardSummary' 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:
+--
+-- 'lastModifiedTime', 'modelCardSummary_lastModifiedTime' - The date and time that the model card was last modified.
+--
+-- 'modelCardName', 'modelCardSummary_modelCardName' - The name of the model card.
+--
+-- 'modelCardArn', 'modelCardSummary_modelCardArn' - The Amazon Resource Name (ARN) of the model card.
+--
+-- 'modelCardStatus', 'modelCardSummary_modelCardStatus' - The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+--
+-- 'creationTime', 'modelCardSummary_creationTime' - The date and time that the model card was created.
+newModelCardSummary ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'modelCardArn'
+  Prelude.Text ->
+  -- | 'modelCardStatus'
+  ModelCardStatus ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  ModelCardSummary
+newModelCardSummary
+  pModelCardName_
+  pModelCardArn_
+  pModelCardStatus_
+  pCreationTime_ =
+    ModelCardSummary'
+      { lastModifiedTime =
+          Prelude.Nothing,
+        modelCardName = pModelCardName_,
+        modelCardArn = pModelCardArn_,
+        modelCardStatus = pModelCardStatus_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The date and time that the model card was last modified.
+modelCardSummary_lastModifiedTime :: Lens.Lens' ModelCardSummary (Prelude.Maybe Prelude.UTCTime)
+modelCardSummary_lastModifiedTime = Lens.lens (\ModelCardSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ModelCardSummary' {} a -> s {lastModifiedTime = a} :: ModelCardSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the model card.
+modelCardSummary_modelCardName :: Lens.Lens' ModelCardSummary Prelude.Text
+modelCardSummary_modelCardName = Lens.lens (\ModelCardSummary' {modelCardName} -> modelCardName) (\s@ModelCardSummary' {} a -> s {modelCardName = a} :: ModelCardSummary)
+
+-- | The Amazon Resource Name (ARN) of the model card.
+modelCardSummary_modelCardArn :: Lens.Lens' ModelCardSummary Prelude.Text
+modelCardSummary_modelCardArn = Lens.lens (\ModelCardSummary' {modelCardArn} -> modelCardArn) (\s@ModelCardSummary' {} a -> s {modelCardArn = a} :: ModelCardSummary)
+
+-- | The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+modelCardSummary_modelCardStatus :: Lens.Lens' ModelCardSummary ModelCardStatus
+modelCardSummary_modelCardStatus = Lens.lens (\ModelCardSummary' {modelCardStatus} -> modelCardStatus) (\s@ModelCardSummary' {} a -> s {modelCardStatus = a} :: ModelCardSummary)
+
+-- | The date and time that the model card was created.
+modelCardSummary_creationTime :: Lens.Lens' ModelCardSummary Prelude.UTCTime
+modelCardSummary_creationTime = Lens.lens (\ModelCardSummary' {creationTime} -> creationTime) (\s@ModelCardSummary' {} a -> s {creationTime = a} :: ModelCardSummary) Prelude.. Data._Time
+
+instance Data.FromJSON ModelCardSummary where
+  parseJSON =
+    Data.withObject
+      "ModelCardSummary"
+      ( \x ->
+          ModelCardSummary'
+            Prelude.<$> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..: "ModelCardName")
+            Prelude.<*> (x Data..: "ModelCardArn")
+            Prelude.<*> (x Data..: "ModelCardStatus")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable ModelCardSummary where
+  hashWithSalt _salt ModelCardSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` modelCardArn
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData ModelCardSummary where
+  rnf ModelCardSummary' {..} =
+    Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardArn
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardVersionSortBy.hs b/gen/Amazonka/SageMaker/Types/ModelCardVersionSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardVersionSortBy.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelCardVersionSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardVersionSortBy
+  ( ModelCardVersionSortBy
+      ( ..,
+        ModelCardVersionSortBy_Version
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelCardVersionSortBy = ModelCardVersionSortBy'
+  { fromModelCardVersionSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelCardVersionSortBy_Version :: ModelCardVersionSortBy
+pattern ModelCardVersionSortBy_Version = ModelCardVersionSortBy' "Version"
+
+{-# COMPLETE
+  ModelCardVersionSortBy_Version,
+  ModelCardVersionSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelCardVersionSummary.hs b/gen/Amazonka/SageMaker/Types/ModelCardVersionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelCardVersionSummary.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelCardVersionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelCardVersionSummary 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 Amazonka.SageMaker.Types.ModelCardStatus
+
+-- | A summary of a specific version of the model card.
+--
+-- /See:/ 'newModelCardVersionSummary' smart constructor.
+data ModelCardVersionSummary = ModelCardVersionSummary'
+  { -- | The time date and time that the model card version was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the model card.
+    modelCardName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model card.
+    modelCardArn :: Prelude.Text,
+    -- | The approval status of the model card version within your organization.
+    -- Different organizations might have different criteria for model card
+    -- review and approval.
+    --
+    -- -   @Draft@: The model card is a work in progress.
+    --
+    -- -   @PendingReview@: The model card is pending review.
+    --
+    -- -   @Approved@: The model card is approved.
+    --
+    -- -   @Archived@: The model card is archived. No more updates should be
+    --     made to the model card, but it can still be exported.
+    modelCardStatus :: ModelCardStatus,
+    -- | A version of the model card.
+    modelCardVersion :: Prelude.Int,
+    -- | The date and time that the model card version was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelCardVersionSummary' 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:
+--
+-- 'lastModifiedTime', 'modelCardVersionSummary_lastModifiedTime' - The time date and time that the model card version was last modified.
+--
+-- 'modelCardName', 'modelCardVersionSummary_modelCardName' - The name of the model card.
+--
+-- 'modelCardArn', 'modelCardVersionSummary_modelCardArn' - The Amazon Resource Name (ARN) of the model card.
+--
+-- 'modelCardStatus', 'modelCardVersionSummary_modelCardStatus' - The approval status of the model card version within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+--
+-- 'modelCardVersion', 'modelCardVersionSummary_modelCardVersion' - A version of the model card.
+--
+-- 'creationTime', 'modelCardVersionSummary_creationTime' - The date and time that the model card version was created.
+newModelCardVersionSummary ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  -- | 'modelCardArn'
+  Prelude.Text ->
+  -- | 'modelCardStatus'
+  ModelCardStatus ->
+  -- | 'modelCardVersion'
+  Prelude.Int ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  ModelCardVersionSummary
+newModelCardVersionSummary
+  pModelCardName_
+  pModelCardArn_
+  pModelCardStatus_
+  pModelCardVersion_
+  pCreationTime_ =
+    ModelCardVersionSummary'
+      { lastModifiedTime =
+          Prelude.Nothing,
+        modelCardName = pModelCardName_,
+        modelCardArn = pModelCardArn_,
+        modelCardStatus = pModelCardStatus_,
+        modelCardVersion = pModelCardVersion_,
+        creationTime = Data._Time Lens.# pCreationTime_
+      }
+
+-- | The time date and time that the model card version was last modified.
+modelCardVersionSummary_lastModifiedTime :: Lens.Lens' ModelCardVersionSummary (Prelude.Maybe Prelude.UTCTime)
+modelCardVersionSummary_lastModifiedTime = Lens.lens (\ModelCardVersionSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ModelCardVersionSummary' {} a -> s {lastModifiedTime = a} :: ModelCardVersionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the model card.
+modelCardVersionSummary_modelCardName :: Lens.Lens' ModelCardVersionSummary Prelude.Text
+modelCardVersionSummary_modelCardName = Lens.lens (\ModelCardVersionSummary' {modelCardName} -> modelCardName) (\s@ModelCardVersionSummary' {} a -> s {modelCardName = a} :: ModelCardVersionSummary)
+
+-- | The Amazon Resource Name (ARN) of the model card.
+modelCardVersionSummary_modelCardArn :: Lens.Lens' ModelCardVersionSummary Prelude.Text
+modelCardVersionSummary_modelCardArn = Lens.lens (\ModelCardVersionSummary' {modelCardArn} -> modelCardArn) (\s@ModelCardVersionSummary' {} a -> s {modelCardArn = a} :: ModelCardVersionSummary)
+
+-- | The approval status of the model card version within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+modelCardVersionSummary_modelCardStatus :: Lens.Lens' ModelCardVersionSummary ModelCardStatus
+modelCardVersionSummary_modelCardStatus = Lens.lens (\ModelCardVersionSummary' {modelCardStatus} -> modelCardStatus) (\s@ModelCardVersionSummary' {} a -> s {modelCardStatus = a} :: ModelCardVersionSummary)
+
+-- | A version of the model card.
+modelCardVersionSummary_modelCardVersion :: Lens.Lens' ModelCardVersionSummary Prelude.Int
+modelCardVersionSummary_modelCardVersion = Lens.lens (\ModelCardVersionSummary' {modelCardVersion} -> modelCardVersion) (\s@ModelCardVersionSummary' {} a -> s {modelCardVersion = a} :: ModelCardVersionSummary)
+
+-- | The date and time that the model card version was created.
+modelCardVersionSummary_creationTime :: Lens.Lens' ModelCardVersionSummary Prelude.UTCTime
+modelCardVersionSummary_creationTime = Lens.lens (\ModelCardVersionSummary' {creationTime} -> creationTime) (\s@ModelCardVersionSummary' {} a -> s {creationTime = a} :: ModelCardVersionSummary) Prelude.. Data._Time
+
+instance Data.FromJSON ModelCardVersionSummary where
+  parseJSON =
+    Data.withObject
+      "ModelCardVersionSummary"
+      ( \x ->
+          ModelCardVersionSummary'
+            Prelude.<$> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..: "ModelCardName")
+            Prelude.<*> (x Data..: "ModelCardArn")
+            Prelude.<*> (x Data..: "ModelCardStatus")
+            Prelude.<*> (x Data..: "ModelCardVersion")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable ModelCardVersionSummary where
+  hashWithSalt _salt ModelCardVersionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` modelCardArn
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData ModelCardVersionSummary where
+  rnf ModelCardVersionSummary' {..} =
+    Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardArn
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/ModelClientConfig.hs b/gen/Amazonka/SageMaker/Types/ModelClientConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelClientConfig.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelClientConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelClientConfig 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
+
+-- | Configures the timeout and maximum number of retries for processing a
+-- transform job invocation.
+--
+-- /See:/ 'newModelClientConfig' smart constructor.
+data ModelClientConfig = ModelClientConfig'
+  { -- | The maximum number of retries when invocation requests are failing. The
+    -- default value is 3.
+    invocationsMaxRetries :: Prelude.Maybe Prelude.Natural,
+    -- | The timeout value in seconds for an invocation request. The default
+    -- value is 600.
+    invocationsTimeoutInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelClientConfig' 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:
+--
+-- 'invocationsMaxRetries', 'modelClientConfig_invocationsMaxRetries' - The maximum number of retries when invocation requests are failing. The
+-- default value is 3.
+--
+-- 'invocationsTimeoutInSeconds', 'modelClientConfig_invocationsTimeoutInSeconds' - The timeout value in seconds for an invocation request. The default
+-- value is 600.
+newModelClientConfig ::
+  ModelClientConfig
+newModelClientConfig =
+  ModelClientConfig'
+    { invocationsMaxRetries =
+        Prelude.Nothing,
+      invocationsTimeoutInSeconds = Prelude.Nothing
+    }
+
+-- | The maximum number of retries when invocation requests are failing. The
+-- default value is 3.
+modelClientConfig_invocationsMaxRetries :: Lens.Lens' ModelClientConfig (Prelude.Maybe Prelude.Natural)
+modelClientConfig_invocationsMaxRetries = Lens.lens (\ModelClientConfig' {invocationsMaxRetries} -> invocationsMaxRetries) (\s@ModelClientConfig' {} a -> s {invocationsMaxRetries = a} :: ModelClientConfig)
+
+-- | The timeout value in seconds for an invocation request. The default
+-- value is 600.
+modelClientConfig_invocationsTimeoutInSeconds :: Lens.Lens' ModelClientConfig (Prelude.Maybe Prelude.Natural)
+modelClientConfig_invocationsTimeoutInSeconds = Lens.lens (\ModelClientConfig' {invocationsTimeoutInSeconds} -> invocationsTimeoutInSeconds) (\s@ModelClientConfig' {} a -> s {invocationsTimeoutInSeconds = a} :: ModelClientConfig)
+
+instance Data.FromJSON ModelClientConfig where
+  parseJSON =
+    Data.withObject
+      "ModelClientConfig"
+      ( \x ->
+          ModelClientConfig'
+            Prelude.<$> (x Data..:? "InvocationsMaxRetries")
+            Prelude.<*> (x Data..:? "InvocationsTimeoutInSeconds")
+      )
+
+instance Prelude.Hashable ModelClientConfig where
+  hashWithSalt _salt ModelClientConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` invocationsMaxRetries
+      `Prelude.hashWithSalt` invocationsTimeoutInSeconds
+
+instance Prelude.NFData ModelClientConfig where
+  rnf ModelClientConfig' {..} =
+    Prelude.rnf invocationsMaxRetries
+      `Prelude.seq` Prelude.rnf invocationsTimeoutInSeconds
+
+instance Data.ToJSON ModelClientConfig where
+  toJSON ModelClientConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InvocationsMaxRetries" Data..=)
+              Prelude.<$> invocationsMaxRetries,
+            ("InvocationsTimeoutInSeconds" Data..=)
+              Prelude.<$> invocationsTimeoutInSeconds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelConfiguration.hs b/gen/Amazonka/SageMaker/Types/ModelConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelConfiguration.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelConfiguration 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 Amazonka.SageMaker.Types.EnvironmentParameter
+
+-- | Defines the model configuration. Includes the specification name and
+-- environment parameters.
+--
+-- /See:/ 'newModelConfiguration' smart constructor.
+data ModelConfiguration = ModelConfiguration'
+  { -- | Defines the environment parameters that includes key, value types, and
+    -- values.
+    environmentParameters :: Prelude.Maybe (Prelude.NonEmpty EnvironmentParameter),
+    -- | The inference specification name in the model package version.
+    inferenceSpecificationName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelConfiguration' 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:
+--
+-- 'environmentParameters', 'modelConfiguration_environmentParameters' - Defines the environment parameters that includes key, value types, and
+-- values.
+--
+-- 'inferenceSpecificationName', 'modelConfiguration_inferenceSpecificationName' - The inference specification name in the model package version.
+newModelConfiguration ::
+  ModelConfiguration
+newModelConfiguration =
+  ModelConfiguration'
+    { environmentParameters =
+        Prelude.Nothing,
+      inferenceSpecificationName = Prelude.Nothing
+    }
+
+-- | Defines the environment parameters that includes key, value types, and
+-- values.
+modelConfiguration_environmentParameters :: Lens.Lens' ModelConfiguration (Prelude.Maybe (Prelude.NonEmpty EnvironmentParameter))
+modelConfiguration_environmentParameters = Lens.lens (\ModelConfiguration' {environmentParameters} -> environmentParameters) (\s@ModelConfiguration' {} a -> s {environmentParameters = a} :: ModelConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The inference specification name in the model package version.
+modelConfiguration_inferenceSpecificationName :: Lens.Lens' ModelConfiguration (Prelude.Maybe Prelude.Text)
+modelConfiguration_inferenceSpecificationName = Lens.lens (\ModelConfiguration' {inferenceSpecificationName} -> inferenceSpecificationName) (\s@ModelConfiguration' {} a -> s {inferenceSpecificationName = a} :: ModelConfiguration)
+
+instance Data.FromJSON ModelConfiguration where
+  parseJSON =
+    Data.withObject
+      "ModelConfiguration"
+      ( \x ->
+          ModelConfiguration'
+            Prelude.<$> (x Data..:? "EnvironmentParameters")
+            Prelude.<*> (x Data..:? "InferenceSpecificationName")
+      )
+
+instance Prelude.Hashable ModelConfiguration where
+  hashWithSalt _salt ModelConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` environmentParameters
+      `Prelude.hashWithSalt` inferenceSpecificationName
+
+instance Prelude.NFData ModelConfiguration where
+  rnf ModelConfiguration' {..} =
+    Prelude.rnf environmentParameters
+      `Prelude.seq` Prelude.rnf inferenceSpecificationName
diff --git a/gen/Amazonka/SageMaker/Types/ModelDashboardEndpoint.hs b/gen/Amazonka/SageMaker/Types/ModelDashboardEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDashboardEndpoint.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDashboardEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDashboardEndpoint 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 Amazonka.SageMaker.Types.EndpointStatus
+
+-- | An endpoint that hosts a model displayed in the Amazon SageMaker Model
+-- Dashboard.
+--
+-- /See:/ 'newModelDashboardEndpoint' smart constructor.
+data ModelDashboardEndpoint = ModelDashboardEndpoint'
+  { -- | The endpoint name.
+    endpointName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the endpoint.
+    endpointArn :: Prelude.Text,
+    -- | A timestamp that indicates when the endpoint was created.
+    creationTime :: Data.POSIX,
+    -- | The last time the endpoint was modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The endpoint status.
+    endpointStatus :: EndpointStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDashboardEndpoint' 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:
+--
+-- 'endpointName', 'modelDashboardEndpoint_endpointName' - The endpoint name.
+--
+-- 'endpointArn', 'modelDashboardEndpoint_endpointArn' - The Amazon Resource Name (ARN) of the endpoint.
+--
+-- 'creationTime', 'modelDashboardEndpoint_creationTime' - A timestamp that indicates when the endpoint was created.
+--
+-- 'lastModifiedTime', 'modelDashboardEndpoint_lastModifiedTime' - The last time the endpoint was modified.
+--
+-- 'endpointStatus', 'modelDashboardEndpoint_endpointStatus' - The endpoint status.
+newModelDashboardEndpoint ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'endpointStatus'
+  EndpointStatus ->
+  ModelDashboardEndpoint
+newModelDashboardEndpoint
+  pEndpointName_
+  pEndpointArn_
+  pCreationTime_
+  pLastModifiedTime_
+  pEndpointStatus_ =
+    ModelDashboardEndpoint'
+      { endpointName =
+          pEndpointName_,
+        endpointArn = pEndpointArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        endpointStatus = pEndpointStatus_
+      }
+
+-- | The endpoint name.
+modelDashboardEndpoint_endpointName :: Lens.Lens' ModelDashboardEndpoint Prelude.Text
+modelDashboardEndpoint_endpointName = Lens.lens (\ModelDashboardEndpoint' {endpointName} -> endpointName) (\s@ModelDashboardEndpoint' {} a -> s {endpointName = a} :: ModelDashboardEndpoint)
+
+-- | The Amazon Resource Name (ARN) of the endpoint.
+modelDashboardEndpoint_endpointArn :: Lens.Lens' ModelDashboardEndpoint Prelude.Text
+modelDashboardEndpoint_endpointArn = Lens.lens (\ModelDashboardEndpoint' {endpointArn} -> endpointArn) (\s@ModelDashboardEndpoint' {} a -> s {endpointArn = a} :: ModelDashboardEndpoint)
+
+-- | A timestamp that indicates when the endpoint was created.
+modelDashboardEndpoint_creationTime :: Lens.Lens' ModelDashboardEndpoint Prelude.UTCTime
+modelDashboardEndpoint_creationTime = Lens.lens (\ModelDashboardEndpoint' {creationTime} -> creationTime) (\s@ModelDashboardEndpoint' {} a -> s {creationTime = a} :: ModelDashboardEndpoint) Prelude.. Data._Time
+
+-- | The last time the endpoint was modified.
+modelDashboardEndpoint_lastModifiedTime :: Lens.Lens' ModelDashboardEndpoint Prelude.UTCTime
+modelDashboardEndpoint_lastModifiedTime = Lens.lens (\ModelDashboardEndpoint' {lastModifiedTime} -> lastModifiedTime) (\s@ModelDashboardEndpoint' {} a -> s {lastModifiedTime = a} :: ModelDashboardEndpoint) Prelude.. Data._Time
+
+-- | The endpoint status.
+modelDashboardEndpoint_endpointStatus :: Lens.Lens' ModelDashboardEndpoint EndpointStatus
+modelDashboardEndpoint_endpointStatus = Lens.lens (\ModelDashboardEndpoint' {endpointStatus} -> endpointStatus) (\s@ModelDashboardEndpoint' {} a -> s {endpointStatus = a} :: ModelDashboardEndpoint)
+
+instance Data.FromJSON ModelDashboardEndpoint where
+  parseJSON =
+    Data.withObject
+      "ModelDashboardEndpoint"
+      ( \x ->
+          ModelDashboardEndpoint'
+            Prelude.<$> (x Data..: "EndpointName")
+            Prelude.<*> (x Data..: "EndpointArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "EndpointStatus")
+      )
+
+instance Prelude.Hashable ModelDashboardEndpoint where
+  hashWithSalt _salt ModelDashboardEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` endpointArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` endpointStatus
+
+instance Prelude.NFData ModelDashboardEndpoint where
+  rnf ModelDashboardEndpoint' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf endpointArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf endpointStatus
diff --git a/gen/Amazonka/SageMaker/Types/ModelDashboardIndicatorAction.hs b/gen/Amazonka/SageMaker/Types/ModelDashboardIndicatorAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDashboardIndicatorAction.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDashboardIndicatorAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDashboardIndicatorAction 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
+
+-- | An alert action taken to light up an icon on the Amazon SageMaker Model
+-- Dashboard when an alert goes into @InAlert@ status.
+--
+-- /See:/ 'newModelDashboardIndicatorAction' smart constructor.
+data ModelDashboardIndicatorAction = ModelDashboardIndicatorAction'
+  { -- | Indicates whether the alert action is turned on.
+    enabled :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDashboardIndicatorAction' 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:
+--
+-- 'enabled', 'modelDashboardIndicatorAction_enabled' - Indicates whether the alert action is turned on.
+newModelDashboardIndicatorAction ::
+  ModelDashboardIndicatorAction
+newModelDashboardIndicatorAction =
+  ModelDashboardIndicatorAction'
+    { enabled =
+        Prelude.Nothing
+    }
+
+-- | Indicates whether the alert action is turned on.
+modelDashboardIndicatorAction_enabled :: Lens.Lens' ModelDashboardIndicatorAction (Prelude.Maybe Prelude.Bool)
+modelDashboardIndicatorAction_enabled = Lens.lens (\ModelDashboardIndicatorAction' {enabled} -> enabled) (\s@ModelDashboardIndicatorAction' {} a -> s {enabled = a} :: ModelDashboardIndicatorAction)
+
+instance Data.FromJSON ModelDashboardIndicatorAction where
+  parseJSON =
+    Data.withObject
+      "ModelDashboardIndicatorAction"
+      ( \x ->
+          ModelDashboardIndicatorAction'
+            Prelude.<$> (x Data..:? "Enabled")
+      )
+
+instance
+  Prelude.Hashable
+    ModelDashboardIndicatorAction
+  where
+  hashWithSalt _salt ModelDashboardIndicatorAction' {..} =
+    _salt `Prelude.hashWithSalt` enabled
+
+instance Prelude.NFData ModelDashboardIndicatorAction where
+  rnf ModelDashboardIndicatorAction' {..} =
+    Prelude.rnf enabled
diff --git a/gen/Amazonka/SageMaker/Types/ModelDashboardModel.hs b/gen/Amazonka/SageMaker/Types/ModelDashboardModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDashboardModel.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDashboardModel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDashboardModel 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 Amazonka.SageMaker.Types.Model
+import Amazonka.SageMaker.Types.ModelDashboardEndpoint
+import Amazonka.SageMaker.Types.ModelDashboardModelCard
+import Amazonka.SageMaker.Types.ModelDashboardMonitoringSchedule
+import Amazonka.SageMaker.Types.TransformJob
+
+-- | A model displayed in the Amazon SageMaker Model Dashboard.
+--
+-- /See:/ 'newModelDashboardModel' smart constructor.
+data ModelDashboardModel = ModelDashboardModel'
+  { -- | The endpoints that host a model.
+    endpoints :: Prelude.Maybe [ModelDashboardEndpoint],
+    lastBatchTransformJob :: Prelude.Maybe TransformJob,
+    -- | A model displayed in the Model Dashboard.
+    model :: Prelude.Maybe Model,
+    -- | The model card for a model.
+    modelCard :: Prelude.Maybe ModelDashboardModelCard,
+    -- | The monitoring schedules for a model.
+    monitoringSchedules :: Prelude.Maybe [ModelDashboardMonitoringSchedule]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDashboardModel' 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:
+--
+-- 'endpoints', 'modelDashboardModel_endpoints' - The endpoints that host a model.
+--
+-- 'lastBatchTransformJob', 'modelDashboardModel_lastBatchTransformJob' - Undocumented member.
+--
+-- 'model', 'modelDashboardModel_model' - A model displayed in the Model Dashboard.
+--
+-- 'modelCard', 'modelDashboardModel_modelCard' - The model card for a model.
+--
+-- 'monitoringSchedules', 'modelDashboardModel_monitoringSchedules' - The monitoring schedules for a model.
+newModelDashboardModel ::
+  ModelDashboardModel
+newModelDashboardModel =
+  ModelDashboardModel'
+    { endpoints = Prelude.Nothing,
+      lastBatchTransformJob = Prelude.Nothing,
+      model = Prelude.Nothing,
+      modelCard = Prelude.Nothing,
+      monitoringSchedules = Prelude.Nothing
+    }
+
+-- | The endpoints that host a model.
+modelDashboardModel_endpoints :: Lens.Lens' ModelDashboardModel (Prelude.Maybe [ModelDashboardEndpoint])
+modelDashboardModel_endpoints = Lens.lens (\ModelDashboardModel' {endpoints} -> endpoints) (\s@ModelDashboardModel' {} a -> s {endpoints = a} :: ModelDashboardModel) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+modelDashboardModel_lastBatchTransformJob :: Lens.Lens' ModelDashboardModel (Prelude.Maybe TransformJob)
+modelDashboardModel_lastBatchTransformJob = Lens.lens (\ModelDashboardModel' {lastBatchTransformJob} -> lastBatchTransformJob) (\s@ModelDashboardModel' {} a -> s {lastBatchTransformJob = a} :: ModelDashboardModel)
+
+-- | A model displayed in the Model Dashboard.
+modelDashboardModel_model :: Lens.Lens' ModelDashboardModel (Prelude.Maybe Model)
+modelDashboardModel_model = Lens.lens (\ModelDashboardModel' {model} -> model) (\s@ModelDashboardModel' {} a -> s {model = a} :: ModelDashboardModel)
+
+-- | The model card for a model.
+modelDashboardModel_modelCard :: Lens.Lens' ModelDashboardModel (Prelude.Maybe ModelDashboardModelCard)
+modelDashboardModel_modelCard = Lens.lens (\ModelDashboardModel' {modelCard} -> modelCard) (\s@ModelDashboardModel' {} a -> s {modelCard = a} :: ModelDashboardModel)
+
+-- | The monitoring schedules for a model.
+modelDashboardModel_monitoringSchedules :: Lens.Lens' ModelDashboardModel (Prelude.Maybe [ModelDashboardMonitoringSchedule])
+modelDashboardModel_monitoringSchedules = Lens.lens (\ModelDashboardModel' {monitoringSchedules} -> monitoringSchedules) (\s@ModelDashboardModel' {} a -> s {monitoringSchedules = a} :: ModelDashboardModel) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ModelDashboardModel where
+  parseJSON =
+    Data.withObject
+      "ModelDashboardModel"
+      ( \x ->
+          ModelDashboardModel'
+            Prelude.<$> (x Data..:? "Endpoints" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LastBatchTransformJob")
+            Prelude.<*> (x Data..:? "Model")
+            Prelude.<*> (x Data..:? "ModelCard")
+            Prelude.<*> ( x
+                            Data..:? "MonitoringSchedules"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ModelDashboardModel where
+  hashWithSalt _salt ModelDashboardModel' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpoints
+      `Prelude.hashWithSalt` lastBatchTransformJob
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` modelCard
+      `Prelude.hashWithSalt` monitoringSchedules
+
+instance Prelude.NFData ModelDashboardModel where
+  rnf ModelDashboardModel' {..} =
+    Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf lastBatchTransformJob
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf modelCard
+      `Prelude.seq` Prelude.rnf monitoringSchedules
diff --git a/gen/Amazonka/SageMaker/Types/ModelDashboardModelCard.hs b/gen/Amazonka/SageMaker/Types/ModelDashboardModelCard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDashboardModelCard.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDashboardModelCard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDashboardModelCard 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 Amazonka.SageMaker.Types.ModelCardSecurityConfig
+import Amazonka.SageMaker.Types.ModelCardStatus
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | The model card for a model displayed in the Amazon SageMaker Model
+-- Dashboard.
+--
+-- /See:/ 'newModelDashboardModelCard' smart constructor.
+data ModelDashboardModelCard = ModelDashboardModelCard'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | A timestamp that indicates when the model card was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | A timestamp that indicates when the model card was last updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) for a model card.
+    modelCardArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of a model card.
+    modelCardName :: Prelude.Maybe Prelude.Text,
+    -- | The model card status.
+    modelCardStatus :: Prelude.Maybe ModelCardStatus,
+    -- | The model card version.
+    modelCardVersion :: Prelude.Maybe Prelude.Int,
+    -- | For models created in SageMaker, this is the model ARN. For models
+    -- created outside of SageMaker, this is a user-customized string.
+    modelId :: Prelude.Maybe Prelude.Text,
+    -- | A model card\'s risk rating. Can be low, medium, or high.
+    riskRating :: Prelude.Maybe Prelude.Text,
+    -- | The KMS Key ID (@KMSKeyId@) for encryption of model card information.
+    securityConfig :: Prelude.Maybe ModelCardSecurityConfig,
+    -- | The tags associated with a model card.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDashboardModelCard' 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:
+--
+-- 'createdBy', 'modelDashboardModelCard_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'modelDashboardModelCard_creationTime' - A timestamp that indicates when the model card was created.
+--
+-- 'lastModifiedBy', 'modelDashboardModelCard_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'modelDashboardModelCard_lastModifiedTime' - A timestamp that indicates when the model card was last updated.
+--
+-- 'modelCardArn', 'modelDashboardModelCard_modelCardArn' - The Amazon Resource Name (ARN) for a model card.
+--
+-- 'modelCardName', 'modelDashboardModelCard_modelCardName' - The name of a model card.
+--
+-- 'modelCardStatus', 'modelDashboardModelCard_modelCardStatus' - The model card status.
+--
+-- 'modelCardVersion', 'modelDashboardModelCard_modelCardVersion' - The model card version.
+--
+-- 'modelId', 'modelDashboardModelCard_modelId' - For models created in SageMaker, this is the model ARN. For models
+-- created outside of SageMaker, this is a user-customized string.
+--
+-- 'riskRating', 'modelDashboardModelCard_riskRating' - A model card\'s risk rating. Can be low, medium, or high.
+--
+-- 'securityConfig', 'modelDashboardModelCard_securityConfig' - The KMS Key ID (@KMSKeyId@) for encryption of model card information.
+--
+-- 'tags', 'modelDashboardModelCard_tags' - The tags associated with a model card.
+newModelDashboardModelCard ::
+  ModelDashboardModelCard
+newModelDashboardModelCard =
+  ModelDashboardModelCard'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      modelCardArn = Prelude.Nothing,
+      modelCardName = Prelude.Nothing,
+      modelCardStatus = Prelude.Nothing,
+      modelCardVersion = Prelude.Nothing,
+      modelId = Prelude.Nothing,
+      riskRating = Prelude.Nothing,
+      securityConfig = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+modelDashboardModelCard_createdBy :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe UserContext)
+modelDashboardModelCard_createdBy = Lens.lens (\ModelDashboardModelCard' {createdBy} -> createdBy) (\s@ModelDashboardModelCard' {} a -> s {createdBy = a} :: ModelDashboardModelCard)
+
+-- | A timestamp that indicates when the model card was created.
+modelDashboardModelCard_creationTime :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.UTCTime)
+modelDashboardModelCard_creationTime = Lens.lens (\ModelDashboardModelCard' {creationTime} -> creationTime) (\s@ModelDashboardModelCard' {} a -> s {creationTime = a} :: ModelDashboardModelCard) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+modelDashboardModelCard_lastModifiedBy :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe UserContext)
+modelDashboardModelCard_lastModifiedBy = Lens.lens (\ModelDashboardModelCard' {lastModifiedBy} -> lastModifiedBy) (\s@ModelDashboardModelCard' {} a -> s {lastModifiedBy = a} :: ModelDashboardModelCard)
+
+-- | A timestamp that indicates when the model card was last updated.
+modelDashboardModelCard_lastModifiedTime :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.UTCTime)
+modelDashboardModelCard_lastModifiedTime = Lens.lens (\ModelDashboardModelCard' {lastModifiedTime} -> lastModifiedTime) (\s@ModelDashboardModelCard' {} a -> s {lastModifiedTime = a} :: ModelDashboardModelCard) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) for a model card.
+modelDashboardModelCard_modelCardArn :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.Text)
+modelDashboardModelCard_modelCardArn = Lens.lens (\ModelDashboardModelCard' {modelCardArn} -> modelCardArn) (\s@ModelDashboardModelCard' {} a -> s {modelCardArn = a} :: ModelDashboardModelCard)
+
+-- | The name of a model card.
+modelDashboardModelCard_modelCardName :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.Text)
+modelDashboardModelCard_modelCardName = Lens.lens (\ModelDashboardModelCard' {modelCardName} -> modelCardName) (\s@ModelDashboardModelCard' {} a -> s {modelCardName = a} :: ModelDashboardModelCard)
+
+-- | The model card status.
+modelDashboardModelCard_modelCardStatus :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe ModelCardStatus)
+modelDashboardModelCard_modelCardStatus = Lens.lens (\ModelDashboardModelCard' {modelCardStatus} -> modelCardStatus) (\s@ModelDashboardModelCard' {} a -> s {modelCardStatus = a} :: ModelDashboardModelCard)
+
+-- | The model card version.
+modelDashboardModelCard_modelCardVersion :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.Int)
+modelDashboardModelCard_modelCardVersion = Lens.lens (\ModelDashboardModelCard' {modelCardVersion} -> modelCardVersion) (\s@ModelDashboardModelCard' {} a -> s {modelCardVersion = a} :: ModelDashboardModelCard)
+
+-- | For models created in SageMaker, this is the model ARN. For models
+-- created outside of SageMaker, this is a user-customized string.
+modelDashboardModelCard_modelId :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.Text)
+modelDashboardModelCard_modelId = Lens.lens (\ModelDashboardModelCard' {modelId} -> modelId) (\s@ModelDashboardModelCard' {} a -> s {modelId = a} :: ModelDashboardModelCard)
+
+-- | A model card\'s risk rating. Can be low, medium, or high.
+modelDashboardModelCard_riskRating :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe Prelude.Text)
+modelDashboardModelCard_riskRating = Lens.lens (\ModelDashboardModelCard' {riskRating} -> riskRating) (\s@ModelDashboardModelCard' {} a -> s {riskRating = a} :: ModelDashboardModelCard)
+
+-- | The KMS Key ID (@KMSKeyId@) for encryption of model card information.
+modelDashboardModelCard_securityConfig :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe ModelCardSecurityConfig)
+modelDashboardModelCard_securityConfig = Lens.lens (\ModelDashboardModelCard' {securityConfig} -> securityConfig) (\s@ModelDashboardModelCard' {} a -> s {securityConfig = a} :: ModelDashboardModelCard)
+
+-- | The tags associated with a model card.
+modelDashboardModelCard_tags :: Lens.Lens' ModelDashboardModelCard (Prelude.Maybe [Tag])
+modelDashboardModelCard_tags = Lens.lens (\ModelDashboardModelCard' {tags} -> tags) (\s@ModelDashboardModelCard' {} a -> s {tags = a} :: ModelDashboardModelCard) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ModelDashboardModelCard where
+  parseJSON =
+    Data.withObject
+      "ModelDashboardModelCard"
+      ( \x ->
+          ModelDashboardModelCard'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ModelCardArn")
+            Prelude.<*> (x Data..:? "ModelCardName")
+            Prelude.<*> (x Data..:? "ModelCardStatus")
+            Prelude.<*> (x Data..:? "ModelCardVersion")
+            Prelude.<*> (x Data..:? "ModelId")
+            Prelude.<*> (x Data..:? "RiskRating")
+            Prelude.<*> (x Data..:? "SecurityConfig")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ModelDashboardModelCard where
+  hashWithSalt _salt ModelDashboardModelCard' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modelCardArn
+      `Prelude.hashWithSalt` modelCardName
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` modelCardVersion
+      `Prelude.hashWithSalt` modelId
+      `Prelude.hashWithSalt` riskRating
+      `Prelude.hashWithSalt` securityConfig
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ModelDashboardModelCard where
+  rnf ModelDashboardModelCard' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelCardArn
+      `Prelude.seq` Prelude.rnf modelCardName
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf modelCardVersion
+      `Prelude.seq` Prelude.rnf modelId
+      `Prelude.seq` Prelude.rnf riskRating
+      `Prelude.seq` Prelude.rnf securityConfig
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/ModelDashboardMonitoringSchedule.hs b/gen/Amazonka/SageMaker/Types/ModelDashboardMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDashboardMonitoringSchedule.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDashboardMonitoringSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDashboardMonitoringSchedule 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 Amazonka.SageMaker.Types.MonitoringAlertSummary
+import Amazonka.SageMaker.Types.MonitoringExecutionSummary
+import Amazonka.SageMaker.Types.MonitoringScheduleConfig
+import Amazonka.SageMaker.Types.MonitoringType
+import Amazonka.SageMaker.Types.ScheduleStatus
+
+-- | A monitoring schedule for a model displayed in the Amazon SageMaker
+-- Model Dashboard.
+--
+-- /See:/ 'newModelDashboardMonitoringSchedule' smart constructor.
+data ModelDashboardMonitoringSchedule = ModelDashboardMonitoringSchedule'
+  { -- | A timestamp that indicates when the monitoring schedule was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The endpoint which is monitored.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | If a monitoring job failed, provides the reason.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the monitoring schedule was last
+    -- updated.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    lastMonitoringExecutionSummary :: Prelude.Maybe MonitoringExecutionSummary,
+    -- | A JSON array where each element is a summary for a monitoring alert.
+    monitoringAlertSummaries :: Prelude.Maybe (Prelude.NonEmpty MonitoringAlertSummary),
+    -- | The Amazon Resource Name (ARN) of a monitoring schedule.
+    monitoringScheduleArn :: Prelude.Maybe Prelude.Text,
+    monitoringScheduleConfig :: Prelude.Maybe MonitoringScheduleConfig,
+    -- | The name of a monitoring schedule.
+    monitoringScheduleName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the monitoring schedule.
+    monitoringScheduleStatus :: Prelude.Maybe ScheduleStatus,
+    -- | The monitor type of a model monitor.
+    monitoringType :: Prelude.Maybe MonitoringType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDashboardMonitoringSchedule' 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:
+--
+-- 'creationTime', 'modelDashboardMonitoringSchedule_creationTime' - A timestamp that indicates when the monitoring schedule was created.
+--
+-- 'endpointName', 'modelDashboardMonitoringSchedule_endpointName' - The endpoint which is monitored.
+--
+-- 'failureReason', 'modelDashboardMonitoringSchedule_failureReason' - If a monitoring job failed, provides the reason.
+--
+-- 'lastModifiedTime', 'modelDashboardMonitoringSchedule_lastModifiedTime' - A timestamp that indicates when the monitoring schedule was last
+-- updated.
+--
+-- 'lastMonitoringExecutionSummary', 'modelDashboardMonitoringSchedule_lastMonitoringExecutionSummary' - Undocumented member.
+--
+-- 'monitoringAlertSummaries', 'modelDashboardMonitoringSchedule_monitoringAlertSummaries' - A JSON array where each element is a summary for a monitoring alert.
+--
+-- 'monitoringScheduleArn', 'modelDashboardMonitoringSchedule_monitoringScheduleArn' - The Amazon Resource Name (ARN) of a monitoring schedule.
+--
+-- 'monitoringScheduleConfig', 'modelDashboardMonitoringSchedule_monitoringScheduleConfig' - Undocumented member.
+--
+-- 'monitoringScheduleName', 'modelDashboardMonitoringSchedule_monitoringScheduleName' - The name of a monitoring schedule.
+--
+-- 'monitoringScheduleStatus', 'modelDashboardMonitoringSchedule_monitoringScheduleStatus' - The status of the monitoring schedule.
+--
+-- 'monitoringType', 'modelDashboardMonitoringSchedule_monitoringType' - The monitor type of a model monitor.
+newModelDashboardMonitoringSchedule ::
+  ModelDashboardMonitoringSchedule
+newModelDashboardMonitoringSchedule =
+  ModelDashboardMonitoringSchedule'
+    { creationTime =
+        Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lastMonitoringExecutionSummary =
+        Prelude.Nothing,
+      monitoringAlertSummaries =
+        Prelude.Nothing,
+      monitoringScheduleArn = Prelude.Nothing,
+      monitoringScheduleConfig =
+        Prelude.Nothing,
+      monitoringScheduleName = Prelude.Nothing,
+      monitoringScheduleStatus =
+        Prelude.Nothing,
+      monitoringType = Prelude.Nothing
+    }
+
+-- | A timestamp that indicates when the monitoring schedule was created.
+modelDashboardMonitoringSchedule_creationTime :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe Prelude.UTCTime)
+modelDashboardMonitoringSchedule_creationTime = Lens.lens (\ModelDashboardMonitoringSchedule' {creationTime} -> creationTime) (\s@ModelDashboardMonitoringSchedule' {} a -> s {creationTime = a} :: ModelDashboardMonitoringSchedule) Prelude.. Lens.mapping Data._Time
+
+-- | The endpoint which is monitored.
+modelDashboardMonitoringSchedule_endpointName :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe Prelude.Text)
+modelDashboardMonitoringSchedule_endpointName = Lens.lens (\ModelDashboardMonitoringSchedule' {endpointName} -> endpointName) (\s@ModelDashboardMonitoringSchedule' {} a -> s {endpointName = a} :: ModelDashboardMonitoringSchedule)
+
+-- | If a monitoring job failed, provides the reason.
+modelDashboardMonitoringSchedule_failureReason :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe Prelude.Text)
+modelDashboardMonitoringSchedule_failureReason = Lens.lens (\ModelDashboardMonitoringSchedule' {failureReason} -> failureReason) (\s@ModelDashboardMonitoringSchedule' {} a -> s {failureReason = a} :: ModelDashboardMonitoringSchedule)
+
+-- | A timestamp that indicates when the monitoring schedule was last
+-- updated.
+modelDashboardMonitoringSchedule_lastModifiedTime :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe Prelude.UTCTime)
+modelDashboardMonitoringSchedule_lastModifiedTime = Lens.lens (\ModelDashboardMonitoringSchedule' {lastModifiedTime} -> lastModifiedTime) (\s@ModelDashboardMonitoringSchedule' {} a -> s {lastModifiedTime = a} :: ModelDashboardMonitoringSchedule) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+modelDashboardMonitoringSchedule_lastMonitoringExecutionSummary :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe MonitoringExecutionSummary)
+modelDashboardMonitoringSchedule_lastMonitoringExecutionSummary = Lens.lens (\ModelDashboardMonitoringSchedule' {lastMonitoringExecutionSummary} -> lastMonitoringExecutionSummary) (\s@ModelDashboardMonitoringSchedule' {} a -> s {lastMonitoringExecutionSummary = a} :: ModelDashboardMonitoringSchedule)
+
+-- | A JSON array where each element is a summary for a monitoring alert.
+modelDashboardMonitoringSchedule_monitoringAlertSummaries :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe (Prelude.NonEmpty MonitoringAlertSummary))
+modelDashboardMonitoringSchedule_monitoringAlertSummaries = Lens.lens (\ModelDashboardMonitoringSchedule' {monitoringAlertSummaries} -> monitoringAlertSummaries) (\s@ModelDashboardMonitoringSchedule' {} a -> s {monitoringAlertSummaries = a} :: ModelDashboardMonitoringSchedule) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of a monitoring schedule.
+modelDashboardMonitoringSchedule_monitoringScheduleArn :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe Prelude.Text)
+modelDashboardMonitoringSchedule_monitoringScheduleArn = Lens.lens (\ModelDashboardMonitoringSchedule' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@ModelDashboardMonitoringSchedule' {} a -> s {monitoringScheduleArn = a} :: ModelDashboardMonitoringSchedule)
+
+-- | Undocumented member.
+modelDashboardMonitoringSchedule_monitoringScheduleConfig :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe MonitoringScheduleConfig)
+modelDashboardMonitoringSchedule_monitoringScheduleConfig = Lens.lens (\ModelDashboardMonitoringSchedule' {monitoringScheduleConfig} -> monitoringScheduleConfig) (\s@ModelDashboardMonitoringSchedule' {} a -> s {monitoringScheduleConfig = a} :: ModelDashboardMonitoringSchedule)
+
+-- | The name of a monitoring schedule.
+modelDashboardMonitoringSchedule_monitoringScheduleName :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe Prelude.Text)
+modelDashboardMonitoringSchedule_monitoringScheduleName = Lens.lens (\ModelDashboardMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@ModelDashboardMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: ModelDashboardMonitoringSchedule)
+
+-- | The status of the monitoring schedule.
+modelDashboardMonitoringSchedule_monitoringScheduleStatus :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe ScheduleStatus)
+modelDashboardMonitoringSchedule_monitoringScheduleStatus = Lens.lens (\ModelDashboardMonitoringSchedule' {monitoringScheduleStatus} -> monitoringScheduleStatus) (\s@ModelDashboardMonitoringSchedule' {} a -> s {monitoringScheduleStatus = a} :: ModelDashboardMonitoringSchedule)
+
+-- | The monitor type of a model monitor.
+modelDashboardMonitoringSchedule_monitoringType :: Lens.Lens' ModelDashboardMonitoringSchedule (Prelude.Maybe MonitoringType)
+modelDashboardMonitoringSchedule_monitoringType = Lens.lens (\ModelDashboardMonitoringSchedule' {monitoringType} -> monitoringType) (\s@ModelDashboardMonitoringSchedule' {} a -> s {monitoringType = a} :: ModelDashboardMonitoringSchedule)
+
+instance
+  Data.FromJSON
+    ModelDashboardMonitoringSchedule
+  where
+  parseJSON =
+    Data.withObject
+      "ModelDashboardMonitoringSchedule"
+      ( \x ->
+          ModelDashboardMonitoringSchedule'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "EndpointName")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "LastMonitoringExecutionSummary")
+            Prelude.<*> (x Data..:? "MonitoringAlertSummaries")
+            Prelude.<*> (x Data..:? "MonitoringScheduleArn")
+            Prelude.<*> (x Data..:? "MonitoringScheduleConfig")
+            Prelude.<*> (x Data..:? "MonitoringScheduleName")
+            Prelude.<*> (x Data..:? "MonitoringScheduleStatus")
+            Prelude.<*> (x Data..:? "MonitoringType")
+      )
+
+instance
+  Prelude.Hashable
+    ModelDashboardMonitoringSchedule
+  where
+  hashWithSalt
+    _salt
+    ModelDashboardMonitoringSchedule' {..} =
+      _salt
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` endpointName
+        `Prelude.hashWithSalt` failureReason
+        `Prelude.hashWithSalt` lastModifiedTime
+        `Prelude.hashWithSalt` lastMonitoringExecutionSummary
+        `Prelude.hashWithSalt` monitoringAlertSummaries
+        `Prelude.hashWithSalt` monitoringScheduleArn
+        `Prelude.hashWithSalt` monitoringScheduleConfig
+        `Prelude.hashWithSalt` monitoringScheduleName
+        `Prelude.hashWithSalt` monitoringScheduleStatus
+        `Prelude.hashWithSalt` monitoringType
+
+instance
+  Prelude.NFData
+    ModelDashboardMonitoringSchedule
+  where
+  rnf ModelDashboardMonitoringSchedule' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lastMonitoringExecutionSummary
+      `Prelude.seq` Prelude.rnf monitoringAlertSummaries
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
+      `Prelude.seq` Prelude.rnf monitoringScheduleConfig
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringScheduleStatus
+      `Prelude.seq` Prelude.rnf monitoringType
diff --git a/gen/Amazonka/SageMaker/Types/ModelDataQuality.hs b/gen/Amazonka/SageMaker/Types/ModelDataQuality.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDataQuality.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDataQuality
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDataQuality 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 Amazonka.SageMaker.Types.MetricsSource
+
+-- | Data quality constraints and statistics for a model.
+--
+-- /See:/ 'newModelDataQuality' smart constructor.
+data ModelDataQuality = ModelDataQuality'
+  { -- | Data quality constraints for a model.
+    constraints :: Prelude.Maybe MetricsSource,
+    -- | Data quality statistics for a model.
+    statistics :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDataQuality' 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:
+--
+-- 'constraints', 'modelDataQuality_constraints' - Data quality constraints for a model.
+--
+-- 'statistics', 'modelDataQuality_statistics' - Data quality statistics for a model.
+newModelDataQuality ::
+  ModelDataQuality
+newModelDataQuality =
+  ModelDataQuality'
+    { constraints = Prelude.Nothing,
+      statistics = Prelude.Nothing
+    }
+
+-- | Data quality constraints for a model.
+modelDataQuality_constraints :: Lens.Lens' ModelDataQuality (Prelude.Maybe MetricsSource)
+modelDataQuality_constraints = Lens.lens (\ModelDataQuality' {constraints} -> constraints) (\s@ModelDataQuality' {} a -> s {constraints = a} :: ModelDataQuality)
+
+-- | Data quality statistics for a model.
+modelDataQuality_statistics :: Lens.Lens' ModelDataQuality (Prelude.Maybe MetricsSource)
+modelDataQuality_statistics = Lens.lens (\ModelDataQuality' {statistics} -> statistics) (\s@ModelDataQuality' {} a -> s {statistics = a} :: ModelDataQuality)
+
+instance Data.FromJSON ModelDataQuality where
+  parseJSON =
+    Data.withObject
+      "ModelDataQuality"
+      ( \x ->
+          ModelDataQuality'
+            Prelude.<$> (x Data..:? "Constraints")
+            Prelude.<*> (x Data..:? "Statistics")
+      )
+
+instance Prelude.Hashable ModelDataQuality where
+  hashWithSalt _salt ModelDataQuality' {..} =
+    _salt
+      `Prelude.hashWithSalt` constraints
+      `Prelude.hashWithSalt` statistics
+
+instance Prelude.NFData ModelDataQuality where
+  rnf ModelDataQuality' {..} =
+    Prelude.rnf constraints
+      `Prelude.seq` Prelude.rnf statistics
+
+instance Data.ToJSON ModelDataQuality where
+  toJSON ModelDataQuality' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Constraints" Data..=) Prelude.<$> constraints,
+            ("Statistics" Data..=) Prelude.<$> statistics
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelDeployConfig.hs b/gen/Amazonka/SageMaker/Types/ModelDeployConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDeployConfig.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDeployConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDeployConfig 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
+
+-- | Specifies how to generate the endpoint name for an automatic one-click
+-- Autopilot model deployment.
+--
+-- /See:/ 'newModelDeployConfig' smart constructor.
+data ModelDeployConfig = ModelDeployConfig'
+  { -- | Set to @True@ to automatically generate an endpoint name for a one-click
+    -- Autopilot model deployment; set to @False@ otherwise. The default value
+    -- is @False@.
+    --
+    -- If you set @AutoGenerateEndpointName@ to @True@, do not specify the
+    -- @EndpointName@; otherwise a 400 error is thrown.
+    autoGenerateEndpointName :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the endpoint name to use for a one-click Autopilot model
+    -- deployment if the endpoint name is not generated automatically.
+    --
+    -- Specify the @EndpointName@ if and only if you set
+    -- @AutoGenerateEndpointName@ to @False@; otherwise a 400 error is thrown.
+    endpointName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDeployConfig' 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:
+--
+-- 'autoGenerateEndpointName', 'modelDeployConfig_autoGenerateEndpointName' - Set to @True@ to automatically generate an endpoint name for a one-click
+-- Autopilot model deployment; set to @False@ otherwise. The default value
+-- is @False@.
+--
+-- If you set @AutoGenerateEndpointName@ to @True@, do not specify the
+-- @EndpointName@; otherwise a 400 error is thrown.
+--
+-- 'endpointName', 'modelDeployConfig_endpointName' - Specifies the endpoint name to use for a one-click Autopilot model
+-- deployment if the endpoint name is not generated automatically.
+--
+-- Specify the @EndpointName@ if and only if you set
+-- @AutoGenerateEndpointName@ to @False@; otherwise a 400 error is thrown.
+newModelDeployConfig ::
+  ModelDeployConfig
+newModelDeployConfig =
+  ModelDeployConfig'
+    { autoGenerateEndpointName =
+        Prelude.Nothing,
+      endpointName = Prelude.Nothing
+    }
+
+-- | Set to @True@ to automatically generate an endpoint name for a one-click
+-- Autopilot model deployment; set to @False@ otherwise. The default value
+-- is @False@.
+--
+-- If you set @AutoGenerateEndpointName@ to @True@, do not specify the
+-- @EndpointName@; otherwise a 400 error is thrown.
+modelDeployConfig_autoGenerateEndpointName :: Lens.Lens' ModelDeployConfig (Prelude.Maybe Prelude.Bool)
+modelDeployConfig_autoGenerateEndpointName = Lens.lens (\ModelDeployConfig' {autoGenerateEndpointName} -> autoGenerateEndpointName) (\s@ModelDeployConfig' {} a -> s {autoGenerateEndpointName = a} :: ModelDeployConfig)
+
+-- | Specifies the endpoint name to use for a one-click Autopilot model
+-- deployment if the endpoint name is not generated automatically.
+--
+-- Specify the @EndpointName@ if and only if you set
+-- @AutoGenerateEndpointName@ to @False@; otherwise a 400 error is thrown.
+modelDeployConfig_endpointName :: Lens.Lens' ModelDeployConfig (Prelude.Maybe Prelude.Text)
+modelDeployConfig_endpointName = Lens.lens (\ModelDeployConfig' {endpointName} -> endpointName) (\s@ModelDeployConfig' {} a -> s {endpointName = a} :: ModelDeployConfig)
+
+instance Data.FromJSON ModelDeployConfig where
+  parseJSON =
+    Data.withObject
+      "ModelDeployConfig"
+      ( \x ->
+          ModelDeployConfig'
+            Prelude.<$> (x Data..:? "AutoGenerateEndpointName")
+            Prelude.<*> (x Data..:? "EndpointName")
+      )
+
+instance Prelude.Hashable ModelDeployConfig where
+  hashWithSalt _salt ModelDeployConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoGenerateEndpointName
+      `Prelude.hashWithSalt` endpointName
+
+instance Prelude.NFData ModelDeployConfig where
+  rnf ModelDeployConfig' {..} =
+    Prelude.rnf autoGenerateEndpointName
+      `Prelude.seq` Prelude.rnf endpointName
+
+instance Data.ToJSON ModelDeployConfig where
+  toJSON ModelDeployConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoGenerateEndpointName" Data..=)
+              Prelude.<$> autoGenerateEndpointName,
+            ("EndpointName" Data..=) Prelude.<$> endpointName
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelDeployResult.hs b/gen/Amazonka/SageMaker/Types/ModelDeployResult.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDeployResult.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDeployResult
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDeployResult 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
+
+-- | Provides information about the endpoint of the model deployment.
+--
+-- /See:/ 'newModelDeployResult' smart constructor.
+data ModelDeployResult = ModelDeployResult'
+  { -- | The name of the endpoint to which the model has been deployed.
+    --
+    -- If model deployment fails, this field is omitted from the response.
+    endpointName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDeployResult' 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:
+--
+-- 'endpointName', 'modelDeployResult_endpointName' - The name of the endpoint to which the model has been deployed.
+--
+-- If model deployment fails, this field is omitted from the response.
+newModelDeployResult ::
+  ModelDeployResult
+newModelDeployResult =
+  ModelDeployResult' {endpointName = Prelude.Nothing}
+
+-- | The name of the endpoint to which the model has been deployed.
+--
+-- If model deployment fails, this field is omitted from the response.
+modelDeployResult_endpointName :: Lens.Lens' ModelDeployResult (Prelude.Maybe Prelude.Text)
+modelDeployResult_endpointName = Lens.lens (\ModelDeployResult' {endpointName} -> endpointName) (\s@ModelDeployResult' {} a -> s {endpointName = a} :: ModelDeployResult)
+
+instance Data.FromJSON ModelDeployResult where
+  parseJSON =
+    Data.withObject
+      "ModelDeployResult"
+      ( \x ->
+          ModelDeployResult'
+            Prelude.<$> (x Data..:? "EndpointName")
+      )
+
+instance Prelude.Hashable ModelDeployResult where
+  hashWithSalt _salt ModelDeployResult' {..} =
+    _salt `Prelude.hashWithSalt` endpointName
+
+instance Prelude.NFData ModelDeployResult where
+  rnf ModelDeployResult' {..} = Prelude.rnf endpointName
diff --git a/gen/Amazonka/SageMaker/Types/ModelDigests.hs b/gen/Amazonka/SageMaker/Types/ModelDigests.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelDigests.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelDigests
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelDigests 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
+
+-- | Provides information to verify the integrity of stored model artifacts.
+--
+-- /See:/ 'newModelDigests' smart constructor.
+data ModelDigests = ModelDigests'
+  { -- | Provides a hash value that uniquely identifies the stored model
+    -- artifacts.
+    artifactDigest :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelDigests' 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:
+--
+-- 'artifactDigest', 'modelDigests_artifactDigest' - Provides a hash value that uniquely identifies the stored model
+-- artifacts.
+newModelDigests ::
+  ModelDigests
+newModelDigests =
+  ModelDigests' {artifactDigest = Prelude.Nothing}
+
+-- | Provides a hash value that uniquely identifies the stored model
+-- artifacts.
+modelDigests_artifactDigest :: Lens.Lens' ModelDigests (Prelude.Maybe Prelude.Text)
+modelDigests_artifactDigest = Lens.lens (\ModelDigests' {artifactDigest} -> artifactDigest) (\s@ModelDigests' {} a -> s {artifactDigest = a} :: ModelDigests)
+
+instance Data.FromJSON ModelDigests where
+  parseJSON =
+    Data.withObject
+      "ModelDigests"
+      ( \x ->
+          ModelDigests'
+            Prelude.<$> (x Data..:? "ArtifactDigest")
+      )
+
+instance Prelude.Hashable ModelDigests where
+  hashWithSalt _salt ModelDigests' {..} =
+    _salt `Prelude.hashWithSalt` artifactDigest
+
+instance Prelude.NFData ModelDigests where
+  rnf ModelDigests' {..} = Prelude.rnf artifactDigest
diff --git a/gen/Amazonka/SageMaker/Types/ModelExplainabilityAppSpecification.hs b/gen/Amazonka/SageMaker/Types/ModelExplainabilityAppSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelExplainabilityAppSpecification.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelExplainabilityAppSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelExplainabilityAppSpecification 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
+
+-- | Docker container image configuration object for the model explainability
+-- job.
+--
+-- /See:/ 'newModelExplainabilityAppSpecification' smart constructor.
+data ModelExplainabilityAppSpecification = ModelExplainabilityAppSpecification'
+  { -- | Sets the environment variables in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The container image to be run by the model explainability job.
+    imageUri :: Prelude.Text,
+    -- | JSON formatted S3 file that defines explainability parameters. For more
+    -- information on this JSON configuration file, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-config-json-monitor-model-explainability-parameters.html Configure model explainability parameters>.
+    configUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelExplainabilityAppSpecification' 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:
+--
+-- 'environment', 'modelExplainabilityAppSpecification_environment' - Sets the environment variables in the Docker container.
+--
+-- 'imageUri', 'modelExplainabilityAppSpecification_imageUri' - The container image to be run by the model explainability job.
+--
+-- 'configUri', 'modelExplainabilityAppSpecification_configUri' - JSON formatted S3 file that defines explainability parameters. For more
+-- information on this JSON configuration file, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-config-json-monitor-model-explainability-parameters.html Configure model explainability parameters>.
+newModelExplainabilityAppSpecification ::
+  -- | 'imageUri'
+  Prelude.Text ->
+  -- | 'configUri'
+  Prelude.Text ->
+  ModelExplainabilityAppSpecification
+newModelExplainabilityAppSpecification
+  pImageUri_
+  pConfigUri_ =
+    ModelExplainabilityAppSpecification'
+      { environment =
+          Prelude.Nothing,
+        imageUri = pImageUri_,
+        configUri = pConfigUri_
+      }
+
+-- | Sets the environment variables in the Docker container.
+modelExplainabilityAppSpecification_environment :: Lens.Lens' ModelExplainabilityAppSpecification (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+modelExplainabilityAppSpecification_environment = Lens.lens (\ModelExplainabilityAppSpecification' {environment} -> environment) (\s@ModelExplainabilityAppSpecification' {} a -> s {environment = a} :: ModelExplainabilityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | The container image to be run by the model explainability job.
+modelExplainabilityAppSpecification_imageUri :: Lens.Lens' ModelExplainabilityAppSpecification Prelude.Text
+modelExplainabilityAppSpecification_imageUri = Lens.lens (\ModelExplainabilityAppSpecification' {imageUri} -> imageUri) (\s@ModelExplainabilityAppSpecification' {} a -> s {imageUri = a} :: ModelExplainabilityAppSpecification)
+
+-- | JSON formatted S3 file that defines explainability parameters. For more
+-- information on this JSON configuration file, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-config-json-monitor-model-explainability-parameters.html Configure model explainability parameters>.
+modelExplainabilityAppSpecification_configUri :: Lens.Lens' ModelExplainabilityAppSpecification Prelude.Text
+modelExplainabilityAppSpecification_configUri = Lens.lens (\ModelExplainabilityAppSpecification' {configUri} -> configUri) (\s@ModelExplainabilityAppSpecification' {} a -> s {configUri = a} :: ModelExplainabilityAppSpecification)
+
+instance
+  Data.FromJSON
+    ModelExplainabilityAppSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "ModelExplainabilityAppSpecification"
+      ( \x ->
+          ModelExplainabilityAppSpecification'
+            Prelude.<$> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "ImageUri")
+            Prelude.<*> (x Data..: "ConfigUri")
+      )
+
+instance
+  Prelude.Hashable
+    ModelExplainabilityAppSpecification
+  where
+  hashWithSalt
+    _salt
+    ModelExplainabilityAppSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` environment
+        `Prelude.hashWithSalt` imageUri
+        `Prelude.hashWithSalt` configUri
+
+instance
+  Prelude.NFData
+    ModelExplainabilityAppSpecification
+  where
+  rnf ModelExplainabilityAppSpecification' {..} =
+    Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf imageUri
+      `Prelude.seq` Prelude.rnf configUri
+
+instance
+  Data.ToJSON
+    ModelExplainabilityAppSpecification
+  where
+  toJSON ModelExplainabilityAppSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Environment" Data..=) Prelude.<$> environment,
+            Prelude.Just ("ImageUri" Data..= imageUri),
+            Prelude.Just ("ConfigUri" Data..= configUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelExplainabilityBaselineConfig.hs b/gen/Amazonka/SageMaker/Types/ModelExplainabilityBaselineConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelExplainabilityBaselineConfig.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelExplainabilityBaselineConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelExplainabilityBaselineConfig 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 Amazonka.SageMaker.Types.MonitoringConstraintsResource
+
+-- | The configuration for a baseline model explainability job.
+--
+-- /See:/ 'newModelExplainabilityBaselineConfig' smart constructor.
+data ModelExplainabilityBaselineConfig = ModelExplainabilityBaselineConfig'
+  { -- | The name of the baseline model explainability job.
+    baseliningJobName :: Prelude.Maybe Prelude.Text,
+    constraintsResource :: Prelude.Maybe MonitoringConstraintsResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelExplainabilityBaselineConfig' 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:
+--
+-- 'baseliningJobName', 'modelExplainabilityBaselineConfig_baseliningJobName' - The name of the baseline model explainability job.
+--
+-- 'constraintsResource', 'modelExplainabilityBaselineConfig_constraintsResource' - Undocumented member.
+newModelExplainabilityBaselineConfig ::
+  ModelExplainabilityBaselineConfig
+newModelExplainabilityBaselineConfig =
+  ModelExplainabilityBaselineConfig'
+    { baseliningJobName =
+        Prelude.Nothing,
+      constraintsResource = Prelude.Nothing
+    }
+
+-- | The name of the baseline model explainability job.
+modelExplainabilityBaselineConfig_baseliningJobName :: Lens.Lens' ModelExplainabilityBaselineConfig (Prelude.Maybe Prelude.Text)
+modelExplainabilityBaselineConfig_baseliningJobName = Lens.lens (\ModelExplainabilityBaselineConfig' {baseliningJobName} -> baseliningJobName) (\s@ModelExplainabilityBaselineConfig' {} a -> s {baseliningJobName = a} :: ModelExplainabilityBaselineConfig)
+
+-- | Undocumented member.
+modelExplainabilityBaselineConfig_constraintsResource :: Lens.Lens' ModelExplainabilityBaselineConfig (Prelude.Maybe MonitoringConstraintsResource)
+modelExplainabilityBaselineConfig_constraintsResource = Lens.lens (\ModelExplainabilityBaselineConfig' {constraintsResource} -> constraintsResource) (\s@ModelExplainabilityBaselineConfig' {} a -> s {constraintsResource = a} :: ModelExplainabilityBaselineConfig)
+
+instance
+  Data.FromJSON
+    ModelExplainabilityBaselineConfig
+  where
+  parseJSON =
+    Data.withObject
+      "ModelExplainabilityBaselineConfig"
+      ( \x ->
+          ModelExplainabilityBaselineConfig'
+            Prelude.<$> (x Data..:? "BaseliningJobName")
+            Prelude.<*> (x Data..:? "ConstraintsResource")
+      )
+
+instance
+  Prelude.Hashable
+    ModelExplainabilityBaselineConfig
+  where
+  hashWithSalt
+    _salt
+    ModelExplainabilityBaselineConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` baseliningJobName
+        `Prelude.hashWithSalt` constraintsResource
+
+instance
+  Prelude.NFData
+    ModelExplainabilityBaselineConfig
+  where
+  rnf ModelExplainabilityBaselineConfig' {..} =
+    Prelude.rnf baseliningJobName
+      `Prelude.seq` Prelude.rnf constraintsResource
+
+instance
+  Data.ToJSON
+    ModelExplainabilityBaselineConfig
+  where
+  toJSON ModelExplainabilityBaselineConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BaseliningJobName" Data..=)
+              Prelude.<$> baseliningJobName,
+            ("ConstraintsResource" Data..=)
+              Prelude.<$> constraintsResource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelExplainabilityJobInput.hs b/gen/Amazonka/SageMaker/Types/ModelExplainabilityJobInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelExplainabilityJobInput.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelExplainabilityJobInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelExplainabilityJobInput 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 Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.EndpointInput
+
+-- | Inputs for the model explainability job.
+--
+-- /See:/ 'newModelExplainabilityJobInput' smart constructor.
+data ModelExplainabilityJobInput = ModelExplainabilityJobInput'
+  { -- | Input object for the batch transform job.
+    batchTransformInput :: Prelude.Maybe BatchTransformInput,
+    endpointInput :: Prelude.Maybe EndpointInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelExplainabilityJobInput' 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:
+--
+-- 'batchTransformInput', 'modelExplainabilityJobInput_batchTransformInput' - Input object for the batch transform job.
+--
+-- 'endpointInput', 'modelExplainabilityJobInput_endpointInput' - Undocumented member.
+newModelExplainabilityJobInput ::
+  ModelExplainabilityJobInput
+newModelExplainabilityJobInput =
+  ModelExplainabilityJobInput'
+    { batchTransformInput =
+        Prelude.Nothing,
+      endpointInput = Prelude.Nothing
+    }
+
+-- | Input object for the batch transform job.
+modelExplainabilityJobInput_batchTransformInput :: Lens.Lens' ModelExplainabilityJobInput (Prelude.Maybe BatchTransformInput)
+modelExplainabilityJobInput_batchTransformInput = Lens.lens (\ModelExplainabilityJobInput' {batchTransformInput} -> batchTransformInput) (\s@ModelExplainabilityJobInput' {} a -> s {batchTransformInput = a} :: ModelExplainabilityJobInput)
+
+-- | Undocumented member.
+modelExplainabilityJobInput_endpointInput :: Lens.Lens' ModelExplainabilityJobInput (Prelude.Maybe EndpointInput)
+modelExplainabilityJobInput_endpointInput = Lens.lens (\ModelExplainabilityJobInput' {endpointInput} -> endpointInput) (\s@ModelExplainabilityJobInput' {} a -> s {endpointInput = a} :: ModelExplainabilityJobInput)
+
+instance Data.FromJSON ModelExplainabilityJobInput where
+  parseJSON =
+    Data.withObject
+      "ModelExplainabilityJobInput"
+      ( \x ->
+          ModelExplainabilityJobInput'
+            Prelude.<$> (x Data..:? "BatchTransformInput")
+            Prelude.<*> (x Data..:? "EndpointInput")
+      )
+
+instance Prelude.Hashable ModelExplainabilityJobInput where
+  hashWithSalt _salt ModelExplainabilityJobInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchTransformInput
+      `Prelude.hashWithSalt` endpointInput
+
+instance Prelude.NFData ModelExplainabilityJobInput where
+  rnf ModelExplainabilityJobInput' {..} =
+    Prelude.rnf batchTransformInput
+      `Prelude.seq` Prelude.rnf endpointInput
+
+instance Data.ToJSON ModelExplainabilityJobInput where
+  toJSON ModelExplainabilityJobInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchTransformInput" Data..=)
+              Prelude.<$> batchTransformInput,
+            ("EndpointInput" Data..=) Prelude.<$> endpointInput
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelInfrastructureConfig.hs b/gen/Amazonka/SageMaker/Types/ModelInfrastructureConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelInfrastructureConfig.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelInfrastructureConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelInfrastructureConfig 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 Amazonka.SageMaker.Types.ModelInfrastructureType
+import Amazonka.SageMaker.Types.RealTimeInferenceConfig
+
+-- | The configuration for the infrastructure that the model will be deployed
+-- to.
+--
+-- /See:/ 'newModelInfrastructureConfig' smart constructor.
+data ModelInfrastructureConfig = ModelInfrastructureConfig'
+  { -- | The inference option to which to deploy your model. Possible values are
+    -- the following:
+    --
+    -- -   @RealTime@: Deploy to real-time inference.
+    infrastructureType :: ModelInfrastructureType,
+    -- | The infrastructure configuration for deploying the model to real-time
+    -- inference.
+    realTimeInferenceConfig :: RealTimeInferenceConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelInfrastructureConfig' 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:
+--
+-- 'infrastructureType', 'modelInfrastructureConfig_infrastructureType' - The inference option to which to deploy your model. Possible values are
+-- the following:
+--
+-- -   @RealTime@: Deploy to real-time inference.
+--
+-- 'realTimeInferenceConfig', 'modelInfrastructureConfig_realTimeInferenceConfig' - The infrastructure configuration for deploying the model to real-time
+-- inference.
+newModelInfrastructureConfig ::
+  -- | 'infrastructureType'
+  ModelInfrastructureType ->
+  -- | 'realTimeInferenceConfig'
+  RealTimeInferenceConfig ->
+  ModelInfrastructureConfig
+newModelInfrastructureConfig
+  pInfrastructureType_
+  pRealTimeInferenceConfig_ =
+    ModelInfrastructureConfig'
+      { infrastructureType =
+          pInfrastructureType_,
+        realTimeInferenceConfig =
+          pRealTimeInferenceConfig_
+      }
+
+-- | The inference option to which to deploy your model. Possible values are
+-- the following:
+--
+-- -   @RealTime@: Deploy to real-time inference.
+modelInfrastructureConfig_infrastructureType :: Lens.Lens' ModelInfrastructureConfig ModelInfrastructureType
+modelInfrastructureConfig_infrastructureType = Lens.lens (\ModelInfrastructureConfig' {infrastructureType} -> infrastructureType) (\s@ModelInfrastructureConfig' {} a -> s {infrastructureType = a} :: ModelInfrastructureConfig)
+
+-- | The infrastructure configuration for deploying the model to real-time
+-- inference.
+modelInfrastructureConfig_realTimeInferenceConfig :: Lens.Lens' ModelInfrastructureConfig RealTimeInferenceConfig
+modelInfrastructureConfig_realTimeInferenceConfig = Lens.lens (\ModelInfrastructureConfig' {realTimeInferenceConfig} -> realTimeInferenceConfig) (\s@ModelInfrastructureConfig' {} a -> s {realTimeInferenceConfig = a} :: ModelInfrastructureConfig)
+
+instance Data.FromJSON ModelInfrastructureConfig where
+  parseJSON =
+    Data.withObject
+      "ModelInfrastructureConfig"
+      ( \x ->
+          ModelInfrastructureConfig'
+            Prelude.<$> (x Data..: "InfrastructureType")
+            Prelude.<*> (x Data..: "RealTimeInferenceConfig")
+      )
+
+instance Prelude.Hashable ModelInfrastructureConfig where
+  hashWithSalt _salt ModelInfrastructureConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` infrastructureType
+      `Prelude.hashWithSalt` realTimeInferenceConfig
+
+instance Prelude.NFData ModelInfrastructureConfig where
+  rnf ModelInfrastructureConfig' {..} =
+    Prelude.rnf infrastructureType
+      `Prelude.seq` Prelude.rnf realTimeInferenceConfig
+
+instance Data.ToJSON ModelInfrastructureConfig where
+  toJSON ModelInfrastructureConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("InfrastructureType" Data..= infrastructureType),
+            Prelude.Just
+              ( "RealTimeInferenceConfig"
+                  Data..= realTimeInferenceConfig
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelInfrastructureType.hs b/gen/Amazonka/SageMaker/Types/ModelInfrastructureType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelInfrastructureType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelInfrastructureType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelInfrastructureType
+  ( ModelInfrastructureType
+      ( ..,
+        ModelInfrastructureType_RealTimeInference
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelInfrastructureType = ModelInfrastructureType'
+  { fromModelInfrastructureType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelInfrastructureType_RealTimeInference :: ModelInfrastructureType
+pattern ModelInfrastructureType_RealTimeInference = ModelInfrastructureType' "RealTimeInference"
+
+{-# COMPLETE
+  ModelInfrastructureType_RealTimeInference,
+  ModelInfrastructureType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelInput.hs b/gen/Amazonka/SageMaker/Types/ModelInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelInput.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelInput 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
+
+-- | Input object for the model.
+--
+-- /See:/ 'newModelInput' smart constructor.
+data ModelInput = ModelInput'
+  { -- | The input configuration object for the model.
+    dataInputConfig :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelInput' 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:
+--
+-- 'dataInputConfig', 'modelInput_dataInputConfig' - The input configuration object for the model.
+newModelInput ::
+  -- | 'dataInputConfig'
+  Prelude.Text ->
+  ModelInput
+newModelInput pDataInputConfig_ =
+  ModelInput' {dataInputConfig = pDataInputConfig_}
+
+-- | The input configuration object for the model.
+modelInput_dataInputConfig :: Lens.Lens' ModelInput Prelude.Text
+modelInput_dataInputConfig = Lens.lens (\ModelInput' {dataInputConfig} -> dataInputConfig) (\s@ModelInput' {} a -> s {dataInputConfig = a} :: ModelInput)
+
+instance Data.FromJSON ModelInput where
+  parseJSON =
+    Data.withObject
+      "ModelInput"
+      ( \x ->
+          ModelInput'
+            Prelude.<$> (x Data..: "DataInputConfig")
+      )
+
+instance Prelude.Hashable ModelInput where
+  hashWithSalt _salt ModelInput' {..} =
+    _salt `Prelude.hashWithSalt` dataInputConfig
+
+instance Prelude.NFData ModelInput where
+  rnf ModelInput' {..} = Prelude.rnf dataInputConfig
+
+instance Data.ToJSON ModelInput where
+  toJSON ModelInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataInputConfig" Data..= dataInputConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelLatencyThreshold.hs b/gen/Amazonka/SageMaker/Types/ModelLatencyThreshold.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelLatencyThreshold.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelLatencyThreshold
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelLatencyThreshold 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
+
+-- | The model latency threshold.
+--
+-- /See:/ 'newModelLatencyThreshold' smart constructor.
+data ModelLatencyThreshold = ModelLatencyThreshold'
+  { -- | The model latency percentile threshold.
+    percentile :: Prelude.Maybe Prelude.Text,
+    -- | The model latency percentile value in milliseconds.
+    valueInMilliseconds :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelLatencyThreshold' 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:
+--
+-- 'percentile', 'modelLatencyThreshold_percentile' - The model latency percentile threshold.
+--
+-- 'valueInMilliseconds', 'modelLatencyThreshold_valueInMilliseconds' - The model latency percentile value in milliseconds.
+newModelLatencyThreshold ::
+  ModelLatencyThreshold
+newModelLatencyThreshold =
+  ModelLatencyThreshold'
+    { percentile =
+        Prelude.Nothing,
+      valueInMilliseconds = Prelude.Nothing
+    }
+
+-- | The model latency percentile threshold.
+modelLatencyThreshold_percentile :: Lens.Lens' ModelLatencyThreshold (Prelude.Maybe Prelude.Text)
+modelLatencyThreshold_percentile = Lens.lens (\ModelLatencyThreshold' {percentile} -> percentile) (\s@ModelLatencyThreshold' {} a -> s {percentile = a} :: ModelLatencyThreshold)
+
+-- | The model latency percentile value in milliseconds.
+modelLatencyThreshold_valueInMilliseconds :: Lens.Lens' ModelLatencyThreshold (Prelude.Maybe Prelude.Int)
+modelLatencyThreshold_valueInMilliseconds = Lens.lens (\ModelLatencyThreshold' {valueInMilliseconds} -> valueInMilliseconds) (\s@ModelLatencyThreshold' {} a -> s {valueInMilliseconds = a} :: ModelLatencyThreshold)
+
+instance Data.FromJSON ModelLatencyThreshold where
+  parseJSON =
+    Data.withObject
+      "ModelLatencyThreshold"
+      ( \x ->
+          ModelLatencyThreshold'
+            Prelude.<$> (x Data..:? "Percentile")
+            Prelude.<*> (x Data..:? "ValueInMilliseconds")
+      )
+
+instance Prelude.Hashable ModelLatencyThreshold where
+  hashWithSalt _salt ModelLatencyThreshold' {..} =
+    _salt
+      `Prelude.hashWithSalt` percentile
+      `Prelude.hashWithSalt` valueInMilliseconds
+
+instance Prelude.NFData ModelLatencyThreshold where
+  rnf ModelLatencyThreshold' {..} =
+    Prelude.rnf percentile
+      `Prelude.seq` Prelude.rnf valueInMilliseconds
+
+instance Data.ToJSON ModelLatencyThreshold where
+  toJSON ModelLatencyThreshold' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Percentile" Data..=) Prelude.<$> percentile,
+            ("ValueInMilliseconds" Data..=)
+              Prelude.<$> valueInMilliseconds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelMetadataFilter.hs b/gen/Amazonka/SageMaker/Types/ModelMetadataFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelMetadataFilter.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelMetadataFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelMetadataFilter 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 Amazonka.SageMaker.Types.ModelMetadataFilterType
+
+-- | Part of the search expression. You can specify the name and value
+-- (domain, task, framework, framework version, task, and model).
+--
+-- /See:/ 'newModelMetadataFilter' smart constructor.
+data ModelMetadataFilter = ModelMetadataFilter'
+  { -- | The name of the of the model to filter by.
+    name :: ModelMetadataFilterType,
+    -- | The value to filter the model metadata.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelMetadataFilter' 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:
+--
+-- 'name', 'modelMetadataFilter_name' - The name of the of the model to filter by.
+--
+-- 'value', 'modelMetadataFilter_value' - The value to filter the model metadata.
+newModelMetadataFilter ::
+  -- | 'name'
+  ModelMetadataFilterType ->
+  -- | 'value'
+  Prelude.Text ->
+  ModelMetadataFilter
+newModelMetadataFilter pName_ pValue_ =
+  ModelMetadataFilter'
+    { name = pName_,
+      value = pValue_
+    }
+
+-- | The name of the of the model to filter by.
+modelMetadataFilter_name :: Lens.Lens' ModelMetadataFilter ModelMetadataFilterType
+modelMetadataFilter_name = Lens.lens (\ModelMetadataFilter' {name} -> name) (\s@ModelMetadataFilter' {} a -> s {name = a} :: ModelMetadataFilter)
+
+-- | The value to filter the model metadata.
+modelMetadataFilter_value :: Lens.Lens' ModelMetadataFilter Prelude.Text
+modelMetadataFilter_value = Lens.lens (\ModelMetadataFilter' {value} -> value) (\s@ModelMetadataFilter' {} a -> s {value = a} :: ModelMetadataFilter)
+
+instance Prelude.Hashable ModelMetadataFilter where
+  hashWithSalt _salt ModelMetadataFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ModelMetadataFilter where
+  rnf ModelMetadataFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON ModelMetadataFilter where
+  toJSON ModelMetadataFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelMetadataFilterType.hs b/gen/Amazonka/SageMaker/Types/ModelMetadataFilterType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelMetadataFilterType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelMetadataFilterType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelMetadataFilterType
+  ( ModelMetadataFilterType
+      ( ..,
+        ModelMetadataFilterType_Domain,
+        ModelMetadataFilterType_Framework,
+        ModelMetadataFilterType_FrameworkVersion,
+        ModelMetadataFilterType_Task
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelMetadataFilterType = ModelMetadataFilterType'
+  { fromModelMetadataFilterType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelMetadataFilterType_Domain :: ModelMetadataFilterType
+pattern ModelMetadataFilterType_Domain = ModelMetadataFilterType' "Domain"
+
+pattern ModelMetadataFilterType_Framework :: ModelMetadataFilterType
+pattern ModelMetadataFilterType_Framework = ModelMetadataFilterType' "Framework"
+
+pattern ModelMetadataFilterType_FrameworkVersion :: ModelMetadataFilterType
+pattern ModelMetadataFilterType_FrameworkVersion = ModelMetadataFilterType' "FrameworkVersion"
+
+pattern ModelMetadataFilterType_Task :: ModelMetadataFilterType
+pattern ModelMetadataFilterType_Task = ModelMetadataFilterType' "Task"
+
+{-# COMPLETE
+  ModelMetadataFilterType_Domain,
+  ModelMetadataFilterType_Framework,
+  ModelMetadataFilterType_FrameworkVersion,
+  ModelMetadataFilterType_Task,
+  ModelMetadataFilterType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelMetadataSearchExpression.hs b/gen/Amazonka/SageMaker/Types/ModelMetadataSearchExpression.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelMetadataSearchExpression.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelMetadataSearchExpression
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelMetadataSearchExpression 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 Amazonka.SageMaker.Types.ModelMetadataFilter
+
+-- | One or more filters that searches for the specified resource or
+-- resources in a search. All resource objects that satisfy the
+-- expression\'s condition are included in the search results
+--
+-- /See:/ 'newModelMetadataSearchExpression' smart constructor.
+data ModelMetadataSearchExpression = ModelMetadataSearchExpression'
+  { -- | A list of filter objects.
+    filters :: Prelude.Maybe (Prelude.NonEmpty ModelMetadataFilter)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelMetadataSearchExpression' 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:
+--
+-- 'filters', 'modelMetadataSearchExpression_filters' - A list of filter objects.
+newModelMetadataSearchExpression ::
+  ModelMetadataSearchExpression
+newModelMetadataSearchExpression =
+  ModelMetadataSearchExpression'
+    { filters =
+        Prelude.Nothing
+    }
+
+-- | A list of filter objects.
+modelMetadataSearchExpression_filters :: Lens.Lens' ModelMetadataSearchExpression (Prelude.Maybe (Prelude.NonEmpty ModelMetadataFilter))
+modelMetadataSearchExpression_filters = Lens.lens (\ModelMetadataSearchExpression' {filters} -> filters) (\s@ModelMetadataSearchExpression' {} a -> s {filters = a} :: ModelMetadataSearchExpression) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    ModelMetadataSearchExpression
+  where
+  hashWithSalt _salt ModelMetadataSearchExpression' {..} =
+    _salt `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData ModelMetadataSearchExpression where
+  rnf ModelMetadataSearchExpression' {..} =
+    Prelude.rnf filters
+
+instance Data.ToJSON ModelMetadataSearchExpression where
+  toJSON ModelMetadataSearchExpression' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Filters" Data..=) Prelude.<$> filters]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelMetadataSummary.hs b/gen/Amazonka/SageMaker/Types/ModelMetadataSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelMetadataSummary.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelMetadataSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelMetadataSummary 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
+
+-- | A summary of the model metadata.
+--
+-- /See:/ 'newModelMetadataSummary' smart constructor.
+data ModelMetadataSummary = ModelMetadataSummary'
+  { -- | The machine learning domain of the model.
+    domain :: Prelude.Text,
+    -- | The machine learning framework of the model.
+    framework :: Prelude.Text,
+    -- | The machine learning task of the model.
+    task :: Prelude.Text,
+    -- | The name of the model.
+    model :: Prelude.Text,
+    -- | The framework version of the model.
+    frameworkVersion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelMetadataSummary' 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:
+--
+-- 'domain', 'modelMetadataSummary_domain' - The machine learning domain of the model.
+--
+-- 'framework', 'modelMetadataSummary_framework' - The machine learning framework of the model.
+--
+-- 'task', 'modelMetadataSummary_task' - The machine learning task of the model.
+--
+-- 'model', 'modelMetadataSummary_model' - The name of the model.
+--
+-- 'frameworkVersion', 'modelMetadataSummary_frameworkVersion' - The framework version of the model.
+newModelMetadataSummary ::
+  -- | 'domain'
+  Prelude.Text ->
+  -- | 'framework'
+  Prelude.Text ->
+  -- | 'task'
+  Prelude.Text ->
+  -- | 'model'
+  Prelude.Text ->
+  -- | 'frameworkVersion'
+  Prelude.Text ->
+  ModelMetadataSummary
+newModelMetadataSummary
+  pDomain_
+  pFramework_
+  pTask_
+  pModel_
+  pFrameworkVersion_ =
+    ModelMetadataSummary'
+      { domain = pDomain_,
+        framework = pFramework_,
+        task = pTask_,
+        model = pModel_,
+        frameworkVersion = pFrameworkVersion_
+      }
+
+-- | The machine learning domain of the model.
+modelMetadataSummary_domain :: Lens.Lens' ModelMetadataSummary Prelude.Text
+modelMetadataSummary_domain = Lens.lens (\ModelMetadataSummary' {domain} -> domain) (\s@ModelMetadataSummary' {} a -> s {domain = a} :: ModelMetadataSummary)
+
+-- | The machine learning framework of the model.
+modelMetadataSummary_framework :: Lens.Lens' ModelMetadataSummary Prelude.Text
+modelMetadataSummary_framework = Lens.lens (\ModelMetadataSummary' {framework} -> framework) (\s@ModelMetadataSummary' {} a -> s {framework = a} :: ModelMetadataSummary)
+
+-- | The machine learning task of the model.
+modelMetadataSummary_task :: Lens.Lens' ModelMetadataSummary Prelude.Text
+modelMetadataSummary_task = Lens.lens (\ModelMetadataSummary' {task} -> task) (\s@ModelMetadataSummary' {} a -> s {task = a} :: ModelMetadataSummary)
+
+-- | The name of the model.
+modelMetadataSummary_model :: Lens.Lens' ModelMetadataSummary Prelude.Text
+modelMetadataSummary_model = Lens.lens (\ModelMetadataSummary' {model} -> model) (\s@ModelMetadataSummary' {} a -> s {model = a} :: ModelMetadataSummary)
+
+-- | The framework version of the model.
+modelMetadataSummary_frameworkVersion :: Lens.Lens' ModelMetadataSummary Prelude.Text
+modelMetadataSummary_frameworkVersion = Lens.lens (\ModelMetadataSummary' {frameworkVersion} -> frameworkVersion) (\s@ModelMetadataSummary' {} a -> s {frameworkVersion = a} :: ModelMetadataSummary)
+
+instance Data.FromJSON ModelMetadataSummary where
+  parseJSON =
+    Data.withObject
+      "ModelMetadataSummary"
+      ( \x ->
+          ModelMetadataSummary'
+            Prelude.<$> (x Data..: "Domain")
+            Prelude.<*> (x Data..: "Framework")
+            Prelude.<*> (x Data..: "Task")
+            Prelude.<*> (x Data..: "Model")
+            Prelude.<*> (x Data..: "FrameworkVersion")
+      )
+
+instance Prelude.Hashable ModelMetadataSummary where
+  hashWithSalt _salt ModelMetadataSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` framework
+      `Prelude.hashWithSalt` task
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` frameworkVersion
+
+instance Prelude.NFData ModelMetadataSummary where
+  rnf ModelMetadataSummary' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf framework
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf frameworkVersion
diff --git a/gen/Amazonka/SageMaker/Types/ModelMetrics.hs b/gen/Amazonka/SageMaker/Types/ModelMetrics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelMetrics.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelMetrics
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelMetrics 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 Amazonka.SageMaker.Types.Bias
+import Amazonka.SageMaker.Types.Explainability
+import Amazonka.SageMaker.Types.ModelDataQuality
+import Amazonka.SageMaker.Types.ModelQuality
+
+-- | Contains metrics captured from a model.
+--
+-- /See:/ 'newModelMetrics' smart constructor.
+data ModelMetrics = ModelMetrics'
+  { -- | Metrics that measure bais in a model.
+    bias :: Prelude.Maybe Bias,
+    -- | Metrics that help explain a model.
+    explainability :: Prelude.Maybe Explainability,
+    -- | Metrics that measure the quality of the input data for a model.
+    modelDataQuality :: Prelude.Maybe ModelDataQuality,
+    -- | Metrics that measure the quality of a model.
+    modelQuality :: Prelude.Maybe ModelQuality
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelMetrics' 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:
+--
+-- 'bias', 'modelMetrics_bias' - Metrics that measure bais in a model.
+--
+-- 'explainability', 'modelMetrics_explainability' - Metrics that help explain a model.
+--
+-- 'modelDataQuality', 'modelMetrics_modelDataQuality' - Metrics that measure the quality of the input data for a model.
+--
+-- 'modelQuality', 'modelMetrics_modelQuality' - Metrics that measure the quality of a model.
+newModelMetrics ::
+  ModelMetrics
+newModelMetrics =
+  ModelMetrics'
+    { bias = Prelude.Nothing,
+      explainability = Prelude.Nothing,
+      modelDataQuality = Prelude.Nothing,
+      modelQuality = Prelude.Nothing
+    }
+
+-- | Metrics that measure bais in a model.
+modelMetrics_bias :: Lens.Lens' ModelMetrics (Prelude.Maybe Bias)
+modelMetrics_bias = Lens.lens (\ModelMetrics' {bias} -> bias) (\s@ModelMetrics' {} a -> s {bias = a} :: ModelMetrics)
+
+-- | Metrics that help explain a model.
+modelMetrics_explainability :: Lens.Lens' ModelMetrics (Prelude.Maybe Explainability)
+modelMetrics_explainability = Lens.lens (\ModelMetrics' {explainability} -> explainability) (\s@ModelMetrics' {} a -> s {explainability = a} :: ModelMetrics)
+
+-- | Metrics that measure the quality of the input data for a model.
+modelMetrics_modelDataQuality :: Lens.Lens' ModelMetrics (Prelude.Maybe ModelDataQuality)
+modelMetrics_modelDataQuality = Lens.lens (\ModelMetrics' {modelDataQuality} -> modelDataQuality) (\s@ModelMetrics' {} a -> s {modelDataQuality = a} :: ModelMetrics)
+
+-- | Metrics that measure the quality of a model.
+modelMetrics_modelQuality :: Lens.Lens' ModelMetrics (Prelude.Maybe ModelQuality)
+modelMetrics_modelQuality = Lens.lens (\ModelMetrics' {modelQuality} -> modelQuality) (\s@ModelMetrics' {} a -> s {modelQuality = a} :: ModelMetrics)
+
+instance Data.FromJSON ModelMetrics where
+  parseJSON =
+    Data.withObject
+      "ModelMetrics"
+      ( \x ->
+          ModelMetrics'
+            Prelude.<$> (x Data..:? "Bias")
+            Prelude.<*> (x Data..:? "Explainability")
+            Prelude.<*> (x Data..:? "ModelDataQuality")
+            Prelude.<*> (x Data..:? "ModelQuality")
+      )
+
+instance Prelude.Hashable ModelMetrics where
+  hashWithSalt _salt ModelMetrics' {..} =
+    _salt
+      `Prelude.hashWithSalt` bias
+      `Prelude.hashWithSalt` explainability
+      `Prelude.hashWithSalt` modelDataQuality
+      `Prelude.hashWithSalt` modelQuality
+
+instance Prelude.NFData ModelMetrics where
+  rnf ModelMetrics' {..} =
+    Prelude.rnf bias
+      `Prelude.seq` Prelude.rnf explainability
+      `Prelude.seq` Prelude.rnf modelDataQuality
+      `Prelude.seq` Prelude.rnf modelQuality
+
+instance Data.ToJSON ModelMetrics where
+  toJSON ModelMetrics' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bias" Data..=) Prelude.<$> bias,
+            ("Explainability" Data..=)
+              Prelude.<$> explainability,
+            ("ModelDataQuality" Data..=)
+              Prelude.<$> modelDataQuality,
+            ("ModelQuality" Data..=) Prelude.<$> modelQuality
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackage.hs b/gen/Amazonka/SageMaker/Types/ModelPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackage.hs
@@ -0,0 +1,501 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackage 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 Amazonka.SageMaker.Types.AdditionalInferenceSpecificationDefinition
+import Amazonka.SageMaker.Types.DriftCheckBaselines
+import Amazonka.SageMaker.Types.InferenceSpecification
+import Amazonka.SageMaker.Types.MetadataProperties
+import Amazonka.SageMaker.Types.ModelApprovalStatus
+import Amazonka.SageMaker.Types.ModelMetrics
+import Amazonka.SageMaker.Types.ModelPackageStatus
+import Amazonka.SageMaker.Types.ModelPackageStatusDetails
+import Amazonka.SageMaker.Types.ModelPackageValidationSpecification
+import Amazonka.SageMaker.Types.SourceAlgorithmSpecification
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | A versioned model that can be deployed for SageMaker inference.
+--
+-- /See:/ 'newModelPackage' smart constructor.
+data ModelPackage = ModelPackage'
+  { -- | An array of additional Inference Specification objects.
+    additionalInferenceSpecifications :: Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition),
+    -- | A description provided when the model approval is set.
+    approvalDescription :: Prelude.Maybe Prelude.Text,
+    -- | Whether the model package is to be certified to be listed on Amazon Web
+    -- Services Marketplace. For information about listing model packages on
+    -- Amazon Web Services Marketplace, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-mkt-list.html List Your Algorithm or Model Package on Amazon Web Services Marketplace>.
+    certifyForMarketplace :: Prelude.Maybe Prelude.Bool,
+    -- | Information about the user who created or modified an experiment, trial,
+    -- trial component, lineage group, or project.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | The time that the model package was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The metadata properties for the model package.
+    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.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | Represents the drift check baselines that can be used when the model
+    -- monitor is set using the model package.
+    driftCheckBaselines :: Prelude.Maybe DriftCheckBaselines,
+    -- | Defines how to perform inference generation after a training job is run.
+    inferenceSpecification :: Prelude.Maybe InferenceSpecification,
+    -- | Information about the user who created or modified an experiment, trial,
+    -- trial component, lineage group, or project.
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The last time the model package was modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | Metadata properties of the tracking entity, trial, or trial component.
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | The approval status of the model. This can be one of the following
+    -- values.
+    --
+    -- -   @APPROVED@ - The model is approved
+    --
+    -- -   @REJECTED@ - The model is rejected.
+    --
+    -- -   @PENDING_MANUAL_APPROVAL@ - The model is waiting for manual
+    --     approval.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | Metrics for the model.
+    modelMetrics :: Prelude.Maybe ModelMetrics,
+    -- | The Amazon Resource Name (ARN) of the model package.
+    modelPackageArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the model package.
+    modelPackageDescription :: Prelude.Maybe Prelude.Text,
+    -- | The model group to which the model belongs.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the model.
+    modelPackageName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the model package. This can be one of the following
+    -- values.
+    --
+    -- -   @PENDING@ - The model package is pending being created.
+    --
+    -- -   @IN_PROGRESS@ - The model package is in the process of being
+    --     created.
+    --
+    -- -   @COMPLETED@ - The model package was successfully created.
+    --
+    -- -   @FAILED@ - The model package failed.
+    --
+    -- -   @DELETING@ - The model package is in the process of being deleted.
+    modelPackageStatus :: Prelude.Maybe ModelPackageStatus,
+    -- | Specifies the validation and image scan statuses of the model package.
+    modelPackageStatusDetails :: Prelude.Maybe ModelPackageStatusDetails,
+    -- | The version number of a versioned model.
+    modelPackageVersion :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Simple Storage Service path where the sample payload are
+    -- stored. This path must point to a single gzip compressed tar archive
+    -- (.tar.gz suffix).
+    samplePayloadUrl :: Prelude.Maybe Prelude.Text,
+    -- | A list of algorithms that were used to create a model package.
+    sourceAlgorithmSpecification :: Prelude.Maybe SourceAlgorithmSpecification,
+    -- | A list of the tags associated with the model package. 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/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The machine learning task your model package accomplishes. Common
+    -- machine learning tasks include object detection and image
+    -- classification.
+    task :: Prelude.Maybe Prelude.Text,
+    -- | Specifies batch transform jobs that SageMaker runs to validate your
+    -- model package.
+    validationSpecification :: Prelude.Maybe ModelPackageValidationSpecification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackage' 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', 'modelPackage_additionalInferenceSpecifications' - An array of additional Inference Specification objects.
+--
+-- 'approvalDescription', 'modelPackage_approvalDescription' - A description provided when the model approval is set.
+--
+-- 'certifyForMarketplace', 'modelPackage_certifyForMarketplace' - Whether the model package is to be certified to be listed on Amazon Web
+-- Services Marketplace. For information about listing model packages on
+-- Amazon Web Services Marketplace, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-mkt-list.html List Your Algorithm or Model Package on Amazon Web Services Marketplace>.
+--
+-- 'createdBy', 'modelPackage_createdBy' - Information about the user who created or modified an experiment, trial,
+-- trial component, lineage group, or project.
+--
+-- 'creationTime', 'modelPackage_creationTime' - The time that the model package was created.
+--
+-- 'customerMetadataProperties', 'modelPackage_customerMetadataProperties' - The metadata properties for the model package.
+--
+-- 'domain', 'modelPackage_domain' - The machine learning domain of your model package and its components.
+-- Common machine learning domains include computer vision and natural
+-- language processing.
+--
+-- 'driftCheckBaselines', 'modelPackage_driftCheckBaselines' - Represents the drift check baselines that can be used when the model
+-- monitor is set using the model package.
+--
+-- 'inferenceSpecification', 'modelPackage_inferenceSpecification' - Defines how to perform inference generation after a training job is run.
+--
+-- 'lastModifiedBy', 'modelPackage_lastModifiedBy' - Information about the user who created or modified an experiment, trial,
+-- trial component, lineage group, or project.
+--
+-- 'lastModifiedTime', 'modelPackage_lastModifiedTime' - The last time the model package was modified.
+--
+-- 'metadataProperties', 'modelPackage_metadataProperties' - Metadata properties of the tracking entity, trial, or trial component.
+--
+-- 'modelApprovalStatus', 'modelPackage_modelApprovalStatus' - The approval status of the model. This can be one of the following
+-- values.
+--
+-- -   @APPROVED@ - The model is approved
+--
+-- -   @REJECTED@ - The model is rejected.
+--
+-- -   @PENDING_MANUAL_APPROVAL@ - The model is waiting for manual
+--     approval.
+--
+-- 'modelMetrics', 'modelPackage_modelMetrics' - Metrics for the model.
+--
+-- 'modelPackageArn', 'modelPackage_modelPackageArn' - The Amazon Resource Name (ARN) of the model package.
+--
+-- 'modelPackageDescription', 'modelPackage_modelPackageDescription' - The description of the model package.
+--
+-- 'modelPackageGroupName', 'modelPackage_modelPackageGroupName' - The model group to which the model belongs.
+--
+-- 'modelPackageName', 'modelPackage_modelPackageName' - The name of the model.
+--
+-- 'modelPackageStatus', 'modelPackage_modelPackageStatus' - The status of the model package. This can be one of the following
+-- values.
+--
+-- -   @PENDING@ - The model package is pending being created.
+--
+-- -   @IN_PROGRESS@ - The model package is in the process of being
+--     created.
+--
+-- -   @COMPLETED@ - The model package was successfully created.
+--
+-- -   @FAILED@ - The model package failed.
+--
+-- -   @DELETING@ - The model package is in the process of being deleted.
+--
+-- 'modelPackageStatusDetails', 'modelPackage_modelPackageStatusDetails' - Specifies the validation and image scan statuses of the model package.
+--
+-- 'modelPackageVersion', 'modelPackage_modelPackageVersion' - The version number of a versioned model.
+--
+-- 'samplePayloadUrl', 'modelPackage_samplePayloadUrl' - The Amazon Simple Storage Service path where the sample payload are
+-- stored. This path must point to a single gzip compressed tar archive
+-- (.tar.gz suffix).
+--
+-- 'sourceAlgorithmSpecification', 'modelPackage_sourceAlgorithmSpecification' - A list of algorithms that were used to create a model package.
+--
+-- 'tags', 'modelPackage_tags' - A list of the tags associated with the model package. 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', 'modelPackage_task' - The machine learning task your model package accomplishes. Common
+-- machine learning tasks include object detection and image
+-- classification.
+--
+-- 'validationSpecification', 'modelPackage_validationSpecification' - Specifies batch transform jobs that SageMaker runs to validate your
+-- model package.
+newModelPackage ::
+  ModelPackage
+newModelPackage =
+  ModelPackage'
+    { additionalInferenceSpecifications =
+        Prelude.Nothing,
+      approvalDescription = Prelude.Nothing,
+      certifyForMarketplace = Prelude.Nothing,
+      createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      customerMetadataProperties = Prelude.Nothing,
+      domain = Prelude.Nothing,
+      driftCheckBaselines = Prelude.Nothing,
+      inferenceSpecification = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      modelApprovalStatus = Prelude.Nothing,
+      modelMetrics = Prelude.Nothing,
+      modelPackageArn = Prelude.Nothing,
+      modelPackageDescription = Prelude.Nothing,
+      modelPackageGroupName = Prelude.Nothing,
+      modelPackageName = Prelude.Nothing,
+      modelPackageStatus = Prelude.Nothing,
+      modelPackageStatusDetails = Prelude.Nothing,
+      modelPackageVersion = Prelude.Nothing,
+      samplePayloadUrl = Prelude.Nothing,
+      sourceAlgorithmSpecification = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      task = Prelude.Nothing,
+      validationSpecification = Prelude.Nothing
+    }
+
+-- | An array of additional Inference Specification objects.
+modelPackage_additionalInferenceSpecifications :: Lens.Lens' ModelPackage (Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition))
+modelPackage_additionalInferenceSpecifications = Lens.lens (\ModelPackage' {additionalInferenceSpecifications} -> additionalInferenceSpecifications) (\s@ModelPackage' {} a -> s {additionalInferenceSpecifications = a} :: ModelPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description provided when the model approval is set.
+modelPackage_approvalDescription :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_approvalDescription = Lens.lens (\ModelPackage' {approvalDescription} -> approvalDescription) (\s@ModelPackage' {} a -> s {approvalDescription = a} :: ModelPackage)
+
+-- | Whether the model package is to be certified to be listed on Amazon Web
+-- Services Marketplace. For information about listing model packages on
+-- Amazon Web Services Marketplace, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-mkt-list.html List Your Algorithm or Model Package on Amazon Web Services Marketplace>.
+modelPackage_certifyForMarketplace :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Bool)
+modelPackage_certifyForMarketplace = Lens.lens (\ModelPackage' {certifyForMarketplace} -> certifyForMarketplace) (\s@ModelPackage' {} a -> s {certifyForMarketplace = a} :: ModelPackage)
+
+-- | Information about the user who created or modified an experiment, trial,
+-- trial component, lineage group, or project.
+modelPackage_createdBy :: Lens.Lens' ModelPackage (Prelude.Maybe UserContext)
+modelPackage_createdBy = Lens.lens (\ModelPackage' {createdBy} -> createdBy) (\s@ModelPackage' {} a -> s {createdBy = a} :: ModelPackage)
+
+-- | The time that the model package was created.
+modelPackage_creationTime :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.UTCTime)
+modelPackage_creationTime = Lens.lens (\ModelPackage' {creationTime} -> creationTime) (\s@ModelPackage' {} a -> s {creationTime = a} :: ModelPackage) Prelude.. Lens.mapping Data._Time
+
+-- | The metadata properties for the model package.
+modelPackage_customerMetadataProperties :: Lens.Lens' ModelPackage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+modelPackage_customerMetadataProperties = Lens.lens (\ModelPackage' {customerMetadataProperties} -> customerMetadataProperties) (\s@ModelPackage' {} a -> s {customerMetadataProperties = a} :: ModelPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The machine learning domain of your model package and its components.
+-- Common machine learning domains include computer vision and natural
+-- language processing.
+modelPackage_domain :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_domain = Lens.lens (\ModelPackage' {domain} -> domain) (\s@ModelPackage' {} a -> s {domain = a} :: ModelPackage)
+
+-- | Represents the drift check baselines that can be used when the model
+-- monitor is set using the model package.
+modelPackage_driftCheckBaselines :: Lens.Lens' ModelPackage (Prelude.Maybe DriftCheckBaselines)
+modelPackage_driftCheckBaselines = Lens.lens (\ModelPackage' {driftCheckBaselines} -> driftCheckBaselines) (\s@ModelPackage' {} a -> s {driftCheckBaselines = a} :: ModelPackage)
+
+-- | Defines how to perform inference generation after a training job is run.
+modelPackage_inferenceSpecification :: Lens.Lens' ModelPackage (Prelude.Maybe InferenceSpecification)
+modelPackage_inferenceSpecification = Lens.lens (\ModelPackage' {inferenceSpecification} -> inferenceSpecification) (\s@ModelPackage' {} a -> s {inferenceSpecification = a} :: ModelPackage)
+
+-- | Information about the user who created or modified an experiment, trial,
+-- trial component, lineage group, or project.
+modelPackage_lastModifiedBy :: Lens.Lens' ModelPackage (Prelude.Maybe UserContext)
+modelPackage_lastModifiedBy = Lens.lens (\ModelPackage' {lastModifiedBy} -> lastModifiedBy) (\s@ModelPackage' {} a -> s {lastModifiedBy = a} :: ModelPackage)
+
+-- | The last time the model package was modified.
+modelPackage_lastModifiedTime :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.UTCTime)
+modelPackage_lastModifiedTime = Lens.lens (\ModelPackage' {lastModifiedTime} -> lastModifiedTime) (\s@ModelPackage' {} a -> s {lastModifiedTime = a} :: ModelPackage) Prelude.. Lens.mapping Data._Time
+
+-- | Metadata properties of the tracking entity, trial, or trial component.
+modelPackage_metadataProperties :: Lens.Lens' ModelPackage (Prelude.Maybe MetadataProperties)
+modelPackage_metadataProperties = Lens.lens (\ModelPackage' {metadataProperties} -> metadataProperties) (\s@ModelPackage' {} a -> s {metadataProperties = a} :: ModelPackage)
+
+-- | The approval status of the model. This can be one of the following
+-- values.
+--
+-- -   @APPROVED@ - The model is approved
+--
+-- -   @REJECTED@ - The model is rejected.
+--
+-- -   @PENDING_MANUAL_APPROVAL@ - The model is waiting for manual
+--     approval.
+modelPackage_modelApprovalStatus :: Lens.Lens' ModelPackage (Prelude.Maybe ModelApprovalStatus)
+modelPackage_modelApprovalStatus = Lens.lens (\ModelPackage' {modelApprovalStatus} -> modelApprovalStatus) (\s@ModelPackage' {} a -> s {modelApprovalStatus = a} :: ModelPackage)
+
+-- | Metrics for the model.
+modelPackage_modelMetrics :: Lens.Lens' ModelPackage (Prelude.Maybe ModelMetrics)
+modelPackage_modelMetrics = Lens.lens (\ModelPackage' {modelMetrics} -> modelMetrics) (\s@ModelPackage' {} a -> s {modelMetrics = a} :: ModelPackage)
+
+-- | The Amazon Resource Name (ARN) of the model package.
+modelPackage_modelPackageArn :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_modelPackageArn = Lens.lens (\ModelPackage' {modelPackageArn} -> modelPackageArn) (\s@ModelPackage' {} a -> s {modelPackageArn = a} :: ModelPackage)
+
+-- | The description of the model package.
+modelPackage_modelPackageDescription :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_modelPackageDescription = Lens.lens (\ModelPackage' {modelPackageDescription} -> modelPackageDescription) (\s@ModelPackage' {} a -> s {modelPackageDescription = a} :: ModelPackage)
+
+-- | The model group to which the model belongs.
+modelPackage_modelPackageGroupName :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_modelPackageGroupName = Lens.lens (\ModelPackage' {modelPackageGroupName} -> modelPackageGroupName) (\s@ModelPackage' {} a -> s {modelPackageGroupName = a} :: ModelPackage)
+
+-- | The name of the model.
+modelPackage_modelPackageName :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_modelPackageName = Lens.lens (\ModelPackage' {modelPackageName} -> modelPackageName) (\s@ModelPackage' {} a -> s {modelPackageName = a} :: ModelPackage)
+
+-- | The status of the model package. This can be one of the following
+-- values.
+--
+-- -   @PENDING@ - The model package is pending being created.
+--
+-- -   @IN_PROGRESS@ - The model package is in the process of being
+--     created.
+--
+-- -   @COMPLETED@ - The model package was successfully created.
+--
+-- -   @FAILED@ - The model package failed.
+--
+-- -   @DELETING@ - The model package is in the process of being deleted.
+modelPackage_modelPackageStatus :: Lens.Lens' ModelPackage (Prelude.Maybe ModelPackageStatus)
+modelPackage_modelPackageStatus = Lens.lens (\ModelPackage' {modelPackageStatus} -> modelPackageStatus) (\s@ModelPackage' {} a -> s {modelPackageStatus = a} :: ModelPackage)
+
+-- | Specifies the validation and image scan statuses of the model package.
+modelPackage_modelPackageStatusDetails :: Lens.Lens' ModelPackage (Prelude.Maybe ModelPackageStatusDetails)
+modelPackage_modelPackageStatusDetails = Lens.lens (\ModelPackage' {modelPackageStatusDetails} -> modelPackageStatusDetails) (\s@ModelPackage' {} a -> s {modelPackageStatusDetails = a} :: ModelPackage)
+
+-- | The version number of a versioned model.
+modelPackage_modelPackageVersion :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Natural)
+modelPackage_modelPackageVersion = Lens.lens (\ModelPackage' {modelPackageVersion} -> modelPackageVersion) (\s@ModelPackage' {} a -> s {modelPackageVersion = a} :: ModelPackage)
+
+-- | The Amazon Simple Storage Service path where the sample payload are
+-- stored. This path must point to a single gzip compressed tar archive
+-- (.tar.gz suffix).
+modelPackage_samplePayloadUrl :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_samplePayloadUrl = Lens.lens (\ModelPackage' {samplePayloadUrl} -> samplePayloadUrl) (\s@ModelPackage' {} a -> s {samplePayloadUrl = a} :: ModelPackage)
+
+-- | A list of algorithms that were used to create a model package.
+modelPackage_sourceAlgorithmSpecification :: Lens.Lens' ModelPackage (Prelude.Maybe SourceAlgorithmSpecification)
+modelPackage_sourceAlgorithmSpecification = Lens.lens (\ModelPackage' {sourceAlgorithmSpecification} -> sourceAlgorithmSpecification) (\s@ModelPackage' {} a -> s {sourceAlgorithmSpecification = a} :: ModelPackage)
+
+-- | A list of the tags associated with the model package. 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/.
+modelPackage_tags :: Lens.Lens' ModelPackage (Prelude.Maybe [Tag])
+modelPackage_tags = Lens.lens (\ModelPackage' {tags} -> tags) (\s@ModelPackage' {} a -> s {tags = a} :: ModelPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The machine learning task your model package accomplishes. Common
+-- machine learning tasks include object detection and image
+-- classification.
+modelPackage_task :: Lens.Lens' ModelPackage (Prelude.Maybe Prelude.Text)
+modelPackage_task = Lens.lens (\ModelPackage' {task} -> task) (\s@ModelPackage' {} a -> s {task = a} :: ModelPackage)
+
+-- | Specifies batch transform jobs that SageMaker runs to validate your
+-- model package.
+modelPackage_validationSpecification :: Lens.Lens' ModelPackage (Prelude.Maybe ModelPackageValidationSpecification)
+modelPackage_validationSpecification = Lens.lens (\ModelPackage' {validationSpecification} -> validationSpecification) (\s@ModelPackage' {} a -> s {validationSpecification = a} :: ModelPackage)
+
+instance Data.FromJSON ModelPackage where
+  parseJSON =
+    Data.withObject
+      "ModelPackage"
+      ( \x ->
+          ModelPackage'
+            Prelude.<$> (x Data..:? "AdditionalInferenceSpecifications")
+            Prelude.<*> (x Data..:? "ApprovalDescription")
+            Prelude.<*> (x Data..:? "CertifyForMarketplace")
+            Prelude.<*> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> ( x
+                            Data..:? "CustomerMetadataProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Domain")
+            Prelude.<*> (x Data..:? "DriftCheckBaselines")
+            Prelude.<*> (x Data..:? "InferenceSpecification")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "MetadataProperties")
+            Prelude.<*> (x Data..:? "ModelApprovalStatus")
+            Prelude.<*> (x Data..:? "ModelMetrics")
+            Prelude.<*> (x Data..:? "ModelPackageArn")
+            Prelude.<*> (x Data..:? "ModelPackageDescription")
+            Prelude.<*> (x Data..:? "ModelPackageGroupName")
+            Prelude.<*> (x Data..:? "ModelPackageName")
+            Prelude.<*> (x Data..:? "ModelPackageStatus")
+            Prelude.<*> (x Data..:? "ModelPackageStatusDetails")
+            Prelude.<*> (x Data..:? "ModelPackageVersion")
+            Prelude.<*> (x Data..:? "SamplePayloadUrl")
+            Prelude.<*> (x Data..:? "SourceAlgorithmSpecification")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Task")
+            Prelude.<*> (x Data..:? "ValidationSpecification")
+      )
+
+instance Prelude.Hashable ModelPackage where
+  hashWithSalt _salt ModelPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalInferenceSpecifications
+      `Prelude.hashWithSalt` approvalDescription
+      `Prelude.hashWithSalt` certifyForMarketplace
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` customerMetadataProperties
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` driftCheckBaselines
+      `Prelude.hashWithSalt` inferenceSpecification
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` modelApprovalStatus
+      `Prelude.hashWithSalt` modelMetrics
+      `Prelude.hashWithSalt` modelPackageArn
+      `Prelude.hashWithSalt` modelPackageDescription
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` modelPackageName
+      `Prelude.hashWithSalt` modelPackageStatus
+      `Prelude.hashWithSalt` modelPackageStatusDetails
+      `Prelude.hashWithSalt` modelPackageVersion
+      `Prelude.hashWithSalt` samplePayloadUrl
+      `Prelude.hashWithSalt` sourceAlgorithmSpecification
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` task
+      `Prelude.hashWithSalt` validationSpecification
+
+instance Prelude.NFData ModelPackage where
+  rnf ModelPackage' {..} =
+    Prelude.rnf additionalInferenceSpecifications
+      `Prelude.seq` Prelude.rnf approvalDescription
+      `Prelude.seq` Prelude.rnf certifyForMarketplace
+      `Prelude.seq` Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf customerMetadataProperties
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf driftCheckBaselines
+      `Prelude.seq` Prelude.rnf inferenceSpecification
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelMetrics
+      `Prelude.seq` Prelude.rnf modelPackageArn
+      `Prelude.seq` Prelude.rnf modelPackageDescription
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageName
+      `Prelude.seq` Prelude.rnf modelPackageStatus
+      `Prelude.seq` Prelude.rnf
+        modelPackageStatusDetails
+      `Prelude.seq` Prelude.rnf
+        modelPackageVersion
+      `Prelude.seq` Prelude.rnf
+        samplePayloadUrl
+      `Prelude.seq` Prelude.rnf
+        sourceAlgorithmSpecification
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf
+        validationSpecification
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageContainerDefinition.hs b/gen/Amazonka/SageMaker/Types/ModelPackageContainerDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageContainerDefinition.hs
@@ -0,0 +1,269 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageContainerDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageContainerDefinition 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 Amazonka.SageMaker.Types.ModelInput
+
+-- | Describes the Docker container for the model package.
+--
+-- /See:/ 'newModelPackageContainerDefinition' smart constructor.
+data ModelPackageContainerDefinition = ModelPackageContainerDefinition'
+  { -- | The DNS host name for the Docker container.
+    containerHostname :: Prelude.Maybe Prelude.Text,
+    -- | The environment variables to set in the Docker container. Each key and
+    -- value in the @Environment@ string to string map can have length of up to
+    -- 1024. We support up to 16 entries in the map.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The machine learning framework of the model package container image.
+    framework :: Prelude.Maybe Prelude.Text,
+    -- | The framework version of the Model Package Container Image.
+    frameworkVersion :: Prelude.Maybe Prelude.Text,
+    -- | An MD5 hash of the training algorithm that identifies the Docker image
+    -- used for training.
+    imageDigest :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 path where the model artifacts, which result from model
+    -- training, are stored. This path must point to a single @gzip@ compressed
+    -- tar archive (@.tar.gz@ suffix).
+    --
+    -- The model artifacts must be in an S3 bucket that is in the same region
+    -- as the model package.
+    modelDataUrl :: Prelude.Maybe Prelude.Text,
+    -- | A structure with Model Input details.
+    modelInput :: Prelude.Maybe ModelInput,
+    -- | The name of a pre-trained machine learning benchmarked by Amazon
+    -- SageMaker Inference Recommender model that matches your model. You can
+    -- find a list of benchmarked models by calling @ListModelMetadata@.
+    nearestModelName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Marketplace product ID of the model package.
+    productId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code
+    -- is stored.
+    --
+    -- If you are using your own custom algorithm instead of an algorithm
+    -- provided by SageMaker, the inference code must meet SageMaker
+    -- requirements. SageMaker supports both @registry\/repository[:tag]@ and
+    -- @registry\/repository[\@digest]@ image path formats. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+    image :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageContainerDefinition' 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:
+--
+-- 'containerHostname', 'modelPackageContainerDefinition_containerHostname' - The DNS host name for the Docker container.
+--
+-- 'environment', 'modelPackageContainerDefinition_environment' - The environment variables to set in the Docker container. Each key and
+-- value in the @Environment@ string to string map can have length of up to
+-- 1024. We support up to 16 entries in the map.
+--
+-- 'framework', 'modelPackageContainerDefinition_framework' - The machine learning framework of the model package container image.
+--
+-- 'frameworkVersion', 'modelPackageContainerDefinition_frameworkVersion' - The framework version of the Model Package Container Image.
+--
+-- 'imageDigest', 'modelPackageContainerDefinition_imageDigest' - An MD5 hash of the training algorithm that identifies the Docker image
+-- used for training.
+--
+-- 'modelDataUrl', 'modelPackageContainerDefinition_modelDataUrl' - The Amazon S3 path where the model artifacts, which result from model
+-- training, are stored. This path must point to a single @gzip@ compressed
+-- tar archive (@.tar.gz@ suffix).
+--
+-- The model artifacts must be in an S3 bucket that is in the same region
+-- as the model package.
+--
+-- 'modelInput', 'modelPackageContainerDefinition_modelInput' - A structure with Model Input details.
+--
+-- 'nearestModelName', 'modelPackageContainerDefinition_nearestModelName' - The name of a pre-trained machine learning benchmarked by Amazon
+-- SageMaker Inference Recommender model that matches your model. You can
+-- find a list of benchmarked models by calling @ListModelMetadata@.
+--
+-- 'productId', 'modelPackageContainerDefinition_productId' - The Amazon Web Services Marketplace product ID of the model package.
+--
+-- 'image', 'modelPackageContainerDefinition_image' - The Amazon EC2 Container Registry (Amazon ECR) path where inference code
+-- is stored.
+--
+-- If you are using your own custom algorithm instead of an algorithm
+-- provided by SageMaker, the inference code must meet SageMaker
+-- requirements. SageMaker supports both @registry\/repository[:tag]@ and
+-- @registry\/repository[\@digest]@ image path formats. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+newModelPackageContainerDefinition ::
+  -- | 'image'
+  Prelude.Text ->
+  ModelPackageContainerDefinition
+newModelPackageContainerDefinition pImage_ =
+  ModelPackageContainerDefinition'
+    { containerHostname =
+        Prelude.Nothing,
+      environment = Prelude.Nothing,
+      framework = Prelude.Nothing,
+      frameworkVersion = Prelude.Nothing,
+      imageDigest = Prelude.Nothing,
+      modelDataUrl = Prelude.Nothing,
+      modelInput = Prelude.Nothing,
+      nearestModelName = Prelude.Nothing,
+      productId = Prelude.Nothing,
+      image = pImage_
+    }
+
+-- | The DNS host name for the Docker container.
+modelPackageContainerDefinition_containerHostname :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_containerHostname = Lens.lens (\ModelPackageContainerDefinition' {containerHostname} -> containerHostname) (\s@ModelPackageContainerDefinition' {} a -> s {containerHostname = a} :: ModelPackageContainerDefinition)
+
+-- | The environment variables to set in the Docker container. Each key and
+-- value in the @Environment@ string to string map can have length of up to
+-- 1024. We support up to 16 entries in the map.
+modelPackageContainerDefinition_environment :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+modelPackageContainerDefinition_environment = Lens.lens (\ModelPackageContainerDefinition' {environment} -> environment) (\s@ModelPackageContainerDefinition' {} a -> s {environment = a} :: ModelPackageContainerDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The machine learning framework of the model package container image.
+modelPackageContainerDefinition_framework :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_framework = Lens.lens (\ModelPackageContainerDefinition' {framework} -> framework) (\s@ModelPackageContainerDefinition' {} a -> s {framework = a} :: ModelPackageContainerDefinition)
+
+-- | The framework version of the Model Package Container Image.
+modelPackageContainerDefinition_frameworkVersion :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_frameworkVersion = Lens.lens (\ModelPackageContainerDefinition' {frameworkVersion} -> frameworkVersion) (\s@ModelPackageContainerDefinition' {} a -> s {frameworkVersion = a} :: ModelPackageContainerDefinition)
+
+-- | An MD5 hash of the training algorithm that identifies the Docker image
+-- used for training.
+modelPackageContainerDefinition_imageDigest :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_imageDigest = Lens.lens (\ModelPackageContainerDefinition' {imageDigest} -> imageDigest) (\s@ModelPackageContainerDefinition' {} a -> s {imageDigest = a} :: ModelPackageContainerDefinition)
+
+-- | The Amazon S3 path where the model artifacts, which result from model
+-- training, are stored. This path must point to a single @gzip@ compressed
+-- tar archive (@.tar.gz@ suffix).
+--
+-- The model artifacts must be in an S3 bucket that is in the same region
+-- as the model package.
+modelPackageContainerDefinition_modelDataUrl :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_modelDataUrl = Lens.lens (\ModelPackageContainerDefinition' {modelDataUrl} -> modelDataUrl) (\s@ModelPackageContainerDefinition' {} a -> s {modelDataUrl = a} :: ModelPackageContainerDefinition)
+
+-- | A structure with Model Input details.
+modelPackageContainerDefinition_modelInput :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe ModelInput)
+modelPackageContainerDefinition_modelInput = Lens.lens (\ModelPackageContainerDefinition' {modelInput} -> modelInput) (\s@ModelPackageContainerDefinition' {} a -> s {modelInput = a} :: ModelPackageContainerDefinition)
+
+-- | The name of a pre-trained machine learning benchmarked by Amazon
+-- SageMaker Inference Recommender model that matches your model. You can
+-- find a list of benchmarked models by calling @ListModelMetadata@.
+modelPackageContainerDefinition_nearestModelName :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_nearestModelName = Lens.lens (\ModelPackageContainerDefinition' {nearestModelName} -> nearestModelName) (\s@ModelPackageContainerDefinition' {} a -> s {nearestModelName = a} :: ModelPackageContainerDefinition)
+
+-- | The Amazon Web Services Marketplace product ID of the model package.
+modelPackageContainerDefinition_productId :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
+modelPackageContainerDefinition_productId = Lens.lens (\ModelPackageContainerDefinition' {productId} -> productId) (\s@ModelPackageContainerDefinition' {} a -> s {productId = a} :: ModelPackageContainerDefinition)
+
+-- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code
+-- is stored.
+--
+-- If you are using your own custom algorithm instead of an algorithm
+-- provided by SageMaker, the inference code must meet SageMaker
+-- requirements. SageMaker supports both @registry\/repository[:tag]@ and
+-- @registry\/repository[\@digest]@ image path formats. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
+modelPackageContainerDefinition_image :: Lens.Lens' ModelPackageContainerDefinition Prelude.Text
+modelPackageContainerDefinition_image = Lens.lens (\ModelPackageContainerDefinition' {image} -> image) (\s@ModelPackageContainerDefinition' {} a -> s {image = a} :: ModelPackageContainerDefinition)
+
+instance
+  Data.FromJSON
+    ModelPackageContainerDefinition
+  where
+  parseJSON =
+    Data.withObject
+      "ModelPackageContainerDefinition"
+      ( \x ->
+          ModelPackageContainerDefinition'
+            Prelude.<$> (x Data..:? "ContainerHostname")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Framework")
+            Prelude.<*> (x Data..:? "FrameworkVersion")
+            Prelude.<*> (x Data..:? "ImageDigest")
+            Prelude.<*> (x Data..:? "ModelDataUrl")
+            Prelude.<*> (x Data..:? "ModelInput")
+            Prelude.<*> (x Data..:? "NearestModelName")
+            Prelude.<*> (x Data..:? "ProductId")
+            Prelude.<*> (x Data..: "Image")
+      )
+
+instance
+  Prelude.Hashable
+    ModelPackageContainerDefinition
+  where
+  hashWithSalt
+    _salt
+    ModelPackageContainerDefinition' {..} =
+      _salt
+        `Prelude.hashWithSalt` containerHostname
+        `Prelude.hashWithSalt` environment
+        `Prelude.hashWithSalt` framework
+        `Prelude.hashWithSalt` frameworkVersion
+        `Prelude.hashWithSalt` imageDigest
+        `Prelude.hashWithSalt` modelDataUrl
+        `Prelude.hashWithSalt` modelInput
+        `Prelude.hashWithSalt` nearestModelName
+        `Prelude.hashWithSalt` productId
+        `Prelude.hashWithSalt` image
+
+instance
+  Prelude.NFData
+    ModelPackageContainerDefinition
+  where
+  rnf ModelPackageContainerDefinition' {..} =
+    Prelude.rnf containerHostname
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf framework
+      `Prelude.seq` Prelude.rnf frameworkVersion
+      `Prelude.seq` Prelude.rnf imageDigest
+      `Prelude.seq` Prelude.rnf modelDataUrl
+      `Prelude.seq` Prelude.rnf modelInput
+      `Prelude.seq` Prelude.rnf nearestModelName
+      `Prelude.seq` Prelude.rnf productId
+      `Prelude.seq` Prelude.rnf image
+
+instance Data.ToJSON ModelPackageContainerDefinition where
+  toJSON ModelPackageContainerDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerHostname" Data..=)
+              Prelude.<$> containerHostname,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("Framework" Data..=) Prelude.<$> framework,
+            ("FrameworkVersion" Data..=)
+              Prelude.<$> frameworkVersion,
+            ("ImageDigest" Data..=) Prelude.<$> imageDigest,
+            ("ModelDataUrl" Data..=) Prelude.<$> modelDataUrl,
+            ("ModelInput" Data..=) Prelude.<$> modelInput,
+            ("NearestModelName" Data..=)
+              Prelude.<$> nearestModelName,
+            ("ProductId" Data..=) Prelude.<$> productId,
+            Prelude.Just ("Image" Data..= image)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageGroup.hs b/gen/Amazonka/SageMaker/Types/ModelPackageGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageGroup.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageGroup 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 Amazonka.SageMaker.Types.ModelPackageGroupStatus
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | A group of versioned models in the model registry.
+--
+-- /See:/ 'newModelPackageGroup' smart constructor.
+data ModelPackageGroup = ModelPackageGroup'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | The time that the model group was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the model group.
+    modelPackageGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The description for the model group.
+    modelPackageGroupDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name of the model group.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the model group. This can be one of the following values.
+    --
+    -- -   @PENDING@ - The model group is pending being created.
+    --
+    -- -   @IN_PROGRESS@ - The model group is in the process of being created.
+    --
+    -- -   @COMPLETED@ - The model group was successfully created.
+    --
+    -- -   @FAILED@ - The model group failed.
+    --
+    -- -   @DELETING@ - The model group is in the process of being deleted.
+    --
+    -- -   @DELETE_FAILED@ - SageMaker failed to delete the model group.
+    modelPackageGroupStatus :: Prelude.Maybe ModelPackageGroupStatus,
+    -- | A list of the tags associated with the model group. 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/.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageGroup' 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:
+--
+-- 'createdBy', 'modelPackageGroup_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'modelPackageGroup_creationTime' - The time that the model group was created.
+--
+-- 'modelPackageGroupArn', 'modelPackageGroup_modelPackageGroupArn' - The Amazon Resource Name (ARN) of the model group.
+--
+-- 'modelPackageGroupDescription', 'modelPackageGroup_modelPackageGroupDescription' - The description for the model group.
+--
+-- 'modelPackageGroupName', 'modelPackageGroup_modelPackageGroupName' - The name of the model group.
+--
+-- 'modelPackageGroupStatus', 'modelPackageGroup_modelPackageGroupStatus' - The status of the model group. This can be one of the following values.
+--
+-- -   @PENDING@ - The model group is pending being created.
+--
+-- -   @IN_PROGRESS@ - The model group is in the process of being created.
+--
+-- -   @COMPLETED@ - The model group was successfully created.
+--
+-- -   @FAILED@ - The model group failed.
+--
+-- -   @DELETING@ - The model group is in the process of being deleted.
+--
+-- -   @DELETE_FAILED@ - SageMaker failed to delete the model group.
+--
+-- 'tags', 'modelPackageGroup_tags' - A list of the tags associated with the model group. 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/.
+newModelPackageGroup ::
+  ModelPackageGroup
+newModelPackageGroup =
+  ModelPackageGroup'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      modelPackageGroupArn = Prelude.Nothing,
+      modelPackageGroupDescription = Prelude.Nothing,
+      modelPackageGroupName = Prelude.Nothing,
+      modelPackageGroupStatus = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+modelPackageGroup_createdBy :: Lens.Lens' ModelPackageGroup (Prelude.Maybe UserContext)
+modelPackageGroup_createdBy = Lens.lens (\ModelPackageGroup' {createdBy} -> createdBy) (\s@ModelPackageGroup' {} a -> s {createdBy = a} :: ModelPackageGroup)
+
+-- | The time that the model group was created.
+modelPackageGroup_creationTime :: Lens.Lens' ModelPackageGroup (Prelude.Maybe Prelude.UTCTime)
+modelPackageGroup_creationTime = Lens.lens (\ModelPackageGroup' {creationTime} -> creationTime) (\s@ModelPackageGroup' {} a -> s {creationTime = a} :: ModelPackageGroup) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the model group.
+modelPackageGroup_modelPackageGroupArn :: Lens.Lens' ModelPackageGroup (Prelude.Maybe Prelude.Text)
+modelPackageGroup_modelPackageGroupArn = Lens.lens (\ModelPackageGroup' {modelPackageGroupArn} -> modelPackageGroupArn) (\s@ModelPackageGroup' {} a -> s {modelPackageGroupArn = a} :: ModelPackageGroup)
+
+-- | The description for the model group.
+modelPackageGroup_modelPackageGroupDescription :: Lens.Lens' ModelPackageGroup (Prelude.Maybe Prelude.Text)
+modelPackageGroup_modelPackageGroupDescription = Lens.lens (\ModelPackageGroup' {modelPackageGroupDescription} -> modelPackageGroupDescription) (\s@ModelPackageGroup' {} a -> s {modelPackageGroupDescription = a} :: ModelPackageGroup)
+
+-- | The name of the model group.
+modelPackageGroup_modelPackageGroupName :: Lens.Lens' ModelPackageGroup (Prelude.Maybe Prelude.Text)
+modelPackageGroup_modelPackageGroupName = Lens.lens (\ModelPackageGroup' {modelPackageGroupName} -> modelPackageGroupName) (\s@ModelPackageGroup' {} a -> s {modelPackageGroupName = a} :: ModelPackageGroup)
+
+-- | The status of the model group. This can be one of the following values.
+--
+-- -   @PENDING@ - The model group is pending being created.
+--
+-- -   @IN_PROGRESS@ - The model group is in the process of being created.
+--
+-- -   @COMPLETED@ - The model group was successfully created.
+--
+-- -   @FAILED@ - The model group failed.
+--
+-- -   @DELETING@ - The model group is in the process of being deleted.
+--
+-- -   @DELETE_FAILED@ - SageMaker failed to delete the model group.
+modelPackageGroup_modelPackageGroupStatus :: Lens.Lens' ModelPackageGroup (Prelude.Maybe ModelPackageGroupStatus)
+modelPackageGroup_modelPackageGroupStatus = Lens.lens (\ModelPackageGroup' {modelPackageGroupStatus} -> modelPackageGroupStatus) (\s@ModelPackageGroup' {} a -> s {modelPackageGroupStatus = a} :: ModelPackageGroup)
+
+-- | A list of the tags associated with the model group. 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/.
+modelPackageGroup_tags :: Lens.Lens' ModelPackageGroup (Prelude.Maybe [Tag])
+modelPackageGroup_tags = Lens.lens (\ModelPackageGroup' {tags} -> tags) (\s@ModelPackageGroup' {} a -> s {tags = a} :: ModelPackageGroup) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ModelPackageGroup where
+  parseJSON =
+    Data.withObject
+      "ModelPackageGroup"
+      ( \x ->
+          ModelPackageGroup'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "ModelPackageGroupArn")
+            Prelude.<*> (x Data..:? "ModelPackageGroupDescription")
+            Prelude.<*> (x Data..:? "ModelPackageGroupName")
+            Prelude.<*> (x Data..:? "ModelPackageGroupStatus")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ModelPackageGroup where
+  hashWithSalt _salt ModelPackageGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` modelPackageGroupArn
+      `Prelude.hashWithSalt` modelPackageGroupDescription
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` modelPackageGroupStatus
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ModelPackageGroup where
+  rnf ModelPackageGroup' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf modelPackageGroupArn
+      `Prelude.seq` Prelude.rnf modelPackageGroupDescription
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageGroupStatus
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageGroupSortBy.hs b/gen/Amazonka/SageMaker/Types/ModelPackageGroupSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageGroupSortBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelPackageGroupSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageGroupSortBy
+  ( ModelPackageGroupSortBy
+      ( ..,
+        ModelPackageGroupSortBy_CreationTime,
+        ModelPackageGroupSortBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelPackageGroupSortBy = ModelPackageGroupSortBy'
+  { fromModelPackageGroupSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelPackageGroupSortBy_CreationTime :: ModelPackageGroupSortBy
+pattern ModelPackageGroupSortBy_CreationTime = ModelPackageGroupSortBy' "CreationTime"
+
+pattern ModelPackageGroupSortBy_Name :: ModelPackageGroupSortBy
+pattern ModelPackageGroupSortBy_Name = ModelPackageGroupSortBy' "Name"
+
+{-# COMPLETE
+  ModelPackageGroupSortBy_CreationTime,
+  ModelPackageGroupSortBy_Name,
+  ModelPackageGroupSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageGroupStatus.hs b/gen/Amazonka/SageMaker/Types/ModelPackageGroupStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageGroupStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelPackageGroupStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageGroupStatus
+  ( ModelPackageGroupStatus
+      ( ..,
+        ModelPackageGroupStatus_Completed,
+        ModelPackageGroupStatus_DeleteFailed,
+        ModelPackageGroupStatus_Deleting,
+        ModelPackageGroupStatus_Failed,
+        ModelPackageGroupStatus_InProgress,
+        ModelPackageGroupStatus_Pending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelPackageGroupStatus = ModelPackageGroupStatus'
+  { fromModelPackageGroupStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelPackageGroupStatus_Completed :: ModelPackageGroupStatus
+pattern ModelPackageGroupStatus_Completed = ModelPackageGroupStatus' "Completed"
+
+pattern ModelPackageGroupStatus_DeleteFailed :: ModelPackageGroupStatus
+pattern ModelPackageGroupStatus_DeleteFailed = ModelPackageGroupStatus' "DeleteFailed"
+
+pattern ModelPackageGroupStatus_Deleting :: ModelPackageGroupStatus
+pattern ModelPackageGroupStatus_Deleting = ModelPackageGroupStatus' "Deleting"
+
+pattern ModelPackageGroupStatus_Failed :: ModelPackageGroupStatus
+pattern ModelPackageGroupStatus_Failed = ModelPackageGroupStatus' "Failed"
+
+pattern ModelPackageGroupStatus_InProgress :: ModelPackageGroupStatus
+pattern ModelPackageGroupStatus_InProgress = ModelPackageGroupStatus' "InProgress"
+
+pattern ModelPackageGroupStatus_Pending :: ModelPackageGroupStatus
+pattern ModelPackageGroupStatus_Pending = ModelPackageGroupStatus' "Pending"
+
+{-# COMPLETE
+  ModelPackageGroupStatus_Completed,
+  ModelPackageGroupStatus_DeleteFailed,
+  ModelPackageGroupStatus_Deleting,
+  ModelPackageGroupStatus_Failed,
+  ModelPackageGroupStatus_InProgress,
+  ModelPackageGroupStatus_Pending,
+  ModelPackageGroupStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageGroupSummary.hs b/gen/Amazonka/SageMaker/Types/ModelPackageGroupSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageGroupSummary.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageGroupSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageGroupSummary 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 Amazonka.SageMaker.Types.ModelPackageGroupStatus
+
+-- | Summary information about a model group.
+--
+-- /See:/ 'newModelPackageGroupSummary' smart constructor.
+data ModelPackageGroupSummary = ModelPackageGroupSummary'
+  { -- | A description of the model group.
+    modelPackageGroupDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name of the model group.
+    modelPackageGroupName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model group.
+    modelPackageGroupArn :: Prelude.Text,
+    -- | The time that the model group was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the model group.
+    modelPackageGroupStatus :: ModelPackageGroupStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageGroupSummary' 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:
+--
+-- 'modelPackageGroupDescription', 'modelPackageGroupSummary_modelPackageGroupDescription' - A description of the model group.
+--
+-- 'modelPackageGroupName', 'modelPackageGroupSummary_modelPackageGroupName' - The name of the model group.
+--
+-- 'modelPackageGroupArn', 'modelPackageGroupSummary_modelPackageGroupArn' - The Amazon Resource Name (ARN) of the model group.
+--
+-- 'creationTime', 'modelPackageGroupSummary_creationTime' - The time that the model group was created.
+--
+-- 'modelPackageGroupStatus', 'modelPackageGroupSummary_modelPackageGroupStatus' - The status of the model group.
+newModelPackageGroupSummary ::
+  -- | 'modelPackageGroupName'
+  Prelude.Text ->
+  -- | 'modelPackageGroupArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelPackageGroupStatus'
+  ModelPackageGroupStatus ->
+  ModelPackageGroupSummary
+newModelPackageGroupSummary
+  pModelPackageGroupName_
+  pModelPackageGroupArn_
+  pCreationTime_
+  pModelPackageGroupStatus_ =
+    ModelPackageGroupSummary'
+      { modelPackageGroupDescription =
+          Prelude.Nothing,
+        modelPackageGroupName = pModelPackageGroupName_,
+        modelPackageGroupArn = pModelPackageGroupArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        modelPackageGroupStatus =
+          pModelPackageGroupStatus_
+      }
+
+-- | A description of the model group.
+modelPackageGroupSummary_modelPackageGroupDescription :: Lens.Lens' ModelPackageGroupSummary (Prelude.Maybe Prelude.Text)
+modelPackageGroupSummary_modelPackageGroupDescription = Lens.lens (\ModelPackageGroupSummary' {modelPackageGroupDescription} -> modelPackageGroupDescription) (\s@ModelPackageGroupSummary' {} a -> s {modelPackageGroupDescription = a} :: ModelPackageGroupSummary)
+
+-- | The name of the model group.
+modelPackageGroupSummary_modelPackageGroupName :: Lens.Lens' ModelPackageGroupSummary Prelude.Text
+modelPackageGroupSummary_modelPackageGroupName = Lens.lens (\ModelPackageGroupSummary' {modelPackageGroupName} -> modelPackageGroupName) (\s@ModelPackageGroupSummary' {} a -> s {modelPackageGroupName = a} :: ModelPackageGroupSummary)
+
+-- | The Amazon Resource Name (ARN) of the model group.
+modelPackageGroupSummary_modelPackageGroupArn :: Lens.Lens' ModelPackageGroupSummary Prelude.Text
+modelPackageGroupSummary_modelPackageGroupArn = Lens.lens (\ModelPackageGroupSummary' {modelPackageGroupArn} -> modelPackageGroupArn) (\s@ModelPackageGroupSummary' {} a -> s {modelPackageGroupArn = a} :: ModelPackageGroupSummary)
+
+-- | The time that the model group was created.
+modelPackageGroupSummary_creationTime :: Lens.Lens' ModelPackageGroupSummary Prelude.UTCTime
+modelPackageGroupSummary_creationTime = Lens.lens (\ModelPackageGroupSummary' {creationTime} -> creationTime) (\s@ModelPackageGroupSummary' {} a -> s {creationTime = a} :: ModelPackageGroupSummary) Prelude.. Data._Time
+
+-- | The status of the model group.
+modelPackageGroupSummary_modelPackageGroupStatus :: Lens.Lens' ModelPackageGroupSummary ModelPackageGroupStatus
+modelPackageGroupSummary_modelPackageGroupStatus = Lens.lens (\ModelPackageGroupSummary' {modelPackageGroupStatus} -> modelPackageGroupStatus) (\s@ModelPackageGroupSummary' {} a -> s {modelPackageGroupStatus = a} :: ModelPackageGroupSummary)
+
+instance Data.FromJSON ModelPackageGroupSummary where
+  parseJSON =
+    Data.withObject
+      "ModelPackageGroupSummary"
+      ( \x ->
+          ModelPackageGroupSummary'
+            Prelude.<$> (x Data..:? "ModelPackageGroupDescription")
+            Prelude.<*> (x Data..: "ModelPackageGroupName")
+            Prelude.<*> (x Data..: "ModelPackageGroupArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "ModelPackageGroupStatus")
+      )
+
+instance Prelude.Hashable ModelPackageGroupSummary where
+  hashWithSalt _salt ModelPackageGroupSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelPackageGroupDescription
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` modelPackageGroupArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` modelPackageGroupStatus
+
+instance Prelude.NFData ModelPackageGroupSummary where
+  rnf ModelPackageGroupSummary' {..} =
+    Prelude.rnf modelPackageGroupDescription
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageGroupArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf modelPackageGroupStatus
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageSortBy.hs b/gen/Amazonka/SageMaker/Types/ModelPackageSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageSortBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelPackageSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageSortBy
+  ( ModelPackageSortBy
+      ( ..,
+        ModelPackageSortBy_CreationTime,
+        ModelPackageSortBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelPackageSortBy = ModelPackageSortBy'
+  { fromModelPackageSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelPackageSortBy_CreationTime :: ModelPackageSortBy
+pattern ModelPackageSortBy_CreationTime = ModelPackageSortBy' "CreationTime"
+
+pattern ModelPackageSortBy_Name :: ModelPackageSortBy
+pattern ModelPackageSortBy_Name = ModelPackageSortBy' "Name"
+
+{-# COMPLETE
+  ModelPackageSortBy_CreationTime,
+  ModelPackageSortBy_Name,
+  ModelPackageSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageStatus.hs b/gen/Amazonka/SageMaker/Types/ModelPackageStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelPackageStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageStatus
+  ( ModelPackageStatus
+      ( ..,
+        ModelPackageStatus_Completed,
+        ModelPackageStatus_Deleting,
+        ModelPackageStatus_Failed,
+        ModelPackageStatus_InProgress,
+        ModelPackageStatus_Pending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelPackageStatus = ModelPackageStatus'
+  { fromModelPackageStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelPackageStatus_Completed :: ModelPackageStatus
+pattern ModelPackageStatus_Completed = ModelPackageStatus' "Completed"
+
+pattern ModelPackageStatus_Deleting :: ModelPackageStatus
+pattern ModelPackageStatus_Deleting = ModelPackageStatus' "Deleting"
+
+pattern ModelPackageStatus_Failed :: ModelPackageStatus
+pattern ModelPackageStatus_Failed = ModelPackageStatus' "Failed"
+
+pattern ModelPackageStatus_InProgress :: ModelPackageStatus
+pattern ModelPackageStatus_InProgress = ModelPackageStatus' "InProgress"
+
+pattern ModelPackageStatus_Pending :: ModelPackageStatus
+pattern ModelPackageStatus_Pending = ModelPackageStatus' "Pending"
+
+{-# COMPLETE
+  ModelPackageStatus_Completed,
+  ModelPackageStatus_Deleting,
+  ModelPackageStatus_Failed,
+  ModelPackageStatus_InProgress,
+  ModelPackageStatus_Pending,
+  ModelPackageStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageStatusDetails.hs b/gen/Amazonka/SageMaker/Types/ModelPackageStatusDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageStatusDetails.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageStatusDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageStatusDetails 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 Amazonka.SageMaker.Types.ModelPackageStatusItem
+
+-- | Specifies the validation and image scan statuses of the model package.
+--
+-- /See:/ 'newModelPackageStatusDetails' smart constructor.
+data ModelPackageStatusDetails = ModelPackageStatusDetails'
+  { -- | The status of the scan of the Docker image container for the model
+    -- package.
+    imageScanStatuses :: Prelude.Maybe [ModelPackageStatusItem],
+    -- | The validation status of the model package.
+    validationStatuses :: [ModelPackageStatusItem]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageStatusDetails' 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:
+--
+-- 'imageScanStatuses', 'modelPackageStatusDetails_imageScanStatuses' - The status of the scan of the Docker image container for the model
+-- package.
+--
+-- 'validationStatuses', 'modelPackageStatusDetails_validationStatuses' - The validation status of the model package.
+newModelPackageStatusDetails ::
+  ModelPackageStatusDetails
+newModelPackageStatusDetails =
+  ModelPackageStatusDetails'
+    { imageScanStatuses =
+        Prelude.Nothing,
+      validationStatuses = Prelude.mempty
+    }
+
+-- | The status of the scan of the Docker image container for the model
+-- package.
+modelPackageStatusDetails_imageScanStatuses :: Lens.Lens' ModelPackageStatusDetails (Prelude.Maybe [ModelPackageStatusItem])
+modelPackageStatusDetails_imageScanStatuses = Lens.lens (\ModelPackageStatusDetails' {imageScanStatuses} -> imageScanStatuses) (\s@ModelPackageStatusDetails' {} a -> s {imageScanStatuses = a} :: ModelPackageStatusDetails) Prelude.. Lens.mapping Lens.coerced
+
+-- | The validation status of the model package.
+modelPackageStatusDetails_validationStatuses :: Lens.Lens' ModelPackageStatusDetails [ModelPackageStatusItem]
+modelPackageStatusDetails_validationStatuses = Lens.lens (\ModelPackageStatusDetails' {validationStatuses} -> validationStatuses) (\s@ModelPackageStatusDetails' {} a -> s {validationStatuses = a} :: ModelPackageStatusDetails) Prelude.. Lens.coerced
+
+instance Data.FromJSON ModelPackageStatusDetails where
+  parseJSON =
+    Data.withObject
+      "ModelPackageStatusDetails"
+      ( \x ->
+          ModelPackageStatusDetails'
+            Prelude.<$> ( x
+                            Data..:? "ImageScanStatuses"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ValidationStatuses"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ModelPackageStatusDetails where
+  hashWithSalt _salt ModelPackageStatusDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` imageScanStatuses
+      `Prelude.hashWithSalt` validationStatuses
+
+instance Prelude.NFData ModelPackageStatusDetails where
+  rnf ModelPackageStatusDetails' {..} =
+    Prelude.rnf imageScanStatuses
+      `Prelude.seq` Prelude.rnf validationStatuses
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageStatusItem.hs b/gen/Amazonka/SageMaker/Types/ModelPackageStatusItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageStatusItem.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageStatusItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageStatusItem 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 Amazonka.SageMaker.Types.DetailedModelPackageStatus
+
+-- | Represents the overall status of a model package.
+--
+-- /See:/ 'newModelPackageStatusItem' smart constructor.
+data ModelPackageStatusItem = ModelPackageStatusItem'
+  { -- | if the overall status is @Failed@, the reason for the failure.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the model package for which the overall status is being
+    -- reported.
+    name :: Prelude.Text,
+    -- | The current status.
+    status :: DetailedModelPackageStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageStatusItem' 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:
+--
+-- 'failureReason', 'modelPackageStatusItem_failureReason' - if the overall status is @Failed@, the reason for the failure.
+--
+-- 'name', 'modelPackageStatusItem_name' - The name of the model package for which the overall status is being
+-- reported.
+--
+-- 'status', 'modelPackageStatusItem_status' - The current status.
+newModelPackageStatusItem ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  DetailedModelPackageStatus ->
+  ModelPackageStatusItem
+newModelPackageStatusItem pName_ pStatus_ =
+  ModelPackageStatusItem'
+    { failureReason =
+        Prelude.Nothing,
+      name = pName_,
+      status = pStatus_
+    }
+
+-- | if the overall status is @Failed@, the reason for the failure.
+modelPackageStatusItem_failureReason :: Lens.Lens' ModelPackageStatusItem (Prelude.Maybe Prelude.Text)
+modelPackageStatusItem_failureReason = Lens.lens (\ModelPackageStatusItem' {failureReason} -> failureReason) (\s@ModelPackageStatusItem' {} a -> s {failureReason = a} :: ModelPackageStatusItem)
+
+-- | The name of the model package for which the overall status is being
+-- reported.
+modelPackageStatusItem_name :: Lens.Lens' ModelPackageStatusItem Prelude.Text
+modelPackageStatusItem_name = Lens.lens (\ModelPackageStatusItem' {name} -> name) (\s@ModelPackageStatusItem' {} a -> s {name = a} :: ModelPackageStatusItem)
+
+-- | The current status.
+modelPackageStatusItem_status :: Lens.Lens' ModelPackageStatusItem DetailedModelPackageStatus
+modelPackageStatusItem_status = Lens.lens (\ModelPackageStatusItem' {status} -> status) (\s@ModelPackageStatusItem' {} a -> s {status = a} :: ModelPackageStatusItem)
+
+instance Data.FromJSON ModelPackageStatusItem where
+  parseJSON =
+    Data.withObject
+      "ModelPackageStatusItem"
+      ( \x ->
+          ModelPackageStatusItem'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable ModelPackageStatusItem where
+  hashWithSalt _salt ModelPackageStatusItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ModelPackageStatusItem where
+  rnf ModelPackageStatusItem' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageSummary.hs b/gen/Amazonka/SageMaker/Types/ModelPackageSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageSummary.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageSummary 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 Amazonka.SageMaker.Types.ModelApprovalStatus
+import Amazonka.SageMaker.Types.ModelPackageStatus
+
+-- | Provides summary information about a model package.
+--
+-- /See:/ 'newModelPackageSummary' smart constructor.
+data ModelPackageSummary = ModelPackageSummary'
+  { -- | The approval status of the model. This can be one of the following
+    -- values.
+    --
+    -- -   @APPROVED@ - The model is approved
+    --
+    -- -   @REJECTED@ - The model is rejected.
+    --
+    -- -   @PENDING_MANUAL_APPROVAL@ - The model is waiting for manual
+    --     approval.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | A brief description of the model package.
+    modelPackageDescription :: Prelude.Maybe Prelude.Text,
+    -- | If the model package is a versioned model, the model group that the
+    -- versioned model belongs to.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | If the model package is a versioned model, the version of the model.
+    modelPackageVersion :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the model package.
+    modelPackageName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model package.
+    modelPackageArn :: Prelude.Text,
+    -- | A timestamp that shows when the model package was created.
+    creationTime :: Data.POSIX,
+    -- | The overall status of the model package.
+    modelPackageStatus :: ModelPackageStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageSummary' 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:
+--
+-- 'modelApprovalStatus', 'modelPackageSummary_modelApprovalStatus' - The approval status of the model. This can be one of the following
+-- values.
+--
+-- -   @APPROVED@ - The model is approved
+--
+-- -   @REJECTED@ - The model is rejected.
+--
+-- -   @PENDING_MANUAL_APPROVAL@ - The model is waiting for manual
+--     approval.
+--
+-- 'modelPackageDescription', 'modelPackageSummary_modelPackageDescription' - A brief description of the model package.
+--
+-- 'modelPackageGroupName', 'modelPackageSummary_modelPackageGroupName' - If the model package is a versioned model, the model group that the
+-- versioned model belongs to.
+--
+-- 'modelPackageVersion', 'modelPackageSummary_modelPackageVersion' - If the model package is a versioned model, the version of the model.
+--
+-- 'modelPackageName', 'modelPackageSummary_modelPackageName' - The name of the model package.
+--
+-- 'modelPackageArn', 'modelPackageSummary_modelPackageArn' - The Amazon Resource Name (ARN) of the model package.
+--
+-- 'creationTime', 'modelPackageSummary_creationTime' - A timestamp that shows when the model package was created.
+--
+-- 'modelPackageStatus', 'modelPackageSummary_modelPackageStatus' - The overall status of the model package.
+newModelPackageSummary ::
+  -- | 'modelPackageName'
+  Prelude.Text ->
+  -- | 'modelPackageArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'modelPackageStatus'
+  ModelPackageStatus ->
+  ModelPackageSummary
+newModelPackageSummary
+  pModelPackageName_
+  pModelPackageArn_
+  pCreationTime_
+  pModelPackageStatus_ =
+    ModelPackageSummary'
+      { modelApprovalStatus =
+          Prelude.Nothing,
+        modelPackageDescription = Prelude.Nothing,
+        modelPackageGroupName = Prelude.Nothing,
+        modelPackageVersion = Prelude.Nothing,
+        modelPackageName = pModelPackageName_,
+        modelPackageArn = pModelPackageArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        modelPackageStatus = pModelPackageStatus_
+      }
+
+-- | The approval status of the model. This can be one of the following
+-- values.
+--
+-- -   @APPROVED@ - The model is approved
+--
+-- -   @REJECTED@ - The model is rejected.
+--
+-- -   @PENDING_MANUAL_APPROVAL@ - The model is waiting for manual
+--     approval.
+modelPackageSummary_modelApprovalStatus :: Lens.Lens' ModelPackageSummary (Prelude.Maybe ModelApprovalStatus)
+modelPackageSummary_modelApprovalStatus = Lens.lens (\ModelPackageSummary' {modelApprovalStatus} -> modelApprovalStatus) (\s@ModelPackageSummary' {} a -> s {modelApprovalStatus = a} :: ModelPackageSummary)
+
+-- | A brief description of the model package.
+modelPackageSummary_modelPackageDescription :: Lens.Lens' ModelPackageSummary (Prelude.Maybe Prelude.Text)
+modelPackageSummary_modelPackageDescription = Lens.lens (\ModelPackageSummary' {modelPackageDescription} -> modelPackageDescription) (\s@ModelPackageSummary' {} a -> s {modelPackageDescription = a} :: ModelPackageSummary)
+
+-- | If the model package is a versioned model, the model group that the
+-- versioned model belongs to.
+modelPackageSummary_modelPackageGroupName :: Lens.Lens' ModelPackageSummary (Prelude.Maybe Prelude.Text)
+modelPackageSummary_modelPackageGroupName = Lens.lens (\ModelPackageSummary' {modelPackageGroupName} -> modelPackageGroupName) (\s@ModelPackageSummary' {} a -> s {modelPackageGroupName = a} :: ModelPackageSummary)
+
+-- | If the model package is a versioned model, the version of the model.
+modelPackageSummary_modelPackageVersion :: Lens.Lens' ModelPackageSummary (Prelude.Maybe Prelude.Natural)
+modelPackageSummary_modelPackageVersion = Lens.lens (\ModelPackageSummary' {modelPackageVersion} -> modelPackageVersion) (\s@ModelPackageSummary' {} a -> s {modelPackageVersion = a} :: ModelPackageSummary)
+
+-- | The name of the model package.
+modelPackageSummary_modelPackageName :: Lens.Lens' ModelPackageSummary Prelude.Text
+modelPackageSummary_modelPackageName = Lens.lens (\ModelPackageSummary' {modelPackageName} -> modelPackageName) (\s@ModelPackageSummary' {} a -> s {modelPackageName = a} :: ModelPackageSummary)
+
+-- | The Amazon Resource Name (ARN) of the model package.
+modelPackageSummary_modelPackageArn :: Lens.Lens' ModelPackageSummary Prelude.Text
+modelPackageSummary_modelPackageArn = Lens.lens (\ModelPackageSummary' {modelPackageArn} -> modelPackageArn) (\s@ModelPackageSummary' {} a -> s {modelPackageArn = a} :: ModelPackageSummary)
+
+-- | A timestamp that shows when the model package was created.
+modelPackageSummary_creationTime :: Lens.Lens' ModelPackageSummary Prelude.UTCTime
+modelPackageSummary_creationTime = Lens.lens (\ModelPackageSummary' {creationTime} -> creationTime) (\s@ModelPackageSummary' {} a -> s {creationTime = a} :: ModelPackageSummary) Prelude.. Data._Time
+
+-- | The overall status of the model package.
+modelPackageSummary_modelPackageStatus :: Lens.Lens' ModelPackageSummary ModelPackageStatus
+modelPackageSummary_modelPackageStatus = Lens.lens (\ModelPackageSummary' {modelPackageStatus} -> modelPackageStatus) (\s@ModelPackageSummary' {} a -> s {modelPackageStatus = a} :: ModelPackageSummary)
+
+instance Data.FromJSON ModelPackageSummary where
+  parseJSON =
+    Data.withObject
+      "ModelPackageSummary"
+      ( \x ->
+          ModelPackageSummary'
+            Prelude.<$> (x Data..:? "ModelApprovalStatus")
+            Prelude.<*> (x Data..:? "ModelPackageDescription")
+            Prelude.<*> (x Data..:? "ModelPackageGroupName")
+            Prelude.<*> (x Data..:? "ModelPackageVersion")
+            Prelude.<*> (x Data..: "ModelPackageName")
+            Prelude.<*> (x Data..: "ModelPackageArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "ModelPackageStatus")
+      )
+
+instance Prelude.Hashable ModelPackageSummary where
+  hashWithSalt _salt ModelPackageSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelApprovalStatus
+      `Prelude.hashWithSalt` modelPackageDescription
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` modelPackageVersion
+      `Prelude.hashWithSalt` modelPackageName
+      `Prelude.hashWithSalt` modelPackageArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` modelPackageStatus
+
+instance Prelude.NFData ModelPackageSummary where
+  rnf ModelPackageSummary' {..} =
+    Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelPackageDescription
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf modelPackageVersion
+      `Prelude.seq` Prelude.rnf modelPackageName
+      `Prelude.seq` Prelude.rnf modelPackageArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf modelPackageStatus
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageType.hs b/gen/Amazonka/SageMaker/Types/ModelPackageType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelPackageType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageType
+  ( ModelPackageType
+      ( ..,
+        ModelPackageType_Both,
+        ModelPackageType_Unversioned,
+        ModelPackageType_Versioned
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelPackageType = ModelPackageType'
+  { fromModelPackageType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelPackageType_Both :: ModelPackageType
+pattern ModelPackageType_Both = ModelPackageType' "Both"
+
+pattern ModelPackageType_Unversioned :: ModelPackageType
+pattern ModelPackageType_Unversioned = ModelPackageType' "Unversioned"
+
+pattern ModelPackageType_Versioned :: ModelPackageType
+pattern ModelPackageType_Versioned = ModelPackageType' "Versioned"
+
+{-# COMPLETE
+  ModelPackageType_Both,
+  ModelPackageType_Unversioned,
+  ModelPackageType_Versioned,
+  ModelPackageType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageValidationProfile.hs b/gen/Amazonka/SageMaker/Types/ModelPackageValidationProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageValidationProfile.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageValidationProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageValidationProfile 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 Amazonka.SageMaker.Types.TransformJobDefinition
+
+-- | Contains data, such as the inputs and targeted instance types that are
+-- used in the process of validating the model package.
+--
+-- The data provided in the validation profile is made available to your
+-- buyers on Amazon Web Services Marketplace.
+--
+-- /See:/ 'newModelPackageValidationProfile' smart constructor.
+data ModelPackageValidationProfile = ModelPackageValidationProfile'
+  { -- | The name of the profile for the model package.
+    profileName :: Prelude.Text,
+    -- | The @TransformJobDefinition@ object that describes the transform job
+    -- used for the validation of the model package.
+    transformJobDefinition :: TransformJobDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageValidationProfile' 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:
+--
+-- 'profileName', 'modelPackageValidationProfile_profileName' - The name of the profile for the model package.
+--
+-- 'transformJobDefinition', 'modelPackageValidationProfile_transformJobDefinition' - The @TransformJobDefinition@ object that describes the transform job
+-- used for the validation of the model package.
+newModelPackageValidationProfile ::
+  -- | 'profileName'
+  Prelude.Text ->
+  -- | 'transformJobDefinition'
+  TransformJobDefinition ->
+  ModelPackageValidationProfile
+newModelPackageValidationProfile
+  pProfileName_
+  pTransformJobDefinition_ =
+    ModelPackageValidationProfile'
+      { profileName =
+          pProfileName_,
+        transformJobDefinition =
+          pTransformJobDefinition_
+      }
+
+-- | The name of the profile for the model package.
+modelPackageValidationProfile_profileName :: Lens.Lens' ModelPackageValidationProfile Prelude.Text
+modelPackageValidationProfile_profileName = Lens.lens (\ModelPackageValidationProfile' {profileName} -> profileName) (\s@ModelPackageValidationProfile' {} a -> s {profileName = a} :: ModelPackageValidationProfile)
+
+-- | The @TransformJobDefinition@ object that describes the transform job
+-- used for the validation of the model package.
+modelPackageValidationProfile_transformJobDefinition :: Lens.Lens' ModelPackageValidationProfile TransformJobDefinition
+modelPackageValidationProfile_transformJobDefinition = Lens.lens (\ModelPackageValidationProfile' {transformJobDefinition} -> transformJobDefinition) (\s@ModelPackageValidationProfile' {} a -> s {transformJobDefinition = a} :: ModelPackageValidationProfile)
+
+instance Data.FromJSON ModelPackageValidationProfile where
+  parseJSON =
+    Data.withObject
+      "ModelPackageValidationProfile"
+      ( \x ->
+          ModelPackageValidationProfile'
+            Prelude.<$> (x Data..: "ProfileName")
+            Prelude.<*> (x Data..: "TransformJobDefinition")
+      )
+
+instance
+  Prelude.Hashable
+    ModelPackageValidationProfile
+  where
+  hashWithSalt _salt ModelPackageValidationProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` profileName
+      `Prelude.hashWithSalt` transformJobDefinition
+
+instance Prelude.NFData ModelPackageValidationProfile where
+  rnf ModelPackageValidationProfile' {..} =
+    Prelude.rnf profileName
+      `Prelude.seq` Prelude.rnf transformJobDefinition
+
+instance Data.ToJSON ModelPackageValidationProfile where
+  toJSON ModelPackageValidationProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ProfileName" Data..= profileName),
+            Prelude.Just
+              ( "TransformJobDefinition"
+                  Data..= transformJobDefinition
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelPackageValidationSpecification.hs b/gen/Amazonka/SageMaker/Types/ModelPackageValidationSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelPackageValidationSpecification.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelPackageValidationSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelPackageValidationSpecification 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 Amazonka.SageMaker.Types.ModelPackageValidationProfile
+
+-- | Specifies batch transform jobs that SageMaker runs to validate your
+-- model package.
+--
+-- /See:/ 'newModelPackageValidationSpecification' smart constructor.
+data ModelPackageValidationSpecification = ModelPackageValidationSpecification'
+  { -- | The IAM roles to be used for the validation of the model package.
+    validationRole :: Prelude.Text,
+    -- | An array of @ModelPackageValidationProfile@ objects, each of which
+    -- specifies a batch transform job that SageMaker runs to validate your
+    -- model package.
+    validationProfiles :: Prelude.NonEmpty ModelPackageValidationProfile
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelPackageValidationSpecification' 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:
+--
+-- 'validationRole', 'modelPackageValidationSpecification_validationRole' - The IAM roles to be used for the validation of the model package.
+--
+-- 'validationProfiles', 'modelPackageValidationSpecification_validationProfiles' - An array of @ModelPackageValidationProfile@ objects, each of which
+-- specifies a batch transform job that SageMaker runs to validate your
+-- model package.
+newModelPackageValidationSpecification ::
+  -- | 'validationRole'
+  Prelude.Text ->
+  -- | 'validationProfiles'
+  Prelude.NonEmpty ModelPackageValidationProfile ->
+  ModelPackageValidationSpecification
+newModelPackageValidationSpecification
+  pValidationRole_
+  pValidationProfiles_ =
+    ModelPackageValidationSpecification'
+      { validationRole =
+          pValidationRole_,
+        validationProfiles =
+          Lens.coerced
+            Lens.# pValidationProfiles_
+      }
+
+-- | The IAM roles to be used for the validation of the model package.
+modelPackageValidationSpecification_validationRole :: Lens.Lens' ModelPackageValidationSpecification Prelude.Text
+modelPackageValidationSpecification_validationRole = Lens.lens (\ModelPackageValidationSpecification' {validationRole} -> validationRole) (\s@ModelPackageValidationSpecification' {} a -> s {validationRole = a} :: ModelPackageValidationSpecification)
+
+-- | An array of @ModelPackageValidationProfile@ objects, each of which
+-- specifies a batch transform job that SageMaker runs to validate your
+-- model package.
+modelPackageValidationSpecification_validationProfiles :: Lens.Lens' ModelPackageValidationSpecification (Prelude.NonEmpty ModelPackageValidationProfile)
+modelPackageValidationSpecification_validationProfiles = Lens.lens (\ModelPackageValidationSpecification' {validationProfiles} -> validationProfiles) (\s@ModelPackageValidationSpecification' {} a -> s {validationProfiles = a} :: ModelPackageValidationSpecification) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    ModelPackageValidationSpecification
+  where
+  parseJSON =
+    Data.withObject
+      "ModelPackageValidationSpecification"
+      ( \x ->
+          ModelPackageValidationSpecification'
+            Prelude.<$> (x Data..: "ValidationRole")
+            Prelude.<*> (x Data..: "ValidationProfiles")
+      )
+
+instance
+  Prelude.Hashable
+    ModelPackageValidationSpecification
+  where
+  hashWithSalt
+    _salt
+    ModelPackageValidationSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` validationRole
+        `Prelude.hashWithSalt` validationProfiles
+
+instance
+  Prelude.NFData
+    ModelPackageValidationSpecification
+  where
+  rnf ModelPackageValidationSpecification' {..} =
+    Prelude.rnf validationRole
+      `Prelude.seq` Prelude.rnf validationProfiles
+
+instance
+  Data.ToJSON
+    ModelPackageValidationSpecification
+  where
+  toJSON ModelPackageValidationSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ValidationRole" Data..= validationRole),
+            Prelude.Just
+              ("ValidationProfiles" Data..= validationProfiles)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelQuality.hs b/gen/Amazonka/SageMaker/Types/ModelQuality.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelQuality.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelQuality
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelQuality 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 Amazonka.SageMaker.Types.MetricsSource
+
+-- | Model quality statistics and constraints.
+--
+-- /See:/ 'newModelQuality' smart constructor.
+data ModelQuality = ModelQuality'
+  { -- | Model quality constraints.
+    constraints :: Prelude.Maybe MetricsSource,
+    -- | Model quality statistics.
+    statistics :: Prelude.Maybe MetricsSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelQuality' 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:
+--
+-- 'constraints', 'modelQuality_constraints' - Model quality constraints.
+--
+-- 'statistics', 'modelQuality_statistics' - Model quality statistics.
+newModelQuality ::
+  ModelQuality
+newModelQuality =
+  ModelQuality'
+    { constraints = Prelude.Nothing,
+      statistics = Prelude.Nothing
+    }
+
+-- | Model quality constraints.
+modelQuality_constraints :: Lens.Lens' ModelQuality (Prelude.Maybe MetricsSource)
+modelQuality_constraints = Lens.lens (\ModelQuality' {constraints} -> constraints) (\s@ModelQuality' {} a -> s {constraints = a} :: ModelQuality)
+
+-- | Model quality statistics.
+modelQuality_statistics :: Lens.Lens' ModelQuality (Prelude.Maybe MetricsSource)
+modelQuality_statistics = Lens.lens (\ModelQuality' {statistics} -> statistics) (\s@ModelQuality' {} a -> s {statistics = a} :: ModelQuality)
+
+instance Data.FromJSON ModelQuality where
+  parseJSON =
+    Data.withObject
+      "ModelQuality"
+      ( \x ->
+          ModelQuality'
+            Prelude.<$> (x Data..:? "Constraints")
+            Prelude.<*> (x Data..:? "Statistics")
+      )
+
+instance Prelude.Hashable ModelQuality where
+  hashWithSalt _salt ModelQuality' {..} =
+    _salt
+      `Prelude.hashWithSalt` constraints
+      `Prelude.hashWithSalt` statistics
+
+instance Prelude.NFData ModelQuality where
+  rnf ModelQuality' {..} =
+    Prelude.rnf constraints
+      `Prelude.seq` Prelude.rnf statistics
+
+instance Data.ToJSON ModelQuality where
+  toJSON ModelQuality' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Constraints" Data..=) Prelude.<$> constraints,
+            ("Statistics" Data..=) Prelude.<$> statistics
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelQualityAppSpecification.hs b/gen/Amazonka/SageMaker/Types/ModelQualityAppSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelQualityAppSpecification.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelQualityAppSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelQualityAppSpecification 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 Amazonka.SageMaker.Types.MonitoringProblemType
+
+-- | Container image configuration object for the monitoring job.
+--
+-- /See:/ 'newModelQualityAppSpecification' smart constructor.
+data ModelQualityAppSpecification = ModelQualityAppSpecification'
+  { -- | An array of arguments for the container used to run the monitoring job.
+    containerArguments :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Specifies the entrypoint for a container that the monitoring job runs.
+    containerEntrypoint :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Sets the environment variables in the container that the monitoring job
+    -- runs.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | An Amazon S3 URI to a script that is called after analysis has been
+    -- performed. Applicable only for the built-in (first party) containers.
+    postAnalyticsProcessorSourceUri :: Prelude.Maybe Prelude.Text,
+    -- | The machine learning problem type of the model that the monitoring job
+    -- monitors.
+    problemType :: Prelude.Maybe MonitoringProblemType,
+    -- | An Amazon S3 URI to a script that is called per row prior to running
+    -- analysis. It can base64 decode the payload and convert it into a flatted
+    -- json so that the built-in container can use the converted data.
+    -- Applicable only for the built-in (first party) containers.
+    recordPreprocessorSourceUri :: Prelude.Maybe Prelude.Text,
+    -- | The address of the container image that the monitoring job runs.
+    imageUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelQualityAppSpecification' 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:
+--
+-- 'containerArguments', 'modelQualityAppSpecification_containerArguments' - An array of arguments for the container used to run the monitoring job.
+--
+-- 'containerEntrypoint', 'modelQualityAppSpecification_containerEntrypoint' - Specifies the entrypoint for a container that the monitoring job runs.
+--
+-- 'environment', 'modelQualityAppSpecification_environment' - Sets the environment variables in the container that the monitoring job
+-- runs.
+--
+-- 'postAnalyticsProcessorSourceUri', 'modelQualityAppSpecification_postAnalyticsProcessorSourceUri' - An Amazon S3 URI to a script that is called after analysis has been
+-- performed. Applicable only for the built-in (first party) containers.
+--
+-- 'problemType', 'modelQualityAppSpecification_problemType' - The machine learning problem type of the model that the monitoring job
+-- monitors.
+--
+-- 'recordPreprocessorSourceUri', 'modelQualityAppSpecification_recordPreprocessorSourceUri' - An Amazon S3 URI to a script that is called per row prior to running
+-- analysis. It can base64 decode the payload and convert it into a flatted
+-- json so that the built-in container can use the converted data.
+-- Applicable only for the built-in (first party) containers.
+--
+-- 'imageUri', 'modelQualityAppSpecification_imageUri' - The address of the container image that the monitoring job runs.
+newModelQualityAppSpecification ::
+  -- | 'imageUri'
+  Prelude.Text ->
+  ModelQualityAppSpecification
+newModelQualityAppSpecification pImageUri_ =
+  ModelQualityAppSpecification'
+    { containerArguments =
+        Prelude.Nothing,
+      containerEntrypoint = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      postAnalyticsProcessorSourceUri =
+        Prelude.Nothing,
+      problemType = Prelude.Nothing,
+      recordPreprocessorSourceUri = Prelude.Nothing,
+      imageUri = pImageUri_
+    }
+
+-- | An array of arguments for the container used to run the monitoring job.
+modelQualityAppSpecification_containerArguments :: Lens.Lens' ModelQualityAppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+modelQualityAppSpecification_containerArguments = Lens.lens (\ModelQualityAppSpecification' {containerArguments} -> containerArguments) (\s@ModelQualityAppSpecification' {} a -> s {containerArguments = a} :: ModelQualityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the entrypoint for a container that the monitoring job runs.
+modelQualityAppSpecification_containerEntrypoint :: Lens.Lens' ModelQualityAppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+modelQualityAppSpecification_containerEntrypoint = Lens.lens (\ModelQualityAppSpecification' {containerEntrypoint} -> containerEntrypoint) (\s@ModelQualityAppSpecification' {} a -> s {containerEntrypoint = a} :: ModelQualityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | Sets the environment variables in the container that the monitoring job
+-- runs.
+modelQualityAppSpecification_environment :: Lens.Lens' ModelQualityAppSpecification (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+modelQualityAppSpecification_environment = Lens.lens (\ModelQualityAppSpecification' {environment} -> environment) (\s@ModelQualityAppSpecification' {} a -> s {environment = a} :: ModelQualityAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | An Amazon S3 URI to a script that is called after analysis has been
+-- performed. Applicable only for the built-in (first party) containers.
+modelQualityAppSpecification_postAnalyticsProcessorSourceUri :: Lens.Lens' ModelQualityAppSpecification (Prelude.Maybe Prelude.Text)
+modelQualityAppSpecification_postAnalyticsProcessorSourceUri = Lens.lens (\ModelQualityAppSpecification' {postAnalyticsProcessorSourceUri} -> postAnalyticsProcessorSourceUri) (\s@ModelQualityAppSpecification' {} a -> s {postAnalyticsProcessorSourceUri = a} :: ModelQualityAppSpecification)
+
+-- | The machine learning problem type of the model that the monitoring job
+-- monitors.
+modelQualityAppSpecification_problemType :: Lens.Lens' ModelQualityAppSpecification (Prelude.Maybe MonitoringProblemType)
+modelQualityAppSpecification_problemType = Lens.lens (\ModelQualityAppSpecification' {problemType} -> problemType) (\s@ModelQualityAppSpecification' {} a -> s {problemType = a} :: ModelQualityAppSpecification)
+
+-- | An Amazon S3 URI to a script that is called per row prior to running
+-- analysis. It can base64 decode the payload and convert it into a flatted
+-- json so that the built-in container can use the converted data.
+-- Applicable only for the built-in (first party) containers.
+modelQualityAppSpecification_recordPreprocessorSourceUri :: Lens.Lens' ModelQualityAppSpecification (Prelude.Maybe Prelude.Text)
+modelQualityAppSpecification_recordPreprocessorSourceUri = Lens.lens (\ModelQualityAppSpecification' {recordPreprocessorSourceUri} -> recordPreprocessorSourceUri) (\s@ModelQualityAppSpecification' {} a -> s {recordPreprocessorSourceUri = a} :: ModelQualityAppSpecification)
+
+-- | The address of the container image that the monitoring job runs.
+modelQualityAppSpecification_imageUri :: Lens.Lens' ModelQualityAppSpecification Prelude.Text
+modelQualityAppSpecification_imageUri = Lens.lens (\ModelQualityAppSpecification' {imageUri} -> imageUri) (\s@ModelQualityAppSpecification' {} a -> s {imageUri = a} :: ModelQualityAppSpecification)
+
+instance Data.FromJSON ModelQualityAppSpecification where
+  parseJSON =
+    Data.withObject
+      "ModelQualityAppSpecification"
+      ( \x ->
+          ModelQualityAppSpecification'
+            Prelude.<$> (x Data..:? "ContainerArguments")
+            Prelude.<*> (x Data..:? "ContainerEntrypoint")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "PostAnalyticsProcessorSourceUri")
+            Prelude.<*> (x Data..:? "ProblemType")
+            Prelude.<*> (x Data..:? "RecordPreprocessorSourceUri")
+            Prelude.<*> (x Data..: "ImageUri")
+      )
+
+instance
+  Prelude.Hashable
+    ModelQualityAppSpecification
+  where
+  hashWithSalt _salt ModelQualityAppSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerArguments
+      `Prelude.hashWithSalt` containerEntrypoint
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` postAnalyticsProcessorSourceUri
+      `Prelude.hashWithSalt` problemType
+      `Prelude.hashWithSalt` recordPreprocessorSourceUri
+      `Prelude.hashWithSalt` imageUri
+
+instance Prelude.NFData ModelQualityAppSpecification where
+  rnf ModelQualityAppSpecification' {..} =
+    Prelude.rnf containerArguments
+      `Prelude.seq` Prelude.rnf containerEntrypoint
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf postAnalyticsProcessorSourceUri
+      `Prelude.seq` Prelude.rnf problemType
+      `Prelude.seq` Prelude.rnf recordPreprocessorSourceUri
+      `Prelude.seq` Prelude.rnf imageUri
+
+instance Data.ToJSON ModelQualityAppSpecification where
+  toJSON ModelQualityAppSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerArguments" Data..=)
+              Prelude.<$> containerArguments,
+            ("ContainerEntrypoint" Data..=)
+              Prelude.<$> containerEntrypoint,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("PostAnalyticsProcessorSourceUri" Data..=)
+              Prelude.<$> postAnalyticsProcessorSourceUri,
+            ("ProblemType" Data..=) Prelude.<$> problemType,
+            ("RecordPreprocessorSourceUri" Data..=)
+              Prelude.<$> recordPreprocessorSourceUri,
+            Prelude.Just ("ImageUri" Data..= imageUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelQualityBaselineConfig.hs b/gen/Amazonka/SageMaker/Types/ModelQualityBaselineConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelQualityBaselineConfig.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelQualityBaselineConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelQualityBaselineConfig 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 Amazonka.SageMaker.Types.MonitoringConstraintsResource
+
+-- | Configuration for monitoring constraints and monitoring statistics.
+-- These baseline resources are compared against the results of the current
+-- job from the series of jobs scheduled to collect data periodically.
+--
+-- /See:/ 'newModelQualityBaselineConfig' smart constructor.
+data ModelQualityBaselineConfig = ModelQualityBaselineConfig'
+  { -- | The name of the job that performs baselining for the monitoring job.
+    baseliningJobName :: Prelude.Maybe Prelude.Text,
+    constraintsResource :: Prelude.Maybe MonitoringConstraintsResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelQualityBaselineConfig' 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:
+--
+-- 'baseliningJobName', 'modelQualityBaselineConfig_baseliningJobName' - The name of the job that performs baselining for the monitoring job.
+--
+-- 'constraintsResource', 'modelQualityBaselineConfig_constraintsResource' - Undocumented member.
+newModelQualityBaselineConfig ::
+  ModelQualityBaselineConfig
+newModelQualityBaselineConfig =
+  ModelQualityBaselineConfig'
+    { baseliningJobName =
+        Prelude.Nothing,
+      constraintsResource = Prelude.Nothing
+    }
+
+-- | The name of the job that performs baselining for the monitoring job.
+modelQualityBaselineConfig_baseliningJobName :: Lens.Lens' ModelQualityBaselineConfig (Prelude.Maybe Prelude.Text)
+modelQualityBaselineConfig_baseliningJobName = Lens.lens (\ModelQualityBaselineConfig' {baseliningJobName} -> baseliningJobName) (\s@ModelQualityBaselineConfig' {} a -> s {baseliningJobName = a} :: ModelQualityBaselineConfig)
+
+-- | Undocumented member.
+modelQualityBaselineConfig_constraintsResource :: Lens.Lens' ModelQualityBaselineConfig (Prelude.Maybe MonitoringConstraintsResource)
+modelQualityBaselineConfig_constraintsResource = Lens.lens (\ModelQualityBaselineConfig' {constraintsResource} -> constraintsResource) (\s@ModelQualityBaselineConfig' {} a -> s {constraintsResource = a} :: ModelQualityBaselineConfig)
+
+instance Data.FromJSON ModelQualityBaselineConfig where
+  parseJSON =
+    Data.withObject
+      "ModelQualityBaselineConfig"
+      ( \x ->
+          ModelQualityBaselineConfig'
+            Prelude.<$> (x Data..:? "BaseliningJobName")
+            Prelude.<*> (x Data..:? "ConstraintsResource")
+      )
+
+instance Prelude.Hashable ModelQualityBaselineConfig where
+  hashWithSalt _salt ModelQualityBaselineConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` baseliningJobName
+      `Prelude.hashWithSalt` constraintsResource
+
+instance Prelude.NFData ModelQualityBaselineConfig where
+  rnf ModelQualityBaselineConfig' {..} =
+    Prelude.rnf baseliningJobName
+      `Prelude.seq` Prelude.rnf constraintsResource
+
+instance Data.ToJSON ModelQualityBaselineConfig where
+  toJSON ModelQualityBaselineConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BaseliningJobName" Data..=)
+              Prelude.<$> baseliningJobName,
+            ("ConstraintsResource" Data..=)
+              Prelude.<$> constraintsResource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelQualityJobInput.hs b/gen/Amazonka/SageMaker/Types/ModelQualityJobInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelQualityJobInput.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelQualityJobInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelQualityJobInput 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 Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.EndpointInput
+import Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input
+
+-- | The input for the model quality monitoring job. Currently endponts are
+-- supported for input for model quality monitoring jobs.
+--
+-- /See:/ 'newModelQualityJobInput' smart constructor.
+data ModelQualityJobInput = ModelQualityJobInput'
+  { -- | Input object for the batch transform job.
+    batchTransformInput :: Prelude.Maybe BatchTransformInput,
+    endpointInput :: Prelude.Maybe EndpointInput,
+    -- | The ground truth label provided for the model.
+    groundTruthS3Input :: MonitoringGroundTruthS3Input
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelQualityJobInput' 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:
+--
+-- 'batchTransformInput', 'modelQualityJobInput_batchTransformInput' - Input object for the batch transform job.
+--
+-- 'endpointInput', 'modelQualityJobInput_endpointInput' - Undocumented member.
+--
+-- 'groundTruthS3Input', 'modelQualityJobInput_groundTruthS3Input' - The ground truth label provided for the model.
+newModelQualityJobInput ::
+  -- | 'groundTruthS3Input'
+  MonitoringGroundTruthS3Input ->
+  ModelQualityJobInput
+newModelQualityJobInput pGroundTruthS3Input_ =
+  ModelQualityJobInput'
+    { batchTransformInput =
+        Prelude.Nothing,
+      endpointInput = Prelude.Nothing,
+      groundTruthS3Input = pGroundTruthS3Input_
+    }
+
+-- | Input object for the batch transform job.
+modelQualityJobInput_batchTransformInput :: Lens.Lens' ModelQualityJobInput (Prelude.Maybe BatchTransformInput)
+modelQualityJobInput_batchTransformInput = Lens.lens (\ModelQualityJobInput' {batchTransformInput} -> batchTransformInput) (\s@ModelQualityJobInput' {} a -> s {batchTransformInput = a} :: ModelQualityJobInput)
+
+-- | Undocumented member.
+modelQualityJobInput_endpointInput :: Lens.Lens' ModelQualityJobInput (Prelude.Maybe EndpointInput)
+modelQualityJobInput_endpointInput = Lens.lens (\ModelQualityJobInput' {endpointInput} -> endpointInput) (\s@ModelQualityJobInput' {} a -> s {endpointInput = a} :: ModelQualityJobInput)
+
+-- | The ground truth label provided for the model.
+modelQualityJobInput_groundTruthS3Input :: Lens.Lens' ModelQualityJobInput MonitoringGroundTruthS3Input
+modelQualityJobInput_groundTruthS3Input = Lens.lens (\ModelQualityJobInput' {groundTruthS3Input} -> groundTruthS3Input) (\s@ModelQualityJobInput' {} a -> s {groundTruthS3Input = a} :: ModelQualityJobInput)
+
+instance Data.FromJSON ModelQualityJobInput where
+  parseJSON =
+    Data.withObject
+      "ModelQualityJobInput"
+      ( \x ->
+          ModelQualityJobInput'
+            Prelude.<$> (x Data..:? "BatchTransformInput")
+            Prelude.<*> (x Data..:? "EndpointInput")
+            Prelude.<*> (x Data..: "GroundTruthS3Input")
+      )
+
+instance Prelude.Hashable ModelQualityJobInput where
+  hashWithSalt _salt ModelQualityJobInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchTransformInput
+      `Prelude.hashWithSalt` endpointInput
+      `Prelude.hashWithSalt` groundTruthS3Input
+
+instance Prelude.NFData ModelQualityJobInput where
+  rnf ModelQualityJobInput' {..} =
+    Prelude.rnf batchTransformInput
+      `Prelude.seq` Prelude.rnf endpointInput
+      `Prelude.seq` Prelude.rnf groundTruthS3Input
+
+instance Data.ToJSON ModelQualityJobInput where
+  toJSON ModelQualityJobInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchTransformInput" Data..=)
+              Prelude.<$> batchTransformInput,
+            ("EndpointInput" Data..=) Prelude.<$> endpointInput,
+            Prelude.Just
+              ("GroundTruthS3Input" Data..= groundTruthS3Input)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelSortKey.hs b/gen/Amazonka/SageMaker/Types/ModelSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelSortKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelSortKey
+  ( ModelSortKey
+      ( ..,
+        ModelSortKey_CreationTime,
+        ModelSortKey_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelSortKey = ModelSortKey'
+  { fromModelSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelSortKey_CreationTime :: ModelSortKey
+pattern ModelSortKey_CreationTime = ModelSortKey' "CreationTime"
+
+pattern ModelSortKey_Name :: ModelSortKey
+pattern ModelSortKey_Name = ModelSortKey' "Name"
+
+{-# COMPLETE
+  ModelSortKey_CreationTime,
+  ModelSortKey_Name,
+  ModelSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelStepMetadata.hs b/gen/Amazonka/SageMaker/Types/ModelStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelStepMetadata.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelStepMetadata 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
+
+-- | Metadata for Model steps.
+--
+-- /See:/ 'newModelStepMetadata' smart constructor.
+data ModelStepMetadata = ModelStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the created model.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelStepMetadata' 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:
+--
+-- 'arn', 'modelStepMetadata_arn' - The Amazon Resource Name (ARN) of the created model.
+newModelStepMetadata ::
+  ModelStepMetadata
+newModelStepMetadata =
+  ModelStepMetadata' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the created model.
+modelStepMetadata_arn :: Lens.Lens' ModelStepMetadata (Prelude.Maybe Prelude.Text)
+modelStepMetadata_arn = Lens.lens (\ModelStepMetadata' {arn} -> arn) (\s@ModelStepMetadata' {} a -> s {arn = a} :: ModelStepMetadata)
+
+instance Data.FromJSON ModelStepMetadata where
+  parseJSON =
+    Data.withObject
+      "ModelStepMetadata"
+      ( \x ->
+          ModelStepMetadata' Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable ModelStepMetadata where
+  hashWithSalt _salt ModelStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData ModelStepMetadata where
+  rnf ModelStepMetadata' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/ModelSummary.hs b/gen/Amazonka/SageMaker/Types/ModelSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelSummary.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelSummary 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
+
+-- | Provides summary information about a model.
+--
+-- /See:/ 'newModelSummary' smart constructor.
+data ModelSummary = ModelSummary'
+  { -- | The name of the model that you want a summary for.
+    modelName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the model.
+    modelArn :: Prelude.Text,
+    -- | A timestamp that indicates when the model was created.
+    creationTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelSummary' 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:
+--
+-- 'modelName', 'modelSummary_modelName' - The name of the model that you want a summary for.
+--
+-- 'modelArn', 'modelSummary_modelArn' - The Amazon Resource Name (ARN) of the model.
+--
+-- 'creationTime', 'modelSummary_creationTime' - A timestamp that indicates when the model was created.
+newModelSummary ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'modelArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  ModelSummary
+newModelSummary pModelName_ pModelArn_ pCreationTime_ =
+  ModelSummary'
+    { modelName = pModelName_,
+      modelArn = pModelArn_,
+      creationTime = Data._Time Lens.# pCreationTime_
+    }
+
+-- | The name of the model that you want a summary for.
+modelSummary_modelName :: Lens.Lens' ModelSummary Prelude.Text
+modelSummary_modelName = Lens.lens (\ModelSummary' {modelName} -> modelName) (\s@ModelSummary' {} a -> s {modelName = a} :: ModelSummary)
+
+-- | The Amazon Resource Name (ARN) of the model.
+modelSummary_modelArn :: Lens.Lens' ModelSummary Prelude.Text
+modelSummary_modelArn = Lens.lens (\ModelSummary' {modelArn} -> modelArn) (\s@ModelSummary' {} a -> s {modelArn = a} :: ModelSummary)
+
+-- | A timestamp that indicates when the model was created.
+modelSummary_creationTime :: Lens.Lens' ModelSummary Prelude.UTCTime
+modelSummary_creationTime = Lens.lens (\ModelSummary' {creationTime} -> creationTime) (\s@ModelSummary' {} a -> s {creationTime = a} :: ModelSummary) Prelude.. Data._Time
+
+instance Data.FromJSON ModelSummary where
+  parseJSON =
+    Data.withObject
+      "ModelSummary"
+      ( \x ->
+          ModelSummary'
+            Prelude.<$> (x Data..: "ModelName")
+            Prelude.<*> (x Data..: "ModelArn")
+            Prelude.<*> (x Data..: "CreationTime")
+      )
+
+instance Prelude.Hashable ModelSummary where
+  hashWithSalt _salt ModelSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` modelArn
+      `Prelude.hashWithSalt` creationTime
+
+instance Prelude.NFData ModelSummary where
+  rnf ModelSummary' {..} =
+    Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf creationTime
diff --git a/gen/Amazonka/SageMaker/Types/ModelVariantAction.hs b/gen/Amazonka/SageMaker/Types/ModelVariantAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelVariantAction.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelVariantAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelVariantAction
+  ( ModelVariantAction
+      ( ..,
+        ModelVariantAction_Promote,
+        ModelVariantAction_Remove,
+        ModelVariantAction_Retain
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelVariantAction = ModelVariantAction'
+  { fromModelVariantAction ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelVariantAction_Promote :: ModelVariantAction
+pattern ModelVariantAction_Promote = ModelVariantAction' "Promote"
+
+pattern ModelVariantAction_Remove :: ModelVariantAction
+pattern ModelVariantAction_Remove = ModelVariantAction' "Remove"
+
+pattern ModelVariantAction_Retain :: ModelVariantAction
+pattern ModelVariantAction_Retain = ModelVariantAction' "Retain"
+
+{-# COMPLETE
+  ModelVariantAction_Promote,
+  ModelVariantAction_Remove,
+  ModelVariantAction_Retain,
+  ModelVariantAction'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ModelVariantConfig.hs b/gen/Amazonka/SageMaker/Types/ModelVariantConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelVariantConfig.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelVariantConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelVariantConfig 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 Amazonka.SageMaker.Types.ModelInfrastructureConfig
+
+-- | Contains information about the deployment options of a model.
+--
+-- /See:/ 'newModelVariantConfig' smart constructor.
+data ModelVariantConfig = ModelVariantConfig'
+  { -- | The name of the Amazon SageMaker Model entity.
+    modelName :: Prelude.Text,
+    -- | The name of the variant.
+    variantName :: Prelude.Text,
+    -- | The configuration for the infrastructure that the model will be deployed
+    -- to.
+    infrastructureConfig :: ModelInfrastructureConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelVariantConfig' 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:
+--
+-- 'modelName', 'modelVariantConfig_modelName' - The name of the Amazon SageMaker Model entity.
+--
+-- 'variantName', 'modelVariantConfig_variantName' - The name of the variant.
+--
+-- 'infrastructureConfig', 'modelVariantConfig_infrastructureConfig' - The configuration for the infrastructure that the model will be deployed
+-- to.
+newModelVariantConfig ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'variantName'
+  Prelude.Text ->
+  -- | 'infrastructureConfig'
+  ModelInfrastructureConfig ->
+  ModelVariantConfig
+newModelVariantConfig
+  pModelName_
+  pVariantName_
+  pInfrastructureConfig_ =
+    ModelVariantConfig'
+      { modelName = pModelName_,
+        variantName = pVariantName_,
+        infrastructureConfig = pInfrastructureConfig_
+      }
+
+-- | The name of the Amazon SageMaker Model entity.
+modelVariantConfig_modelName :: Lens.Lens' ModelVariantConfig Prelude.Text
+modelVariantConfig_modelName = Lens.lens (\ModelVariantConfig' {modelName} -> modelName) (\s@ModelVariantConfig' {} a -> s {modelName = a} :: ModelVariantConfig)
+
+-- | The name of the variant.
+modelVariantConfig_variantName :: Lens.Lens' ModelVariantConfig Prelude.Text
+modelVariantConfig_variantName = Lens.lens (\ModelVariantConfig' {variantName} -> variantName) (\s@ModelVariantConfig' {} a -> s {variantName = a} :: ModelVariantConfig)
+
+-- | The configuration for the infrastructure that the model will be deployed
+-- to.
+modelVariantConfig_infrastructureConfig :: Lens.Lens' ModelVariantConfig ModelInfrastructureConfig
+modelVariantConfig_infrastructureConfig = Lens.lens (\ModelVariantConfig' {infrastructureConfig} -> infrastructureConfig) (\s@ModelVariantConfig' {} a -> s {infrastructureConfig = a} :: ModelVariantConfig)
+
+instance Prelude.Hashable ModelVariantConfig where
+  hashWithSalt _salt ModelVariantConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` variantName
+      `Prelude.hashWithSalt` infrastructureConfig
+
+instance Prelude.NFData ModelVariantConfig where
+  rnf ModelVariantConfig' {..} =
+    Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf variantName
+      `Prelude.seq` Prelude.rnf infrastructureConfig
+
+instance Data.ToJSON ModelVariantConfig where
+  toJSON ModelVariantConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ModelName" Data..= modelName),
+            Prelude.Just ("VariantName" Data..= variantName),
+            Prelude.Just
+              ( "InfrastructureConfig"
+                  Data..= infrastructureConfig
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ModelVariantConfigSummary.hs b/gen/Amazonka/SageMaker/Types/ModelVariantConfigSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelVariantConfigSummary.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ModelVariantConfigSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelVariantConfigSummary 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 Amazonka.SageMaker.Types.ModelInfrastructureConfig
+import Amazonka.SageMaker.Types.ModelVariantStatus
+
+-- | Summary of the deployment configuration of a model.
+--
+-- /See:/ 'newModelVariantConfigSummary' smart constructor.
+data ModelVariantConfigSummary = ModelVariantConfigSummary'
+  { -- | The name of the Amazon SageMaker Model entity.
+    modelName :: Prelude.Text,
+    -- | The name of the variant.
+    variantName :: Prelude.Text,
+    -- | The configuration of the infrastructure that the model has been deployed
+    -- to.
+    infrastructureConfig :: ModelInfrastructureConfig,
+    -- | The status of deployment for the model variant on the hosted inference
+    -- endpoint.
+    --
+    -- -   @Creating@ - Amazon SageMaker is preparing the model variant on the
+    --     hosted inference endpoint.
+    --
+    -- -   @InService@ - The model variant is running on the hosted inference
+    --     endpoint.
+    --
+    -- -   @Updating@ - Amazon SageMaker is updating the model variant on the
+    --     hosted inference endpoint.
+    --
+    -- -   @Deleting@ - Amazon SageMaker is deleting the model variant on the
+    --     hosted inference endpoint.
+    --
+    -- -   @Deleted@ - The model variant has been deleted on the hosted
+    --     inference endpoint. This can only happen after stopping the
+    --     experiment.
+    status :: ModelVariantStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelVariantConfigSummary' 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:
+--
+-- 'modelName', 'modelVariantConfigSummary_modelName' - The name of the Amazon SageMaker Model entity.
+--
+-- 'variantName', 'modelVariantConfigSummary_variantName' - The name of the variant.
+--
+-- 'infrastructureConfig', 'modelVariantConfigSummary_infrastructureConfig' - The configuration of the infrastructure that the model has been deployed
+-- to.
+--
+-- 'status', 'modelVariantConfigSummary_status' - The status of deployment for the model variant on the hosted inference
+-- endpoint.
+--
+-- -   @Creating@ - Amazon SageMaker is preparing the model variant on the
+--     hosted inference endpoint.
+--
+-- -   @InService@ - The model variant is running on the hosted inference
+--     endpoint.
+--
+-- -   @Updating@ - Amazon SageMaker is updating the model variant on the
+--     hosted inference endpoint.
+--
+-- -   @Deleting@ - Amazon SageMaker is deleting the model variant on the
+--     hosted inference endpoint.
+--
+-- -   @Deleted@ - The model variant has been deleted on the hosted
+--     inference endpoint. This can only happen after stopping the
+--     experiment.
+newModelVariantConfigSummary ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'variantName'
+  Prelude.Text ->
+  -- | 'infrastructureConfig'
+  ModelInfrastructureConfig ->
+  -- | 'status'
+  ModelVariantStatus ->
+  ModelVariantConfigSummary
+newModelVariantConfigSummary
+  pModelName_
+  pVariantName_
+  pInfrastructureConfig_
+  pStatus_ =
+    ModelVariantConfigSummary'
+      { modelName = pModelName_,
+        variantName = pVariantName_,
+        infrastructureConfig = pInfrastructureConfig_,
+        status = pStatus_
+      }
+
+-- | The name of the Amazon SageMaker Model entity.
+modelVariantConfigSummary_modelName :: Lens.Lens' ModelVariantConfigSummary Prelude.Text
+modelVariantConfigSummary_modelName = Lens.lens (\ModelVariantConfigSummary' {modelName} -> modelName) (\s@ModelVariantConfigSummary' {} a -> s {modelName = a} :: ModelVariantConfigSummary)
+
+-- | The name of the variant.
+modelVariantConfigSummary_variantName :: Lens.Lens' ModelVariantConfigSummary Prelude.Text
+modelVariantConfigSummary_variantName = Lens.lens (\ModelVariantConfigSummary' {variantName} -> variantName) (\s@ModelVariantConfigSummary' {} a -> s {variantName = a} :: ModelVariantConfigSummary)
+
+-- | The configuration of the infrastructure that the model has been deployed
+-- to.
+modelVariantConfigSummary_infrastructureConfig :: Lens.Lens' ModelVariantConfigSummary ModelInfrastructureConfig
+modelVariantConfigSummary_infrastructureConfig = Lens.lens (\ModelVariantConfigSummary' {infrastructureConfig} -> infrastructureConfig) (\s@ModelVariantConfigSummary' {} a -> s {infrastructureConfig = a} :: ModelVariantConfigSummary)
+
+-- | The status of deployment for the model variant on the hosted inference
+-- endpoint.
+--
+-- -   @Creating@ - Amazon SageMaker is preparing the model variant on the
+--     hosted inference endpoint.
+--
+-- -   @InService@ - The model variant is running on the hosted inference
+--     endpoint.
+--
+-- -   @Updating@ - Amazon SageMaker is updating the model variant on the
+--     hosted inference endpoint.
+--
+-- -   @Deleting@ - Amazon SageMaker is deleting the model variant on the
+--     hosted inference endpoint.
+--
+-- -   @Deleted@ - The model variant has been deleted on the hosted
+--     inference endpoint. This can only happen after stopping the
+--     experiment.
+modelVariantConfigSummary_status :: Lens.Lens' ModelVariantConfigSummary ModelVariantStatus
+modelVariantConfigSummary_status = Lens.lens (\ModelVariantConfigSummary' {status} -> status) (\s@ModelVariantConfigSummary' {} a -> s {status = a} :: ModelVariantConfigSummary)
+
+instance Data.FromJSON ModelVariantConfigSummary where
+  parseJSON =
+    Data.withObject
+      "ModelVariantConfigSummary"
+      ( \x ->
+          ModelVariantConfigSummary'
+            Prelude.<$> (x Data..: "ModelName")
+            Prelude.<*> (x Data..: "VariantName")
+            Prelude.<*> (x Data..: "InfrastructureConfig")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable ModelVariantConfigSummary where
+  hashWithSalt _salt ModelVariantConfigSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` variantName
+      `Prelude.hashWithSalt` infrastructureConfig
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ModelVariantConfigSummary where
+  rnf ModelVariantConfigSummary' {..} =
+    Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf variantName
+      `Prelude.seq` Prelude.rnf infrastructureConfig
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/ModelVariantStatus.hs b/gen/Amazonka/SageMaker/Types/ModelVariantStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ModelVariantStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ModelVariantStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ModelVariantStatus
+  ( ModelVariantStatus
+      ( ..,
+        ModelVariantStatus_Creating,
+        ModelVariantStatus_Deleted,
+        ModelVariantStatus_Deleting,
+        ModelVariantStatus_InService,
+        ModelVariantStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelVariantStatus = ModelVariantStatus'
+  { fromModelVariantStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ModelVariantStatus_Creating :: ModelVariantStatus
+pattern ModelVariantStatus_Creating = ModelVariantStatus' "Creating"
+
+pattern ModelVariantStatus_Deleted :: ModelVariantStatus
+pattern ModelVariantStatus_Deleted = ModelVariantStatus' "Deleted"
+
+pattern ModelVariantStatus_Deleting :: ModelVariantStatus
+pattern ModelVariantStatus_Deleting = ModelVariantStatus' "Deleting"
+
+pattern ModelVariantStatus_InService :: ModelVariantStatus
+pattern ModelVariantStatus_InService = ModelVariantStatus' "InService"
+
+pattern ModelVariantStatus_Updating :: ModelVariantStatus
+pattern ModelVariantStatus_Updating = ModelVariantStatus' "Updating"
+
+{-# COMPLETE
+  ModelVariantStatus_Creating,
+  ModelVariantStatus_Deleted,
+  ModelVariantStatus_Deleting,
+  ModelVariantStatus_InService,
+  ModelVariantStatus_Updating,
+  ModelVariantStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringAlertActions.hs b/gen/Amazonka/SageMaker/Types/MonitoringAlertActions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringAlertActions.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringAlertActions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringAlertActions 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 Amazonka.SageMaker.Types.ModelDashboardIndicatorAction
+
+-- | A list of alert actions taken in response to an alert going into
+-- @InAlert@ status.
+--
+-- /See:/ 'newMonitoringAlertActions' smart constructor.
+data MonitoringAlertActions = MonitoringAlertActions'
+  { -- | An alert action taken to light up an icon on the Model Dashboard when an
+    -- alert goes into @InAlert@ status.
+    modelDashboardIndicator :: Prelude.Maybe ModelDashboardIndicatorAction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringAlertActions' 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:
+--
+-- 'modelDashboardIndicator', 'monitoringAlertActions_modelDashboardIndicator' - An alert action taken to light up an icon on the Model Dashboard when an
+-- alert goes into @InAlert@ status.
+newMonitoringAlertActions ::
+  MonitoringAlertActions
+newMonitoringAlertActions =
+  MonitoringAlertActions'
+    { modelDashboardIndicator =
+        Prelude.Nothing
+    }
+
+-- | An alert action taken to light up an icon on the Model Dashboard when an
+-- alert goes into @InAlert@ status.
+monitoringAlertActions_modelDashboardIndicator :: Lens.Lens' MonitoringAlertActions (Prelude.Maybe ModelDashboardIndicatorAction)
+monitoringAlertActions_modelDashboardIndicator = Lens.lens (\MonitoringAlertActions' {modelDashboardIndicator} -> modelDashboardIndicator) (\s@MonitoringAlertActions' {} a -> s {modelDashboardIndicator = a} :: MonitoringAlertActions)
+
+instance Data.FromJSON MonitoringAlertActions where
+  parseJSON =
+    Data.withObject
+      "MonitoringAlertActions"
+      ( \x ->
+          MonitoringAlertActions'
+            Prelude.<$> (x Data..:? "ModelDashboardIndicator")
+      )
+
+instance Prelude.Hashable MonitoringAlertActions where
+  hashWithSalt _salt MonitoringAlertActions' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelDashboardIndicator
+
+instance Prelude.NFData MonitoringAlertActions where
+  rnf MonitoringAlertActions' {..} =
+    Prelude.rnf modelDashboardIndicator
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringAlertHistorySortKey.hs b/gen/Amazonka/SageMaker/Types/MonitoringAlertHistorySortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringAlertHistorySortKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringAlertHistorySortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringAlertHistorySortKey
+  ( MonitoringAlertHistorySortKey
+      ( ..,
+        MonitoringAlertHistorySortKey_CreationTime,
+        MonitoringAlertHistorySortKey_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringAlertHistorySortKey = MonitoringAlertHistorySortKey'
+  { fromMonitoringAlertHistorySortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringAlertHistorySortKey_CreationTime :: MonitoringAlertHistorySortKey
+pattern MonitoringAlertHistorySortKey_CreationTime = MonitoringAlertHistorySortKey' "CreationTime"
+
+pattern MonitoringAlertHistorySortKey_Status :: MonitoringAlertHistorySortKey
+pattern MonitoringAlertHistorySortKey_Status = MonitoringAlertHistorySortKey' "Status"
+
+{-# COMPLETE
+  MonitoringAlertHistorySortKey_CreationTime,
+  MonitoringAlertHistorySortKey_Status,
+  MonitoringAlertHistorySortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringAlertHistorySummary.hs b/gen/Amazonka/SageMaker/Types/MonitoringAlertHistorySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringAlertHistorySummary.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringAlertHistorySummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringAlertHistorySummary 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 Amazonka.SageMaker.Types.MonitoringAlertStatus
+
+-- | Provides summary information of an alert\'s history.
+--
+-- /See:/ 'newMonitoringAlertHistorySummary' smart constructor.
+data MonitoringAlertHistorySummary = MonitoringAlertHistorySummary'
+  { -- | The name of a monitoring schedule.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The name of a monitoring alert.
+    monitoringAlertName :: Prelude.Text,
+    -- | A timestamp that indicates when the first alert transition occurred in
+    -- an alert history. An alert transition can be from status @InAlert@ to
+    -- @OK@, or from @OK@ to @InAlert@.
+    creationTime :: Data.POSIX,
+    -- | The current alert status of an alert.
+    alertStatus :: MonitoringAlertStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringAlertHistorySummary' 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:
+--
+-- 'monitoringScheduleName', 'monitoringAlertHistorySummary_monitoringScheduleName' - The name of a monitoring schedule.
+--
+-- 'monitoringAlertName', 'monitoringAlertHistorySummary_monitoringAlertName' - The name of a monitoring alert.
+--
+-- 'creationTime', 'monitoringAlertHistorySummary_creationTime' - A timestamp that indicates when the first alert transition occurred in
+-- an alert history. An alert transition can be from status @InAlert@ to
+-- @OK@, or from @OK@ to @InAlert@.
+--
+-- 'alertStatus', 'monitoringAlertHistorySummary_alertStatus' - The current alert status of an alert.
+newMonitoringAlertHistorySummary ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'monitoringAlertName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'alertStatus'
+  MonitoringAlertStatus ->
+  MonitoringAlertHistorySummary
+newMonitoringAlertHistorySummary
+  pMonitoringScheduleName_
+  pMonitoringAlertName_
+  pCreationTime_
+  pAlertStatus_ =
+    MonitoringAlertHistorySummary'
+      { monitoringScheduleName =
+          pMonitoringScheduleName_,
+        monitoringAlertName = pMonitoringAlertName_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        alertStatus = pAlertStatus_
+      }
+
+-- | The name of a monitoring schedule.
+monitoringAlertHistorySummary_monitoringScheduleName :: Lens.Lens' MonitoringAlertHistorySummary Prelude.Text
+monitoringAlertHistorySummary_monitoringScheduleName = Lens.lens (\MonitoringAlertHistorySummary' {monitoringScheduleName} -> monitoringScheduleName) (\s@MonitoringAlertHistorySummary' {} a -> s {monitoringScheduleName = a} :: MonitoringAlertHistorySummary)
+
+-- | The name of a monitoring alert.
+monitoringAlertHistorySummary_monitoringAlertName :: Lens.Lens' MonitoringAlertHistorySummary Prelude.Text
+monitoringAlertHistorySummary_monitoringAlertName = Lens.lens (\MonitoringAlertHistorySummary' {monitoringAlertName} -> monitoringAlertName) (\s@MonitoringAlertHistorySummary' {} a -> s {monitoringAlertName = a} :: MonitoringAlertHistorySummary)
+
+-- | A timestamp that indicates when the first alert transition occurred in
+-- an alert history. An alert transition can be from status @InAlert@ to
+-- @OK@, or from @OK@ to @InAlert@.
+monitoringAlertHistorySummary_creationTime :: Lens.Lens' MonitoringAlertHistorySummary Prelude.UTCTime
+monitoringAlertHistorySummary_creationTime = Lens.lens (\MonitoringAlertHistorySummary' {creationTime} -> creationTime) (\s@MonitoringAlertHistorySummary' {} a -> s {creationTime = a} :: MonitoringAlertHistorySummary) Prelude.. Data._Time
+
+-- | The current alert status of an alert.
+monitoringAlertHistorySummary_alertStatus :: Lens.Lens' MonitoringAlertHistorySummary MonitoringAlertStatus
+monitoringAlertHistorySummary_alertStatus = Lens.lens (\MonitoringAlertHistorySummary' {alertStatus} -> alertStatus) (\s@MonitoringAlertHistorySummary' {} a -> s {alertStatus = a} :: MonitoringAlertHistorySummary)
+
+instance Data.FromJSON MonitoringAlertHistorySummary where
+  parseJSON =
+    Data.withObject
+      "MonitoringAlertHistorySummary"
+      ( \x ->
+          MonitoringAlertHistorySummary'
+            Prelude.<$> (x Data..: "MonitoringScheduleName")
+            Prelude.<*> (x Data..: "MonitoringAlertName")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "AlertStatus")
+      )
+
+instance
+  Prelude.Hashable
+    MonitoringAlertHistorySummary
+  where
+  hashWithSalt _salt MonitoringAlertHistorySummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringAlertName
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` alertStatus
+
+instance Prelude.NFData MonitoringAlertHistorySummary where
+  rnf MonitoringAlertHistorySummary' {..} =
+    Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringAlertName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf alertStatus
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringAlertStatus.hs b/gen/Amazonka/SageMaker/Types/MonitoringAlertStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringAlertStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringAlertStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringAlertStatus
+  ( MonitoringAlertStatus
+      ( ..,
+        MonitoringAlertStatus_InAlert,
+        MonitoringAlertStatus_OK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringAlertStatus = MonitoringAlertStatus'
+  { fromMonitoringAlertStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringAlertStatus_InAlert :: MonitoringAlertStatus
+pattern MonitoringAlertStatus_InAlert = MonitoringAlertStatus' "InAlert"
+
+pattern MonitoringAlertStatus_OK :: MonitoringAlertStatus
+pattern MonitoringAlertStatus_OK = MonitoringAlertStatus' "OK"
+
+{-# COMPLETE
+  MonitoringAlertStatus_InAlert,
+  MonitoringAlertStatus_OK,
+  MonitoringAlertStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringAlertSummary.hs b/gen/Amazonka/SageMaker/Types/MonitoringAlertSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringAlertSummary.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringAlertSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringAlertSummary 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 Amazonka.SageMaker.Types.MonitoringAlertActions
+import Amazonka.SageMaker.Types.MonitoringAlertStatus
+
+-- | Provides summary information about a monitor alert.
+--
+-- /See:/ 'newMonitoringAlertSummary' smart constructor.
+data MonitoringAlertSummary = MonitoringAlertSummary'
+  { -- | The name of a monitoring alert.
+    monitoringAlertName :: Prelude.Text,
+    -- | A timestamp that indicates when a monitor alert was created.
+    creationTime :: Data.POSIX,
+    -- | A timestamp that indicates when a monitor alert was last updated.
+    lastModifiedTime :: Data.POSIX,
+    -- | The current status of an alert.
+    alertStatus :: MonitoringAlertStatus,
+    -- | Within @EvaluationPeriod@, how many execution failures will raise an
+    -- alert.
+    datapointsToAlert :: Prelude.Natural,
+    -- | The number of most recent monitoring executions to consider when
+    -- evaluating alert status.
+    evaluationPeriod :: Prelude.Natural,
+    -- | A list of alert actions taken in response to an alert going into
+    -- @InAlert@ status.
+    actions :: MonitoringAlertActions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringAlertSummary' 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:
+--
+-- 'monitoringAlertName', 'monitoringAlertSummary_monitoringAlertName' - The name of a monitoring alert.
+--
+-- 'creationTime', 'monitoringAlertSummary_creationTime' - A timestamp that indicates when a monitor alert was created.
+--
+-- 'lastModifiedTime', 'monitoringAlertSummary_lastModifiedTime' - A timestamp that indicates when a monitor alert was last updated.
+--
+-- 'alertStatus', 'monitoringAlertSummary_alertStatus' - The current status of an alert.
+--
+-- 'datapointsToAlert', 'monitoringAlertSummary_datapointsToAlert' - Within @EvaluationPeriod@, how many execution failures will raise an
+-- alert.
+--
+-- 'evaluationPeriod', 'monitoringAlertSummary_evaluationPeriod' - The number of most recent monitoring executions to consider when
+-- evaluating alert status.
+--
+-- 'actions', 'monitoringAlertSummary_actions' - A list of alert actions taken in response to an alert going into
+-- @InAlert@ status.
+newMonitoringAlertSummary ::
+  -- | 'monitoringAlertName'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'alertStatus'
+  MonitoringAlertStatus ->
+  -- | 'datapointsToAlert'
+  Prelude.Natural ->
+  -- | 'evaluationPeriod'
+  Prelude.Natural ->
+  -- | 'actions'
+  MonitoringAlertActions ->
+  MonitoringAlertSummary
+newMonitoringAlertSummary
+  pMonitoringAlertName_
+  pCreationTime_
+  pLastModifiedTime_
+  pAlertStatus_
+  pDatapointsToAlert_
+  pEvaluationPeriod_
+  pActions_ =
+    MonitoringAlertSummary'
+      { monitoringAlertName =
+          pMonitoringAlertName_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        alertStatus = pAlertStatus_,
+        datapointsToAlert = pDatapointsToAlert_,
+        evaluationPeriod = pEvaluationPeriod_,
+        actions = pActions_
+      }
+
+-- | The name of a monitoring alert.
+monitoringAlertSummary_monitoringAlertName :: Lens.Lens' MonitoringAlertSummary Prelude.Text
+monitoringAlertSummary_monitoringAlertName = Lens.lens (\MonitoringAlertSummary' {monitoringAlertName} -> monitoringAlertName) (\s@MonitoringAlertSummary' {} a -> s {monitoringAlertName = a} :: MonitoringAlertSummary)
+
+-- | A timestamp that indicates when a monitor alert was created.
+monitoringAlertSummary_creationTime :: Lens.Lens' MonitoringAlertSummary Prelude.UTCTime
+monitoringAlertSummary_creationTime = Lens.lens (\MonitoringAlertSummary' {creationTime} -> creationTime) (\s@MonitoringAlertSummary' {} a -> s {creationTime = a} :: MonitoringAlertSummary) Prelude.. Data._Time
+
+-- | A timestamp that indicates when a monitor alert was last updated.
+monitoringAlertSummary_lastModifiedTime :: Lens.Lens' MonitoringAlertSummary Prelude.UTCTime
+monitoringAlertSummary_lastModifiedTime = Lens.lens (\MonitoringAlertSummary' {lastModifiedTime} -> lastModifiedTime) (\s@MonitoringAlertSummary' {} a -> s {lastModifiedTime = a} :: MonitoringAlertSummary) Prelude.. Data._Time
+
+-- | The current status of an alert.
+monitoringAlertSummary_alertStatus :: Lens.Lens' MonitoringAlertSummary MonitoringAlertStatus
+monitoringAlertSummary_alertStatus = Lens.lens (\MonitoringAlertSummary' {alertStatus} -> alertStatus) (\s@MonitoringAlertSummary' {} a -> s {alertStatus = a} :: MonitoringAlertSummary)
+
+-- | Within @EvaluationPeriod@, how many execution failures will raise an
+-- alert.
+monitoringAlertSummary_datapointsToAlert :: Lens.Lens' MonitoringAlertSummary Prelude.Natural
+monitoringAlertSummary_datapointsToAlert = Lens.lens (\MonitoringAlertSummary' {datapointsToAlert} -> datapointsToAlert) (\s@MonitoringAlertSummary' {} a -> s {datapointsToAlert = a} :: MonitoringAlertSummary)
+
+-- | The number of most recent monitoring executions to consider when
+-- evaluating alert status.
+monitoringAlertSummary_evaluationPeriod :: Lens.Lens' MonitoringAlertSummary Prelude.Natural
+monitoringAlertSummary_evaluationPeriod = Lens.lens (\MonitoringAlertSummary' {evaluationPeriod} -> evaluationPeriod) (\s@MonitoringAlertSummary' {} a -> s {evaluationPeriod = a} :: MonitoringAlertSummary)
+
+-- | A list of alert actions taken in response to an alert going into
+-- @InAlert@ status.
+monitoringAlertSummary_actions :: Lens.Lens' MonitoringAlertSummary MonitoringAlertActions
+monitoringAlertSummary_actions = Lens.lens (\MonitoringAlertSummary' {actions} -> actions) (\s@MonitoringAlertSummary' {} a -> s {actions = a} :: MonitoringAlertSummary)
+
+instance Data.FromJSON MonitoringAlertSummary where
+  parseJSON =
+    Data.withObject
+      "MonitoringAlertSummary"
+      ( \x ->
+          MonitoringAlertSummary'
+            Prelude.<$> (x Data..: "MonitoringAlertName")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "AlertStatus")
+            Prelude.<*> (x Data..: "DatapointsToAlert")
+            Prelude.<*> (x Data..: "EvaluationPeriod")
+            Prelude.<*> (x Data..: "Actions")
+      )
+
+instance Prelude.Hashable MonitoringAlertSummary where
+  hashWithSalt _salt MonitoringAlertSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` monitoringAlertName
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` alertStatus
+      `Prelude.hashWithSalt` datapointsToAlert
+      `Prelude.hashWithSalt` evaluationPeriod
+      `Prelude.hashWithSalt` actions
+
+instance Prelude.NFData MonitoringAlertSummary where
+  rnf MonitoringAlertSummary' {..} =
+    Prelude.rnf monitoringAlertName
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf alertStatus
+      `Prelude.seq` Prelude.rnf datapointsToAlert
+      `Prelude.seq` Prelude.rnf evaluationPeriod
+      `Prelude.seq` Prelude.rnf actions
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringAppSpecification.hs b/gen/Amazonka/SageMaker/Types/MonitoringAppSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringAppSpecification.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringAppSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringAppSpecification 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
+
+-- | Container image configuration object for the monitoring job.
+--
+-- /See:/ 'newMonitoringAppSpecification' smart constructor.
+data MonitoringAppSpecification = MonitoringAppSpecification'
+  { -- | An array of arguments for the container used to run the monitoring job.
+    containerArguments :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Specifies the entrypoint for a container used to run the monitoring job.
+    containerEntrypoint :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | An Amazon S3 URI to a script that is called after analysis has been
+    -- performed. Applicable only for the built-in (first party) containers.
+    postAnalyticsProcessorSourceUri :: Prelude.Maybe Prelude.Text,
+    -- | An Amazon S3 URI to a script that is called per row prior to running
+    -- analysis. It can base64 decode the payload and convert it into a flatted
+    -- json so that the built-in container can use the converted data.
+    -- Applicable only for the built-in (first party) containers.
+    recordPreprocessorSourceUri :: Prelude.Maybe Prelude.Text,
+    -- | The container image to be run by the monitoring job.
+    imageUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringAppSpecification' 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:
+--
+-- 'containerArguments', 'monitoringAppSpecification_containerArguments' - An array of arguments for the container used to run the monitoring job.
+--
+-- 'containerEntrypoint', 'monitoringAppSpecification_containerEntrypoint' - Specifies the entrypoint for a container used to run the monitoring job.
+--
+-- 'postAnalyticsProcessorSourceUri', 'monitoringAppSpecification_postAnalyticsProcessorSourceUri' - An Amazon S3 URI to a script that is called after analysis has been
+-- performed. Applicable only for the built-in (first party) containers.
+--
+-- 'recordPreprocessorSourceUri', 'monitoringAppSpecification_recordPreprocessorSourceUri' - An Amazon S3 URI to a script that is called per row prior to running
+-- analysis. It can base64 decode the payload and convert it into a flatted
+-- json so that the built-in container can use the converted data.
+-- Applicable only for the built-in (first party) containers.
+--
+-- 'imageUri', 'monitoringAppSpecification_imageUri' - The container image to be run by the monitoring job.
+newMonitoringAppSpecification ::
+  -- | 'imageUri'
+  Prelude.Text ->
+  MonitoringAppSpecification
+newMonitoringAppSpecification pImageUri_ =
+  MonitoringAppSpecification'
+    { containerArguments =
+        Prelude.Nothing,
+      containerEntrypoint = Prelude.Nothing,
+      postAnalyticsProcessorSourceUri =
+        Prelude.Nothing,
+      recordPreprocessorSourceUri = Prelude.Nothing,
+      imageUri = pImageUri_
+    }
+
+-- | An array of arguments for the container used to run the monitoring job.
+monitoringAppSpecification_containerArguments :: Lens.Lens' MonitoringAppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+monitoringAppSpecification_containerArguments = Lens.lens (\MonitoringAppSpecification' {containerArguments} -> containerArguments) (\s@MonitoringAppSpecification' {} a -> s {containerArguments = a} :: MonitoringAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the entrypoint for a container used to run the monitoring job.
+monitoringAppSpecification_containerEntrypoint :: Lens.Lens' MonitoringAppSpecification (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+monitoringAppSpecification_containerEntrypoint = Lens.lens (\MonitoringAppSpecification' {containerEntrypoint} -> containerEntrypoint) (\s@MonitoringAppSpecification' {} a -> s {containerEntrypoint = a} :: MonitoringAppSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | An Amazon S3 URI to a script that is called after analysis has been
+-- performed. Applicable only for the built-in (first party) containers.
+monitoringAppSpecification_postAnalyticsProcessorSourceUri :: Lens.Lens' MonitoringAppSpecification (Prelude.Maybe Prelude.Text)
+monitoringAppSpecification_postAnalyticsProcessorSourceUri = Lens.lens (\MonitoringAppSpecification' {postAnalyticsProcessorSourceUri} -> postAnalyticsProcessorSourceUri) (\s@MonitoringAppSpecification' {} a -> s {postAnalyticsProcessorSourceUri = a} :: MonitoringAppSpecification)
+
+-- | An Amazon S3 URI to a script that is called per row prior to running
+-- analysis. It can base64 decode the payload and convert it into a flatted
+-- json so that the built-in container can use the converted data.
+-- Applicable only for the built-in (first party) containers.
+monitoringAppSpecification_recordPreprocessorSourceUri :: Lens.Lens' MonitoringAppSpecification (Prelude.Maybe Prelude.Text)
+monitoringAppSpecification_recordPreprocessorSourceUri = Lens.lens (\MonitoringAppSpecification' {recordPreprocessorSourceUri} -> recordPreprocessorSourceUri) (\s@MonitoringAppSpecification' {} a -> s {recordPreprocessorSourceUri = a} :: MonitoringAppSpecification)
+
+-- | The container image to be run by the monitoring job.
+monitoringAppSpecification_imageUri :: Lens.Lens' MonitoringAppSpecification Prelude.Text
+monitoringAppSpecification_imageUri = Lens.lens (\MonitoringAppSpecification' {imageUri} -> imageUri) (\s@MonitoringAppSpecification' {} a -> s {imageUri = a} :: MonitoringAppSpecification)
+
+instance Data.FromJSON MonitoringAppSpecification where
+  parseJSON =
+    Data.withObject
+      "MonitoringAppSpecification"
+      ( \x ->
+          MonitoringAppSpecification'
+            Prelude.<$> (x Data..:? "ContainerArguments")
+            Prelude.<*> (x Data..:? "ContainerEntrypoint")
+            Prelude.<*> (x Data..:? "PostAnalyticsProcessorSourceUri")
+            Prelude.<*> (x Data..:? "RecordPreprocessorSourceUri")
+            Prelude.<*> (x Data..: "ImageUri")
+      )
+
+instance Prelude.Hashable MonitoringAppSpecification where
+  hashWithSalt _salt MonitoringAppSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerArguments
+      `Prelude.hashWithSalt` containerEntrypoint
+      `Prelude.hashWithSalt` postAnalyticsProcessorSourceUri
+      `Prelude.hashWithSalt` recordPreprocessorSourceUri
+      `Prelude.hashWithSalt` imageUri
+
+instance Prelude.NFData MonitoringAppSpecification where
+  rnf MonitoringAppSpecification' {..} =
+    Prelude.rnf containerArguments
+      `Prelude.seq` Prelude.rnf containerEntrypoint
+      `Prelude.seq` Prelude.rnf postAnalyticsProcessorSourceUri
+      `Prelude.seq` Prelude.rnf recordPreprocessorSourceUri
+      `Prelude.seq` Prelude.rnf imageUri
+
+instance Data.ToJSON MonitoringAppSpecification where
+  toJSON MonitoringAppSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerArguments" Data..=)
+              Prelude.<$> containerArguments,
+            ("ContainerEntrypoint" Data..=)
+              Prelude.<$> containerEntrypoint,
+            ("PostAnalyticsProcessorSourceUri" Data..=)
+              Prelude.<$> postAnalyticsProcessorSourceUri,
+            ("RecordPreprocessorSourceUri" Data..=)
+              Prelude.<$> recordPreprocessorSourceUri,
+            Prelude.Just ("ImageUri" Data..= imageUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringBaselineConfig.hs b/gen/Amazonka/SageMaker/Types/MonitoringBaselineConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringBaselineConfig.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringBaselineConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringBaselineConfig 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 Amazonka.SageMaker.Types.MonitoringConstraintsResource
+import Amazonka.SageMaker.Types.MonitoringStatisticsResource
+
+-- | Configuration for monitoring constraints and monitoring statistics.
+-- These baseline resources are compared against the results of the current
+-- job from the series of jobs scheduled to collect data periodically.
+--
+-- /See:/ 'newMonitoringBaselineConfig' smart constructor.
+data MonitoringBaselineConfig = MonitoringBaselineConfig'
+  { -- | The name of the job that performs baselining for the monitoring job.
+    baseliningJobName :: Prelude.Maybe Prelude.Text,
+    -- | The baseline constraint file in Amazon S3 that the current monitoring
+    -- job should validated against.
+    constraintsResource :: Prelude.Maybe MonitoringConstraintsResource,
+    -- | The baseline statistics file in Amazon S3 that the current monitoring
+    -- job should be validated against.
+    statisticsResource :: Prelude.Maybe MonitoringStatisticsResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringBaselineConfig' 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:
+--
+-- 'baseliningJobName', 'monitoringBaselineConfig_baseliningJobName' - The name of the job that performs baselining for the monitoring job.
+--
+-- 'constraintsResource', 'monitoringBaselineConfig_constraintsResource' - The baseline constraint file in Amazon S3 that the current monitoring
+-- job should validated against.
+--
+-- 'statisticsResource', 'monitoringBaselineConfig_statisticsResource' - The baseline statistics file in Amazon S3 that the current monitoring
+-- job should be validated against.
+newMonitoringBaselineConfig ::
+  MonitoringBaselineConfig
+newMonitoringBaselineConfig =
+  MonitoringBaselineConfig'
+    { baseliningJobName =
+        Prelude.Nothing,
+      constraintsResource = Prelude.Nothing,
+      statisticsResource = Prelude.Nothing
+    }
+
+-- | The name of the job that performs baselining for the monitoring job.
+monitoringBaselineConfig_baseliningJobName :: Lens.Lens' MonitoringBaselineConfig (Prelude.Maybe Prelude.Text)
+monitoringBaselineConfig_baseliningJobName = Lens.lens (\MonitoringBaselineConfig' {baseliningJobName} -> baseliningJobName) (\s@MonitoringBaselineConfig' {} a -> s {baseliningJobName = a} :: MonitoringBaselineConfig)
+
+-- | The baseline constraint file in Amazon S3 that the current monitoring
+-- job should validated against.
+monitoringBaselineConfig_constraintsResource :: Lens.Lens' MonitoringBaselineConfig (Prelude.Maybe MonitoringConstraintsResource)
+monitoringBaselineConfig_constraintsResource = Lens.lens (\MonitoringBaselineConfig' {constraintsResource} -> constraintsResource) (\s@MonitoringBaselineConfig' {} a -> s {constraintsResource = a} :: MonitoringBaselineConfig)
+
+-- | The baseline statistics file in Amazon S3 that the current monitoring
+-- job should be validated against.
+monitoringBaselineConfig_statisticsResource :: Lens.Lens' MonitoringBaselineConfig (Prelude.Maybe MonitoringStatisticsResource)
+monitoringBaselineConfig_statisticsResource = Lens.lens (\MonitoringBaselineConfig' {statisticsResource} -> statisticsResource) (\s@MonitoringBaselineConfig' {} a -> s {statisticsResource = a} :: MonitoringBaselineConfig)
+
+instance Data.FromJSON MonitoringBaselineConfig where
+  parseJSON =
+    Data.withObject
+      "MonitoringBaselineConfig"
+      ( \x ->
+          MonitoringBaselineConfig'
+            Prelude.<$> (x Data..:? "BaseliningJobName")
+            Prelude.<*> (x Data..:? "ConstraintsResource")
+            Prelude.<*> (x Data..:? "StatisticsResource")
+      )
+
+instance Prelude.Hashable MonitoringBaselineConfig where
+  hashWithSalt _salt MonitoringBaselineConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` baseliningJobName
+      `Prelude.hashWithSalt` constraintsResource
+      `Prelude.hashWithSalt` statisticsResource
+
+instance Prelude.NFData MonitoringBaselineConfig where
+  rnf MonitoringBaselineConfig' {..} =
+    Prelude.rnf baseliningJobName
+      `Prelude.seq` Prelude.rnf constraintsResource
+      `Prelude.seq` Prelude.rnf statisticsResource
+
+instance Data.ToJSON MonitoringBaselineConfig where
+  toJSON MonitoringBaselineConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BaseliningJobName" Data..=)
+              Prelude.<$> baseliningJobName,
+            ("ConstraintsResource" Data..=)
+              Prelude.<$> constraintsResource,
+            ("StatisticsResource" Data..=)
+              Prelude.<$> statisticsResource
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringClusterConfig.hs b/gen/Amazonka/SageMaker/Types/MonitoringClusterConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringClusterConfig.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringClusterConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringClusterConfig 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 Amazonka.SageMaker.Types.ProcessingInstanceType
+
+-- | Configuration for the cluster used to run model monitoring jobs.
+--
+-- /See:/ 'newMonitoringClusterConfig' smart constructor.
+data MonitoringClusterConfig = MonitoringClusterConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance(s) that run the model monitoring
+    -- job.
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The number of ML compute instances to use in the model monitoring job.
+    -- For distributed processing jobs, specify a value greater than 1. The
+    -- default value is 1.
+    instanceCount :: Prelude.Natural,
+    -- | The ML compute instance type for the processing job.
+    instanceType :: ProcessingInstanceType,
+    -- | The size of the ML storage volume, in gigabytes, that you want to
+    -- provision. You must specify sufficient ML storage for your scenario.
+    volumeSizeInGB :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringClusterConfig' 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:
+--
+-- 'volumeKmsKeyId', 'monitoringClusterConfig_volumeKmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance(s) that run the model monitoring
+-- job.
+--
+-- 'instanceCount', 'monitoringClusterConfig_instanceCount' - The number of ML compute instances to use in the model monitoring job.
+-- For distributed processing jobs, specify a value greater than 1. The
+-- default value is 1.
+--
+-- 'instanceType', 'monitoringClusterConfig_instanceType' - The ML compute instance type for the processing job.
+--
+-- 'volumeSizeInGB', 'monitoringClusterConfig_volumeSizeInGB' - The size of the ML storage volume, in gigabytes, that you want to
+-- provision. You must specify sufficient ML storage for your scenario.
+newMonitoringClusterConfig ::
+  -- | 'instanceCount'
+  Prelude.Natural ->
+  -- | 'instanceType'
+  ProcessingInstanceType ->
+  -- | 'volumeSizeInGB'
+  Prelude.Natural ->
+  MonitoringClusterConfig
+newMonitoringClusterConfig
+  pInstanceCount_
+  pInstanceType_
+  pVolumeSizeInGB_ =
+    MonitoringClusterConfig'
+      { volumeKmsKeyId =
+          Prelude.Nothing,
+        instanceCount = pInstanceCount_,
+        instanceType = pInstanceType_,
+        volumeSizeInGB = pVolumeSizeInGB_
+      }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance(s) that run the model monitoring
+-- job.
+monitoringClusterConfig_volumeKmsKeyId :: Lens.Lens' MonitoringClusterConfig (Prelude.Maybe Prelude.Text)
+monitoringClusterConfig_volumeKmsKeyId = Lens.lens (\MonitoringClusterConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@MonitoringClusterConfig' {} a -> s {volumeKmsKeyId = a} :: MonitoringClusterConfig)
+
+-- | The number of ML compute instances to use in the model monitoring job.
+-- For distributed processing jobs, specify a value greater than 1. The
+-- default value is 1.
+monitoringClusterConfig_instanceCount :: Lens.Lens' MonitoringClusterConfig Prelude.Natural
+monitoringClusterConfig_instanceCount = Lens.lens (\MonitoringClusterConfig' {instanceCount} -> instanceCount) (\s@MonitoringClusterConfig' {} a -> s {instanceCount = a} :: MonitoringClusterConfig)
+
+-- | The ML compute instance type for the processing job.
+monitoringClusterConfig_instanceType :: Lens.Lens' MonitoringClusterConfig ProcessingInstanceType
+monitoringClusterConfig_instanceType = Lens.lens (\MonitoringClusterConfig' {instanceType} -> instanceType) (\s@MonitoringClusterConfig' {} a -> s {instanceType = a} :: MonitoringClusterConfig)
+
+-- | The size of the ML storage volume, in gigabytes, that you want to
+-- provision. You must specify sufficient ML storage for your scenario.
+monitoringClusterConfig_volumeSizeInGB :: Lens.Lens' MonitoringClusterConfig Prelude.Natural
+monitoringClusterConfig_volumeSizeInGB = Lens.lens (\MonitoringClusterConfig' {volumeSizeInGB} -> volumeSizeInGB) (\s@MonitoringClusterConfig' {} a -> s {volumeSizeInGB = a} :: MonitoringClusterConfig)
+
+instance Data.FromJSON MonitoringClusterConfig where
+  parseJSON =
+    Data.withObject
+      "MonitoringClusterConfig"
+      ( \x ->
+          MonitoringClusterConfig'
+            Prelude.<$> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..: "InstanceCount")
+            Prelude.<*> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "VolumeSizeInGB")
+      )
+
+instance Prelude.Hashable MonitoringClusterConfig where
+  hashWithSalt _salt MonitoringClusterConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` instanceCount
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` volumeSizeInGB
+
+instance Prelude.NFData MonitoringClusterConfig where
+  rnf MonitoringClusterConfig' {..} =
+    Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+
+instance Data.ToJSON MonitoringClusterConfig where
+  toJSON MonitoringClusterConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            Prelude.Just ("InstanceCount" Data..= instanceCount),
+            Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just
+              ("VolumeSizeInGB" Data..= volumeSizeInGB)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringConstraintsResource.hs b/gen/Amazonka/SageMaker/Types/MonitoringConstraintsResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringConstraintsResource.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringConstraintsResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringConstraintsResource 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
+
+-- | The constraints resource for a monitoring job.
+--
+-- /See:/ 'newMonitoringConstraintsResource' smart constructor.
+data MonitoringConstraintsResource = MonitoringConstraintsResource'
+  { -- | The Amazon S3 URI for the constraints resource.
+    s3Uri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringConstraintsResource' 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:
+--
+-- 's3Uri', 'monitoringConstraintsResource_s3Uri' - The Amazon S3 URI for the constraints resource.
+newMonitoringConstraintsResource ::
+  MonitoringConstraintsResource
+newMonitoringConstraintsResource =
+  MonitoringConstraintsResource'
+    { s3Uri =
+        Prelude.Nothing
+    }
+
+-- | The Amazon S3 URI for the constraints resource.
+monitoringConstraintsResource_s3Uri :: Lens.Lens' MonitoringConstraintsResource (Prelude.Maybe Prelude.Text)
+monitoringConstraintsResource_s3Uri = Lens.lens (\MonitoringConstraintsResource' {s3Uri} -> s3Uri) (\s@MonitoringConstraintsResource' {} a -> s {s3Uri = a} :: MonitoringConstraintsResource)
+
+instance Data.FromJSON MonitoringConstraintsResource where
+  parseJSON =
+    Data.withObject
+      "MonitoringConstraintsResource"
+      ( \x ->
+          MonitoringConstraintsResource'
+            Prelude.<$> (x Data..:? "S3Uri")
+      )
+
+instance
+  Prelude.Hashable
+    MonitoringConstraintsResource
+  where
+  hashWithSalt _salt MonitoringConstraintsResource' {..} =
+    _salt `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData MonitoringConstraintsResource where
+  rnf MonitoringConstraintsResource' {..} =
+    Prelude.rnf s3Uri
+
+instance Data.ToJSON MonitoringConstraintsResource where
+  toJSON MonitoringConstraintsResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3Uri" Data..=) Prelude.<$> s3Uri]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringCsvDatasetFormat.hs b/gen/Amazonka/SageMaker/Types/MonitoringCsvDatasetFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringCsvDatasetFormat.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringCsvDatasetFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringCsvDatasetFormat 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
+
+-- | Represents the CSV dataset format used when running a monitoring job.
+--
+-- /See:/ 'newMonitoringCsvDatasetFormat' smart constructor.
+data MonitoringCsvDatasetFormat = MonitoringCsvDatasetFormat'
+  { -- | Indicates if the CSV data has a header.
+    header :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringCsvDatasetFormat' 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:
+--
+-- 'header', 'monitoringCsvDatasetFormat_header' - Indicates if the CSV data has a header.
+newMonitoringCsvDatasetFormat ::
+  MonitoringCsvDatasetFormat
+newMonitoringCsvDatasetFormat =
+  MonitoringCsvDatasetFormat'
+    { header =
+        Prelude.Nothing
+    }
+
+-- | Indicates if the CSV data has a header.
+monitoringCsvDatasetFormat_header :: Lens.Lens' MonitoringCsvDatasetFormat (Prelude.Maybe Prelude.Bool)
+monitoringCsvDatasetFormat_header = Lens.lens (\MonitoringCsvDatasetFormat' {header} -> header) (\s@MonitoringCsvDatasetFormat' {} a -> s {header = a} :: MonitoringCsvDatasetFormat)
+
+instance Data.FromJSON MonitoringCsvDatasetFormat where
+  parseJSON =
+    Data.withObject
+      "MonitoringCsvDatasetFormat"
+      ( \x ->
+          MonitoringCsvDatasetFormat'
+            Prelude.<$> (x Data..:? "Header")
+      )
+
+instance Prelude.Hashable MonitoringCsvDatasetFormat where
+  hashWithSalt _salt MonitoringCsvDatasetFormat' {..} =
+    _salt `Prelude.hashWithSalt` header
+
+instance Prelude.NFData MonitoringCsvDatasetFormat where
+  rnf MonitoringCsvDatasetFormat' {..} =
+    Prelude.rnf header
+
+instance Data.ToJSON MonitoringCsvDatasetFormat where
+  toJSON MonitoringCsvDatasetFormat' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Header" Data..=) Prelude.<$> header]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringDatasetFormat.hs b/gen/Amazonka/SageMaker/Types/MonitoringDatasetFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringDatasetFormat.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringDatasetFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringDatasetFormat 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 Amazonka.SageMaker.Types.MonitoringCsvDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringJsonDatasetFormat
+import Amazonka.SageMaker.Types.MonitoringParquetDatasetFormat
+
+-- | Represents the dataset format used when running a monitoring job.
+--
+-- /See:/ 'newMonitoringDatasetFormat' smart constructor.
+data MonitoringDatasetFormat = MonitoringDatasetFormat'
+  { -- | The CSV dataset used in the monitoring job.
+    csv :: Prelude.Maybe MonitoringCsvDatasetFormat,
+    -- | The JSON dataset used in the monitoring job
+    json :: Prelude.Maybe MonitoringJsonDatasetFormat,
+    -- | The Parquet dataset used in the monitoring job
+    parquet :: Prelude.Maybe MonitoringParquetDatasetFormat
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringDatasetFormat' 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:
+--
+-- 'csv', 'monitoringDatasetFormat_csv' - The CSV dataset used in the monitoring job.
+--
+-- 'json', 'monitoringDatasetFormat_json' - The JSON dataset used in the monitoring job
+--
+-- 'parquet', 'monitoringDatasetFormat_parquet' - The Parquet dataset used in the monitoring job
+newMonitoringDatasetFormat ::
+  MonitoringDatasetFormat
+newMonitoringDatasetFormat =
+  MonitoringDatasetFormat'
+    { csv = Prelude.Nothing,
+      json = Prelude.Nothing,
+      parquet = Prelude.Nothing
+    }
+
+-- | The CSV dataset used in the monitoring job.
+monitoringDatasetFormat_csv :: Lens.Lens' MonitoringDatasetFormat (Prelude.Maybe MonitoringCsvDatasetFormat)
+monitoringDatasetFormat_csv = Lens.lens (\MonitoringDatasetFormat' {csv} -> csv) (\s@MonitoringDatasetFormat' {} a -> s {csv = a} :: MonitoringDatasetFormat)
+
+-- | The JSON dataset used in the monitoring job
+monitoringDatasetFormat_json :: Lens.Lens' MonitoringDatasetFormat (Prelude.Maybe MonitoringJsonDatasetFormat)
+monitoringDatasetFormat_json = Lens.lens (\MonitoringDatasetFormat' {json} -> json) (\s@MonitoringDatasetFormat' {} a -> s {json = a} :: MonitoringDatasetFormat)
+
+-- | The Parquet dataset used in the monitoring job
+monitoringDatasetFormat_parquet :: Lens.Lens' MonitoringDatasetFormat (Prelude.Maybe MonitoringParquetDatasetFormat)
+monitoringDatasetFormat_parquet = Lens.lens (\MonitoringDatasetFormat' {parquet} -> parquet) (\s@MonitoringDatasetFormat' {} a -> s {parquet = a} :: MonitoringDatasetFormat)
+
+instance Data.FromJSON MonitoringDatasetFormat where
+  parseJSON =
+    Data.withObject
+      "MonitoringDatasetFormat"
+      ( \x ->
+          MonitoringDatasetFormat'
+            Prelude.<$> (x Data..:? "Csv")
+            Prelude.<*> (x Data..:? "Json")
+            Prelude.<*> (x Data..:? "Parquet")
+      )
+
+instance Prelude.Hashable MonitoringDatasetFormat where
+  hashWithSalt _salt MonitoringDatasetFormat' {..} =
+    _salt
+      `Prelude.hashWithSalt` csv
+      `Prelude.hashWithSalt` json
+      `Prelude.hashWithSalt` parquet
+
+instance Prelude.NFData MonitoringDatasetFormat where
+  rnf MonitoringDatasetFormat' {..} =
+    Prelude.rnf csv
+      `Prelude.seq` Prelude.rnf json
+      `Prelude.seq` Prelude.rnf parquet
+
+instance Data.ToJSON MonitoringDatasetFormat where
+  toJSON MonitoringDatasetFormat' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Csv" Data..=) Prelude.<$> csv,
+            ("Json" Data..=) Prelude.<$> json,
+            ("Parquet" Data..=) Prelude.<$> parquet
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringExecutionSortKey.hs b/gen/Amazonka/SageMaker/Types/MonitoringExecutionSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringExecutionSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringExecutionSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringExecutionSortKey
+  ( MonitoringExecutionSortKey
+      ( ..,
+        MonitoringExecutionSortKey_CreationTime,
+        MonitoringExecutionSortKey_ScheduledTime,
+        MonitoringExecutionSortKey_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringExecutionSortKey = MonitoringExecutionSortKey'
+  { fromMonitoringExecutionSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringExecutionSortKey_CreationTime :: MonitoringExecutionSortKey
+pattern MonitoringExecutionSortKey_CreationTime = MonitoringExecutionSortKey' "CreationTime"
+
+pattern MonitoringExecutionSortKey_ScheduledTime :: MonitoringExecutionSortKey
+pattern MonitoringExecutionSortKey_ScheduledTime = MonitoringExecutionSortKey' "ScheduledTime"
+
+pattern MonitoringExecutionSortKey_Status :: MonitoringExecutionSortKey
+pattern MonitoringExecutionSortKey_Status = MonitoringExecutionSortKey' "Status"
+
+{-# COMPLETE
+  MonitoringExecutionSortKey_CreationTime,
+  MonitoringExecutionSortKey_ScheduledTime,
+  MonitoringExecutionSortKey_Status,
+  MonitoringExecutionSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringExecutionSummary.hs b/gen/Amazonka/SageMaker/Types/MonitoringExecutionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringExecutionSummary.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringExecutionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringExecutionSummary 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 Amazonka.SageMaker.Types.ExecutionStatus
+import Amazonka.SageMaker.Types.MonitoringType
+
+-- | Summary of information about the last monitoring job to run.
+--
+-- /See:/ 'newMonitoringExecutionSummary' smart constructor.
+data MonitoringExecutionSummary = MonitoringExecutionSummary'
+  { -- | The name of the endpoint used to run the monitoring job.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | Contains the reason a monitoring job failed, if it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The name of the monitoring job.
+    monitoringJobDefinitionName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the monitoring job.
+    monitoringType :: Prelude.Maybe MonitoringType,
+    -- | The Amazon Resource Name (ARN) of the monitoring job.
+    processingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the monitoring schedule.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The time the monitoring job was scheduled.
+    scheduledTime :: Data.POSIX,
+    -- | The time at which the monitoring job was created.
+    creationTime :: Data.POSIX,
+    -- | A timestamp that indicates the last time the monitoring job was
+    -- modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The status of the monitoring job.
+    monitoringExecutionStatus :: ExecutionStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringExecutionSummary' 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:
+--
+-- 'endpointName', 'monitoringExecutionSummary_endpointName' - The name of the endpoint used to run the monitoring job.
+--
+-- 'failureReason', 'monitoringExecutionSummary_failureReason' - Contains the reason a monitoring job failed, if it failed.
+--
+-- 'monitoringJobDefinitionName', 'monitoringExecutionSummary_monitoringJobDefinitionName' - The name of the monitoring job.
+--
+-- 'monitoringType', 'monitoringExecutionSummary_monitoringType' - The type of the monitoring job.
+--
+-- 'processingJobArn', 'monitoringExecutionSummary_processingJobArn' - The Amazon Resource Name (ARN) of the monitoring job.
+--
+-- 'monitoringScheduleName', 'monitoringExecutionSummary_monitoringScheduleName' - The name of the monitoring schedule.
+--
+-- 'scheduledTime', 'monitoringExecutionSummary_scheduledTime' - The time the monitoring job was scheduled.
+--
+-- 'creationTime', 'monitoringExecutionSummary_creationTime' - The time at which the monitoring job was created.
+--
+-- 'lastModifiedTime', 'monitoringExecutionSummary_lastModifiedTime' - A timestamp that indicates the last time the monitoring job was
+-- modified.
+--
+-- 'monitoringExecutionStatus', 'monitoringExecutionSummary_monitoringExecutionStatus' - The status of the monitoring job.
+newMonitoringExecutionSummary ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'scheduledTime'
+  Prelude.UTCTime ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'monitoringExecutionStatus'
+  ExecutionStatus ->
+  MonitoringExecutionSummary
+newMonitoringExecutionSummary
+  pMonitoringScheduleName_
+  pScheduledTime_
+  pCreationTime_
+  pLastModifiedTime_
+  pMonitoringExecutionStatus_ =
+    MonitoringExecutionSummary'
+      { endpointName =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        monitoringJobDefinitionName = Prelude.Nothing,
+        monitoringType = Prelude.Nothing,
+        processingJobArn = Prelude.Nothing,
+        monitoringScheduleName =
+          pMonitoringScheduleName_,
+        scheduledTime =
+          Data._Time Lens.# pScheduledTime_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        monitoringExecutionStatus =
+          pMonitoringExecutionStatus_
+      }
+
+-- | The name of the endpoint used to run the monitoring job.
+monitoringExecutionSummary_endpointName :: Lens.Lens' MonitoringExecutionSummary (Prelude.Maybe Prelude.Text)
+monitoringExecutionSummary_endpointName = Lens.lens (\MonitoringExecutionSummary' {endpointName} -> endpointName) (\s@MonitoringExecutionSummary' {} a -> s {endpointName = a} :: MonitoringExecutionSummary)
+
+-- | Contains the reason a monitoring job failed, if it failed.
+monitoringExecutionSummary_failureReason :: Lens.Lens' MonitoringExecutionSummary (Prelude.Maybe Prelude.Text)
+monitoringExecutionSummary_failureReason = Lens.lens (\MonitoringExecutionSummary' {failureReason} -> failureReason) (\s@MonitoringExecutionSummary' {} a -> s {failureReason = a} :: MonitoringExecutionSummary)
+
+-- | The name of the monitoring job.
+monitoringExecutionSummary_monitoringJobDefinitionName :: Lens.Lens' MonitoringExecutionSummary (Prelude.Maybe Prelude.Text)
+monitoringExecutionSummary_monitoringJobDefinitionName = Lens.lens (\MonitoringExecutionSummary' {monitoringJobDefinitionName} -> monitoringJobDefinitionName) (\s@MonitoringExecutionSummary' {} a -> s {monitoringJobDefinitionName = a} :: MonitoringExecutionSummary)
+
+-- | The type of the monitoring job.
+monitoringExecutionSummary_monitoringType :: Lens.Lens' MonitoringExecutionSummary (Prelude.Maybe MonitoringType)
+monitoringExecutionSummary_monitoringType = Lens.lens (\MonitoringExecutionSummary' {monitoringType} -> monitoringType) (\s@MonitoringExecutionSummary' {} a -> s {monitoringType = a} :: MonitoringExecutionSummary)
+
+-- | The Amazon Resource Name (ARN) of the monitoring job.
+monitoringExecutionSummary_processingJobArn :: Lens.Lens' MonitoringExecutionSummary (Prelude.Maybe Prelude.Text)
+monitoringExecutionSummary_processingJobArn = Lens.lens (\MonitoringExecutionSummary' {processingJobArn} -> processingJobArn) (\s@MonitoringExecutionSummary' {} a -> s {processingJobArn = a} :: MonitoringExecutionSummary)
+
+-- | The name of the monitoring schedule.
+monitoringExecutionSummary_monitoringScheduleName :: Lens.Lens' MonitoringExecutionSummary Prelude.Text
+monitoringExecutionSummary_monitoringScheduleName = Lens.lens (\MonitoringExecutionSummary' {monitoringScheduleName} -> monitoringScheduleName) (\s@MonitoringExecutionSummary' {} a -> s {monitoringScheduleName = a} :: MonitoringExecutionSummary)
+
+-- | The time the monitoring job was scheduled.
+monitoringExecutionSummary_scheduledTime :: Lens.Lens' MonitoringExecutionSummary Prelude.UTCTime
+monitoringExecutionSummary_scheduledTime = Lens.lens (\MonitoringExecutionSummary' {scheduledTime} -> scheduledTime) (\s@MonitoringExecutionSummary' {} a -> s {scheduledTime = a} :: MonitoringExecutionSummary) Prelude.. Data._Time
+
+-- | The time at which the monitoring job was created.
+monitoringExecutionSummary_creationTime :: Lens.Lens' MonitoringExecutionSummary Prelude.UTCTime
+monitoringExecutionSummary_creationTime = Lens.lens (\MonitoringExecutionSummary' {creationTime} -> creationTime) (\s@MonitoringExecutionSummary' {} a -> s {creationTime = a} :: MonitoringExecutionSummary) Prelude.. Data._Time
+
+-- | A timestamp that indicates the last time the monitoring job was
+-- modified.
+monitoringExecutionSummary_lastModifiedTime :: Lens.Lens' MonitoringExecutionSummary Prelude.UTCTime
+monitoringExecutionSummary_lastModifiedTime = Lens.lens (\MonitoringExecutionSummary' {lastModifiedTime} -> lastModifiedTime) (\s@MonitoringExecutionSummary' {} a -> s {lastModifiedTime = a} :: MonitoringExecutionSummary) Prelude.. Data._Time
+
+-- | The status of the monitoring job.
+monitoringExecutionSummary_monitoringExecutionStatus :: Lens.Lens' MonitoringExecutionSummary ExecutionStatus
+monitoringExecutionSummary_monitoringExecutionStatus = Lens.lens (\MonitoringExecutionSummary' {monitoringExecutionStatus} -> monitoringExecutionStatus) (\s@MonitoringExecutionSummary' {} a -> s {monitoringExecutionStatus = a} :: MonitoringExecutionSummary)
+
+instance Data.FromJSON MonitoringExecutionSummary where
+  parseJSON =
+    Data.withObject
+      "MonitoringExecutionSummary"
+      ( \x ->
+          MonitoringExecutionSummary'
+            Prelude.<$> (x Data..:? "EndpointName")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "MonitoringJobDefinitionName")
+            Prelude.<*> (x Data..:? "MonitoringType")
+            Prelude.<*> (x Data..:? "ProcessingJobArn")
+            Prelude.<*> (x Data..: "MonitoringScheduleName")
+            Prelude.<*> (x Data..: "ScheduledTime")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "MonitoringExecutionStatus")
+      )
+
+instance Prelude.Hashable MonitoringExecutionSummary where
+  hashWithSalt _salt MonitoringExecutionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` monitoringJobDefinitionName
+      `Prelude.hashWithSalt` monitoringType
+      `Prelude.hashWithSalt` processingJobArn
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` scheduledTime
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` monitoringExecutionStatus
+
+instance Prelude.NFData MonitoringExecutionSummary where
+  rnf MonitoringExecutionSummary' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf monitoringJobDefinitionName
+      `Prelude.seq` Prelude.rnf monitoringType
+      `Prelude.seq` Prelude.rnf processingJobArn
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf scheduledTime
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf monitoringExecutionStatus
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringGroundTruthS3Input.hs b/gen/Amazonka/SageMaker/Types/MonitoringGroundTruthS3Input.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringGroundTruthS3Input.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringGroundTruthS3Input
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input 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
+
+-- | The ground truth labels for the dataset used for the monitoring job.
+--
+-- /See:/ 'newMonitoringGroundTruthS3Input' smart constructor.
+data MonitoringGroundTruthS3Input = MonitoringGroundTruthS3Input'
+  { -- | The address of the Amazon S3 location of the ground truth labels.
+    s3Uri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringGroundTruthS3Input' 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:
+--
+-- 's3Uri', 'monitoringGroundTruthS3Input_s3Uri' - The address of the Amazon S3 location of the ground truth labels.
+newMonitoringGroundTruthS3Input ::
+  MonitoringGroundTruthS3Input
+newMonitoringGroundTruthS3Input =
+  MonitoringGroundTruthS3Input'
+    { s3Uri =
+        Prelude.Nothing
+    }
+
+-- | The address of the Amazon S3 location of the ground truth labels.
+monitoringGroundTruthS3Input_s3Uri :: Lens.Lens' MonitoringGroundTruthS3Input (Prelude.Maybe Prelude.Text)
+monitoringGroundTruthS3Input_s3Uri = Lens.lens (\MonitoringGroundTruthS3Input' {s3Uri} -> s3Uri) (\s@MonitoringGroundTruthS3Input' {} a -> s {s3Uri = a} :: MonitoringGroundTruthS3Input)
+
+instance Data.FromJSON MonitoringGroundTruthS3Input where
+  parseJSON =
+    Data.withObject
+      "MonitoringGroundTruthS3Input"
+      ( \x ->
+          MonitoringGroundTruthS3Input'
+            Prelude.<$> (x Data..:? "S3Uri")
+      )
+
+instance
+  Prelude.Hashable
+    MonitoringGroundTruthS3Input
+  where
+  hashWithSalt _salt MonitoringGroundTruthS3Input' {..} =
+    _salt `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData MonitoringGroundTruthS3Input where
+  rnf MonitoringGroundTruthS3Input' {..} =
+    Prelude.rnf s3Uri
+
+instance Data.ToJSON MonitoringGroundTruthS3Input where
+  toJSON MonitoringGroundTruthS3Input' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3Uri" Data..=) Prelude.<$> s3Uri]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringInput.hs b/gen/Amazonka/SageMaker/Types/MonitoringInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringInput.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringInput 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 Amazonka.SageMaker.Types.BatchTransformInput
+import Amazonka.SageMaker.Types.EndpointInput
+
+-- | The inputs for a monitoring job.
+--
+-- /See:/ 'newMonitoringInput' smart constructor.
+data MonitoringInput = MonitoringInput'
+  { -- | Input object for the batch transform job.
+    batchTransformInput :: Prelude.Maybe BatchTransformInput,
+    -- | The endpoint for a monitoring job.
+    endpointInput :: Prelude.Maybe EndpointInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringInput' 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:
+--
+-- 'batchTransformInput', 'monitoringInput_batchTransformInput' - Input object for the batch transform job.
+--
+-- 'endpointInput', 'monitoringInput_endpointInput' - The endpoint for a monitoring job.
+newMonitoringInput ::
+  MonitoringInput
+newMonitoringInput =
+  MonitoringInput'
+    { batchTransformInput =
+        Prelude.Nothing,
+      endpointInput = Prelude.Nothing
+    }
+
+-- | Input object for the batch transform job.
+monitoringInput_batchTransformInput :: Lens.Lens' MonitoringInput (Prelude.Maybe BatchTransformInput)
+monitoringInput_batchTransformInput = Lens.lens (\MonitoringInput' {batchTransformInput} -> batchTransformInput) (\s@MonitoringInput' {} a -> s {batchTransformInput = a} :: MonitoringInput)
+
+-- | The endpoint for a monitoring job.
+monitoringInput_endpointInput :: Lens.Lens' MonitoringInput (Prelude.Maybe EndpointInput)
+monitoringInput_endpointInput = Lens.lens (\MonitoringInput' {endpointInput} -> endpointInput) (\s@MonitoringInput' {} a -> s {endpointInput = a} :: MonitoringInput)
+
+instance Data.FromJSON MonitoringInput where
+  parseJSON =
+    Data.withObject
+      "MonitoringInput"
+      ( \x ->
+          MonitoringInput'
+            Prelude.<$> (x Data..:? "BatchTransformInput")
+            Prelude.<*> (x Data..:? "EndpointInput")
+      )
+
+instance Prelude.Hashable MonitoringInput where
+  hashWithSalt _salt MonitoringInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchTransformInput
+      `Prelude.hashWithSalt` endpointInput
+
+instance Prelude.NFData MonitoringInput where
+  rnf MonitoringInput' {..} =
+    Prelude.rnf batchTransformInput
+      `Prelude.seq` Prelude.rnf endpointInput
+
+instance Data.ToJSON MonitoringInput where
+  toJSON MonitoringInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchTransformInput" Data..=)
+              Prelude.<$> batchTransformInput,
+            ("EndpointInput" Data..=) Prelude.<$> endpointInput
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringJobDefinition.hs b/gen/Amazonka/SageMaker/Types/MonitoringJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringJobDefinition.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringJobDefinition 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 Amazonka.SageMaker.Types.MonitoringAppSpecification
+import Amazonka.SageMaker.Types.MonitoringBaselineConfig
+import Amazonka.SageMaker.Types.MonitoringInput
+import Amazonka.SageMaker.Types.MonitoringOutputConfig
+import Amazonka.SageMaker.Types.MonitoringResources
+import Amazonka.SageMaker.Types.MonitoringStoppingCondition
+import Amazonka.SageMaker.Types.NetworkConfig
+
+-- | Defines the monitoring job.
+--
+-- /See:/ 'newMonitoringJobDefinition' smart constructor.
+data MonitoringJobDefinition = MonitoringJobDefinition'
+  { -- | Baseline configuration used to validate that the data conforms to the
+    -- specified constraints and statistics
+    baselineConfig :: Prelude.Maybe MonitoringBaselineConfig,
+    -- | Sets the environment variables in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Specifies networking options for an monitoring job.
+    networkConfig :: Prelude.Maybe NetworkConfig,
+    -- | Specifies a time limit for how long the monitoring job is allowed to
+    -- run.
+    stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
+    -- | The array of inputs for the monitoring job. Currently we support
+    -- monitoring an Amazon SageMaker Endpoint.
+    monitoringInputs :: Prelude.NonEmpty MonitoringInput,
+    -- | The array of outputs from the monitoring job to be uploaded to Amazon
+    -- Simple Storage Service (Amazon S3).
+    monitoringOutputConfig :: MonitoringOutputConfig,
+    -- | Identifies the resources, ML compute instances, and ML storage volumes
+    -- to deploy for a monitoring job. In distributed processing, you specify
+    -- more than one instance.
+    monitoringResources :: MonitoringResources,
+    -- | Configures the monitoring job to run a specified Docker container image.
+    monitoringAppSpecification :: MonitoringAppSpecification,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+    -- assume to perform tasks on your behalf.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringJobDefinition' 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:
+--
+-- 'baselineConfig', 'monitoringJobDefinition_baselineConfig' - Baseline configuration used to validate that the data conforms to the
+-- specified constraints and statistics
+--
+-- 'environment', 'monitoringJobDefinition_environment' - Sets the environment variables in the Docker container.
+--
+-- 'networkConfig', 'monitoringJobDefinition_networkConfig' - Specifies networking options for an monitoring job.
+--
+-- 'stoppingCondition', 'monitoringJobDefinition_stoppingCondition' - Specifies a time limit for how long the monitoring job is allowed to
+-- run.
+--
+-- 'monitoringInputs', 'monitoringJobDefinition_monitoringInputs' - The array of inputs for the monitoring job. Currently we support
+-- monitoring an Amazon SageMaker Endpoint.
+--
+-- 'monitoringOutputConfig', 'monitoringJobDefinition_monitoringOutputConfig' - The array of outputs from the monitoring job to be uploaded to Amazon
+-- Simple Storage Service (Amazon S3).
+--
+-- 'monitoringResources', 'monitoringJobDefinition_monitoringResources' - Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a monitoring job. In distributed processing, you specify
+-- more than one instance.
+--
+-- 'monitoringAppSpecification', 'monitoringJobDefinition_monitoringAppSpecification' - Configures the monitoring job to run a specified Docker container image.
+--
+-- 'roleArn', 'monitoringJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+newMonitoringJobDefinition ::
+  -- | 'monitoringInputs'
+  Prelude.NonEmpty MonitoringInput ->
+  -- | 'monitoringOutputConfig'
+  MonitoringOutputConfig ->
+  -- | 'monitoringResources'
+  MonitoringResources ->
+  -- | 'monitoringAppSpecification'
+  MonitoringAppSpecification ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  MonitoringJobDefinition
+newMonitoringJobDefinition
+  pMonitoringInputs_
+  pMonitoringOutputConfig_
+  pMonitoringResources_
+  pMonitoringAppSpecification_
+  pRoleArn_ =
+    MonitoringJobDefinition'
+      { baselineConfig =
+          Prelude.Nothing,
+        environment = Prelude.Nothing,
+        networkConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        monitoringInputs =
+          Lens.coerced Lens.# pMonitoringInputs_,
+        monitoringOutputConfig = pMonitoringOutputConfig_,
+        monitoringResources = pMonitoringResources_,
+        monitoringAppSpecification =
+          pMonitoringAppSpecification_,
+        roleArn = pRoleArn_
+      }
+
+-- | Baseline configuration used to validate that the data conforms to the
+-- specified constraints and statistics
+monitoringJobDefinition_baselineConfig :: Lens.Lens' MonitoringJobDefinition (Prelude.Maybe MonitoringBaselineConfig)
+monitoringJobDefinition_baselineConfig = Lens.lens (\MonitoringJobDefinition' {baselineConfig} -> baselineConfig) (\s@MonitoringJobDefinition' {} a -> s {baselineConfig = a} :: MonitoringJobDefinition)
+
+-- | Sets the environment variables in the Docker container.
+monitoringJobDefinition_environment :: Lens.Lens' MonitoringJobDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+monitoringJobDefinition_environment = Lens.lens (\MonitoringJobDefinition' {environment} -> environment) (\s@MonitoringJobDefinition' {} a -> s {environment = a} :: MonitoringJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies networking options for an monitoring job.
+monitoringJobDefinition_networkConfig :: Lens.Lens' MonitoringJobDefinition (Prelude.Maybe NetworkConfig)
+monitoringJobDefinition_networkConfig = Lens.lens (\MonitoringJobDefinition' {networkConfig} -> networkConfig) (\s@MonitoringJobDefinition' {} a -> s {networkConfig = a} :: MonitoringJobDefinition)
+
+-- | Specifies a time limit for how long the monitoring job is allowed to
+-- run.
+monitoringJobDefinition_stoppingCondition :: Lens.Lens' MonitoringJobDefinition (Prelude.Maybe MonitoringStoppingCondition)
+monitoringJobDefinition_stoppingCondition = Lens.lens (\MonitoringJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@MonitoringJobDefinition' {} a -> s {stoppingCondition = a} :: MonitoringJobDefinition)
+
+-- | The array of inputs for the monitoring job. Currently we support
+-- monitoring an Amazon SageMaker Endpoint.
+monitoringJobDefinition_monitoringInputs :: Lens.Lens' MonitoringJobDefinition (Prelude.NonEmpty MonitoringInput)
+monitoringJobDefinition_monitoringInputs = Lens.lens (\MonitoringJobDefinition' {monitoringInputs} -> monitoringInputs) (\s@MonitoringJobDefinition' {} a -> s {monitoringInputs = a} :: MonitoringJobDefinition) Prelude.. Lens.coerced
+
+-- | The array of outputs from the monitoring job to be uploaded to Amazon
+-- Simple Storage Service (Amazon S3).
+monitoringJobDefinition_monitoringOutputConfig :: Lens.Lens' MonitoringJobDefinition MonitoringOutputConfig
+monitoringJobDefinition_monitoringOutputConfig = Lens.lens (\MonitoringJobDefinition' {monitoringOutputConfig} -> monitoringOutputConfig) (\s@MonitoringJobDefinition' {} a -> s {monitoringOutputConfig = a} :: MonitoringJobDefinition)
+
+-- | Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a monitoring job. In distributed processing, you specify
+-- more than one instance.
+monitoringJobDefinition_monitoringResources :: Lens.Lens' MonitoringJobDefinition MonitoringResources
+monitoringJobDefinition_monitoringResources = Lens.lens (\MonitoringJobDefinition' {monitoringResources} -> monitoringResources) (\s@MonitoringJobDefinition' {} a -> s {monitoringResources = a} :: MonitoringJobDefinition)
+
+-- | Configures the monitoring job to run a specified Docker container image.
+monitoringJobDefinition_monitoringAppSpecification :: Lens.Lens' MonitoringJobDefinition MonitoringAppSpecification
+monitoringJobDefinition_monitoringAppSpecification = Lens.lens (\MonitoringJobDefinition' {monitoringAppSpecification} -> monitoringAppSpecification) (\s@MonitoringJobDefinition' {} a -> s {monitoringAppSpecification = a} :: MonitoringJobDefinition)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
+-- assume to perform tasks on your behalf.
+monitoringJobDefinition_roleArn :: Lens.Lens' MonitoringJobDefinition Prelude.Text
+monitoringJobDefinition_roleArn = Lens.lens (\MonitoringJobDefinition' {roleArn} -> roleArn) (\s@MonitoringJobDefinition' {} a -> s {roleArn = a} :: MonitoringJobDefinition)
+
+instance Data.FromJSON MonitoringJobDefinition where
+  parseJSON =
+    Data.withObject
+      "MonitoringJobDefinition"
+      ( \x ->
+          MonitoringJobDefinition'
+            Prelude.<$> (x Data..:? "BaselineConfig")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "NetworkConfig")
+            Prelude.<*> (x Data..:? "StoppingCondition")
+            Prelude.<*> (x Data..: "MonitoringInputs")
+            Prelude.<*> (x Data..: "MonitoringOutputConfig")
+            Prelude.<*> (x Data..: "MonitoringResources")
+            Prelude.<*> (x Data..: "MonitoringAppSpecification")
+            Prelude.<*> (x Data..: "RoleArn")
+      )
+
+instance Prelude.Hashable MonitoringJobDefinition where
+  hashWithSalt _salt MonitoringJobDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` baselineConfig
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` networkConfig
+      `Prelude.hashWithSalt` stoppingCondition
+      `Prelude.hashWithSalt` monitoringInputs
+      `Prelude.hashWithSalt` monitoringOutputConfig
+      `Prelude.hashWithSalt` monitoringResources
+      `Prelude.hashWithSalt` monitoringAppSpecification
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData MonitoringJobDefinition where
+  rnf MonitoringJobDefinition' {..} =
+    Prelude.rnf baselineConfig
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf monitoringInputs
+      `Prelude.seq` Prelude.rnf monitoringOutputConfig
+      `Prelude.seq` Prelude.rnf monitoringResources
+      `Prelude.seq` Prelude.rnf monitoringAppSpecification
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToJSON MonitoringJobDefinition where
+  toJSON MonitoringJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BaselineConfig" Data..=)
+              Prelude.<$> baselineConfig,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("NetworkConfig" Data..=) Prelude.<$> networkConfig,
+            ("StoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            Prelude.Just
+              ("MonitoringInputs" Data..= monitoringInputs),
+            Prelude.Just
+              ( "MonitoringOutputConfig"
+                  Data..= monitoringOutputConfig
+              ),
+            Prelude.Just
+              ("MonitoringResources" Data..= monitoringResources),
+            Prelude.Just
+              ( "MonitoringAppSpecification"
+                  Data..= monitoringAppSpecification
+              ),
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringJobDefinitionSortKey.hs b/gen/Amazonka/SageMaker/Types/MonitoringJobDefinitionSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringJobDefinitionSortKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringJobDefinitionSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringJobDefinitionSortKey
+  ( MonitoringJobDefinitionSortKey
+      ( ..,
+        MonitoringJobDefinitionSortKey_CreationTime,
+        MonitoringJobDefinitionSortKey_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringJobDefinitionSortKey = MonitoringJobDefinitionSortKey'
+  { fromMonitoringJobDefinitionSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringJobDefinitionSortKey_CreationTime :: MonitoringJobDefinitionSortKey
+pattern MonitoringJobDefinitionSortKey_CreationTime = MonitoringJobDefinitionSortKey' "CreationTime"
+
+pattern MonitoringJobDefinitionSortKey_Name :: MonitoringJobDefinitionSortKey
+pattern MonitoringJobDefinitionSortKey_Name = MonitoringJobDefinitionSortKey' "Name"
+
+{-# COMPLETE
+  MonitoringJobDefinitionSortKey_CreationTime,
+  MonitoringJobDefinitionSortKey_Name,
+  MonitoringJobDefinitionSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringJobDefinitionSummary.hs b/gen/Amazonka/SageMaker/Types/MonitoringJobDefinitionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringJobDefinitionSummary.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringJobDefinitionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringJobDefinitionSummary 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
+
+-- | Summary information about a monitoring job.
+--
+-- /See:/ 'newMonitoringJobDefinitionSummary' smart constructor.
+data MonitoringJobDefinitionSummary = MonitoringJobDefinitionSummary'
+  { -- | The name of the monitoring job.
+    monitoringJobDefinitionName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the monitoring job.
+    monitoringJobDefinitionArn :: Prelude.Text,
+    -- | The time that the monitoring job was created.
+    creationTime :: Data.POSIX,
+    -- | The name of the endpoint that the job monitors.
+    endpointName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringJobDefinitionSummary' 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:
+--
+-- 'monitoringJobDefinitionName', 'monitoringJobDefinitionSummary_monitoringJobDefinitionName' - The name of the monitoring job.
+--
+-- 'monitoringJobDefinitionArn', 'monitoringJobDefinitionSummary_monitoringJobDefinitionArn' - The Amazon Resource Name (ARN) of the monitoring job.
+--
+-- 'creationTime', 'monitoringJobDefinitionSummary_creationTime' - The time that the monitoring job was created.
+--
+-- 'endpointName', 'monitoringJobDefinitionSummary_endpointName' - The name of the endpoint that the job monitors.
+newMonitoringJobDefinitionSummary ::
+  -- | 'monitoringJobDefinitionName'
+  Prelude.Text ->
+  -- | 'monitoringJobDefinitionArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'endpointName'
+  Prelude.Text ->
+  MonitoringJobDefinitionSummary
+newMonitoringJobDefinitionSummary
+  pMonitoringJobDefinitionName_
+  pMonitoringJobDefinitionArn_
+  pCreationTime_
+  pEndpointName_ =
+    MonitoringJobDefinitionSummary'
+      { monitoringJobDefinitionName =
+          pMonitoringJobDefinitionName_,
+        monitoringJobDefinitionArn =
+          pMonitoringJobDefinitionArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        endpointName = pEndpointName_
+      }
+
+-- | The name of the monitoring job.
+monitoringJobDefinitionSummary_monitoringJobDefinitionName :: Lens.Lens' MonitoringJobDefinitionSummary Prelude.Text
+monitoringJobDefinitionSummary_monitoringJobDefinitionName = Lens.lens (\MonitoringJobDefinitionSummary' {monitoringJobDefinitionName} -> monitoringJobDefinitionName) (\s@MonitoringJobDefinitionSummary' {} a -> s {monitoringJobDefinitionName = a} :: MonitoringJobDefinitionSummary)
+
+-- | The Amazon Resource Name (ARN) of the monitoring job.
+monitoringJobDefinitionSummary_monitoringJobDefinitionArn :: Lens.Lens' MonitoringJobDefinitionSummary Prelude.Text
+monitoringJobDefinitionSummary_monitoringJobDefinitionArn = Lens.lens (\MonitoringJobDefinitionSummary' {monitoringJobDefinitionArn} -> monitoringJobDefinitionArn) (\s@MonitoringJobDefinitionSummary' {} a -> s {monitoringJobDefinitionArn = a} :: MonitoringJobDefinitionSummary)
+
+-- | The time that the monitoring job was created.
+monitoringJobDefinitionSummary_creationTime :: Lens.Lens' MonitoringJobDefinitionSummary Prelude.UTCTime
+monitoringJobDefinitionSummary_creationTime = Lens.lens (\MonitoringJobDefinitionSummary' {creationTime} -> creationTime) (\s@MonitoringJobDefinitionSummary' {} a -> s {creationTime = a} :: MonitoringJobDefinitionSummary) Prelude.. Data._Time
+
+-- | The name of the endpoint that the job monitors.
+monitoringJobDefinitionSummary_endpointName :: Lens.Lens' MonitoringJobDefinitionSummary Prelude.Text
+monitoringJobDefinitionSummary_endpointName = Lens.lens (\MonitoringJobDefinitionSummary' {endpointName} -> endpointName) (\s@MonitoringJobDefinitionSummary' {} a -> s {endpointName = a} :: MonitoringJobDefinitionSummary)
+
+instance Data.FromJSON MonitoringJobDefinitionSummary where
+  parseJSON =
+    Data.withObject
+      "MonitoringJobDefinitionSummary"
+      ( \x ->
+          MonitoringJobDefinitionSummary'
+            Prelude.<$> (x Data..: "MonitoringJobDefinitionName")
+            Prelude.<*> (x Data..: "MonitoringJobDefinitionArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "EndpointName")
+      )
+
+instance
+  Prelude.Hashable
+    MonitoringJobDefinitionSummary
+  where
+  hashWithSalt
+    _salt
+    MonitoringJobDefinitionSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` monitoringJobDefinitionName
+        `Prelude.hashWithSalt` monitoringJobDefinitionArn
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` endpointName
+
+instance
+  Prelude.NFData
+    MonitoringJobDefinitionSummary
+  where
+  rnf MonitoringJobDefinitionSummary' {..} =
+    Prelude.rnf monitoringJobDefinitionName
+      `Prelude.seq` Prelude.rnf monitoringJobDefinitionArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf endpointName
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringJsonDatasetFormat.hs b/gen/Amazonka/SageMaker/Types/MonitoringJsonDatasetFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringJsonDatasetFormat.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringJsonDatasetFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringJsonDatasetFormat 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
+
+-- | Represents the JSON dataset format used when running a monitoring job.
+--
+-- /See:/ 'newMonitoringJsonDatasetFormat' smart constructor.
+data MonitoringJsonDatasetFormat = MonitoringJsonDatasetFormat'
+  { -- | Indicates if the file should be read as a json object per line.
+    line :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringJsonDatasetFormat' 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:
+--
+-- 'line', 'monitoringJsonDatasetFormat_line' - Indicates if the file should be read as a json object per line.
+newMonitoringJsonDatasetFormat ::
+  MonitoringJsonDatasetFormat
+newMonitoringJsonDatasetFormat =
+  MonitoringJsonDatasetFormat'
+    { line =
+        Prelude.Nothing
+    }
+
+-- | Indicates if the file should be read as a json object per line.
+monitoringJsonDatasetFormat_line :: Lens.Lens' MonitoringJsonDatasetFormat (Prelude.Maybe Prelude.Bool)
+monitoringJsonDatasetFormat_line = Lens.lens (\MonitoringJsonDatasetFormat' {line} -> line) (\s@MonitoringJsonDatasetFormat' {} a -> s {line = a} :: MonitoringJsonDatasetFormat)
+
+instance Data.FromJSON MonitoringJsonDatasetFormat where
+  parseJSON =
+    Data.withObject
+      "MonitoringJsonDatasetFormat"
+      ( \x ->
+          MonitoringJsonDatasetFormat'
+            Prelude.<$> (x Data..:? "Line")
+      )
+
+instance Prelude.Hashable MonitoringJsonDatasetFormat where
+  hashWithSalt _salt MonitoringJsonDatasetFormat' {..} =
+    _salt `Prelude.hashWithSalt` line
+
+instance Prelude.NFData MonitoringJsonDatasetFormat where
+  rnf MonitoringJsonDatasetFormat' {..} =
+    Prelude.rnf line
+
+instance Data.ToJSON MonitoringJsonDatasetFormat where
+  toJSON MonitoringJsonDatasetFormat' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Line" Data..=) Prelude.<$> line]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringNetworkConfig.hs b/gen/Amazonka/SageMaker/Types/MonitoringNetworkConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringNetworkConfig.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringNetworkConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringNetworkConfig 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 Amazonka.SageMaker.Types.VpcConfig
+
+-- | The networking configuration for the monitoring job.
+--
+-- /See:/ 'newMonitoringNetworkConfig' smart constructor.
+data MonitoringNetworkConfig = MonitoringNetworkConfig'
+  { -- | Whether to encrypt all communications between the instances used for the
+    -- monitoring jobs. Choose @True@ to encrypt communications. Encryption
+    -- provides greater security for distributed jobs, but the processing might
+    -- take longer.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | Whether to allow inbound and outbound network calls to and from the
+    -- containers used for the monitoring job.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    vpcConfig :: Prelude.Maybe VpcConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringNetworkConfig' 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:
+--
+-- 'enableInterContainerTrafficEncryption', 'monitoringNetworkConfig_enableInterContainerTrafficEncryption' - Whether to encrypt all communications between the instances used for the
+-- monitoring jobs. Choose @True@ to encrypt communications. Encryption
+-- provides greater security for distributed jobs, but the processing might
+-- take longer.
+--
+-- 'enableNetworkIsolation', 'monitoringNetworkConfig_enableNetworkIsolation' - Whether to allow inbound and outbound network calls to and from the
+-- containers used for the monitoring job.
+--
+-- 'vpcConfig', 'monitoringNetworkConfig_vpcConfig' - Undocumented member.
+newMonitoringNetworkConfig ::
+  MonitoringNetworkConfig
+newMonitoringNetworkConfig =
+  MonitoringNetworkConfig'
+    { enableInterContainerTrafficEncryption =
+        Prelude.Nothing,
+      enableNetworkIsolation = Prelude.Nothing,
+      vpcConfig = Prelude.Nothing
+    }
+
+-- | Whether to encrypt all communications between the instances used for the
+-- monitoring jobs. Choose @True@ to encrypt communications. Encryption
+-- provides greater security for distributed jobs, but the processing might
+-- take longer.
+monitoringNetworkConfig_enableInterContainerTrafficEncryption :: Lens.Lens' MonitoringNetworkConfig (Prelude.Maybe Prelude.Bool)
+monitoringNetworkConfig_enableInterContainerTrafficEncryption = Lens.lens (\MonitoringNetworkConfig' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@MonitoringNetworkConfig' {} a -> s {enableInterContainerTrafficEncryption = a} :: MonitoringNetworkConfig)
+
+-- | Whether to allow inbound and outbound network calls to and from the
+-- containers used for the monitoring job.
+monitoringNetworkConfig_enableNetworkIsolation :: Lens.Lens' MonitoringNetworkConfig (Prelude.Maybe Prelude.Bool)
+monitoringNetworkConfig_enableNetworkIsolation = Lens.lens (\MonitoringNetworkConfig' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@MonitoringNetworkConfig' {} a -> s {enableNetworkIsolation = a} :: MonitoringNetworkConfig)
+
+-- | Undocumented member.
+monitoringNetworkConfig_vpcConfig :: Lens.Lens' MonitoringNetworkConfig (Prelude.Maybe VpcConfig)
+monitoringNetworkConfig_vpcConfig = Lens.lens (\MonitoringNetworkConfig' {vpcConfig} -> vpcConfig) (\s@MonitoringNetworkConfig' {} a -> s {vpcConfig = a} :: MonitoringNetworkConfig)
+
+instance Data.FromJSON MonitoringNetworkConfig where
+  parseJSON =
+    Data.withObject
+      "MonitoringNetworkConfig"
+      ( \x ->
+          MonitoringNetworkConfig'
+            Prelude.<$> (x Data..:? "EnableInterContainerTrafficEncryption")
+            Prelude.<*> (x Data..:? "EnableNetworkIsolation")
+            Prelude.<*> (x Data..:? "VpcConfig")
+      )
+
+instance Prelude.Hashable MonitoringNetworkConfig where
+  hashWithSalt _salt MonitoringNetworkConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableInterContainerTrafficEncryption
+      `Prelude.hashWithSalt` enableNetworkIsolation
+      `Prelude.hashWithSalt` vpcConfig
+
+instance Prelude.NFData MonitoringNetworkConfig where
+  rnf MonitoringNetworkConfig' {..} =
+    Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf vpcConfig
+
+instance Data.ToJSON MonitoringNetworkConfig where
+  toJSON MonitoringNetworkConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableInterContainerTrafficEncryption" Data..=)
+              Prelude.<$> enableInterContainerTrafficEncryption,
+            ("EnableNetworkIsolation" Data..=)
+              Prelude.<$> enableNetworkIsolation,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringOutput.hs b/gen/Amazonka/SageMaker/Types/MonitoringOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringOutput.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringOutput 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 Amazonka.SageMaker.Types.MonitoringS3Output
+
+-- | The output object for a monitoring job.
+--
+-- /See:/ 'newMonitoringOutput' smart constructor.
+data MonitoringOutput = MonitoringOutput'
+  { -- | The Amazon S3 storage location where the results of a monitoring job are
+    -- saved.
+    s3Output :: MonitoringS3Output
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringOutput' 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:
+--
+-- 's3Output', 'monitoringOutput_s3Output' - The Amazon S3 storage location where the results of a monitoring job are
+-- saved.
+newMonitoringOutput ::
+  -- | 's3Output'
+  MonitoringS3Output ->
+  MonitoringOutput
+newMonitoringOutput pS3Output_ =
+  MonitoringOutput' {s3Output = pS3Output_}
+
+-- | The Amazon S3 storage location where the results of a monitoring job are
+-- saved.
+monitoringOutput_s3Output :: Lens.Lens' MonitoringOutput MonitoringS3Output
+monitoringOutput_s3Output = Lens.lens (\MonitoringOutput' {s3Output} -> s3Output) (\s@MonitoringOutput' {} a -> s {s3Output = a} :: MonitoringOutput)
+
+instance Data.FromJSON MonitoringOutput where
+  parseJSON =
+    Data.withObject
+      "MonitoringOutput"
+      ( \x ->
+          MonitoringOutput' Prelude.<$> (x Data..: "S3Output")
+      )
+
+instance Prelude.Hashable MonitoringOutput where
+  hashWithSalt _salt MonitoringOutput' {..} =
+    _salt `Prelude.hashWithSalt` s3Output
+
+instance Prelude.NFData MonitoringOutput where
+  rnf MonitoringOutput' {..} = Prelude.rnf s3Output
+
+instance Data.ToJSON MonitoringOutput where
+  toJSON MonitoringOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("S3Output" Data..= s3Output)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringOutputConfig.hs b/gen/Amazonka/SageMaker/Types/MonitoringOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringOutputConfig.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringOutputConfig 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 Amazonka.SageMaker.Types.MonitoringOutput
+
+-- | The output configuration for monitoring jobs.
+--
+-- /See:/ 'newMonitoringOutputConfig' smart constructor.
+data MonitoringOutputConfig = MonitoringOutputConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt the model artifacts at rest
+    -- using Amazon S3 server-side encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Monitoring outputs for monitoring jobs. This is where the output of the
+    -- periodic monitoring jobs is uploaded.
+    monitoringOutputs :: Prelude.NonEmpty MonitoringOutput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringOutputConfig' 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:
+--
+-- 'kmsKeyId', 'monitoringOutputConfig_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt the model artifacts at rest
+-- using Amazon S3 server-side encryption.
+--
+-- 'monitoringOutputs', 'monitoringOutputConfig_monitoringOutputs' - Monitoring outputs for monitoring jobs. This is where the output of the
+-- periodic monitoring jobs is uploaded.
+newMonitoringOutputConfig ::
+  -- | 'monitoringOutputs'
+  Prelude.NonEmpty MonitoringOutput ->
+  MonitoringOutputConfig
+newMonitoringOutputConfig pMonitoringOutputs_ =
+  MonitoringOutputConfig'
+    { kmsKeyId = Prelude.Nothing,
+      monitoringOutputs =
+        Lens.coerced Lens.# pMonitoringOutputs_
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt the model artifacts at rest
+-- using Amazon S3 server-side encryption.
+monitoringOutputConfig_kmsKeyId :: Lens.Lens' MonitoringOutputConfig (Prelude.Maybe Prelude.Text)
+monitoringOutputConfig_kmsKeyId = Lens.lens (\MonitoringOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@MonitoringOutputConfig' {} a -> s {kmsKeyId = a} :: MonitoringOutputConfig)
+
+-- | Monitoring outputs for monitoring jobs. This is where the output of the
+-- periodic monitoring jobs is uploaded.
+monitoringOutputConfig_monitoringOutputs :: Lens.Lens' MonitoringOutputConfig (Prelude.NonEmpty MonitoringOutput)
+monitoringOutputConfig_monitoringOutputs = Lens.lens (\MonitoringOutputConfig' {monitoringOutputs} -> monitoringOutputs) (\s@MonitoringOutputConfig' {} a -> s {monitoringOutputs = a} :: MonitoringOutputConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON MonitoringOutputConfig where
+  parseJSON =
+    Data.withObject
+      "MonitoringOutputConfig"
+      ( \x ->
+          MonitoringOutputConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "MonitoringOutputs")
+      )
+
+instance Prelude.Hashable MonitoringOutputConfig where
+  hashWithSalt _salt MonitoringOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` monitoringOutputs
+
+instance Prelude.NFData MonitoringOutputConfig where
+  rnf MonitoringOutputConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf monitoringOutputs
+
+instance Data.ToJSON MonitoringOutputConfig where
+  toJSON MonitoringOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just
+              ("MonitoringOutputs" Data..= monitoringOutputs)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringParquetDatasetFormat.hs b/gen/Amazonka/SageMaker/Types/MonitoringParquetDatasetFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringParquetDatasetFormat.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringParquetDatasetFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringParquetDatasetFormat 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
+
+-- | Represents the Parquet dataset format used when running a monitoring
+-- job.
+--
+-- /See:/ 'newMonitoringParquetDatasetFormat' smart constructor.
+data MonitoringParquetDatasetFormat = MonitoringParquetDatasetFormat'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringParquetDatasetFormat' 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.
+newMonitoringParquetDatasetFormat ::
+  MonitoringParquetDatasetFormat
+newMonitoringParquetDatasetFormat =
+  MonitoringParquetDatasetFormat'
+
+instance Data.FromJSON MonitoringParquetDatasetFormat where
+  parseJSON =
+    Data.withObject
+      "MonitoringParquetDatasetFormat"
+      (\x -> Prelude.pure MonitoringParquetDatasetFormat')
+
+instance
+  Prelude.Hashable
+    MonitoringParquetDatasetFormat
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    MonitoringParquetDatasetFormat
+  where
+  rnf _ = ()
+
+instance Data.ToJSON MonitoringParquetDatasetFormat where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringProblemType.hs b/gen/Amazonka/SageMaker/Types/MonitoringProblemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringProblemType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringProblemType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringProblemType
+  ( MonitoringProblemType
+      ( ..,
+        MonitoringProblemType_BinaryClassification,
+        MonitoringProblemType_MulticlassClassification,
+        MonitoringProblemType_Regression
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringProblemType = MonitoringProblemType'
+  { fromMonitoringProblemType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringProblemType_BinaryClassification :: MonitoringProblemType
+pattern MonitoringProblemType_BinaryClassification = MonitoringProblemType' "BinaryClassification"
+
+pattern MonitoringProblemType_MulticlassClassification :: MonitoringProblemType
+pattern MonitoringProblemType_MulticlassClassification = MonitoringProblemType' "MulticlassClassification"
+
+pattern MonitoringProblemType_Regression :: MonitoringProblemType
+pattern MonitoringProblemType_Regression = MonitoringProblemType' "Regression"
+
+{-# COMPLETE
+  MonitoringProblemType_BinaryClassification,
+  MonitoringProblemType_MulticlassClassification,
+  MonitoringProblemType_Regression,
+  MonitoringProblemType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringResources.hs b/gen/Amazonka/SageMaker/Types/MonitoringResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringResources.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringResources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringResources 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 Amazonka.SageMaker.Types.MonitoringClusterConfig
+
+-- | Identifies the resources to deploy for a monitoring job.
+--
+-- /See:/ 'newMonitoringResources' smart constructor.
+data MonitoringResources = MonitoringResources'
+  { -- | The configuration for the cluster resources used to run the processing
+    -- job.
+    clusterConfig :: MonitoringClusterConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringResources' 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:
+--
+-- 'clusterConfig', 'monitoringResources_clusterConfig' - The configuration for the cluster resources used to run the processing
+-- job.
+newMonitoringResources ::
+  -- | 'clusterConfig'
+  MonitoringClusterConfig ->
+  MonitoringResources
+newMonitoringResources pClusterConfig_ =
+  MonitoringResources'
+    { clusterConfig =
+        pClusterConfig_
+    }
+
+-- | The configuration for the cluster resources used to run the processing
+-- job.
+monitoringResources_clusterConfig :: Lens.Lens' MonitoringResources MonitoringClusterConfig
+monitoringResources_clusterConfig = Lens.lens (\MonitoringResources' {clusterConfig} -> clusterConfig) (\s@MonitoringResources' {} a -> s {clusterConfig = a} :: MonitoringResources)
+
+instance Data.FromJSON MonitoringResources where
+  parseJSON =
+    Data.withObject
+      "MonitoringResources"
+      ( \x ->
+          MonitoringResources'
+            Prelude.<$> (x Data..: "ClusterConfig")
+      )
+
+instance Prelude.Hashable MonitoringResources where
+  hashWithSalt _salt MonitoringResources' {..} =
+    _salt `Prelude.hashWithSalt` clusterConfig
+
+instance Prelude.NFData MonitoringResources where
+  rnf MonitoringResources' {..} =
+    Prelude.rnf clusterConfig
+
+instance Data.ToJSON MonitoringResources where
+  toJSON MonitoringResources' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ClusterConfig" Data..= clusterConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringS3Output.hs b/gen/Amazonka/SageMaker/Types/MonitoringS3Output.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringS3Output.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringS3Output
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringS3Output 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 Amazonka.SageMaker.Types.ProcessingS3UploadMode
+
+-- | Information about where and how you want to store the results of a
+-- monitoring job.
+--
+-- /See:/ 'newMonitoringS3Output' smart constructor.
+data MonitoringS3Output = MonitoringS3Output'
+  { -- | Whether to upload the results of the monitoring job continuously or
+    -- after the job completes.
+    s3UploadMode :: Prelude.Maybe ProcessingS3UploadMode,
+    -- | A URI that identifies the Amazon S3 storage location where Amazon
+    -- SageMaker saves the results of a monitoring job.
+    s3Uri :: Prelude.Text,
+    -- | The local path to the Amazon S3 storage location where Amazon SageMaker
+    -- saves the results of a monitoring job. LocalPath is an absolute path for
+    -- the output data.
+    localPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringS3Output' 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:
+--
+-- 's3UploadMode', 'monitoringS3Output_s3UploadMode' - Whether to upload the results of the monitoring job continuously or
+-- after the job completes.
+--
+-- 's3Uri', 'monitoringS3Output_s3Uri' - A URI that identifies the Amazon S3 storage location where Amazon
+-- SageMaker saves the results of a monitoring job.
+--
+-- 'localPath', 'monitoringS3Output_localPath' - The local path to the Amazon S3 storage location where Amazon SageMaker
+-- saves the results of a monitoring job. LocalPath is an absolute path for
+-- the output data.
+newMonitoringS3Output ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  -- | 'localPath'
+  Prelude.Text ->
+  MonitoringS3Output
+newMonitoringS3Output pS3Uri_ pLocalPath_ =
+  MonitoringS3Output'
+    { s3UploadMode = Prelude.Nothing,
+      s3Uri = pS3Uri_,
+      localPath = pLocalPath_
+    }
+
+-- | Whether to upload the results of the monitoring job continuously or
+-- after the job completes.
+monitoringS3Output_s3UploadMode :: Lens.Lens' MonitoringS3Output (Prelude.Maybe ProcessingS3UploadMode)
+monitoringS3Output_s3UploadMode = Lens.lens (\MonitoringS3Output' {s3UploadMode} -> s3UploadMode) (\s@MonitoringS3Output' {} a -> s {s3UploadMode = a} :: MonitoringS3Output)
+
+-- | A URI that identifies the Amazon S3 storage location where Amazon
+-- SageMaker saves the results of a monitoring job.
+monitoringS3Output_s3Uri :: Lens.Lens' MonitoringS3Output Prelude.Text
+monitoringS3Output_s3Uri = Lens.lens (\MonitoringS3Output' {s3Uri} -> s3Uri) (\s@MonitoringS3Output' {} a -> s {s3Uri = a} :: MonitoringS3Output)
+
+-- | The local path to the Amazon S3 storage location where Amazon SageMaker
+-- saves the results of a monitoring job. LocalPath is an absolute path for
+-- the output data.
+monitoringS3Output_localPath :: Lens.Lens' MonitoringS3Output Prelude.Text
+monitoringS3Output_localPath = Lens.lens (\MonitoringS3Output' {localPath} -> localPath) (\s@MonitoringS3Output' {} a -> s {localPath = a} :: MonitoringS3Output)
+
+instance Data.FromJSON MonitoringS3Output where
+  parseJSON =
+    Data.withObject
+      "MonitoringS3Output"
+      ( \x ->
+          MonitoringS3Output'
+            Prelude.<$> (x Data..:? "S3UploadMode")
+            Prelude.<*> (x Data..: "S3Uri")
+            Prelude.<*> (x Data..: "LocalPath")
+      )
+
+instance Prelude.Hashable MonitoringS3Output where
+  hashWithSalt _salt MonitoringS3Output' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3UploadMode
+      `Prelude.hashWithSalt` s3Uri
+      `Prelude.hashWithSalt` localPath
+
+instance Prelude.NFData MonitoringS3Output where
+  rnf MonitoringS3Output' {..} =
+    Prelude.rnf s3UploadMode
+      `Prelude.seq` Prelude.rnf s3Uri
+      `Prelude.seq` Prelude.rnf localPath
+
+instance Data.ToJSON MonitoringS3Output where
+  toJSON MonitoringS3Output' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("S3UploadMode" Data..=) Prelude.<$> s3UploadMode,
+            Prelude.Just ("S3Uri" Data..= s3Uri),
+            Prelude.Just ("LocalPath" Data..= localPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringSchedule.hs b/gen/Amazonka/SageMaker/Types/MonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringSchedule.hs
@@ -0,0 +1,233 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringSchedule 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 Amazonka.SageMaker.Types.MonitoringExecutionSummary
+import Amazonka.SageMaker.Types.MonitoringScheduleConfig
+import Amazonka.SageMaker.Types.MonitoringType
+import Amazonka.SageMaker.Types.ScheduleStatus
+import Amazonka.SageMaker.Types.Tag
+
+-- | A schedule for a model monitoring job. For information about model
+-- monitor, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
+--
+-- /See:/ 'newMonitoringSchedule' smart constructor.
+data MonitoringSchedule = MonitoringSchedule'
+  { -- | The time that the monitoring schedule was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The endpoint that hosts the model being monitored.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | If the monitoring schedule failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The last time the monitoring schedule was changed.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    lastMonitoringExecutionSummary :: Prelude.Maybe MonitoringExecutionSummary,
+    -- | The Amazon Resource Name (ARN) of the monitoring schedule.
+    monitoringScheduleArn :: Prelude.Maybe Prelude.Text,
+    monitoringScheduleConfig :: Prelude.Maybe MonitoringScheduleConfig,
+    -- | The name of the monitoring schedule.
+    monitoringScheduleName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the monitoring schedule. This can be one of the following
+    -- values.
+    --
+    -- -   @PENDING@ - The schedule is pending being created.
+    --
+    -- -   @FAILED@ - The schedule failed.
+    --
+    -- -   @SCHEDULED@ - The schedule was successfully created.
+    --
+    -- -   @STOPPED@ - The schedule was stopped.
+    monitoringScheduleStatus :: Prelude.Maybe ScheduleStatus,
+    -- | The type of the monitoring job definition to schedule.
+    monitoringType :: Prelude.Maybe MonitoringType,
+    -- | A list of the tags associated with the monitoring schedlue. 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/.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringSchedule' 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:
+--
+-- 'creationTime', 'monitoringSchedule_creationTime' - The time that the monitoring schedule was created.
+--
+-- 'endpointName', 'monitoringSchedule_endpointName' - The endpoint that hosts the model being monitored.
+--
+-- 'failureReason', 'monitoringSchedule_failureReason' - If the monitoring schedule failed, the reason it failed.
+--
+-- 'lastModifiedTime', 'monitoringSchedule_lastModifiedTime' - The last time the monitoring schedule was changed.
+--
+-- 'lastMonitoringExecutionSummary', 'monitoringSchedule_lastMonitoringExecutionSummary' - Undocumented member.
+--
+-- 'monitoringScheduleArn', 'monitoringSchedule_monitoringScheduleArn' - The Amazon Resource Name (ARN) of the monitoring schedule.
+--
+-- 'monitoringScheduleConfig', 'monitoringSchedule_monitoringScheduleConfig' - Undocumented member.
+--
+-- 'monitoringScheduleName', 'monitoringSchedule_monitoringScheduleName' - The name of the monitoring schedule.
+--
+-- 'monitoringScheduleStatus', 'monitoringSchedule_monitoringScheduleStatus' - The status of the monitoring schedule. This can be one of the following
+-- values.
+--
+-- -   @PENDING@ - The schedule is pending being created.
+--
+-- -   @FAILED@ - The schedule failed.
+--
+-- -   @SCHEDULED@ - The schedule was successfully created.
+--
+-- -   @STOPPED@ - The schedule was stopped.
+--
+-- 'monitoringType', 'monitoringSchedule_monitoringType' - The type of the monitoring job definition to schedule.
+--
+-- 'tags', 'monitoringSchedule_tags' - A list of the tags associated with the monitoring schedlue. 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/.
+newMonitoringSchedule ::
+  MonitoringSchedule
+newMonitoringSchedule =
+  MonitoringSchedule'
+    { creationTime = Prelude.Nothing,
+      endpointName = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lastMonitoringExecutionSummary = Prelude.Nothing,
+      monitoringScheduleArn = Prelude.Nothing,
+      monitoringScheduleConfig = Prelude.Nothing,
+      monitoringScheduleName = Prelude.Nothing,
+      monitoringScheduleStatus = Prelude.Nothing,
+      monitoringType = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The time that the monitoring schedule was created.
+monitoringSchedule_creationTime :: Lens.Lens' MonitoringSchedule (Prelude.Maybe Prelude.UTCTime)
+monitoringSchedule_creationTime = Lens.lens (\MonitoringSchedule' {creationTime} -> creationTime) (\s@MonitoringSchedule' {} a -> s {creationTime = a} :: MonitoringSchedule) Prelude.. Lens.mapping Data._Time
+
+-- | The endpoint that hosts the model being monitored.
+monitoringSchedule_endpointName :: Lens.Lens' MonitoringSchedule (Prelude.Maybe Prelude.Text)
+monitoringSchedule_endpointName = Lens.lens (\MonitoringSchedule' {endpointName} -> endpointName) (\s@MonitoringSchedule' {} a -> s {endpointName = a} :: MonitoringSchedule)
+
+-- | If the monitoring schedule failed, the reason it failed.
+monitoringSchedule_failureReason :: Lens.Lens' MonitoringSchedule (Prelude.Maybe Prelude.Text)
+monitoringSchedule_failureReason = Lens.lens (\MonitoringSchedule' {failureReason} -> failureReason) (\s@MonitoringSchedule' {} a -> s {failureReason = a} :: MonitoringSchedule)
+
+-- | The last time the monitoring schedule was changed.
+monitoringSchedule_lastModifiedTime :: Lens.Lens' MonitoringSchedule (Prelude.Maybe Prelude.UTCTime)
+monitoringSchedule_lastModifiedTime = Lens.lens (\MonitoringSchedule' {lastModifiedTime} -> lastModifiedTime) (\s@MonitoringSchedule' {} a -> s {lastModifiedTime = a} :: MonitoringSchedule) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+monitoringSchedule_lastMonitoringExecutionSummary :: Lens.Lens' MonitoringSchedule (Prelude.Maybe MonitoringExecutionSummary)
+monitoringSchedule_lastMonitoringExecutionSummary = Lens.lens (\MonitoringSchedule' {lastMonitoringExecutionSummary} -> lastMonitoringExecutionSummary) (\s@MonitoringSchedule' {} a -> s {lastMonitoringExecutionSummary = a} :: MonitoringSchedule)
+
+-- | The Amazon Resource Name (ARN) of the monitoring schedule.
+monitoringSchedule_monitoringScheduleArn :: Lens.Lens' MonitoringSchedule (Prelude.Maybe Prelude.Text)
+monitoringSchedule_monitoringScheduleArn = Lens.lens (\MonitoringSchedule' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@MonitoringSchedule' {} a -> s {monitoringScheduleArn = a} :: MonitoringSchedule)
+
+-- | Undocumented member.
+monitoringSchedule_monitoringScheduleConfig :: Lens.Lens' MonitoringSchedule (Prelude.Maybe MonitoringScheduleConfig)
+monitoringSchedule_monitoringScheduleConfig = Lens.lens (\MonitoringSchedule' {monitoringScheduleConfig} -> monitoringScheduleConfig) (\s@MonitoringSchedule' {} a -> s {monitoringScheduleConfig = a} :: MonitoringSchedule)
+
+-- | The name of the monitoring schedule.
+monitoringSchedule_monitoringScheduleName :: Lens.Lens' MonitoringSchedule (Prelude.Maybe Prelude.Text)
+monitoringSchedule_monitoringScheduleName = Lens.lens (\MonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@MonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: MonitoringSchedule)
+
+-- | The status of the monitoring schedule. This can be one of the following
+-- values.
+--
+-- -   @PENDING@ - The schedule is pending being created.
+--
+-- -   @FAILED@ - The schedule failed.
+--
+-- -   @SCHEDULED@ - The schedule was successfully created.
+--
+-- -   @STOPPED@ - The schedule was stopped.
+monitoringSchedule_monitoringScheduleStatus :: Lens.Lens' MonitoringSchedule (Prelude.Maybe ScheduleStatus)
+monitoringSchedule_monitoringScheduleStatus = Lens.lens (\MonitoringSchedule' {monitoringScheduleStatus} -> monitoringScheduleStatus) (\s@MonitoringSchedule' {} a -> s {monitoringScheduleStatus = a} :: MonitoringSchedule)
+
+-- | The type of the monitoring job definition to schedule.
+monitoringSchedule_monitoringType :: Lens.Lens' MonitoringSchedule (Prelude.Maybe MonitoringType)
+monitoringSchedule_monitoringType = Lens.lens (\MonitoringSchedule' {monitoringType} -> monitoringType) (\s@MonitoringSchedule' {} a -> s {monitoringType = a} :: MonitoringSchedule)
+
+-- | A list of the tags associated with the monitoring schedlue. 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/.
+monitoringSchedule_tags :: Lens.Lens' MonitoringSchedule (Prelude.Maybe [Tag])
+monitoringSchedule_tags = Lens.lens (\MonitoringSchedule' {tags} -> tags) (\s@MonitoringSchedule' {} a -> s {tags = a} :: MonitoringSchedule) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON MonitoringSchedule where
+  parseJSON =
+    Data.withObject
+      "MonitoringSchedule"
+      ( \x ->
+          MonitoringSchedule'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "EndpointName")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "LastMonitoringExecutionSummary")
+            Prelude.<*> (x Data..:? "MonitoringScheduleArn")
+            Prelude.<*> (x Data..:? "MonitoringScheduleConfig")
+            Prelude.<*> (x Data..:? "MonitoringScheduleName")
+            Prelude.<*> (x Data..:? "MonitoringScheduleStatus")
+            Prelude.<*> (x Data..:? "MonitoringType")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable MonitoringSchedule where
+  hashWithSalt _salt MonitoringSchedule' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` lastMonitoringExecutionSummary
+      `Prelude.hashWithSalt` monitoringScheduleArn
+      `Prelude.hashWithSalt` monitoringScheduleConfig
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringScheduleStatus
+      `Prelude.hashWithSalt` monitoringType
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData MonitoringSchedule where
+  rnf MonitoringSchedule' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lastMonitoringExecutionSummary
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
+      `Prelude.seq` Prelude.rnf monitoringScheduleConfig
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringScheduleStatus
+      `Prelude.seq` Prelude.rnf monitoringType
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringScheduleConfig.hs b/gen/Amazonka/SageMaker/Types/MonitoringScheduleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringScheduleConfig.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringScheduleConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringScheduleConfig 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 Amazonka.SageMaker.Types.MonitoringJobDefinition
+import Amazonka.SageMaker.Types.MonitoringType
+import Amazonka.SageMaker.Types.ScheduleConfig
+
+-- | Configures the monitoring schedule and defines the monitoring job.
+--
+-- /See:/ 'newMonitoringScheduleConfig' smart constructor.
+data MonitoringScheduleConfig = MonitoringScheduleConfig'
+  { -- | Defines the monitoring job.
+    monitoringJobDefinition :: Prelude.Maybe MonitoringJobDefinition,
+    -- | The name of the monitoring job definition to schedule.
+    monitoringJobDefinitionName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the monitoring job definition to schedule.
+    monitoringType :: Prelude.Maybe MonitoringType,
+    -- | Configures the monitoring schedule.
+    scheduleConfig :: Prelude.Maybe ScheduleConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringScheduleConfig' 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:
+--
+-- 'monitoringJobDefinition', 'monitoringScheduleConfig_monitoringJobDefinition' - Defines the monitoring job.
+--
+-- 'monitoringJobDefinitionName', 'monitoringScheduleConfig_monitoringJobDefinitionName' - The name of the monitoring job definition to schedule.
+--
+-- 'monitoringType', 'monitoringScheduleConfig_monitoringType' - The type of the monitoring job definition to schedule.
+--
+-- 'scheduleConfig', 'monitoringScheduleConfig_scheduleConfig' - Configures the monitoring schedule.
+newMonitoringScheduleConfig ::
+  MonitoringScheduleConfig
+newMonitoringScheduleConfig =
+  MonitoringScheduleConfig'
+    { monitoringJobDefinition =
+        Prelude.Nothing,
+      monitoringJobDefinitionName = Prelude.Nothing,
+      monitoringType = Prelude.Nothing,
+      scheduleConfig = Prelude.Nothing
+    }
+
+-- | Defines the monitoring job.
+monitoringScheduleConfig_monitoringJobDefinition :: Lens.Lens' MonitoringScheduleConfig (Prelude.Maybe MonitoringJobDefinition)
+monitoringScheduleConfig_monitoringJobDefinition = Lens.lens (\MonitoringScheduleConfig' {monitoringJobDefinition} -> monitoringJobDefinition) (\s@MonitoringScheduleConfig' {} a -> s {monitoringJobDefinition = a} :: MonitoringScheduleConfig)
+
+-- | The name of the monitoring job definition to schedule.
+monitoringScheduleConfig_monitoringJobDefinitionName :: Lens.Lens' MonitoringScheduleConfig (Prelude.Maybe Prelude.Text)
+monitoringScheduleConfig_monitoringJobDefinitionName = Lens.lens (\MonitoringScheduleConfig' {monitoringJobDefinitionName} -> monitoringJobDefinitionName) (\s@MonitoringScheduleConfig' {} a -> s {monitoringJobDefinitionName = a} :: MonitoringScheduleConfig)
+
+-- | The type of the monitoring job definition to schedule.
+monitoringScheduleConfig_monitoringType :: Lens.Lens' MonitoringScheduleConfig (Prelude.Maybe MonitoringType)
+monitoringScheduleConfig_monitoringType = Lens.lens (\MonitoringScheduleConfig' {monitoringType} -> monitoringType) (\s@MonitoringScheduleConfig' {} a -> s {monitoringType = a} :: MonitoringScheduleConfig)
+
+-- | Configures the monitoring schedule.
+monitoringScheduleConfig_scheduleConfig :: Lens.Lens' MonitoringScheduleConfig (Prelude.Maybe ScheduleConfig)
+monitoringScheduleConfig_scheduleConfig = Lens.lens (\MonitoringScheduleConfig' {scheduleConfig} -> scheduleConfig) (\s@MonitoringScheduleConfig' {} a -> s {scheduleConfig = a} :: MonitoringScheduleConfig)
+
+instance Data.FromJSON MonitoringScheduleConfig where
+  parseJSON =
+    Data.withObject
+      "MonitoringScheduleConfig"
+      ( \x ->
+          MonitoringScheduleConfig'
+            Prelude.<$> (x Data..:? "MonitoringJobDefinition")
+            Prelude.<*> (x Data..:? "MonitoringJobDefinitionName")
+            Prelude.<*> (x Data..:? "MonitoringType")
+            Prelude.<*> (x Data..:? "ScheduleConfig")
+      )
+
+instance Prelude.Hashable MonitoringScheduleConfig where
+  hashWithSalt _salt MonitoringScheduleConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` monitoringJobDefinition
+      `Prelude.hashWithSalt` monitoringJobDefinitionName
+      `Prelude.hashWithSalt` monitoringType
+      `Prelude.hashWithSalt` scheduleConfig
+
+instance Prelude.NFData MonitoringScheduleConfig where
+  rnf MonitoringScheduleConfig' {..} =
+    Prelude.rnf monitoringJobDefinition
+      `Prelude.seq` Prelude.rnf monitoringJobDefinitionName
+      `Prelude.seq` Prelude.rnf monitoringType
+      `Prelude.seq` Prelude.rnf scheduleConfig
+
+instance Data.ToJSON MonitoringScheduleConfig where
+  toJSON MonitoringScheduleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MonitoringJobDefinition" Data..=)
+              Prelude.<$> monitoringJobDefinition,
+            ("MonitoringJobDefinitionName" Data..=)
+              Prelude.<$> monitoringJobDefinitionName,
+            ("MonitoringType" Data..=)
+              Prelude.<$> monitoringType,
+            ("ScheduleConfig" Data..=)
+              Prelude.<$> scheduleConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringScheduleSortKey.hs b/gen/Amazonka/SageMaker/Types/MonitoringScheduleSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringScheduleSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringScheduleSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringScheduleSortKey
+  ( MonitoringScheduleSortKey
+      ( ..,
+        MonitoringScheduleSortKey_CreationTime,
+        MonitoringScheduleSortKey_Name,
+        MonitoringScheduleSortKey_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringScheduleSortKey = MonitoringScheduleSortKey'
+  { fromMonitoringScheduleSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringScheduleSortKey_CreationTime :: MonitoringScheduleSortKey
+pattern MonitoringScheduleSortKey_CreationTime = MonitoringScheduleSortKey' "CreationTime"
+
+pattern MonitoringScheduleSortKey_Name :: MonitoringScheduleSortKey
+pattern MonitoringScheduleSortKey_Name = MonitoringScheduleSortKey' "Name"
+
+pattern MonitoringScheduleSortKey_Status :: MonitoringScheduleSortKey
+pattern MonitoringScheduleSortKey_Status = MonitoringScheduleSortKey' "Status"
+
+{-# COMPLETE
+  MonitoringScheduleSortKey_CreationTime,
+  MonitoringScheduleSortKey_Name,
+  MonitoringScheduleSortKey_Status,
+  MonitoringScheduleSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringScheduleSummary.hs b/gen/Amazonka/SageMaker/Types/MonitoringScheduleSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringScheduleSummary.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringScheduleSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringScheduleSummary 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 Amazonka.SageMaker.Types.MonitoringType
+import Amazonka.SageMaker.Types.ScheduleStatus
+
+-- | Summarizes the monitoring schedule.
+--
+-- /See:/ 'newMonitoringScheduleSummary' smart constructor.
+data MonitoringScheduleSummary = MonitoringScheduleSummary'
+  { -- | The name of the endpoint using the monitoring schedule.
+    endpointName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the monitoring job definition that the schedule is for.
+    monitoringJobDefinitionName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the monitoring job definition that the schedule is for.
+    monitoringType :: Prelude.Maybe MonitoringType,
+    -- | The name of the monitoring schedule.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the monitoring schedule.
+    monitoringScheduleArn :: Prelude.Text,
+    -- | The creation time of the monitoring schedule.
+    creationTime :: Data.POSIX,
+    -- | The last time the monitoring schedule was modified.
+    lastModifiedTime :: Data.POSIX,
+    -- | The status of the monitoring schedule.
+    monitoringScheduleStatus :: ScheduleStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringScheduleSummary' 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:
+--
+-- 'endpointName', 'monitoringScheduleSummary_endpointName' - The name of the endpoint using the monitoring schedule.
+--
+-- 'monitoringJobDefinitionName', 'monitoringScheduleSummary_monitoringJobDefinitionName' - The name of the monitoring job definition that the schedule is for.
+--
+-- 'monitoringType', 'monitoringScheduleSummary_monitoringType' - The type of the monitoring job definition that the schedule is for.
+--
+-- 'monitoringScheduleName', 'monitoringScheduleSummary_monitoringScheduleName' - The name of the monitoring schedule.
+--
+-- 'monitoringScheduleArn', 'monitoringScheduleSummary_monitoringScheduleArn' - The Amazon Resource Name (ARN) of the monitoring schedule.
+--
+-- 'creationTime', 'monitoringScheduleSummary_creationTime' - The creation time of the monitoring schedule.
+--
+-- 'lastModifiedTime', 'monitoringScheduleSummary_lastModifiedTime' - The last time the monitoring schedule was modified.
+--
+-- 'monitoringScheduleStatus', 'monitoringScheduleSummary_monitoringScheduleStatus' - The status of the monitoring schedule.
+newMonitoringScheduleSummary ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'monitoringScheduleArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'lastModifiedTime'
+  Prelude.UTCTime ->
+  -- | 'monitoringScheduleStatus'
+  ScheduleStatus ->
+  MonitoringScheduleSummary
+newMonitoringScheduleSummary
+  pMonitoringScheduleName_
+  pMonitoringScheduleArn_
+  pCreationTime_
+  pLastModifiedTime_
+  pMonitoringScheduleStatus_ =
+    MonitoringScheduleSummary'
+      { endpointName =
+          Prelude.Nothing,
+        monitoringJobDefinitionName = Prelude.Nothing,
+        monitoringType = Prelude.Nothing,
+        monitoringScheduleName =
+          pMonitoringScheduleName_,
+        monitoringScheduleArn = pMonitoringScheduleArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        lastModifiedTime =
+          Data._Time Lens.# pLastModifiedTime_,
+        monitoringScheduleStatus =
+          pMonitoringScheduleStatus_
+      }
+
+-- | The name of the endpoint using the monitoring schedule.
+monitoringScheduleSummary_endpointName :: Lens.Lens' MonitoringScheduleSummary (Prelude.Maybe Prelude.Text)
+monitoringScheduleSummary_endpointName = Lens.lens (\MonitoringScheduleSummary' {endpointName} -> endpointName) (\s@MonitoringScheduleSummary' {} a -> s {endpointName = a} :: MonitoringScheduleSummary)
+
+-- | The name of the monitoring job definition that the schedule is for.
+monitoringScheduleSummary_monitoringJobDefinitionName :: Lens.Lens' MonitoringScheduleSummary (Prelude.Maybe Prelude.Text)
+monitoringScheduleSummary_monitoringJobDefinitionName = Lens.lens (\MonitoringScheduleSummary' {monitoringJobDefinitionName} -> monitoringJobDefinitionName) (\s@MonitoringScheduleSummary' {} a -> s {monitoringJobDefinitionName = a} :: MonitoringScheduleSummary)
+
+-- | The type of the monitoring job definition that the schedule is for.
+monitoringScheduleSummary_monitoringType :: Lens.Lens' MonitoringScheduleSummary (Prelude.Maybe MonitoringType)
+monitoringScheduleSummary_monitoringType = Lens.lens (\MonitoringScheduleSummary' {monitoringType} -> monitoringType) (\s@MonitoringScheduleSummary' {} a -> s {monitoringType = a} :: MonitoringScheduleSummary)
+
+-- | The name of the monitoring schedule.
+monitoringScheduleSummary_monitoringScheduleName :: Lens.Lens' MonitoringScheduleSummary Prelude.Text
+monitoringScheduleSummary_monitoringScheduleName = Lens.lens (\MonitoringScheduleSummary' {monitoringScheduleName} -> monitoringScheduleName) (\s@MonitoringScheduleSummary' {} a -> s {monitoringScheduleName = a} :: MonitoringScheduleSummary)
+
+-- | The Amazon Resource Name (ARN) of the monitoring schedule.
+monitoringScheduleSummary_monitoringScheduleArn :: Lens.Lens' MonitoringScheduleSummary Prelude.Text
+monitoringScheduleSummary_monitoringScheduleArn = Lens.lens (\MonitoringScheduleSummary' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@MonitoringScheduleSummary' {} a -> s {monitoringScheduleArn = a} :: MonitoringScheduleSummary)
+
+-- | The creation time of the monitoring schedule.
+monitoringScheduleSummary_creationTime :: Lens.Lens' MonitoringScheduleSummary Prelude.UTCTime
+monitoringScheduleSummary_creationTime = Lens.lens (\MonitoringScheduleSummary' {creationTime} -> creationTime) (\s@MonitoringScheduleSummary' {} a -> s {creationTime = a} :: MonitoringScheduleSummary) Prelude.. Data._Time
+
+-- | The last time the monitoring schedule was modified.
+monitoringScheduleSummary_lastModifiedTime :: Lens.Lens' MonitoringScheduleSummary Prelude.UTCTime
+monitoringScheduleSummary_lastModifiedTime = Lens.lens (\MonitoringScheduleSummary' {lastModifiedTime} -> lastModifiedTime) (\s@MonitoringScheduleSummary' {} a -> s {lastModifiedTime = a} :: MonitoringScheduleSummary) Prelude.. Data._Time
+
+-- | The status of the monitoring schedule.
+monitoringScheduleSummary_monitoringScheduleStatus :: Lens.Lens' MonitoringScheduleSummary ScheduleStatus
+monitoringScheduleSummary_monitoringScheduleStatus = Lens.lens (\MonitoringScheduleSummary' {monitoringScheduleStatus} -> monitoringScheduleStatus) (\s@MonitoringScheduleSummary' {} a -> s {monitoringScheduleStatus = a} :: MonitoringScheduleSummary)
+
+instance Data.FromJSON MonitoringScheduleSummary where
+  parseJSON =
+    Data.withObject
+      "MonitoringScheduleSummary"
+      ( \x ->
+          MonitoringScheduleSummary'
+            Prelude.<$> (x Data..:? "EndpointName")
+            Prelude.<*> (x Data..:? "MonitoringJobDefinitionName")
+            Prelude.<*> (x Data..:? "MonitoringType")
+            Prelude.<*> (x Data..: "MonitoringScheduleName")
+            Prelude.<*> (x Data..: "MonitoringScheduleArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "LastModifiedTime")
+            Prelude.<*> (x Data..: "MonitoringScheduleStatus")
+      )
+
+instance Prelude.Hashable MonitoringScheduleSummary where
+  hashWithSalt _salt MonitoringScheduleSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` monitoringJobDefinitionName
+      `Prelude.hashWithSalt` monitoringType
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringScheduleArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` monitoringScheduleStatus
+
+instance Prelude.NFData MonitoringScheduleSummary where
+  rnf MonitoringScheduleSummary' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf monitoringJobDefinitionName
+      `Prelude.seq` Prelude.rnf monitoringType
+      `Prelude.seq` Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf monitoringScheduleStatus
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringStatisticsResource.hs b/gen/Amazonka/SageMaker/Types/MonitoringStatisticsResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringStatisticsResource.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringStatisticsResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringStatisticsResource 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
+
+-- | The statistics resource for a monitoring job.
+--
+-- /See:/ 'newMonitoringStatisticsResource' smart constructor.
+data MonitoringStatisticsResource = MonitoringStatisticsResource'
+  { -- | The Amazon S3 URI for the statistics resource.
+    s3Uri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringStatisticsResource' 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:
+--
+-- 's3Uri', 'monitoringStatisticsResource_s3Uri' - The Amazon S3 URI for the statistics resource.
+newMonitoringStatisticsResource ::
+  MonitoringStatisticsResource
+newMonitoringStatisticsResource =
+  MonitoringStatisticsResource'
+    { s3Uri =
+        Prelude.Nothing
+    }
+
+-- | The Amazon S3 URI for the statistics resource.
+monitoringStatisticsResource_s3Uri :: Lens.Lens' MonitoringStatisticsResource (Prelude.Maybe Prelude.Text)
+monitoringStatisticsResource_s3Uri = Lens.lens (\MonitoringStatisticsResource' {s3Uri} -> s3Uri) (\s@MonitoringStatisticsResource' {} a -> s {s3Uri = a} :: MonitoringStatisticsResource)
+
+instance Data.FromJSON MonitoringStatisticsResource where
+  parseJSON =
+    Data.withObject
+      "MonitoringStatisticsResource"
+      ( \x ->
+          MonitoringStatisticsResource'
+            Prelude.<$> (x Data..:? "S3Uri")
+      )
+
+instance
+  Prelude.Hashable
+    MonitoringStatisticsResource
+  where
+  hashWithSalt _salt MonitoringStatisticsResource' {..} =
+    _salt `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData MonitoringStatisticsResource where
+  rnf MonitoringStatisticsResource' {..} =
+    Prelude.rnf s3Uri
+
+instance Data.ToJSON MonitoringStatisticsResource where
+  toJSON MonitoringStatisticsResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3Uri" Data..=) Prelude.<$> s3Uri]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringStoppingCondition.hs b/gen/Amazonka/SageMaker/Types/MonitoringStoppingCondition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringStoppingCondition.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MonitoringStoppingCondition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringStoppingCondition 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
+
+-- | A time limit for how long the monitoring job is allowed to run before
+-- stopping.
+--
+-- /See:/ 'newMonitoringStoppingCondition' smart constructor.
+data MonitoringStoppingCondition = MonitoringStoppingCondition'
+  { -- | The maximum runtime allowed in seconds.
+    --
+    -- The @MaxRuntimeInSeconds@ cannot exceed the frequency of the job. For
+    -- data quality and model explainability, this can be up to 3600 seconds
+    -- for an hourly schedule. For model bias and model quality hourly
+    -- schedules, this can be up to 1800 seconds.
+    maxRuntimeInSeconds :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonitoringStoppingCondition' 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:
+--
+-- 'maxRuntimeInSeconds', 'monitoringStoppingCondition_maxRuntimeInSeconds' - The maximum runtime allowed in seconds.
+--
+-- The @MaxRuntimeInSeconds@ cannot exceed the frequency of the job. For
+-- data quality and model explainability, this can be up to 3600 seconds
+-- for an hourly schedule. For model bias and model quality hourly
+-- schedules, this can be up to 1800 seconds.
+newMonitoringStoppingCondition ::
+  -- | 'maxRuntimeInSeconds'
+  Prelude.Natural ->
+  MonitoringStoppingCondition
+newMonitoringStoppingCondition pMaxRuntimeInSeconds_ =
+  MonitoringStoppingCondition'
+    { maxRuntimeInSeconds =
+        pMaxRuntimeInSeconds_
+    }
+
+-- | The maximum runtime allowed in seconds.
+--
+-- The @MaxRuntimeInSeconds@ cannot exceed the frequency of the job. For
+-- data quality and model explainability, this can be up to 3600 seconds
+-- for an hourly schedule. For model bias and model quality hourly
+-- schedules, this can be up to 1800 seconds.
+monitoringStoppingCondition_maxRuntimeInSeconds :: Lens.Lens' MonitoringStoppingCondition Prelude.Natural
+monitoringStoppingCondition_maxRuntimeInSeconds = Lens.lens (\MonitoringStoppingCondition' {maxRuntimeInSeconds} -> maxRuntimeInSeconds) (\s@MonitoringStoppingCondition' {} a -> s {maxRuntimeInSeconds = a} :: MonitoringStoppingCondition)
+
+instance Data.FromJSON MonitoringStoppingCondition where
+  parseJSON =
+    Data.withObject
+      "MonitoringStoppingCondition"
+      ( \x ->
+          MonitoringStoppingCondition'
+            Prelude.<$> (x Data..: "MaxRuntimeInSeconds")
+      )
+
+instance Prelude.Hashable MonitoringStoppingCondition where
+  hashWithSalt _salt MonitoringStoppingCondition' {..} =
+    _salt `Prelude.hashWithSalt` maxRuntimeInSeconds
+
+instance Prelude.NFData MonitoringStoppingCondition where
+  rnf MonitoringStoppingCondition' {..} =
+    Prelude.rnf maxRuntimeInSeconds
+
+instance Data.ToJSON MonitoringStoppingCondition where
+  toJSON MonitoringStoppingCondition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MaxRuntimeInSeconds" Data..= maxRuntimeInSeconds)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/MonitoringType.hs b/gen/Amazonka/SageMaker/Types/MonitoringType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MonitoringType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.MonitoringType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MonitoringType
+  ( MonitoringType
+      ( ..,
+        MonitoringType_DataQuality,
+        MonitoringType_ModelBias,
+        MonitoringType_ModelExplainability,
+        MonitoringType_ModelQuality
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MonitoringType = MonitoringType'
+  { fromMonitoringType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern MonitoringType_DataQuality :: MonitoringType
+pattern MonitoringType_DataQuality = MonitoringType' "DataQuality"
+
+pattern MonitoringType_ModelBias :: MonitoringType
+pattern MonitoringType_ModelBias = MonitoringType' "ModelBias"
+
+pattern MonitoringType_ModelExplainability :: MonitoringType
+pattern MonitoringType_ModelExplainability = MonitoringType' "ModelExplainability"
+
+pattern MonitoringType_ModelQuality :: MonitoringType
+pattern MonitoringType_ModelQuality = MonitoringType' "ModelQuality"
+
+{-# COMPLETE
+  MonitoringType_DataQuality,
+  MonitoringType_ModelBias,
+  MonitoringType_ModelExplainability,
+  MonitoringType_ModelQuality,
+  MonitoringType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/MultiModelConfig.hs b/gen/Amazonka/SageMaker/Types/MultiModelConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/MultiModelConfig.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.MultiModelConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.MultiModelConfig 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 Amazonka.SageMaker.Types.ModelCacheSetting
+
+-- | Specifies additional configuration for hosting multi-model endpoints.
+--
+-- /See:/ 'newMultiModelConfig' smart constructor.
+data MultiModelConfig = MultiModelConfig'
+  { -- | Whether to cache models for a multi-model endpoint. By default,
+    -- multi-model endpoints cache models so that a model does not have to be
+    -- loaded into memory each time it is invoked. Some use cases do not
+    -- benefit from model caching. For example, if an endpoint hosts a large
+    -- number of models that are each invoked infrequently, the endpoint might
+    -- perform better if you disable model caching. To disable model caching,
+    -- set the value of this parameter to @Disabled@.
+    modelCacheSetting :: Prelude.Maybe ModelCacheSetting
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MultiModelConfig' 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:
+--
+-- 'modelCacheSetting', 'multiModelConfig_modelCacheSetting' - Whether to cache models for a multi-model endpoint. By default,
+-- multi-model endpoints cache models so that a model does not have to be
+-- loaded into memory each time it is invoked. Some use cases do not
+-- benefit from model caching. For example, if an endpoint hosts a large
+-- number of models that are each invoked infrequently, the endpoint might
+-- perform better if you disable model caching. To disable model caching,
+-- set the value of this parameter to @Disabled@.
+newMultiModelConfig ::
+  MultiModelConfig
+newMultiModelConfig =
+  MultiModelConfig'
+    { modelCacheSetting =
+        Prelude.Nothing
+    }
+
+-- | Whether to cache models for a multi-model endpoint. By default,
+-- multi-model endpoints cache models so that a model does not have to be
+-- loaded into memory each time it is invoked. Some use cases do not
+-- benefit from model caching. For example, if an endpoint hosts a large
+-- number of models that are each invoked infrequently, the endpoint might
+-- perform better if you disable model caching. To disable model caching,
+-- set the value of this parameter to @Disabled@.
+multiModelConfig_modelCacheSetting :: Lens.Lens' MultiModelConfig (Prelude.Maybe ModelCacheSetting)
+multiModelConfig_modelCacheSetting = Lens.lens (\MultiModelConfig' {modelCacheSetting} -> modelCacheSetting) (\s@MultiModelConfig' {} a -> s {modelCacheSetting = a} :: MultiModelConfig)
+
+instance Data.FromJSON MultiModelConfig where
+  parseJSON =
+    Data.withObject
+      "MultiModelConfig"
+      ( \x ->
+          MultiModelConfig'
+            Prelude.<$> (x Data..:? "ModelCacheSetting")
+      )
+
+instance Prelude.Hashable MultiModelConfig where
+  hashWithSalt _salt MultiModelConfig' {..} =
+    _salt `Prelude.hashWithSalt` modelCacheSetting
+
+instance Prelude.NFData MultiModelConfig where
+  rnf MultiModelConfig' {..} =
+    Prelude.rnf modelCacheSetting
+
+instance Data.ToJSON MultiModelConfig where
+  toJSON MultiModelConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelCacheSetting" Data..=)
+              Prelude.<$> modelCacheSetting
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/NeoVpcConfig.hs b/gen/Amazonka/SageMaker/Types/NeoVpcConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NeoVpcConfig.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NeoVpcConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NeoVpcConfig 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
+
+-- | The VpcConfig configuration object that specifies the VPC that you want
+-- the compilation jobs to connect to. For more information on controlling
+-- access to your Amazon S3 buckets used for compilation job, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/neo-vpc.html Give Amazon SageMaker Compilation Jobs Access to Resources in Your Amazon VPC>.
+--
+-- /See:/ 'newNeoVpcConfig' smart constructor.
+data NeoVpcConfig = NeoVpcConfig'
+  { -- | The VPC security group IDs. IDs have the form of @sg-xxxxxxxx@. Specify
+    -- the security groups for the VPC that is specified in the @Subnets@
+    -- field.
+    securityGroupIds :: Prelude.NonEmpty Prelude.Text,
+    -- | The ID of the subnets in the VPC that you want to connect the
+    -- compilation job to for accessing the model in Amazon S3.
+    subnets :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NeoVpcConfig' 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:
+--
+-- 'securityGroupIds', 'neoVpcConfig_securityGroupIds' - The VPC security group IDs. IDs have the form of @sg-xxxxxxxx@. Specify
+-- the security groups for the VPC that is specified in the @Subnets@
+-- field.
+--
+-- 'subnets', 'neoVpcConfig_subnets' - The ID of the subnets in the VPC that you want to connect the
+-- compilation job to for accessing the model in Amazon S3.
+newNeoVpcConfig ::
+  -- | 'securityGroupIds'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'subnets'
+  Prelude.NonEmpty Prelude.Text ->
+  NeoVpcConfig
+newNeoVpcConfig pSecurityGroupIds_ pSubnets_ =
+  NeoVpcConfig'
+    { securityGroupIds =
+        Lens.coerced Lens.# pSecurityGroupIds_,
+      subnets = Lens.coerced Lens.# pSubnets_
+    }
+
+-- | The VPC security group IDs. IDs have the form of @sg-xxxxxxxx@. Specify
+-- the security groups for the VPC that is specified in the @Subnets@
+-- field.
+neoVpcConfig_securityGroupIds :: Lens.Lens' NeoVpcConfig (Prelude.NonEmpty Prelude.Text)
+neoVpcConfig_securityGroupIds = Lens.lens (\NeoVpcConfig' {securityGroupIds} -> securityGroupIds) (\s@NeoVpcConfig' {} a -> s {securityGroupIds = a} :: NeoVpcConfig) Prelude.. Lens.coerced
+
+-- | The ID of the subnets in the VPC that you want to connect the
+-- compilation job to for accessing the model in Amazon S3.
+neoVpcConfig_subnets :: Lens.Lens' NeoVpcConfig (Prelude.NonEmpty Prelude.Text)
+neoVpcConfig_subnets = Lens.lens (\NeoVpcConfig' {subnets} -> subnets) (\s@NeoVpcConfig' {} a -> s {subnets = a} :: NeoVpcConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON NeoVpcConfig where
+  parseJSON =
+    Data.withObject
+      "NeoVpcConfig"
+      ( \x ->
+          NeoVpcConfig'
+            Prelude.<$> (x Data..: "SecurityGroupIds")
+            Prelude.<*> (x Data..: "Subnets")
+      )
+
+instance Prelude.Hashable NeoVpcConfig where
+  hashWithSalt _salt NeoVpcConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` subnets
+
+instance Prelude.NFData NeoVpcConfig where
+  rnf NeoVpcConfig' {..} =
+    Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf subnets
+
+instance Data.ToJSON NeoVpcConfig where
+  toJSON NeoVpcConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("SecurityGroupIds" Data..= securityGroupIds),
+            Prelude.Just ("Subnets" Data..= subnets)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/NestedFilters.hs b/gen/Amazonka/SageMaker/Types/NestedFilters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NestedFilters.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NestedFilters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NestedFilters 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 Amazonka.SageMaker.Types.Filter
+
+-- | A list of nested Filter objects. A resource must satisfy the conditions
+-- of all filters to be included in the results returned from the Search
+-- API.
+--
+-- For example, to filter on a training job\'s @InputDataConfig@ property
+-- with a specific channel name and @S3Uri@ prefix, define the following
+-- filters:
+--
+-- -   @\'{Name:\"InputDataConfig.ChannelName\", \"Operator\":\"Equals\", \"Value\":\"train\"}\',@
+--
+-- -   @\'{Name:\"InputDataConfig.DataSource.S3DataSource.S3Uri\", \"Operator\":\"Contains\", \"Value\":\"mybucket\/catdata\"}\'@
+--
+-- /See:/ 'newNestedFilters' smart constructor.
+data NestedFilters = NestedFilters'
+  { -- | The name of the property to use in the nested filters. The value must
+    -- match a listed property name, such as @InputDataConfig@.
+    nestedPropertyName :: Prelude.Text,
+    -- | A list of filters. Each filter acts on a property. Filters must contain
+    -- at least one @Filters@ value. For example, a @NestedFilters@ call might
+    -- include a filter on the @PropertyName@ parameter of the
+    -- @InputDataConfig@ property:
+    -- @InputDataConfig.DataSource.S3DataSource.S3Uri@.
+    filters :: Prelude.NonEmpty Filter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NestedFilters' 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:
+--
+-- 'nestedPropertyName', 'nestedFilters_nestedPropertyName' - The name of the property to use in the nested filters. The value must
+-- match a listed property name, such as @InputDataConfig@.
+--
+-- 'filters', 'nestedFilters_filters' - A list of filters. Each filter acts on a property. Filters must contain
+-- at least one @Filters@ value. For example, a @NestedFilters@ call might
+-- include a filter on the @PropertyName@ parameter of the
+-- @InputDataConfig@ property:
+-- @InputDataConfig.DataSource.S3DataSource.S3Uri@.
+newNestedFilters ::
+  -- | 'nestedPropertyName'
+  Prelude.Text ->
+  -- | 'filters'
+  Prelude.NonEmpty Filter ->
+  NestedFilters
+newNestedFilters pNestedPropertyName_ pFilters_ =
+  NestedFilters'
+    { nestedPropertyName =
+        pNestedPropertyName_,
+      filters = Lens.coerced Lens.# pFilters_
+    }
+
+-- | The name of the property to use in the nested filters. The value must
+-- match a listed property name, such as @InputDataConfig@.
+nestedFilters_nestedPropertyName :: Lens.Lens' NestedFilters Prelude.Text
+nestedFilters_nestedPropertyName = Lens.lens (\NestedFilters' {nestedPropertyName} -> nestedPropertyName) (\s@NestedFilters' {} a -> s {nestedPropertyName = a} :: NestedFilters)
+
+-- | A list of filters. Each filter acts on a property. Filters must contain
+-- at least one @Filters@ value. For example, a @NestedFilters@ call might
+-- include a filter on the @PropertyName@ parameter of the
+-- @InputDataConfig@ property:
+-- @InputDataConfig.DataSource.S3DataSource.S3Uri@.
+nestedFilters_filters :: Lens.Lens' NestedFilters (Prelude.NonEmpty Filter)
+nestedFilters_filters = Lens.lens (\NestedFilters' {filters} -> filters) (\s@NestedFilters' {} a -> s {filters = a} :: NestedFilters) Prelude.. Lens.coerced
+
+instance Prelude.Hashable NestedFilters where
+  hashWithSalt _salt NestedFilters' {..} =
+    _salt
+      `Prelude.hashWithSalt` nestedPropertyName
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData NestedFilters where
+  rnf NestedFilters' {..} =
+    Prelude.rnf nestedPropertyName
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToJSON NestedFilters where
+  toJSON NestedFilters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("NestedPropertyName" Data..= nestedPropertyName),
+            Prelude.Just ("Filters" Data..= filters)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/NetworkConfig.hs b/gen/Amazonka/SageMaker/Types/NetworkConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NetworkConfig.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NetworkConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NetworkConfig 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 Amazonka.SageMaker.Types.VpcConfig
+
+-- | Networking options for a job, such as network traffic encryption between
+-- containers, whether to allow inbound and outbound network calls to and
+-- from containers, and the VPC subnets and security groups to use for
+-- VPC-enabled jobs.
+--
+-- /See:/ 'newNetworkConfig' smart constructor.
+data NetworkConfig = NetworkConfig'
+  { -- | Whether to encrypt all communications between distributed processing
+    -- jobs. Choose @True@ to encrypt communications. Encryption provides
+    -- greater security for distributed processing jobs, but the processing
+    -- might take longer.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | Whether to allow inbound and outbound network calls to and from the
+    -- containers used for the processing job.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    vpcConfig :: Prelude.Maybe VpcConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkConfig' 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:
+--
+-- 'enableInterContainerTrafficEncryption', 'networkConfig_enableInterContainerTrafficEncryption' - Whether to encrypt all communications between distributed processing
+-- jobs. Choose @True@ to encrypt communications. Encryption provides
+-- greater security for distributed processing jobs, but the processing
+-- might take longer.
+--
+-- 'enableNetworkIsolation', 'networkConfig_enableNetworkIsolation' - Whether to allow inbound and outbound network calls to and from the
+-- containers used for the processing job.
+--
+-- 'vpcConfig', 'networkConfig_vpcConfig' - Undocumented member.
+newNetworkConfig ::
+  NetworkConfig
+newNetworkConfig =
+  NetworkConfig'
+    { enableInterContainerTrafficEncryption =
+        Prelude.Nothing,
+      enableNetworkIsolation = Prelude.Nothing,
+      vpcConfig = Prelude.Nothing
+    }
+
+-- | Whether to encrypt all communications between distributed processing
+-- jobs. Choose @True@ to encrypt communications. Encryption provides
+-- greater security for distributed processing jobs, but the processing
+-- might take longer.
+networkConfig_enableInterContainerTrafficEncryption :: Lens.Lens' NetworkConfig (Prelude.Maybe Prelude.Bool)
+networkConfig_enableInterContainerTrafficEncryption = Lens.lens (\NetworkConfig' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@NetworkConfig' {} a -> s {enableInterContainerTrafficEncryption = a} :: NetworkConfig)
+
+-- | Whether to allow inbound and outbound network calls to and from the
+-- containers used for the processing job.
+networkConfig_enableNetworkIsolation :: Lens.Lens' NetworkConfig (Prelude.Maybe Prelude.Bool)
+networkConfig_enableNetworkIsolation = Lens.lens (\NetworkConfig' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@NetworkConfig' {} a -> s {enableNetworkIsolation = a} :: NetworkConfig)
+
+-- | Undocumented member.
+networkConfig_vpcConfig :: Lens.Lens' NetworkConfig (Prelude.Maybe VpcConfig)
+networkConfig_vpcConfig = Lens.lens (\NetworkConfig' {vpcConfig} -> vpcConfig) (\s@NetworkConfig' {} a -> s {vpcConfig = a} :: NetworkConfig)
+
+instance Data.FromJSON NetworkConfig where
+  parseJSON =
+    Data.withObject
+      "NetworkConfig"
+      ( \x ->
+          NetworkConfig'
+            Prelude.<$> (x Data..:? "EnableInterContainerTrafficEncryption")
+            Prelude.<*> (x Data..:? "EnableNetworkIsolation")
+            Prelude.<*> (x Data..:? "VpcConfig")
+      )
+
+instance Prelude.Hashable NetworkConfig where
+  hashWithSalt _salt NetworkConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableInterContainerTrafficEncryption
+      `Prelude.hashWithSalt` enableNetworkIsolation
+      `Prelude.hashWithSalt` vpcConfig
+
+instance Prelude.NFData NetworkConfig where
+  rnf NetworkConfig' {..} =
+    Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf vpcConfig
+
+instance Data.ToJSON NetworkConfig where
+  toJSON NetworkConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableInterContainerTrafficEncryption" Data..=)
+              Prelude.<$> enableInterContainerTrafficEncryption,
+            ("EnableNetworkIsolation" Data..=)
+              Prelude.<$> enableNetworkIsolation,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceAcceleratorType.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceAcceleratorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceAcceleratorType.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookInstanceAcceleratorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceAcceleratorType
+  ( NotebookInstanceAcceleratorType
+      ( ..,
+        NotebookInstanceAcceleratorType_Ml_eia1_large,
+        NotebookInstanceAcceleratorType_Ml_eia1_medium,
+        NotebookInstanceAcceleratorType_Ml_eia1_xlarge,
+        NotebookInstanceAcceleratorType_Ml_eia2_large,
+        NotebookInstanceAcceleratorType_Ml_eia2_medium,
+        NotebookInstanceAcceleratorType_Ml_eia2_xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookInstanceAcceleratorType = NotebookInstanceAcceleratorType'
+  { fromNotebookInstanceAcceleratorType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookInstanceAcceleratorType_Ml_eia1_large :: NotebookInstanceAcceleratorType
+pattern NotebookInstanceAcceleratorType_Ml_eia1_large = NotebookInstanceAcceleratorType' "ml.eia1.large"
+
+pattern NotebookInstanceAcceleratorType_Ml_eia1_medium :: NotebookInstanceAcceleratorType
+pattern NotebookInstanceAcceleratorType_Ml_eia1_medium = NotebookInstanceAcceleratorType' "ml.eia1.medium"
+
+pattern NotebookInstanceAcceleratorType_Ml_eia1_xlarge :: NotebookInstanceAcceleratorType
+pattern NotebookInstanceAcceleratorType_Ml_eia1_xlarge = NotebookInstanceAcceleratorType' "ml.eia1.xlarge"
+
+pattern NotebookInstanceAcceleratorType_Ml_eia2_large :: NotebookInstanceAcceleratorType
+pattern NotebookInstanceAcceleratorType_Ml_eia2_large = NotebookInstanceAcceleratorType' "ml.eia2.large"
+
+pattern NotebookInstanceAcceleratorType_Ml_eia2_medium :: NotebookInstanceAcceleratorType
+pattern NotebookInstanceAcceleratorType_Ml_eia2_medium = NotebookInstanceAcceleratorType' "ml.eia2.medium"
+
+pattern NotebookInstanceAcceleratorType_Ml_eia2_xlarge :: NotebookInstanceAcceleratorType
+pattern NotebookInstanceAcceleratorType_Ml_eia2_xlarge = NotebookInstanceAcceleratorType' "ml.eia2.xlarge"
+
+{-# COMPLETE
+  NotebookInstanceAcceleratorType_Ml_eia1_large,
+  NotebookInstanceAcceleratorType_Ml_eia1_medium,
+  NotebookInstanceAcceleratorType_Ml_eia1_xlarge,
+  NotebookInstanceAcceleratorType_Ml_eia2_large,
+  NotebookInstanceAcceleratorType_Ml_eia2_medium,
+  NotebookInstanceAcceleratorType_Ml_eia2_xlarge,
+  NotebookInstanceAcceleratorType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSortKey.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortKey
+  ( NotebookInstanceLifecycleConfigSortKey
+      ( ..,
+        NotebookInstanceLifecycleConfigSortKey_CreationTime,
+        NotebookInstanceLifecycleConfigSortKey_LastModifiedTime,
+        NotebookInstanceLifecycleConfigSortKey_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookInstanceLifecycleConfigSortKey = NotebookInstanceLifecycleConfigSortKey'
+  { fromNotebookInstanceLifecycleConfigSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookInstanceLifecycleConfigSortKey_CreationTime :: NotebookInstanceLifecycleConfigSortKey
+pattern NotebookInstanceLifecycleConfigSortKey_CreationTime = NotebookInstanceLifecycleConfigSortKey' "CreationTime"
+
+pattern NotebookInstanceLifecycleConfigSortKey_LastModifiedTime :: NotebookInstanceLifecycleConfigSortKey
+pattern NotebookInstanceLifecycleConfigSortKey_LastModifiedTime = NotebookInstanceLifecycleConfigSortKey' "LastModifiedTime"
+
+pattern NotebookInstanceLifecycleConfigSortKey_Name :: NotebookInstanceLifecycleConfigSortKey
+pattern NotebookInstanceLifecycleConfigSortKey_Name = NotebookInstanceLifecycleConfigSortKey' "Name"
+
+{-# COMPLETE
+  NotebookInstanceLifecycleConfigSortKey_CreationTime,
+  NotebookInstanceLifecycleConfigSortKey_LastModifiedTime,
+  NotebookInstanceLifecycleConfigSortKey_Name,
+  NotebookInstanceLifecycleConfigSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSortOrder.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSortOrder
+  ( NotebookInstanceLifecycleConfigSortOrder
+      ( ..,
+        NotebookInstanceLifecycleConfigSortOrder_Ascending,
+        NotebookInstanceLifecycleConfigSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookInstanceLifecycleConfigSortOrder = NotebookInstanceLifecycleConfigSortOrder'
+  { fromNotebookInstanceLifecycleConfigSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookInstanceLifecycleConfigSortOrder_Ascending :: NotebookInstanceLifecycleConfigSortOrder
+pattern NotebookInstanceLifecycleConfigSortOrder_Ascending = NotebookInstanceLifecycleConfigSortOrder' "Ascending"
+
+pattern NotebookInstanceLifecycleConfigSortOrder_Descending :: NotebookInstanceLifecycleConfigSortOrder
+pattern NotebookInstanceLifecycleConfigSortOrder_Descending = NotebookInstanceLifecycleConfigSortOrder' "Descending"
+
+{-# COMPLETE
+  NotebookInstanceLifecycleConfigSortOrder_Ascending,
+  NotebookInstanceLifecycleConfigSortOrder_Descending,
+  NotebookInstanceLifecycleConfigSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSummary.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleConfigSummary.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NotebookInstanceLifecycleConfigSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceLifecycleConfigSummary 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
+
+-- | Provides a summary of a notebook instance lifecycle configuration.
+--
+-- /See:/ 'newNotebookInstanceLifecycleConfigSummary' smart constructor.
+data NotebookInstanceLifecycleConfigSummary = NotebookInstanceLifecycleConfigSummary'
+  { -- | A timestamp that tells when the lifecycle configuration was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | A timestamp that tells when the lifecycle configuration was last
+    -- modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the lifecycle configuration.
+    notebookInstanceLifecycleConfigName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the lifecycle configuration.
+    notebookInstanceLifecycleConfigArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotebookInstanceLifecycleConfigSummary' 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:
+--
+-- 'creationTime', 'notebookInstanceLifecycleConfigSummary_creationTime' - A timestamp that tells when the lifecycle configuration was created.
+--
+-- 'lastModifiedTime', 'notebookInstanceLifecycleConfigSummary_lastModifiedTime' - A timestamp that tells when the lifecycle configuration was last
+-- modified.
+--
+-- 'notebookInstanceLifecycleConfigName', 'notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
+--
+-- 'notebookInstanceLifecycleConfigArn', 'notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigArn' - The Amazon Resource Name (ARN) of the lifecycle configuration.
+newNotebookInstanceLifecycleConfigSummary ::
+  -- | 'notebookInstanceLifecycleConfigName'
+  Prelude.Text ->
+  -- | 'notebookInstanceLifecycleConfigArn'
+  Prelude.Text ->
+  NotebookInstanceLifecycleConfigSummary
+newNotebookInstanceLifecycleConfigSummary
+  pNotebookInstanceLifecycleConfigName_
+  pNotebookInstanceLifecycleConfigArn_ =
+    NotebookInstanceLifecycleConfigSummary'
+      { creationTime =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        notebookInstanceLifecycleConfigName =
+          pNotebookInstanceLifecycleConfigName_,
+        notebookInstanceLifecycleConfigArn =
+          pNotebookInstanceLifecycleConfigArn_
+      }
+
+-- | A timestamp that tells when the lifecycle configuration was created.
+notebookInstanceLifecycleConfigSummary_creationTime :: Lens.Lens' NotebookInstanceLifecycleConfigSummary (Prelude.Maybe Prelude.UTCTime)
+notebookInstanceLifecycleConfigSummary_creationTime = Lens.lens (\NotebookInstanceLifecycleConfigSummary' {creationTime} -> creationTime) (\s@NotebookInstanceLifecycleConfigSummary' {} a -> s {creationTime = a} :: NotebookInstanceLifecycleConfigSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A timestamp that tells when the lifecycle configuration was last
+-- modified.
+notebookInstanceLifecycleConfigSummary_lastModifiedTime :: Lens.Lens' NotebookInstanceLifecycleConfigSummary (Prelude.Maybe Prelude.UTCTime)
+notebookInstanceLifecycleConfigSummary_lastModifiedTime = Lens.lens (\NotebookInstanceLifecycleConfigSummary' {lastModifiedTime} -> lastModifiedTime) (\s@NotebookInstanceLifecycleConfigSummary' {} a -> s {lastModifiedTime = a} :: NotebookInstanceLifecycleConfigSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the lifecycle configuration.
+notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigName :: Lens.Lens' NotebookInstanceLifecycleConfigSummary Prelude.Text
+notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigName = Lens.lens (\NotebookInstanceLifecycleConfigSummary' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@NotebookInstanceLifecycleConfigSummary' {} a -> s {notebookInstanceLifecycleConfigName = a} :: NotebookInstanceLifecycleConfigSummary)
+
+-- | The Amazon Resource Name (ARN) of the lifecycle configuration.
+notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigArn :: Lens.Lens' NotebookInstanceLifecycleConfigSummary Prelude.Text
+notebookInstanceLifecycleConfigSummary_notebookInstanceLifecycleConfigArn = Lens.lens (\NotebookInstanceLifecycleConfigSummary' {notebookInstanceLifecycleConfigArn} -> notebookInstanceLifecycleConfigArn) (\s@NotebookInstanceLifecycleConfigSummary' {} a -> s {notebookInstanceLifecycleConfigArn = a} :: NotebookInstanceLifecycleConfigSummary)
+
+instance
+  Data.FromJSON
+    NotebookInstanceLifecycleConfigSummary
+  where
+  parseJSON =
+    Data.withObject
+      "NotebookInstanceLifecycleConfigSummary"
+      ( \x ->
+          NotebookInstanceLifecycleConfigSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..: "NotebookInstanceLifecycleConfigName")
+            Prelude.<*> (x Data..: "NotebookInstanceLifecycleConfigArn")
+      )
+
+instance
+  Prelude.Hashable
+    NotebookInstanceLifecycleConfigSummary
+  where
+  hashWithSalt
+    _salt
+    NotebookInstanceLifecycleConfigSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` lastModifiedTime
+        `Prelude.hashWithSalt` notebookInstanceLifecycleConfigName
+        `Prelude.hashWithSalt` notebookInstanceLifecycleConfigArn
+
+instance
+  Prelude.NFData
+    NotebookInstanceLifecycleConfigSummary
+  where
+  rnf NotebookInstanceLifecycleConfigSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigName
+      `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigArn
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleHook.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleHook.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceLifecycleHook.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NotebookInstanceLifecycleHook
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceLifecycleHook 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
+
+-- | Contains the notebook instance lifecycle configuration script.
+--
+-- Each lifecycle configuration script has a limit of 16384 characters.
+--
+-- The value of the @$PATH@ environment variable that is available to both
+-- scripts is @\/sbin:bin:\/usr\/sbin:\/usr\/bin@.
+--
+-- View CloudWatch Logs for notebook instance lifecycle configurations in
+-- log group @\/aws\/sagemaker\/NotebookInstances@ in log stream
+-- @[notebook-instance-name]\/[LifecycleConfigHook]@.
+--
+-- Lifecycle configuration scripts cannot run for longer than 5 minutes. If
+-- a script runs for longer than 5 minutes, it fails and the notebook
+-- instance is not created or started.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+--
+-- /See:/ 'newNotebookInstanceLifecycleHook' smart constructor.
+data NotebookInstanceLifecycleHook = NotebookInstanceLifecycleHook'
+  { -- | A base64-encoded string that contains a shell script for a notebook
+    -- instance lifecycle configuration.
+    content :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotebookInstanceLifecycleHook' 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:
+--
+-- 'content', 'notebookInstanceLifecycleHook_content' - A base64-encoded string that contains a shell script for a notebook
+-- instance lifecycle configuration.
+newNotebookInstanceLifecycleHook ::
+  NotebookInstanceLifecycleHook
+newNotebookInstanceLifecycleHook =
+  NotebookInstanceLifecycleHook'
+    { content =
+        Prelude.Nothing
+    }
+
+-- | A base64-encoded string that contains a shell script for a notebook
+-- instance lifecycle configuration.
+notebookInstanceLifecycleHook_content :: Lens.Lens' NotebookInstanceLifecycleHook (Prelude.Maybe Prelude.Text)
+notebookInstanceLifecycleHook_content = Lens.lens (\NotebookInstanceLifecycleHook' {content} -> content) (\s@NotebookInstanceLifecycleHook' {} a -> s {content = a} :: NotebookInstanceLifecycleHook)
+
+instance Data.FromJSON NotebookInstanceLifecycleHook where
+  parseJSON =
+    Data.withObject
+      "NotebookInstanceLifecycleHook"
+      ( \x ->
+          NotebookInstanceLifecycleHook'
+            Prelude.<$> (x Data..:? "Content")
+      )
+
+instance
+  Prelude.Hashable
+    NotebookInstanceLifecycleHook
+  where
+  hashWithSalt _salt NotebookInstanceLifecycleHook' {..} =
+    _salt `Prelude.hashWithSalt` content
+
+instance Prelude.NFData NotebookInstanceLifecycleHook where
+  rnf NotebookInstanceLifecycleHook' {..} =
+    Prelude.rnf content
+
+instance Data.ToJSON NotebookInstanceLifecycleHook where
+  toJSON NotebookInstanceLifecycleHook' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Content" Data..=) Prelude.<$> content]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceSortKey.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookInstanceSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceSortKey
+  ( NotebookInstanceSortKey
+      ( ..,
+        NotebookInstanceSortKey_CreationTime,
+        NotebookInstanceSortKey_Name,
+        NotebookInstanceSortKey_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookInstanceSortKey = NotebookInstanceSortKey'
+  { fromNotebookInstanceSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookInstanceSortKey_CreationTime :: NotebookInstanceSortKey
+pattern NotebookInstanceSortKey_CreationTime = NotebookInstanceSortKey' "CreationTime"
+
+pattern NotebookInstanceSortKey_Name :: NotebookInstanceSortKey
+pattern NotebookInstanceSortKey_Name = NotebookInstanceSortKey' "Name"
+
+pattern NotebookInstanceSortKey_Status :: NotebookInstanceSortKey
+pattern NotebookInstanceSortKey_Status = NotebookInstanceSortKey' "Status"
+
+{-# COMPLETE
+  NotebookInstanceSortKey_CreationTime,
+  NotebookInstanceSortKey_Name,
+  NotebookInstanceSortKey_Status,
+  NotebookInstanceSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceSortOrder.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookInstanceSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceSortOrder
+  ( NotebookInstanceSortOrder
+      ( ..,
+        NotebookInstanceSortOrder_Ascending,
+        NotebookInstanceSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookInstanceSortOrder = NotebookInstanceSortOrder'
+  { fromNotebookInstanceSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookInstanceSortOrder_Ascending :: NotebookInstanceSortOrder
+pattern NotebookInstanceSortOrder_Ascending = NotebookInstanceSortOrder' "Ascending"
+
+pattern NotebookInstanceSortOrder_Descending :: NotebookInstanceSortOrder
+pattern NotebookInstanceSortOrder_Descending = NotebookInstanceSortOrder' "Descending"
+
+{-# COMPLETE
+  NotebookInstanceSortOrder_Ascending,
+  NotebookInstanceSortOrder_Descending,
+  NotebookInstanceSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceStatus.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookInstanceStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceStatus
+  ( NotebookInstanceStatus
+      ( ..,
+        NotebookInstanceStatus_Deleting,
+        NotebookInstanceStatus_Failed,
+        NotebookInstanceStatus_InService,
+        NotebookInstanceStatus_Pending,
+        NotebookInstanceStatus_Stopped,
+        NotebookInstanceStatus_Stopping,
+        NotebookInstanceStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookInstanceStatus = NotebookInstanceStatus'
+  { fromNotebookInstanceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookInstanceStatus_Deleting :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_Deleting = NotebookInstanceStatus' "Deleting"
+
+pattern NotebookInstanceStatus_Failed :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_Failed = NotebookInstanceStatus' "Failed"
+
+pattern NotebookInstanceStatus_InService :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_InService = NotebookInstanceStatus' "InService"
+
+pattern NotebookInstanceStatus_Pending :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_Pending = NotebookInstanceStatus' "Pending"
+
+pattern NotebookInstanceStatus_Stopped :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_Stopped = NotebookInstanceStatus' "Stopped"
+
+pattern NotebookInstanceStatus_Stopping :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_Stopping = NotebookInstanceStatus' "Stopping"
+
+pattern NotebookInstanceStatus_Updating :: NotebookInstanceStatus
+pattern NotebookInstanceStatus_Updating = NotebookInstanceStatus' "Updating"
+
+{-# COMPLETE
+  NotebookInstanceStatus_Deleting,
+  NotebookInstanceStatus_Failed,
+  NotebookInstanceStatus_InService,
+  NotebookInstanceStatus_Pending,
+  NotebookInstanceStatus_Stopped,
+  NotebookInstanceStatus_Stopping,
+  NotebookInstanceStatus_Updating,
+  NotebookInstanceStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotebookInstanceSummary.hs b/gen/Amazonka/SageMaker/Types/NotebookInstanceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookInstanceSummary.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NotebookInstanceSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookInstanceSummary 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 Amazonka.SageMaker.Types.InstanceType
+import Amazonka.SageMaker.Types.NotebookInstanceStatus
+
+-- | Provides summary information for an SageMaker notebook instance.
+--
+-- /See:/ 'newNotebookInstanceSummary' smart constructor.
+data NotebookInstanceSummary = NotebookInstanceSummary'
+  { -- | An array of up to three Git repositories associated with the notebook
+    -- instance. These can be either the names of Git repositories stored as
+    -- resources in your account, or the URL of Git repositories in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. These repositories are cloned at the
+    -- same level as the default repository of your notebook instance. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    additionalCodeRepositories :: Prelude.Maybe [Prelude.Text],
+    -- | A timestamp that shows when the notebook instance was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Git repository associated with the notebook instance as its default
+    -- code repository. This can be either the name of a Git repository stored
+    -- as a resource in your account, or the URL of a Git repository in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. When you open a notebook instance, it
+    -- opens in the directory that contains this repository. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    defaultCodeRepository :: Prelude.Maybe Prelude.Text,
+    -- | The type of ML compute instance that the notebook instance is running
+    -- on.
+    instanceType :: Prelude.Maybe InstanceType,
+    -- | A timestamp that shows when the notebook instance was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of a notebook instance lifecycle configuration associated with
+    -- this notebook instance.
+    --
+    -- For information about notebook instance lifestyle configurations, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+    notebookInstanceLifecycleConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the notebook instance.
+    notebookInstanceStatus :: Prelude.Maybe NotebookInstanceStatus,
+    -- | The URL that you use to connect to the Jupyter notebook running in your
+    -- notebook instance.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | The name of the notebook instance that you want a summary for.
+    notebookInstanceName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the notebook instance.
+    notebookInstanceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotebookInstanceSummary' 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:
+--
+-- 'additionalCodeRepositories', 'notebookInstanceSummary_additionalCodeRepositories' - An array of up to three Git repositories associated with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'creationTime', 'notebookInstanceSummary_creationTime' - A timestamp that shows when the notebook instance was created.
+--
+-- 'defaultCodeRepository', 'notebookInstanceSummary_defaultCodeRepository' - The Git repository associated with the notebook instance as its default
+-- code repository. This can be either the name of a Git repository stored
+-- as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'instanceType', 'notebookInstanceSummary_instanceType' - The type of ML compute instance that the notebook instance is running
+-- on.
+--
+-- 'lastModifiedTime', 'notebookInstanceSummary_lastModifiedTime' - A timestamp that shows when the notebook instance was last modified.
+--
+-- 'notebookInstanceLifecycleConfigName', 'notebookInstanceSummary_notebookInstanceLifecycleConfigName' - The name of a notebook instance lifecycle configuration associated with
+-- this notebook instance.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+--
+-- 'notebookInstanceStatus', 'notebookInstanceSummary_notebookInstanceStatus' - The status of the notebook instance.
+--
+-- 'url', 'notebookInstanceSummary_url' - The URL that you use to connect to the Jupyter notebook running in your
+-- notebook instance.
+--
+-- 'notebookInstanceName', 'notebookInstanceSummary_notebookInstanceName' - The name of the notebook instance that you want a summary for.
+--
+-- 'notebookInstanceArn', 'notebookInstanceSummary_notebookInstanceArn' - The Amazon Resource Name (ARN) of the notebook instance.
+newNotebookInstanceSummary ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  -- | 'notebookInstanceArn'
+  Prelude.Text ->
+  NotebookInstanceSummary
+newNotebookInstanceSummary
+  pNotebookInstanceName_
+  pNotebookInstanceArn_ =
+    NotebookInstanceSummary'
+      { additionalCodeRepositories =
+          Prelude.Nothing,
+        creationTime = Prelude.Nothing,
+        defaultCodeRepository = Prelude.Nothing,
+        instanceType = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        notebookInstanceLifecycleConfigName =
+          Prelude.Nothing,
+        notebookInstanceStatus = Prelude.Nothing,
+        url = Prelude.Nothing,
+        notebookInstanceName = pNotebookInstanceName_,
+        notebookInstanceArn = pNotebookInstanceArn_
+      }
+
+-- | An array of up to three Git repositories associated with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+notebookInstanceSummary_additionalCodeRepositories :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe [Prelude.Text])
+notebookInstanceSummary_additionalCodeRepositories = Lens.lens (\NotebookInstanceSummary' {additionalCodeRepositories} -> additionalCodeRepositories) (\s@NotebookInstanceSummary' {} a -> s {additionalCodeRepositories = a} :: NotebookInstanceSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | A timestamp that shows when the notebook instance was created.
+notebookInstanceSummary_creationTime :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe Prelude.UTCTime)
+notebookInstanceSummary_creationTime = Lens.lens (\NotebookInstanceSummary' {creationTime} -> creationTime) (\s@NotebookInstanceSummary' {} a -> s {creationTime = a} :: NotebookInstanceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Git repository associated with the notebook instance as its default
+-- code repository. This can be either the name of a Git repository stored
+-- as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+notebookInstanceSummary_defaultCodeRepository :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe Prelude.Text)
+notebookInstanceSummary_defaultCodeRepository = Lens.lens (\NotebookInstanceSummary' {defaultCodeRepository} -> defaultCodeRepository) (\s@NotebookInstanceSummary' {} a -> s {defaultCodeRepository = a} :: NotebookInstanceSummary)
+
+-- | The type of ML compute instance that the notebook instance is running
+-- on.
+notebookInstanceSummary_instanceType :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe InstanceType)
+notebookInstanceSummary_instanceType = Lens.lens (\NotebookInstanceSummary' {instanceType} -> instanceType) (\s@NotebookInstanceSummary' {} a -> s {instanceType = a} :: NotebookInstanceSummary)
+
+-- | A timestamp that shows when the notebook instance was last modified.
+notebookInstanceSummary_lastModifiedTime :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe Prelude.UTCTime)
+notebookInstanceSummary_lastModifiedTime = Lens.lens (\NotebookInstanceSummary' {lastModifiedTime} -> lastModifiedTime) (\s@NotebookInstanceSummary' {} a -> s {lastModifiedTime = a} :: NotebookInstanceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of a notebook instance lifecycle configuration associated with
+-- this notebook instance.
+--
+-- For information about notebook instance lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+notebookInstanceSummary_notebookInstanceLifecycleConfigName :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe Prelude.Text)
+notebookInstanceSummary_notebookInstanceLifecycleConfigName = Lens.lens (\NotebookInstanceSummary' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@NotebookInstanceSummary' {} a -> s {notebookInstanceLifecycleConfigName = a} :: NotebookInstanceSummary)
+
+-- | The status of the notebook instance.
+notebookInstanceSummary_notebookInstanceStatus :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe NotebookInstanceStatus)
+notebookInstanceSummary_notebookInstanceStatus = Lens.lens (\NotebookInstanceSummary' {notebookInstanceStatus} -> notebookInstanceStatus) (\s@NotebookInstanceSummary' {} a -> s {notebookInstanceStatus = a} :: NotebookInstanceSummary)
+
+-- | The URL that you use to connect to the Jupyter notebook running in your
+-- notebook instance.
+notebookInstanceSummary_url :: Lens.Lens' NotebookInstanceSummary (Prelude.Maybe Prelude.Text)
+notebookInstanceSummary_url = Lens.lens (\NotebookInstanceSummary' {url} -> url) (\s@NotebookInstanceSummary' {} a -> s {url = a} :: NotebookInstanceSummary)
+
+-- | The name of the notebook instance that you want a summary for.
+notebookInstanceSummary_notebookInstanceName :: Lens.Lens' NotebookInstanceSummary Prelude.Text
+notebookInstanceSummary_notebookInstanceName = Lens.lens (\NotebookInstanceSummary' {notebookInstanceName} -> notebookInstanceName) (\s@NotebookInstanceSummary' {} a -> s {notebookInstanceName = a} :: NotebookInstanceSummary)
+
+-- | The Amazon Resource Name (ARN) of the notebook instance.
+notebookInstanceSummary_notebookInstanceArn :: Lens.Lens' NotebookInstanceSummary Prelude.Text
+notebookInstanceSummary_notebookInstanceArn = Lens.lens (\NotebookInstanceSummary' {notebookInstanceArn} -> notebookInstanceArn) (\s@NotebookInstanceSummary' {} a -> s {notebookInstanceArn = a} :: NotebookInstanceSummary)
+
+instance Data.FromJSON NotebookInstanceSummary where
+  parseJSON =
+    Data.withObject
+      "NotebookInstanceSummary"
+      ( \x ->
+          NotebookInstanceSummary'
+            Prelude.<$> ( x
+                            Data..:? "AdditionalCodeRepositories"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DefaultCodeRepository")
+            Prelude.<*> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "NotebookInstanceLifecycleConfigName")
+            Prelude.<*> (x Data..:? "NotebookInstanceStatus")
+            Prelude.<*> (x Data..:? "Url")
+            Prelude.<*> (x Data..: "NotebookInstanceName")
+            Prelude.<*> (x Data..: "NotebookInstanceArn")
+      )
+
+instance Prelude.Hashable NotebookInstanceSummary where
+  hashWithSalt _salt NotebookInstanceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalCodeRepositories
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` defaultCodeRepository
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` notebookInstanceLifecycleConfigName
+      `Prelude.hashWithSalt` notebookInstanceStatus
+      `Prelude.hashWithSalt` url
+      `Prelude.hashWithSalt` notebookInstanceName
+      `Prelude.hashWithSalt` notebookInstanceArn
+
+instance Prelude.NFData NotebookInstanceSummary where
+  rnf NotebookInstanceSummary' {..} =
+    Prelude.rnf additionalCodeRepositories
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf defaultCodeRepository
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigName
+      `Prelude.seq` Prelude.rnf notebookInstanceStatus
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf notebookInstanceName
+      `Prelude.seq` Prelude.rnf notebookInstanceArn
diff --git a/gen/Amazonka/SageMaker/Types/NotebookOutputOption.hs b/gen/Amazonka/SageMaker/Types/NotebookOutputOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotebookOutputOption.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.NotebookOutputOption
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotebookOutputOption
+  ( NotebookOutputOption
+      ( ..,
+        NotebookOutputOption_Allowed,
+        NotebookOutputOption_Disabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotebookOutputOption = NotebookOutputOption'
+  { fromNotebookOutputOption ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotebookOutputOption_Allowed :: NotebookOutputOption
+pattern NotebookOutputOption_Allowed = NotebookOutputOption' "Allowed"
+
+pattern NotebookOutputOption_Disabled :: NotebookOutputOption
+pattern NotebookOutputOption_Disabled = NotebookOutputOption' "Disabled"
+
+{-# COMPLETE
+  NotebookOutputOption_Allowed,
+  NotebookOutputOption_Disabled,
+  NotebookOutputOption'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/NotificationConfiguration.hs b/gen/Amazonka/SageMaker/Types/NotificationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/NotificationConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.NotificationConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.NotificationConfiguration 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
+
+-- | Configures Amazon SNS notifications of available or expiring work items
+-- for work teams.
+--
+-- /See:/ 'newNotificationConfiguration' smart constructor.
+data NotificationConfiguration = NotificationConfiguration'
+  { -- | The ARN for the Amazon SNS topic to which notifications should be
+    -- published.
+    notificationTopicArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotificationConfiguration' 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:
+--
+-- 'notificationTopicArn', 'notificationConfiguration_notificationTopicArn' - The ARN for the Amazon SNS topic to which notifications should be
+-- published.
+newNotificationConfiguration ::
+  NotificationConfiguration
+newNotificationConfiguration =
+  NotificationConfiguration'
+    { notificationTopicArn =
+        Prelude.Nothing
+    }
+
+-- | The ARN for the Amazon SNS topic to which notifications should be
+-- published.
+notificationConfiguration_notificationTopicArn :: Lens.Lens' NotificationConfiguration (Prelude.Maybe Prelude.Text)
+notificationConfiguration_notificationTopicArn = Lens.lens (\NotificationConfiguration' {notificationTopicArn} -> notificationTopicArn) (\s@NotificationConfiguration' {} a -> s {notificationTopicArn = a} :: NotificationConfiguration)
+
+instance Data.FromJSON NotificationConfiguration where
+  parseJSON =
+    Data.withObject
+      "NotificationConfiguration"
+      ( \x ->
+          NotificationConfiguration'
+            Prelude.<$> (x Data..:? "NotificationTopicArn")
+      )
+
+instance Prelude.Hashable NotificationConfiguration where
+  hashWithSalt _salt NotificationConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` notificationTopicArn
+
+instance Prelude.NFData NotificationConfiguration where
+  rnf NotificationConfiguration' {..} =
+    Prelude.rnf notificationTopicArn
+
+instance Data.ToJSON NotificationConfiguration where
+  toJSON NotificationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NotificationTopicArn" Data..=)
+              Prelude.<$> notificationTopicArn
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ObjectiveStatus.hs b/gen/Amazonka/SageMaker/Types/ObjectiveStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ObjectiveStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ObjectiveStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ObjectiveStatus
+  ( ObjectiveStatus
+      ( ..,
+        ObjectiveStatus_Failed,
+        ObjectiveStatus_Pending,
+        ObjectiveStatus_Succeeded
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ObjectiveStatus = ObjectiveStatus'
+  { fromObjectiveStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ObjectiveStatus_Failed :: ObjectiveStatus
+pattern ObjectiveStatus_Failed = ObjectiveStatus' "Failed"
+
+pattern ObjectiveStatus_Pending :: ObjectiveStatus
+pattern ObjectiveStatus_Pending = ObjectiveStatus' "Pending"
+
+pattern ObjectiveStatus_Succeeded :: ObjectiveStatus
+pattern ObjectiveStatus_Succeeded = ObjectiveStatus' "Succeeded"
+
+{-# COMPLETE
+  ObjectiveStatus_Failed,
+  ObjectiveStatus_Pending,
+  ObjectiveStatus_Succeeded,
+  ObjectiveStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ObjectiveStatusCounters.hs b/gen/Amazonka/SageMaker/Types/ObjectiveStatusCounters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ObjectiveStatusCounters.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ObjectiveStatusCounters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ObjectiveStatusCounters 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
+
+-- | Specifies the number of training jobs that this hyperparameter tuning
+-- job launched, categorized by the status of their objective metric. The
+-- objective metric status shows whether the final objective metric for the
+-- training job has been evaluated by the tuning job and used in the
+-- hyperparameter tuning process.
+--
+-- /See:/ 'newObjectiveStatusCounters' smart constructor.
+data ObjectiveStatusCounters = ObjectiveStatusCounters'
+  { -- | The number of training jobs whose final objective metric was not
+    -- evaluated and used in the hyperparameter tuning process. This typically
+    -- occurs when the training job failed or did not emit an objective metric.
+    failed :: Prelude.Maybe Prelude.Natural,
+    -- | The number of training jobs that are in progress and pending evaluation
+    -- of their final objective metric.
+    pending :: Prelude.Maybe Prelude.Natural,
+    -- | The number of training jobs whose final objective metric was evaluated
+    -- by the hyperparameter tuning job and used in the hyperparameter tuning
+    -- process.
+    succeeded :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ObjectiveStatusCounters' 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:
+--
+-- 'failed', 'objectiveStatusCounters_failed' - The number of training jobs whose final objective metric was not
+-- evaluated and used in the hyperparameter tuning process. This typically
+-- occurs when the training job failed or did not emit an objective metric.
+--
+-- 'pending', 'objectiveStatusCounters_pending' - The number of training jobs that are in progress and pending evaluation
+-- of their final objective metric.
+--
+-- 'succeeded', 'objectiveStatusCounters_succeeded' - The number of training jobs whose final objective metric was evaluated
+-- by the hyperparameter tuning job and used in the hyperparameter tuning
+-- process.
+newObjectiveStatusCounters ::
+  ObjectiveStatusCounters
+newObjectiveStatusCounters =
+  ObjectiveStatusCounters'
+    { failed = Prelude.Nothing,
+      pending = Prelude.Nothing,
+      succeeded = Prelude.Nothing
+    }
+
+-- | The number of training jobs whose final objective metric was not
+-- evaluated and used in the hyperparameter tuning process. This typically
+-- occurs when the training job failed or did not emit an objective metric.
+objectiveStatusCounters_failed :: Lens.Lens' ObjectiveStatusCounters (Prelude.Maybe Prelude.Natural)
+objectiveStatusCounters_failed = Lens.lens (\ObjectiveStatusCounters' {failed} -> failed) (\s@ObjectiveStatusCounters' {} a -> s {failed = a} :: ObjectiveStatusCounters)
+
+-- | The number of training jobs that are in progress and pending evaluation
+-- of their final objective metric.
+objectiveStatusCounters_pending :: Lens.Lens' ObjectiveStatusCounters (Prelude.Maybe Prelude.Natural)
+objectiveStatusCounters_pending = Lens.lens (\ObjectiveStatusCounters' {pending} -> pending) (\s@ObjectiveStatusCounters' {} a -> s {pending = a} :: ObjectiveStatusCounters)
+
+-- | The number of training jobs whose final objective metric was evaluated
+-- by the hyperparameter tuning job and used in the hyperparameter tuning
+-- process.
+objectiveStatusCounters_succeeded :: Lens.Lens' ObjectiveStatusCounters (Prelude.Maybe Prelude.Natural)
+objectiveStatusCounters_succeeded = Lens.lens (\ObjectiveStatusCounters' {succeeded} -> succeeded) (\s@ObjectiveStatusCounters' {} a -> s {succeeded = a} :: ObjectiveStatusCounters)
+
+instance Data.FromJSON ObjectiveStatusCounters where
+  parseJSON =
+    Data.withObject
+      "ObjectiveStatusCounters"
+      ( \x ->
+          ObjectiveStatusCounters'
+            Prelude.<$> (x Data..:? "Failed")
+            Prelude.<*> (x Data..:? "Pending")
+            Prelude.<*> (x Data..:? "Succeeded")
+      )
+
+instance Prelude.Hashable ObjectiveStatusCounters where
+  hashWithSalt _salt ObjectiveStatusCounters' {..} =
+    _salt
+      `Prelude.hashWithSalt` failed
+      `Prelude.hashWithSalt` pending
+      `Prelude.hashWithSalt` succeeded
+
+instance Prelude.NFData ObjectiveStatusCounters where
+  rnf ObjectiveStatusCounters' {..} =
+    Prelude.rnf failed
+      `Prelude.seq` Prelude.rnf pending
+      `Prelude.seq` Prelude.rnf succeeded
diff --git a/gen/Amazonka/SageMaker/Types/OfflineStoreConfig.hs b/gen/Amazonka/SageMaker/Types/OfflineStoreConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OfflineStoreConfig.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OfflineStoreConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OfflineStoreConfig 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 Amazonka.SageMaker.Types.DataCatalogConfig
+import Amazonka.SageMaker.Types.S3StorageConfig
+import Amazonka.SageMaker.Types.TableFormat
+
+-- | The configuration of an @OfflineStore@.
+--
+-- Provide an @OfflineStoreConfig@ in a request to @CreateFeatureGroup@ to
+-- create an @OfflineStore@.
+--
+-- To encrypt an @OfflineStore@ using at rest data encryption, specify
+-- Amazon Web Services Key Management Service (KMS) key ID, or @KMSKeyId@,
+-- in @S3StorageConfig@.
+--
+-- /See:/ 'newOfflineStoreConfig' smart constructor.
+data OfflineStoreConfig = OfflineStoreConfig'
+  { -- | The meta data of the Glue table that is autogenerated when an
+    -- @OfflineStore@ is created.
+    dataCatalogConfig :: Prelude.Maybe DataCatalogConfig,
+    -- | Set to @True@ to disable the automatic creation of an Amazon Web
+    -- Services Glue table when configuring an @OfflineStore@.
+    disableGlueTableCreation :: Prelude.Maybe Prelude.Bool,
+    -- | Format for the offline store table. Supported formats are Glue (Default)
+    -- and <https://iceberg.apache.org/ Apache Iceberg>.
+    tableFormat :: Prelude.Maybe TableFormat,
+    -- | The Amazon Simple Storage (Amazon S3) location of @OfflineStore@.
+    s3StorageConfig :: S3StorageConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OfflineStoreConfig' 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:
+--
+-- 'dataCatalogConfig', 'offlineStoreConfig_dataCatalogConfig' - The meta data of the Glue table that is autogenerated when an
+-- @OfflineStore@ is created.
+--
+-- 'disableGlueTableCreation', 'offlineStoreConfig_disableGlueTableCreation' - Set to @True@ to disable the automatic creation of an Amazon Web
+-- Services Glue table when configuring an @OfflineStore@.
+--
+-- 'tableFormat', 'offlineStoreConfig_tableFormat' - Format for the offline store table. Supported formats are Glue (Default)
+-- and <https://iceberg.apache.org/ Apache Iceberg>.
+--
+-- 's3StorageConfig', 'offlineStoreConfig_s3StorageConfig' - The Amazon Simple Storage (Amazon S3) location of @OfflineStore@.
+newOfflineStoreConfig ::
+  -- | 's3StorageConfig'
+  S3StorageConfig ->
+  OfflineStoreConfig
+newOfflineStoreConfig pS3StorageConfig_ =
+  OfflineStoreConfig'
+    { dataCatalogConfig =
+        Prelude.Nothing,
+      disableGlueTableCreation = Prelude.Nothing,
+      tableFormat = Prelude.Nothing,
+      s3StorageConfig = pS3StorageConfig_
+    }
+
+-- | The meta data of the Glue table that is autogenerated when an
+-- @OfflineStore@ is created.
+offlineStoreConfig_dataCatalogConfig :: Lens.Lens' OfflineStoreConfig (Prelude.Maybe DataCatalogConfig)
+offlineStoreConfig_dataCatalogConfig = Lens.lens (\OfflineStoreConfig' {dataCatalogConfig} -> dataCatalogConfig) (\s@OfflineStoreConfig' {} a -> s {dataCatalogConfig = a} :: OfflineStoreConfig)
+
+-- | Set to @True@ to disable the automatic creation of an Amazon Web
+-- Services Glue table when configuring an @OfflineStore@.
+offlineStoreConfig_disableGlueTableCreation :: Lens.Lens' OfflineStoreConfig (Prelude.Maybe Prelude.Bool)
+offlineStoreConfig_disableGlueTableCreation = Lens.lens (\OfflineStoreConfig' {disableGlueTableCreation} -> disableGlueTableCreation) (\s@OfflineStoreConfig' {} a -> s {disableGlueTableCreation = a} :: OfflineStoreConfig)
+
+-- | Format for the offline store table. Supported formats are Glue (Default)
+-- and <https://iceberg.apache.org/ Apache Iceberg>.
+offlineStoreConfig_tableFormat :: Lens.Lens' OfflineStoreConfig (Prelude.Maybe TableFormat)
+offlineStoreConfig_tableFormat = Lens.lens (\OfflineStoreConfig' {tableFormat} -> tableFormat) (\s@OfflineStoreConfig' {} a -> s {tableFormat = a} :: OfflineStoreConfig)
+
+-- | The Amazon Simple Storage (Amazon S3) location of @OfflineStore@.
+offlineStoreConfig_s3StorageConfig :: Lens.Lens' OfflineStoreConfig S3StorageConfig
+offlineStoreConfig_s3StorageConfig = Lens.lens (\OfflineStoreConfig' {s3StorageConfig} -> s3StorageConfig) (\s@OfflineStoreConfig' {} a -> s {s3StorageConfig = a} :: OfflineStoreConfig)
+
+instance Data.FromJSON OfflineStoreConfig where
+  parseJSON =
+    Data.withObject
+      "OfflineStoreConfig"
+      ( \x ->
+          OfflineStoreConfig'
+            Prelude.<$> (x Data..:? "DataCatalogConfig")
+            Prelude.<*> (x Data..:? "DisableGlueTableCreation")
+            Prelude.<*> (x Data..:? "TableFormat")
+            Prelude.<*> (x Data..: "S3StorageConfig")
+      )
+
+instance Prelude.Hashable OfflineStoreConfig where
+  hashWithSalt _salt OfflineStoreConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataCatalogConfig
+      `Prelude.hashWithSalt` disableGlueTableCreation
+      `Prelude.hashWithSalt` tableFormat
+      `Prelude.hashWithSalt` s3StorageConfig
+
+instance Prelude.NFData OfflineStoreConfig where
+  rnf OfflineStoreConfig' {..} =
+    Prelude.rnf dataCatalogConfig
+      `Prelude.seq` Prelude.rnf disableGlueTableCreation
+      `Prelude.seq` Prelude.rnf tableFormat
+      `Prelude.seq` Prelude.rnf s3StorageConfig
+
+instance Data.ToJSON OfflineStoreConfig where
+  toJSON OfflineStoreConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataCatalogConfig" Data..=)
+              Prelude.<$> dataCatalogConfig,
+            ("DisableGlueTableCreation" Data..=)
+              Prelude.<$> disableGlueTableCreation,
+            ("TableFormat" Data..=) Prelude.<$> tableFormat,
+            Prelude.Just
+              ("S3StorageConfig" Data..= s3StorageConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/OfflineStoreStatus.hs b/gen/Amazonka/SageMaker/Types/OfflineStoreStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OfflineStoreStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OfflineStoreStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OfflineStoreStatus 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 Amazonka.SageMaker.Types.OfflineStoreStatusValue
+
+-- | The status of @OfflineStore@.
+--
+-- /See:/ 'newOfflineStoreStatus' smart constructor.
+data OfflineStoreStatus = OfflineStoreStatus'
+  { -- | The justification for why the OfflineStoreStatus is Blocked (if
+    -- applicable).
+    blockedReason :: Prelude.Maybe Prelude.Text,
+    -- | An @OfflineStore@ status.
+    status :: OfflineStoreStatusValue
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OfflineStoreStatus' 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:
+--
+-- 'blockedReason', 'offlineStoreStatus_blockedReason' - The justification for why the OfflineStoreStatus is Blocked (if
+-- applicable).
+--
+-- 'status', 'offlineStoreStatus_status' - An @OfflineStore@ status.
+newOfflineStoreStatus ::
+  -- | 'status'
+  OfflineStoreStatusValue ->
+  OfflineStoreStatus
+newOfflineStoreStatus pStatus_ =
+  OfflineStoreStatus'
+    { blockedReason =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The justification for why the OfflineStoreStatus is Blocked (if
+-- applicable).
+offlineStoreStatus_blockedReason :: Lens.Lens' OfflineStoreStatus (Prelude.Maybe Prelude.Text)
+offlineStoreStatus_blockedReason = Lens.lens (\OfflineStoreStatus' {blockedReason} -> blockedReason) (\s@OfflineStoreStatus' {} a -> s {blockedReason = a} :: OfflineStoreStatus)
+
+-- | An @OfflineStore@ status.
+offlineStoreStatus_status :: Lens.Lens' OfflineStoreStatus OfflineStoreStatusValue
+offlineStoreStatus_status = Lens.lens (\OfflineStoreStatus' {status} -> status) (\s@OfflineStoreStatus' {} a -> s {status = a} :: OfflineStoreStatus)
+
+instance Data.FromJSON OfflineStoreStatus where
+  parseJSON =
+    Data.withObject
+      "OfflineStoreStatus"
+      ( \x ->
+          OfflineStoreStatus'
+            Prelude.<$> (x Data..:? "BlockedReason")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable OfflineStoreStatus where
+  hashWithSalt _salt OfflineStoreStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` blockedReason
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData OfflineStoreStatus where
+  rnf OfflineStoreStatus' {..} =
+    Prelude.rnf blockedReason
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/OfflineStoreStatusValue.hs b/gen/Amazonka/SageMaker/Types/OfflineStoreStatusValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OfflineStoreStatusValue.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.OfflineStoreStatusValue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OfflineStoreStatusValue
+  ( OfflineStoreStatusValue
+      ( ..,
+        OfflineStoreStatusValue_Active,
+        OfflineStoreStatusValue_Blocked,
+        OfflineStoreStatusValue_Disabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OfflineStoreStatusValue = OfflineStoreStatusValue'
+  { fromOfflineStoreStatusValue ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OfflineStoreStatusValue_Active :: OfflineStoreStatusValue
+pattern OfflineStoreStatusValue_Active = OfflineStoreStatusValue' "Active"
+
+pattern OfflineStoreStatusValue_Blocked :: OfflineStoreStatusValue
+pattern OfflineStoreStatusValue_Blocked = OfflineStoreStatusValue' "Blocked"
+
+pattern OfflineStoreStatusValue_Disabled :: OfflineStoreStatusValue
+pattern OfflineStoreStatusValue_Disabled = OfflineStoreStatusValue' "Disabled"
+
+{-# COMPLETE
+  OfflineStoreStatusValue_Active,
+  OfflineStoreStatusValue_Blocked,
+  OfflineStoreStatusValue_Disabled,
+  OfflineStoreStatusValue'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/OidcConfig.hs b/gen/Amazonka/SageMaker/Types/OidcConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OidcConfig.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OidcConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OidcConfig 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
+
+-- | Use this parameter to configure your OIDC Identity Provider (IdP).
+--
+-- /See:/ 'newOidcConfig' smart constructor.
+data OidcConfig = OidcConfig'
+  { -- | The OIDC IdP client ID used to configure your private workforce.
+    clientId :: Prelude.Text,
+    -- | The OIDC IdP client secret used to configure your private workforce.
+    clientSecret :: Data.Sensitive Prelude.Text,
+    -- | The OIDC IdP issuer used to configure your private workforce.
+    issuer :: Prelude.Text,
+    -- | The OIDC IdP authorization endpoint used to configure your private
+    -- workforce.
+    authorizationEndpoint :: Prelude.Text,
+    -- | The OIDC IdP token endpoint used to configure your private workforce.
+    tokenEndpoint :: Prelude.Text,
+    -- | The OIDC IdP user information endpoint used to configure your private
+    -- workforce.
+    userInfoEndpoint :: Prelude.Text,
+    -- | The OIDC IdP logout endpoint used to configure your private workforce.
+    logoutEndpoint :: Prelude.Text,
+    -- | The OIDC IdP JSON Web Key Set (Jwks) URI used to configure your private
+    -- workforce.
+    jwksUri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OidcConfig' 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:
+--
+-- 'clientId', 'oidcConfig_clientId' - The OIDC IdP client ID used to configure your private workforce.
+--
+-- 'clientSecret', 'oidcConfig_clientSecret' - The OIDC IdP client secret used to configure your private workforce.
+--
+-- 'issuer', 'oidcConfig_issuer' - The OIDC IdP issuer used to configure your private workforce.
+--
+-- 'authorizationEndpoint', 'oidcConfig_authorizationEndpoint' - The OIDC IdP authorization endpoint used to configure your private
+-- workforce.
+--
+-- 'tokenEndpoint', 'oidcConfig_tokenEndpoint' - The OIDC IdP token endpoint used to configure your private workforce.
+--
+-- 'userInfoEndpoint', 'oidcConfig_userInfoEndpoint' - The OIDC IdP user information endpoint used to configure your private
+-- workforce.
+--
+-- 'logoutEndpoint', 'oidcConfig_logoutEndpoint' - The OIDC IdP logout endpoint used to configure your private workforce.
+--
+-- 'jwksUri', 'oidcConfig_jwksUri' - The OIDC IdP JSON Web Key Set (Jwks) URI used to configure your private
+-- workforce.
+newOidcConfig ::
+  -- | 'clientId'
+  Prelude.Text ->
+  -- | 'clientSecret'
+  Prelude.Text ->
+  -- | 'issuer'
+  Prelude.Text ->
+  -- | 'authorizationEndpoint'
+  Prelude.Text ->
+  -- | 'tokenEndpoint'
+  Prelude.Text ->
+  -- | 'userInfoEndpoint'
+  Prelude.Text ->
+  -- | 'logoutEndpoint'
+  Prelude.Text ->
+  -- | 'jwksUri'
+  Prelude.Text ->
+  OidcConfig
+newOidcConfig
+  pClientId_
+  pClientSecret_
+  pIssuer_
+  pAuthorizationEndpoint_
+  pTokenEndpoint_
+  pUserInfoEndpoint_
+  pLogoutEndpoint_
+  pJwksUri_ =
+    OidcConfig'
+      { clientId = pClientId_,
+        clientSecret = Data._Sensitive Lens.# pClientSecret_,
+        issuer = pIssuer_,
+        authorizationEndpoint = pAuthorizationEndpoint_,
+        tokenEndpoint = pTokenEndpoint_,
+        userInfoEndpoint = pUserInfoEndpoint_,
+        logoutEndpoint = pLogoutEndpoint_,
+        jwksUri = pJwksUri_
+      }
+
+-- | The OIDC IdP client ID used to configure your private workforce.
+oidcConfig_clientId :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_clientId = Lens.lens (\OidcConfig' {clientId} -> clientId) (\s@OidcConfig' {} a -> s {clientId = a} :: OidcConfig)
+
+-- | The OIDC IdP client secret used to configure your private workforce.
+oidcConfig_clientSecret :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_clientSecret = Lens.lens (\OidcConfig' {clientSecret} -> clientSecret) (\s@OidcConfig' {} a -> s {clientSecret = a} :: OidcConfig) Prelude.. Data._Sensitive
+
+-- | The OIDC IdP issuer used to configure your private workforce.
+oidcConfig_issuer :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_issuer = Lens.lens (\OidcConfig' {issuer} -> issuer) (\s@OidcConfig' {} a -> s {issuer = a} :: OidcConfig)
+
+-- | The OIDC IdP authorization endpoint used to configure your private
+-- workforce.
+oidcConfig_authorizationEndpoint :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_authorizationEndpoint = Lens.lens (\OidcConfig' {authorizationEndpoint} -> authorizationEndpoint) (\s@OidcConfig' {} a -> s {authorizationEndpoint = a} :: OidcConfig)
+
+-- | The OIDC IdP token endpoint used to configure your private workforce.
+oidcConfig_tokenEndpoint :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_tokenEndpoint = Lens.lens (\OidcConfig' {tokenEndpoint} -> tokenEndpoint) (\s@OidcConfig' {} a -> s {tokenEndpoint = a} :: OidcConfig)
+
+-- | The OIDC IdP user information endpoint used to configure your private
+-- workforce.
+oidcConfig_userInfoEndpoint :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_userInfoEndpoint = Lens.lens (\OidcConfig' {userInfoEndpoint} -> userInfoEndpoint) (\s@OidcConfig' {} a -> s {userInfoEndpoint = a} :: OidcConfig)
+
+-- | The OIDC IdP logout endpoint used to configure your private workforce.
+oidcConfig_logoutEndpoint :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_logoutEndpoint = Lens.lens (\OidcConfig' {logoutEndpoint} -> logoutEndpoint) (\s@OidcConfig' {} a -> s {logoutEndpoint = a} :: OidcConfig)
+
+-- | The OIDC IdP JSON Web Key Set (Jwks) URI used to configure your private
+-- workforce.
+oidcConfig_jwksUri :: Lens.Lens' OidcConfig Prelude.Text
+oidcConfig_jwksUri = Lens.lens (\OidcConfig' {jwksUri} -> jwksUri) (\s@OidcConfig' {} a -> s {jwksUri = a} :: OidcConfig)
+
+instance Prelude.Hashable OidcConfig where
+  hashWithSalt _salt OidcConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientId
+      `Prelude.hashWithSalt` clientSecret
+      `Prelude.hashWithSalt` issuer
+      `Prelude.hashWithSalt` authorizationEndpoint
+      `Prelude.hashWithSalt` tokenEndpoint
+      `Prelude.hashWithSalt` userInfoEndpoint
+      `Prelude.hashWithSalt` logoutEndpoint
+      `Prelude.hashWithSalt` jwksUri
+
+instance Prelude.NFData OidcConfig where
+  rnf OidcConfig' {..} =
+    Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+      `Prelude.seq` Prelude.rnf issuer
+      `Prelude.seq` Prelude.rnf authorizationEndpoint
+      `Prelude.seq` Prelude.rnf tokenEndpoint
+      `Prelude.seq` Prelude.rnf userInfoEndpoint
+      `Prelude.seq` Prelude.rnf logoutEndpoint
+      `Prelude.seq` Prelude.rnf jwksUri
+
+instance Data.ToJSON OidcConfig where
+  toJSON OidcConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ClientId" Data..= clientId),
+            Prelude.Just ("ClientSecret" Data..= clientSecret),
+            Prelude.Just ("Issuer" Data..= issuer),
+            Prelude.Just
+              ( "AuthorizationEndpoint"
+                  Data..= authorizationEndpoint
+              ),
+            Prelude.Just ("TokenEndpoint" Data..= tokenEndpoint),
+            Prelude.Just
+              ("UserInfoEndpoint" Data..= userInfoEndpoint),
+            Prelude.Just
+              ("LogoutEndpoint" Data..= logoutEndpoint),
+            Prelude.Just ("JwksUri" Data..= jwksUri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/OidcConfigForResponse.hs b/gen/Amazonka/SageMaker/Types/OidcConfigForResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OidcConfigForResponse.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OidcConfigForResponse
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OidcConfigForResponse 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
+
+-- | Your OIDC IdP workforce configuration.
+--
+-- /See:/ 'newOidcConfigForResponse' smart constructor.
+data OidcConfigForResponse = OidcConfigForResponse'
+  { -- | The OIDC IdP authorization endpoint used to configure your private
+    -- workforce.
+    authorizationEndpoint :: Prelude.Maybe Prelude.Text,
+    -- | The OIDC IdP client ID used to configure your private workforce.
+    clientId :: Prelude.Maybe Prelude.Text,
+    -- | The OIDC IdP issuer used to configure your private workforce.
+    issuer :: Prelude.Maybe Prelude.Text,
+    -- | The OIDC IdP JSON Web Key Set (Jwks) URI used to configure your private
+    -- workforce.
+    jwksUri :: Prelude.Maybe Prelude.Text,
+    -- | The OIDC IdP logout endpoint used to configure your private workforce.
+    logoutEndpoint :: Prelude.Maybe Prelude.Text,
+    -- | The OIDC IdP token endpoint used to configure your private workforce.
+    tokenEndpoint :: Prelude.Maybe Prelude.Text,
+    -- | The OIDC IdP user information endpoint used to configure your private
+    -- workforce.
+    userInfoEndpoint :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OidcConfigForResponse' 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:
+--
+-- 'authorizationEndpoint', 'oidcConfigForResponse_authorizationEndpoint' - The OIDC IdP authorization endpoint used to configure your private
+-- workforce.
+--
+-- 'clientId', 'oidcConfigForResponse_clientId' - The OIDC IdP client ID used to configure your private workforce.
+--
+-- 'issuer', 'oidcConfigForResponse_issuer' - The OIDC IdP issuer used to configure your private workforce.
+--
+-- 'jwksUri', 'oidcConfigForResponse_jwksUri' - The OIDC IdP JSON Web Key Set (Jwks) URI used to configure your private
+-- workforce.
+--
+-- 'logoutEndpoint', 'oidcConfigForResponse_logoutEndpoint' - The OIDC IdP logout endpoint used to configure your private workforce.
+--
+-- 'tokenEndpoint', 'oidcConfigForResponse_tokenEndpoint' - The OIDC IdP token endpoint used to configure your private workforce.
+--
+-- 'userInfoEndpoint', 'oidcConfigForResponse_userInfoEndpoint' - The OIDC IdP user information endpoint used to configure your private
+-- workforce.
+newOidcConfigForResponse ::
+  OidcConfigForResponse
+newOidcConfigForResponse =
+  OidcConfigForResponse'
+    { authorizationEndpoint =
+        Prelude.Nothing,
+      clientId = Prelude.Nothing,
+      issuer = Prelude.Nothing,
+      jwksUri = Prelude.Nothing,
+      logoutEndpoint = Prelude.Nothing,
+      tokenEndpoint = Prelude.Nothing,
+      userInfoEndpoint = Prelude.Nothing
+    }
+
+-- | The OIDC IdP authorization endpoint used to configure your private
+-- workforce.
+oidcConfigForResponse_authorizationEndpoint :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_authorizationEndpoint = Lens.lens (\OidcConfigForResponse' {authorizationEndpoint} -> authorizationEndpoint) (\s@OidcConfigForResponse' {} a -> s {authorizationEndpoint = a} :: OidcConfigForResponse)
+
+-- | The OIDC IdP client ID used to configure your private workforce.
+oidcConfigForResponse_clientId :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_clientId = Lens.lens (\OidcConfigForResponse' {clientId} -> clientId) (\s@OidcConfigForResponse' {} a -> s {clientId = a} :: OidcConfigForResponse)
+
+-- | The OIDC IdP issuer used to configure your private workforce.
+oidcConfigForResponse_issuer :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_issuer = Lens.lens (\OidcConfigForResponse' {issuer} -> issuer) (\s@OidcConfigForResponse' {} a -> s {issuer = a} :: OidcConfigForResponse)
+
+-- | The OIDC IdP JSON Web Key Set (Jwks) URI used to configure your private
+-- workforce.
+oidcConfigForResponse_jwksUri :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_jwksUri = Lens.lens (\OidcConfigForResponse' {jwksUri} -> jwksUri) (\s@OidcConfigForResponse' {} a -> s {jwksUri = a} :: OidcConfigForResponse)
+
+-- | The OIDC IdP logout endpoint used to configure your private workforce.
+oidcConfigForResponse_logoutEndpoint :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_logoutEndpoint = Lens.lens (\OidcConfigForResponse' {logoutEndpoint} -> logoutEndpoint) (\s@OidcConfigForResponse' {} a -> s {logoutEndpoint = a} :: OidcConfigForResponse)
+
+-- | The OIDC IdP token endpoint used to configure your private workforce.
+oidcConfigForResponse_tokenEndpoint :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_tokenEndpoint = Lens.lens (\OidcConfigForResponse' {tokenEndpoint} -> tokenEndpoint) (\s@OidcConfigForResponse' {} a -> s {tokenEndpoint = a} :: OidcConfigForResponse)
+
+-- | The OIDC IdP user information endpoint used to configure your private
+-- workforce.
+oidcConfigForResponse_userInfoEndpoint :: Lens.Lens' OidcConfigForResponse (Prelude.Maybe Prelude.Text)
+oidcConfigForResponse_userInfoEndpoint = Lens.lens (\OidcConfigForResponse' {userInfoEndpoint} -> userInfoEndpoint) (\s@OidcConfigForResponse' {} a -> s {userInfoEndpoint = a} :: OidcConfigForResponse)
+
+instance Data.FromJSON OidcConfigForResponse where
+  parseJSON =
+    Data.withObject
+      "OidcConfigForResponse"
+      ( \x ->
+          OidcConfigForResponse'
+            Prelude.<$> (x Data..:? "AuthorizationEndpoint")
+            Prelude.<*> (x Data..:? "ClientId")
+            Prelude.<*> (x Data..:? "Issuer")
+            Prelude.<*> (x Data..:? "JwksUri")
+            Prelude.<*> (x Data..:? "LogoutEndpoint")
+            Prelude.<*> (x Data..:? "TokenEndpoint")
+            Prelude.<*> (x Data..:? "UserInfoEndpoint")
+      )
+
+instance Prelude.Hashable OidcConfigForResponse where
+  hashWithSalt _salt OidcConfigForResponse' {..} =
+    _salt
+      `Prelude.hashWithSalt` authorizationEndpoint
+      `Prelude.hashWithSalt` clientId
+      `Prelude.hashWithSalt` issuer
+      `Prelude.hashWithSalt` jwksUri
+      `Prelude.hashWithSalt` logoutEndpoint
+      `Prelude.hashWithSalt` tokenEndpoint
+      `Prelude.hashWithSalt` userInfoEndpoint
+
+instance Prelude.NFData OidcConfigForResponse where
+  rnf OidcConfigForResponse' {..} =
+    Prelude.rnf authorizationEndpoint
+      `Prelude.seq` Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf issuer
+      `Prelude.seq` Prelude.rnf jwksUri
+      `Prelude.seq` Prelude.rnf logoutEndpoint
+      `Prelude.seq` Prelude.rnf tokenEndpoint
+      `Prelude.seq` Prelude.rnf userInfoEndpoint
diff --git a/gen/Amazonka/SageMaker/Types/OidcMemberDefinition.hs b/gen/Amazonka/SageMaker/Types/OidcMemberDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OidcMemberDefinition.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OidcMemberDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OidcMemberDefinition 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
+
+-- | A list of user groups that exist in your OIDC Identity Provider (IdP).
+-- One to ten groups can be used to create a single private work team. When
+-- you add a user group to the list of @Groups@, you can add that user
+-- group to one or more private work teams. If you add a user group to a
+-- private work team, all workers in that user group are added to the work
+-- team.
+--
+-- /See:/ 'newOidcMemberDefinition' smart constructor.
+data OidcMemberDefinition = OidcMemberDefinition'
+  { -- | A list of comma seperated strings that identifies user groups in your
+    -- OIDC IdP. Each user group is made up of a group of private workers.
+    groups :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OidcMemberDefinition' 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:
+--
+-- 'groups', 'oidcMemberDefinition_groups' - A list of comma seperated strings that identifies user groups in your
+-- OIDC IdP. Each user group is made up of a group of private workers.
+newOidcMemberDefinition ::
+  -- | 'groups'
+  Prelude.NonEmpty Prelude.Text ->
+  OidcMemberDefinition
+newOidcMemberDefinition pGroups_ =
+  OidcMemberDefinition'
+    { groups =
+        Lens.coerced Lens.# pGroups_
+    }
+
+-- | A list of comma seperated strings that identifies user groups in your
+-- OIDC IdP. Each user group is made up of a group of private workers.
+oidcMemberDefinition_groups :: Lens.Lens' OidcMemberDefinition (Prelude.NonEmpty Prelude.Text)
+oidcMemberDefinition_groups = Lens.lens (\OidcMemberDefinition' {groups} -> groups) (\s@OidcMemberDefinition' {} a -> s {groups = a} :: OidcMemberDefinition) Prelude.. Lens.coerced
+
+instance Data.FromJSON OidcMemberDefinition where
+  parseJSON =
+    Data.withObject
+      "OidcMemberDefinition"
+      ( \x ->
+          OidcMemberDefinition'
+            Prelude.<$> (x Data..: "Groups")
+      )
+
+instance Prelude.Hashable OidcMemberDefinition where
+  hashWithSalt _salt OidcMemberDefinition' {..} =
+    _salt `Prelude.hashWithSalt` groups
+
+instance Prelude.NFData OidcMemberDefinition where
+  rnf OidcMemberDefinition' {..} = Prelude.rnf groups
+
+instance Data.ToJSON OidcMemberDefinition where
+  toJSON OidcMemberDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Groups" Data..= groups)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/OnlineStoreConfig.hs b/gen/Amazonka/SageMaker/Types/OnlineStoreConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OnlineStoreConfig.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OnlineStoreConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OnlineStoreConfig 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 Amazonka.SageMaker.Types.OnlineStoreSecurityConfig
+
+-- | Use this to specify the Amazon Web Services Key Management Service (KMS)
+-- Key ID, or @KMSKeyId@, for at rest data encryption. You can turn
+-- @OnlineStore@ on or off by specifying the @EnableOnlineStore@ flag at
+-- General Assembly; the default value is @False@.
+--
+-- /See:/ 'newOnlineStoreConfig' smart constructor.
+data OnlineStoreConfig = OnlineStoreConfig'
+  { -- | Turn @OnlineStore@ off by specifying @False@ for the @EnableOnlineStore@
+    -- flag. Turn @OnlineStore@ on by specifying @True@ for the
+    -- @EnableOnlineStore@ flag.
+    --
+    -- The default value is @False@.
+    enableOnlineStore :: Prelude.Maybe Prelude.Bool,
+    -- | Use to specify KMS Key ID (@KMSKeyId@) for at-rest encryption of your
+    -- @OnlineStore@.
+    securityConfig :: Prelude.Maybe OnlineStoreSecurityConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OnlineStoreConfig' 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:
+--
+-- 'enableOnlineStore', 'onlineStoreConfig_enableOnlineStore' - Turn @OnlineStore@ off by specifying @False@ for the @EnableOnlineStore@
+-- flag. Turn @OnlineStore@ on by specifying @True@ for the
+-- @EnableOnlineStore@ flag.
+--
+-- The default value is @False@.
+--
+-- 'securityConfig', 'onlineStoreConfig_securityConfig' - Use to specify KMS Key ID (@KMSKeyId@) for at-rest encryption of your
+-- @OnlineStore@.
+newOnlineStoreConfig ::
+  OnlineStoreConfig
+newOnlineStoreConfig =
+  OnlineStoreConfig'
+    { enableOnlineStore =
+        Prelude.Nothing,
+      securityConfig = Prelude.Nothing
+    }
+
+-- | Turn @OnlineStore@ off by specifying @False@ for the @EnableOnlineStore@
+-- flag. Turn @OnlineStore@ on by specifying @True@ for the
+-- @EnableOnlineStore@ flag.
+--
+-- The default value is @False@.
+onlineStoreConfig_enableOnlineStore :: Lens.Lens' OnlineStoreConfig (Prelude.Maybe Prelude.Bool)
+onlineStoreConfig_enableOnlineStore = Lens.lens (\OnlineStoreConfig' {enableOnlineStore} -> enableOnlineStore) (\s@OnlineStoreConfig' {} a -> s {enableOnlineStore = a} :: OnlineStoreConfig)
+
+-- | Use to specify KMS Key ID (@KMSKeyId@) for at-rest encryption of your
+-- @OnlineStore@.
+onlineStoreConfig_securityConfig :: Lens.Lens' OnlineStoreConfig (Prelude.Maybe OnlineStoreSecurityConfig)
+onlineStoreConfig_securityConfig = Lens.lens (\OnlineStoreConfig' {securityConfig} -> securityConfig) (\s@OnlineStoreConfig' {} a -> s {securityConfig = a} :: OnlineStoreConfig)
+
+instance Data.FromJSON OnlineStoreConfig where
+  parseJSON =
+    Data.withObject
+      "OnlineStoreConfig"
+      ( \x ->
+          OnlineStoreConfig'
+            Prelude.<$> (x Data..:? "EnableOnlineStore")
+            Prelude.<*> (x Data..:? "SecurityConfig")
+      )
+
+instance Prelude.Hashable OnlineStoreConfig where
+  hashWithSalt _salt OnlineStoreConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` enableOnlineStore
+      `Prelude.hashWithSalt` securityConfig
+
+instance Prelude.NFData OnlineStoreConfig where
+  rnf OnlineStoreConfig' {..} =
+    Prelude.rnf enableOnlineStore
+      `Prelude.seq` Prelude.rnf securityConfig
+
+instance Data.ToJSON OnlineStoreConfig where
+  toJSON OnlineStoreConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EnableOnlineStore" Data..=)
+              Prelude.<$> enableOnlineStore,
+            ("SecurityConfig" Data..=)
+              Prelude.<$> securityConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/OnlineStoreSecurityConfig.hs b/gen/Amazonka/SageMaker/Types/OnlineStoreSecurityConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OnlineStoreSecurityConfig.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OnlineStoreSecurityConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OnlineStoreSecurityConfig 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
+
+-- | The security configuration for @OnlineStore@.
+--
+-- /See:/ 'newOnlineStoreSecurityConfig' smart constructor.
+data OnlineStoreSecurityConfig = OnlineStoreSecurityConfig'
+  { -- | The ID of the Amazon Web Services Key Management Service (Amazon Web
+    -- Services KMS) key that SageMaker Feature Store uses to encrypt the
+    -- Amazon S3 objects at rest using Amazon S3 server-side encryption.
+    --
+    -- The caller (either IAM user or IAM role) of @CreateFeatureGroup@ must
+    -- have below permissions to the @OnlineStore@ @KmsKeyId@:
+    --
+    -- -   @\"kms:Encrypt\"@
+    --
+    -- -   @\"kms:Decrypt\"@
+    --
+    -- -   @\"kms:DescribeKey\"@
+    --
+    -- -   @\"kms:CreateGrant\"@
+    --
+    -- -   @\"kms:RetireGrant\"@
+    --
+    -- -   @\"kms:ReEncryptFrom\"@
+    --
+    -- -   @\"kms:ReEncryptTo\"@
+    --
+    -- -   @\"kms:GenerateDataKey\"@
+    --
+    -- -   @\"kms:ListAliases\"@
+    --
+    -- -   @\"kms:ListGrants\"@
+    --
+    -- -   @\"kms:RevokeGrant\"@
+    --
+    -- The caller (either IAM user or IAM role) to all DataPlane operations
+    -- (@PutRecord@, @GetRecord@, @DeleteRecord@) must have the following
+    -- permissions to the @KmsKeyId@:
+    --
+    -- -   @\"kms:Decrypt\"@
+    kmsKeyId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OnlineStoreSecurityConfig' 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:
+--
+-- 'kmsKeyId', 'onlineStoreSecurityConfig_kmsKeyId' - The ID of the Amazon Web Services Key Management Service (Amazon Web
+-- Services KMS) key that SageMaker Feature Store uses to encrypt the
+-- Amazon S3 objects at rest using Amazon S3 server-side encryption.
+--
+-- The caller (either IAM user or IAM role) of @CreateFeatureGroup@ must
+-- have below permissions to the @OnlineStore@ @KmsKeyId@:
+--
+-- -   @\"kms:Encrypt\"@
+--
+-- -   @\"kms:Decrypt\"@
+--
+-- -   @\"kms:DescribeKey\"@
+--
+-- -   @\"kms:CreateGrant\"@
+--
+-- -   @\"kms:RetireGrant\"@
+--
+-- -   @\"kms:ReEncryptFrom\"@
+--
+-- -   @\"kms:ReEncryptTo\"@
+--
+-- -   @\"kms:GenerateDataKey\"@
+--
+-- -   @\"kms:ListAliases\"@
+--
+-- -   @\"kms:ListGrants\"@
+--
+-- -   @\"kms:RevokeGrant\"@
+--
+-- The caller (either IAM user or IAM role) to all DataPlane operations
+-- (@PutRecord@, @GetRecord@, @DeleteRecord@) must have the following
+-- permissions to the @KmsKeyId@:
+--
+-- -   @\"kms:Decrypt\"@
+newOnlineStoreSecurityConfig ::
+  OnlineStoreSecurityConfig
+newOnlineStoreSecurityConfig =
+  OnlineStoreSecurityConfig'
+    { kmsKeyId =
+        Prelude.Nothing
+    }
+
+-- | The ID of the Amazon Web Services Key Management Service (Amazon Web
+-- Services KMS) key that SageMaker Feature Store uses to encrypt the
+-- Amazon S3 objects at rest using Amazon S3 server-side encryption.
+--
+-- The caller (either IAM user or IAM role) of @CreateFeatureGroup@ must
+-- have below permissions to the @OnlineStore@ @KmsKeyId@:
+--
+-- -   @\"kms:Encrypt\"@
+--
+-- -   @\"kms:Decrypt\"@
+--
+-- -   @\"kms:DescribeKey\"@
+--
+-- -   @\"kms:CreateGrant\"@
+--
+-- -   @\"kms:RetireGrant\"@
+--
+-- -   @\"kms:ReEncryptFrom\"@
+--
+-- -   @\"kms:ReEncryptTo\"@
+--
+-- -   @\"kms:GenerateDataKey\"@
+--
+-- -   @\"kms:ListAliases\"@
+--
+-- -   @\"kms:ListGrants\"@
+--
+-- -   @\"kms:RevokeGrant\"@
+--
+-- The caller (either IAM user or IAM role) to all DataPlane operations
+-- (@PutRecord@, @GetRecord@, @DeleteRecord@) must have the following
+-- permissions to the @KmsKeyId@:
+--
+-- -   @\"kms:Decrypt\"@
+onlineStoreSecurityConfig_kmsKeyId :: Lens.Lens' OnlineStoreSecurityConfig (Prelude.Maybe Prelude.Text)
+onlineStoreSecurityConfig_kmsKeyId = Lens.lens (\OnlineStoreSecurityConfig' {kmsKeyId} -> kmsKeyId) (\s@OnlineStoreSecurityConfig' {} a -> s {kmsKeyId = a} :: OnlineStoreSecurityConfig)
+
+instance Data.FromJSON OnlineStoreSecurityConfig where
+  parseJSON =
+    Data.withObject
+      "OnlineStoreSecurityConfig"
+      ( \x ->
+          OnlineStoreSecurityConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+      )
+
+instance Prelude.Hashable OnlineStoreSecurityConfig where
+  hashWithSalt _salt OnlineStoreSecurityConfig' {..} =
+    _salt `Prelude.hashWithSalt` kmsKeyId
+
+instance Prelude.NFData OnlineStoreSecurityConfig where
+  rnf OnlineStoreSecurityConfig' {..} =
+    Prelude.rnf kmsKeyId
+
+instance Data.ToJSON OnlineStoreSecurityConfig where
+  toJSON OnlineStoreSecurityConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("KmsKeyId" Data..=) Prelude.<$> kmsKeyId]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Operator.hs b/gen/Amazonka/SageMaker/Types/Operator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Operator.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.Operator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Operator
+  ( Operator
+      ( ..,
+        Operator_Contains,
+        Operator_Equals,
+        Operator_Exists,
+        Operator_GreaterThan,
+        Operator_GreaterThanOrEqualTo,
+        Operator_In,
+        Operator_LessThan,
+        Operator_LessThanOrEqualTo,
+        Operator_NotEquals,
+        Operator_NotExists
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Operator = Operator'
+  { fromOperator ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Operator_Contains :: Operator
+pattern Operator_Contains = Operator' "Contains"
+
+pattern Operator_Equals :: Operator
+pattern Operator_Equals = Operator' "Equals"
+
+pattern Operator_Exists :: Operator
+pattern Operator_Exists = Operator' "Exists"
+
+pattern Operator_GreaterThan :: Operator
+pattern Operator_GreaterThan = Operator' "GreaterThan"
+
+pattern Operator_GreaterThanOrEqualTo :: Operator
+pattern Operator_GreaterThanOrEqualTo = Operator' "GreaterThanOrEqualTo"
+
+pattern Operator_In :: Operator
+pattern Operator_In = Operator' "In"
+
+pattern Operator_LessThan :: Operator
+pattern Operator_LessThan = Operator' "LessThan"
+
+pattern Operator_LessThanOrEqualTo :: Operator
+pattern Operator_LessThanOrEqualTo = Operator' "LessThanOrEqualTo"
+
+pattern Operator_NotEquals :: Operator
+pattern Operator_NotEquals = Operator' "NotEquals"
+
+pattern Operator_NotExists :: Operator
+pattern Operator_NotExists = Operator' "NotExists"
+
+{-# COMPLETE
+  Operator_Contains,
+  Operator_Equals,
+  Operator_Exists,
+  Operator_GreaterThan,
+  Operator_GreaterThanOrEqualTo,
+  Operator_In,
+  Operator_LessThan,
+  Operator_LessThanOrEqualTo,
+  Operator_NotEquals,
+  Operator_NotExists,
+  Operator'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/OrderKey.hs b/gen/Amazonka/SageMaker/Types/OrderKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OrderKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.OrderKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OrderKey
+  ( OrderKey
+      ( ..,
+        OrderKey_Ascending,
+        OrderKey_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderKey = OrderKey'
+  { fromOrderKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OrderKey_Ascending :: OrderKey
+pattern OrderKey_Ascending = OrderKey' "Ascending"
+
+pattern OrderKey_Descending :: OrderKey
+pattern OrderKey_Descending = OrderKey' "Descending"
+
+{-# COMPLETE
+  OrderKey_Ascending,
+  OrderKey_Descending,
+  OrderKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/OutputConfig.hs b/gen/Amazonka/SageMaker/Types/OutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OutputConfig.hs
@@ -0,0 +1,587 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OutputConfig 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 Amazonka.SageMaker.Types.TargetDevice
+import Amazonka.SageMaker.Types.TargetPlatform
+
+-- | Contains information about the output location for the compiled model
+-- and the target device that the model runs on. @TargetDevice@ and
+-- @TargetPlatform@ are mutually exclusive, so you need to choose one
+-- between the two to specify your target device or platform. If you cannot
+-- find your device you want to use from the @TargetDevice@ list, use
+-- @TargetPlatform@ to describe the platform of your edge device and
+-- @CompilerOptions@ if there are specific settings that are required or
+-- recommended to use for particular TargetPlatform.
+--
+-- /See:/ 'newOutputConfig' smart constructor.
+data OutputConfig = OutputConfig'
+  { -- | Specifies additional parameters for compiler options in JSON format. The
+    -- compiler options are @TargetPlatform@ specific. It is required for
+    -- NVIDIA accelerators and highly recommended for CPU compilations. For any
+    -- other cases, it is optional to specify @CompilerOptions.@
+    --
+    -- -   @DTYPE@: Specifies the data type for the input. When compiling for
+    --     @ml_*@ (except for @ml_inf@) instances using PyTorch framework,
+    --     provide the data type (dtype) of the model\'s input. @\"float32\"@
+    --     is used if @\"DTYPE\"@ is not specified. Options for data type are:
+    --
+    --     -   float32: Use either @\"float\"@ or @\"float32\"@.
+    --
+    --     -   int64: Use either @\"int64\"@ or @\"long\"@.
+    --
+    --     For example, @{\"dtype\" : \"float32\"}@.
+    --
+    -- -   @CPU@: Compilation for CPU supports the following compiler options.
+    --
+    --     -   @mcpu@: CPU micro-architecture. For example,
+    --         @{\'mcpu\': \'skylake-avx512\'}@
+    --
+    --     -   @mattr@: CPU flags. For example,
+    --         @{\'mattr\': [\'+neon\', \'+vfpv4\']}@
+    --
+    -- -   @ARM@: Details of ARM CPU compilations.
+    --
+    --     -   @NEON@: NEON is an implementation of the Advanced SIMD extension
+    --         used in ARMv7 processors.
+    --
+    --         For example, add @{\'mattr\': [\'+neon\']}@ to the compiler
+    --         options if compiling for ARM 32-bit platform with the NEON
+    --         support.
+    --
+    -- -   @NVIDIA@: Compilation for NVIDIA GPU supports the following compiler
+    --     options.
+    --
+    --     -   @gpu_code@: Specifies the targeted architecture.
+    --
+    --     -   @trt-ver@: Specifies the TensorRT versions in x.y.z. format.
+    --
+    --     -   @cuda-ver@: Specifies the CUDA version in x.y format.
+    --
+    --     For example,
+    --     @{\'gpu-code\': \'sm_72\', \'trt-ver\': \'6.0.1\', \'cuda-ver\': \'10.1\'}@
+    --
+    -- -   @ANDROID@: Compilation for the Android OS supports the following
+    --     compiler options:
+    --
+    --     -   @ANDROID_PLATFORM@: Specifies the Android API levels. Available
+    --         levels range from 21 to 29. For example,
+    --         @{\'ANDROID_PLATFORM\': 28}@.
+    --
+    --     -   @mattr@: Add @{\'mattr\': [\'+neon\']}@ to compiler options if
+    --         compiling for ARM 32-bit platform with NEON support.
+    --
+    -- -   @INFERENTIA@: Compilation for target ml_inf1 uses compiler options
+    --     passed in as a JSON string. For example,
+    --     @\"CompilerOptions\": \"\\\"--verbose 1 --num-neuroncores 2 -O2\\\"\"@.
+    --
+    --     For information about supported compiler options, see
+    --     <https://github.com/aws/aws-neuron-sdk/blob/master/docs/neuron-cc/command-line-reference.md Neuron Compiler CLI>.
+    --
+    -- -   @CoreML@: Compilation for the CoreML OutputConfig$TargetDevice
+    --     supports the following compiler options:
+    --
+    --     -   @class_labels@: Specifies the classification labels file name
+    --         inside input tar.gz file. For example,
+    --         @{\"class_labels\": \"imagenet_labels_1000.txt\"}@. Labels
+    --         inside the txt file should be separated by newlines.
+    --
+    -- -   @EIA@: Compilation for the Elastic Inference Accelerator supports
+    --     the following compiler options:
+    --
+    --     -   @precision_mode@: Specifies the precision of compiled artifacts.
+    --         Supported values are @\"FP16\"@ and @\"FP32\"@. Default is
+    --         @\"FP32\"@.
+    --
+    --     -   @signature_def_key@: Specifies the signature to use for models
+    --         in SavedModel format. Defaults is TensorFlow\'s default
+    --         signature def key.
+    --
+    --     -   @output_names@: Specifies a list of output tensor names for
+    --         models in FrozenGraph format. Set at most one API field, either:
+    --         @signature_def_key@ or @output_names@.
+    --
+    --     For example:
+    --     @{\"precision_mode\": \"FP32\", \"output_names\": [\"output:0\"]}@
+    compilerOptions :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Key Management Service key (Amazon Web Services
+    -- KMS) that Amazon SageMaker uses to encrypt your output models with
+    -- Amazon S3 server-side encryption after compilation job. If you don\'t
+    -- provide a KMS key ID, Amazon SageMaker uses the default KMS key for
+    -- Amazon S3 for your role\'s account. For more information, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+    -- in the /Amazon Simple Storage Service Developer Guide./
+    --
+    -- The KmsKeyId can be any of the following formats:
+    --
+    -- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Key ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Alias name: @alias\/ExampleAlias@
+    --
+    -- -   Alias name ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the target device or the machine learning instance that you
+    -- want to run your model on after the compilation has completed.
+    -- Alternatively, you can specify OS, architecture, and accelerator using
+    -- TargetPlatform fields. It can be used instead of @TargetPlatform@.
+    targetDevice :: Prelude.Maybe TargetDevice,
+    -- | Contains information about a target platform that you want your model to
+    -- run on, such as OS, architecture, and accelerators. It is an alternative
+    -- of @TargetDevice@.
+    --
+    -- The following examples show how to configure the @TargetPlatform@ and
+    -- @CompilerOptions@ JSON strings for popular target platforms:
+    --
+    -- -   Raspberry Pi 3 Model B+
+    --
+    --     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM_EABIHF\"},@
+    --
+    --     @ \"CompilerOptions\": {\'mattr\': [\'+neon\']}@
+    --
+    -- -   Jetson TX2
+    --
+    --     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM64\", \"Accelerator\": \"NVIDIA\"},@
+    --
+    --     @ \"CompilerOptions\": {\'gpu-code\': \'sm_62\', \'trt-ver\': \'6.0.1\', \'cuda-ver\': \'10.0\'}@
+    --
+    -- -   EC2 m5.2xlarge instance OS
+    --
+    --     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"X86_64\", \"Accelerator\": \"NVIDIA\"},@
+    --
+    --     @ \"CompilerOptions\": {\'mcpu\': \'skylake-avx512\'}@
+    --
+    -- -   RK3399
+    --
+    --     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM64\", \"Accelerator\": \"MALI\"}@
+    --
+    -- -   ARMv7 phone (CPU)
+    --
+    --     @\"TargetPlatform\": {\"Os\": \"ANDROID\", \"Arch\": \"ARM_EABI\"},@
+    --
+    --     @ \"CompilerOptions\": {\'ANDROID_PLATFORM\': 25, \'mattr\': [\'+neon\']}@
+    --
+    -- -   ARMv8 phone (CPU)
+    --
+    --     @\"TargetPlatform\": {\"Os\": \"ANDROID\", \"Arch\": \"ARM64\"},@
+    --
+    --     @ \"CompilerOptions\": {\'ANDROID_PLATFORM\': 29}@
+    targetPlatform :: Prelude.Maybe TargetPlatform,
+    -- | Identifies the S3 bucket where you want Amazon SageMaker to store the
+    -- model artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+    s3OutputLocation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputConfig' 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:
+--
+-- 'compilerOptions', 'outputConfig_compilerOptions' - Specifies additional parameters for compiler options in JSON format. The
+-- compiler options are @TargetPlatform@ specific. It is required for
+-- NVIDIA accelerators and highly recommended for CPU compilations. For any
+-- other cases, it is optional to specify @CompilerOptions.@
+--
+-- -   @DTYPE@: Specifies the data type for the input. When compiling for
+--     @ml_*@ (except for @ml_inf@) instances using PyTorch framework,
+--     provide the data type (dtype) of the model\'s input. @\"float32\"@
+--     is used if @\"DTYPE\"@ is not specified. Options for data type are:
+--
+--     -   float32: Use either @\"float\"@ or @\"float32\"@.
+--
+--     -   int64: Use either @\"int64\"@ or @\"long\"@.
+--
+--     For example, @{\"dtype\" : \"float32\"}@.
+--
+-- -   @CPU@: Compilation for CPU supports the following compiler options.
+--
+--     -   @mcpu@: CPU micro-architecture. For example,
+--         @{\'mcpu\': \'skylake-avx512\'}@
+--
+--     -   @mattr@: CPU flags. For example,
+--         @{\'mattr\': [\'+neon\', \'+vfpv4\']}@
+--
+-- -   @ARM@: Details of ARM CPU compilations.
+--
+--     -   @NEON@: NEON is an implementation of the Advanced SIMD extension
+--         used in ARMv7 processors.
+--
+--         For example, add @{\'mattr\': [\'+neon\']}@ to the compiler
+--         options if compiling for ARM 32-bit platform with the NEON
+--         support.
+--
+-- -   @NVIDIA@: Compilation for NVIDIA GPU supports the following compiler
+--     options.
+--
+--     -   @gpu_code@: Specifies the targeted architecture.
+--
+--     -   @trt-ver@: Specifies the TensorRT versions in x.y.z. format.
+--
+--     -   @cuda-ver@: Specifies the CUDA version in x.y format.
+--
+--     For example,
+--     @{\'gpu-code\': \'sm_72\', \'trt-ver\': \'6.0.1\', \'cuda-ver\': \'10.1\'}@
+--
+-- -   @ANDROID@: Compilation for the Android OS supports the following
+--     compiler options:
+--
+--     -   @ANDROID_PLATFORM@: Specifies the Android API levels. Available
+--         levels range from 21 to 29. For example,
+--         @{\'ANDROID_PLATFORM\': 28}@.
+--
+--     -   @mattr@: Add @{\'mattr\': [\'+neon\']}@ to compiler options if
+--         compiling for ARM 32-bit platform with NEON support.
+--
+-- -   @INFERENTIA@: Compilation for target ml_inf1 uses compiler options
+--     passed in as a JSON string. For example,
+--     @\"CompilerOptions\": \"\\\"--verbose 1 --num-neuroncores 2 -O2\\\"\"@.
+--
+--     For information about supported compiler options, see
+--     <https://github.com/aws/aws-neuron-sdk/blob/master/docs/neuron-cc/command-line-reference.md Neuron Compiler CLI>.
+--
+-- -   @CoreML@: Compilation for the CoreML OutputConfig$TargetDevice
+--     supports the following compiler options:
+--
+--     -   @class_labels@: Specifies the classification labels file name
+--         inside input tar.gz file. For example,
+--         @{\"class_labels\": \"imagenet_labels_1000.txt\"}@. Labels
+--         inside the txt file should be separated by newlines.
+--
+-- -   @EIA@: Compilation for the Elastic Inference Accelerator supports
+--     the following compiler options:
+--
+--     -   @precision_mode@: Specifies the precision of compiled artifacts.
+--         Supported values are @\"FP16\"@ and @\"FP32\"@. Default is
+--         @\"FP32\"@.
+--
+--     -   @signature_def_key@: Specifies the signature to use for models
+--         in SavedModel format. Defaults is TensorFlow\'s default
+--         signature def key.
+--
+--     -   @output_names@: Specifies a list of output tensor names for
+--         models in FrozenGraph format. Set at most one API field, either:
+--         @signature_def_key@ or @output_names@.
+--
+--     For example:
+--     @{\"precision_mode\": \"FP32\", \"output_names\": [\"output:0\"]}@
+--
+-- 'kmsKeyId', 'outputConfig_kmsKeyId' - The Amazon Web Services Key Management Service key (Amazon Web Services
+-- KMS) that Amazon SageMaker uses to encrypt your output models with
+-- Amazon S3 server-side encryption after compilation job. If you don\'t
+-- provide a KMS key ID, Amazon SageMaker uses the default KMS key for
+-- Amazon S3 for your role\'s account. For more information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- 'targetDevice', 'outputConfig_targetDevice' - Identifies the target device or the machine learning instance that you
+-- want to run your model on after the compilation has completed.
+-- Alternatively, you can specify OS, architecture, and accelerator using
+-- TargetPlatform fields. It can be used instead of @TargetPlatform@.
+--
+-- 'targetPlatform', 'outputConfig_targetPlatform' - Contains information about a target platform that you want your model to
+-- run on, such as OS, architecture, and accelerators. It is an alternative
+-- of @TargetDevice@.
+--
+-- The following examples show how to configure the @TargetPlatform@ and
+-- @CompilerOptions@ JSON strings for popular target platforms:
+--
+-- -   Raspberry Pi 3 Model B+
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM_EABIHF\"},@
+--
+--     @ \"CompilerOptions\": {\'mattr\': [\'+neon\']}@
+--
+-- -   Jetson TX2
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM64\", \"Accelerator\": \"NVIDIA\"},@
+--
+--     @ \"CompilerOptions\": {\'gpu-code\': \'sm_62\', \'trt-ver\': \'6.0.1\', \'cuda-ver\': \'10.0\'}@
+--
+-- -   EC2 m5.2xlarge instance OS
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"X86_64\", \"Accelerator\": \"NVIDIA\"},@
+--
+--     @ \"CompilerOptions\": {\'mcpu\': \'skylake-avx512\'}@
+--
+-- -   RK3399
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM64\", \"Accelerator\": \"MALI\"}@
+--
+-- -   ARMv7 phone (CPU)
+--
+--     @\"TargetPlatform\": {\"Os\": \"ANDROID\", \"Arch\": \"ARM_EABI\"},@
+--
+--     @ \"CompilerOptions\": {\'ANDROID_PLATFORM\': 25, \'mattr\': [\'+neon\']}@
+--
+-- -   ARMv8 phone (CPU)
+--
+--     @\"TargetPlatform\": {\"Os\": \"ANDROID\", \"Arch\": \"ARM64\"},@
+--
+--     @ \"CompilerOptions\": {\'ANDROID_PLATFORM\': 29}@
+--
+-- 's3OutputLocation', 'outputConfig_s3OutputLocation' - Identifies the S3 bucket where you want Amazon SageMaker to store the
+-- model artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+newOutputConfig ::
+  -- | 's3OutputLocation'
+  Prelude.Text ->
+  OutputConfig
+newOutputConfig pS3OutputLocation_ =
+  OutputConfig'
+    { compilerOptions = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      targetDevice = Prelude.Nothing,
+      targetPlatform = Prelude.Nothing,
+      s3OutputLocation = pS3OutputLocation_
+    }
+
+-- | Specifies additional parameters for compiler options in JSON format. The
+-- compiler options are @TargetPlatform@ specific. It is required for
+-- NVIDIA accelerators and highly recommended for CPU compilations. For any
+-- other cases, it is optional to specify @CompilerOptions.@
+--
+-- -   @DTYPE@: Specifies the data type for the input. When compiling for
+--     @ml_*@ (except for @ml_inf@) instances using PyTorch framework,
+--     provide the data type (dtype) of the model\'s input. @\"float32\"@
+--     is used if @\"DTYPE\"@ is not specified. Options for data type are:
+--
+--     -   float32: Use either @\"float\"@ or @\"float32\"@.
+--
+--     -   int64: Use either @\"int64\"@ or @\"long\"@.
+--
+--     For example, @{\"dtype\" : \"float32\"}@.
+--
+-- -   @CPU@: Compilation for CPU supports the following compiler options.
+--
+--     -   @mcpu@: CPU micro-architecture. For example,
+--         @{\'mcpu\': \'skylake-avx512\'}@
+--
+--     -   @mattr@: CPU flags. For example,
+--         @{\'mattr\': [\'+neon\', \'+vfpv4\']}@
+--
+-- -   @ARM@: Details of ARM CPU compilations.
+--
+--     -   @NEON@: NEON is an implementation of the Advanced SIMD extension
+--         used in ARMv7 processors.
+--
+--         For example, add @{\'mattr\': [\'+neon\']}@ to the compiler
+--         options if compiling for ARM 32-bit platform with the NEON
+--         support.
+--
+-- -   @NVIDIA@: Compilation for NVIDIA GPU supports the following compiler
+--     options.
+--
+--     -   @gpu_code@: Specifies the targeted architecture.
+--
+--     -   @trt-ver@: Specifies the TensorRT versions in x.y.z. format.
+--
+--     -   @cuda-ver@: Specifies the CUDA version in x.y format.
+--
+--     For example,
+--     @{\'gpu-code\': \'sm_72\', \'trt-ver\': \'6.0.1\', \'cuda-ver\': \'10.1\'}@
+--
+-- -   @ANDROID@: Compilation for the Android OS supports the following
+--     compiler options:
+--
+--     -   @ANDROID_PLATFORM@: Specifies the Android API levels. Available
+--         levels range from 21 to 29. For example,
+--         @{\'ANDROID_PLATFORM\': 28}@.
+--
+--     -   @mattr@: Add @{\'mattr\': [\'+neon\']}@ to compiler options if
+--         compiling for ARM 32-bit platform with NEON support.
+--
+-- -   @INFERENTIA@: Compilation for target ml_inf1 uses compiler options
+--     passed in as a JSON string. For example,
+--     @\"CompilerOptions\": \"\\\"--verbose 1 --num-neuroncores 2 -O2\\\"\"@.
+--
+--     For information about supported compiler options, see
+--     <https://github.com/aws/aws-neuron-sdk/blob/master/docs/neuron-cc/command-line-reference.md Neuron Compiler CLI>.
+--
+-- -   @CoreML@: Compilation for the CoreML OutputConfig$TargetDevice
+--     supports the following compiler options:
+--
+--     -   @class_labels@: Specifies the classification labels file name
+--         inside input tar.gz file. For example,
+--         @{\"class_labels\": \"imagenet_labels_1000.txt\"}@. Labels
+--         inside the txt file should be separated by newlines.
+--
+-- -   @EIA@: Compilation for the Elastic Inference Accelerator supports
+--     the following compiler options:
+--
+--     -   @precision_mode@: Specifies the precision of compiled artifacts.
+--         Supported values are @\"FP16\"@ and @\"FP32\"@. Default is
+--         @\"FP32\"@.
+--
+--     -   @signature_def_key@: Specifies the signature to use for models
+--         in SavedModel format. Defaults is TensorFlow\'s default
+--         signature def key.
+--
+--     -   @output_names@: Specifies a list of output tensor names for
+--         models in FrozenGraph format. Set at most one API field, either:
+--         @signature_def_key@ or @output_names@.
+--
+--     For example:
+--     @{\"precision_mode\": \"FP32\", \"output_names\": [\"output:0\"]}@
+outputConfig_compilerOptions :: Lens.Lens' OutputConfig (Prelude.Maybe Prelude.Text)
+outputConfig_compilerOptions = Lens.lens (\OutputConfig' {compilerOptions} -> compilerOptions) (\s@OutputConfig' {} a -> s {compilerOptions = a} :: OutputConfig)
+
+-- | The Amazon Web Services Key Management Service key (Amazon Web Services
+-- KMS) that Amazon SageMaker uses to encrypt your output models with
+-- Amazon S3 server-side encryption after compilation job. If you don\'t
+-- provide a KMS key ID, Amazon SageMaker uses the default KMS key for
+-- Amazon S3 for your role\'s account. For more information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KmsKeyId can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+outputConfig_kmsKeyId :: Lens.Lens' OutputConfig (Prelude.Maybe Prelude.Text)
+outputConfig_kmsKeyId = Lens.lens (\OutputConfig' {kmsKeyId} -> kmsKeyId) (\s@OutputConfig' {} a -> s {kmsKeyId = a} :: OutputConfig)
+
+-- | Identifies the target device or the machine learning instance that you
+-- want to run your model on after the compilation has completed.
+-- Alternatively, you can specify OS, architecture, and accelerator using
+-- TargetPlatform fields. It can be used instead of @TargetPlatform@.
+outputConfig_targetDevice :: Lens.Lens' OutputConfig (Prelude.Maybe TargetDevice)
+outputConfig_targetDevice = Lens.lens (\OutputConfig' {targetDevice} -> targetDevice) (\s@OutputConfig' {} a -> s {targetDevice = a} :: OutputConfig)
+
+-- | Contains information about a target platform that you want your model to
+-- run on, such as OS, architecture, and accelerators. It is an alternative
+-- of @TargetDevice@.
+--
+-- The following examples show how to configure the @TargetPlatform@ and
+-- @CompilerOptions@ JSON strings for popular target platforms:
+--
+-- -   Raspberry Pi 3 Model B+
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM_EABIHF\"},@
+--
+--     @ \"CompilerOptions\": {\'mattr\': [\'+neon\']}@
+--
+-- -   Jetson TX2
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM64\", \"Accelerator\": \"NVIDIA\"},@
+--
+--     @ \"CompilerOptions\": {\'gpu-code\': \'sm_62\', \'trt-ver\': \'6.0.1\', \'cuda-ver\': \'10.0\'}@
+--
+-- -   EC2 m5.2xlarge instance OS
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"X86_64\", \"Accelerator\": \"NVIDIA\"},@
+--
+--     @ \"CompilerOptions\": {\'mcpu\': \'skylake-avx512\'}@
+--
+-- -   RK3399
+--
+--     @\"TargetPlatform\": {\"Os\": \"LINUX\", \"Arch\": \"ARM64\", \"Accelerator\": \"MALI\"}@
+--
+-- -   ARMv7 phone (CPU)
+--
+--     @\"TargetPlatform\": {\"Os\": \"ANDROID\", \"Arch\": \"ARM_EABI\"},@
+--
+--     @ \"CompilerOptions\": {\'ANDROID_PLATFORM\': 25, \'mattr\': [\'+neon\']}@
+--
+-- -   ARMv8 phone (CPU)
+--
+--     @\"TargetPlatform\": {\"Os\": \"ANDROID\", \"Arch\": \"ARM64\"},@
+--
+--     @ \"CompilerOptions\": {\'ANDROID_PLATFORM\': 29}@
+outputConfig_targetPlatform :: Lens.Lens' OutputConfig (Prelude.Maybe TargetPlatform)
+outputConfig_targetPlatform = Lens.lens (\OutputConfig' {targetPlatform} -> targetPlatform) (\s@OutputConfig' {} a -> s {targetPlatform = a} :: OutputConfig)
+
+-- | Identifies the S3 bucket where you want Amazon SageMaker to store the
+-- model artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+outputConfig_s3OutputLocation :: Lens.Lens' OutputConfig Prelude.Text
+outputConfig_s3OutputLocation = Lens.lens (\OutputConfig' {s3OutputLocation} -> s3OutputLocation) (\s@OutputConfig' {} a -> s {s3OutputLocation = a} :: OutputConfig)
+
+instance Data.FromJSON OutputConfig where
+  parseJSON =
+    Data.withObject
+      "OutputConfig"
+      ( \x ->
+          OutputConfig'
+            Prelude.<$> (x Data..:? "CompilerOptions")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "TargetDevice")
+            Prelude.<*> (x Data..:? "TargetPlatform")
+            Prelude.<*> (x Data..: "S3OutputLocation")
+      )
+
+instance Prelude.Hashable OutputConfig where
+  hashWithSalt _salt OutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` compilerOptions
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` targetDevice
+      `Prelude.hashWithSalt` targetPlatform
+      `Prelude.hashWithSalt` s3OutputLocation
+
+instance Prelude.NFData OutputConfig where
+  rnf OutputConfig' {..} =
+    Prelude.rnf compilerOptions
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf targetDevice
+      `Prelude.seq` Prelude.rnf targetPlatform
+      `Prelude.seq` Prelude.rnf s3OutputLocation
+
+instance Data.ToJSON OutputConfig where
+  toJSON OutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CompilerOptions" Data..=)
+              Prelude.<$> compilerOptions,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("TargetDevice" Data..=) Prelude.<$> targetDevice,
+            ("TargetPlatform" Data..=)
+              Prelude.<$> targetPlatform,
+            Prelude.Just
+              ("S3OutputLocation" Data..= s3OutputLocation)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/OutputDataConfig.hs b/gen/Amazonka/SageMaker/Types/OutputDataConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OutputDataConfig.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OutputDataConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OutputDataConfig 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
+
+-- | Provides information about how to store model training results (model
+-- artifacts).
+--
+-- /See:/ 'newOutputDataConfig' smart constructor.
+data OutputDataConfig = OutputDataConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that SageMaker uses to encrypt the model artifacts at rest using
+    -- Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+    -- following formats:
+    --
+    -- -   \/\/ KMS Key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ KMS Key Alias
+    --
+    --     @\"alias\/ExampleAlias\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+    --
+    -- If you use a KMS key ID or an alias of your KMS key, the SageMaker
+    -- execution role must include permissions to call @kms:Encrypt@. If you
+    -- don\'t provide a KMS key ID, SageMaker uses the default KMS key for
+    -- Amazon S3 for your role\'s account. SageMaker uses server-side
+    -- encryption with KMS-managed keys for @OutputDataConfig@. If you use a
+    -- bucket policy with an @s3:PutObject@ permission that only allows objects
+    -- with server-side encryption, set the condition key of
+    -- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+    -- in the /Amazon Simple Storage Service Developer Guide./
+    --
+    -- The KMS key policy must grant permission to the IAM role that you
+    -- specify in your @CreateTrainingJob@, @CreateTransformJob@, or
+    -- @CreateHyperParameterTuningJob@ requests. For more information, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+    -- in the /Amazon Web Services Key Management Service Developer Guide/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the S3 path where you want SageMaker to store the model
+    -- artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputDataConfig' 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:
+--
+-- 'kmsKeyId', 'outputDataConfig_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that SageMaker uses to encrypt the model artifacts at rest using
+-- Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+-- following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+--
+-- If you use a KMS key ID or an alias of your KMS key, the SageMaker
+-- execution role must include permissions to call @kms:Encrypt@. If you
+-- don\'t provide a KMS key ID, SageMaker uses the default KMS key for
+-- Amazon S3 for your role\'s account. SageMaker uses server-side
+-- encryption with KMS-managed keys for @OutputDataConfig@. If you use a
+-- bucket policy with an @s3:PutObject@ permission that only allows objects
+-- with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateTrainingJob@, @CreateTransformJob@, or
+-- @CreateHyperParameterTuningJob@ requests. For more information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+--
+-- 's3OutputPath', 'outputDataConfig_s3OutputPath' - Identifies the S3 path where you want SageMaker to store the model
+-- artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+newOutputDataConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  OutputDataConfig
+newOutputDataConfig pS3OutputPath_ =
+  OutputDataConfig'
+    { kmsKeyId = Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that SageMaker uses to encrypt the model artifacts at rest using
+-- Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+-- following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+--
+-- If you use a KMS key ID or an alias of your KMS key, the SageMaker
+-- execution role must include permissions to call @kms:Encrypt@. If you
+-- don\'t provide a KMS key ID, SageMaker uses the default KMS key for
+-- Amazon S3 for your role\'s account. SageMaker uses server-side
+-- encryption with KMS-managed keys for @OutputDataConfig@. If you use a
+-- bucket policy with an @s3:PutObject@ permission that only allows objects
+-- with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateTrainingJob@, @CreateTransformJob@, or
+-- @CreateHyperParameterTuningJob@ requests. For more information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+outputDataConfig_kmsKeyId :: Lens.Lens' OutputDataConfig (Prelude.Maybe Prelude.Text)
+outputDataConfig_kmsKeyId = Lens.lens (\OutputDataConfig' {kmsKeyId} -> kmsKeyId) (\s@OutputDataConfig' {} a -> s {kmsKeyId = a} :: OutputDataConfig)
+
+-- | Identifies the S3 path where you want SageMaker to store the model
+-- artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+outputDataConfig_s3OutputPath :: Lens.Lens' OutputDataConfig Prelude.Text
+outputDataConfig_s3OutputPath = Lens.lens (\OutputDataConfig' {s3OutputPath} -> s3OutputPath) (\s@OutputDataConfig' {} a -> s {s3OutputPath = a} :: OutputDataConfig)
+
+instance Data.FromJSON OutputDataConfig where
+  parseJSON =
+    Data.withObject
+      "OutputDataConfig"
+      ( \x ->
+          OutputDataConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable OutputDataConfig where
+  hashWithSalt _salt OutputDataConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData OutputDataConfig where
+  rnf OutputDataConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON OutputDataConfig where
+  toJSON OutputDataConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/OutputParameter.hs b/gen/Amazonka/SageMaker/Types/OutputParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/OutputParameter.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OutputParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.OutputParameter 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
+
+-- | An output parameter of a pipeline step.
+--
+-- /See:/ 'newOutputParameter' smart constructor.
+data OutputParameter = OutputParameter'
+  { -- | The name of the output parameter.
+    name :: Prelude.Text,
+    -- | The value of the output parameter.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputParameter' 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:
+--
+-- 'name', 'outputParameter_name' - The name of the output parameter.
+--
+-- 'value', 'outputParameter_value' - The value of the output parameter.
+newOutputParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  OutputParameter
+newOutputParameter pName_ pValue_ =
+  OutputParameter' {name = pName_, value = pValue_}
+
+-- | The name of the output parameter.
+outputParameter_name :: Lens.Lens' OutputParameter Prelude.Text
+outputParameter_name = Lens.lens (\OutputParameter' {name} -> name) (\s@OutputParameter' {} a -> s {name = a} :: OutputParameter)
+
+-- | The value of the output parameter.
+outputParameter_value :: Lens.Lens' OutputParameter Prelude.Text
+outputParameter_value = Lens.lens (\OutputParameter' {value} -> value) (\s@OutputParameter' {} a -> s {value = a} :: OutputParameter)
+
+instance Data.FromJSON OutputParameter where
+  parseJSON =
+    Data.withObject
+      "OutputParameter"
+      ( \x ->
+          OutputParameter'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable OutputParameter where
+  hashWithSalt _salt OutputParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData OutputParameter where
+  rnf OutputParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON OutputParameter where
+  toJSON OutputParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ParallelismConfiguration.hs b/gen/Amazonka/SageMaker/Types/ParallelismConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ParallelismConfiguration.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ParallelismConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ParallelismConfiguration 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
+
+-- | Configuration that controls the parallelism of the pipeline. By default,
+-- the parallelism configuration specified applies to all executions of the
+-- pipeline unless overridden.
+--
+-- /See:/ 'newParallelismConfiguration' smart constructor.
+data ParallelismConfiguration = ParallelismConfiguration'
+  { -- | The max number of steps that can be executed in parallel.
+    maxParallelExecutionSteps :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParallelismConfiguration' 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:
+--
+-- 'maxParallelExecutionSteps', 'parallelismConfiguration_maxParallelExecutionSteps' - The max number of steps that can be executed in parallel.
+newParallelismConfiguration ::
+  -- | 'maxParallelExecutionSteps'
+  Prelude.Natural ->
+  ParallelismConfiguration
+newParallelismConfiguration
+  pMaxParallelExecutionSteps_ =
+    ParallelismConfiguration'
+      { maxParallelExecutionSteps =
+          pMaxParallelExecutionSteps_
+      }
+
+-- | The max number of steps that can be executed in parallel.
+parallelismConfiguration_maxParallelExecutionSteps :: Lens.Lens' ParallelismConfiguration Prelude.Natural
+parallelismConfiguration_maxParallelExecutionSteps = Lens.lens (\ParallelismConfiguration' {maxParallelExecutionSteps} -> maxParallelExecutionSteps) (\s@ParallelismConfiguration' {} a -> s {maxParallelExecutionSteps = a} :: ParallelismConfiguration)
+
+instance Data.FromJSON ParallelismConfiguration where
+  parseJSON =
+    Data.withObject
+      "ParallelismConfiguration"
+      ( \x ->
+          ParallelismConfiguration'
+            Prelude.<$> (x Data..: "MaxParallelExecutionSteps")
+      )
+
+instance Prelude.Hashable ParallelismConfiguration where
+  hashWithSalt _salt ParallelismConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxParallelExecutionSteps
+
+instance Prelude.NFData ParallelismConfiguration where
+  rnf ParallelismConfiguration' {..} =
+    Prelude.rnf maxParallelExecutionSteps
+
+instance Data.ToJSON ParallelismConfiguration where
+  toJSON ParallelismConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MaxParallelExecutionSteps"
+                  Data..= maxParallelExecutionSteps
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Parameter.hs b/gen/Amazonka/SageMaker/Types/Parameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Parameter.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Parameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Parameter 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
+
+-- | Assigns a value to a named Pipeline parameter.
+--
+-- /See:/ 'newParameter' smart constructor.
+data Parameter = Parameter'
+  { -- | The name of the parameter to assign a value to. This parameter name must
+    -- match a named parameter in the pipeline definition.
+    name :: Prelude.Text,
+    -- | The literal value for the parameter.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Parameter' 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:
+--
+-- 'name', 'parameter_name' - The name of the parameter to assign a value to. This parameter name must
+-- match a named parameter in the pipeline definition.
+--
+-- 'value', 'parameter_value' - The literal value for the parameter.
+newParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Parameter
+newParameter pName_ pValue_ =
+  Parameter' {name = pName_, value = pValue_}
+
+-- | The name of the parameter to assign a value to. This parameter name must
+-- match a named parameter in the pipeline definition.
+parameter_name :: Lens.Lens' Parameter Prelude.Text
+parameter_name = Lens.lens (\Parameter' {name} -> name) (\s@Parameter' {} a -> s {name = a} :: Parameter)
+
+-- | The literal value for the parameter.
+parameter_value :: Lens.Lens' Parameter Prelude.Text
+parameter_value = Lens.lens (\Parameter' {value} -> value) (\s@Parameter' {} a -> s {value = a} :: Parameter)
+
+instance Data.FromJSON Parameter where
+  parseJSON =
+    Data.withObject
+      "Parameter"
+      ( \x ->
+          Parameter'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Parameter where
+  hashWithSalt _salt Parameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Parameter where
+  rnf Parameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Parameter where
+  toJSON Parameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ParameterRange.hs b/gen/Amazonka/SageMaker/Types/ParameterRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ParameterRange.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ParameterRange
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ParameterRange 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 Amazonka.SageMaker.Types.CategoricalParameterRangeSpecification
+import Amazonka.SageMaker.Types.ContinuousParameterRangeSpecification
+import Amazonka.SageMaker.Types.IntegerParameterRangeSpecification
+
+-- | Defines the possible values for categorical, continuous, and integer
+-- hyperparameters to be used by an algorithm.
+--
+-- /See:/ 'newParameterRange' smart constructor.
+data ParameterRange = ParameterRange'
+  { -- | A @CategoricalParameterRangeSpecification@ object that defines the
+    -- possible values for a categorical hyperparameter.
+    categoricalParameterRangeSpecification :: Prelude.Maybe CategoricalParameterRangeSpecification,
+    -- | A @ContinuousParameterRangeSpecification@ object that defines the
+    -- possible values for a continuous hyperparameter.
+    continuousParameterRangeSpecification :: Prelude.Maybe ContinuousParameterRangeSpecification,
+    -- | A @IntegerParameterRangeSpecification@ object that defines the possible
+    -- values for an integer hyperparameter.
+    integerParameterRangeSpecification :: Prelude.Maybe IntegerParameterRangeSpecification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterRange' 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:
+--
+-- 'categoricalParameterRangeSpecification', 'parameterRange_categoricalParameterRangeSpecification' - A @CategoricalParameterRangeSpecification@ object that defines the
+-- possible values for a categorical hyperparameter.
+--
+-- 'continuousParameterRangeSpecification', 'parameterRange_continuousParameterRangeSpecification' - A @ContinuousParameterRangeSpecification@ object that defines the
+-- possible values for a continuous hyperparameter.
+--
+-- 'integerParameterRangeSpecification', 'parameterRange_integerParameterRangeSpecification' - A @IntegerParameterRangeSpecification@ object that defines the possible
+-- values for an integer hyperparameter.
+newParameterRange ::
+  ParameterRange
+newParameterRange =
+  ParameterRange'
+    { categoricalParameterRangeSpecification =
+        Prelude.Nothing,
+      continuousParameterRangeSpecification =
+        Prelude.Nothing,
+      integerParameterRangeSpecification = Prelude.Nothing
+    }
+
+-- | A @CategoricalParameterRangeSpecification@ object that defines the
+-- possible values for a categorical hyperparameter.
+parameterRange_categoricalParameterRangeSpecification :: Lens.Lens' ParameterRange (Prelude.Maybe CategoricalParameterRangeSpecification)
+parameterRange_categoricalParameterRangeSpecification = Lens.lens (\ParameterRange' {categoricalParameterRangeSpecification} -> categoricalParameterRangeSpecification) (\s@ParameterRange' {} a -> s {categoricalParameterRangeSpecification = a} :: ParameterRange)
+
+-- | A @ContinuousParameterRangeSpecification@ object that defines the
+-- possible values for a continuous hyperparameter.
+parameterRange_continuousParameterRangeSpecification :: Lens.Lens' ParameterRange (Prelude.Maybe ContinuousParameterRangeSpecification)
+parameterRange_continuousParameterRangeSpecification = Lens.lens (\ParameterRange' {continuousParameterRangeSpecification} -> continuousParameterRangeSpecification) (\s@ParameterRange' {} a -> s {continuousParameterRangeSpecification = a} :: ParameterRange)
+
+-- | A @IntegerParameterRangeSpecification@ object that defines the possible
+-- values for an integer hyperparameter.
+parameterRange_integerParameterRangeSpecification :: Lens.Lens' ParameterRange (Prelude.Maybe IntegerParameterRangeSpecification)
+parameterRange_integerParameterRangeSpecification = Lens.lens (\ParameterRange' {integerParameterRangeSpecification} -> integerParameterRangeSpecification) (\s@ParameterRange' {} a -> s {integerParameterRangeSpecification = a} :: ParameterRange)
+
+instance Data.FromJSON ParameterRange where
+  parseJSON =
+    Data.withObject
+      "ParameterRange"
+      ( \x ->
+          ParameterRange'
+            Prelude.<$> (x Data..:? "CategoricalParameterRangeSpecification")
+            Prelude.<*> (x Data..:? "ContinuousParameterRangeSpecification")
+            Prelude.<*> (x Data..:? "IntegerParameterRangeSpecification")
+      )
+
+instance Prelude.Hashable ParameterRange where
+  hashWithSalt _salt ParameterRange' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoricalParameterRangeSpecification
+      `Prelude.hashWithSalt` continuousParameterRangeSpecification
+      `Prelude.hashWithSalt` integerParameterRangeSpecification
+
+instance Prelude.NFData ParameterRange where
+  rnf ParameterRange' {..} =
+    Prelude.rnf categoricalParameterRangeSpecification
+      `Prelude.seq` Prelude.rnf continuousParameterRangeSpecification
+      `Prelude.seq` Prelude.rnf integerParameterRangeSpecification
+
+instance Data.ToJSON ParameterRange where
+  toJSON ParameterRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoricalParameterRangeSpecification" Data..=)
+              Prelude.<$> categoricalParameterRangeSpecification,
+            ("ContinuousParameterRangeSpecification" Data..=)
+              Prelude.<$> continuousParameterRangeSpecification,
+            ("IntegerParameterRangeSpecification" Data..=)
+              Prelude.<$> integerParameterRangeSpecification
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ParameterRanges.hs b/gen/Amazonka/SageMaker/Types/ParameterRanges.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ParameterRanges.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ParameterRanges
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ParameterRanges 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 Amazonka.SageMaker.Types.CategoricalParameterRange
+import Amazonka.SageMaker.Types.ContinuousParameterRange
+import Amazonka.SageMaker.Types.IntegerParameterRange
+
+-- | Specifies ranges of integer, continuous, and categorical hyperparameters
+-- that a hyperparameter tuning job searches. The hyperparameter tuning job
+-- launches training jobs with hyperparameter values within these ranges to
+-- find the combination of values that result in the training job with the
+-- best performance as measured by the objective metric of the
+-- hyperparameter tuning job.
+--
+-- The maximum number of items specified for @Array Members@ refers to the
+-- maximum number of hyperparameters for each range and also the maximum
+-- for the hyperparameter tuning job itself. That is, the sum of the number
+-- of hyperparameters for all the ranges can\'t exceed the maximum number
+-- specified.
+--
+-- /See:/ 'newParameterRanges' smart constructor.
+data ParameterRanges = ParameterRanges'
+  { -- | The array of CategoricalParameterRange objects that specify ranges of
+    -- categorical hyperparameters that a hyperparameter tuning job searches.
+    categoricalParameterRanges :: Prelude.Maybe [CategoricalParameterRange],
+    -- | The array of ContinuousParameterRange objects that specify ranges of
+    -- continuous hyperparameters that a hyperparameter tuning job searches.
+    continuousParameterRanges :: Prelude.Maybe [ContinuousParameterRange],
+    -- | The array of IntegerParameterRange objects that specify ranges of
+    -- integer hyperparameters that a hyperparameter tuning job searches.
+    integerParameterRanges :: Prelude.Maybe [IntegerParameterRange]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParameterRanges' 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:
+--
+-- 'categoricalParameterRanges', 'parameterRanges_categoricalParameterRanges' - The array of CategoricalParameterRange objects that specify ranges of
+-- categorical hyperparameters that a hyperparameter tuning job searches.
+--
+-- 'continuousParameterRanges', 'parameterRanges_continuousParameterRanges' - The array of ContinuousParameterRange objects that specify ranges of
+-- continuous hyperparameters that a hyperparameter tuning job searches.
+--
+-- 'integerParameterRanges', 'parameterRanges_integerParameterRanges' - The array of IntegerParameterRange objects that specify ranges of
+-- integer hyperparameters that a hyperparameter tuning job searches.
+newParameterRanges ::
+  ParameterRanges
+newParameterRanges =
+  ParameterRanges'
+    { categoricalParameterRanges =
+        Prelude.Nothing,
+      continuousParameterRanges = Prelude.Nothing,
+      integerParameterRanges = Prelude.Nothing
+    }
+
+-- | The array of CategoricalParameterRange objects that specify ranges of
+-- categorical hyperparameters that a hyperparameter tuning job searches.
+parameterRanges_categoricalParameterRanges :: Lens.Lens' ParameterRanges (Prelude.Maybe [CategoricalParameterRange])
+parameterRanges_categoricalParameterRanges = Lens.lens (\ParameterRanges' {categoricalParameterRanges} -> categoricalParameterRanges) (\s@ParameterRanges' {} a -> s {categoricalParameterRanges = a} :: ParameterRanges) Prelude.. Lens.mapping Lens.coerced
+
+-- | The array of ContinuousParameterRange objects that specify ranges of
+-- continuous hyperparameters that a hyperparameter tuning job searches.
+parameterRanges_continuousParameterRanges :: Lens.Lens' ParameterRanges (Prelude.Maybe [ContinuousParameterRange])
+parameterRanges_continuousParameterRanges = Lens.lens (\ParameterRanges' {continuousParameterRanges} -> continuousParameterRanges) (\s@ParameterRanges' {} a -> s {continuousParameterRanges = a} :: ParameterRanges) Prelude.. Lens.mapping Lens.coerced
+
+-- | The array of IntegerParameterRange objects that specify ranges of
+-- integer hyperparameters that a hyperparameter tuning job searches.
+parameterRanges_integerParameterRanges :: Lens.Lens' ParameterRanges (Prelude.Maybe [IntegerParameterRange])
+parameterRanges_integerParameterRanges = Lens.lens (\ParameterRanges' {integerParameterRanges} -> integerParameterRanges) (\s@ParameterRanges' {} a -> s {integerParameterRanges = a} :: ParameterRanges) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ParameterRanges where
+  parseJSON =
+    Data.withObject
+      "ParameterRanges"
+      ( \x ->
+          ParameterRanges'
+            Prelude.<$> ( x
+                            Data..:? "CategoricalParameterRanges"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "ContinuousParameterRanges"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "IntegerParameterRanges"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ParameterRanges where
+  hashWithSalt _salt ParameterRanges' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoricalParameterRanges
+      `Prelude.hashWithSalt` continuousParameterRanges
+      `Prelude.hashWithSalt` integerParameterRanges
+
+instance Prelude.NFData ParameterRanges where
+  rnf ParameterRanges' {..} =
+    Prelude.rnf categoricalParameterRanges
+      `Prelude.seq` Prelude.rnf continuousParameterRanges
+      `Prelude.seq` Prelude.rnf integerParameterRanges
+
+instance Data.ToJSON ParameterRanges where
+  toJSON ParameterRanges' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CategoricalParameterRanges" Data..=)
+              Prelude.<$> categoricalParameterRanges,
+            ("ContinuousParameterRanges" Data..=)
+              Prelude.<$> continuousParameterRanges,
+            ("IntegerParameterRanges" Data..=)
+              Prelude.<$> integerParameterRanges
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ParameterType.hs b/gen/Amazonka/SageMaker/Types/ParameterType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ParameterType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ParameterType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ParameterType
+  ( ParameterType
+      ( ..,
+        ParameterType_Categorical,
+        ParameterType_Continuous,
+        ParameterType_FreeText,
+        ParameterType_Integer
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ParameterType = ParameterType'
+  { fromParameterType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ParameterType_Categorical :: ParameterType
+pattern ParameterType_Categorical = ParameterType' "Categorical"
+
+pattern ParameterType_Continuous :: ParameterType
+pattern ParameterType_Continuous = ParameterType' "Continuous"
+
+pattern ParameterType_FreeText :: ParameterType
+pattern ParameterType_FreeText = ParameterType' "FreeText"
+
+pattern ParameterType_Integer :: ParameterType
+pattern ParameterType_Integer = ParameterType' "Integer"
+
+{-# COMPLETE
+  ParameterType_Categorical,
+  ParameterType_Continuous,
+  ParameterType_FreeText,
+  ParameterType_Integer,
+  ParameterType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Parent.hs b/gen/Amazonka/SageMaker/Types/Parent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Parent.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Parent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Parent 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
+
+-- | The trial that a trial component is associated with and the experiment
+-- the trial is part of. A component might not be associated with a trial.
+-- A component can be associated with multiple trials.
+--
+-- /See:/ 'newParent' smart constructor.
+data Parent = Parent'
+  { -- | The name of the experiment.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial.
+    trialName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Parent' 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:
+--
+-- 'experimentName', 'parent_experimentName' - The name of the experiment.
+--
+-- 'trialName', 'parent_trialName' - The name of the trial.
+newParent ::
+  Parent
+newParent =
+  Parent'
+    { experimentName = Prelude.Nothing,
+      trialName = Prelude.Nothing
+    }
+
+-- | The name of the experiment.
+parent_experimentName :: Lens.Lens' Parent (Prelude.Maybe Prelude.Text)
+parent_experimentName = Lens.lens (\Parent' {experimentName} -> experimentName) (\s@Parent' {} a -> s {experimentName = a} :: Parent)
+
+-- | The name of the trial.
+parent_trialName :: Lens.Lens' Parent (Prelude.Maybe Prelude.Text)
+parent_trialName = Lens.lens (\Parent' {trialName} -> trialName) (\s@Parent' {} a -> s {trialName = a} :: Parent)
+
+instance Data.FromJSON Parent where
+  parseJSON =
+    Data.withObject
+      "Parent"
+      ( \x ->
+          Parent'
+            Prelude.<$> (x Data..:? "ExperimentName")
+            Prelude.<*> (x Data..:? "TrialName")
+      )
+
+instance Prelude.Hashable Parent where
+  hashWithSalt _salt Parent' {..} =
+    _salt
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData Parent where
+  rnf Parent' {..} =
+    Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf trialName
diff --git a/gen/Amazonka/SageMaker/Types/ParentHyperParameterTuningJob.hs b/gen/Amazonka/SageMaker/Types/ParentHyperParameterTuningJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ParentHyperParameterTuningJob.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ParentHyperParameterTuningJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ParentHyperParameterTuningJob 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
+
+-- | A previously completed or stopped hyperparameter tuning job to be used
+-- as a starting point for a new hyperparameter tuning job.
+--
+-- /See:/ 'newParentHyperParameterTuningJob' smart constructor.
+data ParentHyperParameterTuningJob = ParentHyperParameterTuningJob'
+  { -- | The name of the hyperparameter tuning job to be used as a starting point
+    -- for a new hyperparameter tuning job.
+    hyperParameterTuningJobName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ParentHyperParameterTuningJob' 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:
+--
+-- 'hyperParameterTuningJobName', 'parentHyperParameterTuningJob_hyperParameterTuningJobName' - The name of the hyperparameter tuning job to be used as a starting point
+-- for a new hyperparameter tuning job.
+newParentHyperParameterTuningJob ::
+  ParentHyperParameterTuningJob
+newParentHyperParameterTuningJob =
+  ParentHyperParameterTuningJob'
+    { hyperParameterTuningJobName =
+        Prelude.Nothing
+    }
+
+-- | The name of the hyperparameter tuning job to be used as a starting point
+-- for a new hyperparameter tuning job.
+parentHyperParameterTuningJob_hyperParameterTuningJobName :: Lens.Lens' ParentHyperParameterTuningJob (Prelude.Maybe Prelude.Text)
+parentHyperParameterTuningJob_hyperParameterTuningJobName = Lens.lens (\ParentHyperParameterTuningJob' {hyperParameterTuningJobName} -> hyperParameterTuningJobName) (\s@ParentHyperParameterTuningJob' {} a -> s {hyperParameterTuningJobName = a} :: ParentHyperParameterTuningJob)
+
+instance Data.FromJSON ParentHyperParameterTuningJob where
+  parseJSON =
+    Data.withObject
+      "ParentHyperParameterTuningJob"
+      ( \x ->
+          ParentHyperParameterTuningJob'
+            Prelude.<$> (x Data..:? "HyperParameterTuningJobName")
+      )
+
+instance
+  Prelude.Hashable
+    ParentHyperParameterTuningJob
+  where
+  hashWithSalt _salt ParentHyperParameterTuningJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` hyperParameterTuningJobName
+
+instance Prelude.NFData ParentHyperParameterTuningJob where
+  rnf ParentHyperParameterTuningJob' {..} =
+    Prelude.rnf hyperParameterTuningJobName
+
+instance Data.ToJSON ParentHyperParameterTuningJob where
+  toJSON ParentHyperParameterTuningJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HyperParameterTuningJobName" Data..=)
+              Prelude.<$> hyperParameterTuningJobName
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/PendingDeploymentSummary.hs b/gen/Amazonka/SageMaker/Types/PendingDeploymentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PendingDeploymentSummary.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PendingDeploymentSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PendingDeploymentSummary 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 Amazonka.SageMaker.Types.PendingProductionVariantSummary
+
+-- | The summary of an in-progress deployment when an endpoint is creating or
+-- updating with a new endpoint configuration.
+--
+-- /See:/ 'newPendingDeploymentSummary' smart constructor.
+data PendingDeploymentSummary = PendingDeploymentSummary'
+  { -- | An array of PendingProductionVariantSummary objects, one for each model
+    -- hosted behind this endpoint for the in-progress deployment.
+    productionVariants :: Prelude.Maybe (Prelude.NonEmpty PendingProductionVariantSummary),
+    -- | An array of PendingProductionVariantSummary objects, one for each model
+    -- hosted behind this endpoint in shadow mode with production traffic
+    -- replicated from the model specified on @ProductionVariants@ for the
+    -- in-progress deployment.
+    shadowProductionVariants :: Prelude.Maybe (Prelude.NonEmpty PendingProductionVariantSummary),
+    -- | The start time of the deployment.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the endpoint configuration used in the deployment.
+    endpointConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PendingDeploymentSummary' 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:
+--
+-- 'productionVariants', 'pendingDeploymentSummary_productionVariants' - An array of PendingProductionVariantSummary objects, one for each model
+-- hosted behind this endpoint for the in-progress deployment.
+--
+-- 'shadowProductionVariants', 'pendingDeploymentSummary_shadowProductionVariants' - An array of PendingProductionVariantSummary objects, one for each model
+-- hosted behind this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@ for the
+-- in-progress deployment.
+--
+-- 'startTime', 'pendingDeploymentSummary_startTime' - The start time of the deployment.
+--
+-- 'endpointConfigName', 'pendingDeploymentSummary_endpointConfigName' - The name of the endpoint configuration used in the deployment.
+newPendingDeploymentSummary ::
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  PendingDeploymentSummary
+newPendingDeploymentSummary pEndpointConfigName_ =
+  PendingDeploymentSummary'
+    { productionVariants =
+        Prelude.Nothing,
+      shadowProductionVariants = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      endpointConfigName = pEndpointConfigName_
+    }
+
+-- | An array of PendingProductionVariantSummary objects, one for each model
+-- hosted behind this endpoint for the in-progress deployment.
+pendingDeploymentSummary_productionVariants :: Lens.Lens' PendingDeploymentSummary (Prelude.Maybe (Prelude.NonEmpty PendingProductionVariantSummary))
+pendingDeploymentSummary_productionVariants = Lens.lens (\PendingDeploymentSummary' {productionVariants} -> productionVariants) (\s@PendingDeploymentSummary' {} a -> s {productionVariants = a} :: PendingDeploymentSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of PendingProductionVariantSummary objects, one for each model
+-- hosted behind this endpoint in shadow mode with production traffic
+-- replicated from the model specified on @ProductionVariants@ for the
+-- in-progress deployment.
+pendingDeploymentSummary_shadowProductionVariants :: Lens.Lens' PendingDeploymentSummary (Prelude.Maybe (Prelude.NonEmpty PendingProductionVariantSummary))
+pendingDeploymentSummary_shadowProductionVariants = Lens.lens (\PendingDeploymentSummary' {shadowProductionVariants} -> shadowProductionVariants) (\s@PendingDeploymentSummary' {} a -> s {shadowProductionVariants = a} :: PendingDeploymentSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The start time of the deployment.
+pendingDeploymentSummary_startTime :: Lens.Lens' PendingDeploymentSummary (Prelude.Maybe Prelude.UTCTime)
+pendingDeploymentSummary_startTime = Lens.lens (\PendingDeploymentSummary' {startTime} -> startTime) (\s@PendingDeploymentSummary' {} a -> s {startTime = a} :: PendingDeploymentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the endpoint configuration used in the deployment.
+pendingDeploymentSummary_endpointConfigName :: Lens.Lens' PendingDeploymentSummary Prelude.Text
+pendingDeploymentSummary_endpointConfigName = Lens.lens (\PendingDeploymentSummary' {endpointConfigName} -> endpointConfigName) (\s@PendingDeploymentSummary' {} a -> s {endpointConfigName = a} :: PendingDeploymentSummary)
+
+instance Data.FromJSON PendingDeploymentSummary where
+  parseJSON =
+    Data.withObject
+      "PendingDeploymentSummary"
+      ( \x ->
+          PendingDeploymentSummary'
+            Prelude.<$> (x Data..:? "ProductionVariants")
+            Prelude.<*> (x Data..:? "ShadowProductionVariants")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..: "EndpointConfigName")
+      )
+
+instance Prelude.Hashable PendingDeploymentSummary where
+  hashWithSalt _salt PendingDeploymentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` productionVariants
+      `Prelude.hashWithSalt` shadowProductionVariants
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` endpointConfigName
+
+instance Prelude.NFData PendingDeploymentSummary where
+  rnf PendingDeploymentSummary' {..} =
+    Prelude.rnf productionVariants
+      `Prelude.seq` Prelude.rnf shadowProductionVariants
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf endpointConfigName
diff --git a/gen/Amazonka/SageMaker/Types/PendingProductionVariantSummary.hs b/gen/Amazonka/SageMaker/Types/PendingProductionVariantSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PendingProductionVariantSummary.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PendingProductionVariantSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PendingProductionVariantSummary 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 Amazonka.SageMaker.Types.DeployedImage
+import Amazonka.SageMaker.Types.ProductionVariantAcceleratorType
+import Amazonka.SageMaker.Types.ProductionVariantInstanceType
+import Amazonka.SageMaker.Types.ProductionVariantServerlessConfig
+import Amazonka.SageMaker.Types.ProductionVariantStatus
+
+-- | The production variant summary for a deployment when an endpoint is
+-- creating or updating with the @ @@CreateEndpoint@@ @ or
+-- @ @@UpdateEndpoint@@ @ operations. Describes the @VariantStatus @,
+-- weight and capacity for a production variant associated with an
+-- endpoint.
+--
+-- /See:/ 'newPendingProductionVariantSummary' smart constructor.
+data PendingProductionVariantSummary = PendingProductionVariantSummary'
+  { -- | The size of the Elastic Inference (EI) instance to use for the
+    -- production variant. EI instances provide on-demand GPU computing for
+    -- inference. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+    acceleratorType :: Prelude.Maybe ProductionVariantAcceleratorType,
+    -- | The number of instances associated with the variant.
+    currentInstanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The serverless configuration for the endpoint.
+    currentServerlessConfig :: Prelude.Maybe ProductionVariantServerlessConfig,
+    -- | The weight associated with the variant.
+    currentWeight :: Prelude.Maybe Prelude.Double,
+    -- | An array of @DeployedImage@ objects that specify the Amazon EC2
+    -- Container Registry paths of the inference images deployed on instances
+    -- of this @ProductionVariant@.
+    deployedImages :: Prelude.Maybe [DeployedImage],
+    -- | The number of instances requested in this deployment, as specified in
+    -- the endpoint configuration for the endpoint. The value is taken from the
+    -- request to the @ @@CreateEndpointConfig@@ @ operation.
+    desiredInstanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The serverless configuration requested for this deployment, as specified
+    -- in the endpoint configuration for the endpoint.
+    desiredServerlessConfig :: Prelude.Maybe ProductionVariantServerlessConfig,
+    -- | The requested weight for the variant in this deployment, as specified in
+    -- the endpoint configuration for the endpoint. The value is taken from the
+    -- request to the @ @@CreateEndpointConfig@@ @ operation.
+    desiredWeight :: Prelude.Maybe Prelude.Double,
+    -- | The type of instances associated with the variant.
+    instanceType :: Prelude.Maybe ProductionVariantInstanceType,
+    -- | The endpoint variant status which describes the current deployment stage
+    -- status or operational status.
+    variantStatus :: Prelude.Maybe [ProductionVariantStatus],
+    -- | The name of the variant.
+    variantName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PendingProductionVariantSummary' 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:
+--
+-- 'acceleratorType', 'pendingProductionVariantSummary_acceleratorType' - The size of the Elastic Inference (EI) instance to use for the
+-- production variant. EI instances provide on-demand GPU computing for
+-- inference. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+--
+-- 'currentInstanceCount', 'pendingProductionVariantSummary_currentInstanceCount' - The number of instances associated with the variant.
+--
+-- 'currentServerlessConfig', 'pendingProductionVariantSummary_currentServerlessConfig' - The serverless configuration for the endpoint.
+--
+-- 'currentWeight', 'pendingProductionVariantSummary_currentWeight' - The weight associated with the variant.
+--
+-- 'deployedImages', 'pendingProductionVariantSummary_deployedImages' - An array of @DeployedImage@ objects that specify the Amazon EC2
+-- Container Registry paths of the inference images deployed on instances
+-- of this @ProductionVariant@.
+--
+-- 'desiredInstanceCount', 'pendingProductionVariantSummary_desiredInstanceCount' - The number of instances requested in this deployment, as specified in
+-- the endpoint configuration for the endpoint. The value is taken from the
+-- request to the @ @@CreateEndpointConfig@@ @ operation.
+--
+-- 'desiredServerlessConfig', 'pendingProductionVariantSummary_desiredServerlessConfig' - The serverless configuration requested for this deployment, as specified
+-- in the endpoint configuration for the endpoint.
+--
+-- 'desiredWeight', 'pendingProductionVariantSummary_desiredWeight' - The requested weight for the variant in this deployment, as specified in
+-- the endpoint configuration for the endpoint. The value is taken from the
+-- request to the @ @@CreateEndpointConfig@@ @ operation.
+--
+-- 'instanceType', 'pendingProductionVariantSummary_instanceType' - The type of instances associated with the variant.
+--
+-- 'variantStatus', 'pendingProductionVariantSummary_variantStatus' - The endpoint variant status which describes the current deployment stage
+-- status or operational status.
+--
+-- 'variantName', 'pendingProductionVariantSummary_variantName' - The name of the variant.
+newPendingProductionVariantSummary ::
+  -- | 'variantName'
+  Prelude.Text ->
+  PendingProductionVariantSummary
+newPendingProductionVariantSummary pVariantName_ =
+  PendingProductionVariantSummary'
+    { acceleratorType =
+        Prelude.Nothing,
+      currentInstanceCount = Prelude.Nothing,
+      currentServerlessConfig = Prelude.Nothing,
+      currentWeight = Prelude.Nothing,
+      deployedImages = Prelude.Nothing,
+      desiredInstanceCount = Prelude.Nothing,
+      desiredServerlessConfig = Prelude.Nothing,
+      desiredWeight = Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      variantStatus = Prelude.Nothing,
+      variantName = pVariantName_
+    }
+
+-- | The size of the Elastic Inference (EI) instance to use for the
+-- production variant. EI instances provide on-demand GPU computing for
+-- inference. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+pendingProductionVariantSummary_acceleratorType :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe ProductionVariantAcceleratorType)
+pendingProductionVariantSummary_acceleratorType = Lens.lens (\PendingProductionVariantSummary' {acceleratorType} -> acceleratorType) (\s@PendingProductionVariantSummary' {} a -> s {acceleratorType = a} :: PendingProductionVariantSummary)
+
+-- | The number of instances associated with the variant.
+pendingProductionVariantSummary_currentInstanceCount :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe Prelude.Natural)
+pendingProductionVariantSummary_currentInstanceCount = Lens.lens (\PendingProductionVariantSummary' {currentInstanceCount} -> currentInstanceCount) (\s@PendingProductionVariantSummary' {} a -> s {currentInstanceCount = a} :: PendingProductionVariantSummary)
+
+-- | The serverless configuration for the endpoint.
+pendingProductionVariantSummary_currentServerlessConfig :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe ProductionVariantServerlessConfig)
+pendingProductionVariantSummary_currentServerlessConfig = Lens.lens (\PendingProductionVariantSummary' {currentServerlessConfig} -> currentServerlessConfig) (\s@PendingProductionVariantSummary' {} a -> s {currentServerlessConfig = a} :: PendingProductionVariantSummary)
+
+-- | The weight associated with the variant.
+pendingProductionVariantSummary_currentWeight :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe Prelude.Double)
+pendingProductionVariantSummary_currentWeight = Lens.lens (\PendingProductionVariantSummary' {currentWeight} -> currentWeight) (\s@PendingProductionVariantSummary' {} a -> s {currentWeight = a} :: PendingProductionVariantSummary)
+
+-- | An array of @DeployedImage@ objects that specify the Amazon EC2
+-- Container Registry paths of the inference images deployed on instances
+-- of this @ProductionVariant@.
+pendingProductionVariantSummary_deployedImages :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe [DeployedImage])
+pendingProductionVariantSummary_deployedImages = Lens.lens (\PendingProductionVariantSummary' {deployedImages} -> deployedImages) (\s@PendingProductionVariantSummary' {} a -> s {deployedImages = a} :: PendingProductionVariantSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of instances requested in this deployment, as specified in
+-- the endpoint configuration for the endpoint. The value is taken from the
+-- request to the @ @@CreateEndpointConfig@@ @ operation.
+pendingProductionVariantSummary_desiredInstanceCount :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe Prelude.Natural)
+pendingProductionVariantSummary_desiredInstanceCount = Lens.lens (\PendingProductionVariantSummary' {desiredInstanceCount} -> desiredInstanceCount) (\s@PendingProductionVariantSummary' {} a -> s {desiredInstanceCount = a} :: PendingProductionVariantSummary)
+
+-- | The serverless configuration requested for this deployment, as specified
+-- in the endpoint configuration for the endpoint.
+pendingProductionVariantSummary_desiredServerlessConfig :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe ProductionVariantServerlessConfig)
+pendingProductionVariantSummary_desiredServerlessConfig = Lens.lens (\PendingProductionVariantSummary' {desiredServerlessConfig} -> desiredServerlessConfig) (\s@PendingProductionVariantSummary' {} a -> s {desiredServerlessConfig = a} :: PendingProductionVariantSummary)
+
+-- | The requested weight for the variant in this deployment, as specified in
+-- the endpoint configuration for the endpoint. The value is taken from the
+-- request to the @ @@CreateEndpointConfig@@ @ operation.
+pendingProductionVariantSummary_desiredWeight :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe Prelude.Double)
+pendingProductionVariantSummary_desiredWeight = Lens.lens (\PendingProductionVariantSummary' {desiredWeight} -> desiredWeight) (\s@PendingProductionVariantSummary' {} a -> s {desiredWeight = a} :: PendingProductionVariantSummary)
+
+-- | The type of instances associated with the variant.
+pendingProductionVariantSummary_instanceType :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe ProductionVariantInstanceType)
+pendingProductionVariantSummary_instanceType = Lens.lens (\PendingProductionVariantSummary' {instanceType} -> instanceType) (\s@PendingProductionVariantSummary' {} a -> s {instanceType = a} :: PendingProductionVariantSummary)
+
+-- | The endpoint variant status which describes the current deployment stage
+-- status or operational status.
+pendingProductionVariantSummary_variantStatus :: Lens.Lens' PendingProductionVariantSummary (Prelude.Maybe [ProductionVariantStatus])
+pendingProductionVariantSummary_variantStatus = Lens.lens (\PendingProductionVariantSummary' {variantStatus} -> variantStatus) (\s@PendingProductionVariantSummary' {} a -> s {variantStatus = a} :: PendingProductionVariantSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the variant.
+pendingProductionVariantSummary_variantName :: Lens.Lens' PendingProductionVariantSummary Prelude.Text
+pendingProductionVariantSummary_variantName = Lens.lens (\PendingProductionVariantSummary' {variantName} -> variantName) (\s@PendingProductionVariantSummary' {} a -> s {variantName = a} :: PendingProductionVariantSummary)
+
+instance
+  Data.FromJSON
+    PendingProductionVariantSummary
+  where
+  parseJSON =
+    Data.withObject
+      "PendingProductionVariantSummary"
+      ( \x ->
+          PendingProductionVariantSummary'
+            Prelude.<$> (x Data..:? "AcceleratorType")
+            Prelude.<*> (x Data..:? "CurrentInstanceCount")
+            Prelude.<*> (x Data..:? "CurrentServerlessConfig")
+            Prelude.<*> (x Data..:? "CurrentWeight")
+            Prelude.<*> (x Data..:? "DeployedImages" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "DesiredInstanceCount")
+            Prelude.<*> (x Data..:? "DesiredServerlessConfig")
+            Prelude.<*> (x Data..:? "DesiredWeight")
+            Prelude.<*> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "VariantStatus" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "VariantName")
+      )
+
+instance
+  Prelude.Hashable
+    PendingProductionVariantSummary
+  where
+  hashWithSalt
+    _salt
+    PendingProductionVariantSummary' {..} =
+      _salt
+        `Prelude.hashWithSalt` acceleratorType
+        `Prelude.hashWithSalt` currentInstanceCount
+        `Prelude.hashWithSalt` currentServerlessConfig
+        `Prelude.hashWithSalt` currentWeight
+        `Prelude.hashWithSalt` deployedImages
+        `Prelude.hashWithSalt` desiredInstanceCount
+        `Prelude.hashWithSalt` desiredServerlessConfig
+        `Prelude.hashWithSalt` desiredWeight
+        `Prelude.hashWithSalt` instanceType
+        `Prelude.hashWithSalt` variantStatus
+        `Prelude.hashWithSalt` variantName
+
+instance
+  Prelude.NFData
+    PendingProductionVariantSummary
+  where
+  rnf PendingProductionVariantSummary' {..} =
+    Prelude.rnf acceleratorType
+      `Prelude.seq` Prelude.rnf currentInstanceCount
+      `Prelude.seq` Prelude.rnf currentServerlessConfig
+      `Prelude.seq` Prelude.rnf currentWeight
+      `Prelude.seq` Prelude.rnf deployedImages
+      `Prelude.seq` Prelude.rnf desiredInstanceCount
+      `Prelude.seq` Prelude.rnf desiredServerlessConfig
+      `Prelude.seq` Prelude.rnf desiredWeight
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf variantStatus
+      `Prelude.seq` Prelude.rnf variantName
diff --git a/gen/Amazonka/SageMaker/Types/Phase.hs b/gen/Amazonka/SageMaker/Types/Phase.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Phase.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Phase
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Phase 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
+
+-- | Defines the traffic pattern.
+--
+-- /See:/ 'newPhase' smart constructor.
+data Phase = Phase'
+  { -- | Specifies how long traffic phase should be.
+    durationInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies how many concurrent users to start with.
+    initialNumberOfUsers :: Prelude.Maybe Prelude.Natural,
+    -- | Specified how many new users to spawn in a minute.
+    spawnRate :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Phase' 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:
+--
+-- 'durationInSeconds', 'phase_durationInSeconds' - Specifies how long traffic phase should be.
+--
+-- 'initialNumberOfUsers', 'phase_initialNumberOfUsers' - Specifies how many concurrent users to start with.
+--
+-- 'spawnRate', 'phase_spawnRate' - Specified how many new users to spawn in a minute.
+newPhase ::
+  Phase
+newPhase =
+  Phase'
+    { durationInSeconds = Prelude.Nothing,
+      initialNumberOfUsers = Prelude.Nothing,
+      spawnRate = Prelude.Nothing
+    }
+
+-- | Specifies how long traffic phase should be.
+phase_durationInSeconds :: Lens.Lens' Phase (Prelude.Maybe Prelude.Natural)
+phase_durationInSeconds = Lens.lens (\Phase' {durationInSeconds} -> durationInSeconds) (\s@Phase' {} a -> s {durationInSeconds = a} :: Phase)
+
+-- | Specifies how many concurrent users to start with.
+phase_initialNumberOfUsers :: Lens.Lens' Phase (Prelude.Maybe Prelude.Natural)
+phase_initialNumberOfUsers = Lens.lens (\Phase' {initialNumberOfUsers} -> initialNumberOfUsers) (\s@Phase' {} a -> s {initialNumberOfUsers = a} :: Phase)
+
+-- | Specified how many new users to spawn in a minute.
+phase_spawnRate :: Lens.Lens' Phase (Prelude.Maybe Prelude.Natural)
+phase_spawnRate = Lens.lens (\Phase' {spawnRate} -> spawnRate) (\s@Phase' {} a -> s {spawnRate = a} :: Phase)
+
+instance Data.FromJSON Phase where
+  parseJSON =
+    Data.withObject
+      "Phase"
+      ( \x ->
+          Phase'
+            Prelude.<$> (x Data..:? "DurationInSeconds")
+            Prelude.<*> (x Data..:? "InitialNumberOfUsers")
+            Prelude.<*> (x Data..:? "SpawnRate")
+      )
+
+instance Prelude.Hashable Phase where
+  hashWithSalt _salt Phase' {..} =
+    _salt
+      `Prelude.hashWithSalt` durationInSeconds
+      `Prelude.hashWithSalt` initialNumberOfUsers
+      `Prelude.hashWithSalt` spawnRate
+
+instance Prelude.NFData Phase where
+  rnf Phase' {..} =
+    Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf initialNumberOfUsers
+      `Prelude.seq` Prelude.rnf spawnRate
+
+instance Data.ToJSON Phase where
+  toJSON Phase' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DurationInSeconds" Data..=)
+              Prelude.<$> durationInSeconds,
+            ("InitialNumberOfUsers" Data..=)
+              Prelude.<$> initialNumberOfUsers,
+            ("SpawnRate" Data..=) Prelude.<$> spawnRate
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Pipeline.hs b/gen/Amazonka/SageMaker/Types/Pipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Pipeline.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Pipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Pipeline 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 Amazonka.SageMaker.Types.ParallelismConfiguration
+import Amazonka.SageMaker.Types.PipelineStatus
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | A SageMaker Model Building Pipeline instance.
+--
+-- /See:/ 'newPipeline' smart constructor.
+data Pipeline = Pipeline'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | The creation time of the pipeline.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The time that the pipeline was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The time when the pipeline was last run.
+    lastRunTime :: Prelude.Maybe Data.POSIX,
+    -- | The parallelism configuration applied to the pipeline.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The Amazon Resource Name (ARN) of the pipeline.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pipeline.
+    pipelineDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline.
+    pipelineDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the pipeline.
+    pipelineName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the pipeline.
+    pipelineStatus :: Prelude.Maybe PipelineStatus,
+    -- | The Amazon Resource Name (ARN) of the role that created the pipeline.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags that apply to the pipeline.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Pipeline' 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:
+--
+-- 'createdBy', 'pipeline_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'pipeline_creationTime' - The creation time of the pipeline.
+--
+-- 'lastModifiedBy', 'pipeline_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'pipeline_lastModifiedTime' - The time that the pipeline was last modified.
+--
+-- 'lastRunTime', 'pipeline_lastRunTime' - The time when the pipeline was last run.
+--
+-- 'parallelismConfiguration', 'pipeline_parallelismConfiguration' - The parallelism configuration applied to the pipeline.
+--
+-- 'pipelineArn', 'pipeline_pipelineArn' - The Amazon Resource Name (ARN) of the pipeline.
+--
+-- 'pipelineDescription', 'pipeline_pipelineDescription' - The description of the pipeline.
+--
+-- 'pipelineDisplayName', 'pipeline_pipelineDisplayName' - The display name of the pipeline.
+--
+-- 'pipelineName', 'pipeline_pipelineName' - The name of the pipeline.
+--
+-- 'pipelineStatus', 'pipeline_pipelineStatus' - The status of the pipeline.
+--
+-- 'roleArn', 'pipeline_roleArn' - The Amazon Resource Name (ARN) of the role that created the pipeline.
+--
+-- 'tags', 'pipeline_tags' - A list of tags that apply to the pipeline.
+newPipeline ::
+  Pipeline
+newPipeline =
+  Pipeline'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lastRunTime = Prelude.Nothing,
+      parallelismConfiguration = Prelude.Nothing,
+      pipelineArn = Prelude.Nothing,
+      pipelineDescription = Prelude.Nothing,
+      pipelineDisplayName = Prelude.Nothing,
+      pipelineName = Prelude.Nothing,
+      pipelineStatus = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+pipeline_createdBy :: Lens.Lens' Pipeline (Prelude.Maybe UserContext)
+pipeline_createdBy = Lens.lens (\Pipeline' {createdBy} -> createdBy) (\s@Pipeline' {} a -> s {createdBy = a} :: Pipeline)
+
+-- | The creation time of the pipeline.
+pipeline_creationTime :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.UTCTime)
+pipeline_creationTime = Lens.lens (\Pipeline' {creationTime} -> creationTime) (\s@Pipeline' {} a -> s {creationTime = a} :: Pipeline) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+pipeline_lastModifiedBy :: Lens.Lens' Pipeline (Prelude.Maybe UserContext)
+pipeline_lastModifiedBy = Lens.lens (\Pipeline' {lastModifiedBy} -> lastModifiedBy) (\s@Pipeline' {} a -> s {lastModifiedBy = a} :: Pipeline)
+
+-- | The time that the pipeline was last modified.
+pipeline_lastModifiedTime :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.UTCTime)
+pipeline_lastModifiedTime = Lens.lens (\Pipeline' {lastModifiedTime} -> lastModifiedTime) (\s@Pipeline' {} a -> s {lastModifiedTime = a} :: Pipeline) Prelude.. Lens.mapping Data._Time
+
+-- | The time when the pipeline was last run.
+pipeline_lastRunTime :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.UTCTime)
+pipeline_lastRunTime = Lens.lens (\Pipeline' {lastRunTime} -> lastRunTime) (\s@Pipeline' {} a -> s {lastRunTime = a} :: Pipeline) Prelude.. Lens.mapping Data._Time
+
+-- | The parallelism configuration applied to the pipeline.
+pipeline_parallelismConfiguration :: Lens.Lens' Pipeline (Prelude.Maybe ParallelismConfiguration)
+pipeline_parallelismConfiguration = Lens.lens (\Pipeline' {parallelismConfiguration} -> parallelismConfiguration) (\s@Pipeline' {} a -> s {parallelismConfiguration = a} :: Pipeline)
+
+-- | The Amazon Resource Name (ARN) of the pipeline.
+pipeline_pipelineArn :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.Text)
+pipeline_pipelineArn = Lens.lens (\Pipeline' {pipelineArn} -> pipelineArn) (\s@Pipeline' {} a -> s {pipelineArn = a} :: Pipeline)
+
+-- | The description of the pipeline.
+pipeline_pipelineDescription :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.Text)
+pipeline_pipelineDescription = Lens.lens (\Pipeline' {pipelineDescription} -> pipelineDescription) (\s@Pipeline' {} a -> s {pipelineDescription = a} :: Pipeline)
+
+-- | The display name of the pipeline.
+pipeline_pipelineDisplayName :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.Text)
+pipeline_pipelineDisplayName = Lens.lens (\Pipeline' {pipelineDisplayName} -> pipelineDisplayName) (\s@Pipeline' {} a -> s {pipelineDisplayName = a} :: Pipeline)
+
+-- | The name of the pipeline.
+pipeline_pipelineName :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.Text)
+pipeline_pipelineName = Lens.lens (\Pipeline' {pipelineName} -> pipelineName) (\s@Pipeline' {} a -> s {pipelineName = a} :: Pipeline)
+
+-- | The status of the pipeline.
+pipeline_pipelineStatus :: Lens.Lens' Pipeline (Prelude.Maybe PipelineStatus)
+pipeline_pipelineStatus = Lens.lens (\Pipeline' {pipelineStatus} -> pipelineStatus) (\s@Pipeline' {} a -> s {pipelineStatus = a} :: Pipeline)
+
+-- | The Amazon Resource Name (ARN) of the role that created the pipeline.
+pipeline_roleArn :: Lens.Lens' Pipeline (Prelude.Maybe Prelude.Text)
+pipeline_roleArn = Lens.lens (\Pipeline' {roleArn} -> roleArn) (\s@Pipeline' {} a -> s {roleArn = a} :: Pipeline)
+
+-- | A list of tags that apply to the pipeline.
+pipeline_tags :: Lens.Lens' Pipeline (Prelude.Maybe [Tag])
+pipeline_tags = Lens.lens (\Pipeline' {tags} -> tags) (\s@Pipeline' {} a -> s {tags = a} :: Pipeline) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Pipeline where
+  parseJSON =
+    Data.withObject
+      "Pipeline"
+      ( \x ->
+          Pipeline'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "LastRunTime")
+            Prelude.<*> (x Data..:? "ParallelismConfiguration")
+            Prelude.<*> (x Data..:? "PipelineArn")
+            Prelude.<*> (x Data..:? "PipelineDescription")
+            Prelude.<*> (x Data..:? "PipelineDisplayName")
+            Prelude.<*> (x Data..:? "PipelineName")
+            Prelude.<*> (x Data..:? "PipelineStatus")
+            Prelude.<*> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Pipeline where
+  hashWithSalt _salt Pipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` lastRunTime
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineArn
+      `Prelude.hashWithSalt` pipelineDescription
+      `Prelude.hashWithSalt` pipelineDisplayName
+      `Prelude.hashWithSalt` pipelineName
+      `Prelude.hashWithSalt` pipelineStatus
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Pipeline where
+  rnf Pipeline' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lastRunTime
+      `Prelude.seq` Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf pipelineDescription
+      `Prelude.seq` Prelude.rnf pipelineDisplayName
+      `Prelude.seq` Prelude.rnf pipelineName
+      `Prelude.seq` Prelude.rnf pipelineStatus
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/PipelineDefinitionS3Location.hs b/gen/Amazonka/SageMaker/Types/PipelineDefinitionS3Location.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineDefinitionS3Location.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineDefinitionS3Location
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineDefinitionS3Location 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
+
+-- | The location of the pipeline definition stored in Amazon S3.
+--
+-- /See:/ 'newPipelineDefinitionS3Location' smart constructor.
+data PipelineDefinitionS3Location = PipelineDefinitionS3Location'
+  { -- | Version Id of the pipeline definition file. If not specified, Amazon
+    -- SageMaker will retrieve the latest version.
+    versionId :: Prelude.Maybe Prelude.Text,
+    -- | Name of the S3 bucket.
+    bucket :: Prelude.Text,
+    -- | The object key (or key name) uniquely identifies the object in an S3
+    -- bucket.
+    objectKey :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineDefinitionS3Location' 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:
+--
+-- 'versionId', 'pipelineDefinitionS3Location_versionId' - Version Id of the pipeline definition file. If not specified, Amazon
+-- SageMaker will retrieve the latest version.
+--
+-- 'bucket', 'pipelineDefinitionS3Location_bucket' - Name of the S3 bucket.
+--
+-- 'objectKey', 'pipelineDefinitionS3Location_objectKey' - The object key (or key name) uniquely identifies the object in an S3
+-- bucket.
+newPipelineDefinitionS3Location ::
+  -- | 'bucket'
+  Prelude.Text ->
+  -- | 'objectKey'
+  Prelude.Text ->
+  PipelineDefinitionS3Location
+newPipelineDefinitionS3Location pBucket_ pObjectKey_ =
+  PipelineDefinitionS3Location'
+    { versionId =
+        Prelude.Nothing,
+      bucket = pBucket_,
+      objectKey = pObjectKey_
+    }
+
+-- | Version Id of the pipeline definition file. If not specified, Amazon
+-- SageMaker will retrieve the latest version.
+pipelineDefinitionS3Location_versionId :: Lens.Lens' PipelineDefinitionS3Location (Prelude.Maybe Prelude.Text)
+pipelineDefinitionS3Location_versionId = Lens.lens (\PipelineDefinitionS3Location' {versionId} -> versionId) (\s@PipelineDefinitionS3Location' {} a -> s {versionId = a} :: PipelineDefinitionS3Location)
+
+-- | Name of the S3 bucket.
+pipelineDefinitionS3Location_bucket :: Lens.Lens' PipelineDefinitionS3Location Prelude.Text
+pipelineDefinitionS3Location_bucket = Lens.lens (\PipelineDefinitionS3Location' {bucket} -> bucket) (\s@PipelineDefinitionS3Location' {} a -> s {bucket = a} :: PipelineDefinitionS3Location)
+
+-- | The object key (or key name) uniquely identifies the object in an S3
+-- bucket.
+pipelineDefinitionS3Location_objectKey :: Lens.Lens' PipelineDefinitionS3Location Prelude.Text
+pipelineDefinitionS3Location_objectKey = Lens.lens (\PipelineDefinitionS3Location' {objectKey} -> objectKey) (\s@PipelineDefinitionS3Location' {} a -> s {objectKey = a} :: PipelineDefinitionS3Location)
+
+instance
+  Prelude.Hashable
+    PipelineDefinitionS3Location
+  where
+  hashWithSalt _salt PipelineDefinitionS3Location' {..} =
+    _salt
+      `Prelude.hashWithSalt` versionId
+      `Prelude.hashWithSalt` bucket
+      `Prelude.hashWithSalt` objectKey
+
+instance Prelude.NFData PipelineDefinitionS3Location where
+  rnf PipelineDefinitionS3Location' {..} =
+    Prelude.rnf versionId
+      `Prelude.seq` Prelude.rnf bucket
+      `Prelude.seq` Prelude.rnf objectKey
+
+instance Data.ToJSON PipelineDefinitionS3Location where
+  toJSON PipelineDefinitionS3Location' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VersionId" Data..=) Prelude.<$> versionId,
+            Prelude.Just ("Bucket" Data..= bucket),
+            Prelude.Just ("ObjectKey" Data..= objectKey)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/PipelineExecution.hs b/gen/Amazonka/SageMaker/Types/PipelineExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineExecution.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineExecution 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 Amazonka.SageMaker.Types.ParallelismConfiguration
+import Amazonka.SageMaker.Types.Parameter
+import Amazonka.SageMaker.Types.PipelineExecutionStatus
+import Amazonka.SageMaker.Types.PipelineExperimentConfig
+import Amazonka.SageMaker.Types.UserContext
+
+-- | An execution of a pipeline.
+--
+-- /See:/ 'newPipelineExecution' smart constructor.
+data PipelineExecution = PipelineExecution'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | The creation time of the pipeline execution.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | If the execution failed, a message describing why.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | The time that the pipeline execution was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The parallelism configuration applied to the pipeline execution.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The Amazon Resource Name (ARN) of the pipeline that was executed.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pipeline execution.
+    pipelineExecutionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline execution.
+    pipelineExecutionDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the pipeline status.
+    pipelineExecutionStatus :: Prelude.Maybe PipelineExecutionStatus,
+    pipelineExperimentConfig :: Prelude.Maybe PipelineExperimentConfig,
+    -- | Contains a list of pipeline parameters. This list can be empty.
+    pipelineParameters :: Prelude.Maybe [Parameter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineExecution' 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:
+--
+-- 'createdBy', 'pipelineExecution_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'pipelineExecution_creationTime' - The creation time of the pipeline execution.
+--
+-- 'failureReason', 'pipelineExecution_failureReason' - If the execution failed, a message describing why.
+--
+-- 'lastModifiedBy', 'pipelineExecution_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'pipelineExecution_lastModifiedTime' - The time that the pipeline execution was last modified.
+--
+-- 'parallelismConfiguration', 'pipelineExecution_parallelismConfiguration' - The parallelism configuration applied to the pipeline execution.
+--
+-- 'pipelineArn', 'pipelineExecution_pipelineArn' - The Amazon Resource Name (ARN) of the pipeline that was executed.
+--
+-- 'pipelineExecutionArn', 'pipelineExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'pipelineExecutionDescription', 'pipelineExecution_pipelineExecutionDescription' - The description of the pipeline execution.
+--
+-- 'pipelineExecutionDisplayName', 'pipelineExecution_pipelineExecutionDisplayName' - The display name of the pipeline execution.
+--
+-- 'pipelineExecutionStatus', 'pipelineExecution_pipelineExecutionStatus' - The status of the pipeline status.
+--
+-- 'pipelineExperimentConfig', 'pipelineExecution_pipelineExperimentConfig' - Undocumented member.
+--
+-- 'pipelineParameters', 'pipelineExecution_pipelineParameters' - Contains a list of pipeline parameters. This list can be empty.
+newPipelineExecution ::
+  PipelineExecution
+newPipelineExecution =
+  PipelineExecution'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      parallelismConfiguration = Prelude.Nothing,
+      pipelineArn = Prelude.Nothing,
+      pipelineExecutionArn = Prelude.Nothing,
+      pipelineExecutionDescription = Prelude.Nothing,
+      pipelineExecutionDisplayName = Prelude.Nothing,
+      pipelineExecutionStatus = Prelude.Nothing,
+      pipelineExperimentConfig = Prelude.Nothing,
+      pipelineParameters = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+pipelineExecution_createdBy :: Lens.Lens' PipelineExecution (Prelude.Maybe UserContext)
+pipelineExecution_createdBy = Lens.lens (\PipelineExecution' {createdBy} -> createdBy) (\s@PipelineExecution' {} a -> s {createdBy = a} :: PipelineExecution)
+
+-- | The creation time of the pipeline execution.
+pipelineExecution_creationTime :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.UTCTime)
+pipelineExecution_creationTime = Lens.lens (\PipelineExecution' {creationTime} -> creationTime) (\s@PipelineExecution' {} a -> s {creationTime = a} :: PipelineExecution) Prelude.. Lens.mapping Data._Time
+
+-- | If the execution failed, a message describing why.
+pipelineExecution_failureReason :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.Text)
+pipelineExecution_failureReason = Lens.lens (\PipelineExecution' {failureReason} -> failureReason) (\s@PipelineExecution' {} a -> s {failureReason = a} :: PipelineExecution)
+
+-- | Undocumented member.
+pipelineExecution_lastModifiedBy :: Lens.Lens' PipelineExecution (Prelude.Maybe UserContext)
+pipelineExecution_lastModifiedBy = Lens.lens (\PipelineExecution' {lastModifiedBy} -> lastModifiedBy) (\s@PipelineExecution' {} a -> s {lastModifiedBy = a} :: PipelineExecution)
+
+-- | The time that the pipeline execution was last modified.
+pipelineExecution_lastModifiedTime :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.UTCTime)
+pipelineExecution_lastModifiedTime = Lens.lens (\PipelineExecution' {lastModifiedTime} -> lastModifiedTime) (\s@PipelineExecution' {} a -> s {lastModifiedTime = a} :: PipelineExecution) Prelude.. Lens.mapping Data._Time
+
+-- | The parallelism configuration applied to the pipeline execution.
+pipelineExecution_parallelismConfiguration :: Lens.Lens' PipelineExecution (Prelude.Maybe ParallelismConfiguration)
+pipelineExecution_parallelismConfiguration = Lens.lens (\PipelineExecution' {parallelismConfiguration} -> parallelismConfiguration) (\s@PipelineExecution' {} a -> s {parallelismConfiguration = a} :: PipelineExecution)
+
+-- | The Amazon Resource Name (ARN) of the pipeline that was executed.
+pipelineExecution_pipelineArn :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.Text)
+pipelineExecution_pipelineArn = Lens.lens (\PipelineExecution' {pipelineArn} -> pipelineArn) (\s@PipelineExecution' {} a -> s {pipelineArn = a} :: PipelineExecution)
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+pipelineExecution_pipelineExecutionArn :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.Text)
+pipelineExecution_pipelineExecutionArn = Lens.lens (\PipelineExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@PipelineExecution' {} a -> s {pipelineExecutionArn = a} :: PipelineExecution)
+
+-- | The description of the pipeline execution.
+pipelineExecution_pipelineExecutionDescription :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.Text)
+pipelineExecution_pipelineExecutionDescription = Lens.lens (\PipelineExecution' {pipelineExecutionDescription} -> pipelineExecutionDescription) (\s@PipelineExecution' {} a -> s {pipelineExecutionDescription = a} :: PipelineExecution)
+
+-- | The display name of the pipeline execution.
+pipelineExecution_pipelineExecutionDisplayName :: Lens.Lens' PipelineExecution (Prelude.Maybe Prelude.Text)
+pipelineExecution_pipelineExecutionDisplayName = Lens.lens (\PipelineExecution' {pipelineExecutionDisplayName} -> pipelineExecutionDisplayName) (\s@PipelineExecution' {} a -> s {pipelineExecutionDisplayName = a} :: PipelineExecution)
+
+-- | The status of the pipeline status.
+pipelineExecution_pipelineExecutionStatus :: Lens.Lens' PipelineExecution (Prelude.Maybe PipelineExecutionStatus)
+pipelineExecution_pipelineExecutionStatus = Lens.lens (\PipelineExecution' {pipelineExecutionStatus} -> pipelineExecutionStatus) (\s@PipelineExecution' {} a -> s {pipelineExecutionStatus = a} :: PipelineExecution)
+
+-- | Undocumented member.
+pipelineExecution_pipelineExperimentConfig :: Lens.Lens' PipelineExecution (Prelude.Maybe PipelineExperimentConfig)
+pipelineExecution_pipelineExperimentConfig = Lens.lens (\PipelineExecution' {pipelineExperimentConfig} -> pipelineExperimentConfig) (\s@PipelineExecution' {} a -> s {pipelineExperimentConfig = a} :: PipelineExecution)
+
+-- | Contains a list of pipeline parameters. This list can be empty.
+pipelineExecution_pipelineParameters :: Lens.Lens' PipelineExecution (Prelude.Maybe [Parameter])
+pipelineExecution_pipelineParameters = Lens.lens (\PipelineExecution' {pipelineParameters} -> pipelineParameters) (\s@PipelineExecution' {} a -> s {pipelineParameters = a} :: PipelineExecution) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PipelineExecution where
+  parseJSON =
+    Data.withObject
+      "PipelineExecution"
+      ( \x ->
+          PipelineExecution'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ParallelismConfiguration")
+            Prelude.<*> (x Data..:? "PipelineArn")
+            Prelude.<*> (x Data..:? "PipelineExecutionArn")
+            Prelude.<*> (x Data..:? "PipelineExecutionDescription")
+            Prelude.<*> (x Data..:? "PipelineExecutionDisplayName")
+            Prelude.<*> (x Data..:? "PipelineExecutionStatus")
+            Prelude.<*> (x Data..:? "PipelineExperimentConfig")
+            Prelude.<*> ( x
+                            Data..:? "PipelineParameters"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PipelineExecution where
+  hashWithSalt _salt PipelineExecution' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineArn
+      `Prelude.hashWithSalt` pipelineExecutionArn
+      `Prelude.hashWithSalt` pipelineExecutionDescription
+      `Prelude.hashWithSalt` pipelineExecutionDisplayName
+      `Prelude.hashWithSalt` pipelineExecutionStatus
+      `Prelude.hashWithSalt` pipelineExperimentConfig
+      `Prelude.hashWithSalt` pipelineParameters
+
+instance Prelude.NFData PipelineExecution where
+  rnf PipelineExecution' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf pipelineExecutionDescription
+      `Prelude.seq` Prelude.rnf pipelineExecutionDisplayName
+      `Prelude.seq` Prelude.rnf pipelineExecutionStatus
+      `Prelude.seq` Prelude.rnf pipelineExperimentConfig
+      `Prelude.seq` Prelude.rnf pipelineParameters
diff --git a/gen/Amazonka/SageMaker/Types/PipelineExecutionStatus.hs b/gen/Amazonka/SageMaker/Types/PipelineExecutionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineExecutionStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.PipelineExecutionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineExecutionStatus
+  ( PipelineExecutionStatus
+      ( ..,
+        PipelineExecutionStatus_Executing,
+        PipelineExecutionStatus_Failed,
+        PipelineExecutionStatus_Stopped,
+        PipelineExecutionStatus_Stopping,
+        PipelineExecutionStatus_Succeeded
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PipelineExecutionStatus = PipelineExecutionStatus'
+  { fromPipelineExecutionStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PipelineExecutionStatus_Executing :: PipelineExecutionStatus
+pattern PipelineExecutionStatus_Executing = PipelineExecutionStatus' "Executing"
+
+pattern PipelineExecutionStatus_Failed :: PipelineExecutionStatus
+pattern PipelineExecutionStatus_Failed = PipelineExecutionStatus' "Failed"
+
+pattern PipelineExecutionStatus_Stopped :: PipelineExecutionStatus
+pattern PipelineExecutionStatus_Stopped = PipelineExecutionStatus' "Stopped"
+
+pattern PipelineExecutionStatus_Stopping :: PipelineExecutionStatus
+pattern PipelineExecutionStatus_Stopping = PipelineExecutionStatus' "Stopping"
+
+pattern PipelineExecutionStatus_Succeeded :: PipelineExecutionStatus
+pattern PipelineExecutionStatus_Succeeded = PipelineExecutionStatus' "Succeeded"
+
+{-# COMPLETE
+  PipelineExecutionStatus_Executing,
+  PipelineExecutionStatus_Failed,
+  PipelineExecutionStatus_Stopped,
+  PipelineExecutionStatus_Stopping,
+  PipelineExecutionStatus_Succeeded,
+  PipelineExecutionStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/PipelineExecutionStep.hs b/gen/Amazonka/SageMaker/Types/PipelineExecutionStep.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineExecutionStep.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineExecutionStep
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineExecutionStep 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 Amazonka.SageMaker.Types.CacheHitResult
+import Amazonka.SageMaker.Types.PipelineExecutionStepMetadata
+import Amazonka.SageMaker.Types.StepStatus
+
+-- | An execution of a step in a pipeline.
+--
+-- /See:/ 'newPipelineExecutionStep' smart constructor.
+data PipelineExecutionStep = PipelineExecutionStep'
+  { -- | The current attempt of the execution step. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-retry-policy.html Retry Policy for SageMaker Pipelines steps>.
+    attemptCount :: Prelude.Maybe Prelude.Int,
+    -- | If this pipeline execution step was cached, details on the cache hit.
+    cacheHitResult :: Prelude.Maybe CacheHitResult,
+    -- | The time that the step stopped executing.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The reason why the step failed execution. This is only returned if the
+    -- step failed its execution.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Metadata to run the pipeline step.
+    metadata :: Prelude.Maybe PipelineExecutionStepMetadata,
+    -- | The time that the step started executing.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the step.
+    stepDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the step.
+    stepDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the step that is executed.
+    stepName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the step execution.
+    stepStatus :: Prelude.Maybe StepStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineExecutionStep' 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:
+--
+-- 'attemptCount', 'pipelineExecutionStep_attemptCount' - The current attempt of the execution step. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-retry-policy.html Retry Policy for SageMaker Pipelines steps>.
+--
+-- 'cacheHitResult', 'pipelineExecutionStep_cacheHitResult' - If this pipeline execution step was cached, details on the cache hit.
+--
+-- 'endTime', 'pipelineExecutionStep_endTime' - The time that the step stopped executing.
+--
+-- 'failureReason', 'pipelineExecutionStep_failureReason' - The reason why the step failed execution. This is only returned if the
+-- step failed its execution.
+--
+-- 'metadata', 'pipelineExecutionStep_metadata' - Metadata to run the pipeline step.
+--
+-- 'startTime', 'pipelineExecutionStep_startTime' - The time that the step started executing.
+--
+-- 'stepDescription', 'pipelineExecutionStep_stepDescription' - The description of the step.
+--
+-- 'stepDisplayName', 'pipelineExecutionStep_stepDisplayName' - The display name of the step.
+--
+-- 'stepName', 'pipelineExecutionStep_stepName' - The name of the step that is executed.
+--
+-- 'stepStatus', 'pipelineExecutionStep_stepStatus' - The status of the step execution.
+newPipelineExecutionStep ::
+  PipelineExecutionStep
+newPipelineExecutionStep =
+  PipelineExecutionStep'
+    { attemptCount =
+        Prelude.Nothing,
+      cacheHitResult = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      stepDescription = Prelude.Nothing,
+      stepDisplayName = Prelude.Nothing,
+      stepName = Prelude.Nothing,
+      stepStatus = Prelude.Nothing
+    }
+
+-- | The current attempt of the execution step. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-retry-policy.html Retry Policy for SageMaker Pipelines steps>.
+pipelineExecutionStep_attemptCount :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.Int)
+pipelineExecutionStep_attemptCount = Lens.lens (\PipelineExecutionStep' {attemptCount} -> attemptCount) (\s@PipelineExecutionStep' {} a -> s {attemptCount = a} :: PipelineExecutionStep)
+
+-- | If this pipeline execution step was cached, details on the cache hit.
+pipelineExecutionStep_cacheHitResult :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe CacheHitResult)
+pipelineExecutionStep_cacheHitResult = Lens.lens (\PipelineExecutionStep' {cacheHitResult} -> cacheHitResult) (\s@PipelineExecutionStep' {} a -> s {cacheHitResult = a} :: PipelineExecutionStep)
+
+-- | The time that the step stopped executing.
+pipelineExecutionStep_endTime :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.UTCTime)
+pipelineExecutionStep_endTime = Lens.lens (\PipelineExecutionStep' {endTime} -> endTime) (\s@PipelineExecutionStep' {} a -> s {endTime = a} :: PipelineExecutionStep) Prelude.. Lens.mapping Data._Time
+
+-- | The reason why the step failed execution. This is only returned if the
+-- step failed its execution.
+pipelineExecutionStep_failureReason :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.Text)
+pipelineExecutionStep_failureReason = Lens.lens (\PipelineExecutionStep' {failureReason} -> failureReason) (\s@PipelineExecutionStep' {} a -> s {failureReason = a} :: PipelineExecutionStep)
+
+-- | Metadata to run the pipeline step.
+pipelineExecutionStep_metadata :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe PipelineExecutionStepMetadata)
+pipelineExecutionStep_metadata = Lens.lens (\PipelineExecutionStep' {metadata} -> metadata) (\s@PipelineExecutionStep' {} a -> s {metadata = a} :: PipelineExecutionStep)
+
+-- | The time that the step started executing.
+pipelineExecutionStep_startTime :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.UTCTime)
+pipelineExecutionStep_startTime = Lens.lens (\PipelineExecutionStep' {startTime} -> startTime) (\s@PipelineExecutionStep' {} a -> s {startTime = a} :: PipelineExecutionStep) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the step.
+pipelineExecutionStep_stepDescription :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.Text)
+pipelineExecutionStep_stepDescription = Lens.lens (\PipelineExecutionStep' {stepDescription} -> stepDescription) (\s@PipelineExecutionStep' {} a -> s {stepDescription = a} :: PipelineExecutionStep)
+
+-- | The display name of the step.
+pipelineExecutionStep_stepDisplayName :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.Text)
+pipelineExecutionStep_stepDisplayName = Lens.lens (\PipelineExecutionStep' {stepDisplayName} -> stepDisplayName) (\s@PipelineExecutionStep' {} a -> s {stepDisplayName = a} :: PipelineExecutionStep)
+
+-- | The name of the step that is executed.
+pipelineExecutionStep_stepName :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe Prelude.Text)
+pipelineExecutionStep_stepName = Lens.lens (\PipelineExecutionStep' {stepName} -> stepName) (\s@PipelineExecutionStep' {} a -> s {stepName = a} :: PipelineExecutionStep)
+
+-- | The status of the step execution.
+pipelineExecutionStep_stepStatus :: Lens.Lens' PipelineExecutionStep (Prelude.Maybe StepStatus)
+pipelineExecutionStep_stepStatus = Lens.lens (\PipelineExecutionStep' {stepStatus} -> stepStatus) (\s@PipelineExecutionStep' {} a -> s {stepStatus = a} :: PipelineExecutionStep)
+
+instance Data.FromJSON PipelineExecutionStep where
+  parseJSON =
+    Data.withObject
+      "PipelineExecutionStep"
+      ( \x ->
+          PipelineExecutionStep'
+            Prelude.<$> (x Data..:? "AttemptCount")
+            Prelude.<*> (x Data..:? "CacheHitResult")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "Metadata")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "StepDescription")
+            Prelude.<*> (x Data..:? "StepDisplayName")
+            Prelude.<*> (x Data..:? "StepName")
+            Prelude.<*> (x Data..:? "StepStatus")
+      )
+
+instance Prelude.Hashable PipelineExecutionStep where
+  hashWithSalt _salt PipelineExecutionStep' {..} =
+    _salt
+      `Prelude.hashWithSalt` attemptCount
+      `Prelude.hashWithSalt` cacheHitResult
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` stepDescription
+      `Prelude.hashWithSalt` stepDisplayName
+      `Prelude.hashWithSalt` stepName
+      `Prelude.hashWithSalt` stepStatus
+
+instance Prelude.NFData PipelineExecutionStep where
+  rnf PipelineExecutionStep' {..} =
+    Prelude.rnf attemptCount
+      `Prelude.seq` Prelude.rnf cacheHitResult
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf stepDescription
+      `Prelude.seq` Prelude.rnf stepDisplayName
+      `Prelude.seq` Prelude.rnf stepName
+      `Prelude.seq` Prelude.rnf stepStatus
diff --git a/gen/Amazonka/SageMaker/Types/PipelineExecutionStepMetadata.hs b/gen/Amazonka/SageMaker/Types/PipelineExecutionStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineExecutionStepMetadata.hs
@@ -0,0 +1,402 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineExecutionStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineExecutionStepMetadata 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 Amazonka.SageMaker.Types.AutoMLJobStepMetadata
+import Amazonka.SageMaker.Types.CallbackStepMetadata
+import Amazonka.SageMaker.Types.ClarifyCheckStepMetadata
+import Amazonka.SageMaker.Types.ConditionStepMetadata
+import Amazonka.SageMaker.Types.EMRStepMetadata
+import Amazonka.SageMaker.Types.FailStepMetadata
+import Amazonka.SageMaker.Types.LambdaStepMetadata
+import Amazonka.SageMaker.Types.ModelStepMetadata
+import Amazonka.SageMaker.Types.ProcessingJobStepMetadata
+import Amazonka.SageMaker.Types.QualityCheckStepMetadata
+import Amazonka.SageMaker.Types.RegisterModelStepMetadata
+import Amazonka.SageMaker.Types.TrainingJobStepMetadata
+import Amazonka.SageMaker.Types.TransformJobStepMetadata
+import Amazonka.SageMaker.Types.TuningJobStepMetaData
+
+-- | Metadata for a step execution.
+--
+-- /See:/ 'newPipelineExecutionStepMetadata' smart constructor.
+data PipelineExecutionStepMetadata = PipelineExecutionStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the AutoML job that was run by this
+    -- step.
+    autoMLJob :: Prelude.Maybe AutoMLJobStepMetadata,
+    -- | The URL of the Amazon SQS queue used by this step execution, the
+    -- pipeline generated token, and a list of output parameters.
+    callback :: Prelude.Maybe CallbackStepMetadata,
+    -- | Container for the metadata for a Clarify check step. The configurations
+    -- and outcomes of the check step execution. This includes:
+    --
+    -- -   The type of the check conducted,
+    --
+    -- -   The Amazon S3 URIs of baseline constraints and statistics files to
+    --     be used for the drift check.
+    --
+    -- -   The Amazon S3 URIs of newly calculated baseline constraints and
+    --     statistics.
+    --
+    -- -   The model package group name provided.
+    --
+    -- -   The Amazon S3 URI of the violation report if violations detected.
+    --
+    -- -   The Amazon Resource Name (ARN) of check processing job initiated by
+    --     the step execution.
+    --
+    -- -   The boolean flags indicating if the drift check is skipped.
+    --
+    -- -   If step property @BaselineUsedForDriftCheck@ is set the same as
+    --     @CalculatedBaseline@.
+    clarifyCheck :: Prelude.Maybe ClarifyCheckStepMetadata,
+    -- | The outcome of the condition evaluation that was run by this step
+    -- execution.
+    condition :: Prelude.Maybe ConditionStepMetadata,
+    -- | The configurations and outcomes of an Amazon EMR step execution.
+    emr :: Prelude.Maybe EMRStepMetadata,
+    -- | The configurations and outcomes of a Fail step execution.
+    fail :: Prelude.Maybe FailStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the Lambda function that was run by
+    -- this step execution and a list of output parameters.
+    lambda :: Prelude.Maybe LambdaStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the model that was created by this
+    -- step execution.
+    model :: Prelude.Maybe ModelStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the processing job that was run by
+    -- this step execution.
+    processingJob :: Prelude.Maybe ProcessingJobStepMetadata,
+    -- | The configurations and outcomes of the check step execution. This
+    -- includes:
+    --
+    -- -   The type of the check conducted.
+    --
+    -- -   The Amazon S3 URIs of baseline constraints and statistics files to
+    --     be used for the drift check.
+    --
+    -- -   The Amazon S3 URIs of newly calculated baseline constraints and
+    --     statistics.
+    --
+    -- -   The model package group name provided.
+    --
+    -- -   The Amazon S3 URI of the violation report if violations detected.
+    --
+    -- -   The Amazon Resource Name (ARN) of check processing job initiated by
+    --     the step execution.
+    --
+    -- -   The Boolean flags indicating if the drift check is skipped.
+    --
+    -- -   If step property @BaselineUsedForDriftCheck@ is set the same as
+    --     @CalculatedBaseline@.
+    qualityCheck :: Prelude.Maybe QualityCheckStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the model package that the model was
+    -- registered to by this step execution.
+    registerModel :: Prelude.Maybe RegisterModelStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the training job that was run by this
+    -- step execution.
+    trainingJob :: Prelude.Maybe TrainingJobStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the transform job that was run by this
+    -- step execution.
+    transformJob :: Prelude.Maybe TransformJobStepMetadata,
+    -- | The Amazon Resource Name (ARN) of the tuning job that was run by this
+    -- step execution.
+    tuningJob :: Prelude.Maybe TuningJobStepMetaData
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineExecutionStepMetadata' 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:
+--
+-- 'autoMLJob', 'pipelineExecutionStepMetadata_autoMLJob' - The Amazon Resource Name (ARN) of the AutoML job that was run by this
+-- step.
+--
+-- 'callback', 'pipelineExecutionStepMetadata_callback' - The URL of the Amazon SQS queue used by this step execution, the
+-- pipeline generated token, and a list of output parameters.
+--
+-- 'clarifyCheck', 'pipelineExecutionStepMetadata_clarifyCheck' - Container for the metadata for a Clarify check step. The configurations
+-- and outcomes of the check step execution. This includes:
+--
+-- -   The type of the check conducted,
+--
+-- -   The Amazon S3 URIs of baseline constraints and statistics files to
+--     be used for the drift check.
+--
+-- -   The Amazon S3 URIs of newly calculated baseline constraints and
+--     statistics.
+--
+-- -   The model package group name provided.
+--
+-- -   The Amazon S3 URI of the violation report if violations detected.
+--
+-- -   The Amazon Resource Name (ARN) of check processing job initiated by
+--     the step execution.
+--
+-- -   The boolean flags indicating if the drift check is skipped.
+--
+-- -   If step property @BaselineUsedForDriftCheck@ is set the same as
+--     @CalculatedBaseline@.
+--
+-- 'condition', 'pipelineExecutionStepMetadata_condition' - The outcome of the condition evaluation that was run by this step
+-- execution.
+--
+-- 'emr', 'pipelineExecutionStepMetadata_emr' - The configurations and outcomes of an Amazon EMR step execution.
+--
+-- 'fail', 'pipelineExecutionStepMetadata_fail' - The configurations and outcomes of a Fail step execution.
+--
+-- 'lambda', 'pipelineExecutionStepMetadata_lambda' - The Amazon Resource Name (ARN) of the Lambda function that was run by
+-- this step execution and a list of output parameters.
+--
+-- 'model', 'pipelineExecutionStepMetadata_model' - The Amazon Resource Name (ARN) of the model that was created by this
+-- step execution.
+--
+-- 'processingJob', 'pipelineExecutionStepMetadata_processingJob' - The Amazon Resource Name (ARN) of the processing job that was run by
+-- this step execution.
+--
+-- 'qualityCheck', 'pipelineExecutionStepMetadata_qualityCheck' - The configurations and outcomes of the check step execution. This
+-- includes:
+--
+-- -   The type of the check conducted.
+--
+-- -   The Amazon S3 URIs of baseline constraints and statistics files to
+--     be used for the drift check.
+--
+-- -   The Amazon S3 URIs of newly calculated baseline constraints and
+--     statistics.
+--
+-- -   The model package group name provided.
+--
+-- -   The Amazon S3 URI of the violation report if violations detected.
+--
+-- -   The Amazon Resource Name (ARN) of check processing job initiated by
+--     the step execution.
+--
+-- -   The Boolean flags indicating if the drift check is skipped.
+--
+-- -   If step property @BaselineUsedForDriftCheck@ is set the same as
+--     @CalculatedBaseline@.
+--
+-- 'registerModel', 'pipelineExecutionStepMetadata_registerModel' - The Amazon Resource Name (ARN) of the model package that the model was
+-- registered to by this step execution.
+--
+-- 'trainingJob', 'pipelineExecutionStepMetadata_trainingJob' - The Amazon Resource Name (ARN) of the training job that was run by this
+-- step execution.
+--
+-- 'transformJob', 'pipelineExecutionStepMetadata_transformJob' - The Amazon Resource Name (ARN) of the transform job that was run by this
+-- step execution.
+--
+-- 'tuningJob', 'pipelineExecutionStepMetadata_tuningJob' - The Amazon Resource Name (ARN) of the tuning job that was run by this
+-- step execution.
+newPipelineExecutionStepMetadata ::
+  PipelineExecutionStepMetadata
+newPipelineExecutionStepMetadata =
+  PipelineExecutionStepMetadata'
+    { autoMLJob =
+        Prelude.Nothing,
+      callback = Prelude.Nothing,
+      clarifyCheck = Prelude.Nothing,
+      condition = Prelude.Nothing,
+      emr = Prelude.Nothing,
+      fail = Prelude.Nothing,
+      lambda = Prelude.Nothing,
+      model = Prelude.Nothing,
+      processingJob = Prelude.Nothing,
+      qualityCheck = Prelude.Nothing,
+      registerModel = Prelude.Nothing,
+      trainingJob = Prelude.Nothing,
+      transformJob = Prelude.Nothing,
+      tuningJob = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the AutoML job that was run by this
+-- step.
+pipelineExecutionStepMetadata_autoMLJob :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe AutoMLJobStepMetadata)
+pipelineExecutionStepMetadata_autoMLJob = Lens.lens (\PipelineExecutionStepMetadata' {autoMLJob} -> autoMLJob) (\s@PipelineExecutionStepMetadata' {} a -> s {autoMLJob = a} :: PipelineExecutionStepMetadata)
+
+-- | The URL of the Amazon SQS queue used by this step execution, the
+-- pipeline generated token, and a list of output parameters.
+pipelineExecutionStepMetadata_callback :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe CallbackStepMetadata)
+pipelineExecutionStepMetadata_callback = Lens.lens (\PipelineExecutionStepMetadata' {callback} -> callback) (\s@PipelineExecutionStepMetadata' {} a -> s {callback = a} :: PipelineExecutionStepMetadata)
+
+-- | Container for the metadata for a Clarify check step. The configurations
+-- and outcomes of the check step execution. This includes:
+--
+-- -   The type of the check conducted,
+--
+-- -   The Amazon S3 URIs of baseline constraints and statistics files to
+--     be used for the drift check.
+--
+-- -   The Amazon S3 URIs of newly calculated baseline constraints and
+--     statistics.
+--
+-- -   The model package group name provided.
+--
+-- -   The Amazon S3 URI of the violation report if violations detected.
+--
+-- -   The Amazon Resource Name (ARN) of check processing job initiated by
+--     the step execution.
+--
+-- -   The boolean flags indicating if the drift check is skipped.
+--
+-- -   If step property @BaselineUsedForDriftCheck@ is set the same as
+--     @CalculatedBaseline@.
+pipelineExecutionStepMetadata_clarifyCheck :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe ClarifyCheckStepMetadata)
+pipelineExecutionStepMetadata_clarifyCheck = Lens.lens (\PipelineExecutionStepMetadata' {clarifyCheck} -> clarifyCheck) (\s@PipelineExecutionStepMetadata' {} a -> s {clarifyCheck = a} :: PipelineExecutionStepMetadata)
+
+-- | The outcome of the condition evaluation that was run by this step
+-- execution.
+pipelineExecutionStepMetadata_condition :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe ConditionStepMetadata)
+pipelineExecutionStepMetadata_condition = Lens.lens (\PipelineExecutionStepMetadata' {condition} -> condition) (\s@PipelineExecutionStepMetadata' {} a -> s {condition = a} :: PipelineExecutionStepMetadata)
+
+-- | The configurations and outcomes of an Amazon EMR step execution.
+pipelineExecutionStepMetadata_emr :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe EMRStepMetadata)
+pipelineExecutionStepMetadata_emr = Lens.lens (\PipelineExecutionStepMetadata' {emr} -> emr) (\s@PipelineExecutionStepMetadata' {} a -> s {emr = a} :: PipelineExecutionStepMetadata)
+
+-- | The configurations and outcomes of a Fail step execution.
+pipelineExecutionStepMetadata_fail :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe FailStepMetadata)
+pipelineExecutionStepMetadata_fail = Lens.lens (\PipelineExecutionStepMetadata' {fail} -> fail) (\s@PipelineExecutionStepMetadata' {} a -> s {fail = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the Lambda function that was run by
+-- this step execution and a list of output parameters.
+pipelineExecutionStepMetadata_lambda :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe LambdaStepMetadata)
+pipelineExecutionStepMetadata_lambda = Lens.lens (\PipelineExecutionStepMetadata' {lambda} -> lambda) (\s@PipelineExecutionStepMetadata' {} a -> s {lambda = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the model that was created by this
+-- step execution.
+pipelineExecutionStepMetadata_model :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe ModelStepMetadata)
+pipelineExecutionStepMetadata_model = Lens.lens (\PipelineExecutionStepMetadata' {model} -> model) (\s@PipelineExecutionStepMetadata' {} a -> s {model = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the processing job that was run by
+-- this step execution.
+pipelineExecutionStepMetadata_processingJob :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe ProcessingJobStepMetadata)
+pipelineExecutionStepMetadata_processingJob = Lens.lens (\PipelineExecutionStepMetadata' {processingJob} -> processingJob) (\s@PipelineExecutionStepMetadata' {} a -> s {processingJob = a} :: PipelineExecutionStepMetadata)
+
+-- | The configurations and outcomes of the check step execution. This
+-- includes:
+--
+-- -   The type of the check conducted.
+--
+-- -   The Amazon S3 URIs of baseline constraints and statistics files to
+--     be used for the drift check.
+--
+-- -   The Amazon S3 URIs of newly calculated baseline constraints and
+--     statistics.
+--
+-- -   The model package group name provided.
+--
+-- -   The Amazon S3 URI of the violation report if violations detected.
+--
+-- -   The Amazon Resource Name (ARN) of check processing job initiated by
+--     the step execution.
+--
+-- -   The Boolean flags indicating if the drift check is skipped.
+--
+-- -   If step property @BaselineUsedForDriftCheck@ is set the same as
+--     @CalculatedBaseline@.
+pipelineExecutionStepMetadata_qualityCheck :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe QualityCheckStepMetadata)
+pipelineExecutionStepMetadata_qualityCheck = Lens.lens (\PipelineExecutionStepMetadata' {qualityCheck} -> qualityCheck) (\s@PipelineExecutionStepMetadata' {} a -> s {qualityCheck = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the model package that the model was
+-- registered to by this step execution.
+pipelineExecutionStepMetadata_registerModel :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe RegisterModelStepMetadata)
+pipelineExecutionStepMetadata_registerModel = Lens.lens (\PipelineExecutionStepMetadata' {registerModel} -> registerModel) (\s@PipelineExecutionStepMetadata' {} a -> s {registerModel = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the training job that was run by this
+-- step execution.
+pipelineExecutionStepMetadata_trainingJob :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe TrainingJobStepMetadata)
+pipelineExecutionStepMetadata_trainingJob = Lens.lens (\PipelineExecutionStepMetadata' {trainingJob} -> trainingJob) (\s@PipelineExecutionStepMetadata' {} a -> s {trainingJob = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the transform job that was run by this
+-- step execution.
+pipelineExecutionStepMetadata_transformJob :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe TransformJobStepMetadata)
+pipelineExecutionStepMetadata_transformJob = Lens.lens (\PipelineExecutionStepMetadata' {transformJob} -> transformJob) (\s@PipelineExecutionStepMetadata' {} a -> s {transformJob = a} :: PipelineExecutionStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the tuning job that was run by this
+-- step execution.
+pipelineExecutionStepMetadata_tuningJob :: Lens.Lens' PipelineExecutionStepMetadata (Prelude.Maybe TuningJobStepMetaData)
+pipelineExecutionStepMetadata_tuningJob = Lens.lens (\PipelineExecutionStepMetadata' {tuningJob} -> tuningJob) (\s@PipelineExecutionStepMetadata' {} a -> s {tuningJob = a} :: PipelineExecutionStepMetadata)
+
+instance Data.FromJSON PipelineExecutionStepMetadata where
+  parseJSON =
+    Data.withObject
+      "PipelineExecutionStepMetadata"
+      ( \x ->
+          PipelineExecutionStepMetadata'
+            Prelude.<$> (x Data..:? "AutoMLJob")
+            Prelude.<*> (x Data..:? "Callback")
+            Prelude.<*> (x Data..:? "ClarifyCheck")
+            Prelude.<*> (x Data..:? "Condition")
+            Prelude.<*> (x Data..:? "EMR")
+            Prelude.<*> (x Data..:? "Fail")
+            Prelude.<*> (x Data..:? "Lambda")
+            Prelude.<*> (x Data..:? "Model")
+            Prelude.<*> (x Data..:? "ProcessingJob")
+            Prelude.<*> (x Data..:? "QualityCheck")
+            Prelude.<*> (x Data..:? "RegisterModel")
+            Prelude.<*> (x Data..:? "TrainingJob")
+            Prelude.<*> (x Data..:? "TransformJob")
+            Prelude.<*> (x Data..:? "TuningJob")
+      )
+
+instance
+  Prelude.Hashable
+    PipelineExecutionStepMetadata
+  where
+  hashWithSalt _salt PipelineExecutionStepMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoMLJob
+      `Prelude.hashWithSalt` callback
+      `Prelude.hashWithSalt` clarifyCheck
+      `Prelude.hashWithSalt` condition
+      `Prelude.hashWithSalt` emr
+      `Prelude.hashWithSalt` fail
+      `Prelude.hashWithSalt` lambda
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` processingJob
+      `Prelude.hashWithSalt` qualityCheck
+      `Prelude.hashWithSalt` registerModel
+      `Prelude.hashWithSalt` trainingJob
+      `Prelude.hashWithSalt` transformJob
+      `Prelude.hashWithSalt` tuningJob
+
+instance Prelude.NFData PipelineExecutionStepMetadata where
+  rnf PipelineExecutionStepMetadata' {..} =
+    Prelude.rnf autoMLJob
+      `Prelude.seq` Prelude.rnf callback
+      `Prelude.seq` Prelude.rnf clarifyCheck
+      `Prelude.seq` Prelude.rnf condition
+      `Prelude.seq` Prelude.rnf emr
+      `Prelude.seq` Prelude.rnf fail
+      `Prelude.seq` Prelude.rnf lambda
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf processingJob
+      `Prelude.seq` Prelude.rnf qualityCheck
+      `Prelude.seq` Prelude.rnf registerModel
+      `Prelude.seq` Prelude.rnf trainingJob
+      `Prelude.seq` Prelude.rnf transformJob
+      `Prelude.seq` Prelude.rnf tuningJob
diff --git a/gen/Amazonka/SageMaker/Types/PipelineExecutionSummary.hs b/gen/Amazonka/SageMaker/Types/PipelineExecutionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineExecutionSummary.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineExecutionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineExecutionSummary 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 Amazonka.SageMaker.Types.PipelineExecutionStatus
+
+-- | A pipeline execution summary.
+--
+-- /See:/ 'newPipelineExecutionSummary' smart constructor.
+data PipelineExecutionSummary = PipelineExecutionSummary'
+  { -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pipeline execution.
+    pipelineExecutionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline execution.
+    pipelineExecutionDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | A message generated by SageMaker Pipelines describing why the pipeline
+    -- execution failed.
+    pipelineExecutionFailureReason :: Prelude.Maybe Prelude.Text,
+    -- | The status of the pipeline execution.
+    pipelineExecutionStatus :: Prelude.Maybe PipelineExecutionStatus,
+    -- | The start time of the pipeline execution.
+    startTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineExecutionSummary' 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:
+--
+-- 'pipelineExecutionArn', 'pipelineExecutionSummary_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+--
+-- 'pipelineExecutionDescription', 'pipelineExecutionSummary_pipelineExecutionDescription' - The description of the pipeline execution.
+--
+-- 'pipelineExecutionDisplayName', 'pipelineExecutionSummary_pipelineExecutionDisplayName' - The display name of the pipeline execution.
+--
+-- 'pipelineExecutionFailureReason', 'pipelineExecutionSummary_pipelineExecutionFailureReason' - A message generated by SageMaker Pipelines describing why the pipeline
+-- execution failed.
+--
+-- 'pipelineExecutionStatus', 'pipelineExecutionSummary_pipelineExecutionStatus' - The status of the pipeline execution.
+--
+-- 'startTime', 'pipelineExecutionSummary_startTime' - The start time of the pipeline execution.
+newPipelineExecutionSummary ::
+  PipelineExecutionSummary
+newPipelineExecutionSummary =
+  PipelineExecutionSummary'
+    { pipelineExecutionArn =
+        Prelude.Nothing,
+      pipelineExecutionDescription = Prelude.Nothing,
+      pipelineExecutionDisplayName = Prelude.Nothing,
+      pipelineExecutionFailureReason = Prelude.Nothing,
+      pipelineExecutionStatus = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+pipelineExecutionSummary_pipelineExecutionArn :: Lens.Lens' PipelineExecutionSummary (Prelude.Maybe Prelude.Text)
+pipelineExecutionSummary_pipelineExecutionArn = Lens.lens (\PipelineExecutionSummary' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@PipelineExecutionSummary' {} a -> s {pipelineExecutionArn = a} :: PipelineExecutionSummary)
+
+-- | The description of the pipeline execution.
+pipelineExecutionSummary_pipelineExecutionDescription :: Lens.Lens' PipelineExecutionSummary (Prelude.Maybe Prelude.Text)
+pipelineExecutionSummary_pipelineExecutionDescription = Lens.lens (\PipelineExecutionSummary' {pipelineExecutionDescription} -> pipelineExecutionDescription) (\s@PipelineExecutionSummary' {} a -> s {pipelineExecutionDescription = a} :: PipelineExecutionSummary)
+
+-- | The display name of the pipeline execution.
+pipelineExecutionSummary_pipelineExecutionDisplayName :: Lens.Lens' PipelineExecutionSummary (Prelude.Maybe Prelude.Text)
+pipelineExecutionSummary_pipelineExecutionDisplayName = Lens.lens (\PipelineExecutionSummary' {pipelineExecutionDisplayName} -> pipelineExecutionDisplayName) (\s@PipelineExecutionSummary' {} a -> s {pipelineExecutionDisplayName = a} :: PipelineExecutionSummary)
+
+-- | A message generated by SageMaker Pipelines describing why the pipeline
+-- execution failed.
+pipelineExecutionSummary_pipelineExecutionFailureReason :: Lens.Lens' PipelineExecutionSummary (Prelude.Maybe Prelude.Text)
+pipelineExecutionSummary_pipelineExecutionFailureReason = Lens.lens (\PipelineExecutionSummary' {pipelineExecutionFailureReason} -> pipelineExecutionFailureReason) (\s@PipelineExecutionSummary' {} a -> s {pipelineExecutionFailureReason = a} :: PipelineExecutionSummary)
+
+-- | The status of the pipeline execution.
+pipelineExecutionSummary_pipelineExecutionStatus :: Lens.Lens' PipelineExecutionSummary (Prelude.Maybe PipelineExecutionStatus)
+pipelineExecutionSummary_pipelineExecutionStatus = Lens.lens (\PipelineExecutionSummary' {pipelineExecutionStatus} -> pipelineExecutionStatus) (\s@PipelineExecutionSummary' {} a -> s {pipelineExecutionStatus = a} :: PipelineExecutionSummary)
+
+-- | The start time of the pipeline execution.
+pipelineExecutionSummary_startTime :: Lens.Lens' PipelineExecutionSummary (Prelude.Maybe Prelude.UTCTime)
+pipelineExecutionSummary_startTime = Lens.lens (\PipelineExecutionSummary' {startTime} -> startTime) (\s@PipelineExecutionSummary' {} a -> s {startTime = a} :: PipelineExecutionSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON PipelineExecutionSummary where
+  parseJSON =
+    Data.withObject
+      "PipelineExecutionSummary"
+      ( \x ->
+          PipelineExecutionSummary'
+            Prelude.<$> (x Data..:? "PipelineExecutionArn")
+            Prelude.<*> (x Data..:? "PipelineExecutionDescription")
+            Prelude.<*> (x Data..:? "PipelineExecutionDisplayName")
+            Prelude.<*> (x Data..:? "PipelineExecutionFailureReason")
+            Prelude.<*> (x Data..:? "PipelineExecutionStatus")
+            Prelude.<*> (x Data..:? "StartTime")
+      )
+
+instance Prelude.Hashable PipelineExecutionSummary where
+  hashWithSalt _salt PipelineExecutionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` pipelineExecutionArn
+      `Prelude.hashWithSalt` pipelineExecutionDescription
+      `Prelude.hashWithSalt` pipelineExecutionDisplayName
+      `Prelude.hashWithSalt` pipelineExecutionFailureReason
+      `Prelude.hashWithSalt` pipelineExecutionStatus
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData PipelineExecutionSummary where
+  rnf PipelineExecutionSummary' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf pipelineExecutionDescription
+      `Prelude.seq` Prelude.rnf pipelineExecutionDisplayName
+      `Prelude.seq` Prelude.rnf pipelineExecutionFailureReason
+      `Prelude.seq` Prelude.rnf pipelineExecutionStatus
+      `Prelude.seq` Prelude.rnf startTime
diff --git a/gen/Amazonka/SageMaker/Types/PipelineExperimentConfig.hs b/gen/Amazonka/SageMaker/Types/PipelineExperimentConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineExperimentConfig.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineExperimentConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineExperimentConfig 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
+
+-- | Specifies the names of the experiment and trial created by a pipeline.
+--
+-- /See:/ 'newPipelineExperimentConfig' smart constructor.
+data PipelineExperimentConfig = PipelineExperimentConfig'
+  { -- | The name of the experiment.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial.
+    trialName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineExperimentConfig' 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:
+--
+-- 'experimentName', 'pipelineExperimentConfig_experimentName' - The name of the experiment.
+--
+-- 'trialName', 'pipelineExperimentConfig_trialName' - The name of the trial.
+newPipelineExperimentConfig ::
+  PipelineExperimentConfig
+newPipelineExperimentConfig =
+  PipelineExperimentConfig'
+    { experimentName =
+        Prelude.Nothing,
+      trialName = Prelude.Nothing
+    }
+
+-- | The name of the experiment.
+pipelineExperimentConfig_experimentName :: Lens.Lens' PipelineExperimentConfig (Prelude.Maybe Prelude.Text)
+pipelineExperimentConfig_experimentName = Lens.lens (\PipelineExperimentConfig' {experimentName} -> experimentName) (\s@PipelineExperimentConfig' {} a -> s {experimentName = a} :: PipelineExperimentConfig)
+
+-- | The name of the trial.
+pipelineExperimentConfig_trialName :: Lens.Lens' PipelineExperimentConfig (Prelude.Maybe Prelude.Text)
+pipelineExperimentConfig_trialName = Lens.lens (\PipelineExperimentConfig' {trialName} -> trialName) (\s@PipelineExperimentConfig' {} a -> s {trialName = a} :: PipelineExperimentConfig)
+
+instance Data.FromJSON PipelineExperimentConfig where
+  parseJSON =
+    Data.withObject
+      "PipelineExperimentConfig"
+      ( \x ->
+          PipelineExperimentConfig'
+            Prelude.<$> (x Data..:? "ExperimentName")
+            Prelude.<*> (x Data..:? "TrialName")
+      )
+
+instance Prelude.Hashable PipelineExperimentConfig where
+  hashWithSalt _salt PipelineExperimentConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData PipelineExperimentConfig where
+  rnf PipelineExperimentConfig' {..} =
+    Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf trialName
diff --git a/gen/Amazonka/SageMaker/Types/PipelineStatus.hs b/gen/Amazonka/SageMaker/Types/PipelineStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineStatus.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.PipelineStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineStatus
+  ( PipelineStatus
+      ( ..,
+        PipelineStatus_Active
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PipelineStatus = PipelineStatus'
+  { fromPipelineStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PipelineStatus_Active :: PipelineStatus
+pattern PipelineStatus_Active = PipelineStatus' "Active"
+
+{-# COMPLETE
+  PipelineStatus_Active,
+  PipelineStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/PipelineSummary.hs b/gen/Amazonka/SageMaker/Types/PipelineSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PipelineSummary.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PipelineSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PipelineSummary 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
+
+-- | A summary of a pipeline.
+--
+-- /See:/ 'newPipelineSummary' smart constructor.
+data PipelineSummary = PipelineSummary'
+  { -- | The creation time of the pipeline.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The last time that a pipeline execution began.
+    lastExecutionTime :: Prelude.Maybe Data.POSIX,
+    -- | The time that the pipeline was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the pipeline.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pipeline.
+    pipelineDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline.
+    pipelineDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the pipeline.
+    pipelineName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) that the pipeline used to execute.
+    roleArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipelineSummary' 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:
+--
+-- 'creationTime', 'pipelineSummary_creationTime' - The creation time of the pipeline.
+--
+-- 'lastExecutionTime', 'pipelineSummary_lastExecutionTime' - The last time that a pipeline execution began.
+--
+-- 'lastModifiedTime', 'pipelineSummary_lastModifiedTime' - The time that the pipeline was last modified.
+--
+-- 'pipelineArn', 'pipelineSummary_pipelineArn' - The Amazon Resource Name (ARN) of the pipeline.
+--
+-- 'pipelineDescription', 'pipelineSummary_pipelineDescription' - The description of the pipeline.
+--
+-- 'pipelineDisplayName', 'pipelineSummary_pipelineDisplayName' - The display name of the pipeline.
+--
+-- 'pipelineName', 'pipelineSummary_pipelineName' - The name of the pipeline.
+--
+-- 'roleArn', 'pipelineSummary_roleArn' - The Amazon Resource Name (ARN) that the pipeline used to execute.
+newPipelineSummary ::
+  PipelineSummary
+newPipelineSummary =
+  PipelineSummary'
+    { creationTime = Prelude.Nothing,
+      lastExecutionTime = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      pipelineArn = Prelude.Nothing,
+      pipelineDescription = Prelude.Nothing,
+      pipelineDisplayName = Prelude.Nothing,
+      pipelineName = Prelude.Nothing,
+      roleArn = Prelude.Nothing
+    }
+
+-- | The creation time of the pipeline.
+pipelineSummary_creationTime :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.UTCTime)
+pipelineSummary_creationTime = Lens.lens (\PipelineSummary' {creationTime} -> creationTime) (\s@PipelineSummary' {} a -> s {creationTime = a} :: PipelineSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The last time that a pipeline execution began.
+pipelineSummary_lastExecutionTime :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.UTCTime)
+pipelineSummary_lastExecutionTime = Lens.lens (\PipelineSummary' {lastExecutionTime} -> lastExecutionTime) (\s@PipelineSummary' {} a -> s {lastExecutionTime = a} :: PipelineSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time that the pipeline was last modified.
+pipelineSummary_lastModifiedTime :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.UTCTime)
+pipelineSummary_lastModifiedTime = Lens.lens (\PipelineSummary' {lastModifiedTime} -> lastModifiedTime) (\s@PipelineSummary' {} a -> s {lastModifiedTime = a} :: PipelineSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the pipeline.
+pipelineSummary_pipelineArn :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.Text)
+pipelineSummary_pipelineArn = Lens.lens (\PipelineSummary' {pipelineArn} -> pipelineArn) (\s@PipelineSummary' {} a -> s {pipelineArn = a} :: PipelineSummary)
+
+-- | The description of the pipeline.
+pipelineSummary_pipelineDescription :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.Text)
+pipelineSummary_pipelineDescription = Lens.lens (\PipelineSummary' {pipelineDescription} -> pipelineDescription) (\s@PipelineSummary' {} a -> s {pipelineDescription = a} :: PipelineSummary)
+
+-- | The display name of the pipeline.
+pipelineSummary_pipelineDisplayName :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.Text)
+pipelineSummary_pipelineDisplayName = Lens.lens (\PipelineSummary' {pipelineDisplayName} -> pipelineDisplayName) (\s@PipelineSummary' {} a -> s {pipelineDisplayName = a} :: PipelineSummary)
+
+-- | The name of the pipeline.
+pipelineSummary_pipelineName :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.Text)
+pipelineSummary_pipelineName = Lens.lens (\PipelineSummary' {pipelineName} -> pipelineName) (\s@PipelineSummary' {} a -> s {pipelineName = a} :: PipelineSummary)
+
+-- | The Amazon Resource Name (ARN) that the pipeline used to execute.
+pipelineSummary_roleArn :: Lens.Lens' PipelineSummary (Prelude.Maybe Prelude.Text)
+pipelineSummary_roleArn = Lens.lens (\PipelineSummary' {roleArn} -> roleArn) (\s@PipelineSummary' {} a -> s {roleArn = a} :: PipelineSummary)
+
+instance Data.FromJSON PipelineSummary where
+  parseJSON =
+    Data.withObject
+      "PipelineSummary"
+      ( \x ->
+          PipelineSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastExecutionTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "PipelineArn")
+            Prelude.<*> (x Data..:? "PipelineDescription")
+            Prelude.<*> (x Data..:? "PipelineDisplayName")
+            Prelude.<*> (x Data..:? "PipelineName")
+            Prelude.<*> (x Data..:? "RoleArn")
+      )
+
+instance Prelude.Hashable PipelineSummary where
+  hashWithSalt _salt PipelineSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastExecutionTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` pipelineArn
+      `Prelude.hashWithSalt` pipelineDescription
+      `Prelude.hashWithSalt` pipelineDisplayName
+      `Prelude.hashWithSalt` pipelineName
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData PipelineSummary where
+  rnf PipelineSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastExecutionTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf pipelineDescription
+      `Prelude.seq` Prelude.rnf pipelineDisplayName
+      `Prelude.seq` Prelude.rnf pipelineName
+      `Prelude.seq` Prelude.rnf roleArn
diff --git a/gen/Amazonka/SageMaker/Types/ProblemType.hs b/gen/Amazonka/SageMaker/Types/ProblemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProblemType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProblemType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProblemType
+  ( ProblemType
+      ( ..,
+        ProblemType_BinaryClassification,
+        ProblemType_MulticlassClassification,
+        ProblemType_Regression
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProblemType = ProblemType'
+  { fromProblemType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProblemType_BinaryClassification :: ProblemType
+pattern ProblemType_BinaryClassification = ProblemType' "BinaryClassification"
+
+pattern ProblemType_MulticlassClassification :: ProblemType
+pattern ProblemType_MulticlassClassification = ProblemType' "MulticlassClassification"
+
+pattern ProblemType_Regression :: ProblemType
+pattern ProblemType_Regression = ProblemType' "Regression"
+
+{-# COMPLETE
+  ProblemType_BinaryClassification,
+  ProblemType_MulticlassClassification,
+  ProblemType_Regression,
+  ProblemType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingClusterConfig.hs b/gen/Amazonka/SageMaker/Types/ProcessingClusterConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingClusterConfig.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingClusterConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingClusterConfig 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 Amazonka.SageMaker.Types.ProcessingInstanceType
+
+-- | Configuration for the cluster used to run a processing job.
+--
+-- /See:/ 'newProcessingClusterConfig' smart constructor.
+data ProcessingClusterConfig = ProcessingClusterConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data on the storage volume
+    -- attached to the ML compute instance(s) that run the processing job.
+    --
+    -- Certain Nitro-based instances include local storage, dependent on the
+    -- instance type. Local storage volumes are encrypted using a hardware
+    -- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+    -- an instance type with local storage.
+    --
+    -- For a list of instance types that support local instance storage, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+    --
+    -- For more information about local instance storage encryption, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The number of ML compute instances to use in the processing job. For
+    -- distributed processing jobs, specify a value greater than 1. The default
+    -- value is 1.
+    instanceCount :: Prelude.Natural,
+    -- | The ML compute instance type for the processing job.
+    instanceType :: ProcessingInstanceType,
+    -- | The size of the ML storage volume in gigabytes that you want to
+    -- provision. You must specify sufficient ML storage for your scenario.
+    --
+    -- Certain Nitro-based instances include local storage with a fixed total
+    -- size, dependent on the instance type. When using these instances for
+    -- processing, Amazon SageMaker mounts the local instance storage instead
+    -- of Amazon EBS gp2 storage. You can\'t request a @VolumeSizeInGB@ greater
+    -- than the total size of the local instance storage.
+    --
+    -- For a list of instance types that support local instance storage,
+    -- including the total size per instance type, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+    volumeSizeInGB :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingClusterConfig' 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:
+--
+-- 'volumeKmsKeyId', 'processingClusterConfig_volumeKmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance(s) that run the processing job.
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+-- an instance type with local storage.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+--
+-- 'instanceCount', 'processingClusterConfig_instanceCount' - The number of ML compute instances to use in the processing job. For
+-- distributed processing jobs, specify a value greater than 1. The default
+-- value is 1.
+--
+-- 'instanceType', 'processingClusterConfig_instanceType' - The ML compute instance type for the processing job.
+--
+-- 'volumeSizeInGB', 'processingClusterConfig_volumeSizeInGB' - The size of the ML storage volume in gigabytes that you want to
+-- provision. You must specify sufficient ML storage for your scenario.
+--
+-- Certain Nitro-based instances include local storage with a fixed total
+-- size, dependent on the instance type. When using these instances for
+-- processing, Amazon SageMaker mounts the local instance storage instead
+-- of Amazon EBS gp2 storage. You can\'t request a @VolumeSizeInGB@ greater
+-- than the total size of the local instance storage.
+--
+-- For a list of instance types that support local instance storage,
+-- including the total size per instance type, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+newProcessingClusterConfig ::
+  -- | 'instanceCount'
+  Prelude.Natural ->
+  -- | 'instanceType'
+  ProcessingInstanceType ->
+  -- | 'volumeSizeInGB'
+  Prelude.Natural ->
+  ProcessingClusterConfig
+newProcessingClusterConfig
+  pInstanceCount_
+  pInstanceType_
+  pVolumeSizeInGB_ =
+    ProcessingClusterConfig'
+      { volumeKmsKeyId =
+          Prelude.Nothing,
+        instanceCount = pInstanceCount_,
+        instanceType = pInstanceType_,
+        volumeSizeInGB = pVolumeSizeInGB_
+      }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data on the storage volume
+-- attached to the ML compute instance(s) that run the processing job.
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+-- an instance type with local storage.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+processingClusterConfig_volumeKmsKeyId :: Lens.Lens' ProcessingClusterConfig (Prelude.Maybe Prelude.Text)
+processingClusterConfig_volumeKmsKeyId = Lens.lens (\ProcessingClusterConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@ProcessingClusterConfig' {} a -> s {volumeKmsKeyId = a} :: ProcessingClusterConfig)
+
+-- | The number of ML compute instances to use in the processing job. For
+-- distributed processing jobs, specify a value greater than 1. The default
+-- value is 1.
+processingClusterConfig_instanceCount :: Lens.Lens' ProcessingClusterConfig Prelude.Natural
+processingClusterConfig_instanceCount = Lens.lens (\ProcessingClusterConfig' {instanceCount} -> instanceCount) (\s@ProcessingClusterConfig' {} a -> s {instanceCount = a} :: ProcessingClusterConfig)
+
+-- | The ML compute instance type for the processing job.
+processingClusterConfig_instanceType :: Lens.Lens' ProcessingClusterConfig ProcessingInstanceType
+processingClusterConfig_instanceType = Lens.lens (\ProcessingClusterConfig' {instanceType} -> instanceType) (\s@ProcessingClusterConfig' {} a -> s {instanceType = a} :: ProcessingClusterConfig)
+
+-- | The size of the ML storage volume in gigabytes that you want to
+-- provision. You must specify sufficient ML storage for your scenario.
+--
+-- Certain Nitro-based instances include local storage with a fixed total
+-- size, dependent on the instance type. When using these instances for
+-- processing, Amazon SageMaker mounts the local instance storage instead
+-- of Amazon EBS gp2 storage. You can\'t request a @VolumeSizeInGB@ greater
+-- than the total size of the local instance storage.
+--
+-- For a list of instance types that support local instance storage,
+-- including the total size per instance type, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+processingClusterConfig_volumeSizeInGB :: Lens.Lens' ProcessingClusterConfig Prelude.Natural
+processingClusterConfig_volumeSizeInGB = Lens.lens (\ProcessingClusterConfig' {volumeSizeInGB} -> volumeSizeInGB) (\s@ProcessingClusterConfig' {} a -> s {volumeSizeInGB = a} :: ProcessingClusterConfig)
+
+instance Data.FromJSON ProcessingClusterConfig where
+  parseJSON =
+    Data.withObject
+      "ProcessingClusterConfig"
+      ( \x ->
+          ProcessingClusterConfig'
+            Prelude.<$> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..: "InstanceCount")
+            Prelude.<*> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "VolumeSizeInGB")
+      )
+
+instance Prelude.Hashable ProcessingClusterConfig where
+  hashWithSalt _salt ProcessingClusterConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` instanceCount
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` volumeSizeInGB
+
+instance Prelude.NFData ProcessingClusterConfig where
+  rnf ProcessingClusterConfig' {..} =
+    Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+
+instance Data.ToJSON ProcessingClusterConfig where
+  toJSON ProcessingClusterConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            Prelude.Just ("InstanceCount" Data..= instanceCount),
+            Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just
+              ("VolumeSizeInGB" Data..= volumeSizeInGB)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingFeatureStoreOutput.hs b/gen/Amazonka/SageMaker/Types/ProcessingFeatureStoreOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingFeatureStoreOutput.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingFeatureStoreOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingFeatureStoreOutput 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
+
+-- | Configuration for processing job outputs in Amazon SageMaker Feature
+-- Store.
+--
+-- /See:/ 'newProcessingFeatureStoreOutput' smart constructor.
+data ProcessingFeatureStoreOutput = ProcessingFeatureStoreOutput'
+  { -- | The name of the Amazon SageMaker FeatureGroup to use as the destination
+    -- for processing job output. Note that your processing script is
+    -- responsible for putting records into your Feature Store.
+    featureGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingFeatureStoreOutput' 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:
+--
+-- 'featureGroupName', 'processingFeatureStoreOutput_featureGroupName' - The name of the Amazon SageMaker FeatureGroup to use as the destination
+-- for processing job output. Note that your processing script is
+-- responsible for putting records into your Feature Store.
+newProcessingFeatureStoreOutput ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  ProcessingFeatureStoreOutput
+newProcessingFeatureStoreOutput pFeatureGroupName_ =
+  ProcessingFeatureStoreOutput'
+    { featureGroupName =
+        pFeatureGroupName_
+    }
+
+-- | The name of the Amazon SageMaker FeatureGroup to use as the destination
+-- for processing job output. Note that your processing script is
+-- responsible for putting records into your Feature Store.
+processingFeatureStoreOutput_featureGroupName :: Lens.Lens' ProcessingFeatureStoreOutput Prelude.Text
+processingFeatureStoreOutput_featureGroupName = Lens.lens (\ProcessingFeatureStoreOutput' {featureGroupName} -> featureGroupName) (\s@ProcessingFeatureStoreOutput' {} a -> s {featureGroupName = a} :: ProcessingFeatureStoreOutput)
+
+instance Data.FromJSON ProcessingFeatureStoreOutput where
+  parseJSON =
+    Data.withObject
+      "ProcessingFeatureStoreOutput"
+      ( \x ->
+          ProcessingFeatureStoreOutput'
+            Prelude.<$> (x Data..: "FeatureGroupName")
+      )
+
+instance
+  Prelude.Hashable
+    ProcessingFeatureStoreOutput
+  where
+  hashWithSalt _salt ProcessingFeatureStoreOutput' {..} =
+    _salt `Prelude.hashWithSalt` featureGroupName
+
+instance Prelude.NFData ProcessingFeatureStoreOutput where
+  rnf ProcessingFeatureStoreOutput' {..} =
+    Prelude.rnf featureGroupName
+
+instance Data.ToJSON ProcessingFeatureStoreOutput where
+  toJSON ProcessingFeatureStoreOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingInput.hs b/gen/Amazonka/SageMaker/Types/ProcessingInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingInput.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingInput 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 Amazonka.SageMaker.Types.DatasetDefinition
+import Amazonka.SageMaker.Types.ProcessingS3Input
+
+-- | The inputs for a processing job. The processing input must specify
+-- exactly one of either @S3Input@ or @DatasetDefinition@ types.
+--
+-- /See:/ 'newProcessingInput' smart constructor.
+data ProcessingInput = ProcessingInput'
+  { -- | When @True@, input operations such as data download are managed natively
+    -- by the processing job application. When @False@ (default), input
+    -- operations are managed by Amazon SageMaker.
+    appManaged :: Prelude.Maybe Prelude.Bool,
+    -- | Configuration for a Dataset Definition input.
+    datasetDefinition :: Prelude.Maybe DatasetDefinition,
+    -- | Configuration for downloading input data from Amazon S3 into the
+    -- processing container.
+    s3Input :: Prelude.Maybe ProcessingS3Input,
+    -- | The name for the processing job input.
+    inputName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingInput' 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:
+--
+-- 'appManaged', 'processingInput_appManaged' - When @True@, input operations such as data download are managed natively
+-- by the processing job application. When @False@ (default), input
+-- operations are managed by Amazon SageMaker.
+--
+-- 'datasetDefinition', 'processingInput_datasetDefinition' - Configuration for a Dataset Definition input.
+--
+-- 's3Input', 'processingInput_s3Input' - Configuration for downloading input data from Amazon S3 into the
+-- processing container.
+--
+-- 'inputName', 'processingInput_inputName' - The name for the processing job input.
+newProcessingInput ::
+  -- | 'inputName'
+  Prelude.Text ->
+  ProcessingInput
+newProcessingInput pInputName_ =
+  ProcessingInput'
+    { appManaged = Prelude.Nothing,
+      datasetDefinition = Prelude.Nothing,
+      s3Input = Prelude.Nothing,
+      inputName = pInputName_
+    }
+
+-- | When @True@, input operations such as data download are managed natively
+-- by the processing job application. When @False@ (default), input
+-- operations are managed by Amazon SageMaker.
+processingInput_appManaged :: Lens.Lens' ProcessingInput (Prelude.Maybe Prelude.Bool)
+processingInput_appManaged = Lens.lens (\ProcessingInput' {appManaged} -> appManaged) (\s@ProcessingInput' {} a -> s {appManaged = a} :: ProcessingInput)
+
+-- | Configuration for a Dataset Definition input.
+processingInput_datasetDefinition :: Lens.Lens' ProcessingInput (Prelude.Maybe DatasetDefinition)
+processingInput_datasetDefinition = Lens.lens (\ProcessingInput' {datasetDefinition} -> datasetDefinition) (\s@ProcessingInput' {} a -> s {datasetDefinition = a} :: ProcessingInput)
+
+-- | Configuration for downloading input data from Amazon S3 into the
+-- processing container.
+processingInput_s3Input :: Lens.Lens' ProcessingInput (Prelude.Maybe ProcessingS3Input)
+processingInput_s3Input = Lens.lens (\ProcessingInput' {s3Input} -> s3Input) (\s@ProcessingInput' {} a -> s {s3Input = a} :: ProcessingInput)
+
+-- | The name for the processing job input.
+processingInput_inputName :: Lens.Lens' ProcessingInput Prelude.Text
+processingInput_inputName = Lens.lens (\ProcessingInput' {inputName} -> inputName) (\s@ProcessingInput' {} a -> s {inputName = a} :: ProcessingInput)
+
+instance Data.FromJSON ProcessingInput where
+  parseJSON =
+    Data.withObject
+      "ProcessingInput"
+      ( \x ->
+          ProcessingInput'
+            Prelude.<$> (x Data..:? "AppManaged")
+            Prelude.<*> (x Data..:? "DatasetDefinition")
+            Prelude.<*> (x Data..:? "S3Input")
+            Prelude.<*> (x Data..: "InputName")
+      )
+
+instance Prelude.Hashable ProcessingInput where
+  hashWithSalt _salt ProcessingInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` appManaged
+      `Prelude.hashWithSalt` datasetDefinition
+      `Prelude.hashWithSalt` s3Input
+      `Prelude.hashWithSalt` inputName
+
+instance Prelude.NFData ProcessingInput where
+  rnf ProcessingInput' {..} =
+    Prelude.rnf appManaged
+      `Prelude.seq` Prelude.rnf datasetDefinition
+      `Prelude.seq` Prelude.rnf s3Input
+      `Prelude.seq` Prelude.rnf inputName
+
+instance Data.ToJSON ProcessingInput where
+  toJSON ProcessingInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AppManaged" Data..=) Prelude.<$> appManaged,
+            ("DatasetDefinition" Data..=)
+              Prelude.<$> datasetDefinition,
+            ("S3Input" Data..=) Prelude.<$> s3Input,
+            Prelude.Just ("InputName" Data..= inputName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingInstanceType.hs b/gen/Amazonka/SageMaker/Types/ProcessingInstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingInstanceType.hs
@@ -0,0 +1,281 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingInstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingInstanceType
+  ( ProcessingInstanceType
+      ( ..,
+        ProcessingInstanceType_Ml_c4_2xlarge,
+        ProcessingInstanceType_Ml_c4_4xlarge,
+        ProcessingInstanceType_Ml_c4_8xlarge,
+        ProcessingInstanceType_Ml_c4_xlarge,
+        ProcessingInstanceType_Ml_c5_18xlarge,
+        ProcessingInstanceType_Ml_c5_2xlarge,
+        ProcessingInstanceType_Ml_c5_4xlarge,
+        ProcessingInstanceType_Ml_c5_9xlarge,
+        ProcessingInstanceType_Ml_c5_xlarge,
+        ProcessingInstanceType_Ml_g4dn_12xlarge,
+        ProcessingInstanceType_Ml_g4dn_16xlarge,
+        ProcessingInstanceType_Ml_g4dn_2xlarge,
+        ProcessingInstanceType_Ml_g4dn_4xlarge,
+        ProcessingInstanceType_Ml_g4dn_8xlarge,
+        ProcessingInstanceType_Ml_g4dn_xlarge,
+        ProcessingInstanceType_Ml_m4_10xlarge,
+        ProcessingInstanceType_Ml_m4_16xlarge,
+        ProcessingInstanceType_Ml_m4_2xlarge,
+        ProcessingInstanceType_Ml_m4_4xlarge,
+        ProcessingInstanceType_Ml_m4_xlarge,
+        ProcessingInstanceType_Ml_m5_12xlarge,
+        ProcessingInstanceType_Ml_m5_24xlarge,
+        ProcessingInstanceType_Ml_m5_2xlarge,
+        ProcessingInstanceType_Ml_m5_4xlarge,
+        ProcessingInstanceType_Ml_m5_large,
+        ProcessingInstanceType_Ml_m5_xlarge,
+        ProcessingInstanceType_Ml_p2_16xlarge,
+        ProcessingInstanceType_Ml_p2_8xlarge,
+        ProcessingInstanceType_Ml_p2_xlarge,
+        ProcessingInstanceType_Ml_p3_16xlarge,
+        ProcessingInstanceType_Ml_p3_2xlarge,
+        ProcessingInstanceType_Ml_p3_8xlarge,
+        ProcessingInstanceType_Ml_r5_12xlarge,
+        ProcessingInstanceType_Ml_r5_16xlarge,
+        ProcessingInstanceType_Ml_r5_24xlarge,
+        ProcessingInstanceType_Ml_r5_2xlarge,
+        ProcessingInstanceType_Ml_r5_4xlarge,
+        ProcessingInstanceType_Ml_r5_8xlarge,
+        ProcessingInstanceType_Ml_r5_large,
+        ProcessingInstanceType_Ml_r5_xlarge,
+        ProcessingInstanceType_Ml_t3_2xlarge,
+        ProcessingInstanceType_Ml_t3_large,
+        ProcessingInstanceType_Ml_t3_medium,
+        ProcessingInstanceType_Ml_t3_xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingInstanceType = ProcessingInstanceType'
+  { fromProcessingInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingInstanceType_Ml_c4_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c4_2xlarge = ProcessingInstanceType' "ml.c4.2xlarge"
+
+pattern ProcessingInstanceType_Ml_c4_4xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c4_4xlarge = ProcessingInstanceType' "ml.c4.4xlarge"
+
+pattern ProcessingInstanceType_Ml_c4_8xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c4_8xlarge = ProcessingInstanceType' "ml.c4.8xlarge"
+
+pattern ProcessingInstanceType_Ml_c4_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c4_xlarge = ProcessingInstanceType' "ml.c4.xlarge"
+
+pattern ProcessingInstanceType_Ml_c5_18xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c5_18xlarge = ProcessingInstanceType' "ml.c5.18xlarge"
+
+pattern ProcessingInstanceType_Ml_c5_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c5_2xlarge = ProcessingInstanceType' "ml.c5.2xlarge"
+
+pattern ProcessingInstanceType_Ml_c5_4xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c5_4xlarge = ProcessingInstanceType' "ml.c5.4xlarge"
+
+pattern ProcessingInstanceType_Ml_c5_9xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c5_9xlarge = ProcessingInstanceType' "ml.c5.9xlarge"
+
+pattern ProcessingInstanceType_Ml_c5_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_c5_xlarge = ProcessingInstanceType' "ml.c5.xlarge"
+
+pattern ProcessingInstanceType_Ml_g4dn_12xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_g4dn_12xlarge = ProcessingInstanceType' "ml.g4dn.12xlarge"
+
+pattern ProcessingInstanceType_Ml_g4dn_16xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_g4dn_16xlarge = ProcessingInstanceType' "ml.g4dn.16xlarge"
+
+pattern ProcessingInstanceType_Ml_g4dn_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_g4dn_2xlarge = ProcessingInstanceType' "ml.g4dn.2xlarge"
+
+pattern ProcessingInstanceType_Ml_g4dn_4xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_g4dn_4xlarge = ProcessingInstanceType' "ml.g4dn.4xlarge"
+
+pattern ProcessingInstanceType_Ml_g4dn_8xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_g4dn_8xlarge = ProcessingInstanceType' "ml.g4dn.8xlarge"
+
+pattern ProcessingInstanceType_Ml_g4dn_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_g4dn_xlarge = ProcessingInstanceType' "ml.g4dn.xlarge"
+
+pattern ProcessingInstanceType_Ml_m4_10xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m4_10xlarge = ProcessingInstanceType' "ml.m4.10xlarge"
+
+pattern ProcessingInstanceType_Ml_m4_16xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m4_16xlarge = ProcessingInstanceType' "ml.m4.16xlarge"
+
+pattern ProcessingInstanceType_Ml_m4_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m4_2xlarge = ProcessingInstanceType' "ml.m4.2xlarge"
+
+pattern ProcessingInstanceType_Ml_m4_4xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m4_4xlarge = ProcessingInstanceType' "ml.m4.4xlarge"
+
+pattern ProcessingInstanceType_Ml_m4_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m4_xlarge = ProcessingInstanceType' "ml.m4.xlarge"
+
+pattern ProcessingInstanceType_Ml_m5_12xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m5_12xlarge = ProcessingInstanceType' "ml.m5.12xlarge"
+
+pattern ProcessingInstanceType_Ml_m5_24xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m5_24xlarge = ProcessingInstanceType' "ml.m5.24xlarge"
+
+pattern ProcessingInstanceType_Ml_m5_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m5_2xlarge = ProcessingInstanceType' "ml.m5.2xlarge"
+
+pattern ProcessingInstanceType_Ml_m5_4xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m5_4xlarge = ProcessingInstanceType' "ml.m5.4xlarge"
+
+pattern ProcessingInstanceType_Ml_m5_large :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m5_large = ProcessingInstanceType' "ml.m5.large"
+
+pattern ProcessingInstanceType_Ml_m5_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_m5_xlarge = ProcessingInstanceType' "ml.m5.xlarge"
+
+pattern ProcessingInstanceType_Ml_p2_16xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_p2_16xlarge = ProcessingInstanceType' "ml.p2.16xlarge"
+
+pattern ProcessingInstanceType_Ml_p2_8xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_p2_8xlarge = ProcessingInstanceType' "ml.p2.8xlarge"
+
+pattern ProcessingInstanceType_Ml_p2_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_p2_xlarge = ProcessingInstanceType' "ml.p2.xlarge"
+
+pattern ProcessingInstanceType_Ml_p3_16xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_p3_16xlarge = ProcessingInstanceType' "ml.p3.16xlarge"
+
+pattern ProcessingInstanceType_Ml_p3_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_p3_2xlarge = ProcessingInstanceType' "ml.p3.2xlarge"
+
+pattern ProcessingInstanceType_Ml_p3_8xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_p3_8xlarge = ProcessingInstanceType' "ml.p3.8xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_12xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_12xlarge = ProcessingInstanceType' "ml.r5.12xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_16xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_16xlarge = ProcessingInstanceType' "ml.r5.16xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_24xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_24xlarge = ProcessingInstanceType' "ml.r5.24xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_2xlarge = ProcessingInstanceType' "ml.r5.2xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_4xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_4xlarge = ProcessingInstanceType' "ml.r5.4xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_8xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_8xlarge = ProcessingInstanceType' "ml.r5.8xlarge"
+
+pattern ProcessingInstanceType_Ml_r5_large :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_large = ProcessingInstanceType' "ml.r5.large"
+
+pattern ProcessingInstanceType_Ml_r5_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_r5_xlarge = ProcessingInstanceType' "ml.r5.xlarge"
+
+pattern ProcessingInstanceType_Ml_t3_2xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_t3_2xlarge = ProcessingInstanceType' "ml.t3.2xlarge"
+
+pattern ProcessingInstanceType_Ml_t3_large :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_t3_large = ProcessingInstanceType' "ml.t3.large"
+
+pattern ProcessingInstanceType_Ml_t3_medium :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_t3_medium = ProcessingInstanceType' "ml.t3.medium"
+
+pattern ProcessingInstanceType_Ml_t3_xlarge :: ProcessingInstanceType
+pattern ProcessingInstanceType_Ml_t3_xlarge = ProcessingInstanceType' "ml.t3.xlarge"
+
+{-# COMPLETE
+  ProcessingInstanceType_Ml_c4_2xlarge,
+  ProcessingInstanceType_Ml_c4_4xlarge,
+  ProcessingInstanceType_Ml_c4_8xlarge,
+  ProcessingInstanceType_Ml_c4_xlarge,
+  ProcessingInstanceType_Ml_c5_18xlarge,
+  ProcessingInstanceType_Ml_c5_2xlarge,
+  ProcessingInstanceType_Ml_c5_4xlarge,
+  ProcessingInstanceType_Ml_c5_9xlarge,
+  ProcessingInstanceType_Ml_c5_xlarge,
+  ProcessingInstanceType_Ml_g4dn_12xlarge,
+  ProcessingInstanceType_Ml_g4dn_16xlarge,
+  ProcessingInstanceType_Ml_g4dn_2xlarge,
+  ProcessingInstanceType_Ml_g4dn_4xlarge,
+  ProcessingInstanceType_Ml_g4dn_8xlarge,
+  ProcessingInstanceType_Ml_g4dn_xlarge,
+  ProcessingInstanceType_Ml_m4_10xlarge,
+  ProcessingInstanceType_Ml_m4_16xlarge,
+  ProcessingInstanceType_Ml_m4_2xlarge,
+  ProcessingInstanceType_Ml_m4_4xlarge,
+  ProcessingInstanceType_Ml_m4_xlarge,
+  ProcessingInstanceType_Ml_m5_12xlarge,
+  ProcessingInstanceType_Ml_m5_24xlarge,
+  ProcessingInstanceType_Ml_m5_2xlarge,
+  ProcessingInstanceType_Ml_m5_4xlarge,
+  ProcessingInstanceType_Ml_m5_large,
+  ProcessingInstanceType_Ml_m5_xlarge,
+  ProcessingInstanceType_Ml_p2_16xlarge,
+  ProcessingInstanceType_Ml_p2_8xlarge,
+  ProcessingInstanceType_Ml_p2_xlarge,
+  ProcessingInstanceType_Ml_p3_16xlarge,
+  ProcessingInstanceType_Ml_p3_2xlarge,
+  ProcessingInstanceType_Ml_p3_8xlarge,
+  ProcessingInstanceType_Ml_r5_12xlarge,
+  ProcessingInstanceType_Ml_r5_16xlarge,
+  ProcessingInstanceType_Ml_r5_24xlarge,
+  ProcessingInstanceType_Ml_r5_2xlarge,
+  ProcessingInstanceType_Ml_r5_4xlarge,
+  ProcessingInstanceType_Ml_r5_8xlarge,
+  ProcessingInstanceType_Ml_r5_large,
+  ProcessingInstanceType_Ml_r5_xlarge,
+  ProcessingInstanceType_Ml_t3_2xlarge,
+  ProcessingInstanceType_Ml_t3_large,
+  ProcessingInstanceType_Ml_t3_medium,
+  ProcessingInstanceType_Ml_t3_xlarge,
+  ProcessingInstanceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingJob.hs b/gen/Amazonka/SageMaker/Types/ProcessingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingJob.hs
@@ -0,0 +1,350 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingJob 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 Amazonka.SageMaker.Types.AppSpecification
+import Amazonka.SageMaker.Types.ExperimentConfig
+import Amazonka.SageMaker.Types.NetworkConfig
+import Amazonka.SageMaker.Types.ProcessingInput
+import Amazonka.SageMaker.Types.ProcessingJobStatus
+import Amazonka.SageMaker.Types.ProcessingOutputConfig
+import Amazonka.SageMaker.Types.ProcessingResources
+import Amazonka.SageMaker.Types.ProcessingStoppingCondition
+import Amazonka.SageMaker.Types.Tag
+
+-- | An Amazon SageMaker processing job that is used to analyze data and
+-- evaluate models. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html Process Data and Evaluate Models>.
+--
+-- /See:/ 'newProcessingJob' smart constructor.
+data ProcessingJob = ProcessingJob'
+  { appSpecification :: Prelude.Maybe AppSpecification,
+    -- | The Amazon Resource Name (ARN) of the AutoML job associated with this
+    -- processing job.
+    autoMLJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The time the processing job was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | Sets the environment variables in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A string, up to one KB in size, that contains metadata from the
+    -- processing container when the processing job exits.
+    exitMessage :: Prelude.Maybe Prelude.Text,
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | A string, up to one KB in size, that contains the reason a processing
+    -- job failed, if it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The time the processing job was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of a monitoring schedule for an endpoint associated with this
+    -- processing job.
+    monitoringScheduleArn :: Prelude.Maybe Prelude.Text,
+    networkConfig :: Prelude.Maybe NetworkConfig,
+    -- | The time that the processing job ended.
+    processingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | List of input configurations for the processing job.
+    processingInputs :: Prelude.Maybe [ProcessingInput],
+    -- | The ARN of the processing job.
+    processingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the processing job.
+    processingJobName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the processing job.
+    processingJobStatus :: Prelude.Maybe ProcessingJobStatus,
+    processingOutputConfig :: Prelude.Maybe ProcessingOutputConfig,
+    processingResources :: Prelude.Maybe ProcessingResources,
+    -- | The time that the processing job started.
+    processingStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the role used to create the processing job.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    stoppingCondition :: Prelude.Maybe ProcessingStoppingCondition,
+    -- | An array of key-value pairs. For more information, see
+    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ARN of the training job associated with this processing job.
+    trainingJobArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingJob' 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:
+--
+-- 'appSpecification', 'processingJob_appSpecification' - Undocumented member.
+--
+-- 'autoMLJobArn', 'processingJob_autoMLJobArn' - The Amazon Resource Name (ARN) of the AutoML job associated with this
+-- processing job.
+--
+-- 'creationTime', 'processingJob_creationTime' - The time the processing job was created.
+--
+-- 'environment', 'processingJob_environment' - Sets the environment variables in the Docker container.
+--
+-- 'exitMessage', 'processingJob_exitMessage' - A string, up to one KB in size, that contains metadata from the
+-- processing container when the processing job exits.
+--
+-- 'experimentConfig', 'processingJob_experimentConfig' - Undocumented member.
+--
+-- 'failureReason', 'processingJob_failureReason' - A string, up to one KB in size, that contains the reason a processing
+-- job failed, if it failed.
+--
+-- 'lastModifiedTime', 'processingJob_lastModifiedTime' - The time the processing job was last modified.
+--
+-- 'monitoringScheduleArn', 'processingJob_monitoringScheduleArn' - The ARN of a monitoring schedule for an endpoint associated with this
+-- processing job.
+--
+-- 'networkConfig', 'processingJob_networkConfig' - Undocumented member.
+--
+-- 'processingEndTime', 'processingJob_processingEndTime' - The time that the processing job ended.
+--
+-- 'processingInputs', 'processingJob_processingInputs' - List of input configurations for the processing job.
+--
+-- 'processingJobArn', 'processingJob_processingJobArn' - The ARN of the processing job.
+--
+-- 'processingJobName', 'processingJob_processingJobName' - The name of the processing job.
+--
+-- 'processingJobStatus', 'processingJob_processingJobStatus' - The status of the processing job.
+--
+-- 'processingOutputConfig', 'processingJob_processingOutputConfig' - Undocumented member.
+--
+-- 'processingResources', 'processingJob_processingResources' - Undocumented member.
+--
+-- 'processingStartTime', 'processingJob_processingStartTime' - The time that the processing job started.
+--
+-- 'roleArn', 'processingJob_roleArn' - The ARN of the role used to create the processing job.
+--
+-- 'stoppingCondition', 'processingJob_stoppingCondition' - Undocumented member.
+--
+-- 'tags', 'processingJob_tags' - An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+--
+-- 'trainingJobArn', 'processingJob_trainingJobArn' - The ARN of the training job associated with this processing job.
+newProcessingJob ::
+  ProcessingJob
+newProcessingJob =
+  ProcessingJob'
+    { appSpecification = Prelude.Nothing,
+      autoMLJobArn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      exitMessage = Prelude.Nothing,
+      experimentConfig = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      monitoringScheduleArn = Prelude.Nothing,
+      networkConfig = Prelude.Nothing,
+      processingEndTime = Prelude.Nothing,
+      processingInputs = Prelude.Nothing,
+      processingJobArn = Prelude.Nothing,
+      processingJobName = Prelude.Nothing,
+      processingJobStatus = Prelude.Nothing,
+      processingOutputConfig = Prelude.Nothing,
+      processingResources = Prelude.Nothing,
+      processingStartTime = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      stoppingCondition = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      trainingJobArn = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+processingJob_appSpecification :: Lens.Lens' ProcessingJob (Prelude.Maybe AppSpecification)
+processingJob_appSpecification = Lens.lens (\ProcessingJob' {appSpecification} -> appSpecification) (\s@ProcessingJob' {} a -> s {appSpecification = a} :: ProcessingJob)
+
+-- | The Amazon Resource Name (ARN) of the AutoML job associated with this
+-- processing job.
+processingJob_autoMLJobArn :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_autoMLJobArn = Lens.lens (\ProcessingJob' {autoMLJobArn} -> autoMLJobArn) (\s@ProcessingJob' {} a -> s {autoMLJobArn = a} :: ProcessingJob)
+
+-- | The time the processing job was created.
+processingJob_creationTime :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.UTCTime)
+processingJob_creationTime = Lens.lens (\ProcessingJob' {creationTime} -> creationTime) (\s@ProcessingJob' {} a -> s {creationTime = a} :: ProcessingJob) Prelude.. Lens.mapping Data._Time
+
+-- | Sets the environment variables in the Docker container.
+processingJob_environment :: Lens.Lens' ProcessingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+processingJob_environment = Lens.lens (\ProcessingJob' {environment} -> environment) (\s@ProcessingJob' {} a -> s {environment = a} :: ProcessingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | A string, up to one KB in size, that contains metadata from the
+-- processing container when the processing job exits.
+processingJob_exitMessage :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_exitMessage = Lens.lens (\ProcessingJob' {exitMessage} -> exitMessage) (\s@ProcessingJob' {} a -> s {exitMessage = a} :: ProcessingJob)
+
+-- | Undocumented member.
+processingJob_experimentConfig :: Lens.Lens' ProcessingJob (Prelude.Maybe ExperimentConfig)
+processingJob_experimentConfig = Lens.lens (\ProcessingJob' {experimentConfig} -> experimentConfig) (\s@ProcessingJob' {} a -> s {experimentConfig = a} :: ProcessingJob)
+
+-- | A string, up to one KB in size, that contains the reason a processing
+-- job failed, if it failed.
+processingJob_failureReason :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_failureReason = Lens.lens (\ProcessingJob' {failureReason} -> failureReason) (\s@ProcessingJob' {} a -> s {failureReason = a} :: ProcessingJob)
+
+-- | The time the processing job was last modified.
+processingJob_lastModifiedTime :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.UTCTime)
+processingJob_lastModifiedTime = Lens.lens (\ProcessingJob' {lastModifiedTime} -> lastModifiedTime) (\s@ProcessingJob' {} a -> s {lastModifiedTime = a} :: ProcessingJob) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of a monitoring schedule for an endpoint associated with this
+-- processing job.
+processingJob_monitoringScheduleArn :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_monitoringScheduleArn = Lens.lens (\ProcessingJob' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@ProcessingJob' {} a -> s {monitoringScheduleArn = a} :: ProcessingJob)
+
+-- | Undocumented member.
+processingJob_networkConfig :: Lens.Lens' ProcessingJob (Prelude.Maybe NetworkConfig)
+processingJob_networkConfig = Lens.lens (\ProcessingJob' {networkConfig} -> networkConfig) (\s@ProcessingJob' {} a -> s {networkConfig = a} :: ProcessingJob)
+
+-- | The time that the processing job ended.
+processingJob_processingEndTime :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.UTCTime)
+processingJob_processingEndTime = Lens.lens (\ProcessingJob' {processingEndTime} -> processingEndTime) (\s@ProcessingJob' {} a -> s {processingEndTime = a} :: ProcessingJob) Prelude.. Lens.mapping Data._Time
+
+-- | List of input configurations for the processing job.
+processingJob_processingInputs :: Lens.Lens' ProcessingJob (Prelude.Maybe [ProcessingInput])
+processingJob_processingInputs = Lens.lens (\ProcessingJob' {processingInputs} -> processingInputs) (\s@ProcessingJob' {} a -> s {processingInputs = a} :: ProcessingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the processing job.
+processingJob_processingJobArn :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_processingJobArn = Lens.lens (\ProcessingJob' {processingJobArn} -> processingJobArn) (\s@ProcessingJob' {} a -> s {processingJobArn = a} :: ProcessingJob)
+
+-- | The name of the processing job.
+processingJob_processingJobName :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_processingJobName = Lens.lens (\ProcessingJob' {processingJobName} -> processingJobName) (\s@ProcessingJob' {} a -> s {processingJobName = a} :: ProcessingJob)
+
+-- | The status of the processing job.
+processingJob_processingJobStatus :: Lens.Lens' ProcessingJob (Prelude.Maybe ProcessingJobStatus)
+processingJob_processingJobStatus = Lens.lens (\ProcessingJob' {processingJobStatus} -> processingJobStatus) (\s@ProcessingJob' {} a -> s {processingJobStatus = a} :: ProcessingJob)
+
+-- | Undocumented member.
+processingJob_processingOutputConfig :: Lens.Lens' ProcessingJob (Prelude.Maybe ProcessingOutputConfig)
+processingJob_processingOutputConfig = Lens.lens (\ProcessingJob' {processingOutputConfig} -> processingOutputConfig) (\s@ProcessingJob' {} a -> s {processingOutputConfig = a} :: ProcessingJob)
+
+-- | Undocumented member.
+processingJob_processingResources :: Lens.Lens' ProcessingJob (Prelude.Maybe ProcessingResources)
+processingJob_processingResources = Lens.lens (\ProcessingJob' {processingResources} -> processingResources) (\s@ProcessingJob' {} a -> s {processingResources = a} :: ProcessingJob)
+
+-- | The time that the processing job started.
+processingJob_processingStartTime :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.UTCTime)
+processingJob_processingStartTime = Lens.lens (\ProcessingJob' {processingStartTime} -> processingStartTime) (\s@ProcessingJob' {} a -> s {processingStartTime = a} :: ProcessingJob) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the role used to create the processing job.
+processingJob_roleArn :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_roleArn = Lens.lens (\ProcessingJob' {roleArn} -> roleArn) (\s@ProcessingJob' {} a -> s {roleArn = a} :: ProcessingJob)
+
+-- | Undocumented member.
+processingJob_stoppingCondition :: Lens.Lens' ProcessingJob (Prelude.Maybe ProcessingStoppingCondition)
+processingJob_stoppingCondition = Lens.lens (\ProcessingJob' {stoppingCondition} -> stoppingCondition) (\s@ProcessingJob' {} a -> s {stoppingCondition = a} :: ProcessingJob)
+
+-- | An array of key-value pairs. For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
+-- in the /Amazon Web Services Billing and Cost Management User Guide/.
+processingJob_tags :: Lens.Lens' ProcessingJob (Prelude.Maybe [Tag])
+processingJob_tags = Lens.lens (\ProcessingJob' {tags} -> tags) (\s@ProcessingJob' {} a -> s {tags = a} :: ProcessingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the training job associated with this processing job.
+processingJob_trainingJobArn :: Lens.Lens' ProcessingJob (Prelude.Maybe Prelude.Text)
+processingJob_trainingJobArn = Lens.lens (\ProcessingJob' {trainingJobArn} -> trainingJobArn) (\s@ProcessingJob' {} a -> s {trainingJobArn = a} :: ProcessingJob)
+
+instance Data.FromJSON ProcessingJob where
+  parseJSON =
+    Data.withObject
+      "ProcessingJob"
+      ( \x ->
+          ProcessingJob'
+            Prelude.<$> (x Data..:? "AppSpecification")
+            Prelude.<*> (x Data..:? "AutoMLJobArn")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ExitMessage")
+            Prelude.<*> (x Data..:? "ExperimentConfig")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "MonitoringScheduleArn")
+            Prelude.<*> (x Data..:? "NetworkConfig")
+            Prelude.<*> (x Data..:? "ProcessingEndTime")
+            Prelude.<*> ( x
+                            Data..:? "ProcessingInputs"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "ProcessingJobArn")
+            Prelude.<*> (x Data..:? "ProcessingJobName")
+            Prelude.<*> (x Data..:? "ProcessingJobStatus")
+            Prelude.<*> (x Data..:? "ProcessingOutputConfig")
+            Prelude.<*> (x Data..:? "ProcessingResources")
+            Prelude.<*> (x Data..:? "ProcessingStartTime")
+            Prelude.<*> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "StoppingCondition")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TrainingJobArn")
+      )
+
+instance Prelude.Hashable ProcessingJob where
+  hashWithSalt _salt ProcessingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` appSpecification
+      `Prelude.hashWithSalt` autoMLJobArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` exitMessage
+      `Prelude.hashWithSalt` experimentConfig
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` monitoringScheduleArn
+      `Prelude.hashWithSalt` networkConfig
+      `Prelude.hashWithSalt` processingEndTime
+      `Prelude.hashWithSalt` processingInputs
+      `Prelude.hashWithSalt` processingJobArn
+      `Prelude.hashWithSalt` processingJobName
+      `Prelude.hashWithSalt` processingJobStatus
+      `Prelude.hashWithSalt` processingOutputConfig
+      `Prelude.hashWithSalt` processingResources
+      `Prelude.hashWithSalt` processingStartTime
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` stoppingCondition
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trainingJobArn
+
+instance Prelude.NFData ProcessingJob where
+  rnf ProcessingJob' {..} =
+    Prelude.rnf appSpecification
+      `Prelude.seq` Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf exitMessage
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
+      `Prelude.seq` Prelude.rnf networkConfig
+      `Prelude.seq` Prelude.rnf processingEndTime
+      `Prelude.seq` Prelude.rnf processingInputs
+      `Prelude.seq` Prelude.rnf processingJobArn
+      `Prelude.seq` Prelude.rnf processingJobName
+      `Prelude.seq` Prelude.rnf processingJobStatus
+      `Prelude.seq` Prelude.rnf processingOutputConfig
+      `Prelude.seq` Prelude.rnf processingResources
+      `Prelude.seq` Prelude.rnf processingStartTime
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trainingJobArn
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingJobStatus.hs b/gen/Amazonka/SageMaker/Types/ProcessingJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingJobStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingJobStatus
+  ( ProcessingJobStatus
+      ( ..,
+        ProcessingJobStatus_Completed,
+        ProcessingJobStatus_Failed,
+        ProcessingJobStatus_InProgress,
+        ProcessingJobStatus_Stopped,
+        ProcessingJobStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingJobStatus = ProcessingJobStatus'
+  { fromProcessingJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingJobStatus_Completed :: ProcessingJobStatus
+pattern ProcessingJobStatus_Completed = ProcessingJobStatus' "Completed"
+
+pattern ProcessingJobStatus_Failed :: ProcessingJobStatus
+pattern ProcessingJobStatus_Failed = ProcessingJobStatus' "Failed"
+
+pattern ProcessingJobStatus_InProgress :: ProcessingJobStatus
+pattern ProcessingJobStatus_InProgress = ProcessingJobStatus' "InProgress"
+
+pattern ProcessingJobStatus_Stopped :: ProcessingJobStatus
+pattern ProcessingJobStatus_Stopped = ProcessingJobStatus' "Stopped"
+
+pattern ProcessingJobStatus_Stopping :: ProcessingJobStatus
+pattern ProcessingJobStatus_Stopping = ProcessingJobStatus' "Stopping"
+
+{-# COMPLETE
+  ProcessingJobStatus_Completed,
+  ProcessingJobStatus_Failed,
+  ProcessingJobStatus_InProgress,
+  ProcessingJobStatus_Stopped,
+  ProcessingJobStatus_Stopping,
+  ProcessingJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingJobStepMetadata.hs b/gen/Amazonka/SageMaker/Types/ProcessingJobStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingJobStepMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingJobStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingJobStepMetadata 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
+
+-- | Metadata for a processing job step.
+--
+-- /See:/ 'newProcessingJobStepMetadata' smart constructor.
+data ProcessingJobStepMetadata = ProcessingJobStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the processing job.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingJobStepMetadata' 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:
+--
+-- 'arn', 'processingJobStepMetadata_arn' - The Amazon Resource Name (ARN) of the processing job.
+newProcessingJobStepMetadata ::
+  ProcessingJobStepMetadata
+newProcessingJobStepMetadata =
+  ProcessingJobStepMetadata' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the processing job.
+processingJobStepMetadata_arn :: Lens.Lens' ProcessingJobStepMetadata (Prelude.Maybe Prelude.Text)
+processingJobStepMetadata_arn = Lens.lens (\ProcessingJobStepMetadata' {arn} -> arn) (\s@ProcessingJobStepMetadata' {} a -> s {arn = a} :: ProcessingJobStepMetadata)
+
+instance Data.FromJSON ProcessingJobStepMetadata where
+  parseJSON =
+    Data.withObject
+      "ProcessingJobStepMetadata"
+      ( \x ->
+          ProcessingJobStepMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable ProcessingJobStepMetadata where
+  hashWithSalt _salt ProcessingJobStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData ProcessingJobStepMetadata where
+  rnf ProcessingJobStepMetadata' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingJobSummary.hs b/gen/Amazonka/SageMaker/Types/ProcessingJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingJobSummary.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingJobSummary 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 Amazonka.SageMaker.Types.ProcessingJobStatus
+
+-- | Summary of information about a processing job.
+--
+-- /See:/ 'newProcessingJobSummary' smart constructor.
+data ProcessingJobSummary = ProcessingJobSummary'
+  { -- | An optional string, up to one KB in size, that contains metadata from
+    -- the processing container when the processing job exits.
+    exitMessage :: Prelude.Maybe Prelude.Text,
+    -- | A string, up to one KB in size, that contains the reason a processing
+    -- job failed, if it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates the last time the processing job was
+    -- modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The time at which the processing job completed.
+    processingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the processing job.
+    processingJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the processing job..
+    processingJobArn :: Prelude.Text,
+    -- | The time at which the processing job was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the processing job.
+    processingJobStatus :: ProcessingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingJobSummary' 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:
+--
+-- 'exitMessage', 'processingJobSummary_exitMessage' - An optional string, up to one KB in size, that contains metadata from
+-- the processing container when the processing job exits.
+--
+-- 'failureReason', 'processingJobSummary_failureReason' - A string, up to one KB in size, that contains the reason a processing
+-- job failed, if it failed.
+--
+-- 'lastModifiedTime', 'processingJobSummary_lastModifiedTime' - A timestamp that indicates the last time the processing job was
+-- modified.
+--
+-- 'processingEndTime', 'processingJobSummary_processingEndTime' - The time at which the processing job completed.
+--
+-- 'processingJobName', 'processingJobSummary_processingJobName' - The name of the processing job.
+--
+-- 'processingJobArn', 'processingJobSummary_processingJobArn' - The Amazon Resource Name (ARN) of the processing job..
+--
+-- 'creationTime', 'processingJobSummary_creationTime' - The time at which the processing job was created.
+--
+-- 'processingJobStatus', 'processingJobSummary_processingJobStatus' - The status of the processing job.
+newProcessingJobSummary ::
+  -- | 'processingJobName'
+  Prelude.Text ->
+  -- | 'processingJobArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'processingJobStatus'
+  ProcessingJobStatus ->
+  ProcessingJobSummary
+newProcessingJobSummary
+  pProcessingJobName_
+  pProcessingJobArn_
+  pCreationTime_
+  pProcessingJobStatus_ =
+    ProcessingJobSummary'
+      { exitMessage =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        processingEndTime = Prelude.Nothing,
+        processingJobName = pProcessingJobName_,
+        processingJobArn = pProcessingJobArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        processingJobStatus = pProcessingJobStatus_
+      }
+
+-- | An optional string, up to one KB in size, that contains metadata from
+-- the processing container when the processing job exits.
+processingJobSummary_exitMessage :: Lens.Lens' ProcessingJobSummary (Prelude.Maybe Prelude.Text)
+processingJobSummary_exitMessage = Lens.lens (\ProcessingJobSummary' {exitMessage} -> exitMessage) (\s@ProcessingJobSummary' {} a -> s {exitMessage = a} :: ProcessingJobSummary)
+
+-- | A string, up to one KB in size, that contains the reason a processing
+-- job failed, if it failed.
+processingJobSummary_failureReason :: Lens.Lens' ProcessingJobSummary (Prelude.Maybe Prelude.Text)
+processingJobSummary_failureReason = Lens.lens (\ProcessingJobSummary' {failureReason} -> failureReason) (\s@ProcessingJobSummary' {} a -> s {failureReason = a} :: ProcessingJobSummary)
+
+-- | A timestamp that indicates the last time the processing job was
+-- modified.
+processingJobSummary_lastModifiedTime :: Lens.Lens' ProcessingJobSummary (Prelude.Maybe Prelude.UTCTime)
+processingJobSummary_lastModifiedTime = Lens.lens (\ProcessingJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@ProcessingJobSummary' {} a -> s {lastModifiedTime = a} :: ProcessingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which the processing job completed.
+processingJobSummary_processingEndTime :: Lens.Lens' ProcessingJobSummary (Prelude.Maybe Prelude.UTCTime)
+processingJobSummary_processingEndTime = Lens.lens (\ProcessingJobSummary' {processingEndTime} -> processingEndTime) (\s@ProcessingJobSummary' {} a -> s {processingEndTime = a} :: ProcessingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the processing job.
+processingJobSummary_processingJobName :: Lens.Lens' ProcessingJobSummary Prelude.Text
+processingJobSummary_processingJobName = Lens.lens (\ProcessingJobSummary' {processingJobName} -> processingJobName) (\s@ProcessingJobSummary' {} a -> s {processingJobName = a} :: ProcessingJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the processing job..
+processingJobSummary_processingJobArn :: Lens.Lens' ProcessingJobSummary Prelude.Text
+processingJobSummary_processingJobArn = Lens.lens (\ProcessingJobSummary' {processingJobArn} -> processingJobArn) (\s@ProcessingJobSummary' {} a -> s {processingJobArn = a} :: ProcessingJobSummary)
+
+-- | The time at which the processing job was created.
+processingJobSummary_creationTime :: Lens.Lens' ProcessingJobSummary Prelude.UTCTime
+processingJobSummary_creationTime = Lens.lens (\ProcessingJobSummary' {creationTime} -> creationTime) (\s@ProcessingJobSummary' {} a -> s {creationTime = a} :: ProcessingJobSummary) Prelude.. Data._Time
+
+-- | The status of the processing job.
+processingJobSummary_processingJobStatus :: Lens.Lens' ProcessingJobSummary ProcessingJobStatus
+processingJobSummary_processingJobStatus = Lens.lens (\ProcessingJobSummary' {processingJobStatus} -> processingJobStatus) (\s@ProcessingJobSummary' {} a -> s {processingJobStatus = a} :: ProcessingJobSummary)
+
+instance Data.FromJSON ProcessingJobSummary where
+  parseJSON =
+    Data.withObject
+      "ProcessingJobSummary"
+      ( \x ->
+          ProcessingJobSummary'
+            Prelude.<$> (x Data..:? "ExitMessage")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ProcessingEndTime")
+            Prelude.<*> (x Data..: "ProcessingJobName")
+            Prelude.<*> (x Data..: "ProcessingJobArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "ProcessingJobStatus")
+      )
+
+instance Prelude.Hashable ProcessingJobSummary where
+  hashWithSalt _salt ProcessingJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` exitMessage
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` processingEndTime
+      `Prelude.hashWithSalt` processingJobName
+      `Prelude.hashWithSalt` processingJobArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` processingJobStatus
+
+instance Prelude.NFData ProcessingJobSummary where
+  rnf ProcessingJobSummary' {..} =
+    Prelude.rnf exitMessage
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf processingEndTime
+      `Prelude.seq` Prelude.rnf processingJobName
+      `Prelude.seq` Prelude.rnf processingJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf processingJobStatus
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingOutput.hs b/gen/Amazonka/SageMaker/Types/ProcessingOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingOutput.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingOutput 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 Amazonka.SageMaker.Types.ProcessingFeatureStoreOutput
+import Amazonka.SageMaker.Types.ProcessingS3Output
+
+-- | Describes the results of a processing job. The processing output must
+-- specify exactly one of either @S3Output@ or @FeatureStoreOutput@ types.
+--
+-- /See:/ 'newProcessingOutput' smart constructor.
+data ProcessingOutput = ProcessingOutput'
+  { -- | When @True@, output operations such as data upload are managed natively
+    -- by the processing job application. When @False@ (default), output
+    -- operations are managed by Amazon SageMaker.
+    appManaged :: Prelude.Maybe Prelude.Bool,
+    -- | Configuration for processing job outputs in Amazon SageMaker Feature
+    -- Store. This processing output type is only supported when @AppManaged@
+    -- is specified.
+    featureStoreOutput :: Prelude.Maybe ProcessingFeatureStoreOutput,
+    -- | Configuration for processing job outputs in Amazon S3.
+    s3Output :: Prelude.Maybe ProcessingS3Output,
+    -- | The name for the processing job output.
+    outputName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingOutput' 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:
+--
+-- 'appManaged', 'processingOutput_appManaged' - When @True@, output operations such as data upload are managed natively
+-- by the processing job application. When @False@ (default), output
+-- operations are managed by Amazon SageMaker.
+--
+-- 'featureStoreOutput', 'processingOutput_featureStoreOutput' - Configuration for processing job outputs in Amazon SageMaker Feature
+-- Store. This processing output type is only supported when @AppManaged@
+-- is specified.
+--
+-- 's3Output', 'processingOutput_s3Output' - Configuration for processing job outputs in Amazon S3.
+--
+-- 'outputName', 'processingOutput_outputName' - The name for the processing job output.
+newProcessingOutput ::
+  -- | 'outputName'
+  Prelude.Text ->
+  ProcessingOutput
+newProcessingOutput pOutputName_ =
+  ProcessingOutput'
+    { appManaged = Prelude.Nothing,
+      featureStoreOutput = Prelude.Nothing,
+      s3Output = Prelude.Nothing,
+      outputName = pOutputName_
+    }
+
+-- | When @True@, output operations such as data upload are managed natively
+-- by the processing job application. When @False@ (default), output
+-- operations are managed by Amazon SageMaker.
+processingOutput_appManaged :: Lens.Lens' ProcessingOutput (Prelude.Maybe Prelude.Bool)
+processingOutput_appManaged = Lens.lens (\ProcessingOutput' {appManaged} -> appManaged) (\s@ProcessingOutput' {} a -> s {appManaged = a} :: ProcessingOutput)
+
+-- | Configuration for processing job outputs in Amazon SageMaker Feature
+-- Store. This processing output type is only supported when @AppManaged@
+-- is specified.
+processingOutput_featureStoreOutput :: Lens.Lens' ProcessingOutput (Prelude.Maybe ProcessingFeatureStoreOutput)
+processingOutput_featureStoreOutput = Lens.lens (\ProcessingOutput' {featureStoreOutput} -> featureStoreOutput) (\s@ProcessingOutput' {} a -> s {featureStoreOutput = a} :: ProcessingOutput)
+
+-- | Configuration for processing job outputs in Amazon S3.
+processingOutput_s3Output :: Lens.Lens' ProcessingOutput (Prelude.Maybe ProcessingS3Output)
+processingOutput_s3Output = Lens.lens (\ProcessingOutput' {s3Output} -> s3Output) (\s@ProcessingOutput' {} a -> s {s3Output = a} :: ProcessingOutput)
+
+-- | The name for the processing job output.
+processingOutput_outputName :: Lens.Lens' ProcessingOutput Prelude.Text
+processingOutput_outputName = Lens.lens (\ProcessingOutput' {outputName} -> outputName) (\s@ProcessingOutput' {} a -> s {outputName = a} :: ProcessingOutput)
+
+instance Data.FromJSON ProcessingOutput where
+  parseJSON =
+    Data.withObject
+      "ProcessingOutput"
+      ( \x ->
+          ProcessingOutput'
+            Prelude.<$> (x Data..:? "AppManaged")
+            Prelude.<*> (x Data..:? "FeatureStoreOutput")
+            Prelude.<*> (x Data..:? "S3Output")
+            Prelude.<*> (x Data..: "OutputName")
+      )
+
+instance Prelude.Hashable ProcessingOutput where
+  hashWithSalt _salt ProcessingOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` appManaged
+      `Prelude.hashWithSalt` featureStoreOutput
+      `Prelude.hashWithSalt` s3Output
+      `Prelude.hashWithSalt` outputName
+
+instance Prelude.NFData ProcessingOutput where
+  rnf ProcessingOutput' {..} =
+    Prelude.rnf appManaged
+      `Prelude.seq` Prelude.rnf featureStoreOutput
+      `Prelude.seq` Prelude.rnf s3Output
+      `Prelude.seq` Prelude.rnf outputName
+
+instance Data.ToJSON ProcessingOutput where
+  toJSON ProcessingOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AppManaged" Data..=) Prelude.<$> appManaged,
+            ("FeatureStoreOutput" Data..=)
+              Prelude.<$> featureStoreOutput,
+            ("S3Output" Data..=) Prelude.<$> s3Output,
+            Prelude.Just ("OutputName" Data..= outputName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingOutputConfig.hs b/gen/Amazonka/SageMaker/Types/ProcessingOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingOutputConfig.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingOutputConfig 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 Amazonka.SageMaker.Types.ProcessingOutput
+
+-- | Configuration for uploading output from the processing container.
+--
+-- /See:/ 'newProcessingOutputConfig' smart constructor.
+data ProcessingOutputConfig = ProcessingOutputConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt the processing job output.
+    -- @KmsKeyId@ can be an ID of a KMS key, ARN of a KMS key, alias of a KMS
+    -- key, or alias of a KMS key. The @KmsKeyId@ is applied to all outputs.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | An array of outputs configuring the data to upload from the processing
+    -- container.
+    outputs :: [ProcessingOutput]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingOutputConfig' 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:
+--
+-- 'kmsKeyId', 'processingOutputConfig_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt the processing job output.
+-- @KmsKeyId@ can be an ID of a KMS key, ARN of a KMS key, alias of a KMS
+-- key, or alias of a KMS key. The @KmsKeyId@ is applied to all outputs.
+--
+-- 'outputs', 'processingOutputConfig_outputs' - An array of outputs configuring the data to upload from the processing
+-- container.
+newProcessingOutputConfig ::
+  ProcessingOutputConfig
+newProcessingOutputConfig =
+  ProcessingOutputConfig'
+    { kmsKeyId = Prelude.Nothing,
+      outputs = Prelude.mempty
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt the processing job output.
+-- @KmsKeyId@ can be an ID of a KMS key, ARN of a KMS key, alias of a KMS
+-- key, or alias of a KMS key. The @KmsKeyId@ is applied to all outputs.
+processingOutputConfig_kmsKeyId :: Lens.Lens' ProcessingOutputConfig (Prelude.Maybe Prelude.Text)
+processingOutputConfig_kmsKeyId = Lens.lens (\ProcessingOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@ProcessingOutputConfig' {} a -> s {kmsKeyId = a} :: ProcessingOutputConfig)
+
+-- | An array of outputs configuring the data to upload from the processing
+-- container.
+processingOutputConfig_outputs :: Lens.Lens' ProcessingOutputConfig [ProcessingOutput]
+processingOutputConfig_outputs = Lens.lens (\ProcessingOutputConfig' {outputs} -> outputs) (\s@ProcessingOutputConfig' {} a -> s {outputs = a} :: ProcessingOutputConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON ProcessingOutputConfig where
+  parseJSON =
+    Data.withObject
+      "ProcessingOutputConfig"
+      ( \x ->
+          ProcessingOutputConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "Outputs" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ProcessingOutputConfig where
+  hashWithSalt _salt ProcessingOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` outputs
+
+instance Prelude.NFData ProcessingOutputConfig where
+  rnf ProcessingOutputConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf outputs
+
+instance Data.ToJSON ProcessingOutputConfig where
+  toJSON ProcessingOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("Outputs" Data..= outputs)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingResources.hs b/gen/Amazonka/SageMaker/Types/ProcessingResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingResources.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingResources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingResources 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 Amazonka.SageMaker.Types.ProcessingClusterConfig
+
+-- | Identifies the resources, ML compute instances, and ML storage volumes
+-- to deploy for a processing job. In distributed training, you specify
+-- more than one instance.
+--
+-- /See:/ 'newProcessingResources' smart constructor.
+data ProcessingResources = ProcessingResources'
+  { -- | The configuration for the resources in a cluster used to run the
+    -- processing job.
+    clusterConfig :: ProcessingClusterConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingResources' 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:
+--
+-- 'clusterConfig', 'processingResources_clusterConfig' - The configuration for the resources in a cluster used to run the
+-- processing job.
+newProcessingResources ::
+  -- | 'clusterConfig'
+  ProcessingClusterConfig ->
+  ProcessingResources
+newProcessingResources pClusterConfig_ =
+  ProcessingResources'
+    { clusterConfig =
+        pClusterConfig_
+    }
+
+-- | The configuration for the resources in a cluster used to run the
+-- processing job.
+processingResources_clusterConfig :: Lens.Lens' ProcessingResources ProcessingClusterConfig
+processingResources_clusterConfig = Lens.lens (\ProcessingResources' {clusterConfig} -> clusterConfig) (\s@ProcessingResources' {} a -> s {clusterConfig = a} :: ProcessingResources)
+
+instance Data.FromJSON ProcessingResources where
+  parseJSON =
+    Data.withObject
+      "ProcessingResources"
+      ( \x ->
+          ProcessingResources'
+            Prelude.<$> (x Data..: "ClusterConfig")
+      )
+
+instance Prelude.Hashable ProcessingResources where
+  hashWithSalt _salt ProcessingResources' {..} =
+    _salt `Prelude.hashWithSalt` clusterConfig
+
+instance Prelude.NFData ProcessingResources where
+  rnf ProcessingResources' {..} =
+    Prelude.rnf clusterConfig
+
+instance Data.ToJSON ProcessingResources where
+  toJSON ProcessingResources' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ClusterConfig" Data..= clusterConfig)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3CompressionType.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3CompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3CompressionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingS3CompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3CompressionType
+  ( ProcessingS3CompressionType
+      ( ..,
+        ProcessingS3CompressionType_Gzip,
+        ProcessingS3CompressionType_None
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingS3CompressionType = ProcessingS3CompressionType'
+  { fromProcessingS3CompressionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingS3CompressionType_Gzip :: ProcessingS3CompressionType
+pattern ProcessingS3CompressionType_Gzip = ProcessingS3CompressionType' "Gzip"
+
+pattern ProcessingS3CompressionType_None :: ProcessingS3CompressionType
+pattern ProcessingS3CompressionType_None = ProcessingS3CompressionType' "None"
+
+{-# COMPLETE
+  ProcessingS3CompressionType_Gzip,
+  ProcessingS3CompressionType_None,
+  ProcessingS3CompressionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3DataDistributionType.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3DataDistributionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3DataDistributionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+  ( ProcessingS3DataDistributionType
+      ( ..,
+        ProcessingS3DataDistributionType_FullyReplicated,
+        ProcessingS3DataDistributionType_ShardedByS3Key
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingS3DataDistributionType = ProcessingS3DataDistributionType'
+  { fromProcessingS3DataDistributionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingS3DataDistributionType_FullyReplicated :: ProcessingS3DataDistributionType
+pattern ProcessingS3DataDistributionType_FullyReplicated = ProcessingS3DataDistributionType' "FullyReplicated"
+
+pattern ProcessingS3DataDistributionType_ShardedByS3Key :: ProcessingS3DataDistributionType
+pattern ProcessingS3DataDistributionType_ShardedByS3Key = ProcessingS3DataDistributionType' "ShardedByS3Key"
+
+{-# COMPLETE
+  ProcessingS3DataDistributionType_FullyReplicated,
+  ProcessingS3DataDistributionType_ShardedByS3Key,
+  ProcessingS3DataDistributionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3DataType.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3DataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3DataType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingS3DataType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3DataType
+  ( ProcessingS3DataType
+      ( ..,
+        ProcessingS3DataType_ManifestFile,
+        ProcessingS3DataType_S3Prefix
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingS3DataType = ProcessingS3DataType'
+  { fromProcessingS3DataType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingS3DataType_ManifestFile :: ProcessingS3DataType
+pattern ProcessingS3DataType_ManifestFile = ProcessingS3DataType' "ManifestFile"
+
+pattern ProcessingS3DataType_S3Prefix :: ProcessingS3DataType
+pattern ProcessingS3DataType_S3Prefix = ProcessingS3DataType' "S3Prefix"
+
+{-# COMPLETE
+  ProcessingS3DataType_ManifestFile,
+  ProcessingS3DataType_S3Prefix,
+  ProcessingS3DataType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3Input.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3Input.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3Input.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingS3Input
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3Input 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 Amazonka.SageMaker.Types.ProcessingS3CompressionType
+import Amazonka.SageMaker.Types.ProcessingS3DataDistributionType
+import Amazonka.SageMaker.Types.ProcessingS3DataType
+import Amazonka.SageMaker.Types.ProcessingS3InputMode
+
+-- | Configuration for downloading input data from Amazon S3 into the
+-- processing container.
+--
+-- /See:/ 'newProcessingS3Input' smart constructor.
+data ProcessingS3Input = ProcessingS3Input'
+  { -- | The local path in your container where you want Amazon SageMaker to
+    -- write input data to. @LocalPath@ is an absolute path to the input data
+    -- and must begin with @\/opt\/ml\/processing\/@. @LocalPath@ is a required
+    -- parameter when @AppManaged@ is @False@ (default).
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Whether to GZIP-decompress the data in Amazon S3 as it is streamed into
+    -- the processing container. @Gzip@ can only be used when @Pipe@ mode is
+    -- specified as the @S3InputMode@. In @Pipe@ mode, Amazon SageMaker streams
+    -- input data from the source directly to your container without using the
+    -- EBS volume.
+    s3CompressionType :: Prelude.Maybe ProcessingS3CompressionType,
+    -- | Whether to distribute the data from Amazon S3 to all processing
+    -- instances with @FullyReplicated@, or whether the data from Amazon S3 is
+    -- shared by Amazon S3 key, downloading one shard of data to each
+    -- processing instance.
+    s3DataDistributionType :: Prelude.Maybe ProcessingS3DataDistributionType,
+    -- | Whether to use @File@ or @Pipe@ input mode. In File mode, Amazon
+    -- SageMaker copies the data from the input source onto the local ML
+    -- storage volume before starting your processing container. This is the
+    -- most commonly used input mode. In @Pipe@ mode, Amazon SageMaker streams
+    -- input data from the source directly to your processing container into
+    -- named pipes without using the ML storage volume.
+    s3InputMode :: Prelude.Maybe ProcessingS3InputMode,
+    -- | The URI of the Amazon S3 prefix Amazon SageMaker downloads data required
+    -- to run a processing job.
+    s3Uri :: Prelude.Text,
+    -- | Whether you use an @S3Prefix@ or a @ManifestFile@ for the data type. If
+    -- you choose @S3Prefix@, @S3Uri@ identifies a key name prefix. Amazon
+    -- SageMaker uses all objects with the specified key name prefix for the
+    -- processing job. If you choose @ManifestFile@, @S3Uri@ identifies an
+    -- object that is a manifest file containing a list of object keys that you
+    -- want Amazon SageMaker to use for the processing job.
+    s3DataType :: ProcessingS3DataType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingS3Input' 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:
+--
+-- 'localPath', 'processingS3Input_localPath' - The local path in your container where you want Amazon SageMaker to
+-- write input data to. @LocalPath@ is an absolute path to the input data
+-- and must begin with @\/opt\/ml\/processing\/@. @LocalPath@ is a required
+-- parameter when @AppManaged@ is @False@ (default).
+--
+-- 's3CompressionType', 'processingS3Input_s3CompressionType' - Whether to GZIP-decompress the data in Amazon S3 as it is streamed into
+-- the processing container. @Gzip@ can only be used when @Pipe@ mode is
+-- specified as the @S3InputMode@. In @Pipe@ mode, Amazon SageMaker streams
+-- input data from the source directly to your container without using the
+-- EBS volume.
+--
+-- 's3DataDistributionType', 'processingS3Input_s3DataDistributionType' - Whether to distribute the data from Amazon S3 to all processing
+-- instances with @FullyReplicated@, or whether the data from Amazon S3 is
+-- shared by Amazon S3 key, downloading one shard of data to each
+-- processing instance.
+--
+-- 's3InputMode', 'processingS3Input_s3InputMode' - Whether to use @File@ or @Pipe@ input mode. In File mode, Amazon
+-- SageMaker copies the data from the input source onto the local ML
+-- storage volume before starting your processing container. This is the
+-- most commonly used input mode. In @Pipe@ mode, Amazon SageMaker streams
+-- input data from the source directly to your processing container into
+-- named pipes without using the ML storage volume.
+--
+-- 's3Uri', 'processingS3Input_s3Uri' - The URI of the Amazon S3 prefix Amazon SageMaker downloads data required
+-- to run a processing job.
+--
+-- 's3DataType', 'processingS3Input_s3DataType' - Whether you use an @S3Prefix@ or a @ManifestFile@ for the data type. If
+-- you choose @S3Prefix@, @S3Uri@ identifies a key name prefix. Amazon
+-- SageMaker uses all objects with the specified key name prefix for the
+-- processing job. If you choose @ManifestFile@, @S3Uri@ identifies an
+-- object that is a manifest file containing a list of object keys that you
+-- want Amazon SageMaker to use for the processing job.
+newProcessingS3Input ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  -- | 's3DataType'
+  ProcessingS3DataType ->
+  ProcessingS3Input
+newProcessingS3Input pS3Uri_ pS3DataType_ =
+  ProcessingS3Input'
+    { localPath = Prelude.Nothing,
+      s3CompressionType = Prelude.Nothing,
+      s3DataDistributionType = Prelude.Nothing,
+      s3InputMode = Prelude.Nothing,
+      s3Uri = pS3Uri_,
+      s3DataType = pS3DataType_
+    }
+
+-- | The local path in your container where you want Amazon SageMaker to
+-- write input data to. @LocalPath@ is an absolute path to the input data
+-- and must begin with @\/opt\/ml\/processing\/@. @LocalPath@ is a required
+-- parameter when @AppManaged@ is @False@ (default).
+processingS3Input_localPath :: Lens.Lens' ProcessingS3Input (Prelude.Maybe Prelude.Text)
+processingS3Input_localPath = Lens.lens (\ProcessingS3Input' {localPath} -> localPath) (\s@ProcessingS3Input' {} a -> s {localPath = a} :: ProcessingS3Input)
+
+-- | Whether to GZIP-decompress the data in Amazon S3 as it is streamed into
+-- the processing container. @Gzip@ can only be used when @Pipe@ mode is
+-- specified as the @S3InputMode@. In @Pipe@ mode, Amazon SageMaker streams
+-- input data from the source directly to your container without using the
+-- EBS volume.
+processingS3Input_s3CompressionType :: Lens.Lens' ProcessingS3Input (Prelude.Maybe ProcessingS3CompressionType)
+processingS3Input_s3CompressionType = Lens.lens (\ProcessingS3Input' {s3CompressionType} -> s3CompressionType) (\s@ProcessingS3Input' {} a -> s {s3CompressionType = a} :: ProcessingS3Input)
+
+-- | Whether to distribute the data from Amazon S3 to all processing
+-- instances with @FullyReplicated@, or whether the data from Amazon S3 is
+-- shared by Amazon S3 key, downloading one shard of data to each
+-- processing instance.
+processingS3Input_s3DataDistributionType :: Lens.Lens' ProcessingS3Input (Prelude.Maybe ProcessingS3DataDistributionType)
+processingS3Input_s3DataDistributionType = Lens.lens (\ProcessingS3Input' {s3DataDistributionType} -> s3DataDistributionType) (\s@ProcessingS3Input' {} a -> s {s3DataDistributionType = a} :: ProcessingS3Input)
+
+-- | Whether to use @File@ or @Pipe@ input mode. In File mode, Amazon
+-- SageMaker copies the data from the input source onto the local ML
+-- storage volume before starting your processing container. This is the
+-- most commonly used input mode. In @Pipe@ mode, Amazon SageMaker streams
+-- input data from the source directly to your processing container into
+-- named pipes without using the ML storage volume.
+processingS3Input_s3InputMode :: Lens.Lens' ProcessingS3Input (Prelude.Maybe ProcessingS3InputMode)
+processingS3Input_s3InputMode = Lens.lens (\ProcessingS3Input' {s3InputMode} -> s3InputMode) (\s@ProcessingS3Input' {} a -> s {s3InputMode = a} :: ProcessingS3Input)
+
+-- | The URI of the Amazon S3 prefix Amazon SageMaker downloads data required
+-- to run a processing job.
+processingS3Input_s3Uri :: Lens.Lens' ProcessingS3Input Prelude.Text
+processingS3Input_s3Uri = Lens.lens (\ProcessingS3Input' {s3Uri} -> s3Uri) (\s@ProcessingS3Input' {} a -> s {s3Uri = a} :: ProcessingS3Input)
+
+-- | Whether you use an @S3Prefix@ or a @ManifestFile@ for the data type. If
+-- you choose @S3Prefix@, @S3Uri@ identifies a key name prefix. Amazon
+-- SageMaker uses all objects with the specified key name prefix for the
+-- processing job. If you choose @ManifestFile@, @S3Uri@ identifies an
+-- object that is a manifest file containing a list of object keys that you
+-- want Amazon SageMaker to use for the processing job.
+processingS3Input_s3DataType :: Lens.Lens' ProcessingS3Input ProcessingS3DataType
+processingS3Input_s3DataType = Lens.lens (\ProcessingS3Input' {s3DataType} -> s3DataType) (\s@ProcessingS3Input' {} a -> s {s3DataType = a} :: ProcessingS3Input)
+
+instance Data.FromJSON ProcessingS3Input where
+  parseJSON =
+    Data.withObject
+      "ProcessingS3Input"
+      ( \x ->
+          ProcessingS3Input'
+            Prelude.<$> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..:? "S3CompressionType")
+            Prelude.<*> (x Data..:? "S3DataDistributionType")
+            Prelude.<*> (x Data..:? "S3InputMode")
+            Prelude.<*> (x Data..: "S3Uri")
+            Prelude.<*> (x Data..: "S3DataType")
+      )
+
+instance Prelude.Hashable ProcessingS3Input where
+  hashWithSalt _salt ProcessingS3Input' {..} =
+    _salt
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` s3CompressionType
+      `Prelude.hashWithSalt` s3DataDistributionType
+      `Prelude.hashWithSalt` s3InputMode
+      `Prelude.hashWithSalt` s3Uri
+      `Prelude.hashWithSalt` s3DataType
+
+instance Prelude.NFData ProcessingS3Input where
+  rnf ProcessingS3Input' {..} =
+    Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf s3CompressionType
+      `Prelude.seq` Prelude.rnf s3DataDistributionType
+      `Prelude.seq` Prelude.rnf s3InputMode
+      `Prelude.seq` Prelude.rnf s3Uri
+      `Prelude.seq` Prelude.rnf s3DataType
+
+instance Data.ToJSON ProcessingS3Input where
+  toJSON ProcessingS3Input' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LocalPath" Data..=) Prelude.<$> localPath,
+            ("S3CompressionType" Data..=)
+              Prelude.<$> s3CompressionType,
+            ("S3DataDistributionType" Data..=)
+              Prelude.<$> s3DataDistributionType,
+            ("S3InputMode" Data..=) Prelude.<$> s3InputMode,
+            Prelude.Just ("S3Uri" Data..= s3Uri),
+            Prelude.Just ("S3DataType" Data..= s3DataType)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3InputMode.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3InputMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3InputMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingS3InputMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3InputMode
+  ( ProcessingS3InputMode
+      ( ..,
+        ProcessingS3InputMode_File,
+        ProcessingS3InputMode_Pipe
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingS3InputMode = ProcessingS3InputMode'
+  { fromProcessingS3InputMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingS3InputMode_File :: ProcessingS3InputMode
+pattern ProcessingS3InputMode_File = ProcessingS3InputMode' "File"
+
+pattern ProcessingS3InputMode_Pipe :: ProcessingS3InputMode
+pattern ProcessingS3InputMode_Pipe = ProcessingS3InputMode' "Pipe"
+
+{-# COMPLETE
+  ProcessingS3InputMode_File,
+  ProcessingS3InputMode_Pipe,
+  ProcessingS3InputMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3Output.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3Output.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3Output.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingS3Output
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3Output 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 Amazonka.SageMaker.Types.ProcessingS3UploadMode
+
+-- | Configuration for uploading output data to Amazon S3 from the processing
+-- container.
+--
+-- /See:/ 'newProcessingS3Output' smart constructor.
+data ProcessingS3Output = ProcessingS3Output'
+  { -- | A URI that identifies the Amazon S3 bucket where you want Amazon
+    -- SageMaker to save the results of a processing job.
+    s3Uri :: Prelude.Text,
+    -- | The local path of a directory where you want Amazon SageMaker to upload
+    -- its contents to Amazon S3. @LocalPath@ is an absolute path to a
+    -- directory containing output files. This directory will be created by the
+    -- platform and exist when your container\'s entrypoint is invoked.
+    localPath :: Prelude.Text,
+    -- | Whether to upload the results of the processing job continuously or
+    -- after the job completes.
+    s3UploadMode :: ProcessingS3UploadMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingS3Output' 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:
+--
+-- 's3Uri', 'processingS3Output_s3Uri' - A URI that identifies the Amazon S3 bucket where you want Amazon
+-- SageMaker to save the results of a processing job.
+--
+-- 'localPath', 'processingS3Output_localPath' - The local path of a directory where you want Amazon SageMaker to upload
+-- its contents to Amazon S3. @LocalPath@ is an absolute path to a
+-- directory containing output files. This directory will be created by the
+-- platform and exist when your container\'s entrypoint is invoked.
+--
+-- 's3UploadMode', 'processingS3Output_s3UploadMode' - Whether to upload the results of the processing job continuously or
+-- after the job completes.
+newProcessingS3Output ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  -- | 'localPath'
+  Prelude.Text ->
+  -- | 's3UploadMode'
+  ProcessingS3UploadMode ->
+  ProcessingS3Output
+newProcessingS3Output
+  pS3Uri_
+  pLocalPath_
+  pS3UploadMode_ =
+    ProcessingS3Output'
+      { s3Uri = pS3Uri_,
+        localPath = pLocalPath_,
+        s3UploadMode = pS3UploadMode_
+      }
+
+-- | A URI that identifies the Amazon S3 bucket where you want Amazon
+-- SageMaker to save the results of a processing job.
+processingS3Output_s3Uri :: Lens.Lens' ProcessingS3Output Prelude.Text
+processingS3Output_s3Uri = Lens.lens (\ProcessingS3Output' {s3Uri} -> s3Uri) (\s@ProcessingS3Output' {} a -> s {s3Uri = a} :: ProcessingS3Output)
+
+-- | The local path of a directory where you want Amazon SageMaker to upload
+-- its contents to Amazon S3. @LocalPath@ is an absolute path to a
+-- directory containing output files. This directory will be created by the
+-- platform and exist when your container\'s entrypoint is invoked.
+processingS3Output_localPath :: Lens.Lens' ProcessingS3Output Prelude.Text
+processingS3Output_localPath = Lens.lens (\ProcessingS3Output' {localPath} -> localPath) (\s@ProcessingS3Output' {} a -> s {localPath = a} :: ProcessingS3Output)
+
+-- | Whether to upload the results of the processing job continuously or
+-- after the job completes.
+processingS3Output_s3UploadMode :: Lens.Lens' ProcessingS3Output ProcessingS3UploadMode
+processingS3Output_s3UploadMode = Lens.lens (\ProcessingS3Output' {s3UploadMode} -> s3UploadMode) (\s@ProcessingS3Output' {} a -> s {s3UploadMode = a} :: ProcessingS3Output)
+
+instance Data.FromJSON ProcessingS3Output where
+  parseJSON =
+    Data.withObject
+      "ProcessingS3Output"
+      ( \x ->
+          ProcessingS3Output'
+            Prelude.<$> (x Data..: "S3Uri")
+            Prelude.<*> (x Data..: "LocalPath")
+            Prelude.<*> (x Data..: "S3UploadMode")
+      )
+
+instance Prelude.Hashable ProcessingS3Output where
+  hashWithSalt _salt ProcessingS3Output' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3Uri
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` s3UploadMode
+
+instance Prelude.NFData ProcessingS3Output where
+  rnf ProcessingS3Output' {..} =
+    Prelude.rnf s3Uri
+      `Prelude.seq` Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf s3UploadMode
+
+instance Data.ToJSON ProcessingS3Output where
+  toJSON ProcessingS3Output' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("S3Uri" Data..= s3Uri),
+            Prelude.Just ("LocalPath" Data..= localPath),
+            Prelude.Just ("S3UploadMode" Data..= s3UploadMode)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingS3UploadMode.hs b/gen/Amazonka/SageMaker/Types/ProcessingS3UploadMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingS3UploadMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProcessingS3UploadMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingS3UploadMode
+  ( ProcessingS3UploadMode
+      ( ..,
+        ProcessingS3UploadMode_Continuous,
+        ProcessingS3UploadMode_EndOfJob
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProcessingS3UploadMode = ProcessingS3UploadMode'
+  { fromProcessingS3UploadMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProcessingS3UploadMode_Continuous :: ProcessingS3UploadMode
+pattern ProcessingS3UploadMode_Continuous = ProcessingS3UploadMode' "Continuous"
+
+pattern ProcessingS3UploadMode_EndOfJob :: ProcessingS3UploadMode
+pattern ProcessingS3UploadMode_EndOfJob = ProcessingS3UploadMode' "EndOfJob"
+
+{-# COMPLETE
+  ProcessingS3UploadMode_Continuous,
+  ProcessingS3UploadMode_EndOfJob,
+  ProcessingS3UploadMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProcessingStoppingCondition.hs b/gen/Amazonka/SageMaker/Types/ProcessingStoppingCondition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProcessingStoppingCondition.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProcessingStoppingCondition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProcessingStoppingCondition 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
+
+-- | Configures conditions under which the processing job should be stopped,
+-- such as how long the processing job has been running. After the
+-- condition is met, the processing job is stopped.
+--
+-- /See:/ 'newProcessingStoppingCondition' smart constructor.
+data ProcessingStoppingCondition = ProcessingStoppingCondition'
+  { -- | Specifies the maximum runtime in seconds.
+    maxRuntimeInSeconds :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProcessingStoppingCondition' 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:
+--
+-- 'maxRuntimeInSeconds', 'processingStoppingCondition_maxRuntimeInSeconds' - Specifies the maximum runtime in seconds.
+newProcessingStoppingCondition ::
+  -- | 'maxRuntimeInSeconds'
+  Prelude.Natural ->
+  ProcessingStoppingCondition
+newProcessingStoppingCondition pMaxRuntimeInSeconds_ =
+  ProcessingStoppingCondition'
+    { maxRuntimeInSeconds =
+        pMaxRuntimeInSeconds_
+    }
+
+-- | Specifies the maximum runtime in seconds.
+processingStoppingCondition_maxRuntimeInSeconds :: Lens.Lens' ProcessingStoppingCondition Prelude.Natural
+processingStoppingCondition_maxRuntimeInSeconds = Lens.lens (\ProcessingStoppingCondition' {maxRuntimeInSeconds} -> maxRuntimeInSeconds) (\s@ProcessingStoppingCondition' {} a -> s {maxRuntimeInSeconds = a} :: ProcessingStoppingCondition)
+
+instance Data.FromJSON ProcessingStoppingCondition where
+  parseJSON =
+    Data.withObject
+      "ProcessingStoppingCondition"
+      ( \x ->
+          ProcessingStoppingCondition'
+            Prelude.<$> (x Data..: "MaxRuntimeInSeconds")
+      )
+
+instance Prelude.Hashable ProcessingStoppingCondition where
+  hashWithSalt _salt ProcessingStoppingCondition' {..} =
+    _salt `Prelude.hashWithSalt` maxRuntimeInSeconds
+
+instance Prelude.NFData ProcessingStoppingCondition where
+  rnf ProcessingStoppingCondition' {..} =
+    Prelude.rnf maxRuntimeInSeconds
+
+instance Data.ToJSON ProcessingStoppingCondition where
+  toJSON ProcessingStoppingCondition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MaxRuntimeInSeconds" Data..= maxRuntimeInSeconds)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Processor.hs b/gen/Amazonka/SageMaker/Types/Processor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Processor.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.Processor
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Processor
+  ( Processor
+      ( ..,
+        Processor_CPU,
+        Processor_GPU
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Processor = Processor'
+  { fromProcessor ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Processor_CPU :: Processor
+pattern Processor_CPU = Processor' "CPU"
+
+pattern Processor_GPU :: Processor
+pattern Processor_GPU = Processor' "GPU"
+
+{-# COMPLETE
+  Processor_CPU,
+  Processor_GPU,
+  Processor'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariant.hs b/gen/Amazonka/SageMaker/Types/ProductionVariant.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariant.hs
@@ -0,0 +1,290 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProductionVariant
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariant 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 Amazonka.SageMaker.Types.ProductionVariantAcceleratorType
+import Amazonka.SageMaker.Types.ProductionVariantCoreDumpConfig
+import Amazonka.SageMaker.Types.ProductionVariantInstanceType
+import Amazonka.SageMaker.Types.ProductionVariantServerlessConfig
+
+-- | Identifies a model that you want to host and the resources chosen to
+-- deploy for hosting it. If you are deploying multiple models, tell
+-- SageMaker how to distribute traffic among the models by specifying
+-- variant weights.
+--
+-- /See:/ 'newProductionVariant' smart constructor.
+data ProductionVariant = ProductionVariant'
+  { -- | The size of the Elastic Inference (EI) instance to use for the
+    -- production variant. EI instances provide on-demand GPU computing for
+    -- inference. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+    acceleratorType :: Prelude.Maybe ProductionVariantAcceleratorType,
+    -- | The timeout value, in seconds, for your inference container to pass
+    -- health check by SageMaker Hosting. For more information about health
+    -- check, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-inference-code.html#your-algorithms-inference-algo-ping-requests How Your Container Should Respond to Health Check (Ping) Requests>.
+    containerStartupHealthCheckTimeoutInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies configuration for a core dump from the model container when
+    -- the process crashes.
+    coreDumpConfig :: Prelude.Maybe ProductionVariantCoreDumpConfig,
+    -- | Number of instances to launch initially.
+    initialInstanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | Determines initial traffic distribution among all of the models that you
+    -- specify in the endpoint configuration. The traffic to a production
+    -- variant is determined by the ratio of the @VariantWeight@ to the sum of
+    -- all @VariantWeight@ values across all ProductionVariants. If
+    -- unspecified, it defaults to 1.0.
+    initialVariantWeight :: Prelude.Maybe Prelude.Double,
+    -- | The ML compute instance type.
+    instanceType :: Prelude.Maybe ProductionVariantInstanceType,
+    -- | The timeout value, in seconds, to download and extract the model that
+    -- you want to host from Amazon S3 to the individual inference instance
+    -- associated with this production variant.
+    modelDataDownloadTimeoutInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The serverless configuration for an endpoint. Specifies a serverless
+    -- endpoint configuration instead of an instance-based endpoint
+    -- configuration.
+    serverlessConfig :: Prelude.Maybe ProductionVariantServerlessConfig,
+    -- | The size, in GB, of the ML storage volume attached to individual
+    -- inference instance associated with the production variant. Currenly only
+    -- Amazon EBS gp2 storage volumes are supported.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the production variant.
+    variantName :: Prelude.Text,
+    -- | The name of the model that you want to host. This is the name that you
+    -- specified when creating the model.
+    modelName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProductionVariant' 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:
+--
+-- 'acceleratorType', 'productionVariant_acceleratorType' - The size of the Elastic Inference (EI) instance to use for the
+-- production variant. EI instances provide on-demand GPU computing for
+-- inference. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+--
+-- 'containerStartupHealthCheckTimeoutInSeconds', 'productionVariant_containerStartupHealthCheckTimeoutInSeconds' - The timeout value, in seconds, for your inference container to pass
+-- health check by SageMaker Hosting. For more information about health
+-- check, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-inference-code.html#your-algorithms-inference-algo-ping-requests How Your Container Should Respond to Health Check (Ping) Requests>.
+--
+-- 'coreDumpConfig', 'productionVariant_coreDumpConfig' - Specifies configuration for a core dump from the model container when
+-- the process crashes.
+--
+-- 'initialInstanceCount', 'productionVariant_initialInstanceCount' - Number of instances to launch initially.
+--
+-- 'initialVariantWeight', 'productionVariant_initialVariantWeight' - Determines initial traffic distribution among all of the models that you
+-- specify in the endpoint configuration. The traffic to a production
+-- variant is determined by the ratio of the @VariantWeight@ to the sum of
+-- all @VariantWeight@ values across all ProductionVariants. If
+-- unspecified, it defaults to 1.0.
+--
+-- 'instanceType', 'productionVariant_instanceType' - The ML compute instance type.
+--
+-- 'modelDataDownloadTimeoutInSeconds', 'productionVariant_modelDataDownloadTimeoutInSeconds' - The timeout value, in seconds, to download and extract the model that
+-- you want to host from Amazon S3 to the individual inference instance
+-- associated with this production variant.
+--
+-- 'serverlessConfig', 'productionVariant_serverlessConfig' - The serverless configuration for an endpoint. Specifies a serverless
+-- endpoint configuration instead of an instance-based endpoint
+-- configuration.
+--
+-- 'volumeSizeInGB', 'productionVariant_volumeSizeInGB' - The size, in GB, of the ML storage volume attached to individual
+-- inference instance associated with the production variant. Currenly only
+-- Amazon EBS gp2 storage volumes are supported.
+--
+-- 'variantName', 'productionVariant_variantName' - The name of the production variant.
+--
+-- 'modelName', 'productionVariant_modelName' - The name of the model that you want to host. This is the name that you
+-- specified when creating the model.
+newProductionVariant ::
+  -- | 'variantName'
+  Prelude.Text ->
+  -- | 'modelName'
+  Prelude.Text ->
+  ProductionVariant
+newProductionVariant pVariantName_ pModelName_ =
+  ProductionVariant'
+    { acceleratorType =
+        Prelude.Nothing,
+      containerStartupHealthCheckTimeoutInSeconds =
+        Prelude.Nothing,
+      coreDumpConfig = Prelude.Nothing,
+      initialInstanceCount = Prelude.Nothing,
+      initialVariantWeight = Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      modelDataDownloadTimeoutInSeconds = Prelude.Nothing,
+      serverlessConfig = Prelude.Nothing,
+      volumeSizeInGB = Prelude.Nothing,
+      variantName = pVariantName_,
+      modelName = pModelName_
+    }
+
+-- | The size of the Elastic Inference (EI) instance to use for the
+-- production variant. EI instances provide on-demand GPU computing for
+-- inference. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+productionVariant_acceleratorType :: Lens.Lens' ProductionVariant (Prelude.Maybe ProductionVariantAcceleratorType)
+productionVariant_acceleratorType = Lens.lens (\ProductionVariant' {acceleratorType} -> acceleratorType) (\s@ProductionVariant' {} a -> s {acceleratorType = a} :: ProductionVariant)
+
+-- | The timeout value, in seconds, for your inference container to pass
+-- health check by SageMaker Hosting. For more information about health
+-- check, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-inference-code.html#your-algorithms-inference-algo-ping-requests How Your Container Should Respond to Health Check (Ping) Requests>.
+productionVariant_containerStartupHealthCheckTimeoutInSeconds :: Lens.Lens' ProductionVariant (Prelude.Maybe Prelude.Natural)
+productionVariant_containerStartupHealthCheckTimeoutInSeconds = Lens.lens (\ProductionVariant' {containerStartupHealthCheckTimeoutInSeconds} -> containerStartupHealthCheckTimeoutInSeconds) (\s@ProductionVariant' {} a -> s {containerStartupHealthCheckTimeoutInSeconds = a} :: ProductionVariant)
+
+-- | Specifies configuration for a core dump from the model container when
+-- the process crashes.
+productionVariant_coreDumpConfig :: Lens.Lens' ProductionVariant (Prelude.Maybe ProductionVariantCoreDumpConfig)
+productionVariant_coreDumpConfig = Lens.lens (\ProductionVariant' {coreDumpConfig} -> coreDumpConfig) (\s@ProductionVariant' {} a -> s {coreDumpConfig = a} :: ProductionVariant)
+
+-- | Number of instances to launch initially.
+productionVariant_initialInstanceCount :: Lens.Lens' ProductionVariant (Prelude.Maybe Prelude.Natural)
+productionVariant_initialInstanceCount = Lens.lens (\ProductionVariant' {initialInstanceCount} -> initialInstanceCount) (\s@ProductionVariant' {} a -> s {initialInstanceCount = a} :: ProductionVariant)
+
+-- | Determines initial traffic distribution among all of the models that you
+-- specify in the endpoint configuration. The traffic to a production
+-- variant is determined by the ratio of the @VariantWeight@ to the sum of
+-- all @VariantWeight@ values across all ProductionVariants. If
+-- unspecified, it defaults to 1.0.
+productionVariant_initialVariantWeight :: Lens.Lens' ProductionVariant (Prelude.Maybe Prelude.Double)
+productionVariant_initialVariantWeight = Lens.lens (\ProductionVariant' {initialVariantWeight} -> initialVariantWeight) (\s@ProductionVariant' {} a -> s {initialVariantWeight = a} :: ProductionVariant)
+
+-- | The ML compute instance type.
+productionVariant_instanceType :: Lens.Lens' ProductionVariant (Prelude.Maybe ProductionVariantInstanceType)
+productionVariant_instanceType = Lens.lens (\ProductionVariant' {instanceType} -> instanceType) (\s@ProductionVariant' {} a -> s {instanceType = a} :: ProductionVariant)
+
+-- | The timeout value, in seconds, to download and extract the model that
+-- you want to host from Amazon S3 to the individual inference instance
+-- associated with this production variant.
+productionVariant_modelDataDownloadTimeoutInSeconds :: Lens.Lens' ProductionVariant (Prelude.Maybe Prelude.Natural)
+productionVariant_modelDataDownloadTimeoutInSeconds = Lens.lens (\ProductionVariant' {modelDataDownloadTimeoutInSeconds} -> modelDataDownloadTimeoutInSeconds) (\s@ProductionVariant' {} a -> s {modelDataDownloadTimeoutInSeconds = a} :: ProductionVariant)
+
+-- | The serverless configuration for an endpoint. Specifies a serverless
+-- endpoint configuration instead of an instance-based endpoint
+-- configuration.
+productionVariant_serverlessConfig :: Lens.Lens' ProductionVariant (Prelude.Maybe ProductionVariantServerlessConfig)
+productionVariant_serverlessConfig = Lens.lens (\ProductionVariant' {serverlessConfig} -> serverlessConfig) (\s@ProductionVariant' {} a -> s {serverlessConfig = a} :: ProductionVariant)
+
+-- | The size, in GB, of the ML storage volume attached to individual
+-- inference instance associated with the production variant. Currenly only
+-- Amazon EBS gp2 storage volumes are supported.
+productionVariant_volumeSizeInGB :: Lens.Lens' ProductionVariant (Prelude.Maybe Prelude.Natural)
+productionVariant_volumeSizeInGB = Lens.lens (\ProductionVariant' {volumeSizeInGB} -> volumeSizeInGB) (\s@ProductionVariant' {} a -> s {volumeSizeInGB = a} :: ProductionVariant)
+
+-- | The name of the production variant.
+productionVariant_variantName :: Lens.Lens' ProductionVariant Prelude.Text
+productionVariant_variantName = Lens.lens (\ProductionVariant' {variantName} -> variantName) (\s@ProductionVariant' {} a -> s {variantName = a} :: ProductionVariant)
+
+-- | The name of the model that you want to host. This is the name that you
+-- specified when creating the model.
+productionVariant_modelName :: Lens.Lens' ProductionVariant Prelude.Text
+productionVariant_modelName = Lens.lens (\ProductionVariant' {modelName} -> modelName) (\s@ProductionVariant' {} a -> s {modelName = a} :: ProductionVariant)
+
+instance Data.FromJSON ProductionVariant where
+  parseJSON =
+    Data.withObject
+      "ProductionVariant"
+      ( \x ->
+          ProductionVariant'
+            Prelude.<$> (x Data..:? "AcceleratorType")
+            Prelude.<*> ( x
+                            Data..:? "ContainerStartupHealthCheckTimeoutInSeconds"
+                        )
+            Prelude.<*> (x Data..:? "CoreDumpConfig")
+            Prelude.<*> (x Data..:? "InitialInstanceCount")
+            Prelude.<*> (x Data..:? "InitialVariantWeight")
+            Prelude.<*> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "ModelDataDownloadTimeoutInSeconds")
+            Prelude.<*> (x Data..:? "ServerlessConfig")
+            Prelude.<*> (x Data..:? "VolumeSizeInGB")
+            Prelude.<*> (x Data..: "VariantName")
+            Prelude.<*> (x Data..: "ModelName")
+      )
+
+instance Prelude.Hashable ProductionVariant where
+  hashWithSalt _salt ProductionVariant' {..} =
+    _salt
+      `Prelude.hashWithSalt` acceleratorType
+      `Prelude.hashWithSalt` containerStartupHealthCheckTimeoutInSeconds
+      `Prelude.hashWithSalt` coreDumpConfig
+      `Prelude.hashWithSalt` initialInstanceCount
+      `Prelude.hashWithSalt` initialVariantWeight
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` modelDataDownloadTimeoutInSeconds
+      `Prelude.hashWithSalt` serverlessConfig
+      `Prelude.hashWithSalt` volumeSizeInGB
+      `Prelude.hashWithSalt` variantName
+      `Prelude.hashWithSalt` modelName
+
+instance Prelude.NFData ProductionVariant where
+  rnf ProductionVariant' {..} =
+    Prelude.rnf acceleratorType
+      `Prelude.seq` Prelude.rnf
+        containerStartupHealthCheckTimeoutInSeconds
+      `Prelude.seq` Prelude.rnf coreDumpConfig
+      `Prelude.seq` Prelude.rnf initialInstanceCount
+      `Prelude.seq` Prelude.rnf initialVariantWeight
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf modelDataDownloadTimeoutInSeconds
+      `Prelude.seq` Prelude.rnf serverlessConfig
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+      `Prelude.seq` Prelude.rnf variantName
+      `Prelude.seq` Prelude.rnf modelName
+
+instance Data.ToJSON ProductionVariant where
+  toJSON ProductionVariant' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AcceleratorType" Data..=)
+              Prelude.<$> acceleratorType,
+            ( "ContainerStartupHealthCheckTimeoutInSeconds"
+                Data..=
+            )
+              Prelude.<$> containerStartupHealthCheckTimeoutInSeconds,
+            ("CoreDumpConfig" Data..=)
+              Prelude.<$> coreDumpConfig,
+            ("InitialInstanceCount" Data..=)
+              Prelude.<$> initialInstanceCount,
+            ("InitialVariantWeight" Data..=)
+              Prelude.<$> initialVariantWeight,
+            ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("ModelDataDownloadTimeoutInSeconds" Data..=)
+              Prelude.<$> modelDataDownloadTimeoutInSeconds,
+            ("ServerlessConfig" Data..=)
+              Prelude.<$> serverlessConfig,
+            ("VolumeSizeInGB" Data..=)
+              Prelude.<$> volumeSizeInGB,
+            Prelude.Just ("VariantName" Data..= variantName),
+            Prelude.Just ("ModelName" Data..= modelName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariantAcceleratorType.hs b/gen/Amazonka/SageMaker/Types/ProductionVariantAcceleratorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariantAcceleratorType.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProductionVariantAcceleratorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariantAcceleratorType
+  ( ProductionVariantAcceleratorType
+      ( ..,
+        ProductionVariantAcceleratorType_Ml_eia1_large,
+        ProductionVariantAcceleratorType_Ml_eia1_medium,
+        ProductionVariantAcceleratorType_Ml_eia1_xlarge,
+        ProductionVariantAcceleratorType_Ml_eia2_large,
+        ProductionVariantAcceleratorType_Ml_eia2_medium,
+        ProductionVariantAcceleratorType_Ml_eia2_xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProductionVariantAcceleratorType = ProductionVariantAcceleratorType'
+  { fromProductionVariantAcceleratorType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProductionVariantAcceleratorType_Ml_eia1_large :: ProductionVariantAcceleratorType
+pattern ProductionVariantAcceleratorType_Ml_eia1_large = ProductionVariantAcceleratorType' "ml.eia1.large"
+
+pattern ProductionVariantAcceleratorType_Ml_eia1_medium :: ProductionVariantAcceleratorType
+pattern ProductionVariantAcceleratorType_Ml_eia1_medium = ProductionVariantAcceleratorType' "ml.eia1.medium"
+
+pattern ProductionVariantAcceleratorType_Ml_eia1_xlarge :: ProductionVariantAcceleratorType
+pattern ProductionVariantAcceleratorType_Ml_eia1_xlarge = ProductionVariantAcceleratorType' "ml.eia1.xlarge"
+
+pattern ProductionVariantAcceleratorType_Ml_eia2_large :: ProductionVariantAcceleratorType
+pattern ProductionVariantAcceleratorType_Ml_eia2_large = ProductionVariantAcceleratorType' "ml.eia2.large"
+
+pattern ProductionVariantAcceleratorType_Ml_eia2_medium :: ProductionVariantAcceleratorType
+pattern ProductionVariantAcceleratorType_Ml_eia2_medium = ProductionVariantAcceleratorType' "ml.eia2.medium"
+
+pattern ProductionVariantAcceleratorType_Ml_eia2_xlarge :: ProductionVariantAcceleratorType
+pattern ProductionVariantAcceleratorType_Ml_eia2_xlarge = ProductionVariantAcceleratorType' "ml.eia2.xlarge"
+
+{-# COMPLETE
+  ProductionVariantAcceleratorType_Ml_eia1_large,
+  ProductionVariantAcceleratorType_Ml_eia1_medium,
+  ProductionVariantAcceleratorType_Ml_eia1_xlarge,
+  ProductionVariantAcceleratorType_Ml_eia2_large,
+  ProductionVariantAcceleratorType_Ml_eia2_medium,
+  ProductionVariantAcceleratorType_Ml_eia2_xlarge,
+  ProductionVariantAcceleratorType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariantCoreDumpConfig.hs b/gen/Amazonka/SageMaker/Types/ProductionVariantCoreDumpConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariantCoreDumpConfig.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProductionVariantCoreDumpConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariantCoreDumpConfig 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
+
+-- | Specifies configuration for a core dump from the model container when
+-- the process crashes.
+--
+-- /See:/ 'newProductionVariantCoreDumpConfig' smart constructor.
+data ProductionVariantCoreDumpConfig = ProductionVariantCoreDumpConfig'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that SageMaker uses to encrypt the core dump data at rest using
+    -- Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+    -- following formats:
+    --
+    -- -   \/\/ KMS Key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ KMS Key Alias
+    --
+    --     @\"alias\/ExampleAlias\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+    --
+    -- If you use a KMS key ID or an alias of your KMS key, the SageMaker
+    -- execution role must include permissions to call @kms:Encrypt@. If you
+    -- don\'t provide a KMS key ID, SageMaker uses the default KMS key for
+    -- Amazon S3 for your role\'s account. SageMaker uses server-side
+    -- encryption with KMS-managed keys for @OutputDataConfig@. If you use a
+    -- bucket policy with an @s3:PutObject@ permission that only allows objects
+    -- with server-side encryption, set the condition key of
+    -- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+    -- in the /Amazon Simple Storage Service Developer Guide./
+    --
+    -- The KMS key policy must grant permission to the IAM role that you
+    -- specify in your @CreateEndpoint@ and @UpdateEndpoint@ requests. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+    -- in the /Amazon Web Services Key Management Service Developer Guide/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 bucket to send the core dump to.
+    destinationS3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProductionVariantCoreDumpConfig' 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:
+--
+-- 'kmsKeyId', 'productionVariantCoreDumpConfig_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that SageMaker uses to encrypt the core dump data at rest using
+-- Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+-- following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+--
+-- If you use a KMS key ID or an alias of your KMS key, the SageMaker
+-- execution role must include permissions to call @kms:Encrypt@. If you
+-- don\'t provide a KMS key ID, SageMaker uses the default KMS key for
+-- Amazon S3 for your role\'s account. SageMaker uses server-side
+-- encryption with KMS-managed keys for @OutputDataConfig@. If you use a
+-- bucket policy with an @s3:PutObject@ permission that only allows objects
+-- with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateEndpoint@ and @UpdateEndpoint@ requests. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+--
+-- 'destinationS3Uri', 'productionVariantCoreDumpConfig_destinationS3Uri' - The Amazon S3 bucket to send the core dump to.
+newProductionVariantCoreDumpConfig ::
+  -- | 'destinationS3Uri'
+  Prelude.Text ->
+  ProductionVariantCoreDumpConfig
+newProductionVariantCoreDumpConfig pDestinationS3Uri_ =
+  ProductionVariantCoreDumpConfig'
+    { kmsKeyId =
+        Prelude.Nothing,
+      destinationS3Uri = pDestinationS3Uri_
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that SageMaker uses to encrypt the core dump data at rest using
+-- Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+-- following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias\"@
+--
+-- If you use a KMS key ID or an alias of your KMS key, the SageMaker
+-- execution role must include permissions to call @kms:Encrypt@. If you
+-- don\'t provide a KMS key ID, SageMaker uses the default KMS key for
+-- Amazon S3 for your role\'s account. SageMaker uses server-side
+-- encryption with KMS-managed keys for @OutputDataConfig@. If you use a
+-- bucket policy with an @s3:PutObject@ permission that only allows objects
+-- with server-side encryption, set the condition key of
+-- @s3:x-amz-server-side-encryption@ to @\"aws:kms\"@. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your @CreateEndpoint@ and @UpdateEndpoint@ requests. For more
+-- information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+productionVariantCoreDumpConfig_kmsKeyId :: Lens.Lens' ProductionVariantCoreDumpConfig (Prelude.Maybe Prelude.Text)
+productionVariantCoreDumpConfig_kmsKeyId = Lens.lens (\ProductionVariantCoreDumpConfig' {kmsKeyId} -> kmsKeyId) (\s@ProductionVariantCoreDumpConfig' {} a -> s {kmsKeyId = a} :: ProductionVariantCoreDumpConfig)
+
+-- | The Amazon S3 bucket to send the core dump to.
+productionVariantCoreDumpConfig_destinationS3Uri :: Lens.Lens' ProductionVariantCoreDumpConfig Prelude.Text
+productionVariantCoreDumpConfig_destinationS3Uri = Lens.lens (\ProductionVariantCoreDumpConfig' {destinationS3Uri} -> destinationS3Uri) (\s@ProductionVariantCoreDumpConfig' {} a -> s {destinationS3Uri = a} :: ProductionVariantCoreDumpConfig)
+
+instance
+  Data.FromJSON
+    ProductionVariantCoreDumpConfig
+  where
+  parseJSON =
+    Data.withObject
+      "ProductionVariantCoreDumpConfig"
+      ( \x ->
+          ProductionVariantCoreDumpConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "DestinationS3Uri")
+      )
+
+instance
+  Prelude.Hashable
+    ProductionVariantCoreDumpConfig
+  where
+  hashWithSalt
+    _salt
+    ProductionVariantCoreDumpConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` kmsKeyId
+        `Prelude.hashWithSalt` destinationS3Uri
+
+instance
+  Prelude.NFData
+    ProductionVariantCoreDumpConfig
+  where
+  rnf ProductionVariantCoreDumpConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf destinationS3Uri
+
+instance Data.ToJSON ProductionVariantCoreDumpConfig where
+  toJSON ProductionVariantCoreDumpConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just
+              ("DestinationS3Uri" Data..= destinationS3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariantInstanceType.hs b/gen/Amazonka/SageMaker/Types/ProductionVariantInstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariantInstanceType.hs
@@ -0,0 +1,761 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProductionVariantInstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariantInstanceType
+  ( ProductionVariantInstanceType
+      ( ..,
+        ProductionVariantInstanceType_Ml_c4_2xlarge,
+        ProductionVariantInstanceType_Ml_c4_4xlarge,
+        ProductionVariantInstanceType_Ml_c4_8xlarge,
+        ProductionVariantInstanceType_Ml_c4_large,
+        ProductionVariantInstanceType_Ml_c4_xlarge,
+        ProductionVariantInstanceType_Ml_c5_18xlarge,
+        ProductionVariantInstanceType_Ml_c5_2xlarge,
+        ProductionVariantInstanceType_Ml_c5_4xlarge,
+        ProductionVariantInstanceType_Ml_c5_9xlarge,
+        ProductionVariantInstanceType_Ml_c5_large,
+        ProductionVariantInstanceType_Ml_c5_xlarge,
+        ProductionVariantInstanceType_Ml_c5d_18xlarge,
+        ProductionVariantInstanceType_Ml_c5d_2xlarge,
+        ProductionVariantInstanceType_Ml_c5d_4xlarge,
+        ProductionVariantInstanceType_Ml_c5d_9xlarge,
+        ProductionVariantInstanceType_Ml_c5d_large,
+        ProductionVariantInstanceType_Ml_c5d_xlarge,
+        ProductionVariantInstanceType_Ml_c6g_12xlarge,
+        ProductionVariantInstanceType_Ml_c6g_16xlarge,
+        ProductionVariantInstanceType_Ml_c6g_2xlarge,
+        ProductionVariantInstanceType_Ml_c6g_4xlarge,
+        ProductionVariantInstanceType_Ml_c6g_8xlarge,
+        ProductionVariantInstanceType_Ml_c6g_large,
+        ProductionVariantInstanceType_Ml_c6g_xlarge,
+        ProductionVariantInstanceType_Ml_c6gd_12xlarge,
+        ProductionVariantInstanceType_Ml_c6gd_16xlarge,
+        ProductionVariantInstanceType_Ml_c6gd_2xlarge,
+        ProductionVariantInstanceType_Ml_c6gd_4xlarge,
+        ProductionVariantInstanceType_Ml_c6gd_8xlarge,
+        ProductionVariantInstanceType_Ml_c6gd_large,
+        ProductionVariantInstanceType_Ml_c6gd_xlarge,
+        ProductionVariantInstanceType_Ml_c6gn_12xlarge,
+        ProductionVariantInstanceType_Ml_c6gn_16xlarge,
+        ProductionVariantInstanceType_Ml_c6gn_2xlarge,
+        ProductionVariantInstanceType_Ml_c6gn_4xlarge,
+        ProductionVariantInstanceType_Ml_c6gn_8xlarge,
+        ProductionVariantInstanceType_Ml_c6gn_large,
+        ProductionVariantInstanceType_Ml_c6gn_xlarge,
+        ProductionVariantInstanceType_Ml_c6i_12xlarge,
+        ProductionVariantInstanceType_Ml_c6i_16xlarge,
+        ProductionVariantInstanceType_Ml_c6i_24xlarge,
+        ProductionVariantInstanceType_Ml_c6i_2xlarge,
+        ProductionVariantInstanceType_Ml_c6i_32xlarge,
+        ProductionVariantInstanceType_Ml_c6i_4xlarge,
+        ProductionVariantInstanceType_Ml_c6i_8xlarge,
+        ProductionVariantInstanceType_Ml_c6i_large,
+        ProductionVariantInstanceType_Ml_c6i_xlarge,
+        ProductionVariantInstanceType_Ml_c7g_12xlarge,
+        ProductionVariantInstanceType_Ml_c7g_16xlarge,
+        ProductionVariantInstanceType_Ml_c7g_2xlarge,
+        ProductionVariantInstanceType_Ml_c7g_4xlarge,
+        ProductionVariantInstanceType_Ml_c7g_8xlarge,
+        ProductionVariantInstanceType_Ml_c7g_large,
+        ProductionVariantInstanceType_Ml_c7g_xlarge,
+        ProductionVariantInstanceType_Ml_g4dn_12xlarge,
+        ProductionVariantInstanceType_Ml_g4dn_16xlarge,
+        ProductionVariantInstanceType_Ml_g4dn_2xlarge,
+        ProductionVariantInstanceType_Ml_g4dn_4xlarge,
+        ProductionVariantInstanceType_Ml_g4dn_8xlarge,
+        ProductionVariantInstanceType_Ml_g4dn_xlarge,
+        ProductionVariantInstanceType_Ml_g5_12xlarge,
+        ProductionVariantInstanceType_Ml_g5_16xlarge,
+        ProductionVariantInstanceType_Ml_g5_24xlarge,
+        ProductionVariantInstanceType_Ml_g5_2xlarge,
+        ProductionVariantInstanceType_Ml_g5_48xlarge,
+        ProductionVariantInstanceType_Ml_g5_4xlarge,
+        ProductionVariantInstanceType_Ml_g5_8xlarge,
+        ProductionVariantInstanceType_Ml_g5_xlarge,
+        ProductionVariantInstanceType_Ml_inf1_24xlarge,
+        ProductionVariantInstanceType_Ml_inf1_2xlarge,
+        ProductionVariantInstanceType_Ml_inf1_6xlarge,
+        ProductionVariantInstanceType_Ml_inf1_xlarge,
+        ProductionVariantInstanceType_Ml_m4_10xlarge,
+        ProductionVariantInstanceType_Ml_m4_16xlarge,
+        ProductionVariantInstanceType_Ml_m4_2xlarge,
+        ProductionVariantInstanceType_Ml_m4_4xlarge,
+        ProductionVariantInstanceType_Ml_m4_xlarge,
+        ProductionVariantInstanceType_Ml_m5_12xlarge,
+        ProductionVariantInstanceType_Ml_m5_24xlarge,
+        ProductionVariantInstanceType_Ml_m5_2xlarge,
+        ProductionVariantInstanceType_Ml_m5_4xlarge,
+        ProductionVariantInstanceType_Ml_m5_large,
+        ProductionVariantInstanceType_Ml_m5_xlarge,
+        ProductionVariantInstanceType_Ml_m5d_12xlarge,
+        ProductionVariantInstanceType_Ml_m5d_24xlarge,
+        ProductionVariantInstanceType_Ml_m5d_2xlarge,
+        ProductionVariantInstanceType_Ml_m5d_4xlarge,
+        ProductionVariantInstanceType_Ml_m5d_large,
+        ProductionVariantInstanceType_Ml_m5d_xlarge,
+        ProductionVariantInstanceType_Ml_m6g_12xlarge,
+        ProductionVariantInstanceType_Ml_m6g_16xlarge,
+        ProductionVariantInstanceType_Ml_m6g_2xlarge,
+        ProductionVariantInstanceType_Ml_m6g_4xlarge,
+        ProductionVariantInstanceType_Ml_m6g_8xlarge,
+        ProductionVariantInstanceType_Ml_m6g_large,
+        ProductionVariantInstanceType_Ml_m6g_xlarge,
+        ProductionVariantInstanceType_Ml_m6gd_12xlarge,
+        ProductionVariantInstanceType_Ml_m6gd_16xlarge,
+        ProductionVariantInstanceType_Ml_m6gd_2xlarge,
+        ProductionVariantInstanceType_Ml_m6gd_4xlarge,
+        ProductionVariantInstanceType_Ml_m6gd_8xlarge,
+        ProductionVariantInstanceType_Ml_m6gd_large,
+        ProductionVariantInstanceType_Ml_m6gd_xlarge,
+        ProductionVariantInstanceType_Ml_p2_16xlarge,
+        ProductionVariantInstanceType_Ml_p2_8xlarge,
+        ProductionVariantInstanceType_Ml_p2_xlarge,
+        ProductionVariantInstanceType_Ml_p3_16xlarge,
+        ProductionVariantInstanceType_Ml_p3_2xlarge,
+        ProductionVariantInstanceType_Ml_p3_8xlarge,
+        ProductionVariantInstanceType_Ml_p4d_24xlarge,
+        ProductionVariantInstanceType_Ml_r5_12xlarge,
+        ProductionVariantInstanceType_Ml_r5_24xlarge,
+        ProductionVariantInstanceType_Ml_r5_2xlarge,
+        ProductionVariantInstanceType_Ml_r5_4xlarge,
+        ProductionVariantInstanceType_Ml_r5_large,
+        ProductionVariantInstanceType_Ml_r5_xlarge,
+        ProductionVariantInstanceType_Ml_r5d_12xlarge,
+        ProductionVariantInstanceType_Ml_r5d_24xlarge,
+        ProductionVariantInstanceType_Ml_r5d_2xlarge,
+        ProductionVariantInstanceType_Ml_r5d_4xlarge,
+        ProductionVariantInstanceType_Ml_r5d_large,
+        ProductionVariantInstanceType_Ml_r5d_xlarge,
+        ProductionVariantInstanceType_Ml_r6g_12xlarge,
+        ProductionVariantInstanceType_Ml_r6g_16xlarge,
+        ProductionVariantInstanceType_Ml_r6g_2xlarge,
+        ProductionVariantInstanceType_Ml_r6g_4xlarge,
+        ProductionVariantInstanceType_Ml_r6g_8xlarge,
+        ProductionVariantInstanceType_Ml_r6g_large,
+        ProductionVariantInstanceType_Ml_r6g_xlarge,
+        ProductionVariantInstanceType_Ml_r6gd_12xlarge,
+        ProductionVariantInstanceType_Ml_r6gd_16xlarge,
+        ProductionVariantInstanceType_Ml_r6gd_2xlarge,
+        ProductionVariantInstanceType_Ml_r6gd_4xlarge,
+        ProductionVariantInstanceType_Ml_r6gd_8xlarge,
+        ProductionVariantInstanceType_Ml_r6gd_large,
+        ProductionVariantInstanceType_Ml_r6gd_xlarge,
+        ProductionVariantInstanceType_Ml_t2_2xlarge,
+        ProductionVariantInstanceType_Ml_t2_large,
+        ProductionVariantInstanceType_Ml_t2_medium,
+        ProductionVariantInstanceType_Ml_t2_xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProductionVariantInstanceType = ProductionVariantInstanceType'
+  { fromProductionVariantInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProductionVariantInstanceType_Ml_c4_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c4_2xlarge = ProductionVariantInstanceType' "ml.c4.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c4_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c4_4xlarge = ProductionVariantInstanceType' "ml.c4.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c4_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c4_8xlarge = ProductionVariantInstanceType' "ml.c4.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c4_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c4_large = ProductionVariantInstanceType' "ml.c4.large"
+
+pattern ProductionVariantInstanceType_Ml_c4_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c4_xlarge = ProductionVariantInstanceType' "ml.c4.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5_18xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5_18xlarge = ProductionVariantInstanceType' "ml.c5.18xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5_2xlarge = ProductionVariantInstanceType' "ml.c5.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5_4xlarge = ProductionVariantInstanceType' "ml.c5.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5_9xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5_9xlarge = ProductionVariantInstanceType' "ml.c5.9xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5_large = ProductionVariantInstanceType' "ml.c5.large"
+
+pattern ProductionVariantInstanceType_Ml_c5_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5_xlarge = ProductionVariantInstanceType' "ml.c5.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5d_18xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5d_18xlarge = ProductionVariantInstanceType' "ml.c5d.18xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5d_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5d_2xlarge = ProductionVariantInstanceType' "ml.c5d.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5d_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5d_4xlarge = ProductionVariantInstanceType' "ml.c5d.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5d_9xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5d_9xlarge = ProductionVariantInstanceType' "ml.c5d.9xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c5d_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5d_large = ProductionVariantInstanceType' "ml.c5d.large"
+
+pattern ProductionVariantInstanceType_Ml_c5d_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c5d_xlarge = ProductionVariantInstanceType' "ml.c5d.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6g_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_12xlarge = ProductionVariantInstanceType' "ml.c6g.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6g_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_16xlarge = ProductionVariantInstanceType' "ml.c6g.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6g_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_2xlarge = ProductionVariantInstanceType' "ml.c6g.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6g_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_4xlarge = ProductionVariantInstanceType' "ml.c6g.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6g_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_8xlarge = ProductionVariantInstanceType' "ml.c6g.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6g_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_large = ProductionVariantInstanceType' "ml.c6g.large"
+
+pattern ProductionVariantInstanceType_Ml_c6g_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6g_xlarge = ProductionVariantInstanceType' "ml.c6g.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_12xlarge = ProductionVariantInstanceType' "ml.c6gd.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_16xlarge = ProductionVariantInstanceType' "ml.c6gd.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_2xlarge = ProductionVariantInstanceType' "ml.c6gd.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_4xlarge = ProductionVariantInstanceType' "ml.c6gd.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_8xlarge = ProductionVariantInstanceType' "ml.c6gd.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_large = ProductionVariantInstanceType' "ml.c6gd.large"
+
+pattern ProductionVariantInstanceType_Ml_c6gd_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gd_xlarge = ProductionVariantInstanceType' "ml.c6gd.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_12xlarge = ProductionVariantInstanceType' "ml.c6gn.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_16xlarge = ProductionVariantInstanceType' "ml.c6gn.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_2xlarge = ProductionVariantInstanceType' "ml.c6gn.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_4xlarge = ProductionVariantInstanceType' "ml.c6gn.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_8xlarge = ProductionVariantInstanceType' "ml.c6gn.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_large = ProductionVariantInstanceType' "ml.c6gn.large"
+
+pattern ProductionVariantInstanceType_Ml_c6gn_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6gn_xlarge = ProductionVariantInstanceType' "ml.c6gn.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_12xlarge = ProductionVariantInstanceType' "ml.c6i.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_16xlarge = ProductionVariantInstanceType' "ml.c6i.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_24xlarge = ProductionVariantInstanceType' "ml.c6i.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_2xlarge = ProductionVariantInstanceType' "ml.c6i.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_32xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_32xlarge = ProductionVariantInstanceType' "ml.c6i.32xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_4xlarge = ProductionVariantInstanceType' "ml.c6i.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_8xlarge = ProductionVariantInstanceType' "ml.c6i.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c6i_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_large = ProductionVariantInstanceType' "ml.c6i.large"
+
+pattern ProductionVariantInstanceType_Ml_c6i_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c6i_xlarge = ProductionVariantInstanceType' "ml.c6i.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c7g_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_12xlarge = ProductionVariantInstanceType' "ml.c7g.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c7g_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_16xlarge = ProductionVariantInstanceType' "ml.c7g.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c7g_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_2xlarge = ProductionVariantInstanceType' "ml.c7g.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c7g_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_4xlarge = ProductionVariantInstanceType' "ml.c7g.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c7g_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_8xlarge = ProductionVariantInstanceType' "ml.c7g.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_c7g_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_large = ProductionVariantInstanceType' "ml.c7g.large"
+
+pattern ProductionVariantInstanceType_Ml_c7g_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_c7g_xlarge = ProductionVariantInstanceType' "ml.c7g.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g4dn_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g4dn_12xlarge = ProductionVariantInstanceType' "ml.g4dn.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g4dn_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g4dn_16xlarge = ProductionVariantInstanceType' "ml.g4dn.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g4dn_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g4dn_2xlarge = ProductionVariantInstanceType' "ml.g4dn.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g4dn_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g4dn_4xlarge = ProductionVariantInstanceType' "ml.g4dn.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g4dn_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g4dn_8xlarge = ProductionVariantInstanceType' "ml.g4dn.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g4dn_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g4dn_xlarge = ProductionVariantInstanceType' "ml.g4dn.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_12xlarge = ProductionVariantInstanceType' "ml.g5.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_16xlarge = ProductionVariantInstanceType' "ml.g5.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_24xlarge = ProductionVariantInstanceType' "ml.g5.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_2xlarge = ProductionVariantInstanceType' "ml.g5.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_48xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_48xlarge = ProductionVariantInstanceType' "ml.g5.48xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_4xlarge = ProductionVariantInstanceType' "ml.g5.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_8xlarge = ProductionVariantInstanceType' "ml.g5.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_g5_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_g5_xlarge = ProductionVariantInstanceType' "ml.g5.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_inf1_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_inf1_24xlarge = ProductionVariantInstanceType' "ml.inf1.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_inf1_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_inf1_2xlarge = ProductionVariantInstanceType' "ml.inf1.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_inf1_6xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_inf1_6xlarge = ProductionVariantInstanceType' "ml.inf1.6xlarge"
+
+pattern ProductionVariantInstanceType_Ml_inf1_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_inf1_xlarge = ProductionVariantInstanceType' "ml.inf1.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m4_10xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m4_10xlarge = ProductionVariantInstanceType' "ml.m4.10xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m4_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m4_16xlarge = ProductionVariantInstanceType' "ml.m4.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m4_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m4_2xlarge = ProductionVariantInstanceType' "ml.m4.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m4_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m4_4xlarge = ProductionVariantInstanceType' "ml.m4.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m4_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m4_xlarge = ProductionVariantInstanceType' "ml.m4.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5_12xlarge = ProductionVariantInstanceType' "ml.m5.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5_24xlarge = ProductionVariantInstanceType' "ml.m5.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5_2xlarge = ProductionVariantInstanceType' "ml.m5.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5_4xlarge = ProductionVariantInstanceType' "ml.m5.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5_large = ProductionVariantInstanceType' "ml.m5.large"
+
+pattern ProductionVariantInstanceType_Ml_m5_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5_xlarge = ProductionVariantInstanceType' "ml.m5.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5d_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5d_12xlarge = ProductionVariantInstanceType' "ml.m5d.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5d_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5d_24xlarge = ProductionVariantInstanceType' "ml.m5d.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5d_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5d_2xlarge = ProductionVariantInstanceType' "ml.m5d.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5d_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5d_4xlarge = ProductionVariantInstanceType' "ml.m5d.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m5d_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5d_large = ProductionVariantInstanceType' "ml.m5d.large"
+
+pattern ProductionVariantInstanceType_Ml_m5d_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m5d_xlarge = ProductionVariantInstanceType' "ml.m5d.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6g_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_12xlarge = ProductionVariantInstanceType' "ml.m6g.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6g_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_16xlarge = ProductionVariantInstanceType' "ml.m6g.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6g_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_2xlarge = ProductionVariantInstanceType' "ml.m6g.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6g_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_4xlarge = ProductionVariantInstanceType' "ml.m6g.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6g_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_8xlarge = ProductionVariantInstanceType' "ml.m6g.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6g_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_large = ProductionVariantInstanceType' "ml.m6g.large"
+
+pattern ProductionVariantInstanceType_Ml_m6g_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6g_xlarge = ProductionVariantInstanceType' "ml.m6g.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_12xlarge = ProductionVariantInstanceType' "ml.m6gd.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_16xlarge = ProductionVariantInstanceType' "ml.m6gd.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_2xlarge = ProductionVariantInstanceType' "ml.m6gd.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_4xlarge = ProductionVariantInstanceType' "ml.m6gd.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_8xlarge = ProductionVariantInstanceType' "ml.m6gd.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_large = ProductionVariantInstanceType' "ml.m6gd.large"
+
+pattern ProductionVariantInstanceType_Ml_m6gd_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_m6gd_xlarge = ProductionVariantInstanceType' "ml.m6gd.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p2_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p2_16xlarge = ProductionVariantInstanceType' "ml.p2.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p2_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p2_8xlarge = ProductionVariantInstanceType' "ml.p2.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p2_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p2_xlarge = ProductionVariantInstanceType' "ml.p2.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p3_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p3_16xlarge = ProductionVariantInstanceType' "ml.p3.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p3_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p3_2xlarge = ProductionVariantInstanceType' "ml.p3.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p3_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p3_8xlarge = ProductionVariantInstanceType' "ml.p3.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_p4d_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_p4d_24xlarge = ProductionVariantInstanceType' "ml.p4d.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5_12xlarge = ProductionVariantInstanceType' "ml.r5.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5_24xlarge = ProductionVariantInstanceType' "ml.r5.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5_2xlarge = ProductionVariantInstanceType' "ml.r5.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5_4xlarge = ProductionVariantInstanceType' "ml.r5.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5_large = ProductionVariantInstanceType' "ml.r5.large"
+
+pattern ProductionVariantInstanceType_Ml_r5_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5_xlarge = ProductionVariantInstanceType' "ml.r5.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5d_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5d_12xlarge = ProductionVariantInstanceType' "ml.r5d.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5d_24xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5d_24xlarge = ProductionVariantInstanceType' "ml.r5d.24xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5d_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5d_2xlarge = ProductionVariantInstanceType' "ml.r5d.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5d_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5d_4xlarge = ProductionVariantInstanceType' "ml.r5d.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r5d_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5d_large = ProductionVariantInstanceType' "ml.r5d.large"
+
+pattern ProductionVariantInstanceType_Ml_r5d_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r5d_xlarge = ProductionVariantInstanceType' "ml.r5d.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6g_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_12xlarge = ProductionVariantInstanceType' "ml.r6g.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6g_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_16xlarge = ProductionVariantInstanceType' "ml.r6g.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6g_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_2xlarge = ProductionVariantInstanceType' "ml.r6g.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6g_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_4xlarge = ProductionVariantInstanceType' "ml.r6g.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6g_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_8xlarge = ProductionVariantInstanceType' "ml.r6g.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6g_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_large = ProductionVariantInstanceType' "ml.r6g.large"
+
+pattern ProductionVariantInstanceType_Ml_r6g_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6g_xlarge = ProductionVariantInstanceType' "ml.r6g.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_12xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_12xlarge = ProductionVariantInstanceType' "ml.r6gd.12xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_16xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_16xlarge = ProductionVariantInstanceType' "ml.r6gd.16xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_2xlarge = ProductionVariantInstanceType' "ml.r6gd.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_4xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_4xlarge = ProductionVariantInstanceType' "ml.r6gd.4xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_8xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_8xlarge = ProductionVariantInstanceType' "ml.r6gd.8xlarge"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_large = ProductionVariantInstanceType' "ml.r6gd.large"
+
+pattern ProductionVariantInstanceType_Ml_r6gd_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_r6gd_xlarge = ProductionVariantInstanceType' "ml.r6gd.xlarge"
+
+pattern ProductionVariantInstanceType_Ml_t2_2xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_t2_2xlarge = ProductionVariantInstanceType' "ml.t2.2xlarge"
+
+pattern ProductionVariantInstanceType_Ml_t2_large :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_t2_large = ProductionVariantInstanceType' "ml.t2.large"
+
+pattern ProductionVariantInstanceType_Ml_t2_medium :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_t2_medium = ProductionVariantInstanceType' "ml.t2.medium"
+
+pattern ProductionVariantInstanceType_Ml_t2_xlarge :: ProductionVariantInstanceType
+pattern ProductionVariantInstanceType_Ml_t2_xlarge = ProductionVariantInstanceType' "ml.t2.xlarge"
+
+{-# COMPLETE
+  ProductionVariantInstanceType_Ml_c4_2xlarge,
+  ProductionVariantInstanceType_Ml_c4_4xlarge,
+  ProductionVariantInstanceType_Ml_c4_8xlarge,
+  ProductionVariantInstanceType_Ml_c4_large,
+  ProductionVariantInstanceType_Ml_c4_xlarge,
+  ProductionVariantInstanceType_Ml_c5_18xlarge,
+  ProductionVariantInstanceType_Ml_c5_2xlarge,
+  ProductionVariantInstanceType_Ml_c5_4xlarge,
+  ProductionVariantInstanceType_Ml_c5_9xlarge,
+  ProductionVariantInstanceType_Ml_c5_large,
+  ProductionVariantInstanceType_Ml_c5_xlarge,
+  ProductionVariantInstanceType_Ml_c5d_18xlarge,
+  ProductionVariantInstanceType_Ml_c5d_2xlarge,
+  ProductionVariantInstanceType_Ml_c5d_4xlarge,
+  ProductionVariantInstanceType_Ml_c5d_9xlarge,
+  ProductionVariantInstanceType_Ml_c5d_large,
+  ProductionVariantInstanceType_Ml_c5d_xlarge,
+  ProductionVariantInstanceType_Ml_c6g_12xlarge,
+  ProductionVariantInstanceType_Ml_c6g_16xlarge,
+  ProductionVariantInstanceType_Ml_c6g_2xlarge,
+  ProductionVariantInstanceType_Ml_c6g_4xlarge,
+  ProductionVariantInstanceType_Ml_c6g_8xlarge,
+  ProductionVariantInstanceType_Ml_c6g_large,
+  ProductionVariantInstanceType_Ml_c6g_xlarge,
+  ProductionVariantInstanceType_Ml_c6gd_12xlarge,
+  ProductionVariantInstanceType_Ml_c6gd_16xlarge,
+  ProductionVariantInstanceType_Ml_c6gd_2xlarge,
+  ProductionVariantInstanceType_Ml_c6gd_4xlarge,
+  ProductionVariantInstanceType_Ml_c6gd_8xlarge,
+  ProductionVariantInstanceType_Ml_c6gd_large,
+  ProductionVariantInstanceType_Ml_c6gd_xlarge,
+  ProductionVariantInstanceType_Ml_c6gn_12xlarge,
+  ProductionVariantInstanceType_Ml_c6gn_16xlarge,
+  ProductionVariantInstanceType_Ml_c6gn_2xlarge,
+  ProductionVariantInstanceType_Ml_c6gn_4xlarge,
+  ProductionVariantInstanceType_Ml_c6gn_8xlarge,
+  ProductionVariantInstanceType_Ml_c6gn_large,
+  ProductionVariantInstanceType_Ml_c6gn_xlarge,
+  ProductionVariantInstanceType_Ml_c6i_12xlarge,
+  ProductionVariantInstanceType_Ml_c6i_16xlarge,
+  ProductionVariantInstanceType_Ml_c6i_24xlarge,
+  ProductionVariantInstanceType_Ml_c6i_2xlarge,
+  ProductionVariantInstanceType_Ml_c6i_32xlarge,
+  ProductionVariantInstanceType_Ml_c6i_4xlarge,
+  ProductionVariantInstanceType_Ml_c6i_8xlarge,
+  ProductionVariantInstanceType_Ml_c6i_large,
+  ProductionVariantInstanceType_Ml_c6i_xlarge,
+  ProductionVariantInstanceType_Ml_c7g_12xlarge,
+  ProductionVariantInstanceType_Ml_c7g_16xlarge,
+  ProductionVariantInstanceType_Ml_c7g_2xlarge,
+  ProductionVariantInstanceType_Ml_c7g_4xlarge,
+  ProductionVariantInstanceType_Ml_c7g_8xlarge,
+  ProductionVariantInstanceType_Ml_c7g_large,
+  ProductionVariantInstanceType_Ml_c7g_xlarge,
+  ProductionVariantInstanceType_Ml_g4dn_12xlarge,
+  ProductionVariantInstanceType_Ml_g4dn_16xlarge,
+  ProductionVariantInstanceType_Ml_g4dn_2xlarge,
+  ProductionVariantInstanceType_Ml_g4dn_4xlarge,
+  ProductionVariantInstanceType_Ml_g4dn_8xlarge,
+  ProductionVariantInstanceType_Ml_g4dn_xlarge,
+  ProductionVariantInstanceType_Ml_g5_12xlarge,
+  ProductionVariantInstanceType_Ml_g5_16xlarge,
+  ProductionVariantInstanceType_Ml_g5_24xlarge,
+  ProductionVariantInstanceType_Ml_g5_2xlarge,
+  ProductionVariantInstanceType_Ml_g5_48xlarge,
+  ProductionVariantInstanceType_Ml_g5_4xlarge,
+  ProductionVariantInstanceType_Ml_g5_8xlarge,
+  ProductionVariantInstanceType_Ml_g5_xlarge,
+  ProductionVariantInstanceType_Ml_inf1_24xlarge,
+  ProductionVariantInstanceType_Ml_inf1_2xlarge,
+  ProductionVariantInstanceType_Ml_inf1_6xlarge,
+  ProductionVariantInstanceType_Ml_inf1_xlarge,
+  ProductionVariantInstanceType_Ml_m4_10xlarge,
+  ProductionVariantInstanceType_Ml_m4_16xlarge,
+  ProductionVariantInstanceType_Ml_m4_2xlarge,
+  ProductionVariantInstanceType_Ml_m4_4xlarge,
+  ProductionVariantInstanceType_Ml_m4_xlarge,
+  ProductionVariantInstanceType_Ml_m5_12xlarge,
+  ProductionVariantInstanceType_Ml_m5_24xlarge,
+  ProductionVariantInstanceType_Ml_m5_2xlarge,
+  ProductionVariantInstanceType_Ml_m5_4xlarge,
+  ProductionVariantInstanceType_Ml_m5_large,
+  ProductionVariantInstanceType_Ml_m5_xlarge,
+  ProductionVariantInstanceType_Ml_m5d_12xlarge,
+  ProductionVariantInstanceType_Ml_m5d_24xlarge,
+  ProductionVariantInstanceType_Ml_m5d_2xlarge,
+  ProductionVariantInstanceType_Ml_m5d_4xlarge,
+  ProductionVariantInstanceType_Ml_m5d_large,
+  ProductionVariantInstanceType_Ml_m5d_xlarge,
+  ProductionVariantInstanceType_Ml_m6g_12xlarge,
+  ProductionVariantInstanceType_Ml_m6g_16xlarge,
+  ProductionVariantInstanceType_Ml_m6g_2xlarge,
+  ProductionVariantInstanceType_Ml_m6g_4xlarge,
+  ProductionVariantInstanceType_Ml_m6g_8xlarge,
+  ProductionVariantInstanceType_Ml_m6g_large,
+  ProductionVariantInstanceType_Ml_m6g_xlarge,
+  ProductionVariantInstanceType_Ml_m6gd_12xlarge,
+  ProductionVariantInstanceType_Ml_m6gd_16xlarge,
+  ProductionVariantInstanceType_Ml_m6gd_2xlarge,
+  ProductionVariantInstanceType_Ml_m6gd_4xlarge,
+  ProductionVariantInstanceType_Ml_m6gd_8xlarge,
+  ProductionVariantInstanceType_Ml_m6gd_large,
+  ProductionVariantInstanceType_Ml_m6gd_xlarge,
+  ProductionVariantInstanceType_Ml_p2_16xlarge,
+  ProductionVariantInstanceType_Ml_p2_8xlarge,
+  ProductionVariantInstanceType_Ml_p2_xlarge,
+  ProductionVariantInstanceType_Ml_p3_16xlarge,
+  ProductionVariantInstanceType_Ml_p3_2xlarge,
+  ProductionVariantInstanceType_Ml_p3_8xlarge,
+  ProductionVariantInstanceType_Ml_p4d_24xlarge,
+  ProductionVariantInstanceType_Ml_r5_12xlarge,
+  ProductionVariantInstanceType_Ml_r5_24xlarge,
+  ProductionVariantInstanceType_Ml_r5_2xlarge,
+  ProductionVariantInstanceType_Ml_r5_4xlarge,
+  ProductionVariantInstanceType_Ml_r5_large,
+  ProductionVariantInstanceType_Ml_r5_xlarge,
+  ProductionVariantInstanceType_Ml_r5d_12xlarge,
+  ProductionVariantInstanceType_Ml_r5d_24xlarge,
+  ProductionVariantInstanceType_Ml_r5d_2xlarge,
+  ProductionVariantInstanceType_Ml_r5d_4xlarge,
+  ProductionVariantInstanceType_Ml_r5d_large,
+  ProductionVariantInstanceType_Ml_r5d_xlarge,
+  ProductionVariantInstanceType_Ml_r6g_12xlarge,
+  ProductionVariantInstanceType_Ml_r6g_16xlarge,
+  ProductionVariantInstanceType_Ml_r6g_2xlarge,
+  ProductionVariantInstanceType_Ml_r6g_4xlarge,
+  ProductionVariantInstanceType_Ml_r6g_8xlarge,
+  ProductionVariantInstanceType_Ml_r6g_large,
+  ProductionVariantInstanceType_Ml_r6g_xlarge,
+  ProductionVariantInstanceType_Ml_r6gd_12xlarge,
+  ProductionVariantInstanceType_Ml_r6gd_16xlarge,
+  ProductionVariantInstanceType_Ml_r6gd_2xlarge,
+  ProductionVariantInstanceType_Ml_r6gd_4xlarge,
+  ProductionVariantInstanceType_Ml_r6gd_8xlarge,
+  ProductionVariantInstanceType_Ml_r6gd_large,
+  ProductionVariantInstanceType_Ml_r6gd_xlarge,
+  ProductionVariantInstanceType_Ml_t2_2xlarge,
+  ProductionVariantInstanceType_Ml_t2_large,
+  ProductionVariantInstanceType_Ml_t2_medium,
+  ProductionVariantInstanceType_Ml_t2_xlarge,
+  ProductionVariantInstanceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariantServerlessConfig.hs b/gen/Amazonka/SageMaker/Types/ProductionVariantServerlessConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariantServerlessConfig.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProductionVariantServerlessConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariantServerlessConfig 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
+
+-- | Specifies the serverless configuration for an endpoint variant.
+--
+-- /See:/ 'newProductionVariantServerlessConfig' smart constructor.
+data ProductionVariantServerlessConfig = ProductionVariantServerlessConfig'
+  { -- | The memory size of your serverless endpoint. Valid values are in 1 GB
+    -- increments: 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB, or 6144 MB.
+    memorySizeInMB :: Prelude.Natural,
+    -- | The maximum number of concurrent invocations your serverless endpoint
+    -- can process.
+    maxConcurrency :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProductionVariantServerlessConfig' 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:
+--
+-- 'memorySizeInMB', 'productionVariantServerlessConfig_memorySizeInMB' - The memory size of your serverless endpoint. Valid values are in 1 GB
+-- increments: 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB, or 6144 MB.
+--
+-- 'maxConcurrency', 'productionVariantServerlessConfig_maxConcurrency' - The maximum number of concurrent invocations your serverless endpoint
+-- can process.
+newProductionVariantServerlessConfig ::
+  -- | 'memorySizeInMB'
+  Prelude.Natural ->
+  -- | 'maxConcurrency'
+  Prelude.Natural ->
+  ProductionVariantServerlessConfig
+newProductionVariantServerlessConfig
+  pMemorySizeInMB_
+  pMaxConcurrency_ =
+    ProductionVariantServerlessConfig'
+      { memorySizeInMB =
+          pMemorySizeInMB_,
+        maxConcurrency = pMaxConcurrency_
+      }
+
+-- | The memory size of your serverless endpoint. Valid values are in 1 GB
+-- increments: 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB, or 6144 MB.
+productionVariantServerlessConfig_memorySizeInMB :: Lens.Lens' ProductionVariantServerlessConfig Prelude.Natural
+productionVariantServerlessConfig_memorySizeInMB = Lens.lens (\ProductionVariantServerlessConfig' {memorySizeInMB} -> memorySizeInMB) (\s@ProductionVariantServerlessConfig' {} a -> s {memorySizeInMB = a} :: ProductionVariantServerlessConfig)
+
+-- | The maximum number of concurrent invocations your serverless endpoint
+-- can process.
+productionVariantServerlessConfig_maxConcurrency :: Lens.Lens' ProductionVariantServerlessConfig Prelude.Natural
+productionVariantServerlessConfig_maxConcurrency = Lens.lens (\ProductionVariantServerlessConfig' {maxConcurrency} -> maxConcurrency) (\s@ProductionVariantServerlessConfig' {} a -> s {maxConcurrency = a} :: ProductionVariantServerlessConfig)
+
+instance
+  Data.FromJSON
+    ProductionVariantServerlessConfig
+  where
+  parseJSON =
+    Data.withObject
+      "ProductionVariantServerlessConfig"
+      ( \x ->
+          ProductionVariantServerlessConfig'
+            Prelude.<$> (x Data..: "MemorySizeInMB")
+            Prelude.<*> (x Data..: "MaxConcurrency")
+      )
+
+instance
+  Prelude.Hashable
+    ProductionVariantServerlessConfig
+  where
+  hashWithSalt
+    _salt
+    ProductionVariantServerlessConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` memorySizeInMB
+        `Prelude.hashWithSalt` maxConcurrency
+
+instance
+  Prelude.NFData
+    ProductionVariantServerlessConfig
+  where
+  rnf ProductionVariantServerlessConfig' {..} =
+    Prelude.rnf memorySizeInMB
+      `Prelude.seq` Prelude.rnf maxConcurrency
+
+instance
+  Data.ToJSON
+    ProductionVariantServerlessConfig
+  where
+  toJSON ProductionVariantServerlessConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MemorySizeInMB" Data..= memorySizeInMB),
+            Prelude.Just
+              ("MaxConcurrency" Data..= maxConcurrency)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariantStatus.hs b/gen/Amazonka/SageMaker/Types/ProductionVariantStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariantStatus.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProductionVariantStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariantStatus 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 Amazonka.SageMaker.Types.VariantStatus
+
+-- | Describes the status of the production variant.
+--
+-- /See:/ 'newProductionVariantStatus' smart constructor.
+data ProductionVariantStatus = ProductionVariantStatus'
+  { -- | The start time of the current status change.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | A message that describes the status of the production variant.
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint variant status which describes the current deployment stage
+    -- status or operational status.
+    --
+    -- -   @Creating@: Creating inference resources for the production variant.
+    --
+    -- -   @Deleting@: Terminating inference resources for the production
+    --     variant.
+    --
+    -- -   @Updating@: Updating capacity for the production variant.
+    --
+    -- -   @ActivatingTraffic@: Turning on traffic for the production variant.
+    --
+    -- -   @Baking@: Waiting period to monitor the CloudWatch alarms in the
+    --     automatic rollback configuration.
+    status :: VariantStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProductionVariantStatus' 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:
+--
+-- 'startTime', 'productionVariantStatus_startTime' - The start time of the current status change.
+--
+-- 'statusMessage', 'productionVariantStatus_statusMessage' - A message that describes the status of the production variant.
+--
+-- 'status', 'productionVariantStatus_status' - The endpoint variant status which describes the current deployment stage
+-- status or operational status.
+--
+-- -   @Creating@: Creating inference resources for the production variant.
+--
+-- -   @Deleting@: Terminating inference resources for the production
+--     variant.
+--
+-- -   @Updating@: Updating capacity for the production variant.
+--
+-- -   @ActivatingTraffic@: Turning on traffic for the production variant.
+--
+-- -   @Baking@: Waiting period to monitor the CloudWatch alarms in the
+--     automatic rollback configuration.
+newProductionVariantStatus ::
+  -- | 'status'
+  VariantStatus ->
+  ProductionVariantStatus
+newProductionVariantStatus pStatus_ =
+  ProductionVariantStatus'
+    { startTime =
+        Prelude.Nothing,
+      statusMessage = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The start time of the current status change.
+productionVariantStatus_startTime :: Lens.Lens' ProductionVariantStatus (Prelude.Maybe Prelude.UTCTime)
+productionVariantStatus_startTime = Lens.lens (\ProductionVariantStatus' {startTime} -> startTime) (\s@ProductionVariantStatus' {} a -> s {startTime = a} :: ProductionVariantStatus) Prelude.. Lens.mapping Data._Time
+
+-- | A message that describes the status of the production variant.
+productionVariantStatus_statusMessage :: Lens.Lens' ProductionVariantStatus (Prelude.Maybe Prelude.Text)
+productionVariantStatus_statusMessage = Lens.lens (\ProductionVariantStatus' {statusMessage} -> statusMessage) (\s@ProductionVariantStatus' {} a -> s {statusMessage = a} :: ProductionVariantStatus)
+
+-- | The endpoint variant status which describes the current deployment stage
+-- status or operational status.
+--
+-- -   @Creating@: Creating inference resources for the production variant.
+--
+-- -   @Deleting@: Terminating inference resources for the production
+--     variant.
+--
+-- -   @Updating@: Updating capacity for the production variant.
+--
+-- -   @ActivatingTraffic@: Turning on traffic for the production variant.
+--
+-- -   @Baking@: Waiting period to monitor the CloudWatch alarms in the
+--     automatic rollback configuration.
+productionVariantStatus_status :: Lens.Lens' ProductionVariantStatus VariantStatus
+productionVariantStatus_status = Lens.lens (\ProductionVariantStatus' {status} -> status) (\s@ProductionVariantStatus' {} a -> s {status = a} :: ProductionVariantStatus)
+
+instance Data.FromJSON ProductionVariantStatus where
+  parseJSON =
+    Data.withObject
+      "ProductionVariantStatus"
+      ( \x ->
+          ProductionVariantStatus'
+            Prelude.<$> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "StatusMessage")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable ProductionVariantStatus where
+  hashWithSalt _salt ProductionVariantStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ProductionVariantStatus where
+  rnf ProductionVariantStatus' {..} =
+    Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/ProductionVariantSummary.hs b/gen/Amazonka/SageMaker/Types/ProductionVariantSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProductionVariantSummary.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProductionVariantSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProductionVariantSummary 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 Amazonka.SageMaker.Types.DeployedImage
+import Amazonka.SageMaker.Types.ProductionVariantServerlessConfig
+import Amazonka.SageMaker.Types.ProductionVariantStatus
+
+-- | Describes weight and capacities for a production variant associated with
+-- an endpoint. If you sent a request to the
+-- @UpdateEndpointWeightsAndCapacities@ API and the endpoint status is
+-- @Updating@, you get different desired and current values.
+--
+-- /See:/ 'newProductionVariantSummary' smart constructor.
+data ProductionVariantSummary = ProductionVariantSummary'
+  { -- | The number of instances associated with the variant.
+    currentInstanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The serverless configuration for the endpoint.
+    currentServerlessConfig :: Prelude.Maybe ProductionVariantServerlessConfig,
+    -- | The weight associated with the variant.
+    currentWeight :: Prelude.Maybe Prelude.Double,
+    -- | An array of @DeployedImage@ objects that specify the Amazon EC2
+    -- Container Registry paths of the inference images deployed on instances
+    -- of this @ProductionVariant@.
+    deployedImages :: Prelude.Maybe [DeployedImage],
+    -- | The number of instances requested in the
+    -- @UpdateEndpointWeightsAndCapacities@ request.
+    desiredInstanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The serverless configuration requested for the endpoint update.
+    desiredServerlessConfig :: Prelude.Maybe ProductionVariantServerlessConfig,
+    -- | The requested weight, as specified in the
+    -- @UpdateEndpointWeightsAndCapacities@ request.
+    desiredWeight :: Prelude.Maybe Prelude.Double,
+    -- | The endpoint variant status which describes the current deployment stage
+    -- status or operational status.
+    variantStatus :: Prelude.Maybe [ProductionVariantStatus],
+    -- | The name of the variant.
+    variantName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProductionVariantSummary' 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:
+--
+-- 'currentInstanceCount', 'productionVariantSummary_currentInstanceCount' - The number of instances associated with the variant.
+--
+-- 'currentServerlessConfig', 'productionVariantSummary_currentServerlessConfig' - The serverless configuration for the endpoint.
+--
+-- 'currentWeight', 'productionVariantSummary_currentWeight' - The weight associated with the variant.
+--
+-- 'deployedImages', 'productionVariantSummary_deployedImages' - An array of @DeployedImage@ objects that specify the Amazon EC2
+-- Container Registry paths of the inference images deployed on instances
+-- of this @ProductionVariant@.
+--
+-- 'desiredInstanceCount', 'productionVariantSummary_desiredInstanceCount' - The number of instances requested in the
+-- @UpdateEndpointWeightsAndCapacities@ request.
+--
+-- 'desiredServerlessConfig', 'productionVariantSummary_desiredServerlessConfig' - The serverless configuration requested for the endpoint update.
+--
+-- 'desiredWeight', 'productionVariantSummary_desiredWeight' - The requested weight, as specified in the
+-- @UpdateEndpointWeightsAndCapacities@ request.
+--
+-- 'variantStatus', 'productionVariantSummary_variantStatus' - The endpoint variant status which describes the current deployment stage
+-- status or operational status.
+--
+-- 'variantName', 'productionVariantSummary_variantName' - The name of the variant.
+newProductionVariantSummary ::
+  -- | 'variantName'
+  Prelude.Text ->
+  ProductionVariantSummary
+newProductionVariantSummary pVariantName_ =
+  ProductionVariantSummary'
+    { currentInstanceCount =
+        Prelude.Nothing,
+      currentServerlessConfig = Prelude.Nothing,
+      currentWeight = Prelude.Nothing,
+      deployedImages = Prelude.Nothing,
+      desiredInstanceCount = Prelude.Nothing,
+      desiredServerlessConfig = Prelude.Nothing,
+      desiredWeight = Prelude.Nothing,
+      variantStatus = Prelude.Nothing,
+      variantName = pVariantName_
+    }
+
+-- | The number of instances associated with the variant.
+productionVariantSummary_currentInstanceCount :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe Prelude.Natural)
+productionVariantSummary_currentInstanceCount = Lens.lens (\ProductionVariantSummary' {currentInstanceCount} -> currentInstanceCount) (\s@ProductionVariantSummary' {} a -> s {currentInstanceCount = a} :: ProductionVariantSummary)
+
+-- | The serverless configuration for the endpoint.
+productionVariantSummary_currentServerlessConfig :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe ProductionVariantServerlessConfig)
+productionVariantSummary_currentServerlessConfig = Lens.lens (\ProductionVariantSummary' {currentServerlessConfig} -> currentServerlessConfig) (\s@ProductionVariantSummary' {} a -> s {currentServerlessConfig = a} :: ProductionVariantSummary)
+
+-- | The weight associated with the variant.
+productionVariantSummary_currentWeight :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe Prelude.Double)
+productionVariantSummary_currentWeight = Lens.lens (\ProductionVariantSummary' {currentWeight} -> currentWeight) (\s@ProductionVariantSummary' {} a -> s {currentWeight = a} :: ProductionVariantSummary)
+
+-- | An array of @DeployedImage@ objects that specify the Amazon EC2
+-- Container Registry paths of the inference images deployed on instances
+-- of this @ProductionVariant@.
+productionVariantSummary_deployedImages :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe [DeployedImage])
+productionVariantSummary_deployedImages = Lens.lens (\ProductionVariantSummary' {deployedImages} -> deployedImages) (\s@ProductionVariantSummary' {} a -> s {deployedImages = a} :: ProductionVariantSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of instances requested in the
+-- @UpdateEndpointWeightsAndCapacities@ request.
+productionVariantSummary_desiredInstanceCount :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe Prelude.Natural)
+productionVariantSummary_desiredInstanceCount = Lens.lens (\ProductionVariantSummary' {desiredInstanceCount} -> desiredInstanceCount) (\s@ProductionVariantSummary' {} a -> s {desiredInstanceCount = a} :: ProductionVariantSummary)
+
+-- | The serverless configuration requested for the endpoint update.
+productionVariantSummary_desiredServerlessConfig :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe ProductionVariantServerlessConfig)
+productionVariantSummary_desiredServerlessConfig = Lens.lens (\ProductionVariantSummary' {desiredServerlessConfig} -> desiredServerlessConfig) (\s@ProductionVariantSummary' {} a -> s {desiredServerlessConfig = a} :: ProductionVariantSummary)
+
+-- | The requested weight, as specified in the
+-- @UpdateEndpointWeightsAndCapacities@ request.
+productionVariantSummary_desiredWeight :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe Prelude.Double)
+productionVariantSummary_desiredWeight = Lens.lens (\ProductionVariantSummary' {desiredWeight} -> desiredWeight) (\s@ProductionVariantSummary' {} a -> s {desiredWeight = a} :: ProductionVariantSummary)
+
+-- | The endpoint variant status which describes the current deployment stage
+-- status or operational status.
+productionVariantSummary_variantStatus :: Lens.Lens' ProductionVariantSummary (Prelude.Maybe [ProductionVariantStatus])
+productionVariantSummary_variantStatus = Lens.lens (\ProductionVariantSummary' {variantStatus} -> variantStatus) (\s@ProductionVariantSummary' {} a -> s {variantStatus = a} :: ProductionVariantSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the variant.
+productionVariantSummary_variantName :: Lens.Lens' ProductionVariantSummary Prelude.Text
+productionVariantSummary_variantName = Lens.lens (\ProductionVariantSummary' {variantName} -> variantName) (\s@ProductionVariantSummary' {} a -> s {variantName = a} :: ProductionVariantSummary)
+
+instance Data.FromJSON ProductionVariantSummary where
+  parseJSON =
+    Data.withObject
+      "ProductionVariantSummary"
+      ( \x ->
+          ProductionVariantSummary'
+            Prelude.<$> (x Data..:? "CurrentInstanceCount")
+            Prelude.<*> (x Data..:? "CurrentServerlessConfig")
+            Prelude.<*> (x Data..:? "CurrentWeight")
+            Prelude.<*> (x Data..:? "DeployedImages" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "DesiredInstanceCount")
+            Prelude.<*> (x Data..:? "DesiredServerlessConfig")
+            Prelude.<*> (x Data..:? "DesiredWeight")
+            Prelude.<*> (x Data..:? "VariantStatus" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "VariantName")
+      )
+
+instance Prelude.Hashable ProductionVariantSummary where
+  hashWithSalt _salt ProductionVariantSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` currentInstanceCount
+      `Prelude.hashWithSalt` currentServerlessConfig
+      `Prelude.hashWithSalt` currentWeight
+      `Prelude.hashWithSalt` deployedImages
+      `Prelude.hashWithSalt` desiredInstanceCount
+      `Prelude.hashWithSalt` desiredServerlessConfig
+      `Prelude.hashWithSalt` desiredWeight
+      `Prelude.hashWithSalt` variantStatus
+      `Prelude.hashWithSalt` variantName
+
+instance Prelude.NFData ProductionVariantSummary where
+  rnf ProductionVariantSummary' {..} =
+    Prelude.rnf currentInstanceCount
+      `Prelude.seq` Prelude.rnf currentServerlessConfig
+      `Prelude.seq` Prelude.rnf currentWeight
+      `Prelude.seq` Prelude.rnf deployedImages
+      `Prelude.seq` Prelude.rnf desiredInstanceCount
+      `Prelude.seq` Prelude.rnf desiredServerlessConfig
+      `Prelude.seq` Prelude.rnf desiredWeight
+      `Prelude.seq` Prelude.rnf variantStatus
+      `Prelude.seq` Prelude.rnf variantName
diff --git a/gen/Amazonka/SageMaker/Types/ProfilerConfig.hs b/gen/Amazonka/SageMaker/Types/ProfilerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProfilerConfig.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProfilerConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProfilerConfig 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
+
+-- | Configuration information for Amazon SageMaker Debugger system
+-- monitoring, framework profiling, and storage paths.
+--
+-- /See:/ 'newProfilerConfig' smart constructor.
+data ProfilerConfig = ProfilerConfig'
+  { -- | Configuration to turn off Amazon SageMaker Debugger\'s system monitoring
+    -- and profiling functionality. To turn it off, set to @True@.
+    disableProfiler :: Prelude.Maybe Prelude.Bool,
+    -- | A time interval for capturing system metrics in milliseconds. Available
+    -- values are 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000
+    -- (1 minute) milliseconds. The default value is 500 milliseconds.
+    profilingIntervalInMilliseconds :: Prelude.Maybe Prelude.Integer,
+    -- | Configuration information for capturing framework metrics. Available key
+    -- strings for different profiling options are @DetailedProfilingConfig@,
+    -- @PythonProfilingConfig@, and @DataLoaderProfilingConfig@. The following
+    -- codes are configuration structures for the @ProfilingParameters@
+    -- parameter. To learn more about how to configure the
+    -- @ProfilingParameters@ parameter, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+    profilingParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Path to Amazon S3 storage location for system and framework metrics.
+    s3OutputPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProfilerConfig' 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:
+--
+-- 'disableProfiler', 'profilerConfig_disableProfiler' - Configuration to turn off Amazon SageMaker Debugger\'s system monitoring
+-- and profiling functionality. To turn it off, set to @True@.
+--
+-- 'profilingIntervalInMilliseconds', 'profilerConfig_profilingIntervalInMilliseconds' - A time interval for capturing system metrics in milliseconds. Available
+-- values are 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000
+-- (1 minute) milliseconds. The default value is 500 milliseconds.
+--
+-- 'profilingParameters', 'profilerConfig_profilingParameters' - Configuration information for capturing framework metrics. Available key
+-- strings for different profiling options are @DetailedProfilingConfig@,
+-- @PythonProfilingConfig@, and @DataLoaderProfilingConfig@. The following
+-- codes are configuration structures for the @ProfilingParameters@
+-- parameter. To learn more about how to configure the
+-- @ProfilingParameters@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+--
+-- 's3OutputPath', 'profilerConfig_s3OutputPath' - Path to Amazon S3 storage location for system and framework metrics.
+newProfilerConfig ::
+  ProfilerConfig
+newProfilerConfig =
+  ProfilerConfig'
+    { disableProfiler = Prelude.Nothing,
+      profilingIntervalInMilliseconds = Prelude.Nothing,
+      profilingParameters = Prelude.Nothing,
+      s3OutputPath = Prelude.Nothing
+    }
+
+-- | Configuration to turn off Amazon SageMaker Debugger\'s system monitoring
+-- and profiling functionality. To turn it off, set to @True@.
+profilerConfig_disableProfiler :: Lens.Lens' ProfilerConfig (Prelude.Maybe Prelude.Bool)
+profilerConfig_disableProfiler = Lens.lens (\ProfilerConfig' {disableProfiler} -> disableProfiler) (\s@ProfilerConfig' {} a -> s {disableProfiler = a} :: ProfilerConfig)
+
+-- | A time interval for capturing system metrics in milliseconds. Available
+-- values are 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000
+-- (1 minute) milliseconds. The default value is 500 milliseconds.
+profilerConfig_profilingIntervalInMilliseconds :: Lens.Lens' ProfilerConfig (Prelude.Maybe Prelude.Integer)
+profilerConfig_profilingIntervalInMilliseconds = Lens.lens (\ProfilerConfig' {profilingIntervalInMilliseconds} -> profilingIntervalInMilliseconds) (\s@ProfilerConfig' {} a -> s {profilingIntervalInMilliseconds = a} :: ProfilerConfig)
+
+-- | Configuration information for capturing framework metrics. Available key
+-- strings for different profiling options are @DetailedProfilingConfig@,
+-- @PythonProfilingConfig@, and @DataLoaderProfilingConfig@. The following
+-- codes are configuration structures for the @ProfilingParameters@
+-- parameter. To learn more about how to configure the
+-- @ProfilingParameters@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+profilerConfig_profilingParameters :: Lens.Lens' ProfilerConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+profilerConfig_profilingParameters = Lens.lens (\ProfilerConfig' {profilingParameters} -> profilingParameters) (\s@ProfilerConfig' {} a -> s {profilingParameters = a} :: ProfilerConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Path to Amazon S3 storage location for system and framework metrics.
+profilerConfig_s3OutputPath :: Lens.Lens' ProfilerConfig (Prelude.Maybe Prelude.Text)
+profilerConfig_s3OutputPath = Lens.lens (\ProfilerConfig' {s3OutputPath} -> s3OutputPath) (\s@ProfilerConfig' {} a -> s {s3OutputPath = a} :: ProfilerConfig)
+
+instance Data.FromJSON ProfilerConfig where
+  parseJSON =
+    Data.withObject
+      "ProfilerConfig"
+      ( \x ->
+          ProfilerConfig'
+            Prelude.<$> (x Data..:? "DisableProfiler")
+            Prelude.<*> (x Data..:? "ProfilingIntervalInMilliseconds")
+            Prelude.<*> ( x
+                            Data..:? "ProfilingParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "S3OutputPath")
+      )
+
+instance Prelude.Hashable ProfilerConfig where
+  hashWithSalt _salt ProfilerConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` disableProfiler
+      `Prelude.hashWithSalt` profilingIntervalInMilliseconds
+      `Prelude.hashWithSalt` profilingParameters
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData ProfilerConfig where
+  rnf ProfilerConfig' {..} =
+    Prelude.rnf disableProfiler
+      `Prelude.seq` Prelude.rnf profilingIntervalInMilliseconds
+      `Prelude.seq` Prelude.rnf profilingParameters
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON ProfilerConfig where
+  toJSON ProfilerConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisableProfiler" Data..=)
+              Prelude.<$> disableProfiler,
+            ("ProfilingIntervalInMilliseconds" Data..=)
+              Prelude.<$> profilingIntervalInMilliseconds,
+            ("ProfilingParameters" Data..=)
+              Prelude.<$> profilingParameters,
+            ("S3OutputPath" Data..=) Prelude.<$> s3OutputPath
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProfilerConfigForUpdate.hs b/gen/Amazonka/SageMaker/Types/ProfilerConfigForUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProfilerConfigForUpdate.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProfilerConfigForUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProfilerConfigForUpdate 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
+
+-- | Configuration information for updating the Amazon SageMaker Debugger
+-- profile parameters, system and framework metrics configurations, and
+-- storage paths.
+--
+-- /See:/ 'newProfilerConfigForUpdate' smart constructor.
+data ProfilerConfigForUpdate = ProfilerConfigForUpdate'
+  { -- | To turn off Amazon SageMaker Debugger monitoring and profiling while a
+    -- training job is in progress, set to @True@.
+    disableProfiler :: Prelude.Maybe Prelude.Bool,
+    -- | A time interval for capturing system metrics in milliseconds. Available
+    -- values are 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000
+    -- (1 minute) milliseconds. The default value is 500 milliseconds.
+    profilingIntervalInMilliseconds :: Prelude.Maybe Prelude.Integer,
+    -- | Configuration information for capturing framework metrics. Available key
+    -- strings for different profiling options are @DetailedProfilingConfig@,
+    -- @PythonProfilingConfig@, and @DataLoaderProfilingConfig@. The following
+    -- codes are configuration structures for the @ProfilingParameters@
+    -- parameter. To learn more about how to configure the
+    -- @ProfilingParameters@ parameter, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+    profilingParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Path to Amazon S3 storage location for system and framework metrics.
+    s3OutputPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProfilerConfigForUpdate' 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:
+--
+-- 'disableProfiler', 'profilerConfigForUpdate_disableProfiler' - To turn off Amazon SageMaker Debugger monitoring and profiling while a
+-- training job is in progress, set to @True@.
+--
+-- 'profilingIntervalInMilliseconds', 'profilerConfigForUpdate_profilingIntervalInMilliseconds' - A time interval for capturing system metrics in milliseconds. Available
+-- values are 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000
+-- (1 minute) milliseconds. The default value is 500 milliseconds.
+--
+-- 'profilingParameters', 'profilerConfigForUpdate_profilingParameters' - Configuration information for capturing framework metrics. Available key
+-- strings for different profiling options are @DetailedProfilingConfig@,
+-- @PythonProfilingConfig@, and @DataLoaderProfilingConfig@. The following
+-- codes are configuration structures for the @ProfilingParameters@
+-- parameter. To learn more about how to configure the
+-- @ProfilingParameters@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+--
+-- 's3OutputPath', 'profilerConfigForUpdate_s3OutputPath' - Path to Amazon S3 storage location for system and framework metrics.
+newProfilerConfigForUpdate ::
+  ProfilerConfigForUpdate
+newProfilerConfigForUpdate =
+  ProfilerConfigForUpdate'
+    { disableProfiler =
+        Prelude.Nothing,
+      profilingIntervalInMilliseconds = Prelude.Nothing,
+      profilingParameters = Prelude.Nothing,
+      s3OutputPath = Prelude.Nothing
+    }
+
+-- | To turn off Amazon SageMaker Debugger monitoring and profiling while a
+-- training job is in progress, set to @True@.
+profilerConfigForUpdate_disableProfiler :: Lens.Lens' ProfilerConfigForUpdate (Prelude.Maybe Prelude.Bool)
+profilerConfigForUpdate_disableProfiler = Lens.lens (\ProfilerConfigForUpdate' {disableProfiler} -> disableProfiler) (\s@ProfilerConfigForUpdate' {} a -> s {disableProfiler = a} :: ProfilerConfigForUpdate)
+
+-- | A time interval for capturing system metrics in milliseconds. Available
+-- values are 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000
+-- (1 minute) milliseconds. The default value is 500 milliseconds.
+profilerConfigForUpdate_profilingIntervalInMilliseconds :: Lens.Lens' ProfilerConfigForUpdate (Prelude.Maybe Prelude.Integer)
+profilerConfigForUpdate_profilingIntervalInMilliseconds = Lens.lens (\ProfilerConfigForUpdate' {profilingIntervalInMilliseconds} -> profilingIntervalInMilliseconds) (\s@ProfilerConfigForUpdate' {} a -> s {profilingIntervalInMilliseconds = a} :: ProfilerConfigForUpdate)
+
+-- | Configuration information for capturing framework metrics. Available key
+-- strings for different profiling options are @DetailedProfilingConfig@,
+-- @PythonProfilingConfig@, and @DataLoaderProfilingConfig@. The following
+-- codes are configuration structures for the @ProfilingParameters@
+-- parameter. To learn more about how to configure the
+-- @ProfilingParameters@ parameter, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html Use the SageMaker and Debugger Configuration API Operations to Create, Update, and Debug Your Training Job>.
+profilerConfigForUpdate_profilingParameters :: Lens.Lens' ProfilerConfigForUpdate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+profilerConfigForUpdate_profilingParameters = Lens.lens (\ProfilerConfigForUpdate' {profilingParameters} -> profilingParameters) (\s@ProfilerConfigForUpdate' {} a -> s {profilingParameters = a} :: ProfilerConfigForUpdate) Prelude.. Lens.mapping Lens.coerced
+
+-- | Path to Amazon S3 storage location for system and framework metrics.
+profilerConfigForUpdate_s3OutputPath :: Lens.Lens' ProfilerConfigForUpdate (Prelude.Maybe Prelude.Text)
+profilerConfigForUpdate_s3OutputPath = Lens.lens (\ProfilerConfigForUpdate' {s3OutputPath} -> s3OutputPath) (\s@ProfilerConfigForUpdate' {} a -> s {s3OutputPath = a} :: ProfilerConfigForUpdate)
+
+instance Prelude.Hashable ProfilerConfigForUpdate where
+  hashWithSalt _salt ProfilerConfigForUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` disableProfiler
+      `Prelude.hashWithSalt` profilingIntervalInMilliseconds
+      `Prelude.hashWithSalt` profilingParameters
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData ProfilerConfigForUpdate where
+  rnf ProfilerConfigForUpdate' {..} =
+    Prelude.rnf disableProfiler
+      `Prelude.seq` Prelude.rnf profilingIntervalInMilliseconds
+      `Prelude.seq` Prelude.rnf profilingParameters
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON ProfilerConfigForUpdate where
+  toJSON ProfilerConfigForUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisableProfiler" Data..=)
+              Prelude.<$> disableProfiler,
+            ("ProfilingIntervalInMilliseconds" Data..=)
+              Prelude.<$> profilingIntervalInMilliseconds,
+            ("ProfilingParameters" Data..=)
+              Prelude.<$> profilingParameters,
+            ("S3OutputPath" Data..=) Prelude.<$> s3OutputPath
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProfilerRuleConfiguration.hs b/gen/Amazonka/SageMaker/Types/ProfilerRuleConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProfilerRuleConfiguration.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProfilerRuleConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProfilerRuleConfiguration 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 Amazonka.SageMaker.Types.ProcessingInstanceType
+
+-- | Configuration information for profiling rules.
+--
+-- /See:/ 'newProfilerRuleConfiguration' smart constructor.
+data ProfilerRuleConfiguration = ProfilerRuleConfiguration'
+  { -- | The instance type to deploy a custom rule for profiling a training job.
+    instanceType :: Prelude.Maybe ProcessingInstanceType,
+    -- | Path to local storage location for output of rules. Defaults to
+    -- @\/opt\/ml\/processing\/output\/rule\/@.
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Runtime configuration for rule container.
+    ruleParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Path to Amazon S3 storage location for rules.
+    s3OutputPath :: Prelude.Maybe Prelude.Text,
+    -- | The size, in GB, of the ML storage volume attached to the processing
+    -- instance.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the rule configuration. It must be unique relative to other
+    -- rule configuration names.
+    ruleConfigurationName :: Prelude.Text,
+    -- | The Amazon Elastic Container Registry Image for the managed rule
+    -- evaluation.
+    ruleEvaluatorImage :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProfilerRuleConfiguration' 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:
+--
+-- 'instanceType', 'profilerRuleConfiguration_instanceType' - The instance type to deploy a custom rule for profiling a training job.
+--
+-- 'localPath', 'profilerRuleConfiguration_localPath' - Path to local storage location for output of rules. Defaults to
+-- @\/opt\/ml\/processing\/output\/rule\/@.
+--
+-- 'ruleParameters', 'profilerRuleConfiguration_ruleParameters' - Runtime configuration for rule container.
+--
+-- 's3OutputPath', 'profilerRuleConfiguration_s3OutputPath' - Path to Amazon S3 storage location for rules.
+--
+-- 'volumeSizeInGB', 'profilerRuleConfiguration_volumeSizeInGB' - The size, in GB, of the ML storage volume attached to the processing
+-- instance.
+--
+-- 'ruleConfigurationName', 'profilerRuleConfiguration_ruleConfigurationName' - The name of the rule configuration. It must be unique relative to other
+-- rule configuration names.
+--
+-- 'ruleEvaluatorImage', 'profilerRuleConfiguration_ruleEvaluatorImage' - The Amazon Elastic Container Registry Image for the managed rule
+-- evaluation.
+newProfilerRuleConfiguration ::
+  -- | 'ruleConfigurationName'
+  Prelude.Text ->
+  -- | 'ruleEvaluatorImage'
+  Prelude.Text ->
+  ProfilerRuleConfiguration
+newProfilerRuleConfiguration
+  pRuleConfigurationName_
+  pRuleEvaluatorImage_ =
+    ProfilerRuleConfiguration'
+      { instanceType =
+          Prelude.Nothing,
+        localPath = Prelude.Nothing,
+        ruleParameters = Prelude.Nothing,
+        s3OutputPath = Prelude.Nothing,
+        volumeSizeInGB = Prelude.Nothing,
+        ruleConfigurationName = pRuleConfigurationName_,
+        ruleEvaluatorImage = pRuleEvaluatorImage_
+      }
+
+-- | The instance type to deploy a custom rule for profiling a training job.
+profilerRuleConfiguration_instanceType :: Lens.Lens' ProfilerRuleConfiguration (Prelude.Maybe ProcessingInstanceType)
+profilerRuleConfiguration_instanceType = Lens.lens (\ProfilerRuleConfiguration' {instanceType} -> instanceType) (\s@ProfilerRuleConfiguration' {} a -> s {instanceType = a} :: ProfilerRuleConfiguration)
+
+-- | Path to local storage location for output of rules. Defaults to
+-- @\/opt\/ml\/processing\/output\/rule\/@.
+profilerRuleConfiguration_localPath :: Lens.Lens' ProfilerRuleConfiguration (Prelude.Maybe Prelude.Text)
+profilerRuleConfiguration_localPath = Lens.lens (\ProfilerRuleConfiguration' {localPath} -> localPath) (\s@ProfilerRuleConfiguration' {} a -> s {localPath = a} :: ProfilerRuleConfiguration)
+
+-- | Runtime configuration for rule container.
+profilerRuleConfiguration_ruleParameters :: Lens.Lens' ProfilerRuleConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+profilerRuleConfiguration_ruleParameters = Lens.lens (\ProfilerRuleConfiguration' {ruleParameters} -> ruleParameters) (\s@ProfilerRuleConfiguration' {} a -> s {ruleParameters = a} :: ProfilerRuleConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Path to Amazon S3 storage location for rules.
+profilerRuleConfiguration_s3OutputPath :: Lens.Lens' ProfilerRuleConfiguration (Prelude.Maybe Prelude.Text)
+profilerRuleConfiguration_s3OutputPath = Lens.lens (\ProfilerRuleConfiguration' {s3OutputPath} -> s3OutputPath) (\s@ProfilerRuleConfiguration' {} a -> s {s3OutputPath = a} :: ProfilerRuleConfiguration)
+
+-- | The size, in GB, of the ML storage volume attached to the processing
+-- instance.
+profilerRuleConfiguration_volumeSizeInGB :: Lens.Lens' ProfilerRuleConfiguration (Prelude.Maybe Prelude.Natural)
+profilerRuleConfiguration_volumeSizeInGB = Lens.lens (\ProfilerRuleConfiguration' {volumeSizeInGB} -> volumeSizeInGB) (\s@ProfilerRuleConfiguration' {} a -> s {volumeSizeInGB = a} :: ProfilerRuleConfiguration)
+
+-- | The name of the rule configuration. It must be unique relative to other
+-- rule configuration names.
+profilerRuleConfiguration_ruleConfigurationName :: Lens.Lens' ProfilerRuleConfiguration Prelude.Text
+profilerRuleConfiguration_ruleConfigurationName = Lens.lens (\ProfilerRuleConfiguration' {ruleConfigurationName} -> ruleConfigurationName) (\s@ProfilerRuleConfiguration' {} a -> s {ruleConfigurationName = a} :: ProfilerRuleConfiguration)
+
+-- | The Amazon Elastic Container Registry Image for the managed rule
+-- evaluation.
+profilerRuleConfiguration_ruleEvaluatorImage :: Lens.Lens' ProfilerRuleConfiguration Prelude.Text
+profilerRuleConfiguration_ruleEvaluatorImage = Lens.lens (\ProfilerRuleConfiguration' {ruleEvaluatorImage} -> ruleEvaluatorImage) (\s@ProfilerRuleConfiguration' {} a -> s {ruleEvaluatorImage = a} :: ProfilerRuleConfiguration)
+
+instance Data.FromJSON ProfilerRuleConfiguration where
+  parseJSON =
+    Data.withObject
+      "ProfilerRuleConfiguration"
+      ( \x ->
+          ProfilerRuleConfiguration'
+            Prelude.<$> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..:? "RuleParameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "S3OutputPath")
+            Prelude.<*> (x Data..:? "VolumeSizeInGB")
+            Prelude.<*> (x Data..: "RuleConfigurationName")
+            Prelude.<*> (x Data..: "RuleEvaluatorImage")
+      )
+
+instance Prelude.Hashable ProfilerRuleConfiguration where
+  hashWithSalt _salt ProfilerRuleConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` ruleParameters
+      `Prelude.hashWithSalt` s3OutputPath
+      `Prelude.hashWithSalt` volumeSizeInGB
+      `Prelude.hashWithSalt` ruleConfigurationName
+      `Prelude.hashWithSalt` ruleEvaluatorImage
+
+instance Prelude.NFData ProfilerRuleConfiguration where
+  rnf ProfilerRuleConfiguration' {..} =
+    Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf ruleParameters
+      `Prelude.seq` Prelude.rnf s3OutputPath
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+      `Prelude.seq` Prelude.rnf ruleConfigurationName
+      `Prelude.seq` Prelude.rnf ruleEvaluatorImage
+
+instance Data.ToJSON ProfilerRuleConfiguration where
+  toJSON ProfilerRuleConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("LocalPath" Data..=) Prelude.<$> localPath,
+            ("RuleParameters" Data..=)
+              Prelude.<$> ruleParameters,
+            ("S3OutputPath" Data..=) Prelude.<$> s3OutputPath,
+            ("VolumeSizeInGB" Data..=)
+              Prelude.<$> volumeSizeInGB,
+            Prelude.Just
+              ( "RuleConfigurationName"
+                  Data..= ruleConfigurationName
+              ),
+            Prelude.Just
+              ("RuleEvaluatorImage" Data..= ruleEvaluatorImage)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ProfilerRuleEvaluationStatus.hs b/gen/Amazonka/SageMaker/Types/ProfilerRuleEvaluationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProfilerRuleEvaluationStatus.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProfilerRuleEvaluationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProfilerRuleEvaluationStatus 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 Amazonka.SageMaker.Types.RuleEvaluationStatus
+
+-- | Information about the status of the rule evaluation.
+--
+-- /See:/ 'newProfilerRuleEvaluationStatus' smart constructor.
+data ProfilerRuleEvaluationStatus = ProfilerRuleEvaluationStatus'
+  { -- | Timestamp when the rule evaluation status was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the rule configuration.
+    ruleConfigurationName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the rule evaluation job.
+    ruleEvaluationJobArn :: Prelude.Maybe Prelude.Text,
+    -- | Status of the rule evaluation.
+    ruleEvaluationStatus :: Prelude.Maybe RuleEvaluationStatus,
+    -- | Details from the rule evaluation.
+    statusDetails :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProfilerRuleEvaluationStatus' 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:
+--
+-- 'lastModifiedTime', 'profilerRuleEvaluationStatus_lastModifiedTime' - Timestamp when the rule evaluation status was last modified.
+--
+-- 'ruleConfigurationName', 'profilerRuleEvaluationStatus_ruleConfigurationName' - The name of the rule configuration.
+--
+-- 'ruleEvaluationJobArn', 'profilerRuleEvaluationStatus_ruleEvaluationJobArn' - The Amazon Resource Name (ARN) of the rule evaluation job.
+--
+-- 'ruleEvaluationStatus', 'profilerRuleEvaluationStatus_ruleEvaluationStatus' - Status of the rule evaluation.
+--
+-- 'statusDetails', 'profilerRuleEvaluationStatus_statusDetails' - Details from the rule evaluation.
+newProfilerRuleEvaluationStatus ::
+  ProfilerRuleEvaluationStatus
+newProfilerRuleEvaluationStatus =
+  ProfilerRuleEvaluationStatus'
+    { lastModifiedTime =
+        Prelude.Nothing,
+      ruleConfigurationName = Prelude.Nothing,
+      ruleEvaluationJobArn = Prelude.Nothing,
+      ruleEvaluationStatus = Prelude.Nothing,
+      statusDetails = Prelude.Nothing
+    }
+
+-- | Timestamp when the rule evaluation status was last modified.
+profilerRuleEvaluationStatus_lastModifiedTime :: Lens.Lens' ProfilerRuleEvaluationStatus (Prelude.Maybe Prelude.UTCTime)
+profilerRuleEvaluationStatus_lastModifiedTime = Lens.lens (\ProfilerRuleEvaluationStatus' {lastModifiedTime} -> lastModifiedTime) (\s@ProfilerRuleEvaluationStatus' {} a -> s {lastModifiedTime = a} :: ProfilerRuleEvaluationStatus) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the rule configuration.
+profilerRuleEvaluationStatus_ruleConfigurationName :: Lens.Lens' ProfilerRuleEvaluationStatus (Prelude.Maybe Prelude.Text)
+profilerRuleEvaluationStatus_ruleConfigurationName = Lens.lens (\ProfilerRuleEvaluationStatus' {ruleConfigurationName} -> ruleConfigurationName) (\s@ProfilerRuleEvaluationStatus' {} a -> s {ruleConfigurationName = a} :: ProfilerRuleEvaluationStatus)
+
+-- | The Amazon Resource Name (ARN) of the rule evaluation job.
+profilerRuleEvaluationStatus_ruleEvaluationJobArn :: Lens.Lens' ProfilerRuleEvaluationStatus (Prelude.Maybe Prelude.Text)
+profilerRuleEvaluationStatus_ruleEvaluationJobArn = Lens.lens (\ProfilerRuleEvaluationStatus' {ruleEvaluationJobArn} -> ruleEvaluationJobArn) (\s@ProfilerRuleEvaluationStatus' {} a -> s {ruleEvaluationJobArn = a} :: ProfilerRuleEvaluationStatus)
+
+-- | Status of the rule evaluation.
+profilerRuleEvaluationStatus_ruleEvaluationStatus :: Lens.Lens' ProfilerRuleEvaluationStatus (Prelude.Maybe RuleEvaluationStatus)
+profilerRuleEvaluationStatus_ruleEvaluationStatus = Lens.lens (\ProfilerRuleEvaluationStatus' {ruleEvaluationStatus} -> ruleEvaluationStatus) (\s@ProfilerRuleEvaluationStatus' {} a -> s {ruleEvaluationStatus = a} :: ProfilerRuleEvaluationStatus)
+
+-- | Details from the rule evaluation.
+profilerRuleEvaluationStatus_statusDetails :: Lens.Lens' ProfilerRuleEvaluationStatus (Prelude.Maybe Prelude.Text)
+profilerRuleEvaluationStatus_statusDetails = Lens.lens (\ProfilerRuleEvaluationStatus' {statusDetails} -> statusDetails) (\s@ProfilerRuleEvaluationStatus' {} a -> s {statusDetails = a} :: ProfilerRuleEvaluationStatus)
+
+instance Data.FromJSON ProfilerRuleEvaluationStatus where
+  parseJSON =
+    Data.withObject
+      "ProfilerRuleEvaluationStatus"
+      ( \x ->
+          ProfilerRuleEvaluationStatus'
+            Prelude.<$> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "RuleConfigurationName")
+            Prelude.<*> (x Data..:? "RuleEvaluationJobArn")
+            Prelude.<*> (x Data..:? "RuleEvaluationStatus")
+            Prelude.<*> (x Data..:? "StatusDetails")
+      )
+
+instance
+  Prelude.Hashable
+    ProfilerRuleEvaluationStatus
+  where
+  hashWithSalt _salt ProfilerRuleEvaluationStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` ruleConfigurationName
+      `Prelude.hashWithSalt` ruleEvaluationJobArn
+      `Prelude.hashWithSalt` ruleEvaluationStatus
+      `Prelude.hashWithSalt` statusDetails
+
+instance Prelude.NFData ProfilerRuleEvaluationStatus where
+  rnf ProfilerRuleEvaluationStatus' {..} =
+    Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf ruleConfigurationName
+      `Prelude.seq` Prelude.rnf ruleEvaluationJobArn
+      `Prelude.seq` Prelude.rnf ruleEvaluationStatus
+      `Prelude.seq` Prelude.rnf statusDetails
diff --git a/gen/Amazonka/SageMaker/Types/ProfilingStatus.hs b/gen/Amazonka/SageMaker/Types/ProfilingStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProfilingStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProfilingStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProfilingStatus
+  ( ProfilingStatus
+      ( ..,
+        ProfilingStatus_Disabled,
+        ProfilingStatus_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProfilingStatus = ProfilingStatus'
+  { fromProfilingStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProfilingStatus_Disabled :: ProfilingStatus
+pattern ProfilingStatus_Disabled = ProfilingStatus' "Disabled"
+
+pattern ProfilingStatus_Enabled :: ProfilingStatus
+pattern ProfilingStatus_Enabled = ProfilingStatus' "Enabled"
+
+{-# COMPLETE
+  ProfilingStatus_Disabled,
+  ProfilingStatus_Enabled,
+  ProfilingStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Project.hs b/gen/Amazonka/SageMaker/Types/Project.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Project.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Project
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Project 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 Amazonka.SageMaker.Types.ProjectStatus
+import Amazonka.SageMaker.Types.ServiceCatalogProvisionedProductDetails
+import Amazonka.SageMaker.Types.ServiceCatalogProvisioningDetails
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.UserContext
+
+-- | The properties of a project as returned by the Search API.
+--
+-- /See:/ 'newProject' smart constructor.
+data Project = Project'
+  { -- | Who created the project.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | A timestamp specifying when the project was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | A timestamp container for when the project was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the project.
+    projectArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the project.
+    projectDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the project.
+    projectId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the project.
+    projectName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the project.
+    projectStatus :: Prelude.Maybe ProjectStatus,
+    serviceCatalogProvisionedProductDetails :: Prelude.Maybe ServiceCatalogProvisionedProductDetails,
+    serviceCatalogProvisioningDetails :: Prelude.Maybe ServiceCatalogProvisioningDetails,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Project' 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:
+--
+-- 'createdBy', 'project_createdBy' - Who created the project.
+--
+-- 'creationTime', 'project_creationTime' - A timestamp specifying when the project was created.
+--
+-- 'lastModifiedBy', 'project_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'project_lastModifiedTime' - A timestamp container for when the project was last modified.
+--
+-- 'projectArn', 'project_projectArn' - The Amazon Resource Name (ARN) of the project.
+--
+-- 'projectDescription', 'project_projectDescription' - The description of the project.
+--
+-- 'projectId', 'project_projectId' - The ID of the project.
+--
+-- 'projectName', 'project_projectName' - The name of the project.
+--
+-- 'projectStatus', 'project_projectStatus' - The status of the project.
+--
+-- 'serviceCatalogProvisionedProductDetails', 'project_serviceCatalogProvisionedProductDetails' - Undocumented member.
+--
+-- 'serviceCatalogProvisioningDetails', 'project_serviceCatalogProvisioningDetails' - Undocumented member.
+--
+-- 'tags', 'project_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+newProject ::
+  Project
+newProject =
+  Project'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      projectArn = Prelude.Nothing,
+      projectDescription = Prelude.Nothing,
+      projectId = Prelude.Nothing,
+      projectName = Prelude.Nothing,
+      projectStatus = Prelude.Nothing,
+      serviceCatalogProvisionedProductDetails =
+        Prelude.Nothing,
+      serviceCatalogProvisioningDetails = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Who created the project.
+project_createdBy :: Lens.Lens' Project (Prelude.Maybe UserContext)
+project_createdBy = Lens.lens (\Project' {createdBy} -> createdBy) (\s@Project' {} a -> s {createdBy = a} :: Project)
+
+-- | A timestamp specifying when the project was created.
+project_creationTime :: Lens.Lens' Project (Prelude.Maybe Prelude.UTCTime)
+project_creationTime = Lens.lens (\Project' {creationTime} -> creationTime) (\s@Project' {} a -> s {creationTime = a} :: Project) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+project_lastModifiedBy :: Lens.Lens' Project (Prelude.Maybe UserContext)
+project_lastModifiedBy = Lens.lens (\Project' {lastModifiedBy} -> lastModifiedBy) (\s@Project' {} a -> s {lastModifiedBy = a} :: Project)
+
+-- | A timestamp container for when the project was last modified.
+project_lastModifiedTime :: Lens.Lens' Project (Prelude.Maybe Prelude.UTCTime)
+project_lastModifiedTime = Lens.lens (\Project' {lastModifiedTime} -> lastModifiedTime) (\s@Project' {} a -> s {lastModifiedTime = a} :: Project) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the project.
+project_projectArn :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
+project_projectArn = Lens.lens (\Project' {projectArn} -> projectArn) (\s@Project' {} a -> s {projectArn = a} :: Project)
+
+-- | The description of the project.
+project_projectDescription :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
+project_projectDescription = Lens.lens (\Project' {projectDescription} -> projectDescription) (\s@Project' {} a -> s {projectDescription = a} :: Project)
+
+-- | The ID of the project.
+project_projectId :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
+project_projectId = Lens.lens (\Project' {projectId} -> projectId) (\s@Project' {} a -> s {projectId = a} :: Project)
+
+-- | The name of the project.
+project_projectName :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
+project_projectName = Lens.lens (\Project' {projectName} -> projectName) (\s@Project' {} a -> s {projectName = a} :: Project)
+
+-- | The status of the project.
+project_projectStatus :: Lens.Lens' Project (Prelude.Maybe ProjectStatus)
+project_projectStatus = Lens.lens (\Project' {projectStatus} -> projectStatus) (\s@Project' {} a -> s {projectStatus = a} :: Project)
+
+-- | Undocumented member.
+project_serviceCatalogProvisionedProductDetails :: Lens.Lens' Project (Prelude.Maybe ServiceCatalogProvisionedProductDetails)
+project_serviceCatalogProvisionedProductDetails = Lens.lens (\Project' {serviceCatalogProvisionedProductDetails} -> serviceCatalogProvisionedProductDetails) (\s@Project' {} a -> s {serviceCatalogProvisionedProductDetails = a} :: Project)
+
+-- | Undocumented member.
+project_serviceCatalogProvisioningDetails :: Lens.Lens' Project (Prelude.Maybe ServiceCatalogProvisioningDetails)
+project_serviceCatalogProvisioningDetails = Lens.lens (\Project' {serviceCatalogProvisioningDetails} -> serviceCatalogProvisioningDetails) (\s@Project' {} a -> s {serviceCatalogProvisioningDetails = a} :: Project)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+project_tags :: Lens.Lens' Project (Prelude.Maybe [Tag])
+project_tags = Lens.lens (\Project' {tags} -> tags) (\s@Project' {} a -> s {tags = a} :: Project) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Project where
+  parseJSON =
+    Data.withObject
+      "Project"
+      ( \x ->
+          Project'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ProjectArn")
+            Prelude.<*> (x Data..:? "ProjectDescription")
+            Prelude.<*> (x Data..:? "ProjectId")
+            Prelude.<*> (x Data..:? "ProjectName")
+            Prelude.<*> (x Data..:? "ProjectStatus")
+            Prelude.<*> ( x
+                            Data..:? "ServiceCatalogProvisionedProductDetails"
+                        )
+            Prelude.<*> (x Data..:? "ServiceCatalogProvisioningDetails")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Project where
+  hashWithSalt _salt Project' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` projectArn
+      `Prelude.hashWithSalt` projectDescription
+      `Prelude.hashWithSalt` projectId
+      `Prelude.hashWithSalt` projectName
+      `Prelude.hashWithSalt` projectStatus
+      `Prelude.hashWithSalt` serviceCatalogProvisionedProductDetails
+      `Prelude.hashWithSalt` serviceCatalogProvisioningDetails
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Project where
+  rnf Project' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf projectArn
+      `Prelude.seq` Prelude.rnf projectDescription
+      `Prelude.seq` Prelude.rnf projectId
+      `Prelude.seq` Prelude.rnf projectName
+      `Prelude.seq` Prelude.rnf projectStatus
+      `Prelude.seq` Prelude.rnf
+        serviceCatalogProvisionedProductDetails
+      `Prelude.seq` Prelude.rnf serviceCatalogProvisioningDetails
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/SageMaker/Types/ProjectSortBy.hs b/gen/Amazonka/SageMaker/Types/ProjectSortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProjectSortBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProjectSortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProjectSortBy
+  ( ProjectSortBy
+      ( ..,
+        ProjectSortBy_CreationTime,
+        ProjectSortBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProjectSortBy = ProjectSortBy'
+  { fromProjectSortBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProjectSortBy_CreationTime :: ProjectSortBy
+pattern ProjectSortBy_CreationTime = ProjectSortBy' "CreationTime"
+
+pattern ProjectSortBy_Name :: ProjectSortBy
+pattern ProjectSortBy_Name = ProjectSortBy' "Name"
+
+{-# COMPLETE
+  ProjectSortBy_CreationTime,
+  ProjectSortBy_Name,
+  ProjectSortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProjectSortOrder.hs b/gen/Amazonka/SageMaker/Types/ProjectSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProjectSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProjectSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProjectSortOrder
+  ( ProjectSortOrder
+      ( ..,
+        ProjectSortOrder_Ascending,
+        ProjectSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProjectSortOrder = ProjectSortOrder'
+  { fromProjectSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProjectSortOrder_Ascending :: ProjectSortOrder
+pattern ProjectSortOrder_Ascending = ProjectSortOrder' "Ascending"
+
+pattern ProjectSortOrder_Descending :: ProjectSortOrder
+pattern ProjectSortOrder_Descending = ProjectSortOrder' "Descending"
+
+{-# COMPLETE
+  ProjectSortOrder_Ascending,
+  ProjectSortOrder_Descending,
+  ProjectSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProjectStatus.hs b/gen/Amazonka/SageMaker/Types/ProjectStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProjectStatus.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ProjectStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProjectStatus
+  ( ProjectStatus
+      ( ..,
+        ProjectStatus_CreateCompleted,
+        ProjectStatus_CreateFailed,
+        ProjectStatus_CreateInProgress,
+        ProjectStatus_DeleteCompleted,
+        ProjectStatus_DeleteFailed,
+        ProjectStatus_DeleteInProgress,
+        ProjectStatus_Pending,
+        ProjectStatus_UpdateCompleted,
+        ProjectStatus_UpdateFailed,
+        ProjectStatus_UpdateInProgress
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProjectStatus = ProjectStatus'
+  { fromProjectStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ProjectStatus_CreateCompleted :: ProjectStatus
+pattern ProjectStatus_CreateCompleted = ProjectStatus' "CreateCompleted"
+
+pattern ProjectStatus_CreateFailed :: ProjectStatus
+pattern ProjectStatus_CreateFailed = ProjectStatus' "CreateFailed"
+
+pattern ProjectStatus_CreateInProgress :: ProjectStatus
+pattern ProjectStatus_CreateInProgress = ProjectStatus' "CreateInProgress"
+
+pattern ProjectStatus_DeleteCompleted :: ProjectStatus
+pattern ProjectStatus_DeleteCompleted = ProjectStatus' "DeleteCompleted"
+
+pattern ProjectStatus_DeleteFailed :: ProjectStatus
+pattern ProjectStatus_DeleteFailed = ProjectStatus' "DeleteFailed"
+
+pattern ProjectStatus_DeleteInProgress :: ProjectStatus
+pattern ProjectStatus_DeleteInProgress = ProjectStatus' "DeleteInProgress"
+
+pattern ProjectStatus_Pending :: ProjectStatus
+pattern ProjectStatus_Pending = ProjectStatus' "Pending"
+
+pattern ProjectStatus_UpdateCompleted :: ProjectStatus
+pattern ProjectStatus_UpdateCompleted = ProjectStatus' "UpdateCompleted"
+
+pattern ProjectStatus_UpdateFailed :: ProjectStatus
+pattern ProjectStatus_UpdateFailed = ProjectStatus' "UpdateFailed"
+
+pattern ProjectStatus_UpdateInProgress :: ProjectStatus
+pattern ProjectStatus_UpdateInProgress = ProjectStatus' "UpdateInProgress"
+
+{-# COMPLETE
+  ProjectStatus_CreateCompleted,
+  ProjectStatus_CreateFailed,
+  ProjectStatus_CreateInProgress,
+  ProjectStatus_DeleteCompleted,
+  ProjectStatus_DeleteFailed,
+  ProjectStatus_DeleteInProgress,
+  ProjectStatus_Pending,
+  ProjectStatus_UpdateCompleted,
+  ProjectStatus_UpdateFailed,
+  ProjectStatus_UpdateInProgress,
+  ProjectStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ProjectSummary.hs b/gen/Amazonka/SageMaker/Types/ProjectSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProjectSummary.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProjectSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProjectSummary 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 Amazonka.SageMaker.Types.ProjectStatus
+
+-- | Information about a project.
+--
+-- /See:/ 'newProjectSummary' smart constructor.
+data ProjectSummary = ProjectSummary'
+  { -- | The description of the project.
+    projectDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name of the project.
+    projectName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the project.
+    projectArn :: Prelude.Text,
+    -- | The ID of the project.
+    projectId :: Prelude.Text,
+    -- | The time that the project was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the project.
+    projectStatus :: ProjectStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProjectSummary' 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:
+--
+-- 'projectDescription', 'projectSummary_projectDescription' - The description of the project.
+--
+-- 'projectName', 'projectSummary_projectName' - The name of the project.
+--
+-- 'projectArn', 'projectSummary_projectArn' - The Amazon Resource Name (ARN) of the project.
+--
+-- 'projectId', 'projectSummary_projectId' - The ID of the project.
+--
+-- 'creationTime', 'projectSummary_creationTime' - The time that the project was created.
+--
+-- 'projectStatus', 'projectSummary_projectStatus' - The status of the project.
+newProjectSummary ::
+  -- | 'projectName'
+  Prelude.Text ->
+  -- | 'projectArn'
+  Prelude.Text ->
+  -- | 'projectId'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'projectStatus'
+  ProjectStatus ->
+  ProjectSummary
+newProjectSummary
+  pProjectName_
+  pProjectArn_
+  pProjectId_
+  pCreationTime_
+  pProjectStatus_ =
+    ProjectSummary'
+      { projectDescription =
+          Prelude.Nothing,
+        projectName = pProjectName_,
+        projectArn = pProjectArn_,
+        projectId = pProjectId_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        projectStatus = pProjectStatus_
+      }
+
+-- | The description of the project.
+projectSummary_projectDescription :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Text)
+projectSummary_projectDescription = Lens.lens (\ProjectSummary' {projectDescription} -> projectDescription) (\s@ProjectSummary' {} a -> s {projectDescription = a} :: ProjectSummary)
+
+-- | The name of the project.
+projectSummary_projectName :: Lens.Lens' ProjectSummary Prelude.Text
+projectSummary_projectName = Lens.lens (\ProjectSummary' {projectName} -> projectName) (\s@ProjectSummary' {} a -> s {projectName = a} :: ProjectSummary)
+
+-- | The Amazon Resource Name (ARN) of the project.
+projectSummary_projectArn :: Lens.Lens' ProjectSummary Prelude.Text
+projectSummary_projectArn = Lens.lens (\ProjectSummary' {projectArn} -> projectArn) (\s@ProjectSummary' {} a -> s {projectArn = a} :: ProjectSummary)
+
+-- | The ID of the project.
+projectSummary_projectId :: Lens.Lens' ProjectSummary Prelude.Text
+projectSummary_projectId = Lens.lens (\ProjectSummary' {projectId} -> projectId) (\s@ProjectSummary' {} a -> s {projectId = a} :: ProjectSummary)
+
+-- | The time that the project was created.
+projectSummary_creationTime :: Lens.Lens' ProjectSummary Prelude.UTCTime
+projectSummary_creationTime = Lens.lens (\ProjectSummary' {creationTime} -> creationTime) (\s@ProjectSummary' {} a -> s {creationTime = a} :: ProjectSummary) Prelude.. Data._Time
+
+-- | The status of the project.
+projectSummary_projectStatus :: Lens.Lens' ProjectSummary ProjectStatus
+projectSummary_projectStatus = Lens.lens (\ProjectSummary' {projectStatus} -> projectStatus) (\s@ProjectSummary' {} a -> s {projectStatus = a} :: ProjectSummary)
+
+instance Data.FromJSON ProjectSummary where
+  parseJSON =
+    Data.withObject
+      "ProjectSummary"
+      ( \x ->
+          ProjectSummary'
+            Prelude.<$> (x Data..:? "ProjectDescription")
+            Prelude.<*> (x Data..: "ProjectName")
+            Prelude.<*> (x Data..: "ProjectArn")
+            Prelude.<*> (x Data..: "ProjectId")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "ProjectStatus")
+      )
+
+instance Prelude.Hashable ProjectSummary where
+  hashWithSalt _salt ProjectSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` projectDescription
+      `Prelude.hashWithSalt` projectName
+      `Prelude.hashWithSalt` projectArn
+      `Prelude.hashWithSalt` projectId
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` projectStatus
+
+instance Prelude.NFData ProjectSummary where
+  rnf ProjectSummary' {..} =
+    Prelude.rnf projectDescription
+      `Prelude.seq` Prelude.rnf projectName
+      `Prelude.seq` Prelude.rnf projectArn
+      `Prelude.seq` Prelude.rnf projectId
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf projectStatus
diff --git a/gen/Amazonka/SageMaker/Types/PropertyNameQuery.hs b/gen/Amazonka/SageMaker/Types/PropertyNameQuery.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PropertyNameQuery.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PropertyNameQuery
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PropertyNameQuery 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
+
+-- | Part of the @SuggestionQuery@ type. Specifies a hint for retrieving
+-- property names that begin with the specified text.
+--
+-- /See:/ 'newPropertyNameQuery' smart constructor.
+data PropertyNameQuery = PropertyNameQuery'
+  { -- | Text that begins a property\'s name.
+    propertyNameHint :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PropertyNameQuery' 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:
+--
+-- 'propertyNameHint', 'propertyNameQuery_propertyNameHint' - Text that begins a property\'s name.
+newPropertyNameQuery ::
+  -- | 'propertyNameHint'
+  Prelude.Text ->
+  PropertyNameQuery
+newPropertyNameQuery pPropertyNameHint_ =
+  PropertyNameQuery'
+    { propertyNameHint =
+        pPropertyNameHint_
+    }
+
+-- | Text that begins a property\'s name.
+propertyNameQuery_propertyNameHint :: Lens.Lens' PropertyNameQuery Prelude.Text
+propertyNameQuery_propertyNameHint = Lens.lens (\PropertyNameQuery' {propertyNameHint} -> propertyNameHint) (\s@PropertyNameQuery' {} a -> s {propertyNameHint = a} :: PropertyNameQuery)
+
+instance Prelude.Hashable PropertyNameQuery where
+  hashWithSalt _salt PropertyNameQuery' {..} =
+    _salt `Prelude.hashWithSalt` propertyNameHint
+
+instance Prelude.NFData PropertyNameQuery where
+  rnf PropertyNameQuery' {..} =
+    Prelude.rnf propertyNameHint
+
+instance Data.ToJSON PropertyNameQuery where
+  toJSON PropertyNameQuery' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("PropertyNameHint" Data..= propertyNameHint)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/PropertyNameSuggestion.hs b/gen/Amazonka/SageMaker/Types/PropertyNameSuggestion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PropertyNameSuggestion.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PropertyNameSuggestion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PropertyNameSuggestion 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
+
+-- | A property name returned from a @GetSearchSuggestions@ call that
+-- specifies a value in the @PropertyNameQuery@ field.
+--
+-- /See:/ 'newPropertyNameSuggestion' smart constructor.
+data PropertyNameSuggestion = PropertyNameSuggestion'
+  { -- | A suggested property name based on what you entered in the search
+    -- textbox in the Amazon SageMaker console.
+    propertyName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PropertyNameSuggestion' 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:
+--
+-- 'propertyName', 'propertyNameSuggestion_propertyName' - A suggested property name based on what you entered in the search
+-- textbox in the Amazon SageMaker console.
+newPropertyNameSuggestion ::
+  PropertyNameSuggestion
+newPropertyNameSuggestion =
+  PropertyNameSuggestion'
+    { propertyName =
+        Prelude.Nothing
+    }
+
+-- | A suggested property name based on what you entered in the search
+-- textbox in the Amazon SageMaker console.
+propertyNameSuggestion_propertyName :: Lens.Lens' PropertyNameSuggestion (Prelude.Maybe Prelude.Text)
+propertyNameSuggestion_propertyName = Lens.lens (\PropertyNameSuggestion' {propertyName} -> propertyName) (\s@PropertyNameSuggestion' {} a -> s {propertyName = a} :: PropertyNameSuggestion)
+
+instance Data.FromJSON PropertyNameSuggestion where
+  parseJSON =
+    Data.withObject
+      "PropertyNameSuggestion"
+      ( \x ->
+          PropertyNameSuggestion'
+            Prelude.<$> (x Data..:? "PropertyName")
+      )
+
+instance Prelude.Hashable PropertyNameSuggestion where
+  hashWithSalt _salt PropertyNameSuggestion' {..} =
+    _salt `Prelude.hashWithSalt` propertyName
+
+instance Prelude.NFData PropertyNameSuggestion where
+  rnf PropertyNameSuggestion' {..} =
+    Prelude.rnf propertyName
diff --git a/gen/Amazonka/SageMaker/Types/ProvisioningParameter.hs b/gen/Amazonka/SageMaker/Types/ProvisioningParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ProvisioningParameter.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ProvisioningParameter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ProvisioningParameter 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
+
+-- | A key value pair used when you provision a project as a service catalog
+-- product. For information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+--
+-- /See:/ 'newProvisioningParameter' smart constructor.
+data ProvisioningParameter = ProvisioningParameter'
+  { -- | The key that identifies a provisioning parameter.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The value of the provisioning parameter.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProvisioningParameter' 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:
+--
+-- 'key', 'provisioningParameter_key' - The key that identifies a provisioning parameter.
+--
+-- 'value', 'provisioningParameter_value' - The value of the provisioning parameter.
+newProvisioningParameter ::
+  ProvisioningParameter
+newProvisioningParameter =
+  ProvisioningParameter'
+    { key = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The key that identifies a provisioning parameter.
+provisioningParameter_key :: Lens.Lens' ProvisioningParameter (Prelude.Maybe Prelude.Text)
+provisioningParameter_key = Lens.lens (\ProvisioningParameter' {key} -> key) (\s@ProvisioningParameter' {} a -> s {key = a} :: ProvisioningParameter)
+
+-- | The value of the provisioning parameter.
+provisioningParameter_value :: Lens.Lens' ProvisioningParameter (Prelude.Maybe Prelude.Text)
+provisioningParameter_value = Lens.lens (\ProvisioningParameter' {value} -> value) (\s@ProvisioningParameter' {} a -> s {value = a} :: ProvisioningParameter)
+
+instance Data.FromJSON ProvisioningParameter where
+  parseJSON =
+    Data.withObject
+      "ProvisioningParameter"
+      ( \x ->
+          ProvisioningParameter'
+            Prelude.<$> (x Data..:? "Key")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable ProvisioningParameter where
+  hashWithSalt _salt ProvisioningParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ProvisioningParameter where
+  rnf ProvisioningParameter' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON ProvisioningParameter where
+  toJSON ProvisioningParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Key" Data..=) Prelude.<$> key,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/PublicWorkforceTaskPrice.hs b/gen/Amazonka/SageMaker/Types/PublicWorkforceTaskPrice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/PublicWorkforceTaskPrice.hs
@@ -0,0 +1,287 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PublicWorkforceTaskPrice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.PublicWorkforceTaskPrice 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 Amazonka.SageMaker.Types.USD
+
+-- | Defines the amount of money paid to an Amazon Mechanical Turk worker for
+-- each task performed.
+--
+-- Use one of the following prices for bounding box tasks. Prices are in US
+-- dollars and should be based on the complexity of the task; the longer it
+-- takes in your initial testing, the more you should offer.
+--
+-- -   0.036
+--
+-- -   0.048
+--
+-- -   0.060
+--
+-- -   0.072
+--
+-- -   0.120
+--
+-- -   0.240
+--
+-- -   0.360
+--
+-- -   0.480
+--
+-- -   0.600
+--
+-- -   0.720
+--
+-- -   0.840
+--
+-- -   0.960
+--
+-- -   1.080
+--
+-- -   1.200
+--
+-- Use one of the following prices for image classification, text
+-- classification, and custom tasks. Prices are in US dollars.
+--
+-- -   0.012
+--
+-- -   0.024
+--
+-- -   0.036
+--
+-- -   0.048
+--
+-- -   0.060
+--
+-- -   0.072
+--
+-- -   0.120
+--
+-- -   0.240
+--
+-- -   0.360
+--
+-- -   0.480
+--
+-- -   0.600
+--
+-- -   0.720
+--
+-- -   0.840
+--
+-- -   0.960
+--
+-- -   1.080
+--
+-- -   1.200
+--
+-- Use one of the following prices for semantic segmentation tasks. Prices
+-- are in US dollars.
+--
+-- -   0.840
+--
+-- -   0.960
+--
+-- -   1.080
+--
+-- -   1.200
+--
+-- Use one of the following prices for Textract AnalyzeDocument Important
+-- Form Key Amazon Augmented AI review tasks. Prices are in US dollars.
+--
+-- -   2.400
+--
+-- -   2.280
+--
+-- -   2.160
+--
+-- -   2.040
+--
+-- -   1.920
+--
+-- -   1.800
+--
+-- -   1.680
+--
+-- -   1.560
+--
+-- -   1.440
+--
+-- -   1.320
+--
+-- -   1.200
+--
+-- -   1.080
+--
+-- -   0.960
+--
+-- -   0.840
+--
+-- -   0.720
+--
+-- -   0.600
+--
+-- -   0.480
+--
+-- -   0.360
+--
+-- -   0.240
+--
+-- -   0.120
+--
+-- -   0.072
+--
+-- -   0.060
+--
+-- -   0.048
+--
+-- -   0.036
+--
+-- -   0.024
+--
+-- -   0.012
+--
+-- Use one of the following prices for Rekognition DetectModerationLabels
+-- Amazon Augmented AI review tasks. Prices are in US dollars.
+--
+-- -   1.200
+--
+-- -   1.080
+--
+-- -   0.960
+--
+-- -   0.840
+--
+-- -   0.720
+--
+-- -   0.600
+--
+-- -   0.480
+--
+-- -   0.360
+--
+-- -   0.240
+--
+-- -   0.120
+--
+-- -   0.072
+--
+-- -   0.060
+--
+-- -   0.048
+--
+-- -   0.036
+--
+-- -   0.024
+--
+-- -   0.012
+--
+-- Use one of the following prices for Amazon Augmented AI custom human
+-- review tasks. Prices are in US dollars.
+--
+-- -   1.200
+--
+-- -   1.080
+--
+-- -   0.960
+--
+-- -   0.840
+--
+-- -   0.720
+--
+-- -   0.600
+--
+-- -   0.480
+--
+-- -   0.360
+--
+-- -   0.240
+--
+-- -   0.120
+--
+-- -   0.072
+--
+-- -   0.060
+--
+-- -   0.048
+--
+-- -   0.036
+--
+-- -   0.024
+--
+-- -   0.012
+--
+-- /See:/ 'newPublicWorkforceTaskPrice' smart constructor.
+data PublicWorkforceTaskPrice = PublicWorkforceTaskPrice'
+  { -- | Defines the amount of money paid to an Amazon Mechanical Turk worker in
+    -- United States dollars.
+    amountInUsd :: Prelude.Maybe USD
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PublicWorkforceTaskPrice' 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:
+--
+-- 'amountInUsd', 'publicWorkforceTaskPrice_amountInUsd' - Defines the amount of money paid to an Amazon Mechanical Turk worker in
+-- United States dollars.
+newPublicWorkforceTaskPrice ::
+  PublicWorkforceTaskPrice
+newPublicWorkforceTaskPrice =
+  PublicWorkforceTaskPrice'
+    { amountInUsd =
+        Prelude.Nothing
+    }
+
+-- | Defines the amount of money paid to an Amazon Mechanical Turk worker in
+-- United States dollars.
+publicWorkforceTaskPrice_amountInUsd :: Lens.Lens' PublicWorkforceTaskPrice (Prelude.Maybe USD)
+publicWorkforceTaskPrice_amountInUsd = Lens.lens (\PublicWorkforceTaskPrice' {amountInUsd} -> amountInUsd) (\s@PublicWorkforceTaskPrice' {} a -> s {amountInUsd = a} :: PublicWorkforceTaskPrice)
+
+instance Data.FromJSON PublicWorkforceTaskPrice where
+  parseJSON =
+    Data.withObject
+      "PublicWorkforceTaskPrice"
+      ( \x ->
+          PublicWorkforceTaskPrice'
+            Prelude.<$> (x Data..:? "AmountInUsd")
+      )
+
+instance Prelude.Hashable PublicWorkforceTaskPrice where
+  hashWithSalt _salt PublicWorkforceTaskPrice' {..} =
+    _salt `Prelude.hashWithSalt` amountInUsd
+
+instance Prelude.NFData PublicWorkforceTaskPrice where
+  rnf PublicWorkforceTaskPrice' {..} =
+    Prelude.rnf amountInUsd
+
+instance Data.ToJSON PublicWorkforceTaskPrice where
+  toJSON PublicWorkforceTaskPrice' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("AmountInUsd" Data..=) Prelude.<$> amountInUsd]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/QualityCheckStepMetadata.hs b/gen/Amazonka/SageMaker/Types/QualityCheckStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/QualityCheckStepMetadata.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.QualityCheckStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.QualityCheckStepMetadata 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
+
+-- | Container for the metadata for a Quality check step. For more
+-- information, see the topic on
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-quality-check QualityCheck step>
+-- in the /Amazon SageMaker Developer Guide/.
+--
+-- /See:/ 'newQualityCheckStepMetadata' smart constructor.
+data QualityCheckStepMetadata = QualityCheckStepMetadata'
+  { -- | The Amazon S3 URI of the baseline constraints file used for the drift
+    -- check.
+    baselineUsedForDriftCheckConstraints :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 URI of the baseline statistics file used for the drift
+    -- check.
+    baselineUsedForDriftCheckStatistics :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 URI of the newly calculated baseline constraints file.
+    calculatedBaselineConstraints :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 URI of the newly calculated baseline statistics file.
+    calculatedBaselineStatistics :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Quality check processing job that
+    -- was run by this step execution.
+    checkJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The type of the Quality check step.
+    checkType :: Prelude.Maybe Prelude.Text,
+    -- | The model package group name.
+    modelPackageGroupName :: Prelude.Maybe Prelude.Text,
+    -- | This flag indicates if a newly calculated baseline can be accessed
+    -- through step properties @BaselineUsedForDriftCheckConstraints@ and
+    -- @BaselineUsedForDriftCheckStatistics@. If it is set to @False@, the
+    -- previous baseline of the configured check type must also be available.
+    -- These can be accessed through the @BaselineUsedForDriftCheckConstraints@
+    -- and @ BaselineUsedForDriftCheckStatistics@ properties.
+    registerNewBaseline :: Prelude.Maybe Prelude.Bool,
+    -- | This flag indicates if the drift check against the previous baseline
+    -- will be skipped or not. If it is set to @False@, the previous baseline
+    -- of the configured check type must be available.
+    skipCheck :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon S3 URI of violation report if violations are detected.
+    violationReport :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QualityCheckStepMetadata' 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:
+--
+-- 'baselineUsedForDriftCheckConstraints', 'qualityCheckStepMetadata_baselineUsedForDriftCheckConstraints' - The Amazon S3 URI of the baseline constraints file used for the drift
+-- check.
+--
+-- 'baselineUsedForDriftCheckStatistics', 'qualityCheckStepMetadata_baselineUsedForDriftCheckStatistics' - The Amazon S3 URI of the baseline statistics file used for the drift
+-- check.
+--
+-- 'calculatedBaselineConstraints', 'qualityCheckStepMetadata_calculatedBaselineConstraints' - The Amazon S3 URI of the newly calculated baseline constraints file.
+--
+-- 'calculatedBaselineStatistics', 'qualityCheckStepMetadata_calculatedBaselineStatistics' - The Amazon S3 URI of the newly calculated baseline statistics file.
+--
+-- 'checkJobArn', 'qualityCheckStepMetadata_checkJobArn' - The Amazon Resource Name (ARN) of the Quality check processing job that
+-- was run by this step execution.
+--
+-- 'checkType', 'qualityCheckStepMetadata_checkType' - The type of the Quality check step.
+--
+-- 'modelPackageGroupName', 'qualityCheckStepMetadata_modelPackageGroupName' - The model package group name.
+--
+-- 'registerNewBaseline', 'qualityCheckStepMetadata_registerNewBaseline' - This flag indicates if a newly calculated baseline can be accessed
+-- through step properties @BaselineUsedForDriftCheckConstraints@ and
+-- @BaselineUsedForDriftCheckStatistics@. If it is set to @False@, the
+-- previous baseline of the configured check type must also be available.
+-- These can be accessed through the @BaselineUsedForDriftCheckConstraints@
+-- and @ BaselineUsedForDriftCheckStatistics@ properties.
+--
+-- 'skipCheck', 'qualityCheckStepMetadata_skipCheck' - This flag indicates if the drift check against the previous baseline
+-- will be skipped or not. If it is set to @False@, the previous baseline
+-- of the configured check type must be available.
+--
+-- 'violationReport', 'qualityCheckStepMetadata_violationReport' - The Amazon S3 URI of violation report if violations are detected.
+newQualityCheckStepMetadata ::
+  QualityCheckStepMetadata
+newQualityCheckStepMetadata =
+  QualityCheckStepMetadata'
+    { baselineUsedForDriftCheckConstraints =
+        Prelude.Nothing,
+      baselineUsedForDriftCheckStatistics =
+        Prelude.Nothing,
+      calculatedBaselineConstraints = Prelude.Nothing,
+      calculatedBaselineStatistics = Prelude.Nothing,
+      checkJobArn = Prelude.Nothing,
+      checkType = Prelude.Nothing,
+      modelPackageGroupName = Prelude.Nothing,
+      registerNewBaseline = Prelude.Nothing,
+      skipCheck = Prelude.Nothing,
+      violationReport = Prelude.Nothing
+    }
+
+-- | The Amazon S3 URI of the baseline constraints file used for the drift
+-- check.
+qualityCheckStepMetadata_baselineUsedForDriftCheckConstraints :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_baselineUsedForDriftCheckConstraints = Lens.lens (\QualityCheckStepMetadata' {baselineUsedForDriftCheckConstraints} -> baselineUsedForDriftCheckConstraints) (\s@QualityCheckStepMetadata' {} a -> s {baselineUsedForDriftCheckConstraints = a} :: QualityCheckStepMetadata)
+
+-- | The Amazon S3 URI of the baseline statistics file used for the drift
+-- check.
+qualityCheckStepMetadata_baselineUsedForDriftCheckStatistics :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_baselineUsedForDriftCheckStatistics = Lens.lens (\QualityCheckStepMetadata' {baselineUsedForDriftCheckStatistics} -> baselineUsedForDriftCheckStatistics) (\s@QualityCheckStepMetadata' {} a -> s {baselineUsedForDriftCheckStatistics = a} :: QualityCheckStepMetadata)
+
+-- | The Amazon S3 URI of the newly calculated baseline constraints file.
+qualityCheckStepMetadata_calculatedBaselineConstraints :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_calculatedBaselineConstraints = Lens.lens (\QualityCheckStepMetadata' {calculatedBaselineConstraints} -> calculatedBaselineConstraints) (\s@QualityCheckStepMetadata' {} a -> s {calculatedBaselineConstraints = a} :: QualityCheckStepMetadata)
+
+-- | The Amazon S3 URI of the newly calculated baseline statistics file.
+qualityCheckStepMetadata_calculatedBaselineStatistics :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_calculatedBaselineStatistics = Lens.lens (\QualityCheckStepMetadata' {calculatedBaselineStatistics} -> calculatedBaselineStatistics) (\s@QualityCheckStepMetadata' {} a -> s {calculatedBaselineStatistics = a} :: QualityCheckStepMetadata)
+
+-- | The Amazon Resource Name (ARN) of the Quality check processing job that
+-- was run by this step execution.
+qualityCheckStepMetadata_checkJobArn :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_checkJobArn = Lens.lens (\QualityCheckStepMetadata' {checkJobArn} -> checkJobArn) (\s@QualityCheckStepMetadata' {} a -> s {checkJobArn = a} :: QualityCheckStepMetadata)
+
+-- | The type of the Quality check step.
+qualityCheckStepMetadata_checkType :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_checkType = Lens.lens (\QualityCheckStepMetadata' {checkType} -> checkType) (\s@QualityCheckStepMetadata' {} a -> s {checkType = a} :: QualityCheckStepMetadata)
+
+-- | The model package group name.
+qualityCheckStepMetadata_modelPackageGroupName :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_modelPackageGroupName = Lens.lens (\QualityCheckStepMetadata' {modelPackageGroupName} -> modelPackageGroupName) (\s@QualityCheckStepMetadata' {} a -> s {modelPackageGroupName = a} :: QualityCheckStepMetadata)
+
+-- | This flag indicates if a newly calculated baseline can be accessed
+-- through step properties @BaselineUsedForDriftCheckConstraints@ and
+-- @BaselineUsedForDriftCheckStatistics@. If it is set to @False@, the
+-- previous baseline of the configured check type must also be available.
+-- These can be accessed through the @BaselineUsedForDriftCheckConstraints@
+-- and @ BaselineUsedForDriftCheckStatistics@ properties.
+qualityCheckStepMetadata_registerNewBaseline :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Bool)
+qualityCheckStepMetadata_registerNewBaseline = Lens.lens (\QualityCheckStepMetadata' {registerNewBaseline} -> registerNewBaseline) (\s@QualityCheckStepMetadata' {} a -> s {registerNewBaseline = a} :: QualityCheckStepMetadata)
+
+-- | This flag indicates if the drift check against the previous baseline
+-- will be skipped or not. If it is set to @False@, the previous baseline
+-- of the configured check type must be available.
+qualityCheckStepMetadata_skipCheck :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Bool)
+qualityCheckStepMetadata_skipCheck = Lens.lens (\QualityCheckStepMetadata' {skipCheck} -> skipCheck) (\s@QualityCheckStepMetadata' {} a -> s {skipCheck = a} :: QualityCheckStepMetadata)
+
+-- | The Amazon S3 URI of violation report if violations are detected.
+qualityCheckStepMetadata_violationReport :: Lens.Lens' QualityCheckStepMetadata (Prelude.Maybe Prelude.Text)
+qualityCheckStepMetadata_violationReport = Lens.lens (\QualityCheckStepMetadata' {violationReport} -> violationReport) (\s@QualityCheckStepMetadata' {} a -> s {violationReport = a} :: QualityCheckStepMetadata)
+
+instance Data.FromJSON QualityCheckStepMetadata where
+  parseJSON =
+    Data.withObject
+      "QualityCheckStepMetadata"
+      ( \x ->
+          QualityCheckStepMetadata'
+            Prelude.<$> (x Data..:? "BaselineUsedForDriftCheckConstraints")
+            Prelude.<*> (x Data..:? "BaselineUsedForDriftCheckStatistics")
+            Prelude.<*> (x Data..:? "CalculatedBaselineConstraints")
+            Prelude.<*> (x Data..:? "CalculatedBaselineStatistics")
+            Prelude.<*> (x Data..:? "CheckJobArn")
+            Prelude.<*> (x Data..:? "CheckType")
+            Prelude.<*> (x Data..:? "ModelPackageGroupName")
+            Prelude.<*> (x Data..:? "RegisterNewBaseline")
+            Prelude.<*> (x Data..:? "SkipCheck")
+            Prelude.<*> (x Data..:? "ViolationReport")
+      )
+
+instance Prelude.Hashable QualityCheckStepMetadata where
+  hashWithSalt _salt QualityCheckStepMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` baselineUsedForDriftCheckConstraints
+      `Prelude.hashWithSalt` baselineUsedForDriftCheckStatistics
+      `Prelude.hashWithSalt` calculatedBaselineConstraints
+      `Prelude.hashWithSalt` calculatedBaselineStatistics
+      `Prelude.hashWithSalt` checkJobArn
+      `Prelude.hashWithSalt` checkType
+      `Prelude.hashWithSalt` modelPackageGroupName
+      `Prelude.hashWithSalt` registerNewBaseline
+      `Prelude.hashWithSalt` skipCheck
+      `Prelude.hashWithSalt` violationReport
+
+instance Prelude.NFData QualityCheckStepMetadata where
+  rnf QualityCheckStepMetadata' {..} =
+    Prelude.rnf baselineUsedForDriftCheckConstraints
+      `Prelude.seq` Prelude.rnf baselineUsedForDriftCheckStatistics
+      `Prelude.seq` Prelude.rnf calculatedBaselineConstraints
+      `Prelude.seq` Prelude.rnf calculatedBaselineStatistics
+      `Prelude.seq` Prelude.rnf checkJobArn
+      `Prelude.seq` Prelude.rnf checkType
+      `Prelude.seq` Prelude.rnf modelPackageGroupName
+      `Prelude.seq` Prelude.rnf registerNewBaseline
+      `Prelude.seq` Prelude.rnf skipCheck
+      `Prelude.seq` Prelude.rnf violationReport
diff --git a/gen/Amazonka/SageMaker/Types/QueryFilters.hs b/gen/Amazonka/SageMaker/Types/QueryFilters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/QueryFilters.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.QueryFilters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.QueryFilters 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 Amazonka.SageMaker.Types.LineageType
+
+-- | A set of filters to narrow the set of lineage entities connected to the
+-- @StartArn@(s) returned by the @QueryLineage@ API action.
+--
+-- /See:/ 'newQueryFilters' smart constructor.
+data QueryFilters = QueryFilters'
+  { -- | Filter the lineage entities connected to the @StartArn@(s) after the
+    -- create date.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | Filter the lineage entities connected to the @StartArn@(s) by created
+    -- date.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | Filter the lineage entities connected to the @StartArn@(s) by the type
+    -- of the lineage entity.
+    lineageTypes :: Prelude.Maybe [LineageType],
+    -- | Filter the lineage entities connected to the @StartArn@(s) after the
+    -- last modified date.
+    modifiedAfter :: Prelude.Maybe Data.POSIX,
+    -- | Filter the lineage entities connected to the @StartArn@(s) before the
+    -- last modified date.
+    modifiedBefore :: Prelude.Maybe Data.POSIX,
+    -- | Filter the lineage entities connected to the @StartArn@(s) by a set if
+    -- property key value pairs. If multiple pairs are provided, an entity is
+    -- included in the results if it matches any of the provided pairs.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Filter the lineage entities connected to the @StartArn@ by type. For
+    -- example: @DataSet@, @Model@, @Endpoint@, or @ModelDeployment@.
+    types :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QueryFilters' 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:
+--
+-- 'createdAfter', 'queryFilters_createdAfter' - Filter the lineage entities connected to the @StartArn@(s) after the
+-- create date.
+--
+-- 'createdBefore', 'queryFilters_createdBefore' - Filter the lineage entities connected to the @StartArn@(s) by created
+-- date.
+--
+-- 'lineageTypes', 'queryFilters_lineageTypes' - Filter the lineage entities connected to the @StartArn@(s) by the type
+-- of the lineage entity.
+--
+-- 'modifiedAfter', 'queryFilters_modifiedAfter' - Filter the lineage entities connected to the @StartArn@(s) after the
+-- last modified date.
+--
+-- 'modifiedBefore', 'queryFilters_modifiedBefore' - Filter the lineage entities connected to the @StartArn@(s) before the
+-- last modified date.
+--
+-- 'properties', 'queryFilters_properties' - Filter the lineage entities connected to the @StartArn@(s) by a set if
+-- property key value pairs. If multiple pairs are provided, an entity is
+-- included in the results if it matches any of the provided pairs.
+--
+-- 'types', 'queryFilters_types' - Filter the lineage entities connected to the @StartArn@ by type. For
+-- example: @DataSet@, @Model@, @Endpoint@, or @ModelDeployment@.
+newQueryFilters ::
+  QueryFilters
+newQueryFilters =
+  QueryFilters'
+    { createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      lineageTypes = Prelude.Nothing,
+      modifiedAfter = Prelude.Nothing,
+      modifiedBefore = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      types = Prelude.Nothing
+    }
+
+-- | Filter the lineage entities connected to the @StartArn@(s) after the
+-- create date.
+queryFilters_createdAfter :: Lens.Lens' QueryFilters (Prelude.Maybe Prelude.UTCTime)
+queryFilters_createdAfter = Lens.lens (\QueryFilters' {createdAfter} -> createdAfter) (\s@QueryFilters' {} a -> s {createdAfter = a} :: QueryFilters) Prelude.. Lens.mapping Data._Time
+
+-- | Filter the lineage entities connected to the @StartArn@(s) by created
+-- date.
+queryFilters_createdBefore :: Lens.Lens' QueryFilters (Prelude.Maybe Prelude.UTCTime)
+queryFilters_createdBefore = Lens.lens (\QueryFilters' {createdBefore} -> createdBefore) (\s@QueryFilters' {} a -> s {createdBefore = a} :: QueryFilters) Prelude.. Lens.mapping Data._Time
+
+-- | Filter the lineage entities connected to the @StartArn@(s) by the type
+-- of the lineage entity.
+queryFilters_lineageTypes :: Lens.Lens' QueryFilters (Prelude.Maybe [LineageType])
+queryFilters_lineageTypes = Lens.lens (\QueryFilters' {lineageTypes} -> lineageTypes) (\s@QueryFilters' {} a -> s {lineageTypes = a} :: QueryFilters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filter the lineage entities connected to the @StartArn@(s) after the
+-- last modified date.
+queryFilters_modifiedAfter :: Lens.Lens' QueryFilters (Prelude.Maybe Prelude.UTCTime)
+queryFilters_modifiedAfter = Lens.lens (\QueryFilters' {modifiedAfter} -> modifiedAfter) (\s@QueryFilters' {} a -> s {modifiedAfter = a} :: QueryFilters) Prelude.. Lens.mapping Data._Time
+
+-- | Filter the lineage entities connected to the @StartArn@(s) before the
+-- last modified date.
+queryFilters_modifiedBefore :: Lens.Lens' QueryFilters (Prelude.Maybe Prelude.UTCTime)
+queryFilters_modifiedBefore = Lens.lens (\QueryFilters' {modifiedBefore} -> modifiedBefore) (\s@QueryFilters' {} a -> s {modifiedBefore = a} :: QueryFilters) Prelude.. Lens.mapping Data._Time
+
+-- | Filter the lineage entities connected to the @StartArn@(s) by a set if
+-- property key value pairs. If multiple pairs are provided, an entity is
+-- included in the results if it matches any of the provided pairs.
+queryFilters_properties :: Lens.Lens' QueryFilters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+queryFilters_properties = Lens.lens (\QueryFilters' {properties} -> properties) (\s@QueryFilters' {} a -> s {properties = a} :: QueryFilters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filter the lineage entities connected to the @StartArn@ by type. For
+-- example: @DataSet@, @Model@, @Endpoint@, or @ModelDeployment@.
+queryFilters_types :: Lens.Lens' QueryFilters (Prelude.Maybe [Prelude.Text])
+queryFilters_types = Lens.lens (\QueryFilters' {types} -> types) (\s@QueryFilters' {} a -> s {types = a} :: QueryFilters) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable QueryFilters where
+  hashWithSalt _salt QueryFilters' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` lineageTypes
+      `Prelude.hashWithSalt` modifiedAfter
+      `Prelude.hashWithSalt` modifiedBefore
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` types
+
+instance Prelude.NFData QueryFilters where
+  rnf QueryFilters' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf lineageTypes
+      `Prelude.seq` Prelude.rnf modifiedAfter
+      `Prelude.seq` Prelude.rnf modifiedBefore
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf types
+
+instance Data.ToJSON QueryFilters where
+  toJSON QueryFilters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("LineageTypes" Data..=) Prelude.<$> lineageTypes,
+            ("ModifiedAfter" Data..=) Prelude.<$> modifiedAfter,
+            ("ModifiedBefore" Data..=)
+              Prelude.<$> modifiedBefore,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("Types" Data..=) Prelude.<$> types
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RSessionAppSettings.hs b/gen/Amazonka/SageMaker/Types/RSessionAppSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RSessionAppSettings.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RSessionAppSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RSessionAppSettings 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 Amazonka.SageMaker.Types.CustomImage
+import Amazonka.SageMaker.Types.ResourceSpec
+
+-- | A collection of settings that apply to an @RSessionGateway@ app.
+--
+-- /See:/ 'newRSessionAppSettings' smart constructor.
+data RSessionAppSettings = RSessionAppSettings'
+  { -- | A list of custom SageMaker images that are configured to run as a
+    -- RSession app.
+    customImages :: Prelude.Maybe [CustomImage],
+    defaultResourceSpec :: Prelude.Maybe ResourceSpec
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RSessionAppSettings' 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:
+--
+-- 'customImages', 'rSessionAppSettings_customImages' - A list of custom SageMaker images that are configured to run as a
+-- RSession app.
+--
+-- 'defaultResourceSpec', 'rSessionAppSettings_defaultResourceSpec' - Undocumented member.
+newRSessionAppSettings ::
+  RSessionAppSettings
+newRSessionAppSettings =
+  RSessionAppSettings'
+    { customImages =
+        Prelude.Nothing,
+      defaultResourceSpec = Prelude.Nothing
+    }
+
+-- | A list of custom SageMaker images that are configured to run as a
+-- RSession app.
+rSessionAppSettings_customImages :: Lens.Lens' RSessionAppSettings (Prelude.Maybe [CustomImage])
+rSessionAppSettings_customImages = Lens.lens (\RSessionAppSettings' {customImages} -> customImages) (\s@RSessionAppSettings' {} a -> s {customImages = a} :: RSessionAppSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+rSessionAppSettings_defaultResourceSpec :: Lens.Lens' RSessionAppSettings (Prelude.Maybe ResourceSpec)
+rSessionAppSettings_defaultResourceSpec = Lens.lens (\RSessionAppSettings' {defaultResourceSpec} -> defaultResourceSpec) (\s@RSessionAppSettings' {} a -> s {defaultResourceSpec = a} :: RSessionAppSettings)
+
+instance Data.FromJSON RSessionAppSettings where
+  parseJSON =
+    Data.withObject
+      "RSessionAppSettings"
+      ( \x ->
+          RSessionAppSettings'
+            Prelude.<$> (x Data..:? "CustomImages" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "DefaultResourceSpec")
+      )
+
+instance Prelude.Hashable RSessionAppSettings where
+  hashWithSalt _salt RSessionAppSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` customImages
+      `Prelude.hashWithSalt` defaultResourceSpec
+
+instance Prelude.NFData RSessionAppSettings where
+  rnf RSessionAppSettings' {..} =
+    Prelude.rnf customImages
+      `Prelude.seq` Prelude.rnf defaultResourceSpec
+
+instance Data.ToJSON RSessionAppSettings where
+  toJSON RSessionAppSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomImages" Data..=) Prelude.<$> customImages,
+            ("DefaultResourceSpec" Data..=)
+              Prelude.<$> defaultResourceSpec
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RStudioServerProAccessStatus.hs b/gen/Amazonka/SageMaker/Types/RStudioServerProAccessStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RStudioServerProAccessStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RStudioServerProAccessStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RStudioServerProAccessStatus
+  ( RStudioServerProAccessStatus
+      ( ..,
+        RStudioServerProAccessStatus_DISABLED,
+        RStudioServerProAccessStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RStudioServerProAccessStatus = RStudioServerProAccessStatus'
+  { fromRStudioServerProAccessStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RStudioServerProAccessStatus_DISABLED :: RStudioServerProAccessStatus
+pattern RStudioServerProAccessStatus_DISABLED = RStudioServerProAccessStatus' "DISABLED"
+
+pattern RStudioServerProAccessStatus_ENABLED :: RStudioServerProAccessStatus
+pattern RStudioServerProAccessStatus_ENABLED = RStudioServerProAccessStatus' "ENABLED"
+
+{-# COMPLETE
+  RStudioServerProAccessStatus_DISABLED,
+  RStudioServerProAccessStatus_ENABLED,
+  RStudioServerProAccessStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RStudioServerProAppSettings.hs b/gen/Amazonka/SageMaker/Types/RStudioServerProAppSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RStudioServerProAppSettings.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RStudioServerProAppSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RStudioServerProAppSettings 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 Amazonka.SageMaker.Types.RStudioServerProAccessStatus
+import Amazonka.SageMaker.Types.RStudioServerProUserGroup
+
+-- | A collection of settings that configure user interaction with the
+-- @RStudioServerPro@ app. @RStudioServerProAppSettings@ cannot be updated.
+-- The @RStudioServerPro@ app must be deleted and a new one created to make
+-- any changes.
+--
+-- /See:/ 'newRStudioServerProAppSettings' smart constructor.
+data RStudioServerProAppSettings = RStudioServerProAppSettings'
+  { -- | Indicates whether the current user has access to the @RStudioServerPro@
+    -- app.
+    accessStatus :: Prelude.Maybe RStudioServerProAccessStatus,
+    -- | The level of permissions that the user has within the @RStudioServerPro@
+    -- app. This value defaults to \`User\`. The \`Admin\` value allows the
+    -- user access to the RStudio Administrative Dashboard.
+    userGroup :: Prelude.Maybe RStudioServerProUserGroup
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RStudioServerProAppSettings' 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:
+--
+-- 'accessStatus', 'rStudioServerProAppSettings_accessStatus' - Indicates whether the current user has access to the @RStudioServerPro@
+-- app.
+--
+-- 'userGroup', 'rStudioServerProAppSettings_userGroup' - The level of permissions that the user has within the @RStudioServerPro@
+-- app. This value defaults to \`User\`. The \`Admin\` value allows the
+-- user access to the RStudio Administrative Dashboard.
+newRStudioServerProAppSettings ::
+  RStudioServerProAppSettings
+newRStudioServerProAppSettings =
+  RStudioServerProAppSettings'
+    { accessStatus =
+        Prelude.Nothing,
+      userGroup = Prelude.Nothing
+    }
+
+-- | Indicates whether the current user has access to the @RStudioServerPro@
+-- app.
+rStudioServerProAppSettings_accessStatus :: Lens.Lens' RStudioServerProAppSettings (Prelude.Maybe RStudioServerProAccessStatus)
+rStudioServerProAppSettings_accessStatus = Lens.lens (\RStudioServerProAppSettings' {accessStatus} -> accessStatus) (\s@RStudioServerProAppSettings' {} a -> s {accessStatus = a} :: RStudioServerProAppSettings)
+
+-- | The level of permissions that the user has within the @RStudioServerPro@
+-- app. This value defaults to \`User\`. The \`Admin\` value allows the
+-- user access to the RStudio Administrative Dashboard.
+rStudioServerProAppSettings_userGroup :: Lens.Lens' RStudioServerProAppSettings (Prelude.Maybe RStudioServerProUserGroup)
+rStudioServerProAppSettings_userGroup = Lens.lens (\RStudioServerProAppSettings' {userGroup} -> userGroup) (\s@RStudioServerProAppSettings' {} a -> s {userGroup = a} :: RStudioServerProAppSettings)
+
+instance Data.FromJSON RStudioServerProAppSettings where
+  parseJSON =
+    Data.withObject
+      "RStudioServerProAppSettings"
+      ( \x ->
+          RStudioServerProAppSettings'
+            Prelude.<$> (x Data..:? "AccessStatus")
+            Prelude.<*> (x Data..:? "UserGroup")
+      )
+
+instance Prelude.Hashable RStudioServerProAppSettings where
+  hashWithSalt _salt RStudioServerProAppSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` accessStatus
+      `Prelude.hashWithSalt` userGroup
+
+instance Prelude.NFData RStudioServerProAppSettings where
+  rnf RStudioServerProAppSettings' {..} =
+    Prelude.rnf accessStatus
+      `Prelude.seq` Prelude.rnf userGroup
+
+instance Data.ToJSON RStudioServerProAppSettings where
+  toJSON RStudioServerProAppSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AccessStatus" Data..=) Prelude.<$> accessStatus,
+            ("UserGroup" Data..=) Prelude.<$> userGroup
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RStudioServerProDomainSettings.hs b/gen/Amazonka/SageMaker/Types/RStudioServerProDomainSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RStudioServerProDomainSettings.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RStudioServerProDomainSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RStudioServerProDomainSettings 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 Amazonka.SageMaker.Types.ResourceSpec
+
+-- | A collection of settings that configure the @RStudioServerPro@
+-- Domain-level app.
+--
+-- /See:/ 'newRStudioServerProDomainSettings' smart constructor.
+data RStudioServerProDomainSettings = RStudioServerProDomainSettings'
+  { defaultResourceSpec :: Prelude.Maybe ResourceSpec,
+    -- | A URL pointing to an RStudio Connect server.
+    rStudioConnectUrl :: Prelude.Maybe Prelude.Text,
+    -- | A URL pointing to an RStudio Package Manager server.
+    rStudioPackageManagerUrl :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the execution role for the @RStudioServerPro@ Domain-level
+    -- app.
+    domainExecutionRoleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RStudioServerProDomainSettings' 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:
+--
+-- 'defaultResourceSpec', 'rStudioServerProDomainSettings_defaultResourceSpec' - Undocumented member.
+--
+-- 'rStudioConnectUrl', 'rStudioServerProDomainSettings_rStudioConnectUrl' - A URL pointing to an RStudio Connect server.
+--
+-- 'rStudioPackageManagerUrl', 'rStudioServerProDomainSettings_rStudioPackageManagerUrl' - A URL pointing to an RStudio Package Manager server.
+--
+-- 'domainExecutionRoleArn', 'rStudioServerProDomainSettings_domainExecutionRoleArn' - The ARN of the execution role for the @RStudioServerPro@ Domain-level
+-- app.
+newRStudioServerProDomainSettings ::
+  -- | 'domainExecutionRoleArn'
+  Prelude.Text ->
+  RStudioServerProDomainSettings
+newRStudioServerProDomainSettings
+  pDomainExecutionRoleArn_ =
+    RStudioServerProDomainSettings'
+      { defaultResourceSpec =
+          Prelude.Nothing,
+        rStudioConnectUrl = Prelude.Nothing,
+        rStudioPackageManagerUrl = Prelude.Nothing,
+        domainExecutionRoleArn =
+          pDomainExecutionRoleArn_
+      }
+
+-- | Undocumented member.
+rStudioServerProDomainSettings_defaultResourceSpec :: Lens.Lens' RStudioServerProDomainSettings (Prelude.Maybe ResourceSpec)
+rStudioServerProDomainSettings_defaultResourceSpec = Lens.lens (\RStudioServerProDomainSettings' {defaultResourceSpec} -> defaultResourceSpec) (\s@RStudioServerProDomainSettings' {} a -> s {defaultResourceSpec = a} :: RStudioServerProDomainSettings)
+
+-- | A URL pointing to an RStudio Connect server.
+rStudioServerProDomainSettings_rStudioConnectUrl :: Lens.Lens' RStudioServerProDomainSettings (Prelude.Maybe Prelude.Text)
+rStudioServerProDomainSettings_rStudioConnectUrl = Lens.lens (\RStudioServerProDomainSettings' {rStudioConnectUrl} -> rStudioConnectUrl) (\s@RStudioServerProDomainSettings' {} a -> s {rStudioConnectUrl = a} :: RStudioServerProDomainSettings)
+
+-- | A URL pointing to an RStudio Package Manager server.
+rStudioServerProDomainSettings_rStudioPackageManagerUrl :: Lens.Lens' RStudioServerProDomainSettings (Prelude.Maybe Prelude.Text)
+rStudioServerProDomainSettings_rStudioPackageManagerUrl = Lens.lens (\RStudioServerProDomainSettings' {rStudioPackageManagerUrl} -> rStudioPackageManagerUrl) (\s@RStudioServerProDomainSettings' {} a -> s {rStudioPackageManagerUrl = a} :: RStudioServerProDomainSettings)
+
+-- | The ARN of the execution role for the @RStudioServerPro@ Domain-level
+-- app.
+rStudioServerProDomainSettings_domainExecutionRoleArn :: Lens.Lens' RStudioServerProDomainSettings Prelude.Text
+rStudioServerProDomainSettings_domainExecutionRoleArn = Lens.lens (\RStudioServerProDomainSettings' {domainExecutionRoleArn} -> domainExecutionRoleArn) (\s@RStudioServerProDomainSettings' {} a -> s {domainExecutionRoleArn = a} :: RStudioServerProDomainSettings)
+
+instance Data.FromJSON RStudioServerProDomainSettings where
+  parseJSON =
+    Data.withObject
+      "RStudioServerProDomainSettings"
+      ( \x ->
+          RStudioServerProDomainSettings'
+            Prelude.<$> (x Data..:? "DefaultResourceSpec")
+            Prelude.<*> (x Data..:? "RStudioConnectUrl")
+            Prelude.<*> (x Data..:? "RStudioPackageManagerUrl")
+            Prelude.<*> (x Data..: "DomainExecutionRoleArn")
+      )
+
+instance
+  Prelude.Hashable
+    RStudioServerProDomainSettings
+  where
+  hashWithSalt
+    _salt
+    RStudioServerProDomainSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` defaultResourceSpec
+        `Prelude.hashWithSalt` rStudioConnectUrl
+        `Prelude.hashWithSalt` rStudioPackageManagerUrl
+        `Prelude.hashWithSalt` domainExecutionRoleArn
+
+instance
+  Prelude.NFData
+    RStudioServerProDomainSettings
+  where
+  rnf RStudioServerProDomainSettings' {..} =
+    Prelude.rnf defaultResourceSpec
+      `Prelude.seq` Prelude.rnf rStudioConnectUrl
+      `Prelude.seq` Prelude.rnf rStudioPackageManagerUrl
+      `Prelude.seq` Prelude.rnf domainExecutionRoleArn
+
+instance Data.ToJSON RStudioServerProDomainSettings where
+  toJSON RStudioServerProDomainSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultResourceSpec" Data..=)
+              Prelude.<$> defaultResourceSpec,
+            ("RStudioConnectUrl" Data..=)
+              Prelude.<$> rStudioConnectUrl,
+            ("RStudioPackageManagerUrl" Data..=)
+              Prelude.<$> rStudioPackageManagerUrl,
+            Prelude.Just
+              ( "DomainExecutionRoleArn"
+                  Data..= domainExecutionRoleArn
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RStudioServerProDomainSettingsForUpdate.hs b/gen/Amazonka/SageMaker/Types/RStudioServerProDomainSettingsForUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RStudioServerProDomainSettingsForUpdate.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RStudioServerProDomainSettingsForUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RStudioServerProDomainSettingsForUpdate 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 Amazonka.SageMaker.Types.ResourceSpec
+
+-- | A collection of settings that update the current configuration for the
+-- @RStudioServerPro@ Domain-level app.
+--
+-- /See:/ 'newRStudioServerProDomainSettingsForUpdate' smart constructor.
+data RStudioServerProDomainSettingsForUpdate = RStudioServerProDomainSettingsForUpdate'
+  { defaultResourceSpec :: Prelude.Maybe ResourceSpec,
+    -- | A URL pointing to an RStudio Connect server.
+    rStudioConnectUrl :: Prelude.Maybe Prelude.Text,
+    -- | A URL pointing to an RStudio Package Manager server.
+    rStudioPackageManagerUrl :: Prelude.Maybe Prelude.Text,
+    -- | The execution role for the @RStudioServerPro@ Domain-level app.
+    domainExecutionRoleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RStudioServerProDomainSettingsForUpdate' 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:
+--
+-- 'defaultResourceSpec', 'rStudioServerProDomainSettingsForUpdate_defaultResourceSpec' - Undocumented member.
+--
+-- 'rStudioConnectUrl', 'rStudioServerProDomainSettingsForUpdate_rStudioConnectUrl' - A URL pointing to an RStudio Connect server.
+--
+-- 'rStudioPackageManagerUrl', 'rStudioServerProDomainSettingsForUpdate_rStudioPackageManagerUrl' - A URL pointing to an RStudio Package Manager server.
+--
+-- 'domainExecutionRoleArn', 'rStudioServerProDomainSettingsForUpdate_domainExecutionRoleArn' - The execution role for the @RStudioServerPro@ Domain-level app.
+newRStudioServerProDomainSettingsForUpdate ::
+  -- | 'domainExecutionRoleArn'
+  Prelude.Text ->
+  RStudioServerProDomainSettingsForUpdate
+newRStudioServerProDomainSettingsForUpdate
+  pDomainExecutionRoleArn_ =
+    RStudioServerProDomainSettingsForUpdate'
+      { defaultResourceSpec =
+          Prelude.Nothing,
+        rStudioConnectUrl =
+          Prelude.Nothing,
+        rStudioPackageManagerUrl =
+          Prelude.Nothing,
+        domainExecutionRoleArn =
+          pDomainExecutionRoleArn_
+      }
+
+-- | Undocumented member.
+rStudioServerProDomainSettingsForUpdate_defaultResourceSpec :: Lens.Lens' RStudioServerProDomainSettingsForUpdate (Prelude.Maybe ResourceSpec)
+rStudioServerProDomainSettingsForUpdate_defaultResourceSpec = Lens.lens (\RStudioServerProDomainSettingsForUpdate' {defaultResourceSpec} -> defaultResourceSpec) (\s@RStudioServerProDomainSettingsForUpdate' {} a -> s {defaultResourceSpec = a} :: RStudioServerProDomainSettingsForUpdate)
+
+-- | A URL pointing to an RStudio Connect server.
+rStudioServerProDomainSettingsForUpdate_rStudioConnectUrl :: Lens.Lens' RStudioServerProDomainSettingsForUpdate (Prelude.Maybe Prelude.Text)
+rStudioServerProDomainSettingsForUpdate_rStudioConnectUrl = Lens.lens (\RStudioServerProDomainSettingsForUpdate' {rStudioConnectUrl} -> rStudioConnectUrl) (\s@RStudioServerProDomainSettingsForUpdate' {} a -> s {rStudioConnectUrl = a} :: RStudioServerProDomainSettingsForUpdate)
+
+-- | A URL pointing to an RStudio Package Manager server.
+rStudioServerProDomainSettingsForUpdate_rStudioPackageManagerUrl :: Lens.Lens' RStudioServerProDomainSettingsForUpdate (Prelude.Maybe Prelude.Text)
+rStudioServerProDomainSettingsForUpdate_rStudioPackageManagerUrl = Lens.lens (\RStudioServerProDomainSettingsForUpdate' {rStudioPackageManagerUrl} -> rStudioPackageManagerUrl) (\s@RStudioServerProDomainSettingsForUpdate' {} a -> s {rStudioPackageManagerUrl = a} :: RStudioServerProDomainSettingsForUpdate)
+
+-- | The execution role for the @RStudioServerPro@ Domain-level app.
+rStudioServerProDomainSettingsForUpdate_domainExecutionRoleArn :: Lens.Lens' RStudioServerProDomainSettingsForUpdate Prelude.Text
+rStudioServerProDomainSettingsForUpdate_domainExecutionRoleArn = Lens.lens (\RStudioServerProDomainSettingsForUpdate' {domainExecutionRoleArn} -> domainExecutionRoleArn) (\s@RStudioServerProDomainSettingsForUpdate' {} a -> s {domainExecutionRoleArn = a} :: RStudioServerProDomainSettingsForUpdate)
+
+instance
+  Prelude.Hashable
+    RStudioServerProDomainSettingsForUpdate
+  where
+  hashWithSalt
+    _salt
+    RStudioServerProDomainSettingsForUpdate' {..} =
+      _salt
+        `Prelude.hashWithSalt` defaultResourceSpec
+        `Prelude.hashWithSalt` rStudioConnectUrl
+        `Prelude.hashWithSalt` rStudioPackageManagerUrl
+        `Prelude.hashWithSalt` domainExecutionRoleArn
+
+instance
+  Prelude.NFData
+    RStudioServerProDomainSettingsForUpdate
+  where
+  rnf RStudioServerProDomainSettingsForUpdate' {..} =
+    Prelude.rnf defaultResourceSpec
+      `Prelude.seq` Prelude.rnf rStudioConnectUrl
+      `Prelude.seq` Prelude.rnf rStudioPackageManagerUrl
+      `Prelude.seq` Prelude.rnf domainExecutionRoleArn
+
+instance
+  Data.ToJSON
+    RStudioServerProDomainSettingsForUpdate
+  where
+  toJSON RStudioServerProDomainSettingsForUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultResourceSpec" Data..=)
+              Prelude.<$> defaultResourceSpec,
+            ("RStudioConnectUrl" Data..=)
+              Prelude.<$> rStudioConnectUrl,
+            ("RStudioPackageManagerUrl" Data..=)
+              Prelude.<$> rStudioPackageManagerUrl,
+            Prelude.Just
+              ( "DomainExecutionRoleArn"
+                  Data..= domainExecutionRoleArn
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RStudioServerProUserGroup.hs b/gen/Amazonka/SageMaker/Types/RStudioServerProUserGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RStudioServerProUserGroup.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RStudioServerProUserGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RStudioServerProUserGroup
+  ( RStudioServerProUserGroup
+      ( ..,
+        RStudioServerProUserGroup_R_STUDIO_ADMIN,
+        RStudioServerProUserGroup_R_STUDIO_USER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RStudioServerProUserGroup = RStudioServerProUserGroup'
+  { fromRStudioServerProUserGroup ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RStudioServerProUserGroup_R_STUDIO_ADMIN :: RStudioServerProUserGroup
+pattern RStudioServerProUserGroup_R_STUDIO_ADMIN = RStudioServerProUserGroup' "R_STUDIO_ADMIN"
+
+pattern RStudioServerProUserGroup_R_STUDIO_USER :: RStudioServerProUserGroup
+pattern RStudioServerProUserGroup_R_STUDIO_USER = RStudioServerProUserGroup' "R_STUDIO_USER"
+
+{-# COMPLETE
+  RStudioServerProUserGroup_R_STUDIO_ADMIN,
+  RStudioServerProUserGroup_R_STUDIO_USER,
+  RStudioServerProUserGroup'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RealTimeInferenceConfig.hs b/gen/Amazonka/SageMaker/Types/RealTimeInferenceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RealTimeInferenceConfig.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RealTimeInferenceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RealTimeInferenceConfig 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 Amazonka.SageMaker.Types.InstanceType
+
+-- | The infrastructure configuration for deploying the model to a real-time
+-- inference endpoint.
+--
+-- /See:/ 'newRealTimeInferenceConfig' smart constructor.
+data RealTimeInferenceConfig = RealTimeInferenceConfig'
+  { -- | The instance type the model is deployed to.
+    instanceType :: InstanceType,
+    -- | The number of instances of the type specified by @InstanceType@.
+    instanceCount :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RealTimeInferenceConfig' 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:
+--
+-- 'instanceType', 'realTimeInferenceConfig_instanceType' - The instance type the model is deployed to.
+--
+-- 'instanceCount', 'realTimeInferenceConfig_instanceCount' - The number of instances of the type specified by @InstanceType@.
+newRealTimeInferenceConfig ::
+  -- | 'instanceType'
+  InstanceType ->
+  -- | 'instanceCount'
+  Prelude.Natural ->
+  RealTimeInferenceConfig
+newRealTimeInferenceConfig
+  pInstanceType_
+  pInstanceCount_ =
+    RealTimeInferenceConfig'
+      { instanceType =
+          pInstanceType_,
+        instanceCount = pInstanceCount_
+      }
+
+-- | The instance type the model is deployed to.
+realTimeInferenceConfig_instanceType :: Lens.Lens' RealTimeInferenceConfig InstanceType
+realTimeInferenceConfig_instanceType = Lens.lens (\RealTimeInferenceConfig' {instanceType} -> instanceType) (\s@RealTimeInferenceConfig' {} a -> s {instanceType = a} :: RealTimeInferenceConfig)
+
+-- | The number of instances of the type specified by @InstanceType@.
+realTimeInferenceConfig_instanceCount :: Lens.Lens' RealTimeInferenceConfig Prelude.Natural
+realTimeInferenceConfig_instanceCount = Lens.lens (\RealTimeInferenceConfig' {instanceCount} -> instanceCount) (\s@RealTimeInferenceConfig' {} a -> s {instanceCount = a} :: RealTimeInferenceConfig)
+
+instance Data.FromJSON RealTimeInferenceConfig where
+  parseJSON =
+    Data.withObject
+      "RealTimeInferenceConfig"
+      ( \x ->
+          RealTimeInferenceConfig'
+            Prelude.<$> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "InstanceCount")
+      )
+
+instance Prelude.Hashable RealTimeInferenceConfig where
+  hashWithSalt _salt RealTimeInferenceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` instanceCount
+
+instance Prelude.NFData RealTimeInferenceConfig where
+  rnf RealTimeInferenceConfig' {..} =
+    Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf instanceCount
+
+instance Data.ToJSON RealTimeInferenceConfig where
+  toJSON RealTimeInferenceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just
+              ("InstanceCount" Data..= instanceCount)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobCompiledOutputConfig.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobCompiledOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobCompiledOutputConfig.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobCompiledOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobCompiledOutputConfig 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
+
+-- | Provides information about the output configuration for the compiled
+-- model.
+--
+-- /See:/ 'newRecommendationJobCompiledOutputConfig' smart constructor.
+data RecommendationJobCompiledOutputConfig = RecommendationJobCompiledOutputConfig'
+  { -- | Identifies the Amazon S3 bucket where you want SageMaker to store the
+    -- compiled model artifacts.
+    s3OutputUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobCompiledOutputConfig' 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:
+--
+-- 's3OutputUri', 'recommendationJobCompiledOutputConfig_s3OutputUri' - Identifies the Amazon S3 bucket where you want SageMaker to store the
+-- compiled model artifacts.
+newRecommendationJobCompiledOutputConfig ::
+  RecommendationJobCompiledOutputConfig
+newRecommendationJobCompiledOutputConfig =
+  RecommendationJobCompiledOutputConfig'
+    { s3OutputUri =
+        Prelude.Nothing
+    }
+
+-- | Identifies the Amazon S3 bucket where you want SageMaker to store the
+-- compiled model artifacts.
+recommendationJobCompiledOutputConfig_s3OutputUri :: Lens.Lens' RecommendationJobCompiledOutputConfig (Prelude.Maybe Prelude.Text)
+recommendationJobCompiledOutputConfig_s3OutputUri = Lens.lens (\RecommendationJobCompiledOutputConfig' {s3OutputUri} -> s3OutputUri) (\s@RecommendationJobCompiledOutputConfig' {} a -> s {s3OutputUri = a} :: RecommendationJobCompiledOutputConfig)
+
+instance
+  Prelude.Hashable
+    RecommendationJobCompiledOutputConfig
+  where
+  hashWithSalt
+    _salt
+    RecommendationJobCompiledOutputConfig' {..} =
+      _salt `Prelude.hashWithSalt` s3OutputUri
+
+instance
+  Prelude.NFData
+    RecommendationJobCompiledOutputConfig
+  where
+  rnf RecommendationJobCompiledOutputConfig' {..} =
+    Prelude.rnf s3OutputUri
+
+instance
+  Data.ToJSON
+    RecommendationJobCompiledOutputConfig
+  where
+  toJSON RecommendationJobCompiledOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3OutputUri" Data..=) Prelude.<$> s3OutputUri]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobContainerConfig.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobContainerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobContainerConfig.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobContainerConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobContainerConfig 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 Amazonka.SageMaker.Types.RecommendationJobPayloadConfig
+
+-- | Specifies mandatory fields for running an Inference Recommender job
+-- directly in the
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html CreateInferenceRecommendationsJob>
+-- API. The fields specified in @ContainerConfig@ override the
+-- corresponding fields in the model package. Use @ContainerConfig@ if you
+-- want to specify these fields for the recommendation job but don\'t want
+-- to edit them in your model package.
+--
+-- /See:/ 'newRecommendationJobContainerConfig' smart constructor.
+data RecommendationJobContainerConfig = RecommendationJobContainerConfig'
+  { -- | The machine learning domain of the model and its components.
+    --
+    -- Valid Values:
+    -- @COMPUTER_VISION | NATURAL_LANGUAGE_PROCESSING | MACHINE_LEARNING@
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The machine learning framework of the container image.
+    --
+    -- Valid Values: @TENSORFLOW | PYTORCH | XGBOOST | SAGEMAKER-SCIKIT-LEARN@
+    framework :: Prelude.Maybe Prelude.Text,
+    -- | The framework version of the container image.
+    frameworkVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of a pre-trained machine learning model benchmarked by Amazon
+    -- SageMaker Inference Recommender that matches your model.
+    --
+    -- Valid Values:
+    -- @efficientnetb7 | unet | xgboost | faster-rcnn-resnet101 | nasnetlarge | vgg16 | inception-v3 | mask-rcnn | sagemaker-scikit-learn | densenet201-gluon | resnet18v2-gluon | xception | densenet201 | yolov4 | resnet152 | bert-base-cased | xceptionV1-keras | resnet50 | retinanet@
+    nearestModelName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the @SamplePayloadUrl@ and all other sample payload-related
+    -- fields.
+    payloadConfig :: Prelude.Maybe RecommendationJobPayloadConfig,
+    -- | A list of the instance types that are used to generate inferences in
+    -- real-time.
+    supportedInstanceTypes :: Prelude.Maybe [Prelude.Text],
+    -- | The machine learning task that the model accomplishes.
+    --
+    -- Valid Values:
+    -- @IMAGE_CLASSIFICATION | OBJECT_DETECTION | TEXT_GENERATION | IMAGE_SEGMENTATION | FILL_MASK | CLASSIFICATION | REGRESSION | OTHER@
+    task :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobContainerConfig' 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:
+--
+-- 'domain', 'recommendationJobContainerConfig_domain' - The machine learning domain of the model and its components.
+--
+-- Valid Values:
+-- @COMPUTER_VISION | NATURAL_LANGUAGE_PROCESSING | MACHINE_LEARNING@
+--
+-- 'framework', 'recommendationJobContainerConfig_framework' - The machine learning framework of the container image.
+--
+-- Valid Values: @TENSORFLOW | PYTORCH | XGBOOST | SAGEMAKER-SCIKIT-LEARN@
+--
+-- 'frameworkVersion', 'recommendationJobContainerConfig_frameworkVersion' - The framework version of the container image.
+--
+-- 'nearestModelName', 'recommendationJobContainerConfig_nearestModelName' - The name of a pre-trained machine learning model benchmarked by Amazon
+-- SageMaker Inference Recommender that matches your model.
+--
+-- Valid Values:
+-- @efficientnetb7 | unet | xgboost | faster-rcnn-resnet101 | nasnetlarge | vgg16 | inception-v3 | mask-rcnn | sagemaker-scikit-learn | densenet201-gluon | resnet18v2-gluon | xception | densenet201 | yolov4 | resnet152 | bert-base-cased | xceptionV1-keras | resnet50 | retinanet@
+--
+-- 'payloadConfig', 'recommendationJobContainerConfig_payloadConfig' - Specifies the @SamplePayloadUrl@ and all other sample payload-related
+-- fields.
+--
+-- 'supportedInstanceTypes', 'recommendationJobContainerConfig_supportedInstanceTypes' - A list of the instance types that are used to generate inferences in
+-- real-time.
+--
+-- 'task', 'recommendationJobContainerConfig_task' - The machine learning task that the model accomplishes.
+--
+-- Valid Values:
+-- @IMAGE_CLASSIFICATION | OBJECT_DETECTION | TEXT_GENERATION | IMAGE_SEGMENTATION | FILL_MASK | CLASSIFICATION | REGRESSION | OTHER@
+newRecommendationJobContainerConfig ::
+  RecommendationJobContainerConfig
+newRecommendationJobContainerConfig =
+  RecommendationJobContainerConfig'
+    { domain =
+        Prelude.Nothing,
+      framework = Prelude.Nothing,
+      frameworkVersion = Prelude.Nothing,
+      nearestModelName = Prelude.Nothing,
+      payloadConfig = Prelude.Nothing,
+      supportedInstanceTypes = Prelude.Nothing,
+      task = Prelude.Nothing
+    }
+
+-- | The machine learning domain of the model and its components.
+--
+-- Valid Values:
+-- @COMPUTER_VISION | NATURAL_LANGUAGE_PROCESSING | MACHINE_LEARNING@
+recommendationJobContainerConfig_domain :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe Prelude.Text)
+recommendationJobContainerConfig_domain = Lens.lens (\RecommendationJobContainerConfig' {domain} -> domain) (\s@RecommendationJobContainerConfig' {} a -> s {domain = a} :: RecommendationJobContainerConfig)
+
+-- | The machine learning framework of the container image.
+--
+-- Valid Values: @TENSORFLOW | PYTORCH | XGBOOST | SAGEMAKER-SCIKIT-LEARN@
+recommendationJobContainerConfig_framework :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe Prelude.Text)
+recommendationJobContainerConfig_framework = Lens.lens (\RecommendationJobContainerConfig' {framework} -> framework) (\s@RecommendationJobContainerConfig' {} a -> s {framework = a} :: RecommendationJobContainerConfig)
+
+-- | The framework version of the container image.
+recommendationJobContainerConfig_frameworkVersion :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe Prelude.Text)
+recommendationJobContainerConfig_frameworkVersion = Lens.lens (\RecommendationJobContainerConfig' {frameworkVersion} -> frameworkVersion) (\s@RecommendationJobContainerConfig' {} a -> s {frameworkVersion = a} :: RecommendationJobContainerConfig)
+
+-- | The name of a pre-trained machine learning model benchmarked by Amazon
+-- SageMaker Inference Recommender that matches your model.
+--
+-- Valid Values:
+-- @efficientnetb7 | unet | xgboost | faster-rcnn-resnet101 | nasnetlarge | vgg16 | inception-v3 | mask-rcnn | sagemaker-scikit-learn | densenet201-gluon | resnet18v2-gluon | xception | densenet201 | yolov4 | resnet152 | bert-base-cased | xceptionV1-keras | resnet50 | retinanet@
+recommendationJobContainerConfig_nearestModelName :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe Prelude.Text)
+recommendationJobContainerConfig_nearestModelName = Lens.lens (\RecommendationJobContainerConfig' {nearestModelName} -> nearestModelName) (\s@RecommendationJobContainerConfig' {} a -> s {nearestModelName = a} :: RecommendationJobContainerConfig)
+
+-- | Specifies the @SamplePayloadUrl@ and all other sample payload-related
+-- fields.
+recommendationJobContainerConfig_payloadConfig :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe RecommendationJobPayloadConfig)
+recommendationJobContainerConfig_payloadConfig = Lens.lens (\RecommendationJobContainerConfig' {payloadConfig} -> payloadConfig) (\s@RecommendationJobContainerConfig' {} a -> s {payloadConfig = a} :: RecommendationJobContainerConfig)
+
+-- | A list of the instance types that are used to generate inferences in
+-- real-time.
+recommendationJobContainerConfig_supportedInstanceTypes :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe [Prelude.Text])
+recommendationJobContainerConfig_supportedInstanceTypes = Lens.lens (\RecommendationJobContainerConfig' {supportedInstanceTypes} -> supportedInstanceTypes) (\s@RecommendationJobContainerConfig' {} a -> s {supportedInstanceTypes = a} :: RecommendationJobContainerConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The machine learning task that the model accomplishes.
+--
+-- Valid Values:
+-- @IMAGE_CLASSIFICATION | OBJECT_DETECTION | TEXT_GENERATION | IMAGE_SEGMENTATION | FILL_MASK | CLASSIFICATION | REGRESSION | OTHER@
+recommendationJobContainerConfig_task :: Lens.Lens' RecommendationJobContainerConfig (Prelude.Maybe Prelude.Text)
+recommendationJobContainerConfig_task = Lens.lens (\RecommendationJobContainerConfig' {task} -> task) (\s@RecommendationJobContainerConfig' {} a -> s {task = a} :: RecommendationJobContainerConfig)
+
+instance
+  Data.FromJSON
+    RecommendationJobContainerConfig
+  where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobContainerConfig"
+      ( \x ->
+          RecommendationJobContainerConfig'
+            Prelude.<$> (x Data..:? "Domain")
+            Prelude.<*> (x Data..:? "Framework")
+            Prelude.<*> (x Data..:? "FrameworkVersion")
+            Prelude.<*> (x Data..:? "NearestModelName")
+            Prelude.<*> (x Data..:? "PayloadConfig")
+            Prelude.<*> ( x
+                            Data..:? "SupportedInstanceTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Task")
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationJobContainerConfig
+  where
+  hashWithSalt
+    _salt
+    RecommendationJobContainerConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` domain
+        `Prelude.hashWithSalt` framework
+        `Prelude.hashWithSalt` frameworkVersion
+        `Prelude.hashWithSalt` nearestModelName
+        `Prelude.hashWithSalt` payloadConfig
+        `Prelude.hashWithSalt` supportedInstanceTypes
+        `Prelude.hashWithSalt` task
+
+instance
+  Prelude.NFData
+    RecommendationJobContainerConfig
+  where
+  rnf RecommendationJobContainerConfig' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf framework
+      `Prelude.seq` Prelude.rnf frameworkVersion
+      `Prelude.seq` Prelude.rnf nearestModelName
+      `Prelude.seq` Prelude.rnf payloadConfig
+      `Prelude.seq` Prelude.rnf supportedInstanceTypes
+      `Prelude.seq` Prelude.rnf task
+
+instance Data.ToJSON RecommendationJobContainerConfig where
+  toJSON RecommendationJobContainerConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Domain" Data..=) Prelude.<$> domain,
+            ("Framework" Data..=) Prelude.<$> framework,
+            ("FrameworkVersion" Data..=)
+              Prelude.<$> frameworkVersion,
+            ("NearestModelName" Data..=)
+              Prelude.<$> nearestModelName,
+            ("PayloadConfig" Data..=) Prelude.<$> payloadConfig,
+            ("SupportedInstanceTypes" Data..=)
+              Prelude.<$> supportedInstanceTypes,
+            ("Task" Data..=) Prelude.<$> task
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobInferenceBenchmark.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobInferenceBenchmark.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobInferenceBenchmark.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobInferenceBenchmark
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobInferenceBenchmark 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 Amazonka.SageMaker.Types.EndpointOutputConfiguration
+import Amazonka.SageMaker.Types.ModelConfiguration
+import Amazonka.SageMaker.Types.RecommendationMetrics
+
+-- | The details for a specific benchmark from an Inference Recommender job.
+--
+-- /See:/ 'newRecommendationJobInferenceBenchmark' smart constructor.
+data RecommendationJobInferenceBenchmark = RecommendationJobInferenceBenchmark'
+  { endpointConfiguration :: Prelude.Maybe EndpointOutputConfiguration,
+    -- | The reason why a benchmark failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    metrics :: Prelude.Maybe RecommendationMetrics,
+    modelConfiguration :: ModelConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobInferenceBenchmark' 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:
+--
+-- 'endpointConfiguration', 'recommendationJobInferenceBenchmark_endpointConfiguration' - Undocumented member.
+--
+-- 'failureReason', 'recommendationJobInferenceBenchmark_failureReason' - The reason why a benchmark failed.
+--
+-- 'metrics', 'recommendationJobInferenceBenchmark_metrics' - Undocumented member.
+--
+-- 'modelConfiguration', 'recommendationJobInferenceBenchmark_modelConfiguration' - Undocumented member.
+newRecommendationJobInferenceBenchmark ::
+  -- | 'modelConfiguration'
+  ModelConfiguration ->
+  RecommendationJobInferenceBenchmark
+newRecommendationJobInferenceBenchmark
+  pModelConfiguration_ =
+    RecommendationJobInferenceBenchmark'
+      { endpointConfiguration =
+          Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        metrics = Prelude.Nothing,
+        modelConfiguration =
+          pModelConfiguration_
+      }
+
+-- | Undocumented member.
+recommendationJobInferenceBenchmark_endpointConfiguration :: Lens.Lens' RecommendationJobInferenceBenchmark (Prelude.Maybe EndpointOutputConfiguration)
+recommendationJobInferenceBenchmark_endpointConfiguration = Lens.lens (\RecommendationJobInferenceBenchmark' {endpointConfiguration} -> endpointConfiguration) (\s@RecommendationJobInferenceBenchmark' {} a -> s {endpointConfiguration = a} :: RecommendationJobInferenceBenchmark)
+
+-- | The reason why a benchmark failed.
+recommendationJobInferenceBenchmark_failureReason :: Lens.Lens' RecommendationJobInferenceBenchmark (Prelude.Maybe Prelude.Text)
+recommendationJobInferenceBenchmark_failureReason = Lens.lens (\RecommendationJobInferenceBenchmark' {failureReason} -> failureReason) (\s@RecommendationJobInferenceBenchmark' {} a -> s {failureReason = a} :: RecommendationJobInferenceBenchmark)
+
+-- | Undocumented member.
+recommendationJobInferenceBenchmark_metrics :: Lens.Lens' RecommendationJobInferenceBenchmark (Prelude.Maybe RecommendationMetrics)
+recommendationJobInferenceBenchmark_metrics = Lens.lens (\RecommendationJobInferenceBenchmark' {metrics} -> metrics) (\s@RecommendationJobInferenceBenchmark' {} a -> s {metrics = a} :: RecommendationJobInferenceBenchmark)
+
+-- | Undocumented member.
+recommendationJobInferenceBenchmark_modelConfiguration :: Lens.Lens' RecommendationJobInferenceBenchmark ModelConfiguration
+recommendationJobInferenceBenchmark_modelConfiguration = Lens.lens (\RecommendationJobInferenceBenchmark' {modelConfiguration} -> modelConfiguration) (\s@RecommendationJobInferenceBenchmark' {} a -> s {modelConfiguration = a} :: RecommendationJobInferenceBenchmark)
+
+instance
+  Data.FromJSON
+    RecommendationJobInferenceBenchmark
+  where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobInferenceBenchmark"
+      ( \x ->
+          RecommendationJobInferenceBenchmark'
+            Prelude.<$> (x Data..:? "EndpointConfiguration")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "Metrics")
+            Prelude.<*> (x Data..: "ModelConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationJobInferenceBenchmark
+  where
+  hashWithSalt
+    _salt
+    RecommendationJobInferenceBenchmark' {..} =
+      _salt
+        `Prelude.hashWithSalt` endpointConfiguration
+        `Prelude.hashWithSalt` failureReason
+        `Prelude.hashWithSalt` metrics
+        `Prelude.hashWithSalt` modelConfiguration
+
+instance
+  Prelude.NFData
+    RecommendationJobInferenceBenchmark
+  where
+  rnf RecommendationJobInferenceBenchmark' {..} =
+    Prelude.rnf endpointConfiguration
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf metrics
+      `Prelude.seq` Prelude.rnf modelConfiguration
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobInputConfig.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobInputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobInputConfig.hs
@@ -0,0 +1,317 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobInputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobInputConfig 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 Amazonka.SageMaker.Types.EndpointInfo
+import Amazonka.SageMaker.Types.EndpointInputConfiguration
+import Amazonka.SageMaker.Types.RecommendationJobContainerConfig
+import Amazonka.SageMaker.Types.RecommendationJobResourceLimit
+import Amazonka.SageMaker.Types.RecommendationJobVpcConfig
+import Amazonka.SageMaker.Types.TrafficPattern
+
+-- | The input configuration of the recommendation job.
+--
+-- /See:/ 'newRecommendationJobInputConfig' smart constructor.
+data RecommendationJobInputConfig = RecommendationJobInputConfig'
+  { -- | Specifies mandatory fields for running an Inference Recommender job. The
+    -- fields specified in @ContainerConfig@ override the corresponding fields
+    -- in the model package.
+    containerConfig :: Prelude.Maybe RecommendationJobContainerConfig,
+    -- | Specifies the endpoint configuration to use for a job.
+    endpointConfigurations :: Prelude.Maybe (Prelude.NonEmpty EndpointInputConfiguration),
+    -- | Existing customer endpoints on which to run an Inference Recommender
+    -- job.
+    endpoints :: Prelude.Maybe [EndpointInfo],
+    -- | Specifies the maximum duration of the job, in seconds.>
+    jobDurationInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Defines the resource limit of the job.
+    resourceLimit :: Prelude.Maybe RecommendationJobResourceLimit,
+    -- | Specifies the traffic pattern of the job.
+    trafficPattern :: Prelude.Maybe TrafficPattern,
+    -- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+    -- Service (Amazon Web Services KMS) key that Amazon SageMaker uses to
+    -- encrypt data on the storage volume attached to the ML compute instance
+    -- that hosts the endpoint. This key will be passed to SageMaker Hosting
+    -- for endpoint creation.
+    --
+    -- The SageMaker execution role must have @kms:CreateGrant@ permission in
+    -- order to encrypt data on the storage volume of the endpoints created for
+    -- inference recommendation. The inference recommendation job will fail
+    -- asynchronously during endpoint configuration creation if the role passed
+    -- does not have @kms:CreateGrant@ permission.
+    --
+    -- The @KmsKeyId@ can be any of the following formats:
+    --
+    -- -   \/\/ KMS Key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+    --
+    --     @\"arn:aws:kms:\<region>:\<account>:key\/\<key-id-12ab-34cd-56ef-1234567890ab>\"@
+    --
+    -- -   \/\/ KMS Key Alias
+    --
+    --     @\"alias\/ExampleAlias\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+    --
+    --     @\"arn:aws:kms:\<region>:\<account>:alias\/\<ExampleAlias>\"@
+    --
+    -- For more information about key identifiers, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id Key identifiers (KeyID)>
+    -- in the Amazon Web Services Key Management Service (Amazon Web Services
+    -- KMS) documentation.
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Inference Recommender provisions SageMaker endpoints with access to VPC
+    -- in the inference recommendation job.
+    vpcConfig :: Prelude.Maybe RecommendationJobVpcConfig,
+    -- | The Amazon Resource Name (ARN) of a versioned model package.
+    modelPackageVersionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobInputConfig' 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:
+--
+-- 'containerConfig', 'recommendationJobInputConfig_containerConfig' - Specifies mandatory fields for running an Inference Recommender job. The
+-- fields specified in @ContainerConfig@ override the corresponding fields
+-- in the model package.
+--
+-- 'endpointConfigurations', 'recommendationJobInputConfig_endpointConfigurations' - Specifies the endpoint configuration to use for a job.
+--
+-- 'endpoints', 'recommendationJobInputConfig_endpoints' - Existing customer endpoints on which to run an Inference Recommender
+-- job.
+--
+-- 'jobDurationInSeconds', 'recommendationJobInputConfig_jobDurationInSeconds' - Specifies the maximum duration of the job, in seconds.>
+--
+-- 'resourceLimit', 'recommendationJobInputConfig_resourceLimit' - Defines the resource limit of the job.
+--
+-- 'trafficPattern', 'recommendationJobInputConfig_trafficPattern' - Specifies the traffic pattern of the job.
+--
+-- 'volumeKmsKeyId', 'recommendationJobInputConfig_volumeKmsKeyId' - The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service (Amazon Web Services KMS) key that Amazon SageMaker uses to
+-- encrypt data on the storage volume attached to the ML compute instance
+-- that hosts the endpoint. This key will be passed to SageMaker Hosting
+-- for endpoint creation.
+--
+-- The SageMaker execution role must have @kms:CreateGrant@ permission in
+-- order to encrypt data on the storage volume of the endpoints created for
+-- inference recommendation. The inference recommendation job will fail
+-- asynchronously during endpoint configuration creation if the role passed
+-- does not have @kms:CreateGrant@ permission.
+--
+-- The @KmsKeyId@ can be any of the following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:\<region>:\<account>:key\/\<key-id-12ab-34cd-56ef-1234567890ab>\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:\<region>:\<account>:alias\/\<ExampleAlias>\"@
+--
+-- For more information about key identifiers, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id Key identifiers (KeyID)>
+-- in the Amazon Web Services Key Management Service (Amazon Web Services
+-- KMS) documentation.
+--
+-- 'vpcConfig', 'recommendationJobInputConfig_vpcConfig' - Inference Recommender provisions SageMaker endpoints with access to VPC
+-- in the inference recommendation job.
+--
+-- 'modelPackageVersionArn', 'recommendationJobInputConfig_modelPackageVersionArn' - The Amazon Resource Name (ARN) of a versioned model package.
+newRecommendationJobInputConfig ::
+  -- | 'modelPackageVersionArn'
+  Prelude.Text ->
+  RecommendationJobInputConfig
+newRecommendationJobInputConfig
+  pModelPackageVersionArn_ =
+    RecommendationJobInputConfig'
+      { containerConfig =
+          Prelude.Nothing,
+        endpointConfigurations = Prelude.Nothing,
+        endpoints = Prelude.Nothing,
+        jobDurationInSeconds = Prelude.Nothing,
+        resourceLimit = Prelude.Nothing,
+        trafficPattern = Prelude.Nothing,
+        volumeKmsKeyId = Prelude.Nothing,
+        vpcConfig = Prelude.Nothing,
+        modelPackageVersionArn =
+          pModelPackageVersionArn_
+      }
+
+-- | Specifies mandatory fields for running an Inference Recommender job. The
+-- fields specified in @ContainerConfig@ override the corresponding fields
+-- in the model package.
+recommendationJobInputConfig_containerConfig :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe RecommendationJobContainerConfig)
+recommendationJobInputConfig_containerConfig = Lens.lens (\RecommendationJobInputConfig' {containerConfig} -> containerConfig) (\s@RecommendationJobInputConfig' {} a -> s {containerConfig = a} :: RecommendationJobInputConfig)
+
+-- | Specifies the endpoint configuration to use for a job.
+recommendationJobInputConfig_endpointConfigurations :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe (Prelude.NonEmpty EndpointInputConfiguration))
+recommendationJobInputConfig_endpointConfigurations = Lens.lens (\RecommendationJobInputConfig' {endpointConfigurations} -> endpointConfigurations) (\s@RecommendationJobInputConfig' {} a -> s {endpointConfigurations = a} :: RecommendationJobInputConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Existing customer endpoints on which to run an Inference Recommender
+-- job.
+recommendationJobInputConfig_endpoints :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe [EndpointInfo])
+recommendationJobInputConfig_endpoints = Lens.lens (\RecommendationJobInputConfig' {endpoints} -> endpoints) (\s@RecommendationJobInputConfig' {} a -> s {endpoints = a} :: RecommendationJobInputConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the maximum duration of the job, in seconds.>
+recommendationJobInputConfig_jobDurationInSeconds :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe Prelude.Natural)
+recommendationJobInputConfig_jobDurationInSeconds = Lens.lens (\RecommendationJobInputConfig' {jobDurationInSeconds} -> jobDurationInSeconds) (\s@RecommendationJobInputConfig' {} a -> s {jobDurationInSeconds = a} :: RecommendationJobInputConfig)
+
+-- | Defines the resource limit of the job.
+recommendationJobInputConfig_resourceLimit :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe RecommendationJobResourceLimit)
+recommendationJobInputConfig_resourceLimit = Lens.lens (\RecommendationJobInputConfig' {resourceLimit} -> resourceLimit) (\s@RecommendationJobInputConfig' {} a -> s {resourceLimit = a} :: RecommendationJobInputConfig)
+
+-- | Specifies the traffic pattern of the job.
+recommendationJobInputConfig_trafficPattern :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe TrafficPattern)
+recommendationJobInputConfig_trafficPattern = Lens.lens (\RecommendationJobInputConfig' {trafficPattern} -> trafficPattern) (\s@RecommendationJobInputConfig' {} a -> s {trafficPattern = a} :: RecommendationJobInputConfig)
+
+-- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service (Amazon Web Services KMS) key that Amazon SageMaker uses to
+-- encrypt data on the storage volume attached to the ML compute instance
+-- that hosts the endpoint. This key will be passed to SageMaker Hosting
+-- for endpoint creation.
+--
+-- The SageMaker execution role must have @kms:CreateGrant@ permission in
+-- order to encrypt data on the storage volume of the endpoints created for
+-- inference recommendation. The inference recommendation job will fail
+-- asynchronously during endpoint configuration creation if the role passed
+-- does not have @kms:CreateGrant@ permission.
+--
+-- The @KmsKeyId@ can be any of the following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:\<region>:\<account>:key\/\<key-id-12ab-34cd-56ef-1234567890ab>\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:\<region>:\<account>:alias\/\<ExampleAlias>\"@
+--
+-- For more information about key identifiers, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id Key identifiers (KeyID)>
+-- in the Amazon Web Services Key Management Service (Amazon Web Services
+-- KMS) documentation.
+recommendationJobInputConfig_volumeKmsKeyId :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe Prelude.Text)
+recommendationJobInputConfig_volumeKmsKeyId = Lens.lens (\RecommendationJobInputConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@RecommendationJobInputConfig' {} a -> s {volumeKmsKeyId = a} :: RecommendationJobInputConfig)
+
+-- | Inference Recommender provisions SageMaker endpoints with access to VPC
+-- in the inference recommendation job.
+recommendationJobInputConfig_vpcConfig :: Lens.Lens' RecommendationJobInputConfig (Prelude.Maybe RecommendationJobVpcConfig)
+recommendationJobInputConfig_vpcConfig = Lens.lens (\RecommendationJobInputConfig' {vpcConfig} -> vpcConfig) (\s@RecommendationJobInputConfig' {} a -> s {vpcConfig = a} :: RecommendationJobInputConfig)
+
+-- | The Amazon Resource Name (ARN) of a versioned model package.
+recommendationJobInputConfig_modelPackageVersionArn :: Lens.Lens' RecommendationJobInputConfig Prelude.Text
+recommendationJobInputConfig_modelPackageVersionArn = Lens.lens (\RecommendationJobInputConfig' {modelPackageVersionArn} -> modelPackageVersionArn) (\s@RecommendationJobInputConfig' {} a -> s {modelPackageVersionArn = a} :: RecommendationJobInputConfig)
+
+instance Data.FromJSON RecommendationJobInputConfig where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobInputConfig"
+      ( \x ->
+          RecommendationJobInputConfig'
+            Prelude.<$> (x Data..:? "ContainerConfig")
+            Prelude.<*> (x Data..:? "EndpointConfigurations")
+            Prelude.<*> (x Data..:? "Endpoints" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "JobDurationInSeconds")
+            Prelude.<*> (x Data..:? "ResourceLimit")
+            Prelude.<*> (x Data..:? "TrafficPattern")
+            Prelude.<*> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..:? "VpcConfig")
+            Prelude.<*> (x Data..: "ModelPackageVersionArn")
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationJobInputConfig
+  where
+  hashWithSalt _salt RecommendationJobInputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerConfig
+      `Prelude.hashWithSalt` endpointConfigurations
+      `Prelude.hashWithSalt` endpoints
+      `Prelude.hashWithSalt` jobDurationInSeconds
+      `Prelude.hashWithSalt` resourceLimit
+      `Prelude.hashWithSalt` trafficPattern
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` vpcConfig
+      `Prelude.hashWithSalt` modelPackageVersionArn
+
+instance Prelude.NFData RecommendationJobInputConfig where
+  rnf RecommendationJobInputConfig' {..} =
+    Prelude.rnf containerConfig
+      `Prelude.seq` Prelude.rnf endpointConfigurations
+      `Prelude.seq` Prelude.rnf endpoints
+      `Prelude.seq` Prelude.rnf jobDurationInSeconds
+      `Prelude.seq` Prelude.rnf resourceLimit
+      `Prelude.seq` Prelude.rnf trafficPattern
+      `Prelude.seq` Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf vpcConfig
+      `Prelude.seq` Prelude.rnf modelPackageVersionArn
+
+instance Data.ToJSON RecommendationJobInputConfig where
+  toJSON RecommendationJobInputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerConfig" Data..=)
+              Prelude.<$> containerConfig,
+            ("EndpointConfigurations" Data..=)
+              Prelude.<$> endpointConfigurations,
+            ("Endpoints" Data..=) Prelude.<$> endpoints,
+            ("JobDurationInSeconds" Data..=)
+              Prelude.<$> jobDurationInSeconds,
+            ("ResourceLimit" Data..=) Prelude.<$> resourceLimit,
+            ("TrafficPattern" Data..=)
+              Prelude.<$> trafficPattern,
+            ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            ("VpcConfig" Data..=) Prelude.<$> vpcConfig,
+            Prelude.Just
+              ( "ModelPackageVersionArn"
+                  Data..= modelPackageVersionArn
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobOutputConfig.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobOutputConfig.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobOutputConfig 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 Amazonka.SageMaker.Types.RecommendationJobCompiledOutputConfig
+
+-- | Provides information about the output configuration for the compiled
+-- model.
+--
+-- /See:/ 'newRecommendationJobOutputConfig' smart constructor.
+data RecommendationJobOutputConfig = RecommendationJobOutputConfig'
+  { -- | Provides information about the output configuration for the compiled
+    -- model.
+    compiledOutputConfig :: Prelude.Maybe RecommendationJobCompiledOutputConfig,
+    -- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+    -- Service (Amazon Web Services KMS) key that Amazon SageMaker uses to
+    -- encrypt your output artifacts with Amazon S3 server-side encryption. The
+    -- SageMaker execution role must have @kms:GenerateDataKey@ permission.
+    --
+    -- The @KmsKeyId@ can be any of the following formats:
+    --
+    -- -   \/\/ KMS Key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+    --
+    --     @\"arn:aws:kms:\<region>:\<account>:key\/\<key-id-12ab-34cd-56ef-1234567890ab>\"@
+    --
+    -- -   \/\/ KMS Key Alias
+    --
+    --     @\"alias\/ExampleAlias\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+    --
+    --     @\"arn:aws:kms:\<region>:\<account>:alias\/\<ExampleAlias>\"@
+    --
+    -- For more information about key identifiers, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id Key identifiers (KeyID)>
+    -- in the Amazon Web Services Key Management Service (Amazon Web Services
+    -- KMS) documentation.
+    kmsKeyId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobOutputConfig' 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:
+--
+-- 'compiledOutputConfig', 'recommendationJobOutputConfig_compiledOutputConfig' - Provides information about the output configuration for the compiled
+-- model.
+--
+-- 'kmsKeyId', 'recommendationJobOutputConfig_kmsKeyId' - The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service (Amazon Web Services KMS) key that Amazon SageMaker uses to
+-- encrypt your output artifacts with Amazon S3 server-side encryption. The
+-- SageMaker execution role must have @kms:GenerateDataKey@ permission.
+--
+-- The @KmsKeyId@ can be any of the following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:\<region>:\<account>:key\/\<key-id-12ab-34cd-56ef-1234567890ab>\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:\<region>:\<account>:alias\/\<ExampleAlias>\"@
+--
+-- For more information about key identifiers, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id Key identifiers (KeyID)>
+-- in the Amazon Web Services Key Management Service (Amazon Web Services
+-- KMS) documentation.
+newRecommendationJobOutputConfig ::
+  RecommendationJobOutputConfig
+newRecommendationJobOutputConfig =
+  RecommendationJobOutputConfig'
+    { compiledOutputConfig =
+        Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing
+    }
+
+-- | Provides information about the output configuration for the compiled
+-- model.
+recommendationJobOutputConfig_compiledOutputConfig :: Lens.Lens' RecommendationJobOutputConfig (Prelude.Maybe RecommendationJobCompiledOutputConfig)
+recommendationJobOutputConfig_compiledOutputConfig = Lens.lens (\RecommendationJobOutputConfig' {compiledOutputConfig} -> compiledOutputConfig) (\s@RecommendationJobOutputConfig' {} a -> s {compiledOutputConfig = a} :: RecommendationJobOutputConfig)
+
+-- | The Amazon Resource Name (ARN) of a Amazon Web Services Key Management
+-- Service (Amazon Web Services KMS) key that Amazon SageMaker uses to
+-- encrypt your output artifacts with Amazon S3 server-side encryption. The
+-- SageMaker execution role must have @kms:GenerateDataKey@ permission.
+--
+-- The @KmsKeyId@ can be any of the following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:\<region>:\<account>:key\/\<key-id-12ab-34cd-56ef-1234567890ab>\"@
+--
+-- -   \/\/ KMS Key Alias
+--
+--     @\"alias\/ExampleAlias\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key Alias
+--
+--     @\"arn:aws:kms:\<region>:\<account>:alias\/\<ExampleAlias>\"@
+--
+-- For more information about key identifiers, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id Key identifiers (KeyID)>
+-- in the Amazon Web Services Key Management Service (Amazon Web Services
+-- KMS) documentation.
+recommendationJobOutputConfig_kmsKeyId :: Lens.Lens' RecommendationJobOutputConfig (Prelude.Maybe Prelude.Text)
+recommendationJobOutputConfig_kmsKeyId = Lens.lens (\RecommendationJobOutputConfig' {kmsKeyId} -> kmsKeyId) (\s@RecommendationJobOutputConfig' {} a -> s {kmsKeyId = a} :: RecommendationJobOutputConfig)
+
+instance
+  Prelude.Hashable
+    RecommendationJobOutputConfig
+  where
+  hashWithSalt _salt RecommendationJobOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` compiledOutputConfig
+      `Prelude.hashWithSalt` kmsKeyId
+
+instance Prelude.NFData RecommendationJobOutputConfig where
+  rnf RecommendationJobOutputConfig' {..} =
+    Prelude.rnf compiledOutputConfig
+      `Prelude.seq` Prelude.rnf kmsKeyId
+
+instance Data.ToJSON RecommendationJobOutputConfig where
+  toJSON RecommendationJobOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CompiledOutputConfig" Data..=)
+              Prelude.<$> compiledOutputConfig,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobPayloadConfig.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobPayloadConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobPayloadConfig.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobPayloadConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobPayloadConfig 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
+
+-- | The configuration for the payload for a recommendation job.
+--
+-- /See:/ 'newRecommendationJobPayloadConfig' smart constructor.
+data RecommendationJobPayloadConfig = RecommendationJobPayloadConfig'
+  { -- | The Amazon Simple Storage Service (Amazon S3) path where the sample
+    -- payload is stored. This path must point to a single gzip compressed tar
+    -- archive (.tar.gz suffix).
+    samplePayloadUrl :: Prelude.Maybe Prelude.Text,
+    -- | The supported MIME types for the input data.
+    supportedContentTypes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobPayloadConfig' 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:
+--
+-- 'samplePayloadUrl', 'recommendationJobPayloadConfig_samplePayloadUrl' - The Amazon Simple Storage Service (Amazon S3) path where the sample
+-- payload is stored. This path must point to a single gzip compressed tar
+-- archive (.tar.gz suffix).
+--
+-- 'supportedContentTypes', 'recommendationJobPayloadConfig_supportedContentTypes' - The supported MIME types for the input data.
+newRecommendationJobPayloadConfig ::
+  RecommendationJobPayloadConfig
+newRecommendationJobPayloadConfig =
+  RecommendationJobPayloadConfig'
+    { samplePayloadUrl =
+        Prelude.Nothing,
+      supportedContentTypes = Prelude.Nothing
+    }
+
+-- | The Amazon Simple Storage Service (Amazon S3) path where the sample
+-- payload is stored. This path must point to a single gzip compressed tar
+-- archive (.tar.gz suffix).
+recommendationJobPayloadConfig_samplePayloadUrl :: Lens.Lens' RecommendationJobPayloadConfig (Prelude.Maybe Prelude.Text)
+recommendationJobPayloadConfig_samplePayloadUrl = Lens.lens (\RecommendationJobPayloadConfig' {samplePayloadUrl} -> samplePayloadUrl) (\s@RecommendationJobPayloadConfig' {} a -> s {samplePayloadUrl = a} :: RecommendationJobPayloadConfig)
+
+-- | The supported MIME types for the input data.
+recommendationJobPayloadConfig_supportedContentTypes :: Lens.Lens' RecommendationJobPayloadConfig (Prelude.Maybe [Prelude.Text])
+recommendationJobPayloadConfig_supportedContentTypes = Lens.lens (\RecommendationJobPayloadConfig' {supportedContentTypes} -> supportedContentTypes) (\s@RecommendationJobPayloadConfig' {} a -> s {supportedContentTypes = a} :: RecommendationJobPayloadConfig) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON RecommendationJobPayloadConfig where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobPayloadConfig"
+      ( \x ->
+          RecommendationJobPayloadConfig'
+            Prelude.<$> (x Data..:? "SamplePayloadUrl")
+            Prelude.<*> ( x
+                            Data..:? "SupportedContentTypes"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationJobPayloadConfig
+  where
+  hashWithSalt
+    _salt
+    RecommendationJobPayloadConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` samplePayloadUrl
+        `Prelude.hashWithSalt` supportedContentTypes
+
+instance
+  Prelude.NFData
+    RecommendationJobPayloadConfig
+  where
+  rnf RecommendationJobPayloadConfig' {..} =
+    Prelude.rnf samplePayloadUrl
+      `Prelude.seq` Prelude.rnf supportedContentTypes
+
+instance Data.ToJSON RecommendationJobPayloadConfig where
+  toJSON RecommendationJobPayloadConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SamplePayloadUrl" Data..=)
+              Prelude.<$> samplePayloadUrl,
+            ("SupportedContentTypes" Data..=)
+              Prelude.<$> supportedContentTypes
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobResourceLimit.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobResourceLimit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobResourceLimit.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobResourceLimit
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobResourceLimit 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
+
+-- | Specifies the maximum number of jobs that can run in parallel and the
+-- maximum number of jobs that can run.
+--
+-- /See:/ 'newRecommendationJobResourceLimit' smart constructor.
+data RecommendationJobResourceLimit = RecommendationJobResourceLimit'
+  { -- | Defines the maximum number of load tests.
+    maxNumberOfTests :: Prelude.Maybe Prelude.Natural,
+    -- | Defines the maximum number of parallel load tests.
+    maxParallelOfTests :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobResourceLimit' 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:
+--
+-- 'maxNumberOfTests', 'recommendationJobResourceLimit_maxNumberOfTests' - Defines the maximum number of load tests.
+--
+-- 'maxParallelOfTests', 'recommendationJobResourceLimit_maxParallelOfTests' - Defines the maximum number of parallel load tests.
+newRecommendationJobResourceLimit ::
+  RecommendationJobResourceLimit
+newRecommendationJobResourceLimit =
+  RecommendationJobResourceLimit'
+    { maxNumberOfTests =
+        Prelude.Nothing,
+      maxParallelOfTests = Prelude.Nothing
+    }
+
+-- | Defines the maximum number of load tests.
+recommendationJobResourceLimit_maxNumberOfTests :: Lens.Lens' RecommendationJobResourceLimit (Prelude.Maybe Prelude.Natural)
+recommendationJobResourceLimit_maxNumberOfTests = Lens.lens (\RecommendationJobResourceLimit' {maxNumberOfTests} -> maxNumberOfTests) (\s@RecommendationJobResourceLimit' {} a -> s {maxNumberOfTests = a} :: RecommendationJobResourceLimit)
+
+-- | Defines the maximum number of parallel load tests.
+recommendationJobResourceLimit_maxParallelOfTests :: Lens.Lens' RecommendationJobResourceLimit (Prelude.Maybe Prelude.Natural)
+recommendationJobResourceLimit_maxParallelOfTests = Lens.lens (\RecommendationJobResourceLimit' {maxParallelOfTests} -> maxParallelOfTests) (\s@RecommendationJobResourceLimit' {} a -> s {maxParallelOfTests = a} :: RecommendationJobResourceLimit)
+
+instance Data.FromJSON RecommendationJobResourceLimit where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobResourceLimit"
+      ( \x ->
+          RecommendationJobResourceLimit'
+            Prelude.<$> (x Data..:? "MaxNumberOfTests")
+            Prelude.<*> (x Data..:? "MaxParallelOfTests")
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationJobResourceLimit
+  where
+  hashWithSalt
+    _salt
+    RecommendationJobResourceLimit' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxNumberOfTests
+        `Prelude.hashWithSalt` maxParallelOfTests
+
+instance
+  Prelude.NFData
+    RecommendationJobResourceLimit
+  where
+  rnf RecommendationJobResourceLimit' {..} =
+    Prelude.rnf maxNumberOfTests
+      `Prelude.seq` Prelude.rnf maxParallelOfTests
+
+instance Data.ToJSON RecommendationJobResourceLimit where
+  toJSON RecommendationJobResourceLimit' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxNumberOfTests" Data..=)
+              Prelude.<$> maxNumberOfTests,
+            ("MaxParallelOfTests" Data..=)
+              Prelude.<$> maxParallelOfTests
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobStatus.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RecommendationJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobStatus
+  ( RecommendationJobStatus
+      ( ..,
+        RecommendationJobStatus_COMPLETED,
+        RecommendationJobStatus_FAILED,
+        RecommendationJobStatus_IN_PROGRESS,
+        RecommendationJobStatus_PENDING,
+        RecommendationJobStatus_STOPPED,
+        RecommendationJobStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RecommendationJobStatus = RecommendationJobStatus'
+  { fromRecommendationJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RecommendationJobStatus_COMPLETED :: RecommendationJobStatus
+pattern RecommendationJobStatus_COMPLETED = RecommendationJobStatus' "COMPLETED"
+
+pattern RecommendationJobStatus_FAILED :: RecommendationJobStatus
+pattern RecommendationJobStatus_FAILED = RecommendationJobStatus' "FAILED"
+
+pattern RecommendationJobStatus_IN_PROGRESS :: RecommendationJobStatus
+pattern RecommendationJobStatus_IN_PROGRESS = RecommendationJobStatus' "IN_PROGRESS"
+
+pattern RecommendationJobStatus_PENDING :: RecommendationJobStatus
+pattern RecommendationJobStatus_PENDING = RecommendationJobStatus' "PENDING"
+
+pattern RecommendationJobStatus_STOPPED :: RecommendationJobStatus
+pattern RecommendationJobStatus_STOPPED = RecommendationJobStatus' "STOPPED"
+
+pattern RecommendationJobStatus_STOPPING :: RecommendationJobStatus
+pattern RecommendationJobStatus_STOPPING = RecommendationJobStatus' "STOPPING"
+
+{-# COMPLETE
+  RecommendationJobStatus_COMPLETED,
+  RecommendationJobStatus_FAILED,
+  RecommendationJobStatus_IN_PROGRESS,
+  RecommendationJobStatus_PENDING,
+  RecommendationJobStatus_STOPPED,
+  RecommendationJobStatus_STOPPING,
+  RecommendationJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobStoppingConditions.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobStoppingConditions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobStoppingConditions.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobStoppingConditions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobStoppingConditions 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 Amazonka.SageMaker.Types.ModelLatencyThreshold
+
+-- | Specifies conditions for stopping a job. When a job reaches a stopping
+-- condition limit, SageMaker ends the job.
+--
+-- /See:/ 'newRecommendationJobStoppingConditions' smart constructor.
+data RecommendationJobStoppingConditions = RecommendationJobStoppingConditions'
+  { -- | The maximum number of requests per minute expected for the endpoint.
+    maxInvocations :: Prelude.Maybe Prelude.Int,
+    -- | The interval of time taken by a model to respond as viewed from
+    -- SageMaker. The interval includes the local communication time taken to
+    -- send the request and to fetch the response from the container of a model
+    -- and the time taken to complete the inference in the container.
+    modelLatencyThresholds :: Prelude.Maybe (Prelude.NonEmpty ModelLatencyThreshold)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobStoppingConditions' 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:
+--
+-- 'maxInvocations', 'recommendationJobStoppingConditions_maxInvocations' - The maximum number of requests per minute expected for the endpoint.
+--
+-- 'modelLatencyThresholds', 'recommendationJobStoppingConditions_modelLatencyThresholds' - The interval of time taken by a model to respond as viewed from
+-- SageMaker. The interval includes the local communication time taken to
+-- send the request and to fetch the response from the container of a model
+-- and the time taken to complete the inference in the container.
+newRecommendationJobStoppingConditions ::
+  RecommendationJobStoppingConditions
+newRecommendationJobStoppingConditions =
+  RecommendationJobStoppingConditions'
+    { maxInvocations =
+        Prelude.Nothing,
+      modelLatencyThresholds =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of requests per minute expected for the endpoint.
+recommendationJobStoppingConditions_maxInvocations :: Lens.Lens' RecommendationJobStoppingConditions (Prelude.Maybe Prelude.Int)
+recommendationJobStoppingConditions_maxInvocations = Lens.lens (\RecommendationJobStoppingConditions' {maxInvocations} -> maxInvocations) (\s@RecommendationJobStoppingConditions' {} a -> s {maxInvocations = a} :: RecommendationJobStoppingConditions)
+
+-- | The interval of time taken by a model to respond as viewed from
+-- SageMaker. The interval includes the local communication time taken to
+-- send the request and to fetch the response from the container of a model
+-- and the time taken to complete the inference in the container.
+recommendationJobStoppingConditions_modelLatencyThresholds :: Lens.Lens' RecommendationJobStoppingConditions (Prelude.Maybe (Prelude.NonEmpty ModelLatencyThreshold))
+recommendationJobStoppingConditions_modelLatencyThresholds = Lens.lens (\RecommendationJobStoppingConditions' {modelLatencyThresholds} -> modelLatencyThresholds) (\s@RecommendationJobStoppingConditions' {} a -> s {modelLatencyThresholds = a} :: RecommendationJobStoppingConditions) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    RecommendationJobStoppingConditions
+  where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobStoppingConditions"
+      ( \x ->
+          RecommendationJobStoppingConditions'
+            Prelude.<$> (x Data..:? "MaxInvocations")
+            Prelude.<*> (x Data..:? "ModelLatencyThresholds")
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationJobStoppingConditions
+  where
+  hashWithSalt
+    _salt
+    RecommendationJobStoppingConditions' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxInvocations
+        `Prelude.hashWithSalt` modelLatencyThresholds
+
+instance
+  Prelude.NFData
+    RecommendationJobStoppingConditions
+  where
+  rnf RecommendationJobStoppingConditions' {..} =
+    Prelude.rnf maxInvocations
+      `Prelude.seq` Prelude.rnf modelLatencyThresholds
+
+instance
+  Data.ToJSON
+    RecommendationJobStoppingConditions
+  where
+  toJSON RecommendationJobStoppingConditions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxInvocations" Data..=)
+              Prelude.<$> maxInvocations,
+            ("ModelLatencyThresholds" Data..=)
+              Prelude.<$> modelLatencyThresholds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobType.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RecommendationJobType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobType
+  ( RecommendationJobType
+      ( ..,
+        RecommendationJobType_Advanced,
+        RecommendationJobType_Default
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RecommendationJobType = RecommendationJobType'
+  { fromRecommendationJobType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RecommendationJobType_Advanced :: RecommendationJobType
+pattern RecommendationJobType_Advanced = RecommendationJobType' "Advanced"
+
+pattern RecommendationJobType_Default :: RecommendationJobType
+pattern RecommendationJobType_Default = RecommendationJobType' "Default"
+
+{-# COMPLETE
+  RecommendationJobType_Advanced,
+  RecommendationJobType_Default,
+  RecommendationJobType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationJobVpcConfig.hs b/gen/Amazonka/SageMaker/Types/RecommendationJobVpcConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationJobVpcConfig.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationJobVpcConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationJobVpcConfig 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
+
+-- | Inference Recommender provisions SageMaker endpoints with access to VPC
+-- in the inference recommendation job.
+--
+-- /See:/ 'newRecommendationJobVpcConfig' smart constructor.
+data RecommendationJobVpcConfig = RecommendationJobVpcConfig'
+  { -- | The VPC security group IDs. IDs have the form of @sg-xxxxxxxx@. Specify
+    -- the security groups for the VPC that is specified in the @Subnets@
+    -- field.
+    securityGroupIds :: Prelude.NonEmpty Prelude.Text,
+    -- | The ID of the subnets in the VPC to which you want to connect your
+    -- model.
+    subnets :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationJobVpcConfig' 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:
+--
+-- 'securityGroupIds', 'recommendationJobVpcConfig_securityGroupIds' - The VPC security group IDs. IDs have the form of @sg-xxxxxxxx@. Specify
+-- the security groups for the VPC that is specified in the @Subnets@
+-- field.
+--
+-- 'subnets', 'recommendationJobVpcConfig_subnets' - The ID of the subnets in the VPC to which you want to connect your
+-- model.
+newRecommendationJobVpcConfig ::
+  -- | 'securityGroupIds'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'subnets'
+  Prelude.NonEmpty Prelude.Text ->
+  RecommendationJobVpcConfig
+newRecommendationJobVpcConfig
+  pSecurityGroupIds_
+  pSubnets_ =
+    RecommendationJobVpcConfig'
+      { securityGroupIds =
+          Lens.coerced Lens.# pSecurityGroupIds_,
+        subnets = Lens.coerced Lens.# pSubnets_
+      }
+
+-- | The VPC security group IDs. IDs have the form of @sg-xxxxxxxx@. Specify
+-- the security groups for the VPC that is specified in the @Subnets@
+-- field.
+recommendationJobVpcConfig_securityGroupIds :: Lens.Lens' RecommendationJobVpcConfig (Prelude.NonEmpty Prelude.Text)
+recommendationJobVpcConfig_securityGroupIds = Lens.lens (\RecommendationJobVpcConfig' {securityGroupIds} -> securityGroupIds) (\s@RecommendationJobVpcConfig' {} a -> s {securityGroupIds = a} :: RecommendationJobVpcConfig) Prelude.. Lens.coerced
+
+-- | The ID of the subnets in the VPC to which you want to connect your
+-- model.
+recommendationJobVpcConfig_subnets :: Lens.Lens' RecommendationJobVpcConfig (Prelude.NonEmpty Prelude.Text)
+recommendationJobVpcConfig_subnets = Lens.lens (\RecommendationJobVpcConfig' {subnets} -> subnets) (\s@RecommendationJobVpcConfig' {} a -> s {subnets = a} :: RecommendationJobVpcConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON RecommendationJobVpcConfig where
+  parseJSON =
+    Data.withObject
+      "RecommendationJobVpcConfig"
+      ( \x ->
+          RecommendationJobVpcConfig'
+            Prelude.<$> (x Data..: "SecurityGroupIds")
+            Prelude.<*> (x Data..: "Subnets")
+      )
+
+instance Prelude.Hashable RecommendationJobVpcConfig where
+  hashWithSalt _salt RecommendationJobVpcConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` subnets
+
+instance Prelude.NFData RecommendationJobVpcConfig where
+  rnf RecommendationJobVpcConfig' {..} =
+    Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf subnets
+
+instance Data.ToJSON RecommendationJobVpcConfig where
+  toJSON RecommendationJobVpcConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("SecurityGroupIds" Data..= securityGroupIds),
+            Prelude.Just ("Subnets" Data..= subnets)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationMetrics.hs b/gen/Amazonka/SageMaker/Types/RecommendationMetrics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationMetrics.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RecommendationMetrics
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationMetrics 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
+
+-- | The metrics of recommendations.
+--
+-- /See:/ 'newRecommendationMetrics' smart constructor.
+data RecommendationMetrics = RecommendationMetrics'
+  { -- | Defines the cost per hour for the instance.
+    costPerHour :: Prelude.Double,
+    -- | Defines the cost per inference for the instance .
+    costPerInference :: Prelude.Double,
+    -- | The expected maximum number of requests per minute for the instance.
+    maxInvocations :: Prelude.Int,
+    -- | The expected model latency at maximum invocation per minute for the
+    -- instance.
+    modelLatency :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationMetrics' 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:
+--
+-- 'costPerHour', 'recommendationMetrics_costPerHour' - Defines the cost per hour for the instance.
+--
+-- 'costPerInference', 'recommendationMetrics_costPerInference' - Defines the cost per inference for the instance .
+--
+-- 'maxInvocations', 'recommendationMetrics_maxInvocations' - The expected maximum number of requests per minute for the instance.
+--
+-- 'modelLatency', 'recommendationMetrics_modelLatency' - The expected model latency at maximum invocation per minute for the
+-- instance.
+newRecommendationMetrics ::
+  -- | 'costPerHour'
+  Prelude.Double ->
+  -- | 'costPerInference'
+  Prelude.Double ->
+  -- | 'maxInvocations'
+  Prelude.Int ->
+  -- | 'modelLatency'
+  Prelude.Int ->
+  RecommendationMetrics
+newRecommendationMetrics
+  pCostPerHour_
+  pCostPerInference_
+  pMaxInvocations_
+  pModelLatency_ =
+    RecommendationMetrics'
+      { costPerHour = pCostPerHour_,
+        costPerInference = pCostPerInference_,
+        maxInvocations = pMaxInvocations_,
+        modelLatency = pModelLatency_
+      }
+
+-- | Defines the cost per hour for the instance.
+recommendationMetrics_costPerHour :: Lens.Lens' RecommendationMetrics Prelude.Double
+recommendationMetrics_costPerHour = Lens.lens (\RecommendationMetrics' {costPerHour} -> costPerHour) (\s@RecommendationMetrics' {} a -> s {costPerHour = a} :: RecommendationMetrics)
+
+-- | Defines the cost per inference for the instance .
+recommendationMetrics_costPerInference :: Lens.Lens' RecommendationMetrics Prelude.Double
+recommendationMetrics_costPerInference = Lens.lens (\RecommendationMetrics' {costPerInference} -> costPerInference) (\s@RecommendationMetrics' {} a -> s {costPerInference = a} :: RecommendationMetrics)
+
+-- | The expected maximum number of requests per minute for the instance.
+recommendationMetrics_maxInvocations :: Lens.Lens' RecommendationMetrics Prelude.Int
+recommendationMetrics_maxInvocations = Lens.lens (\RecommendationMetrics' {maxInvocations} -> maxInvocations) (\s@RecommendationMetrics' {} a -> s {maxInvocations = a} :: RecommendationMetrics)
+
+-- | The expected model latency at maximum invocation per minute for the
+-- instance.
+recommendationMetrics_modelLatency :: Lens.Lens' RecommendationMetrics Prelude.Int
+recommendationMetrics_modelLatency = Lens.lens (\RecommendationMetrics' {modelLatency} -> modelLatency) (\s@RecommendationMetrics' {} a -> s {modelLatency = a} :: RecommendationMetrics)
+
+instance Data.FromJSON RecommendationMetrics where
+  parseJSON =
+    Data.withObject
+      "RecommendationMetrics"
+      ( \x ->
+          RecommendationMetrics'
+            Prelude.<$> (x Data..: "CostPerHour")
+            Prelude.<*> (x Data..: "CostPerInference")
+            Prelude.<*> (x Data..: "MaxInvocations")
+            Prelude.<*> (x Data..: "ModelLatency")
+      )
+
+instance Prelude.Hashable RecommendationMetrics where
+  hashWithSalt _salt RecommendationMetrics' {..} =
+    _salt
+      `Prelude.hashWithSalt` costPerHour
+      `Prelude.hashWithSalt` costPerInference
+      `Prelude.hashWithSalt` maxInvocations
+      `Prelude.hashWithSalt` modelLatency
+
+instance Prelude.NFData RecommendationMetrics where
+  rnf RecommendationMetrics' {..} =
+    Prelude.rnf costPerHour
+      `Prelude.seq` Prelude.rnf costPerInference
+      `Prelude.seq` Prelude.rnf maxInvocations
+      `Prelude.seq` Prelude.rnf modelLatency
diff --git a/gen/Amazonka/SageMaker/Types/RecommendationStepType.hs b/gen/Amazonka/SageMaker/Types/RecommendationStepType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecommendationStepType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RecommendationStepType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecommendationStepType
+  ( RecommendationStepType
+      ( ..,
+        RecommendationStepType_BENCHMARK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RecommendationStepType = RecommendationStepType'
+  { fromRecommendationStepType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RecommendationStepType_BENCHMARK :: RecommendationStepType
+pattern RecommendationStepType_BENCHMARK = RecommendationStepType' "BENCHMARK"
+
+{-# COMPLETE
+  RecommendationStepType_BENCHMARK,
+  RecommendationStepType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RecordWrapper.hs b/gen/Amazonka/SageMaker/Types/RecordWrapper.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RecordWrapper.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RecordWrapper
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RecordWrapper
+  ( RecordWrapper
+      ( ..,
+        RecordWrapper_None,
+        RecordWrapper_RecordIO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RecordWrapper = RecordWrapper'
+  { fromRecordWrapper ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RecordWrapper_None :: RecordWrapper
+pattern RecordWrapper_None = RecordWrapper' "None"
+
+pattern RecordWrapper_RecordIO :: RecordWrapper
+pattern RecordWrapper_RecordIO = RecordWrapper' "RecordIO"
+
+{-# COMPLETE
+  RecordWrapper_None,
+  RecordWrapper_RecordIO,
+  RecordWrapper'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RedshiftDatasetDefinition.hs b/gen/Amazonka/SageMaker/Types/RedshiftDatasetDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RedshiftDatasetDefinition.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RedshiftDatasetDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RedshiftDatasetDefinition 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 Amazonka.SageMaker.Types.RedshiftResultCompressionType
+import Amazonka.SageMaker.Types.RedshiftResultFormat
+
+-- | Configuration for Redshift Dataset Definition input.
+--
+-- /See:/ 'newRedshiftDatasetDefinition' smart constructor.
+data RedshiftDatasetDefinition = RedshiftDatasetDefinition'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt data from a Redshift
+    -- execution.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    outputCompression :: Prelude.Maybe RedshiftResultCompressionType,
+    clusterId :: Prelude.Text,
+    database :: Prelude.Text,
+    dbUser :: Prelude.Text,
+    queryString :: Prelude.Text,
+    -- | The IAM role attached to your Redshift cluster that Amazon SageMaker
+    -- uses to generate datasets.
+    clusterRoleArn :: Prelude.Text,
+    -- | The location in Amazon S3 where the Redshift query results are stored.
+    outputS3Uri :: Prelude.Text,
+    outputFormat :: RedshiftResultFormat
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RedshiftDatasetDefinition' 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:
+--
+-- 'kmsKeyId', 'redshiftDatasetDefinition_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data from a Redshift
+-- execution.
+--
+-- 'outputCompression', 'redshiftDatasetDefinition_outputCompression' - Undocumented member.
+--
+-- 'clusterId', 'redshiftDatasetDefinition_clusterId' - Undocumented member.
+--
+-- 'database', 'redshiftDatasetDefinition_database' - Undocumented member.
+--
+-- 'dbUser', 'redshiftDatasetDefinition_dbUser' - Undocumented member.
+--
+-- 'queryString', 'redshiftDatasetDefinition_queryString' - Undocumented member.
+--
+-- 'clusterRoleArn', 'redshiftDatasetDefinition_clusterRoleArn' - The IAM role attached to your Redshift cluster that Amazon SageMaker
+-- uses to generate datasets.
+--
+-- 'outputS3Uri', 'redshiftDatasetDefinition_outputS3Uri' - The location in Amazon S3 where the Redshift query results are stored.
+--
+-- 'outputFormat', 'redshiftDatasetDefinition_outputFormat' - Undocumented member.
+newRedshiftDatasetDefinition ::
+  -- | 'clusterId'
+  Prelude.Text ->
+  -- | 'database'
+  Prelude.Text ->
+  -- | 'dbUser'
+  Prelude.Text ->
+  -- | 'queryString'
+  Prelude.Text ->
+  -- | 'clusterRoleArn'
+  Prelude.Text ->
+  -- | 'outputS3Uri'
+  Prelude.Text ->
+  -- | 'outputFormat'
+  RedshiftResultFormat ->
+  RedshiftDatasetDefinition
+newRedshiftDatasetDefinition
+  pClusterId_
+  pDatabase_
+  pDbUser_
+  pQueryString_
+  pClusterRoleArn_
+  pOutputS3Uri_
+  pOutputFormat_ =
+    RedshiftDatasetDefinition'
+      { kmsKeyId =
+          Prelude.Nothing,
+        outputCompression = Prelude.Nothing,
+        clusterId = pClusterId_,
+        database = pDatabase_,
+        dbUser = pDbUser_,
+        queryString = pQueryString_,
+        clusterRoleArn = pClusterRoleArn_,
+        outputS3Uri = pOutputS3Uri_,
+        outputFormat = pOutputFormat_
+      }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt data from a Redshift
+-- execution.
+redshiftDatasetDefinition_kmsKeyId :: Lens.Lens' RedshiftDatasetDefinition (Prelude.Maybe Prelude.Text)
+redshiftDatasetDefinition_kmsKeyId = Lens.lens (\RedshiftDatasetDefinition' {kmsKeyId} -> kmsKeyId) (\s@RedshiftDatasetDefinition' {} a -> s {kmsKeyId = a} :: RedshiftDatasetDefinition)
+
+-- | Undocumented member.
+redshiftDatasetDefinition_outputCompression :: Lens.Lens' RedshiftDatasetDefinition (Prelude.Maybe RedshiftResultCompressionType)
+redshiftDatasetDefinition_outputCompression = Lens.lens (\RedshiftDatasetDefinition' {outputCompression} -> outputCompression) (\s@RedshiftDatasetDefinition' {} a -> s {outputCompression = a} :: RedshiftDatasetDefinition)
+
+-- | Undocumented member.
+redshiftDatasetDefinition_clusterId :: Lens.Lens' RedshiftDatasetDefinition Prelude.Text
+redshiftDatasetDefinition_clusterId = Lens.lens (\RedshiftDatasetDefinition' {clusterId} -> clusterId) (\s@RedshiftDatasetDefinition' {} a -> s {clusterId = a} :: RedshiftDatasetDefinition)
+
+-- | Undocumented member.
+redshiftDatasetDefinition_database :: Lens.Lens' RedshiftDatasetDefinition Prelude.Text
+redshiftDatasetDefinition_database = Lens.lens (\RedshiftDatasetDefinition' {database} -> database) (\s@RedshiftDatasetDefinition' {} a -> s {database = a} :: RedshiftDatasetDefinition)
+
+-- | Undocumented member.
+redshiftDatasetDefinition_dbUser :: Lens.Lens' RedshiftDatasetDefinition Prelude.Text
+redshiftDatasetDefinition_dbUser = Lens.lens (\RedshiftDatasetDefinition' {dbUser} -> dbUser) (\s@RedshiftDatasetDefinition' {} a -> s {dbUser = a} :: RedshiftDatasetDefinition)
+
+-- | Undocumented member.
+redshiftDatasetDefinition_queryString :: Lens.Lens' RedshiftDatasetDefinition Prelude.Text
+redshiftDatasetDefinition_queryString = Lens.lens (\RedshiftDatasetDefinition' {queryString} -> queryString) (\s@RedshiftDatasetDefinition' {} a -> s {queryString = a} :: RedshiftDatasetDefinition)
+
+-- | The IAM role attached to your Redshift cluster that Amazon SageMaker
+-- uses to generate datasets.
+redshiftDatasetDefinition_clusterRoleArn :: Lens.Lens' RedshiftDatasetDefinition Prelude.Text
+redshiftDatasetDefinition_clusterRoleArn = Lens.lens (\RedshiftDatasetDefinition' {clusterRoleArn} -> clusterRoleArn) (\s@RedshiftDatasetDefinition' {} a -> s {clusterRoleArn = a} :: RedshiftDatasetDefinition)
+
+-- | The location in Amazon S3 where the Redshift query results are stored.
+redshiftDatasetDefinition_outputS3Uri :: Lens.Lens' RedshiftDatasetDefinition Prelude.Text
+redshiftDatasetDefinition_outputS3Uri = Lens.lens (\RedshiftDatasetDefinition' {outputS3Uri} -> outputS3Uri) (\s@RedshiftDatasetDefinition' {} a -> s {outputS3Uri = a} :: RedshiftDatasetDefinition)
+
+-- | Undocumented member.
+redshiftDatasetDefinition_outputFormat :: Lens.Lens' RedshiftDatasetDefinition RedshiftResultFormat
+redshiftDatasetDefinition_outputFormat = Lens.lens (\RedshiftDatasetDefinition' {outputFormat} -> outputFormat) (\s@RedshiftDatasetDefinition' {} a -> s {outputFormat = a} :: RedshiftDatasetDefinition)
+
+instance Data.FromJSON RedshiftDatasetDefinition where
+  parseJSON =
+    Data.withObject
+      "RedshiftDatasetDefinition"
+      ( \x ->
+          RedshiftDatasetDefinition'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "OutputCompression")
+            Prelude.<*> (x Data..: "ClusterId")
+            Prelude.<*> (x Data..: "Database")
+            Prelude.<*> (x Data..: "DbUser")
+            Prelude.<*> (x Data..: "QueryString")
+            Prelude.<*> (x Data..: "ClusterRoleArn")
+            Prelude.<*> (x Data..: "OutputS3Uri")
+            Prelude.<*> (x Data..: "OutputFormat")
+      )
+
+instance Prelude.Hashable RedshiftDatasetDefinition where
+  hashWithSalt _salt RedshiftDatasetDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` outputCompression
+      `Prelude.hashWithSalt` clusterId
+      `Prelude.hashWithSalt` database
+      `Prelude.hashWithSalt` dbUser
+      `Prelude.hashWithSalt` queryString
+      `Prelude.hashWithSalt` clusterRoleArn
+      `Prelude.hashWithSalt` outputS3Uri
+      `Prelude.hashWithSalt` outputFormat
+
+instance Prelude.NFData RedshiftDatasetDefinition where
+  rnf RedshiftDatasetDefinition' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf outputCompression
+      `Prelude.seq` Prelude.rnf clusterId
+      `Prelude.seq` Prelude.rnf database
+      `Prelude.seq` Prelude.rnf dbUser
+      `Prelude.seq` Prelude.rnf queryString
+      `Prelude.seq` Prelude.rnf clusterRoleArn
+      `Prelude.seq` Prelude.rnf outputS3Uri
+      `Prelude.seq` Prelude.rnf outputFormat
+
+instance Data.ToJSON RedshiftDatasetDefinition where
+  toJSON RedshiftDatasetDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("OutputCompression" Data..=)
+              Prelude.<$> outputCompression,
+            Prelude.Just ("ClusterId" Data..= clusterId),
+            Prelude.Just ("Database" Data..= database),
+            Prelude.Just ("DbUser" Data..= dbUser),
+            Prelude.Just ("QueryString" Data..= queryString),
+            Prelude.Just
+              ("ClusterRoleArn" Data..= clusterRoleArn),
+            Prelude.Just ("OutputS3Uri" Data..= outputS3Uri),
+            Prelude.Just ("OutputFormat" Data..= outputFormat)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RedshiftResultCompressionType.hs b/gen/Amazonka/SageMaker/Types/RedshiftResultCompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RedshiftResultCompressionType.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RedshiftResultCompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RedshiftResultCompressionType
+  ( RedshiftResultCompressionType
+      ( ..,
+        RedshiftResultCompressionType_BZIP2,
+        RedshiftResultCompressionType_GZIP,
+        RedshiftResultCompressionType_None,
+        RedshiftResultCompressionType_SNAPPY,
+        RedshiftResultCompressionType_ZSTD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The compression used for Redshift query results.
+newtype RedshiftResultCompressionType = RedshiftResultCompressionType'
+  { fromRedshiftResultCompressionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RedshiftResultCompressionType_BZIP2 :: RedshiftResultCompressionType
+pattern RedshiftResultCompressionType_BZIP2 = RedshiftResultCompressionType' "BZIP2"
+
+pattern RedshiftResultCompressionType_GZIP :: RedshiftResultCompressionType
+pattern RedshiftResultCompressionType_GZIP = RedshiftResultCompressionType' "GZIP"
+
+pattern RedshiftResultCompressionType_None :: RedshiftResultCompressionType
+pattern RedshiftResultCompressionType_None = RedshiftResultCompressionType' "None"
+
+pattern RedshiftResultCompressionType_SNAPPY :: RedshiftResultCompressionType
+pattern RedshiftResultCompressionType_SNAPPY = RedshiftResultCompressionType' "SNAPPY"
+
+pattern RedshiftResultCompressionType_ZSTD :: RedshiftResultCompressionType
+pattern RedshiftResultCompressionType_ZSTD = RedshiftResultCompressionType' "ZSTD"
+
+{-# COMPLETE
+  RedshiftResultCompressionType_BZIP2,
+  RedshiftResultCompressionType_GZIP,
+  RedshiftResultCompressionType_None,
+  RedshiftResultCompressionType_SNAPPY,
+  RedshiftResultCompressionType_ZSTD,
+  RedshiftResultCompressionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RedshiftResultFormat.hs b/gen/Amazonka/SageMaker/Types/RedshiftResultFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RedshiftResultFormat.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RedshiftResultFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RedshiftResultFormat
+  ( RedshiftResultFormat
+      ( ..,
+        RedshiftResultFormat_CSV,
+        RedshiftResultFormat_PARQUET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The data storage format for Redshift query results.
+newtype RedshiftResultFormat = RedshiftResultFormat'
+  { fromRedshiftResultFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RedshiftResultFormat_CSV :: RedshiftResultFormat
+pattern RedshiftResultFormat_CSV = RedshiftResultFormat' "CSV"
+
+pattern RedshiftResultFormat_PARQUET :: RedshiftResultFormat
+pattern RedshiftResultFormat_PARQUET = RedshiftResultFormat' "PARQUET"
+
+{-# COMPLETE
+  RedshiftResultFormat_CSV,
+  RedshiftResultFormat_PARQUET,
+  RedshiftResultFormat'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RegisterModelStepMetadata.hs b/gen/Amazonka/SageMaker/Types/RegisterModelStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RegisterModelStepMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RegisterModelStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RegisterModelStepMetadata 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
+
+-- | Metadata for a register model job step.
+--
+-- /See:/ 'newRegisterModelStepMetadata' smart constructor.
+data RegisterModelStepMetadata = RegisterModelStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the model package.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterModelStepMetadata' 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:
+--
+-- 'arn', 'registerModelStepMetadata_arn' - The Amazon Resource Name (ARN) of the model package.
+newRegisterModelStepMetadata ::
+  RegisterModelStepMetadata
+newRegisterModelStepMetadata =
+  RegisterModelStepMetadata' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the model package.
+registerModelStepMetadata_arn :: Lens.Lens' RegisterModelStepMetadata (Prelude.Maybe Prelude.Text)
+registerModelStepMetadata_arn = Lens.lens (\RegisterModelStepMetadata' {arn} -> arn) (\s@RegisterModelStepMetadata' {} a -> s {arn = a} :: RegisterModelStepMetadata)
+
+instance Data.FromJSON RegisterModelStepMetadata where
+  parseJSON =
+    Data.withObject
+      "RegisterModelStepMetadata"
+      ( \x ->
+          RegisterModelStepMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable RegisterModelStepMetadata where
+  hashWithSalt _salt RegisterModelStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData RegisterModelStepMetadata where
+  rnf RegisterModelStepMetadata' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/RenderableTask.hs b/gen/Amazonka/SageMaker/Types/RenderableTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RenderableTask.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RenderableTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RenderableTask 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
+
+-- | Contains input values for a task.
+--
+-- /See:/ 'newRenderableTask' smart constructor.
+data RenderableTask = RenderableTask'
+  { -- | A JSON object that contains values for the variables defined in the
+    -- template. It is made available to the template under the substitution
+    -- variable @task.input@. For example, if you define a variable
+    -- @task.input.text@ in your template, you can supply the variable in the
+    -- JSON object as @\"text\": \"sample text\"@.
+    input :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RenderableTask' 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:
+--
+-- 'input', 'renderableTask_input' - A JSON object that contains values for the variables defined in the
+-- template. It is made available to the template under the substitution
+-- variable @task.input@. For example, if you define a variable
+-- @task.input.text@ in your template, you can supply the variable in the
+-- JSON object as @\"text\": \"sample text\"@.
+newRenderableTask ::
+  -- | 'input'
+  Prelude.Text ->
+  RenderableTask
+newRenderableTask pInput_ =
+  RenderableTask' {input = pInput_}
+
+-- | A JSON object that contains values for the variables defined in the
+-- template. It is made available to the template under the substitution
+-- variable @task.input@. For example, if you define a variable
+-- @task.input.text@ in your template, you can supply the variable in the
+-- JSON object as @\"text\": \"sample text\"@.
+renderableTask_input :: Lens.Lens' RenderableTask Prelude.Text
+renderableTask_input = Lens.lens (\RenderableTask' {input} -> input) (\s@RenderableTask' {} a -> s {input = a} :: RenderableTask)
+
+instance Prelude.Hashable RenderableTask where
+  hashWithSalt _salt RenderableTask' {..} =
+    _salt `Prelude.hashWithSalt` input
+
+instance Prelude.NFData RenderableTask where
+  rnf RenderableTask' {..} = Prelude.rnf input
+
+instance Data.ToJSON RenderableTask where
+  toJSON RenderableTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Input" Data..= input)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RenderingError.hs b/gen/Amazonka/SageMaker/Types/RenderingError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RenderingError.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RenderingError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RenderingError 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
+
+-- | A description of an error that occurred while rendering the template.
+--
+-- /See:/ 'newRenderingError' smart constructor.
+data RenderingError = RenderingError'
+  { -- | A unique identifier for a specific class of errors.
+    code :: Prelude.Text,
+    -- | A human-readable message describing the error.
+    message :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RenderingError' 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:
+--
+-- 'code', 'renderingError_code' - A unique identifier for a specific class of errors.
+--
+-- 'message', 'renderingError_message' - A human-readable message describing the error.
+newRenderingError ::
+  -- | 'code'
+  Prelude.Text ->
+  -- | 'message'
+  Prelude.Text ->
+  RenderingError
+newRenderingError pCode_ pMessage_ =
+  RenderingError' {code = pCode_, message = pMessage_}
+
+-- | A unique identifier for a specific class of errors.
+renderingError_code :: Lens.Lens' RenderingError Prelude.Text
+renderingError_code = Lens.lens (\RenderingError' {code} -> code) (\s@RenderingError' {} a -> s {code = a} :: RenderingError)
+
+-- | A human-readable message describing the error.
+renderingError_message :: Lens.Lens' RenderingError Prelude.Text
+renderingError_message = Lens.lens (\RenderingError' {message} -> message) (\s@RenderingError' {} a -> s {message = a} :: RenderingError)
+
+instance Data.FromJSON RenderingError where
+  parseJSON =
+    Data.withObject
+      "RenderingError"
+      ( \x ->
+          RenderingError'
+            Prelude.<$> (x Data..: "Code")
+            Prelude.<*> (x Data..: "Message")
+      )
+
+instance Prelude.Hashable RenderingError where
+  hashWithSalt _salt RenderingError' {..} =
+    _salt
+      `Prelude.hashWithSalt` code
+      `Prelude.hashWithSalt` message
+
+instance Prelude.NFData RenderingError where
+  rnf RenderingError' {..} =
+    Prelude.rnf code `Prelude.seq` Prelude.rnf message
diff --git a/gen/Amazonka/SageMaker/Types/RepositoryAccessMode.hs b/gen/Amazonka/SageMaker/Types/RepositoryAccessMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RepositoryAccessMode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RepositoryAccessMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RepositoryAccessMode
+  ( RepositoryAccessMode
+      ( ..,
+        RepositoryAccessMode_Platform,
+        RepositoryAccessMode_Vpc
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RepositoryAccessMode = RepositoryAccessMode'
+  { fromRepositoryAccessMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RepositoryAccessMode_Platform :: RepositoryAccessMode
+pattern RepositoryAccessMode_Platform = RepositoryAccessMode' "Platform"
+
+pattern RepositoryAccessMode_Vpc :: RepositoryAccessMode
+pattern RepositoryAccessMode_Vpc = RepositoryAccessMode' "Vpc"
+
+{-# COMPLETE
+  RepositoryAccessMode_Platform,
+  RepositoryAccessMode_Vpc,
+  RepositoryAccessMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RepositoryAuthConfig.hs b/gen/Amazonka/SageMaker/Types/RepositoryAuthConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RepositoryAuthConfig.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RepositoryAuthConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RepositoryAuthConfig 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
+
+-- | Specifies an authentication configuration for the private docker
+-- registry where your model image is hosted. Specify a value for this
+-- property only if you specified @Vpc@ as the value for the
+-- @RepositoryAccessMode@ field of the @ImageConfig@ object that you passed
+-- to a call to @CreateModel@ and the private Docker registry where the
+-- model image is hosted requires authentication.
+--
+-- /See:/ 'newRepositoryAuthConfig' smart constructor.
+data RepositoryAuthConfig = RepositoryAuthConfig'
+  { -- | The Amazon Resource Name (ARN) of an Amazon Web Services Lambda function
+    -- that provides credentials to authenticate to the private Docker registry
+    -- where your model image is hosted. For information about how to create an
+    -- Amazon Web Services Lambda function, see
+    -- <https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html Create a Lambda function with the console>
+    -- in the /Amazon Web Services Lambda Developer Guide/.
+    repositoryCredentialsProviderArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RepositoryAuthConfig' 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:
+--
+-- 'repositoryCredentialsProviderArn', 'repositoryAuthConfig_repositoryCredentialsProviderArn' - The Amazon Resource Name (ARN) of an Amazon Web Services Lambda function
+-- that provides credentials to authenticate to the private Docker registry
+-- where your model image is hosted. For information about how to create an
+-- Amazon Web Services Lambda function, see
+-- <https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html Create a Lambda function with the console>
+-- in the /Amazon Web Services Lambda Developer Guide/.
+newRepositoryAuthConfig ::
+  -- | 'repositoryCredentialsProviderArn'
+  Prelude.Text ->
+  RepositoryAuthConfig
+newRepositoryAuthConfig
+  pRepositoryCredentialsProviderArn_ =
+    RepositoryAuthConfig'
+      { repositoryCredentialsProviderArn =
+          pRepositoryCredentialsProviderArn_
+      }
+
+-- | The Amazon Resource Name (ARN) of an Amazon Web Services Lambda function
+-- that provides credentials to authenticate to the private Docker registry
+-- where your model image is hosted. For information about how to create an
+-- Amazon Web Services Lambda function, see
+-- <https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html Create a Lambda function with the console>
+-- in the /Amazon Web Services Lambda Developer Guide/.
+repositoryAuthConfig_repositoryCredentialsProviderArn :: Lens.Lens' RepositoryAuthConfig Prelude.Text
+repositoryAuthConfig_repositoryCredentialsProviderArn = Lens.lens (\RepositoryAuthConfig' {repositoryCredentialsProviderArn} -> repositoryCredentialsProviderArn) (\s@RepositoryAuthConfig' {} a -> s {repositoryCredentialsProviderArn = a} :: RepositoryAuthConfig)
+
+instance Data.FromJSON RepositoryAuthConfig where
+  parseJSON =
+    Data.withObject
+      "RepositoryAuthConfig"
+      ( \x ->
+          RepositoryAuthConfig'
+            Prelude.<$> (x Data..: "RepositoryCredentialsProviderArn")
+      )
+
+instance Prelude.Hashable RepositoryAuthConfig where
+  hashWithSalt _salt RepositoryAuthConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` repositoryCredentialsProviderArn
+
+instance Prelude.NFData RepositoryAuthConfig where
+  rnf RepositoryAuthConfig' {..} =
+    Prelude.rnf repositoryCredentialsProviderArn
+
+instance Data.ToJSON RepositoryAuthConfig where
+  toJSON RepositoryAuthConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "RepositoryCredentialsProviderArn"
+                  Data..= repositoryCredentialsProviderArn
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ResolvedAttributes.hs b/gen/Amazonka/SageMaker/Types/ResolvedAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ResolvedAttributes.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ResolvedAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ResolvedAttributes 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 Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria
+import Amazonka.SageMaker.Types.AutoMLJobObjective
+import Amazonka.SageMaker.Types.ProblemType
+
+-- | The resolved attributes.
+--
+-- /See:/ 'newResolvedAttributes' smart constructor.
+data ResolvedAttributes = ResolvedAttributes'
+  { autoMLJobObjective :: Prelude.Maybe AutoMLJobObjective,
+    completionCriteria :: Prelude.Maybe AutoMLJobCompletionCriteria,
+    -- | The problem type.
+    problemType :: Prelude.Maybe ProblemType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResolvedAttributes' 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:
+--
+-- 'autoMLJobObjective', 'resolvedAttributes_autoMLJobObjective' - Undocumented member.
+--
+-- 'completionCriteria', 'resolvedAttributes_completionCriteria' - Undocumented member.
+--
+-- 'problemType', 'resolvedAttributes_problemType' - The problem type.
+newResolvedAttributes ::
+  ResolvedAttributes
+newResolvedAttributes =
+  ResolvedAttributes'
+    { autoMLJobObjective =
+        Prelude.Nothing,
+      completionCriteria = Prelude.Nothing,
+      problemType = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+resolvedAttributes_autoMLJobObjective :: Lens.Lens' ResolvedAttributes (Prelude.Maybe AutoMLJobObjective)
+resolvedAttributes_autoMLJobObjective = Lens.lens (\ResolvedAttributes' {autoMLJobObjective} -> autoMLJobObjective) (\s@ResolvedAttributes' {} a -> s {autoMLJobObjective = a} :: ResolvedAttributes)
+
+-- | Undocumented member.
+resolvedAttributes_completionCriteria :: Lens.Lens' ResolvedAttributes (Prelude.Maybe AutoMLJobCompletionCriteria)
+resolvedAttributes_completionCriteria = Lens.lens (\ResolvedAttributes' {completionCriteria} -> completionCriteria) (\s@ResolvedAttributes' {} a -> s {completionCriteria = a} :: ResolvedAttributes)
+
+-- | The problem type.
+resolvedAttributes_problemType :: Lens.Lens' ResolvedAttributes (Prelude.Maybe ProblemType)
+resolvedAttributes_problemType = Lens.lens (\ResolvedAttributes' {problemType} -> problemType) (\s@ResolvedAttributes' {} a -> s {problemType = a} :: ResolvedAttributes)
+
+instance Data.FromJSON ResolvedAttributes where
+  parseJSON =
+    Data.withObject
+      "ResolvedAttributes"
+      ( \x ->
+          ResolvedAttributes'
+            Prelude.<$> (x Data..:? "AutoMLJobObjective")
+            Prelude.<*> (x Data..:? "CompletionCriteria")
+            Prelude.<*> (x Data..:? "ProblemType")
+      )
+
+instance Prelude.Hashable ResolvedAttributes where
+  hashWithSalt _salt ResolvedAttributes' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoMLJobObjective
+      `Prelude.hashWithSalt` completionCriteria
+      `Prelude.hashWithSalt` problemType
+
+instance Prelude.NFData ResolvedAttributes where
+  rnf ResolvedAttributes' {..} =
+    Prelude.rnf autoMLJobObjective
+      `Prelude.seq` Prelude.rnf completionCriteria
+      `Prelude.seq` Prelude.rnf problemType
diff --git a/gen/Amazonka/SageMaker/Types/ResourceConfig.hs b/gen/Amazonka/SageMaker/Types/ResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ResourceConfig.hs
@@ -0,0 +1,367 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ResourceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ResourceConfig 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 Amazonka.SageMaker.Types.InstanceGroup
+import Amazonka.SageMaker.Types.TrainingInstanceType
+
+-- | Describes the resources, including machine learning (ML) compute
+-- instances and ML storage volumes, to use for model training.
+--
+-- /See:/ 'newResourceConfig' smart constructor.
+data ResourceConfig = ResourceConfig'
+  { -- | The number of ML compute instances to use. For distributed training,
+    -- provide a value greater than 1.
+    instanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | The configuration of a heterogeneous cluster in JSON format.
+    instanceGroups :: Prelude.Maybe [InstanceGroup],
+    -- | The ML compute instance type.
+    --
+    -- SageMaker Training on Amazon Elastic Compute Cloud (EC2) P4de instances
+    -- is in preview release starting December 9th, 2022.
+    --
+    -- <http://aws.amazon.com/ec2/instance-types/p4/ Amazon EC2 P4de instances>
+    -- (currently in preview) are powered by 8 NVIDIA A100 GPUs with 80GB
+    -- high-performance HBM2e GPU memory, which accelerate the speed of
+    -- training ML models that need to be trained on large datasets of
+    -- high-resolution data. In this preview release, Amazon SageMaker supports
+    -- ML training jobs on P4de instances (@ml.p4de.24xlarge@) to reduce model
+    -- training time. The @ml.p4de.24xlarge@ instances are available in the
+    -- following Amazon Web Services Regions.
+    --
+    -- -   US East (N. Virginia) (us-east-1)
+    --
+    -- -   US West (Oregon) (us-west-2)
+    --
+    -- To request quota limit increase and start using P4de instances, contact
+    -- the SageMaker Training service team through your account team.
+    instanceType :: Prelude.Maybe TrainingInstanceType,
+    -- | The duration of time in seconds to retain configured resources in a warm
+    -- pool for subsequent training jobs.
+    keepAlivePeriodInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Web Services KMS key that SageMaker uses to encrypt data on
+    -- the storage volume attached to the ML compute instance(s) that run the
+    -- training job.
+    --
+    -- Certain Nitro-based instances include local storage, dependent on the
+    -- instance type. Local storage volumes are encrypted using a hardware
+    -- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+    -- an instance type with local storage.
+    --
+    -- For a list of instance types that support local instance storage, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+    --
+    -- For more information about local instance storage encryption, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+    --
+    -- The @VolumeKmsKeyId@ can be in any of the following formats:
+    --
+    -- -   \/\/ KMS Key ID
+    --
+    --     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    --
+    -- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+    --
+    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The size of the ML storage volume that you want to provision.
+    --
+    -- ML storage volumes store model artifacts and incremental states.
+    -- Training algorithms might also use the ML storage volume for scratch
+    -- space. If you want to store the training data in the ML storage volume,
+    -- choose @File@ as the @TrainingInputMode@ in the algorithm specification.
+    --
+    -- When using an ML instance with
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#nvme-ssd-volumes NVMe SSD volumes>,
+    -- SageMaker doesn\'t provision Amazon EBS General Purpose SSD (gp2)
+    -- storage. Available storage is fixed to the NVMe-type instance\'s storage
+    -- capacity. SageMaker configures storage paths for training datasets,
+    -- checkpoints, model artifacts, and outputs to use the entire capacity of
+    -- the instance storage. For example, ML instance families with the
+    -- NVMe-type instance storage include @ml.p4d@, @ml.g4dn@, and @ml.g5@.
+    --
+    -- When using an ML instance with the EBS-only storage option and without
+    -- instance storage, you must define the size of EBS volume through
+    -- @VolumeSizeInGB@ in the @ResourceConfig@ API. For example, ML instance
+    -- families that use EBS volumes include @ml.c5@ and @ml.p2@.
+    --
+    -- To look up instance types and their instance storage types and volumes,
+    -- see
+    -- <http://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types>.
+    --
+    -- To find the default local paths defined by the SageMaker training
+    -- platform, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-train-storage.html Amazon SageMaker Training Storage Folders for Training Datasets, Checkpoints, Model Artifacts, and Outputs>.
+    volumeSizeInGB :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceConfig' 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:
+--
+-- 'instanceCount', 'resourceConfig_instanceCount' - The number of ML compute instances to use. For distributed training,
+-- provide a value greater than 1.
+--
+-- 'instanceGroups', 'resourceConfig_instanceGroups' - The configuration of a heterogeneous cluster in JSON format.
+--
+-- 'instanceType', 'resourceConfig_instanceType' - The ML compute instance type.
+--
+-- SageMaker Training on Amazon Elastic Compute Cloud (EC2) P4de instances
+-- is in preview release starting December 9th, 2022.
+--
+-- <http://aws.amazon.com/ec2/instance-types/p4/ Amazon EC2 P4de instances>
+-- (currently in preview) are powered by 8 NVIDIA A100 GPUs with 80GB
+-- high-performance HBM2e GPU memory, which accelerate the speed of
+-- training ML models that need to be trained on large datasets of
+-- high-resolution data. In this preview release, Amazon SageMaker supports
+-- ML training jobs on P4de instances (@ml.p4de.24xlarge@) to reduce model
+-- training time. The @ml.p4de.24xlarge@ instances are available in the
+-- following Amazon Web Services Regions.
+--
+-- -   US East (N. Virginia) (us-east-1)
+--
+-- -   US West (Oregon) (us-west-2)
+--
+-- To request quota limit increase and start using P4de instances, contact
+-- the SageMaker Training service team through your account team.
+--
+-- 'keepAlivePeriodInSeconds', 'resourceConfig_keepAlivePeriodInSeconds' - The duration of time in seconds to retain configured resources in a warm
+-- pool for subsequent training jobs.
+--
+-- 'volumeKmsKeyId', 'resourceConfig_volumeKmsKeyId' - The Amazon Web Services KMS key that SageMaker uses to encrypt data on
+-- the storage volume attached to the ML compute instance(s) that run the
+-- training job.
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+-- an instance type with local storage.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+--
+-- The @VolumeKmsKeyId@ can be in any of the following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- 'volumeSizeInGB', 'resourceConfig_volumeSizeInGB' - The size of the ML storage volume that you want to provision.
+--
+-- ML storage volumes store model artifacts and incremental states.
+-- Training algorithms might also use the ML storage volume for scratch
+-- space. If you want to store the training data in the ML storage volume,
+-- choose @File@ as the @TrainingInputMode@ in the algorithm specification.
+--
+-- When using an ML instance with
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#nvme-ssd-volumes NVMe SSD volumes>,
+-- SageMaker doesn\'t provision Amazon EBS General Purpose SSD (gp2)
+-- storage. Available storage is fixed to the NVMe-type instance\'s storage
+-- capacity. SageMaker configures storage paths for training datasets,
+-- checkpoints, model artifacts, and outputs to use the entire capacity of
+-- the instance storage. For example, ML instance families with the
+-- NVMe-type instance storage include @ml.p4d@, @ml.g4dn@, and @ml.g5@.
+--
+-- When using an ML instance with the EBS-only storage option and without
+-- instance storage, you must define the size of EBS volume through
+-- @VolumeSizeInGB@ in the @ResourceConfig@ API. For example, ML instance
+-- families that use EBS volumes include @ml.c5@ and @ml.p2@.
+--
+-- To look up instance types and their instance storage types and volumes,
+-- see
+-- <http://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types>.
+--
+-- To find the default local paths defined by the SageMaker training
+-- platform, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-train-storage.html Amazon SageMaker Training Storage Folders for Training Datasets, Checkpoints, Model Artifacts, and Outputs>.
+newResourceConfig ::
+  -- | 'volumeSizeInGB'
+  Prelude.Natural ->
+  ResourceConfig
+newResourceConfig pVolumeSizeInGB_ =
+  ResourceConfig'
+    { instanceCount = Prelude.Nothing,
+      instanceGroups = Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      keepAlivePeriodInSeconds = Prelude.Nothing,
+      volumeKmsKeyId = Prelude.Nothing,
+      volumeSizeInGB = pVolumeSizeInGB_
+    }
+
+-- | The number of ML compute instances to use. For distributed training,
+-- provide a value greater than 1.
+resourceConfig_instanceCount :: Lens.Lens' ResourceConfig (Prelude.Maybe Prelude.Natural)
+resourceConfig_instanceCount = Lens.lens (\ResourceConfig' {instanceCount} -> instanceCount) (\s@ResourceConfig' {} a -> s {instanceCount = a} :: ResourceConfig)
+
+-- | The configuration of a heterogeneous cluster in JSON format.
+resourceConfig_instanceGroups :: Lens.Lens' ResourceConfig (Prelude.Maybe [InstanceGroup])
+resourceConfig_instanceGroups = Lens.lens (\ResourceConfig' {instanceGroups} -> instanceGroups) (\s@ResourceConfig' {} a -> s {instanceGroups = a} :: ResourceConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ML compute instance type.
+--
+-- SageMaker Training on Amazon Elastic Compute Cloud (EC2) P4de instances
+-- is in preview release starting December 9th, 2022.
+--
+-- <http://aws.amazon.com/ec2/instance-types/p4/ Amazon EC2 P4de instances>
+-- (currently in preview) are powered by 8 NVIDIA A100 GPUs with 80GB
+-- high-performance HBM2e GPU memory, which accelerate the speed of
+-- training ML models that need to be trained on large datasets of
+-- high-resolution data. In this preview release, Amazon SageMaker supports
+-- ML training jobs on P4de instances (@ml.p4de.24xlarge@) to reduce model
+-- training time. The @ml.p4de.24xlarge@ instances are available in the
+-- following Amazon Web Services Regions.
+--
+-- -   US East (N. Virginia) (us-east-1)
+--
+-- -   US West (Oregon) (us-west-2)
+--
+-- To request quota limit increase and start using P4de instances, contact
+-- the SageMaker Training service team through your account team.
+resourceConfig_instanceType :: Lens.Lens' ResourceConfig (Prelude.Maybe TrainingInstanceType)
+resourceConfig_instanceType = Lens.lens (\ResourceConfig' {instanceType} -> instanceType) (\s@ResourceConfig' {} a -> s {instanceType = a} :: ResourceConfig)
+
+-- | The duration of time in seconds to retain configured resources in a warm
+-- pool for subsequent training jobs.
+resourceConfig_keepAlivePeriodInSeconds :: Lens.Lens' ResourceConfig (Prelude.Maybe Prelude.Natural)
+resourceConfig_keepAlivePeriodInSeconds = Lens.lens (\ResourceConfig' {keepAlivePeriodInSeconds} -> keepAlivePeriodInSeconds) (\s@ResourceConfig' {} a -> s {keepAlivePeriodInSeconds = a} :: ResourceConfig)
+
+-- | The Amazon Web Services KMS key that SageMaker uses to encrypt data on
+-- the storage volume attached to the ML compute instance(s) that run the
+-- training job.
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+-- an instance type with local storage.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+--
+-- The @VolumeKmsKeyId@ can be in any of the following formats:
+--
+-- -   \/\/ KMS Key ID
+--
+--     @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
+--
+-- -   \/\/ Amazon Resource Name (ARN) of a KMS Key
+--
+--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
+resourceConfig_volumeKmsKeyId :: Lens.Lens' ResourceConfig (Prelude.Maybe Prelude.Text)
+resourceConfig_volumeKmsKeyId = Lens.lens (\ResourceConfig' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@ResourceConfig' {} a -> s {volumeKmsKeyId = a} :: ResourceConfig)
+
+-- | The size of the ML storage volume that you want to provision.
+--
+-- ML storage volumes store model artifacts and incremental states.
+-- Training algorithms might also use the ML storage volume for scratch
+-- space. If you want to store the training data in the ML storage volume,
+-- choose @File@ as the @TrainingInputMode@ in the algorithm specification.
+--
+-- When using an ML instance with
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#nvme-ssd-volumes NVMe SSD volumes>,
+-- SageMaker doesn\'t provision Amazon EBS General Purpose SSD (gp2)
+-- storage. Available storage is fixed to the NVMe-type instance\'s storage
+-- capacity. SageMaker configures storage paths for training datasets,
+-- checkpoints, model artifacts, and outputs to use the entire capacity of
+-- the instance storage. For example, ML instance families with the
+-- NVMe-type instance storage include @ml.p4d@, @ml.g4dn@, and @ml.g5@.
+--
+-- When using an ML instance with the EBS-only storage option and without
+-- instance storage, you must define the size of EBS volume through
+-- @VolumeSizeInGB@ in the @ResourceConfig@ API. For example, ML instance
+-- families that use EBS volumes include @ml.c5@ and @ml.p2@.
+--
+-- To look up instance types and their instance storage types and volumes,
+-- see
+-- <http://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types>.
+--
+-- To find the default local paths defined by the SageMaker training
+-- platform, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-train-storage.html Amazon SageMaker Training Storage Folders for Training Datasets, Checkpoints, Model Artifacts, and Outputs>.
+resourceConfig_volumeSizeInGB :: Lens.Lens' ResourceConfig Prelude.Natural
+resourceConfig_volumeSizeInGB = Lens.lens (\ResourceConfig' {volumeSizeInGB} -> volumeSizeInGB) (\s@ResourceConfig' {} a -> s {volumeSizeInGB = a} :: ResourceConfig)
+
+instance Data.FromJSON ResourceConfig where
+  parseJSON =
+    Data.withObject
+      "ResourceConfig"
+      ( \x ->
+          ResourceConfig'
+            Prelude.<$> (x Data..:? "InstanceCount")
+            Prelude.<*> (x Data..:? "InstanceGroups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "KeepAlivePeriodInSeconds")
+            Prelude.<*> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..: "VolumeSizeInGB")
+      )
+
+instance Prelude.Hashable ResourceConfig where
+  hashWithSalt _salt ResourceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceCount
+      `Prelude.hashWithSalt` instanceGroups
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` keepAlivePeriodInSeconds
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` volumeSizeInGB
+
+instance Prelude.NFData ResourceConfig where
+  rnf ResourceConfig' {..} =
+    Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf instanceGroups
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf keepAlivePeriodInSeconds
+      `Prelude.seq` Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+
+instance Data.ToJSON ResourceConfig where
+  toJSON ResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InstanceCount" Data..=) Prelude.<$> instanceCount,
+            ("InstanceGroups" Data..=)
+              Prelude.<$> instanceGroups,
+            ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("KeepAlivePeriodInSeconds" Data..=)
+              Prelude.<$> keepAlivePeriodInSeconds,
+            ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            Prelude.Just
+              ("VolumeSizeInGB" Data..= volumeSizeInGB)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ResourceConfigForUpdate.hs b/gen/Amazonka/SageMaker/Types/ResourceConfigForUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ResourceConfigForUpdate.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ResourceConfigForUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ResourceConfigForUpdate 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
+
+-- | The @ResourceConfig@ to update @KeepAlivePeriodInSeconds@. Other fields
+-- in the @ResourceConfig@ cannot be updated.
+--
+-- /See:/ 'newResourceConfigForUpdate' smart constructor.
+data ResourceConfigForUpdate = ResourceConfigForUpdate'
+  { -- | The @KeepAlivePeriodInSeconds@ value specified in the @ResourceConfig@
+    -- to update.
+    keepAlivePeriodInSeconds :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceConfigForUpdate' 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:
+--
+-- 'keepAlivePeriodInSeconds', 'resourceConfigForUpdate_keepAlivePeriodInSeconds' - The @KeepAlivePeriodInSeconds@ value specified in the @ResourceConfig@
+-- to update.
+newResourceConfigForUpdate ::
+  -- | 'keepAlivePeriodInSeconds'
+  Prelude.Natural ->
+  ResourceConfigForUpdate
+newResourceConfigForUpdate pKeepAlivePeriodInSeconds_ =
+  ResourceConfigForUpdate'
+    { keepAlivePeriodInSeconds =
+        pKeepAlivePeriodInSeconds_
+    }
+
+-- | The @KeepAlivePeriodInSeconds@ value specified in the @ResourceConfig@
+-- to update.
+resourceConfigForUpdate_keepAlivePeriodInSeconds :: Lens.Lens' ResourceConfigForUpdate Prelude.Natural
+resourceConfigForUpdate_keepAlivePeriodInSeconds = Lens.lens (\ResourceConfigForUpdate' {keepAlivePeriodInSeconds} -> keepAlivePeriodInSeconds) (\s@ResourceConfigForUpdate' {} a -> s {keepAlivePeriodInSeconds = a} :: ResourceConfigForUpdate)
+
+instance Prelude.Hashable ResourceConfigForUpdate where
+  hashWithSalt _salt ResourceConfigForUpdate' {..} =
+    _salt
+      `Prelude.hashWithSalt` keepAlivePeriodInSeconds
+
+instance Prelude.NFData ResourceConfigForUpdate where
+  rnf ResourceConfigForUpdate' {..} =
+    Prelude.rnf keepAlivePeriodInSeconds
+
+instance Data.ToJSON ResourceConfigForUpdate where
+  toJSON ResourceConfigForUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "KeepAlivePeriodInSeconds"
+                  Data..= keepAlivePeriodInSeconds
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ResourceLimits.hs b/gen/Amazonka/SageMaker/Types/ResourceLimits.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ResourceLimits.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ResourceLimits
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ResourceLimits 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
+
+-- | Specifies the maximum number of training jobs and parallel training jobs
+-- that a hyperparameter tuning job can launch.
+--
+-- /See:/ 'newResourceLimits' smart constructor.
+data ResourceLimits = ResourceLimits'
+  { -- | The maximum number of training jobs that a hyperparameter tuning job can
+    -- launch.
+    maxNumberOfTrainingJobs :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum number of concurrent training jobs that a hyperparameter
+    -- tuning job can launch.
+    maxParallelTrainingJobs :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceLimits' 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:
+--
+-- 'maxNumberOfTrainingJobs', 'resourceLimits_maxNumberOfTrainingJobs' - The maximum number of training jobs that a hyperparameter tuning job can
+-- launch.
+--
+-- 'maxParallelTrainingJobs', 'resourceLimits_maxParallelTrainingJobs' - The maximum number of concurrent training jobs that a hyperparameter
+-- tuning job can launch.
+newResourceLimits ::
+  -- | 'maxParallelTrainingJobs'
+  Prelude.Natural ->
+  ResourceLimits
+newResourceLimits pMaxParallelTrainingJobs_ =
+  ResourceLimits'
+    { maxNumberOfTrainingJobs =
+        Prelude.Nothing,
+      maxParallelTrainingJobs = pMaxParallelTrainingJobs_
+    }
+
+-- | The maximum number of training jobs that a hyperparameter tuning job can
+-- launch.
+resourceLimits_maxNumberOfTrainingJobs :: Lens.Lens' ResourceLimits (Prelude.Maybe Prelude.Natural)
+resourceLimits_maxNumberOfTrainingJobs = Lens.lens (\ResourceLimits' {maxNumberOfTrainingJobs} -> maxNumberOfTrainingJobs) (\s@ResourceLimits' {} a -> s {maxNumberOfTrainingJobs = a} :: ResourceLimits)
+
+-- | The maximum number of concurrent training jobs that a hyperparameter
+-- tuning job can launch.
+resourceLimits_maxParallelTrainingJobs :: Lens.Lens' ResourceLimits Prelude.Natural
+resourceLimits_maxParallelTrainingJobs = Lens.lens (\ResourceLimits' {maxParallelTrainingJobs} -> maxParallelTrainingJobs) (\s@ResourceLimits' {} a -> s {maxParallelTrainingJobs = a} :: ResourceLimits)
+
+instance Data.FromJSON ResourceLimits where
+  parseJSON =
+    Data.withObject
+      "ResourceLimits"
+      ( \x ->
+          ResourceLimits'
+            Prelude.<$> (x Data..:? "MaxNumberOfTrainingJobs")
+            Prelude.<*> (x Data..: "MaxParallelTrainingJobs")
+      )
+
+instance Prelude.Hashable ResourceLimits where
+  hashWithSalt _salt ResourceLimits' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxNumberOfTrainingJobs
+      `Prelude.hashWithSalt` maxParallelTrainingJobs
+
+instance Prelude.NFData ResourceLimits where
+  rnf ResourceLimits' {..} =
+    Prelude.rnf maxNumberOfTrainingJobs
+      `Prelude.seq` Prelude.rnf maxParallelTrainingJobs
+
+instance Data.ToJSON ResourceLimits where
+  toJSON ResourceLimits' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxNumberOfTrainingJobs" Data..=)
+              Prelude.<$> maxNumberOfTrainingJobs,
+            Prelude.Just
+              ( "MaxParallelTrainingJobs"
+                  Data..= maxParallelTrainingJobs
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ResourceSpec.hs b/gen/Amazonka/SageMaker/Types/ResourceSpec.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ResourceSpec.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ResourceSpec
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ResourceSpec 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 Amazonka.SageMaker.Types.AppInstanceType
+
+-- | Specifies the ARN\'s of a SageMaker image and SageMaker image version,
+-- and the instance type that the version runs on.
+--
+-- /See:/ 'newResourceSpec' smart constructor.
+data ResourceSpec = ResourceSpec'
+  { -- | The instance type that the image version runs on.
+    --
+    -- __JupyterServer apps__ only support the @system@ value.
+    --
+    -- For __KernelGateway apps__, the @system@ value is translated to
+    -- @ml.t3.medium@. KernelGateway apps also support all other values for
+    -- available instance types.
+    instanceType :: Prelude.Maybe AppInstanceType,
+    -- | The Amazon Resource Name (ARN) of the Lifecycle Configuration attached
+    -- to the Resource.
+    lifecycleConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the SageMaker image that the image version belongs to.
+    sageMakerImageArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the image version created on the instance.
+    sageMakerImageVersionArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceSpec' 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:
+--
+-- 'instanceType', 'resourceSpec_instanceType' - The instance type that the image version runs on.
+--
+-- __JupyterServer apps__ only support the @system@ value.
+--
+-- For __KernelGateway apps__, the @system@ value is translated to
+-- @ml.t3.medium@. KernelGateway apps also support all other values for
+-- available instance types.
+--
+-- 'lifecycleConfigArn', 'resourceSpec_lifecycleConfigArn' - The Amazon Resource Name (ARN) of the Lifecycle Configuration attached
+-- to the Resource.
+--
+-- 'sageMakerImageArn', 'resourceSpec_sageMakerImageArn' - The ARN of the SageMaker image that the image version belongs to.
+--
+-- 'sageMakerImageVersionArn', 'resourceSpec_sageMakerImageVersionArn' - The ARN of the image version created on the instance.
+newResourceSpec ::
+  ResourceSpec
+newResourceSpec =
+  ResourceSpec'
+    { instanceType = Prelude.Nothing,
+      lifecycleConfigArn = Prelude.Nothing,
+      sageMakerImageArn = Prelude.Nothing,
+      sageMakerImageVersionArn = Prelude.Nothing
+    }
+
+-- | The instance type that the image version runs on.
+--
+-- __JupyterServer apps__ only support the @system@ value.
+--
+-- For __KernelGateway apps__, the @system@ value is translated to
+-- @ml.t3.medium@. KernelGateway apps also support all other values for
+-- available instance types.
+resourceSpec_instanceType :: Lens.Lens' ResourceSpec (Prelude.Maybe AppInstanceType)
+resourceSpec_instanceType = Lens.lens (\ResourceSpec' {instanceType} -> instanceType) (\s@ResourceSpec' {} a -> s {instanceType = a} :: ResourceSpec)
+
+-- | The Amazon Resource Name (ARN) of the Lifecycle Configuration attached
+-- to the Resource.
+resourceSpec_lifecycleConfigArn :: Lens.Lens' ResourceSpec (Prelude.Maybe Prelude.Text)
+resourceSpec_lifecycleConfigArn = Lens.lens (\ResourceSpec' {lifecycleConfigArn} -> lifecycleConfigArn) (\s@ResourceSpec' {} a -> s {lifecycleConfigArn = a} :: ResourceSpec)
+
+-- | The ARN of the SageMaker image that the image version belongs to.
+resourceSpec_sageMakerImageArn :: Lens.Lens' ResourceSpec (Prelude.Maybe Prelude.Text)
+resourceSpec_sageMakerImageArn = Lens.lens (\ResourceSpec' {sageMakerImageArn} -> sageMakerImageArn) (\s@ResourceSpec' {} a -> s {sageMakerImageArn = a} :: ResourceSpec)
+
+-- | The ARN of the image version created on the instance.
+resourceSpec_sageMakerImageVersionArn :: Lens.Lens' ResourceSpec (Prelude.Maybe Prelude.Text)
+resourceSpec_sageMakerImageVersionArn = Lens.lens (\ResourceSpec' {sageMakerImageVersionArn} -> sageMakerImageVersionArn) (\s@ResourceSpec' {} a -> s {sageMakerImageVersionArn = a} :: ResourceSpec)
+
+instance Data.FromJSON ResourceSpec where
+  parseJSON =
+    Data.withObject
+      "ResourceSpec"
+      ( \x ->
+          ResourceSpec'
+            Prelude.<$> (x Data..:? "InstanceType")
+            Prelude.<*> (x Data..:? "LifecycleConfigArn")
+            Prelude.<*> (x Data..:? "SageMakerImageArn")
+            Prelude.<*> (x Data..:? "SageMakerImageVersionArn")
+      )
+
+instance Prelude.Hashable ResourceSpec where
+  hashWithSalt _salt ResourceSpec' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` lifecycleConfigArn
+      `Prelude.hashWithSalt` sageMakerImageArn
+      `Prelude.hashWithSalt` sageMakerImageVersionArn
+
+instance Prelude.NFData ResourceSpec where
+  rnf ResourceSpec' {..} =
+    Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf lifecycleConfigArn
+      `Prelude.seq` Prelude.rnf sageMakerImageArn
+      `Prelude.seq` Prelude.rnf sageMakerImageVersionArn
+
+instance Data.ToJSON ResourceSpec where
+  toJSON ResourceSpec' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("LifecycleConfigArn" Data..=)
+              Prelude.<$> lifecycleConfigArn,
+            ("SageMakerImageArn" Data..=)
+              Prelude.<$> sageMakerImageArn,
+            ("SageMakerImageVersionArn" Data..=)
+              Prelude.<$> sageMakerImageVersionArn
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ResourceType.hs b/gen/Amazonka/SageMaker/Types/ResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ResourceType.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ResourceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ResourceType
+  ( ResourceType
+      ( ..,
+        ResourceType_Endpoint,
+        ResourceType_Experiment,
+        ResourceType_ExperimentTrial,
+        ResourceType_ExperimentTrialComponent,
+        ResourceType_FeatureGroup,
+        ResourceType_FeatureMetadata,
+        ResourceType_HyperParameterTuningJob,
+        ResourceType_Model,
+        ResourceType_ModelCard,
+        ResourceType_ModelPackage,
+        ResourceType_ModelPackageGroup,
+        ResourceType_Pipeline,
+        ResourceType_PipelineExecution,
+        ResourceType_Project,
+        ResourceType_TrainingJob
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceType = ResourceType'
+  { fromResourceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ResourceType_Endpoint :: ResourceType
+pattern ResourceType_Endpoint = ResourceType' "Endpoint"
+
+pattern ResourceType_Experiment :: ResourceType
+pattern ResourceType_Experiment = ResourceType' "Experiment"
+
+pattern ResourceType_ExperimentTrial :: ResourceType
+pattern ResourceType_ExperimentTrial = ResourceType' "ExperimentTrial"
+
+pattern ResourceType_ExperimentTrialComponent :: ResourceType
+pattern ResourceType_ExperimentTrialComponent = ResourceType' "ExperimentTrialComponent"
+
+pattern ResourceType_FeatureGroup :: ResourceType
+pattern ResourceType_FeatureGroup = ResourceType' "FeatureGroup"
+
+pattern ResourceType_FeatureMetadata :: ResourceType
+pattern ResourceType_FeatureMetadata = ResourceType' "FeatureMetadata"
+
+pattern ResourceType_HyperParameterTuningJob :: ResourceType
+pattern ResourceType_HyperParameterTuningJob = ResourceType' "HyperParameterTuningJob"
+
+pattern ResourceType_Model :: ResourceType
+pattern ResourceType_Model = ResourceType' "Model"
+
+pattern ResourceType_ModelCard :: ResourceType
+pattern ResourceType_ModelCard = ResourceType' "ModelCard"
+
+pattern ResourceType_ModelPackage :: ResourceType
+pattern ResourceType_ModelPackage = ResourceType' "ModelPackage"
+
+pattern ResourceType_ModelPackageGroup :: ResourceType
+pattern ResourceType_ModelPackageGroup = ResourceType' "ModelPackageGroup"
+
+pattern ResourceType_Pipeline :: ResourceType
+pattern ResourceType_Pipeline = ResourceType' "Pipeline"
+
+pattern ResourceType_PipelineExecution :: ResourceType
+pattern ResourceType_PipelineExecution = ResourceType' "PipelineExecution"
+
+pattern ResourceType_Project :: ResourceType
+pattern ResourceType_Project = ResourceType' "Project"
+
+pattern ResourceType_TrainingJob :: ResourceType
+pattern ResourceType_TrainingJob = ResourceType' "TrainingJob"
+
+{-# COMPLETE
+  ResourceType_Endpoint,
+  ResourceType_Experiment,
+  ResourceType_ExperimentTrial,
+  ResourceType_ExperimentTrialComponent,
+  ResourceType_FeatureGroup,
+  ResourceType_FeatureMetadata,
+  ResourceType_HyperParameterTuningJob,
+  ResourceType_Model,
+  ResourceType_ModelCard,
+  ResourceType_ModelPackage,
+  ResourceType_ModelPackageGroup,
+  ResourceType_Pipeline,
+  ResourceType_PipelineExecution,
+  ResourceType_Project,
+  ResourceType_TrainingJob,
+  ResourceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RetentionPolicy.hs b/gen/Amazonka/SageMaker/Types/RetentionPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RetentionPolicy.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RetentionPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RetentionPolicy 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 Amazonka.SageMaker.Types.RetentionType
+
+-- | The retention policy for data stored on an Amazon Elastic File System
+-- (EFS) volume.
+--
+-- /See:/ 'newRetentionPolicy' smart constructor.
+data RetentionPolicy = RetentionPolicy'
+  { -- | The default is @Retain@, which specifies to keep the data stored on the
+    -- EFS volume.
+    --
+    -- Specify @Delete@ to delete the data stored on the EFS volume.
+    homeEfsFileSystem :: Prelude.Maybe RetentionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RetentionPolicy' 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:
+--
+-- 'homeEfsFileSystem', 'retentionPolicy_homeEfsFileSystem' - The default is @Retain@, which specifies to keep the data stored on the
+-- EFS volume.
+--
+-- Specify @Delete@ to delete the data stored on the EFS volume.
+newRetentionPolicy ::
+  RetentionPolicy
+newRetentionPolicy =
+  RetentionPolicy'
+    { homeEfsFileSystem =
+        Prelude.Nothing
+    }
+
+-- | The default is @Retain@, which specifies to keep the data stored on the
+-- EFS volume.
+--
+-- Specify @Delete@ to delete the data stored on the EFS volume.
+retentionPolicy_homeEfsFileSystem :: Lens.Lens' RetentionPolicy (Prelude.Maybe RetentionType)
+retentionPolicy_homeEfsFileSystem = Lens.lens (\RetentionPolicy' {homeEfsFileSystem} -> homeEfsFileSystem) (\s@RetentionPolicy' {} a -> s {homeEfsFileSystem = a} :: RetentionPolicy)
+
+instance Prelude.Hashable RetentionPolicy where
+  hashWithSalt _salt RetentionPolicy' {..} =
+    _salt `Prelude.hashWithSalt` homeEfsFileSystem
+
+instance Prelude.NFData RetentionPolicy where
+  rnf RetentionPolicy' {..} =
+    Prelude.rnf homeEfsFileSystem
+
+instance Data.ToJSON RetentionPolicy where
+  toJSON RetentionPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HomeEfsFileSystem" Data..=)
+              Prelude.<$> homeEfsFileSystem
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RetentionType.hs b/gen/Amazonka/SageMaker/Types/RetentionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RetentionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RetentionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RetentionType
+  ( RetentionType
+      ( ..,
+        RetentionType_Delete,
+        RetentionType_Retain
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RetentionType = RetentionType'
+  { fromRetentionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RetentionType_Delete :: RetentionType
+pattern RetentionType_Delete = RetentionType' "Delete"
+
+pattern RetentionType_Retain :: RetentionType
+pattern RetentionType_Retain = RetentionType' "Retain"
+
+{-# COMPLETE
+  RetentionType_Delete,
+  RetentionType_Retain,
+  RetentionType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RetryStrategy.hs b/gen/Amazonka/SageMaker/Types/RetryStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RetryStrategy.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.RetryStrategy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RetryStrategy 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
+
+-- | The retry strategy to use when a training job fails due to an
+-- @InternalServerError@. @RetryStrategy@ is specified as part of the
+-- @CreateTrainingJob@ and @CreateHyperParameterTuningJob@ requests. You
+-- can add the @StoppingCondition@ parameter to the request to limit the
+-- training time for the complete job.
+--
+-- /See:/ 'newRetryStrategy' smart constructor.
+data RetryStrategy = RetryStrategy'
+  { -- | The number of times to retry the job. When the job is retried, it\'s
+    -- @SecondaryStatus@ is changed to @STARTING@.
+    maximumRetryAttempts :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RetryStrategy' 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:
+--
+-- 'maximumRetryAttempts', 'retryStrategy_maximumRetryAttempts' - The number of times to retry the job. When the job is retried, it\'s
+-- @SecondaryStatus@ is changed to @STARTING@.
+newRetryStrategy ::
+  -- | 'maximumRetryAttempts'
+  Prelude.Natural ->
+  RetryStrategy
+newRetryStrategy pMaximumRetryAttempts_ =
+  RetryStrategy'
+    { maximumRetryAttempts =
+        pMaximumRetryAttempts_
+    }
+
+-- | The number of times to retry the job. When the job is retried, it\'s
+-- @SecondaryStatus@ is changed to @STARTING@.
+retryStrategy_maximumRetryAttempts :: Lens.Lens' RetryStrategy Prelude.Natural
+retryStrategy_maximumRetryAttempts = Lens.lens (\RetryStrategy' {maximumRetryAttempts} -> maximumRetryAttempts) (\s@RetryStrategy' {} a -> s {maximumRetryAttempts = a} :: RetryStrategy)
+
+instance Data.FromJSON RetryStrategy where
+  parseJSON =
+    Data.withObject
+      "RetryStrategy"
+      ( \x ->
+          RetryStrategy'
+            Prelude.<$> (x Data..: "MaximumRetryAttempts")
+      )
+
+instance Prelude.Hashable RetryStrategy where
+  hashWithSalt _salt RetryStrategy' {..} =
+    _salt `Prelude.hashWithSalt` maximumRetryAttempts
+
+instance Prelude.NFData RetryStrategy where
+  rnf RetryStrategy' {..} =
+    Prelude.rnf maximumRetryAttempts
+
+instance Data.ToJSON RetryStrategy where
+  toJSON RetryStrategy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MaximumRetryAttempts"
+                  Data..= maximumRetryAttempts
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/RootAccess.hs b/gen/Amazonka/SageMaker/Types/RootAccess.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RootAccess.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RootAccess
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RootAccess
+  ( RootAccess
+      ( ..,
+        RootAccess_Disabled,
+        RootAccess_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RootAccess = RootAccess'
+  { fromRootAccess ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RootAccess_Disabled :: RootAccess
+pattern RootAccess_Disabled = RootAccess' "Disabled"
+
+pattern RootAccess_Enabled :: RootAccess
+pattern RootAccess_Enabled = RootAccess' "Enabled"
+
+{-# COMPLETE
+  RootAccess_Disabled,
+  RootAccess_Enabled,
+  RootAccess'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/RuleEvaluationStatus.hs b/gen/Amazonka/SageMaker/Types/RuleEvaluationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/RuleEvaluationStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.RuleEvaluationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.RuleEvaluationStatus
+  ( RuleEvaluationStatus
+      ( ..,
+        RuleEvaluationStatus_Error,
+        RuleEvaluationStatus_InProgress,
+        RuleEvaluationStatus_IssuesFound,
+        RuleEvaluationStatus_NoIssuesFound,
+        RuleEvaluationStatus_Stopped,
+        RuleEvaluationStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RuleEvaluationStatus = RuleEvaluationStatus'
+  { fromRuleEvaluationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RuleEvaluationStatus_Error :: RuleEvaluationStatus
+pattern RuleEvaluationStatus_Error = RuleEvaluationStatus' "Error"
+
+pattern RuleEvaluationStatus_InProgress :: RuleEvaluationStatus
+pattern RuleEvaluationStatus_InProgress = RuleEvaluationStatus' "InProgress"
+
+pattern RuleEvaluationStatus_IssuesFound :: RuleEvaluationStatus
+pattern RuleEvaluationStatus_IssuesFound = RuleEvaluationStatus' "IssuesFound"
+
+pattern RuleEvaluationStatus_NoIssuesFound :: RuleEvaluationStatus
+pattern RuleEvaluationStatus_NoIssuesFound = RuleEvaluationStatus' "NoIssuesFound"
+
+pattern RuleEvaluationStatus_Stopped :: RuleEvaluationStatus
+pattern RuleEvaluationStatus_Stopped = RuleEvaluationStatus' "Stopped"
+
+pattern RuleEvaluationStatus_Stopping :: RuleEvaluationStatus
+pattern RuleEvaluationStatus_Stopping = RuleEvaluationStatus' "Stopping"
+
+{-# COMPLETE
+  RuleEvaluationStatus_Error,
+  RuleEvaluationStatus_InProgress,
+  RuleEvaluationStatus_IssuesFound,
+  RuleEvaluationStatus_NoIssuesFound,
+  RuleEvaluationStatus_Stopped,
+  RuleEvaluationStatus_Stopping,
+  RuleEvaluationStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/S3DataDistribution.hs b/gen/Amazonka/SageMaker/Types/S3DataDistribution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/S3DataDistribution.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.S3DataDistribution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.S3DataDistribution
+  ( S3DataDistribution
+      ( ..,
+        S3DataDistribution_FullyReplicated,
+        S3DataDistribution_ShardedByS3Key
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype S3DataDistribution = S3DataDistribution'
+  { fromS3DataDistribution ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern S3DataDistribution_FullyReplicated :: S3DataDistribution
+pattern S3DataDistribution_FullyReplicated = S3DataDistribution' "FullyReplicated"
+
+pattern S3DataDistribution_ShardedByS3Key :: S3DataDistribution
+pattern S3DataDistribution_ShardedByS3Key = S3DataDistribution' "ShardedByS3Key"
+
+{-# COMPLETE
+  S3DataDistribution_FullyReplicated,
+  S3DataDistribution_ShardedByS3Key,
+  S3DataDistribution'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/S3DataSource.hs b/gen/Amazonka/SageMaker/Types/S3DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/S3DataSource.hs
@@ -0,0 +1,369 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.S3DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.S3DataSource 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 Amazonka.SageMaker.Types.S3DataDistribution
+import Amazonka.SageMaker.Types.S3DataType
+
+-- | Describes the S3 data source.
+--
+-- /See:/ 'newS3DataSource' smart constructor.
+data S3DataSource = S3DataSource'
+  { -- | A list of one or more attribute names to use that are found in a
+    -- specified augmented manifest file.
+    attributeNames :: Prelude.Maybe [Prelude.Text],
+    -- | A list of names of instance groups that get data from the S3 data
+    -- source.
+    instanceGroupNames :: Prelude.Maybe [Prelude.Text],
+    -- | If you want SageMaker to replicate the entire dataset on each ML compute
+    -- instance that is launched for model training, specify @FullyReplicated@.
+    --
+    -- If you want SageMaker to replicate a subset of data on each ML compute
+    -- instance that is launched for model training, specify @ShardedByS3Key@.
+    -- If there are /n/ ML compute instances launched for a training job, each
+    -- instance gets approximately 1\//n/ of the number of S3 objects. In this
+    -- case, model training on each machine uses only the subset of training
+    -- data.
+    --
+    -- Don\'t choose more ML compute instances for training than available S3
+    -- objects. If you do, some nodes won\'t get any data and you will pay for
+    -- nodes that aren\'t getting any training data. This applies in both File
+    -- and Pipe modes. Keep this in mind when developing algorithms.
+    --
+    -- In distributed training, where you use multiple ML compute EC2
+    -- instances, you might choose @ShardedByS3Key@. If the algorithm requires
+    -- copying training data to the ML storage volume (when @TrainingInputMode@
+    -- is set to @File@), this copies 1\//n/ of the number of objects.
+    s3DataDistributionType :: Prelude.Maybe S3DataDistribution,
+    -- | If you choose @S3Prefix@, @S3Uri@ identifies a key name prefix.
+    -- SageMaker uses all objects that match the specified key name prefix for
+    -- model training.
+    --
+    -- If you choose @ManifestFile@, @S3Uri@ identifies an object that is a
+    -- manifest file containing a list of object keys that you want SageMaker
+    -- to use for model training.
+    --
+    -- If you choose @AugmentedManifestFile@, S3Uri identifies an object that
+    -- is an augmented manifest file in JSON lines format. This file contains
+    -- the data you want to use for model training. @AugmentedManifestFile@ can
+    -- only be used if the Channel\'s input mode is @Pipe@.
+    s3DataType :: S3DataType,
+    -- | Depending on the value specified for the @S3DataType@, identifies either
+    -- a key name prefix or a manifest. For example:
+    --
+    -- -   A key name prefix might look like this:
+    --     @s3:\/\/bucketname\/exampleprefix@
+    --
+    -- -   A manifest might look like this:
+    --     @s3:\/\/bucketname\/example.manifest@
+    --
+    --     A manifest is an S3 object which is a JSON file consisting of an
+    --     array of elements. The first element is a prefix which is followed
+    --     by one or more suffixes. SageMaker appends the suffix elements to
+    --     the prefix to get a full set of @S3Uri@. Note that the prefix must
+    --     be a valid non-empty @S3Uri@ that precludes users from specifying a
+    --     manifest whose individual @S3Uri@ is sourced from different S3
+    --     buckets.
+    --
+    --     The following code example shows a valid manifest format:
+    --
+    --     @[ {\"prefix\": \"s3:\/\/customer_bucket\/some\/prefix\/\"},@
+    --
+    --     @ \"relative\/path\/to\/custdata-1\",@
+    --
+    --     @ \"relative\/path\/custdata-2\",@
+    --
+    --     @ ...@
+    --
+    --     @ \"relative\/path\/custdata-N\"@
+    --
+    --     @]@
+    --
+    --     This JSON is equivalent to the following @S3Uri@ list:
+    --
+    --     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/to\/custdata-1@
+    --
+    --     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-2@
+    --
+    --     @...@
+    --
+    --     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-N@
+    --
+    --     The complete set of @S3Uri@ in this manifest is the input data for
+    --     the channel for this data source. The object that each @S3Uri@
+    --     points to must be readable by the IAM role that SageMaker uses to
+    --     perform tasks on your behalf.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DataSource' 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:
+--
+-- 'attributeNames', 's3DataSource_attributeNames' - A list of one or more attribute names to use that are found in a
+-- specified augmented manifest file.
+--
+-- 'instanceGroupNames', 's3DataSource_instanceGroupNames' - A list of names of instance groups that get data from the S3 data
+-- source.
+--
+-- 's3DataDistributionType', 's3DataSource_s3DataDistributionType' - If you want SageMaker to replicate the entire dataset on each ML compute
+-- instance that is launched for model training, specify @FullyReplicated@.
+--
+-- If you want SageMaker to replicate a subset of data on each ML compute
+-- instance that is launched for model training, specify @ShardedByS3Key@.
+-- If there are /n/ ML compute instances launched for a training job, each
+-- instance gets approximately 1\//n/ of the number of S3 objects. In this
+-- case, model training on each machine uses only the subset of training
+-- data.
+--
+-- Don\'t choose more ML compute instances for training than available S3
+-- objects. If you do, some nodes won\'t get any data and you will pay for
+-- nodes that aren\'t getting any training data. This applies in both File
+-- and Pipe modes. Keep this in mind when developing algorithms.
+--
+-- In distributed training, where you use multiple ML compute EC2
+-- instances, you might choose @ShardedByS3Key@. If the algorithm requires
+-- copying training data to the ML storage volume (when @TrainingInputMode@
+-- is set to @File@), this copies 1\//n/ of the number of objects.
+--
+-- 's3DataType', 's3DataSource_s3DataType' - If you choose @S3Prefix@, @S3Uri@ identifies a key name prefix.
+-- SageMaker uses all objects that match the specified key name prefix for
+-- model training.
+--
+-- If you choose @ManifestFile@, @S3Uri@ identifies an object that is a
+-- manifest file containing a list of object keys that you want SageMaker
+-- to use for model training.
+--
+-- If you choose @AugmentedManifestFile@, S3Uri identifies an object that
+-- is an augmented manifest file in JSON lines format. This file contains
+-- the data you want to use for model training. @AugmentedManifestFile@ can
+-- only be used if the Channel\'s input mode is @Pipe@.
+--
+-- 's3Uri', 's3DataSource_s3Uri' - Depending on the value specified for the @S3DataType@, identifies either
+-- a key name prefix or a manifest. For example:
+--
+-- -   A key name prefix might look like this:
+--     @s3:\/\/bucketname\/exampleprefix@
+--
+-- -   A manifest might look like this:
+--     @s3:\/\/bucketname\/example.manifest@
+--
+--     A manifest is an S3 object which is a JSON file consisting of an
+--     array of elements. The first element is a prefix which is followed
+--     by one or more suffixes. SageMaker appends the suffix elements to
+--     the prefix to get a full set of @S3Uri@. Note that the prefix must
+--     be a valid non-empty @S3Uri@ that precludes users from specifying a
+--     manifest whose individual @S3Uri@ is sourced from different S3
+--     buckets.
+--
+--     The following code example shows a valid manifest format:
+--
+--     @[ {\"prefix\": \"s3:\/\/customer_bucket\/some\/prefix\/\"},@
+--
+--     @ \"relative\/path\/to\/custdata-1\",@
+--
+--     @ \"relative\/path\/custdata-2\",@
+--
+--     @ ...@
+--
+--     @ \"relative\/path\/custdata-N\"@
+--
+--     @]@
+--
+--     This JSON is equivalent to the following @S3Uri@ list:
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/to\/custdata-1@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-2@
+--
+--     @...@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-N@
+--
+--     The complete set of @S3Uri@ in this manifest is the input data for
+--     the channel for this data source. The object that each @S3Uri@
+--     points to must be readable by the IAM role that SageMaker uses to
+--     perform tasks on your behalf.
+newS3DataSource ::
+  -- | 's3DataType'
+  S3DataType ->
+  -- | 's3Uri'
+  Prelude.Text ->
+  S3DataSource
+newS3DataSource pS3DataType_ pS3Uri_ =
+  S3DataSource'
+    { attributeNames = Prelude.Nothing,
+      instanceGroupNames = Prelude.Nothing,
+      s3DataDistributionType = Prelude.Nothing,
+      s3DataType = pS3DataType_,
+      s3Uri = pS3Uri_
+    }
+
+-- | A list of one or more attribute names to use that are found in a
+-- specified augmented manifest file.
+s3DataSource_attributeNames :: Lens.Lens' S3DataSource (Prelude.Maybe [Prelude.Text])
+s3DataSource_attributeNames = Lens.lens (\S3DataSource' {attributeNames} -> attributeNames) (\s@S3DataSource' {} a -> s {attributeNames = a} :: S3DataSource) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of names of instance groups that get data from the S3 data
+-- source.
+s3DataSource_instanceGroupNames :: Lens.Lens' S3DataSource (Prelude.Maybe [Prelude.Text])
+s3DataSource_instanceGroupNames = Lens.lens (\S3DataSource' {instanceGroupNames} -> instanceGroupNames) (\s@S3DataSource' {} a -> s {instanceGroupNames = a} :: S3DataSource) Prelude.. Lens.mapping Lens.coerced
+
+-- | If you want SageMaker to replicate the entire dataset on each ML compute
+-- instance that is launched for model training, specify @FullyReplicated@.
+--
+-- If you want SageMaker to replicate a subset of data on each ML compute
+-- instance that is launched for model training, specify @ShardedByS3Key@.
+-- If there are /n/ ML compute instances launched for a training job, each
+-- instance gets approximately 1\//n/ of the number of S3 objects. In this
+-- case, model training on each machine uses only the subset of training
+-- data.
+--
+-- Don\'t choose more ML compute instances for training than available S3
+-- objects. If you do, some nodes won\'t get any data and you will pay for
+-- nodes that aren\'t getting any training data. This applies in both File
+-- and Pipe modes. Keep this in mind when developing algorithms.
+--
+-- In distributed training, where you use multiple ML compute EC2
+-- instances, you might choose @ShardedByS3Key@. If the algorithm requires
+-- copying training data to the ML storage volume (when @TrainingInputMode@
+-- is set to @File@), this copies 1\//n/ of the number of objects.
+s3DataSource_s3DataDistributionType :: Lens.Lens' S3DataSource (Prelude.Maybe S3DataDistribution)
+s3DataSource_s3DataDistributionType = Lens.lens (\S3DataSource' {s3DataDistributionType} -> s3DataDistributionType) (\s@S3DataSource' {} a -> s {s3DataDistributionType = a} :: S3DataSource)
+
+-- | If you choose @S3Prefix@, @S3Uri@ identifies a key name prefix.
+-- SageMaker uses all objects that match the specified key name prefix for
+-- model training.
+--
+-- If you choose @ManifestFile@, @S3Uri@ identifies an object that is a
+-- manifest file containing a list of object keys that you want SageMaker
+-- to use for model training.
+--
+-- If you choose @AugmentedManifestFile@, S3Uri identifies an object that
+-- is an augmented manifest file in JSON lines format. This file contains
+-- the data you want to use for model training. @AugmentedManifestFile@ can
+-- only be used if the Channel\'s input mode is @Pipe@.
+s3DataSource_s3DataType :: Lens.Lens' S3DataSource S3DataType
+s3DataSource_s3DataType = Lens.lens (\S3DataSource' {s3DataType} -> s3DataType) (\s@S3DataSource' {} a -> s {s3DataType = a} :: S3DataSource)
+
+-- | Depending on the value specified for the @S3DataType@, identifies either
+-- a key name prefix or a manifest. For example:
+--
+-- -   A key name prefix might look like this:
+--     @s3:\/\/bucketname\/exampleprefix@
+--
+-- -   A manifest might look like this:
+--     @s3:\/\/bucketname\/example.manifest@
+--
+--     A manifest is an S3 object which is a JSON file consisting of an
+--     array of elements. The first element is a prefix which is followed
+--     by one or more suffixes. SageMaker appends the suffix elements to
+--     the prefix to get a full set of @S3Uri@. Note that the prefix must
+--     be a valid non-empty @S3Uri@ that precludes users from specifying a
+--     manifest whose individual @S3Uri@ is sourced from different S3
+--     buckets.
+--
+--     The following code example shows a valid manifest format:
+--
+--     @[ {\"prefix\": \"s3:\/\/customer_bucket\/some\/prefix\/\"},@
+--
+--     @ \"relative\/path\/to\/custdata-1\",@
+--
+--     @ \"relative\/path\/custdata-2\",@
+--
+--     @ ...@
+--
+--     @ \"relative\/path\/custdata-N\"@
+--
+--     @]@
+--
+--     This JSON is equivalent to the following @S3Uri@ list:
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/to\/custdata-1@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-2@
+--
+--     @...@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-N@
+--
+--     The complete set of @S3Uri@ in this manifest is the input data for
+--     the channel for this data source. The object that each @S3Uri@
+--     points to must be readable by the IAM role that SageMaker uses to
+--     perform tasks on your behalf.
+s3DataSource_s3Uri :: Lens.Lens' S3DataSource Prelude.Text
+s3DataSource_s3Uri = Lens.lens (\S3DataSource' {s3Uri} -> s3Uri) (\s@S3DataSource' {} a -> s {s3Uri = a} :: S3DataSource)
+
+instance Data.FromJSON S3DataSource where
+  parseJSON =
+    Data.withObject
+      "S3DataSource"
+      ( \x ->
+          S3DataSource'
+            Prelude.<$> (x Data..:? "AttributeNames" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "InstanceGroupNames"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "S3DataDistributionType")
+            Prelude.<*> (x Data..: "S3DataType")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable S3DataSource where
+  hashWithSalt _salt S3DataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` attributeNames
+      `Prelude.hashWithSalt` instanceGroupNames
+      `Prelude.hashWithSalt` s3DataDistributionType
+      `Prelude.hashWithSalt` s3DataType
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData S3DataSource where
+  rnf S3DataSource' {..} =
+    Prelude.rnf attributeNames
+      `Prelude.seq` Prelude.rnf instanceGroupNames
+      `Prelude.seq` Prelude.rnf s3DataDistributionType
+      `Prelude.seq` Prelude.rnf s3DataType
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON S3DataSource where
+  toJSON S3DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AttributeNames" Data..=)
+              Prelude.<$> attributeNames,
+            ("InstanceGroupNames" Data..=)
+              Prelude.<$> instanceGroupNames,
+            ("S3DataDistributionType" Data..=)
+              Prelude.<$> s3DataDistributionType,
+            Prelude.Just ("S3DataType" Data..= s3DataType),
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/S3DataType.hs b/gen/Amazonka/SageMaker/Types/S3DataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/S3DataType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.S3DataType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.S3DataType
+  ( S3DataType
+      ( ..,
+        S3DataType_AugmentedManifestFile,
+        S3DataType_ManifestFile,
+        S3DataType_S3Prefix
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype S3DataType = S3DataType'
+  { fromS3DataType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern S3DataType_AugmentedManifestFile :: S3DataType
+pattern S3DataType_AugmentedManifestFile = S3DataType' "AugmentedManifestFile"
+
+pattern S3DataType_ManifestFile :: S3DataType
+pattern S3DataType_ManifestFile = S3DataType' "ManifestFile"
+
+pattern S3DataType_S3Prefix :: S3DataType
+pattern S3DataType_S3Prefix = S3DataType' "S3Prefix"
+
+{-# COMPLETE
+  S3DataType_AugmentedManifestFile,
+  S3DataType_ManifestFile,
+  S3DataType_S3Prefix,
+  S3DataType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/S3StorageConfig.hs b/gen/Amazonka/SageMaker/Types/S3StorageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/S3StorageConfig.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.S3StorageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.S3StorageConfig 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
+
+-- | The Amazon Simple Storage (Amazon S3) location and and security
+-- configuration for @OfflineStore@.
+--
+-- /See:/ 'newS3StorageConfig' smart constructor.
+data S3StorageConfig = S3StorageConfig'
+  { -- | The Amazon Web Services Key Management Service (KMS) key ID of the key
+    -- used to encrypt any objects written into the @OfflineStore@ S3 location.
+    --
+    -- The IAM @roleARN@ that is passed as a parameter to @CreateFeatureGroup@
+    -- must have below permissions to the @KmsKeyId@:
+    --
+    -- -   @\"kms:GenerateDataKey\"@
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The S3 path where offline records are written.
+    resolvedOutputS3Uri :: Prelude.Maybe Prelude.Text,
+    -- | The S3 URI, or location in Amazon S3, of @OfflineStore@.
+    --
+    -- S3 URIs have a format similar to the following:
+    -- @s3:\/\/example-bucket\/prefix\/@.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3StorageConfig' 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:
+--
+-- 'kmsKeyId', 's3StorageConfig_kmsKeyId' - The Amazon Web Services Key Management Service (KMS) key ID of the key
+-- used to encrypt any objects written into the @OfflineStore@ S3 location.
+--
+-- The IAM @roleARN@ that is passed as a parameter to @CreateFeatureGroup@
+-- must have below permissions to the @KmsKeyId@:
+--
+-- -   @\"kms:GenerateDataKey\"@
+--
+-- 'resolvedOutputS3Uri', 's3StorageConfig_resolvedOutputS3Uri' - The S3 path where offline records are written.
+--
+-- 's3Uri', 's3StorageConfig_s3Uri' - The S3 URI, or location in Amazon S3, of @OfflineStore@.
+--
+-- S3 URIs have a format similar to the following:
+-- @s3:\/\/example-bucket\/prefix\/@.
+newS3StorageConfig ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  S3StorageConfig
+newS3StorageConfig pS3Uri_ =
+  S3StorageConfig'
+    { kmsKeyId = Prelude.Nothing,
+      resolvedOutputS3Uri = Prelude.Nothing,
+      s3Uri = pS3Uri_
+    }
+
+-- | The Amazon Web Services Key Management Service (KMS) key ID of the key
+-- used to encrypt any objects written into the @OfflineStore@ S3 location.
+--
+-- The IAM @roleARN@ that is passed as a parameter to @CreateFeatureGroup@
+-- must have below permissions to the @KmsKeyId@:
+--
+-- -   @\"kms:GenerateDataKey\"@
+s3StorageConfig_kmsKeyId :: Lens.Lens' S3StorageConfig (Prelude.Maybe Prelude.Text)
+s3StorageConfig_kmsKeyId = Lens.lens (\S3StorageConfig' {kmsKeyId} -> kmsKeyId) (\s@S3StorageConfig' {} a -> s {kmsKeyId = a} :: S3StorageConfig)
+
+-- | The S3 path where offline records are written.
+s3StorageConfig_resolvedOutputS3Uri :: Lens.Lens' S3StorageConfig (Prelude.Maybe Prelude.Text)
+s3StorageConfig_resolvedOutputS3Uri = Lens.lens (\S3StorageConfig' {resolvedOutputS3Uri} -> resolvedOutputS3Uri) (\s@S3StorageConfig' {} a -> s {resolvedOutputS3Uri = a} :: S3StorageConfig)
+
+-- | The S3 URI, or location in Amazon S3, of @OfflineStore@.
+--
+-- S3 URIs have a format similar to the following:
+-- @s3:\/\/example-bucket\/prefix\/@.
+s3StorageConfig_s3Uri :: Lens.Lens' S3StorageConfig Prelude.Text
+s3StorageConfig_s3Uri = Lens.lens (\S3StorageConfig' {s3Uri} -> s3Uri) (\s@S3StorageConfig' {} a -> s {s3Uri = a} :: S3StorageConfig)
+
+instance Data.FromJSON S3StorageConfig where
+  parseJSON =
+    Data.withObject
+      "S3StorageConfig"
+      ( \x ->
+          S3StorageConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..:? "ResolvedOutputS3Uri")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable S3StorageConfig where
+  hashWithSalt _salt S3StorageConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` resolvedOutputS3Uri
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData S3StorageConfig where
+  rnf S3StorageConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf resolvedOutputS3Uri
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON S3StorageConfig where
+  toJSON S3StorageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("ResolvedOutputS3Uri" Data..=)
+              Prelude.<$> resolvedOutputS3Uri,
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SagemakerServicecatalogStatus.hs b/gen/Amazonka/SageMaker/Types/SagemakerServicecatalogStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SagemakerServicecatalogStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SagemakerServicecatalogStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SagemakerServicecatalogStatus
+  ( SagemakerServicecatalogStatus
+      ( ..,
+        SagemakerServicecatalogStatus_Disabled,
+        SagemakerServicecatalogStatus_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SagemakerServicecatalogStatus = SagemakerServicecatalogStatus'
+  { fromSagemakerServicecatalogStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SagemakerServicecatalogStatus_Disabled :: SagemakerServicecatalogStatus
+pattern SagemakerServicecatalogStatus_Disabled = SagemakerServicecatalogStatus' "Disabled"
+
+pattern SagemakerServicecatalogStatus_Enabled :: SagemakerServicecatalogStatus
+pattern SagemakerServicecatalogStatus_Enabled = SagemakerServicecatalogStatus' "Enabled"
+
+{-# COMPLETE
+  SagemakerServicecatalogStatus_Disabled,
+  SagemakerServicecatalogStatus_Enabled,
+  SagemakerServicecatalogStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/ScheduleConfig.hs b/gen/Amazonka/SageMaker/Types/ScheduleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ScheduleConfig.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ScheduleConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ScheduleConfig 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
+
+-- | Configuration details about the monitoring schedule.
+--
+-- /See:/ 'newScheduleConfig' smart constructor.
+data ScheduleConfig = ScheduleConfig'
+  { -- | A cron expression that describes details about the monitoring schedule.
+    --
+    -- Currently the only supported cron expressions are:
+    --
+    -- -   If you want to set the job to start every hour, please use the
+    --     following:
+    --
+    --     @Hourly: cron(0 * ? * * *)@
+    --
+    -- -   If you want to start the job daily:
+    --
+    --     @cron(0 [00-23] ? * * *)@
+    --
+    -- For example, the following are valid cron expressions:
+    --
+    -- -   Daily at noon UTC: @cron(0 12 ? * * *)@
+    --
+    -- -   Daily at midnight UTC: @cron(0 0 ? * * *)@
+    --
+    -- To support running every 6, 12 hours, the following are also supported:
+    --
+    -- @cron(0 [00-23]\/[01-24] ? * * *)@
+    --
+    -- For example, the following are valid cron expressions:
+    --
+    -- -   Every 12 hours, starting at 5pm UTC: @cron(0 17\/12 ? * * *)@
+    --
+    -- -   Every two hours starting at midnight: @cron(0 0\/2 ? * * *)@
+    --
+    -- -   Even though the cron expression is set to start at 5PM UTC, note
+    --     that there could be a delay of 0-20 minutes from the actual
+    --     requested time to run the execution.
+    --
+    -- -   We recommend that if you would like a daily schedule, you do not
+    --     provide this parameter. Amazon SageMaker will pick a time for
+    --     running every day.
+    scheduleExpression :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScheduleConfig' 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:
+--
+-- 'scheduleExpression', 'scheduleConfig_scheduleExpression' - A cron expression that describes details about the monitoring schedule.
+--
+-- Currently the only supported cron expressions are:
+--
+-- -   If you want to set the job to start every hour, please use the
+--     following:
+--
+--     @Hourly: cron(0 * ? * * *)@
+--
+-- -   If you want to start the job daily:
+--
+--     @cron(0 [00-23] ? * * *)@
+--
+-- For example, the following are valid cron expressions:
+--
+-- -   Daily at noon UTC: @cron(0 12 ? * * *)@
+--
+-- -   Daily at midnight UTC: @cron(0 0 ? * * *)@
+--
+-- To support running every 6, 12 hours, the following are also supported:
+--
+-- @cron(0 [00-23]\/[01-24] ? * * *)@
+--
+-- For example, the following are valid cron expressions:
+--
+-- -   Every 12 hours, starting at 5pm UTC: @cron(0 17\/12 ? * * *)@
+--
+-- -   Every two hours starting at midnight: @cron(0 0\/2 ? * * *)@
+--
+-- -   Even though the cron expression is set to start at 5PM UTC, note
+--     that there could be a delay of 0-20 minutes from the actual
+--     requested time to run the execution.
+--
+-- -   We recommend that if you would like a daily schedule, you do not
+--     provide this parameter. Amazon SageMaker will pick a time for
+--     running every day.
+newScheduleConfig ::
+  -- | 'scheduleExpression'
+  Prelude.Text ->
+  ScheduleConfig
+newScheduleConfig pScheduleExpression_ =
+  ScheduleConfig'
+    { scheduleExpression =
+        pScheduleExpression_
+    }
+
+-- | A cron expression that describes details about the monitoring schedule.
+--
+-- Currently the only supported cron expressions are:
+--
+-- -   If you want to set the job to start every hour, please use the
+--     following:
+--
+--     @Hourly: cron(0 * ? * * *)@
+--
+-- -   If you want to start the job daily:
+--
+--     @cron(0 [00-23] ? * * *)@
+--
+-- For example, the following are valid cron expressions:
+--
+-- -   Daily at noon UTC: @cron(0 12 ? * * *)@
+--
+-- -   Daily at midnight UTC: @cron(0 0 ? * * *)@
+--
+-- To support running every 6, 12 hours, the following are also supported:
+--
+-- @cron(0 [00-23]\/[01-24] ? * * *)@
+--
+-- For example, the following are valid cron expressions:
+--
+-- -   Every 12 hours, starting at 5pm UTC: @cron(0 17\/12 ? * * *)@
+--
+-- -   Every two hours starting at midnight: @cron(0 0\/2 ? * * *)@
+--
+-- -   Even though the cron expression is set to start at 5PM UTC, note
+--     that there could be a delay of 0-20 minutes from the actual
+--     requested time to run the execution.
+--
+-- -   We recommend that if you would like a daily schedule, you do not
+--     provide this parameter. Amazon SageMaker will pick a time for
+--     running every day.
+scheduleConfig_scheduleExpression :: Lens.Lens' ScheduleConfig Prelude.Text
+scheduleConfig_scheduleExpression = Lens.lens (\ScheduleConfig' {scheduleExpression} -> scheduleExpression) (\s@ScheduleConfig' {} a -> s {scheduleExpression = a} :: ScheduleConfig)
+
+instance Data.FromJSON ScheduleConfig where
+  parseJSON =
+    Data.withObject
+      "ScheduleConfig"
+      ( \x ->
+          ScheduleConfig'
+            Prelude.<$> (x Data..: "ScheduleExpression")
+      )
+
+instance Prelude.Hashable ScheduleConfig where
+  hashWithSalt _salt ScheduleConfig' {..} =
+    _salt `Prelude.hashWithSalt` scheduleExpression
+
+instance Prelude.NFData ScheduleConfig where
+  rnf ScheduleConfig' {..} =
+    Prelude.rnf scheduleExpression
+
+instance Data.ToJSON ScheduleConfig where
+  toJSON ScheduleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ScheduleExpression" Data..= scheduleExpression)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ScheduleStatus.hs b/gen/Amazonka/SageMaker/Types/ScheduleStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ScheduleStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.ScheduleStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ScheduleStatus
+  ( ScheduleStatus
+      ( ..,
+        ScheduleStatus_Failed,
+        ScheduleStatus_Pending,
+        ScheduleStatus_Scheduled,
+        ScheduleStatus_Stopped
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ScheduleStatus = ScheduleStatus'
+  { fromScheduleStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ScheduleStatus_Failed :: ScheduleStatus
+pattern ScheduleStatus_Failed = ScheduleStatus' "Failed"
+
+pattern ScheduleStatus_Pending :: ScheduleStatus
+pattern ScheduleStatus_Pending = ScheduleStatus' "Pending"
+
+pattern ScheduleStatus_Scheduled :: ScheduleStatus
+pattern ScheduleStatus_Scheduled = ScheduleStatus' "Scheduled"
+
+pattern ScheduleStatus_Stopped :: ScheduleStatus
+pattern ScheduleStatus_Stopped = ScheduleStatus' "Stopped"
+
+{-# COMPLETE
+  ScheduleStatus_Failed,
+  ScheduleStatus_Pending,
+  ScheduleStatus_Scheduled,
+  ScheduleStatus_Stopped,
+  ScheduleStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SearchExpression.hs b/gen/Amazonka/SageMaker/Types/SearchExpression.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SearchExpression.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SearchExpression
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SearchExpression 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 Amazonka.SageMaker.Types.BooleanOperator
+import Amazonka.SageMaker.Types.Filter
+import Amazonka.SageMaker.Types.NestedFilters
+
+-- | A multi-expression that searches for the specified resource or resources
+-- in a search. All resource objects that satisfy the expression\'s
+-- condition are included in the search results. You must specify at least
+-- one subexpression, filter, or nested filter. A @SearchExpression@ can
+-- contain up to twenty elements.
+--
+-- A @SearchExpression@ contains the following components:
+--
+-- -   A list of @Filter@ objects. Each filter defines a simple Boolean
+--     expression comprised of a resource property name, Boolean operator,
+--     and value.
+--
+-- -   A list of @NestedFilter@ objects. Each nested filter defines a list
+--     of Boolean expressions using a list of resource properties. A nested
+--     filter is satisfied if a single object in the list satisfies all
+--     Boolean expressions.
+--
+-- -   A list of @SearchExpression@ objects. A search expression object can
+--     be nested in a list of search expression objects.
+--
+-- -   A Boolean operator: @And@ or @Or@.
+--
+-- /See:/ 'newSearchExpression' smart constructor.
+data SearchExpression = SearchExpression'
+  { -- | A list of filter objects.
+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),
+    -- | A list of nested filter objects.
+    nestedFilters :: Prelude.Maybe (Prelude.NonEmpty NestedFilters),
+    -- | A Boolean operator used to evaluate the search expression. If you want
+    -- every conditional statement in all lists to be satisfied for the entire
+    -- search expression to be true, specify @And@. If only a single
+    -- conditional statement needs to be true for the entire search expression
+    -- to be true, specify @Or@. The default value is @And@.
+    operator :: Prelude.Maybe BooleanOperator,
+    -- | A list of search expression objects.
+    subExpressions :: Prelude.Maybe (Prelude.NonEmpty SearchExpression)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchExpression' 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:
+--
+-- 'filters', 'searchExpression_filters' - A list of filter objects.
+--
+-- 'nestedFilters', 'searchExpression_nestedFilters' - A list of nested filter objects.
+--
+-- 'operator', 'searchExpression_operator' - A Boolean operator used to evaluate the search expression. If you want
+-- every conditional statement in all lists to be satisfied for the entire
+-- search expression to be true, specify @And@. If only a single
+-- conditional statement needs to be true for the entire search expression
+-- to be true, specify @Or@. The default value is @And@.
+--
+-- 'subExpressions', 'searchExpression_subExpressions' - A list of search expression objects.
+newSearchExpression ::
+  SearchExpression
+newSearchExpression =
+  SearchExpression'
+    { filters = Prelude.Nothing,
+      nestedFilters = Prelude.Nothing,
+      operator = Prelude.Nothing,
+      subExpressions = Prelude.Nothing
+    }
+
+-- | A list of filter objects.
+searchExpression_filters :: Lens.Lens' SearchExpression (Prelude.Maybe (Prelude.NonEmpty Filter))
+searchExpression_filters = Lens.lens (\SearchExpression' {filters} -> filters) (\s@SearchExpression' {} a -> s {filters = a} :: SearchExpression) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of nested filter objects.
+searchExpression_nestedFilters :: Lens.Lens' SearchExpression (Prelude.Maybe (Prelude.NonEmpty NestedFilters))
+searchExpression_nestedFilters = Lens.lens (\SearchExpression' {nestedFilters} -> nestedFilters) (\s@SearchExpression' {} a -> s {nestedFilters = a} :: SearchExpression) Prelude.. Lens.mapping Lens.coerced
+
+-- | A Boolean operator used to evaluate the search expression. If you want
+-- every conditional statement in all lists to be satisfied for the entire
+-- search expression to be true, specify @And@. If only a single
+-- conditional statement needs to be true for the entire search expression
+-- to be true, specify @Or@. The default value is @And@.
+searchExpression_operator :: Lens.Lens' SearchExpression (Prelude.Maybe BooleanOperator)
+searchExpression_operator = Lens.lens (\SearchExpression' {operator} -> operator) (\s@SearchExpression' {} a -> s {operator = a} :: SearchExpression)
+
+-- | A list of search expression objects.
+searchExpression_subExpressions :: Lens.Lens' SearchExpression (Prelude.Maybe (Prelude.NonEmpty SearchExpression))
+searchExpression_subExpressions = Lens.lens (\SearchExpression' {subExpressions} -> subExpressions) (\s@SearchExpression' {} a -> s {subExpressions = a} :: SearchExpression) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable SearchExpression where
+  hashWithSalt _salt SearchExpression' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` nestedFilters
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` subExpressions
+
+instance Prelude.NFData SearchExpression where
+  rnf SearchExpression' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf nestedFilters
+      `Prelude.seq` Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf subExpressions
+
+instance Data.ToJSON SearchExpression where
+  toJSON SearchExpression' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("NestedFilters" Data..=) Prelude.<$> nestedFilters,
+            ("Operator" Data..=) Prelude.<$> operator,
+            ("SubExpressions" Data..=)
+              Prelude.<$> subExpressions
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SearchRecord.hs b/gen/Amazonka/SageMaker/Types/SearchRecord.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SearchRecord.hs
@@ -0,0 +1,251 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SearchRecord
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SearchRecord 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 Amazonka.SageMaker.Types.Endpoint
+import Amazonka.SageMaker.Types.Experiment
+import Amazonka.SageMaker.Types.FeatureGroup
+import Amazonka.SageMaker.Types.FeatureMetadata
+import Amazonka.SageMaker.Types.HyperParameterTuningJobSearchEntity
+import Amazonka.SageMaker.Types.ModelCard
+import Amazonka.SageMaker.Types.ModelDashboardModel
+import Amazonka.SageMaker.Types.ModelPackage
+import Amazonka.SageMaker.Types.ModelPackageGroup
+import Amazonka.SageMaker.Types.Pipeline
+import Amazonka.SageMaker.Types.PipelineExecution
+import Amazonka.SageMaker.Types.Project
+import Amazonka.SageMaker.Types.TrainingJob
+import Amazonka.SageMaker.Types.Trial
+import Amazonka.SageMaker.Types.TrialComponent
+
+-- | A single resource returned as part of the Search API response.
+--
+-- /See:/ 'newSearchRecord' smart constructor.
+data SearchRecord = SearchRecord'
+  { endpoint :: Prelude.Maybe Endpoint,
+    -- | The properties of an experiment.
+    experiment :: Prelude.Maybe Experiment,
+    featureGroup :: Prelude.Maybe FeatureGroup,
+    -- | The feature metadata used to search through the features.
+    featureMetadata :: Prelude.Maybe FeatureMetadata,
+    -- | The properties of a hyperparameter tuning job.
+    hyperParameterTuningJob :: Prelude.Maybe HyperParameterTuningJobSearchEntity,
+    model :: Prelude.Maybe ModelDashboardModel,
+    -- | An Amazon SageMaker Model Card that documents details about a machine
+    -- learning model.
+    modelCard :: Prelude.Maybe ModelCard,
+    modelPackage :: Prelude.Maybe ModelPackage,
+    modelPackageGroup :: Prelude.Maybe ModelPackageGroup,
+    pipeline :: Prelude.Maybe Pipeline,
+    pipelineExecution :: Prelude.Maybe PipelineExecution,
+    -- | The properties of a project.
+    project :: Prelude.Maybe Project,
+    -- | The properties of a training job.
+    trainingJob :: Prelude.Maybe TrainingJob,
+    -- | The properties of a trial.
+    trial :: Prelude.Maybe Trial,
+    -- | The properties of a trial component.
+    trialComponent :: Prelude.Maybe TrialComponent
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchRecord' 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:
+--
+-- 'endpoint', 'searchRecord_endpoint' - Undocumented member.
+--
+-- 'experiment', 'searchRecord_experiment' - The properties of an experiment.
+--
+-- 'featureGroup', 'searchRecord_featureGroup' - Undocumented member.
+--
+-- 'featureMetadata', 'searchRecord_featureMetadata' - The feature metadata used to search through the features.
+--
+-- 'hyperParameterTuningJob', 'searchRecord_hyperParameterTuningJob' - The properties of a hyperparameter tuning job.
+--
+-- 'model', 'searchRecord_model' - Undocumented member.
+--
+-- 'modelCard', 'searchRecord_modelCard' - An Amazon SageMaker Model Card that documents details about a machine
+-- learning model.
+--
+-- 'modelPackage', 'searchRecord_modelPackage' - Undocumented member.
+--
+-- 'modelPackageGroup', 'searchRecord_modelPackageGroup' - Undocumented member.
+--
+-- 'pipeline', 'searchRecord_pipeline' - Undocumented member.
+--
+-- 'pipelineExecution', 'searchRecord_pipelineExecution' - Undocumented member.
+--
+-- 'project', 'searchRecord_project' - The properties of a project.
+--
+-- 'trainingJob', 'searchRecord_trainingJob' - The properties of a training job.
+--
+-- 'trial', 'searchRecord_trial' - The properties of a trial.
+--
+-- 'trialComponent', 'searchRecord_trialComponent' - The properties of a trial component.
+newSearchRecord ::
+  SearchRecord
+newSearchRecord =
+  SearchRecord'
+    { endpoint = Prelude.Nothing,
+      experiment = Prelude.Nothing,
+      featureGroup = Prelude.Nothing,
+      featureMetadata = Prelude.Nothing,
+      hyperParameterTuningJob = Prelude.Nothing,
+      model = Prelude.Nothing,
+      modelCard = Prelude.Nothing,
+      modelPackage = Prelude.Nothing,
+      modelPackageGroup = Prelude.Nothing,
+      pipeline = Prelude.Nothing,
+      pipelineExecution = Prelude.Nothing,
+      project = Prelude.Nothing,
+      trainingJob = Prelude.Nothing,
+      trial = Prelude.Nothing,
+      trialComponent = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+searchRecord_endpoint :: Lens.Lens' SearchRecord (Prelude.Maybe Endpoint)
+searchRecord_endpoint = Lens.lens (\SearchRecord' {endpoint} -> endpoint) (\s@SearchRecord' {} a -> s {endpoint = a} :: SearchRecord)
+
+-- | The properties of an experiment.
+searchRecord_experiment :: Lens.Lens' SearchRecord (Prelude.Maybe Experiment)
+searchRecord_experiment = Lens.lens (\SearchRecord' {experiment} -> experiment) (\s@SearchRecord' {} a -> s {experiment = a} :: SearchRecord)
+
+-- | Undocumented member.
+searchRecord_featureGroup :: Lens.Lens' SearchRecord (Prelude.Maybe FeatureGroup)
+searchRecord_featureGroup = Lens.lens (\SearchRecord' {featureGroup} -> featureGroup) (\s@SearchRecord' {} a -> s {featureGroup = a} :: SearchRecord)
+
+-- | The feature metadata used to search through the features.
+searchRecord_featureMetadata :: Lens.Lens' SearchRecord (Prelude.Maybe FeatureMetadata)
+searchRecord_featureMetadata = Lens.lens (\SearchRecord' {featureMetadata} -> featureMetadata) (\s@SearchRecord' {} a -> s {featureMetadata = a} :: SearchRecord)
+
+-- | The properties of a hyperparameter tuning job.
+searchRecord_hyperParameterTuningJob :: Lens.Lens' SearchRecord (Prelude.Maybe HyperParameterTuningJobSearchEntity)
+searchRecord_hyperParameterTuningJob = Lens.lens (\SearchRecord' {hyperParameterTuningJob} -> hyperParameterTuningJob) (\s@SearchRecord' {} a -> s {hyperParameterTuningJob = a} :: SearchRecord)
+
+-- | Undocumented member.
+searchRecord_model :: Lens.Lens' SearchRecord (Prelude.Maybe ModelDashboardModel)
+searchRecord_model = Lens.lens (\SearchRecord' {model} -> model) (\s@SearchRecord' {} a -> s {model = a} :: SearchRecord)
+
+-- | An Amazon SageMaker Model Card that documents details about a machine
+-- learning model.
+searchRecord_modelCard :: Lens.Lens' SearchRecord (Prelude.Maybe ModelCard)
+searchRecord_modelCard = Lens.lens (\SearchRecord' {modelCard} -> modelCard) (\s@SearchRecord' {} a -> s {modelCard = a} :: SearchRecord)
+
+-- | Undocumented member.
+searchRecord_modelPackage :: Lens.Lens' SearchRecord (Prelude.Maybe ModelPackage)
+searchRecord_modelPackage = Lens.lens (\SearchRecord' {modelPackage} -> modelPackage) (\s@SearchRecord' {} a -> s {modelPackage = a} :: SearchRecord)
+
+-- | Undocumented member.
+searchRecord_modelPackageGroup :: Lens.Lens' SearchRecord (Prelude.Maybe ModelPackageGroup)
+searchRecord_modelPackageGroup = Lens.lens (\SearchRecord' {modelPackageGroup} -> modelPackageGroup) (\s@SearchRecord' {} a -> s {modelPackageGroup = a} :: SearchRecord)
+
+-- | Undocumented member.
+searchRecord_pipeline :: Lens.Lens' SearchRecord (Prelude.Maybe Pipeline)
+searchRecord_pipeline = Lens.lens (\SearchRecord' {pipeline} -> pipeline) (\s@SearchRecord' {} a -> s {pipeline = a} :: SearchRecord)
+
+-- | Undocumented member.
+searchRecord_pipelineExecution :: Lens.Lens' SearchRecord (Prelude.Maybe PipelineExecution)
+searchRecord_pipelineExecution = Lens.lens (\SearchRecord' {pipelineExecution} -> pipelineExecution) (\s@SearchRecord' {} a -> s {pipelineExecution = a} :: SearchRecord)
+
+-- | The properties of a project.
+searchRecord_project :: Lens.Lens' SearchRecord (Prelude.Maybe Project)
+searchRecord_project = Lens.lens (\SearchRecord' {project} -> project) (\s@SearchRecord' {} a -> s {project = a} :: SearchRecord)
+
+-- | The properties of a training job.
+searchRecord_trainingJob :: Lens.Lens' SearchRecord (Prelude.Maybe TrainingJob)
+searchRecord_trainingJob = Lens.lens (\SearchRecord' {trainingJob} -> trainingJob) (\s@SearchRecord' {} a -> s {trainingJob = a} :: SearchRecord)
+
+-- | The properties of a trial.
+searchRecord_trial :: Lens.Lens' SearchRecord (Prelude.Maybe Trial)
+searchRecord_trial = Lens.lens (\SearchRecord' {trial} -> trial) (\s@SearchRecord' {} a -> s {trial = a} :: SearchRecord)
+
+-- | The properties of a trial component.
+searchRecord_trialComponent :: Lens.Lens' SearchRecord (Prelude.Maybe TrialComponent)
+searchRecord_trialComponent = Lens.lens (\SearchRecord' {trialComponent} -> trialComponent) (\s@SearchRecord' {} a -> s {trialComponent = a} :: SearchRecord)
+
+instance Data.FromJSON SearchRecord where
+  parseJSON =
+    Data.withObject
+      "SearchRecord"
+      ( \x ->
+          SearchRecord'
+            Prelude.<$> (x Data..:? "Endpoint")
+            Prelude.<*> (x Data..:? "Experiment")
+            Prelude.<*> (x Data..:? "FeatureGroup")
+            Prelude.<*> (x Data..:? "FeatureMetadata")
+            Prelude.<*> (x Data..:? "HyperParameterTuningJob")
+            Prelude.<*> (x Data..:? "Model")
+            Prelude.<*> (x Data..:? "ModelCard")
+            Prelude.<*> (x Data..:? "ModelPackage")
+            Prelude.<*> (x Data..:? "ModelPackageGroup")
+            Prelude.<*> (x Data..:? "Pipeline")
+            Prelude.<*> (x Data..:? "PipelineExecution")
+            Prelude.<*> (x Data..:? "Project")
+            Prelude.<*> (x Data..:? "TrainingJob")
+            Prelude.<*> (x Data..:? "Trial")
+            Prelude.<*> (x Data..:? "TrialComponent")
+      )
+
+instance Prelude.Hashable SearchRecord where
+  hashWithSalt _salt SearchRecord' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpoint
+      `Prelude.hashWithSalt` experiment
+      `Prelude.hashWithSalt` featureGroup
+      `Prelude.hashWithSalt` featureMetadata
+      `Prelude.hashWithSalt` hyperParameterTuningJob
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` modelCard
+      `Prelude.hashWithSalt` modelPackage
+      `Prelude.hashWithSalt` modelPackageGroup
+      `Prelude.hashWithSalt` pipeline
+      `Prelude.hashWithSalt` pipelineExecution
+      `Prelude.hashWithSalt` project
+      `Prelude.hashWithSalt` trainingJob
+      `Prelude.hashWithSalt` trial
+      `Prelude.hashWithSalt` trialComponent
+
+instance Prelude.NFData SearchRecord where
+  rnf SearchRecord' {..} =
+    Prelude.rnf endpoint
+      `Prelude.seq` Prelude.rnf experiment
+      `Prelude.seq` Prelude.rnf featureGroup
+      `Prelude.seq` Prelude.rnf featureMetadata
+      `Prelude.seq` Prelude.rnf hyperParameterTuningJob
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf modelCard
+      `Prelude.seq` Prelude.rnf modelPackage
+      `Prelude.seq` Prelude.rnf modelPackageGroup
+      `Prelude.seq` Prelude.rnf pipeline
+      `Prelude.seq` Prelude.rnf pipelineExecution
+      `Prelude.seq` Prelude.rnf project
+      `Prelude.seq` Prelude.rnf trainingJob
+      `Prelude.seq` Prelude.rnf trial
+      `Prelude.seq` Prelude.rnf trialComponent
diff --git a/gen/Amazonka/SageMaker/Types/SearchSortOrder.hs b/gen/Amazonka/SageMaker/Types/SearchSortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SearchSortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SearchSortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SearchSortOrder
+  ( SearchSortOrder
+      ( ..,
+        SearchSortOrder_Ascending,
+        SearchSortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SearchSortOrder = SearchSortOrder'
+  { fromSearchSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SearchSortOrder_Ascending :: SearchSortOrder
+pattern SearchSortOrder_Ascending = SearchSortOrder' "Ascending"
+
+pattern SearchSortOrder_Descending :: SearchSortOrder
+pattern SearchSortOrder_Descending = SearchSortOrder' "Descending"
+
+{-# COMPLETE
+  SearchSortOrder_Ascending,
+  SearchSortOrder_Descending,
+  SearchSortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SecondaryStatus.hs b/gen/Amazonka/SageMaker/Types/SecondaryStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SecondaryStatus.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SecondaryStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SecondaryStatus
+  ( SecondaryStatus
+      ( ..,
+        SecondaryStatus_Completed,
+        SecondaryStatus_Downloading,
+        SecondaryStatus_DownloadingTrainingImage,
+        SecondaryStatus_Failed,
+        SecondaryStatus_Interrupted,
+        SecondaryStatus_LaunchingMLInstances,
+        SecondaryStatus_MaxRuntimeExceeded,
+        SecondaryStatus_MaxWaitTimeExceeded,
+        SecondaryStatus_PreparingTrainingStack,
+        SecondaryStatus_Restarting,
+        SecondaryStatus_Starting,
+        SecondaryStatus_Stopped,
+        SecondaryStatus_Stopping,
+        SecondaryStatus_Training,
+        SecondaryStatus_Updating,
+        SecondaryStatus_Uploading
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SecondaryStatus = SecondaryStatus'
+  { fromSecondaryStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SecondaryStatus_Completed :: SecondaryStatus
+pattern SecondaryStatus_Completed = SecondaryStatus' "Completed"
+
+pattern SecondaryStatus_Downloading :: SecondaryStatus
+pattern SecondaryStatus_Downloading = SecondaryStatus' "Downloading"
+
+pattern SecondaryStatus_DownloadingTrainingImage :: SecondaryStatus
+pattern SecondaryStatus_DownloadingTrainingImage = SecondaryStatus' "DownloadingTrainingImage"
+
+pattern SecondaryStatus_Failed :: SecondaryStatus
+pattern SecondaryStatus_Failed = SecondaryStatus' "Failed"
+
+pattern SecondaryStatus_Interrupted :: SecondaryStatus
+pattern SecondaryStatus_Interrupted = SecondaryStatus' "Interrupted"
+
+pattern SecondaryStatus_LaunchingMLInstances :: SecondaryStatus
+pattern SecondaryStatus_LaunchingMLInstances = SecondaryStatus' "LaunchingMLInstances"
+
+pattern SecondaryStatus_MaxRuntimeExceeded :: SecondaryStatus
+pattern SecondaryStatus_MaxRuntimeExceeded = SecondaryStatus' "MaxRuntimeExceeded"
+
+pattern SecondaryStatus_MaxWaitTimeExceeded :: SecondaryStatus
+pattern SecondaryStatus_MaxWaitTimeExceeded = SecondaryStatus' "MaxWaitTimeExceeded"
+
+pattern SecondaryStatus_PreparingTrainingStack :: SecondaryStatus
+pattern SecondaryStatus_PreparingTrainingStack = SecondaryStatus' "PreparingTrainingStack"
+
+pattern SecondaryStatus_Restarting :: SecondaryStatus
+pattern SecondaryStatus_Restarting = SecondaryStatus' "Restarting"
+
+pattern SecondaryStatus_Starting :: SecondaryStatus
+pattern SecondaryStatus_Starting = SecondaryStatus' "Starting"
+
+pattern SecondaryStatus_Stopped :: SecondaryStatus
+pattern SecondaryStatus_Stopped = SecondaryStatus' "Stopped"
+
+pattern SecondaryStatus_Stopping :: SecondaryStatus
+pattern SecondaryStatus_Stopping = SecondaryStatus' "Stopping"
+
+pattern SecondaryStatus_Training :: SecondaryStatus
+pattern SecondaryStatus_Training = SecondaryStatus' "Training"
+
+pattern SecondaryStatus_Updating :: SecondaryStatus
+pattern SecondaryStatus_Updating = SecondaryStatus' "Updating"
+
+pattern SecondaryStatus_Uploading :: SecondaryStatus
+pattern SecondaryStatus_Uploading = SecondaryStatus' "Uploading"
+
+{-# COMPLETE
+  SecondaryStatus_Completed,
+  SecondaryStatus_Downloading,
+  SecondaryStatus_DownloadingTrainingImage,
+  SecondaryStatus_Failed,
+  SecondaryStatus_Interrupted,
+  SecondaryStatus_LaunchingMLInstances,
+  SecondaryStatus_MaxRuntimeExceeded,
+  SecondaryStatus_MaxWaitTimeExceeded,
+  SecondaryStatus_PreparingTrainingStack,
+  SecondaryStatus_Restarting,
+  SecondaryStatus_Starting,
+  SecondaryStatus_Stopped,
+  SecondaryStatus_Stopping,
+  SecondaryStatus_Training,
+  SecondaryStatus_Updating,
+  SecondaryStatus_Uploading,
+  SecondaryStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SecondaryStatusTransition.hs b/gen/Amazonka/SageMaker/Types/SecondaryStatusTransition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SecondaryStatusTransition.hs
@@ -0,0 +1,353 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SecondaryStatusTransition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SecondaryStatusTransition 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 Amazonka.SageMaker.Types.SecondaryStatus
+
+-- | An array element of
+-- DescribeTrainingJobResponse$SecondaryStatusTransitions. It provides
+-- additional details about a status that the training job has transitioned
+-- through. A training job can be in one of several states, for example,
+-- starting, downloading, training, or uploading. Within each state, there
+-- are a number of intermediate states. For example, within the starting
+-- state, SageMaker could be starting the training job or launching the ML
+-- instances. These transitional states are referred to as the job\'s
+-- secondary status.
+--
+-- /See:/ 'newSecondaryStatusTransition' smart constructor.
+data SecondaryStatusTransition = SecondaryStatusTransition'
+  { -- | A timestamp that shows when the training job transitioned out of this
+    -- secondary status state into another secondary status state or when the
+    -- training job has ended.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | A detailed description of the progress within a secondary status.
+    --
+    -- SageMaker provides secondary statuses and status messages that apply to
+    -- each of them:
+    --
+    -- [Starting]
+    --     -   Starting the training job.
+    --
+    --     -   Launching requested ML instances.
+    --
+    --     -   Insufficient capacity error from EC2 while launching instances,
+    --         retrying!
+    --
+    --     -   Launched instance was unhealthy, replacing it!
+    --
+    --     -   Preparing the instances for training.
+    --
+    -- [Training]
+    --     -   Downloading the training image.
+    --
+    --     -   Training image download completed. Training in progress.
+    --
+    -- Status messages are subject to change. Therefore, we recommend not
+    -- including them in code that programmatically initiates actions. For
+    -- examples, don\'t use status messages in if statements.
+    --
+    -- To have an overview of your training job\'s progress, view
+    -- @TrainingJobStatus@ and @SecondaryStatus@ in DescribeTrainingJob, and
+    -- @StatusMessage@ together. For example, at the start of a training job,
+    -- you might see the following:
+    --
+    -- -   @TrainingJobStatus@ - InProgress
+    --
+    -- -   @SecondaryStatus@ - Training
+    --
+    -- -   @StatusMessage@ - Downloading the training image
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | Contains a secondary status information from a training job.
+    --
+    -- Status might be one of the following secondary statuses:
+    --
+    -- [InProgress]
+    --     -   @Starting@ - Starting the training job.
+    --
+    --     -   @Downloading@ - An optional stage for algorithms that support
+    --         @File@ training input mode. It indicates that data is being
+    --         downloaded to the ML storage volumes.
+    --
+    --     -   @Training@ - Training is in progress.
+    --
+    --     -   @Uploading@ - Training is complete and the model artifacts are
+    --         being uploaded to the S3 location.
+    --
+    -- [Completed]
+    --     -   @Completed@ - The training job has completed.
+    --
+    -- [Failed]
+    --     -   @Failed@ - The training job has failed. The reason for the
+    --         failure is returned in the @FailureReason@ field of
+    --         @DescribeTrainingJobResponse@.
+    --
+    -- [Stopped]
+    --     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+    --         maximum allowed runtime.
+    --
+    --     -   @Stopped@ - The training job has stopped.
+    --
+    -- [Stopping]
+    --     -   @Stopping@ - Stopping the training job.
+    --
+    -- We no longer support the following secondary statuses:
+    --
+    -- -   @LaunchingMLInstances@
+    --
+    -- -   @PreparingTrainingStack@
+    --
+    -- -   @DownloadingTrainingImage@
+    status :: SecondaryStatus,
+    -- | A timestamp that shows when the training job transitioned to the current
+    -- secondary status state.
+    startTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SecondaryStatusTransition' 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:
+--
+-- 'endTime', 'secondaryStatusTransition_endTime' - A timestamp that shows when the training job transitioned out of this
+-- secondary status state into another secondary status state or when the
+-- training job has ended.
+--
+-- 'statusMessage', 'secondaryStatusTransition_statusMessage' - A detailed description of the progress within a secondary status.
+--
+-- SageMaker provides secondary statuses and status messages that apply to
+-- each of them:
+--
+-- [Starting]
+--     -   Starting the training job.
+--
+--     -   Launching requested ML instances.
+--
+--     -   Insufficient capacity error from EC2 while launching instances,
+--         retrying!
+--
+--     -   Launched instance was unhealthy, replacing it!
+--
+--     -   Preparing the instances for training.
+--
+-- [Training]
+--     -   Downloading the training image.
+--
+--     -   Training image download completed. Training in progress.
+--
+-- Status messages are subject to change. Therefore, we recommend not
+-- including them in code that programmatically initiates actions. For
+-- examples, don\'t use status messages in if statements.
+--
+-- To have an overview of your training job\'s progress, view
+-- @TrainingJobStatus@ and @SecondaryStatus@ in DescribeTrainingJob, and
+-- @StatusMessage@ together. For example, at the start of a training job,
+-- you might see the following:
+--
+-- -   @TrainingJobStatus@ - InProgress
+--
+-- -   @SecondaryStatus@ - Training
+--
+-- -   @StatusMessage@ - Downloading the training image
+--
+-- 'status', 'secondaryStatusTransition_status' - Contains a secondary status information from a training job.
+--
+-- Status might be one of the following secondary statuses:
+--
+-- [InProgress]
+--     -   @Starting@ - Starting the training job.
+--
+--     -   @Downloading@ - An optional stage for algorithms that support
+--         @File@ training input mode. It indicates that data is being
+--         downloaded to the ML storage volumes.
+--
+--     -   @Training@ - Training is in progress.
+--
+--     -   @Uploading@ - Training is complete and the model artifacts are
+--         being uploaded to the S3 location.
+--
+-- [Completed]
+--     -   @Completed@ - The training job has completed.
+--
+-- [Failed]
+--     -   @Failed@ - The training job has failed. The reason for the
+--         failure is returned in the @FailureReason@ field of
+--         @DescribeTrainingJobResponse@.
+--
+-- [Stopped]
+--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed runtime.
+--
+--     -   @Stopped@ - The training job has stopped.
+--
+-- [Stopping]
+--     -   @Stopping@ - Stopping the training job.
+--
+-- We no longer support the following secondary statuses:
+--
+-- -   @LaunchingMLInstances@
+--
+-- -   @PreparingTrainingStack@
+--
+-- -   @DownloadingTrainingImage@
+--
+-- 'startTime', 'secondaryStatusTransition_startTime' - A timestamp that shows when the training job transitioned to the current
+-- secondary status state.
+newSecondaryStatusTransition ::
+  -- | 'status'
+  SecondaryStatus ->
+  -- | 'startTime'
+  Prelude.UTCTime ->
+  SecondaryStatusTransition
+newSecondaryStatusTransition pStatus_ pStartTime_ =
+  SecondaryStatusTransition'
+    { endTime =
+        Prelude.Nothing,
+      statusMessage = Prelude.Nothing,
+      status = pStatus_,
+      startTime = Data._Time Lens.# pStartTime_
+    }
+
+-- | A timestamp that shows when the training job transitioned out of this
+-- secondary status state into another secondary status state or when the
+-- training job has ended.
+secondaryStatusTransition_endTime :: Lens.Lens' SecondaryStatusTransition (Prelude.Maybe Prelude.UTCTime)
+secondaryStatusTransition_endTime = Lens.lens (\SecondaryStatusTransition' {endTime} -> endTime) (\s@SecondaryStatusTransition' {} a -> s {endTime = a} :: SecondaryStatusTransition) Prelude.. Lens.mapping Data._Time
+
+-- | A detailed description of the progress within a secondary status.
+--
+-- SageMaker provides secondary statuses and status messages that apply to
+-- each of them:
+--
+-- [Starting]
+--     -   Starting the training job.
+--
+--     -   Launching requested ML instances.
+--
+--     -   Insufficient capacity error from EC2 while launching instances,
+--         retrying!
+--
+--     -   Launched instance was unhealthy, replacing it!
+--
+--     -   Preparing the instances for training.
+--
+-- [Training]
+--     -   Downloading the training image.
+--
+--     -   Training image download completed. Training in progress.
+--
+-- Status messages are subject to change. Therefore, we recommend not
+-- including them in code that programmatically initiates actions. For
+-- examples, don\'t use status messages in if statements.
+--
+-- To have an overview of your training job\'s progress, view
+-- @TrainingJobStatus@ and @SecondaryStatus@ in DescribeTrainingJob, and
+-- @StatusMessage@ together. For example, at the start of a training job,
+-- you might see the following:
+--
+-- -   @TrainingJobStatus@ - InProgress
+--
+-- -   @SecondaryStatus@ - Training
+--
+-- -   @StatusMessage@ - Downloading the training image
+secondaryStatusTransition_statusMessage :: Lens.Lens' SecondaryStatusTransition (Prelude.Maybe Prelude.Text)
+secondaryStatusTransition_statusMessage = Lens.lens (\SecondaryStatusTransition' {statusMessage} -> statusMessage) (\s@SecondaryStatusTransition' {} a -> s {statusMessage = a} :: SecondaryStatusTransition)
+
+-- | Contains a secondary status information from a training job.
+--
+-- Status might be one of the following secondary statuses:
+--
+-- [InProgress]
+--     -   @Starting@ - Starting the training job.
+--
+--     -   @Downloading@ - An optional stage for algorithms that support
+--         @File@ training input mode. It indicates that data is being
+--         downloaded to the ML storage volumes.
+--
+--     -   @Training@ - Training is in progress.
+--
+--     -   @Uploading@ - Training is complete and the model artifacts are
+--         being uploaded to the S3 location.
+--
+-- [Completed]
+--     -   @Completed@ - The training job has completed.
+--
+-- [Failed]
+--     -   @Failed@ - The training job has failed. The reason for the
+--         failure is returned in the @FailureReason@ field of
+--         @DescribeTrainingJobResponse@.
+--
+-- [Stopped]
+--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed runtime.
+--
+--     -   @Stopped@ - The training job has stopped.
+--
+-- [Stopping]
+--     -   @Stopping@ - Stopping the training job.
+--
+-- We no longer support the following secondary statuses:
+--
+-- -   @LaunchingMLInstances@
+--
+-- -   @PreparingTrainingStack@
+--
+-- -   @DownloadingTrainingImage@
+secondaryStatusTransition_status :: Lens.Lens' SecondaryStatusTransition SecondaryStatus
+secondaryStatusTransition_status = Lens.lens (\SecondaryStatusTransition' {status} -> status) (\s@SecondaryStatusTransition' {} a -> s {status = a} :: SecondaryStatusTransition)
+
+-- | A timestamp that shows when the training job transitioned to the current
+-- secondary status state.
+secondaryStatusTransition_startTime :: Lens.Lens' SecondaryStatusTransition Prelude.UTCTime
+secondaryStatusTransition_startTime = Lens.lens (\SecondaryStatusTransition' {startTime} -> startTime) (\s@SecondaryStatusTransition' {} a -> s {startTime = a} :: SecondaryStatusTransition) Prelude.. Data._Time
+
+instance Data.FromJSON SecondaryStatusTransition where
+  parseJSON =
+    Data.withObject
+      "SecondaryStatusTransition"
+      ( \x ->
+          SecondaryStatusTransition'
+            Prelude.<$> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "StatusMessage")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "StartTime")
+      )
+
+instance Prelude.Hashable SecondaryStatusTransition where
+  hashWithSalt _salt SecondaryStatusTransition' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData SecondaryStatusTransition where
+  rnf SecondaryStatusTransition' {..} =
+    Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf startTime
diff --git a/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisionedProductDetails.hs b/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisionedProductDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisionedProductDetails.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ServiceCatalogProvisionedProductDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ServiceCatalogProvisionedProductDetails 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
+
+-- | Details of a provisioned service catalog product. For information about
+-- service catalog, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+--
+-- /See:/ 'newServiceCatalogProvisionedProductDetails' smart constructor.
+data ServiceCatalogProvisionedProductDetails = ServiceCatalogProvisionedProductDetails'
+  { -- | The ID of the provisioned product.
+    provisionedProductId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the product.
+    --
+    -- -   @AVAILABLE@ - Stable state, ready to perform any operation. The most
+    --     recent operation succeeded and completed.
+    --
+    -- -   @UNDER_CHANGE@ - Transitive state. Operations performed might not
+    --     have valid results. Wait for an AVAILABLE status before performing
+    --     operations.
+    --
+    -- -   @TAINTED@ - Stable state, ready to perform any operation. The stack
+    --     has completed the requested operation but is not exactly what was
+    --     requested. For example, a request to update to a new version failed
+    --     and the stack rolled back to the current version.
+    --
+    -- -   @ERROR@ - An unexpected error occurred. The provisioned product
+    --     exists but the stack is not running. For example, CloudFormation
+    --     received a parameter value that was not valid and could not launch
+    --     the stack.
+    --
+    -- -   @PLAN_IN_PROGRESS@ - Transitive state. The plan operations were
+    --     performed to provision a new product, but resources have not yet
+    --     been created. After reviewing the list of resources to be created,
+    --     execute the plan. Wait for an AVAILABLE status before performing
+    --     operations.
+    provisionedProductStatusMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceCatalogProvisionedProductDetails' 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:
+--
+-- 'provisionedProductId', 'serviceCatalogProvisionedProductDetails_provisionedProductId' - The ID of the provisioned product.
+--
+-- 'provisionedProductStatusMessage', 'serviceCatalogProvisionedProductDetails_provisionedProductStatusMessage' - The current status of the product.
+--
+-- -   @AVAILABLE@ - Stable state, ready to perform any operation. The most
+--     recent operation succeeded and completed.
+--
+-- -   @UNDER_CHANGE@ - Transitive state. Operations performed might not
+--     have valid results. Wait for an AVAILABLE status before performing
+--     operations.
+--
+-- -   @TAINTED@ - Stable state, ready to perform any operation. The stack
+--     has completed the requested operation but is not exactly what was
+--     requested. For example, a request to update to a new version failed
+--     and the stack rolled back to the current version.
+--
+-- -   @ERROR@ - An unexpected error occurred. The provisioned product
+--     exists but the stack is not running. For example, CloudFormation
+--     received a parameter value that was not valid and could not launch
+--     the stack.
+--
+-- -   @PLAN_IN_PROGRESS@ - Transitive state. The plan operations were
+--     performed to provision a new product, but resources have not yet
+--     been created. After reviewing the list of resources to be created,
+--     execute the plan. Wait for an AVAILABLE status before performing
+--     operations.
+newServiceCatalogProvisionedProductDetails ::
+  ServiceCatalogProvisionedProductDetails
+newServiceCatalogProvisionedProductDetails =
+  ServiceCatalogProvisionedProductDetails'
+    { provisionedProductId =
+        Prelude.Nothing,
+      provisionedProductStatusMessage =
+        Prelude.Nothing
+    }
+
+-- | The ID of the provisioned product.
+serviceCatalogProvisionedProductDetails_provisionedProductId :: Lens.Lens' ServiceCatalogProvisionedProductDetails (Prelude.Maybe Prelude.Text)
+serviceCatalogProvisionedProductDetails_provisionedProductId = Lens.lens (\ServiceCatalogProvisionedProductDetails' {provisionedProductId} -> provisionedProductId) (\s@ServiceCatalogProvisionedProductDetails' {} a -> s {provisionedProductId = a} :: ServiceCatalogProvisionedProductDetails)
+
+-- | The current status of the product.
+--
+-- -   @AVAILABLE@ - Stable state, ready to perform any operation. The most
+--     recent operation succeeded and completed.
+--
+-- -   @UNDER_CHANGE@ - Transitive state. Operations performed might not
+--     have valid results. Wait for an AVAILABLE status before performing
+--     operations.
+--
+-- -   @TAINTED@ - Stable state, ready to perform any operation. The stack
+--     has completed the requested operation but is not exactly what was
+--     requested. For example, a request to update to a new version failed
+--     and the stack rolled back to the current version.
+--
+-- -   @ERROR@ - An unexpected error occurred. The provisioned product
+--     exists but the stack is not running. For example, CloudFormation
+--     received a parameter value that was not valid and could not launch
+--     the stack.
+--
+-- -   @PLAN_IN_PROGRESS@ - Transitive state. The plan operations were
+--     performed to provision a new product, but resources have not yet
+--     been created. After reviewing the list of resources to be created,
+--     execute the plan. Wait for an AVAILABLE status before performing
+--     operations.
+serviceCatalogProvisionedProductDetails_provisionedProductStatusMessage :: Lens.Lens' ServiceCatalogProvisionedProductDetails (Prelude.Maybe Prelude.Text)
+serviceCatalogProvisionedProductDetails_provisionedProductStatusMessage = Lens.lens (\ServiceCatalogProvisionedProductDetails' {provisionedProductStatusMessage} -> provisionedProductStatusMessage) (\s@ServiceCatalogProvisionedProductDetails' {} a -> s {provisionedProductStatusMessage = a} :: ServiceCatalogProvisionedProductDetails)
+
+instance
+  Data.FromJSON
+    ServiceCatalogProvisionedProductDetails
+  where
+  parseJSON =
+    Data.withObject
+      "ServiceCatalogProvisionedProductDetails"
+      ( \x ->
+          ServiceCatalogProvisionedProductDetails'
+            Prelude.<$> (x Data..:? "ProvisionedProductId")
+            Prelude.<*> (x Data..:? "ProvisionedProductStatusMessage")
+      )
+
+instance
+  Prelude.Hashable
+    ServiceCatalogProvisionedProductDetails
+  where
+  hashWithSalt
+    _salt
+    ServiceCatalogProvisionedProductDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` provisionedProductId
+        `Prelude.hashWithSalt` provisionedProductStatusMessage
+
+instance
+  Prelude.NFData
+    ServiceCatalogProvisionedProductDetails
+  where
+  rnf ServiceCatalogProvisionedProductDetails' {..} =
+    Prelude.rnf provisionedProductId
+      `Prelude.seq` Prelude.rnf provisionedProductStatusMessage
diff --git a/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisioningDetails.hs b/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisioningDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisioningDetails.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ServiceCatalogProvisioningDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ServiceCatalogProvisioningDetails 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 Amazonka.SageMaker.Types.ProvisioningParameter
+
+-- | Details that you specify to provision a service catalog product. For
+-- information about service catalog, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+--
+-- /See:/ 'newServiceCatalogProvisioningDetails' smart constructor.
+data ServiceCatalogProvisioningDetails = ServiceCatalogProvisioningDetails'
+  { -- | The path identifier of the product. This value is optional if the
+    -- product has a default path, and required if the product has more than
+    -- one path.
+    pathId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the provisioning artifact.
+    provisioningArtifactId :: Prelude.Maybe Prelude.Text,
+    -- | A list of key value pairs that you specify when you provision a product.
+    provisioningParameters :: Prelude.Maybe [ProvisioningParameter],
+    -- | The ID of the product to provision.
+    productId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceCatalogProvisioningDetails' 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:
+--
+-- 'pathId', 'serviceCatalogProvisioningDetails_pathId' - The path identifier of the product. This value is optional if the
+-- product has a default path, and required if the product has more than
+-- one path.
+--
+-- 'provisioningArtifactId', 'serviceCatalogProvisioningDetails_provisioningArtifactId' - The ID of the provisioning artifact.
+--
+-- 'provisioningParameters', 'serviceCatalogProvisioningDetails_provisioningParameters' - A list of key value pairs that you specify when you provision a product.
+--
+-- 'productId', 'serviceCatalogProvisioningDetails_productId' - The ID of the product to provision.
+newServiceCatalogProvisioningDetails ::
+  -- | 'productId'
+  Prelude.Text ->
+  ServiceCatalogProvisioningDetails
+newServiceCatalogProvisioningDetails pProductId_ =
+  ServiceCatalogProvisioningDetails'
+    { pathId =
+        Prelude.Nothing,
+      provisioningArtifactId = Prelude.Nothing,
+      provisioningParameters = Prelude.Nothing,
+      productId = pProductId_
+    }
+
+-- | The path identifier of the product. This value is optional if the
+-- product has a default path, and required if the product has more than
+-- one path.
+serviceCatalogProvisioningDetails_pathId :: Lens.Lens' ServiceCatalogProvisioningDetails (Prelude.Maybe Prelude.Text)
+serviceCatalogProvisioningDetails_pathId = Lens.lens (\ServiceCatalogProvisioningDetails' {pathId} -> pathId) (\s@ServiceCatalogProvisioningDetails' {} a -> s {pathId = a} :: ServiceCatalogProvisioningDetails)
+
+-- | The ID of the provisioning artifact.
+serviceCatalogProvisioningDetails_provisioningArtifactId :: Lens.Lens' ServiceCatalogProvisioningDetails (Prelude.Maybe Prelude.Text)
+serviceCatalogProvisioningDetails_provisioningArtifactId = Lens.lens (\ServiceCatalogProvisioningDetails' {provisioningArtifactId} -> provisioningArtifactId) (\s@ServiceCatalogProvisioningDetails' {} a -> s {provisioningArtifactId = a} :: ServiceCatalogProvisioningDetails)
+
+-- | A list of key value pairs that you specify when you provision a product.
+serviceCatalogProvisioningDetails_provisioningParameters :: Lens.Lens' ServiceCatalogProvisioningDetails (Prelude.Maybe [ProvisioningParameter])
+serviceCatalogProvisioningDetails_provisioningParameters = Lens.lens (\ServiceCatalogProvisioningDetails' {provisioningParameters} -> provisioningParameters) (\s@ServiceCatalogProvisioningDetails' {} a -> s {provisioningParameters = a} :: ServiceCatalogProvisioningDetails) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the product to provision.
+serviceCatalogProvisioningDetails_productId :: Lens.Lens' ServiceCatalogProvisioningDetails Prelude.Text
+serviceCatalogProvisioningDetails_productId = Lens.lens (\ServiceCatalogProvisioningDetails' {productId} -> productId) (\s@ServiceCatalogProvisioningDetails' {} a -> s {productId = a} :: ServiceCatalogProvisioningDetails)
+
+instance
+  Data.FromJSON
+    ServiceCatalogProvisioningDetails
+  where
+  parseJSON =
+    Data.withObject
+      "ServiceCatalogProvisioningDetails"
+      ( \x ->
+          ServiceCatalogProvisioningDetails'
+            Prelude.<$> (x Data..:? "PathId")
+            Prelude.<*> (x Data..:? "ProvisioningArtifactId")
+            Prelude.<*> ( x
+                            Data..:? "ProvisioningParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "ProductId")
+      )
+
+instance
+  Prelude.Hashable
+    ServiceCatalogProvisioningDetails
+  where
+  hashWithSalt
+    _salt
+    ServiceCatalogProvisioningDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` pathId
+        `Prelude.hashWithSalt` provisioningArtifactId
+        `Prelude.hashWithSalt` provisioningParameters
+        `Prelude.hashWithSalt` productId
+
+instance
+  Prelude.NFData
+    ServiceCatalogProvisioningDetails
+  where
+  rnf ServiceCatalogProvisioningDetails' {..} =
+    Prelude.rnf pathId
+      `Prelude.seq` Prelude.rnf provisioningArtifactId
+      `Prelude.seq` Prelude.rnf provisioningParameters
+      `Prelude.seq` Prelude.rnf productId
+
+instance
+  Data.ToJSON
+    ServiceCatalogProvisioningDetails
+  where
+  toJSON ServiceCatalogProvisioningDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PathId" Data..=) Prelude.<$> pathId,
+            ("ProvisioningArtifactId" Data..=)
+              Prelude.<$> provisioningArtifactId,
+            ("ProvisioningParameters" Data..=)
+              Prelude.<$> provisioningParameters,
+            Prelude.Just ("ProductId" Data..= productId)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisioningUpdateDetails.hs b/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisioningUpdateDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ServiceCatalogProvisioningUpdateDetails.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ServiceCatalogProvisioningUpdateDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ServiceCatalogProvisioningUpdateDetails 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 Amazonka.SageMaker.Types.ProvisioningParameter
+
+-- | Details that you specify to provision a service catalog product. For
+-- information about service catalog, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+--
+-- /See:/ 'newServiceCatalogProvisioningUpdateDetails' smart constructor.
+data ServiceCatalogProvisioningUpdateDetails = ServiceCatalogProvisioningUpdateDetails'
+  { -- | The ID of the provisioning artifact.
+    provisioningArtifactId :: Prelude.Maybe Prelude.Text,
+    -- | A list of key value pairs that you specify when you provision a product.
+    provisioningParameters :: Prelude.Maybe [ProvisioningParameter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceCatalogProvisioningUpdateDetails' 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:
+--
+-- 'provisioningArtifactId', 'serviceCatalogProvisioningUpdateDetails_provisioningArtifactId' - The ID of the provisioning artifact.
+--
+-- 'provisioningParameters', 'serviceCatalogProvisioningUpdateDetails_provisioningParameters' - A list of key value pairs that you specify when you provision a product.
+newServiceCatalogProvisioningUpdateDetails ::
+  ServiceCatalogProvisioningUpdateDetails
+newServiceCatalogProvisioningUpdateDetails =
+  ServiceCatalogProvisioningUpdateDetails'
+    { provisioningArtifactId =
+        Prelude.Nothing,
+      provisioningParameters =
+        Prelude.Nothing
+    }
+
+-- | The ID of the provisioning artifact.
+serviceCatalogProvisioningUpdateDetails_provisioningArtifactId :: Lens.Lens' ServiceCatalogProvisioningUpdateDetails (Prelude.Maybe Prelude.Text)
+serviceCatalogProvisioningUpdateDetails_provisioningArtifactId = Lens.lens (\ServiceCatalogProvisioningUpdateDetails' {provisioningArtifactId} -> provisioningArtifactId) (\s@ServiceCatalogProvisioningUpdateDetails' {} a -> s {provisioningArtifactId = a} :: ServiceCatalogProvisioningUpdateDetails)
+
+-- | A list of key value pairs that you specify when you provision a product.
+serviceCatalogProvisioningUpdateDetails_provisioningParameters :: Lens.Lens' ServiceCatalogProvisioningUpdateDetails (Prelude.Maybe [ProvisioningParameter])
+serviceCatalogProvisioningUpdateDetails_provisioningParameters = Lens.lens (\ServiceCatalogProvisioningUpdateDetails' {provisioningParameters} -> provisioningParameters) (\s@ServiceCatalogProvisioningUpdateDetails' {} a -> s {provisioningParameters = a} :: ServiceCatalogProvisioningUpdateDetails) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    ServiceCatalogProvisioningUpdateDetails
+  where
+  hashWithSalt
+    _salt
+    ServiceCatalogProvisioningUpdateDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` provisioningArtifactId
+        `Prelude.hashWithSalt` provisioningParameters
+
+instance
+  Prelude.NFData
+    ServiceCatalogProvisioningUpdateDetails
+  where
+  rnf ServiceCatalogProvisioningUpdateDetails' {..} =
+    Prelude.rnf provisioningArtifactId
+      `Prelude.seq` Prelude.rnf provisioningParameters
+
+instance
+  Data.ToJSON
+    ServiceCatalogProvisioningUpdateDetails
+  where
+  toJSON ServiceCatalogProvisioningUpdateDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ProvisioningArtifactId" Data..=)
+              Prelude.<$> provisioningArtifactId,
+            ("ProvisioningParameters" Data..=)
+              Prelude.<$> provisioningParameters
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ShadowModeConfig.hs b/gen/Amazonka/SageMaker/Types/ShadowModeConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ShadowModeConfig.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ShadowModeConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ShadowModeConfig 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 Amazonka.SageMaker.Types.ShadowModelVariantConfig
+
+-- | The configuration of @ShadowMode@ inference experiment type, which
+-- specifies a production variant to take all the inference requests, and a
+-- shadow variant to which Amazon SageMaker replicates a percentage of the
+-- inference requests. For the shadow variant it also specifies the
+-- percentage of requests that Amazon SageMaker replicates.
+--
+-- /See:/ 'newShadowModeConfig' smart constructor.
+data ShadowModeConfig = ShadowModeConfig'
+  { -- | The name of the production variant, which takes all the inference
+    -- requests.
+    sourceModelVariantName :: Prelude.Text,
+    -- | List of shadow variant configurations.
+    shadowModelVariants :: Prelude.NonEmpty ShadowModelVariantConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShadowModeConfig' 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:
+--
+-- 'sourceModelVariantName', 'shadowModeConfig_sourceModelVariantName' - The name of the production variant, which takes all the inference
+-- requests.
+--
+-- 'shadowModelVariants', 'shadowModeConfig_shadowModelVariants' - List of shadow variant configurations.
+newShadowModeConfig ::
+  -- | 'sourceModelVariantName'
+  Prelude.Text ->
+  -- | 'shadowModelVariants'
+  Prelude.NonEmpty ShadowModelVariantConfig ->
+  ShadowModeConfig
+newShadowModeConfig
+  pSourceModelVariantName_
+  pShadowModelVariants_ =
+    ShadowModeConfig'
+      { sourceModelVariantName =
+          pSourceModelVariantName_,
+        shadowModelVariants =
+          Lens.coerced Lens.# pShadowModelVariants_
+      }
+
+-- | The name of the production variant, which takes all the inference
+-- requests.
+shadowModeConfig_sourceModelVariantName :: Lens.Lens' ShadowModeConfig Prelude.Text
+shadowModeConfig_sourceModelVariantName = Lens.lens (\ShadowModeConfig' {sourceModelVariantName} -> sourceModelVariantName) (\s@ShadowModeConfig' {} a -> s {sourceModelVariantName = a} :: ShadowModeConfig)
+
+-- | List of shadow variant configurations.
+shadowModeConfig_shadowModelVariants :: Lens.Lens' ShadowModeConfig (Prelude.NonEmpty ShadowModelVariantConfig)
+shadowModeConfig_shadowModelVariants = Lens.lens (\ShadowModeConfig' {shadowModelVariants} -> shadowModelVariants) (\s@ShadowModeConfig' {} a -> s {shadowModelVariants = a} :: ShadowModeConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON ShadowModeConfig where
+  parseJSON =
+    Data.withObject
+      "ShadowModeConfig"
+      ( \x ->
+          ShadowModeConfig'
+            Prelude.<$> (x Data..: "SourceModelVariantName")
+            Prelude.<*> (x Data..: "ShadowModelVariants")
+      )
+
+instance Prelude.Hashable ShadowModeConfig where
+  hashWithSalt _salt ShadowModeConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceModelVariantName
+      `Prelude.hashWithSalt` shadowModelVariants
+
+instance Prelude.NFData ShadowModeConfig where
+  rnf ShadowModeConfig' {..} =
+    Prelude.rnf sourceModelVariantName
+      `Prelude.seq` Prelude.rnf shadowModelVariants
+
+instance Data.ToJSON ShadowModeConfig where
+  toJSON ShadowModeConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "SourceModelVariantName"
+                  Data..= sourceModelVariantName
+              ),
+            Prelude.Just
+              ("ShadowModelVariants" Data..= shadowModelVariants)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ShadowModelVariantConfig.hs b/gen/Amazonka/SageMaker/Types/ShadowModelVariantConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ShadowModelVariantConfig.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ShadowModelVariantConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ShadowModelVariantConfig 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
+
+-- | The name and sampling percentage of a shadow variant.
+--
+-- /See:/ 'newShadowModelVariantConfig' smart constructor.
+data ShadowModelVariantConfig = ShadowModelVariantConfig'
+  { -- | The name of the shadow variant.
+    shadowModelVariantName :: Prelude.Text,
+    -- | The percentage of inference requests that Amazon SageMaker replicates
+    -- from the production variant to the shadow variant.
+    samplingPercentage :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShadowModelVariantConfig' 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:
+--
+-- 'shadowModelVariantName', 'shadowModelVariantConfig_shadowModelVariantName' - The name of the shadow variant.
+--
+-- 'samplingPercentage', 'shadowModelVariantConfig_samplingPercentage' - The percentage of inference requests that Amazon SageMaker replicates
+-- from the production variant to the shadow variant.
+newShadowModelVariantConfig ::
+  -- | 'shadowModelVariantName'
+  Prelude.Text ->
+  -- | 'samplingPercentage'
+  Prelude.Int ->
+  ShadowModelVariantConfig
+newShadowModelVariantConfig
+  pShadowModelVariantName_
+  pSamplingPercentage_ =
+    ShadowModelVariantConfig'
+      { shadowModelVariantName =
+          pShadowModelVariantName_,
+        samplingPercentage = pSamplingPercentage_
+      }
+
+-- | The name of the shadow variant.
+shadowModelVariantConfig_shadowModelVariantName :: Lens.Lens' ShadowModelVariantConfig Prelude.Text
+shadowModelVariantConfig_shadowModelVariantName = Lens.lens (\ShadowModelVariantConfig' {shadowModelVariantName} -> shadowModelVariantName) (\s@ShadowModelVariantConfig' {} a -> s {shadowModelVariantName = a} :: ShadowModelVariantConfig)
+
+-- | The percentage of inference requests that Amazon SageMaker replicates
+-- from the production variant to the shadow variant.
+shadowModelVariantConfig_samplingPercentage :: Lens.Lens' ShadowModelVariantConfig Prelude.Int
+shadowModelVariantConfig_samplingPercentage = Lens.lens (\ShadowModelVariantConfig' {samplingPercentage} -> samplingPercentage) (\s@ShadowModelVariantConfig' {} a -> s {samplingPercentage = a} :: ShadowModelVariantConfig)
+
+instance Data.FromJSON ShadowModelVariantConfig where
+  parseJSON =
+    Data.withObject
+      "ShadowModelVariantConfig"
+      ( \x ->
+          ShadowModelVariantConfig'
+            Prelude.<$> (x Data..: "ShadowModelVariantName")
+            Prelude.<*> (x Data..: "SamplingPercentage")
+      )
+
+instance Prelude.Hashable ShadowModelVariantConfig where
+  hashWithSalt _salt ShadowModelVariantConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` shadowModelVariantName
+      `Prelude.hashWithSalt` samplingPercentage
+
+instance Prelude.NFData ShadowModelVariantConfig where
+  rnf ShadowModelVariantConfig' {..} =
+    Prelude.rnf shadowModelVariantName
+      `Prelude.seq` Prelude.rnf samplingPercentage
+
+instance Data.ToJSON ShadowModelVariantConfig where
+  toJSON ShadowModelVariantConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ShadowModelVariantName"
+                  Data..= shadowModelVariantName
+              ),
+            Prelude.Just
+              ("SamplingPercentage" Data..= samplingPercentage)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SharingSettings.hs b/gen/Amazonka/SageMaker/Types/SharingSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SharingSettings.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SharingSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SharingSettings 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 Amazonka.SageMaker.Types.NotebookOutputOption
+
+-- | Specifies options for sharing SageMaker Studio notebooks. These settings
+-- are specified as part of @DefaultUserSettings@ when the @CreateDomain@
+-- API is called, and as part of @UserSettings@ when the
+-- @CreateUserProfile@ API is called. When @SharingSettings@ is not
+-- specified, notebook sharing isn\'t allowed.
+--
+-- /See:/ 'newSharingSettings' smart constructor.
+data SharingSettings = SharingSettings'
+  { -- | Whether to include the notebook cell output when sharing the notebook.
+    -- The default is @Disabled@.
+    notebookOutputOption :: Prelude.Maybe NotebookOutputOption,
+    -- | When @NotebookOutputOption@ is @Allowed@, the Amazon Web Services Key
+    -- Management Service (KMS) encryption key ID used to encrypt the notebook
+    -- cell output in the Amazon S3 bucket.
+    s3KmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | When @NotebookOutputOption@ is @Allowed@, the Amazon S3 bucket used to
+    -- store the shared notebook snapshots.
+    s3OutputPath :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SharingSettings' 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:
+--
+-- 'notebookOutputOption', 'sharingSettings_notebookOutputOption' - Whether to include the notebook cell output when sharing the notebook.
+-- The default is @Disabled@.
+--
+-- 's3KmsKeyId', 'sharingSettings_s3KmsKeyId' - When @NotebookOutputOption@ is @Allowed@, the Amazon Web Services Key
+-- Management Service (KMS) encryption key ID used to encrypt the notebook
+-- cell output in the Amazon S3 bucket.
+--
+-- 's3OutputPath', 'sharingSettings_s3OutputPath' - When @NotebookOutputOption@ is @Allowed@, the Amazon S3 bucket used to
+-- store the shared notebook snapshots.
+newSharingSettings ::
+  SharingSettings
+newSharingSettings =
+  SharingSettings'
+    { notebookOutputOption =
+        Prelude.Nothing,
+      s3KmsKeyId = Prelude.Nothing,
+      s3OutputPath = Prelude.Nothing
+    }
+
+-- | Whether to include the notebook cell output when sharing the notebook.
+-- The default is @Disabled@.
+sharingSettings_notebookOutputOption :: Lens.Lens' SharingSettings (Prelude.Maybe NotebookOutputOption)
+sharingSettings_notebookOutputOption = Lens.lens (\SharingSettings' {notebookOutputOption} -> notebookOutputOption) (\s@SharingSettings' {} a -> s {notebookOutputOption = a} :: SharingSettings)
+
+-- | When @NotebookOutputOption@ is @Allowed@, the Amazon Web Services Key
+-- Management Service (KMS) encryption key ID used to encrypt the notebook
+-- cell output in the Amazon S3 bucket.
+sharingSettings_s3KmsKeyId :: Lens.Lens' SharingSettings (Prelude.Maybe Prelude.Text)
+sharingSettings_s3KmsKeyId = Lens.lens (\SharingSettings' {s3KmsKeyId} -> s3KmsKeyId) (\s@SharingSettings' {} a -> s {s3KmsKeyId = a} :: SharingSettings)
+
+-- | When @NotebookOutputOption@ is @Allowed@, the Amazon S3 bucket used to
+-- store the shared notebook snapshots.
+sharingSettings_s3OutputPath :: Lens.Lens' SharingSettings (Prelude.Maybe Prelude.Text)
+sharingSettings_s3OutputPath = Lens.lens (\SharingSettings' {s3OutputPath} -> s3OutputPath) (\s@SharingSettings' {} a -> s {s3OutputPath = a} :: SharingSettings)
+
+instance Data.FromJSON SharingSettings where
+  parseJSON =
+    Data.withObject
+      "SharingSettings"
+      ( \x ->
+          SharingSettings'
+            Prelude.<$> (x Data..:? "NotebookOutputOption")
+            Prelude.<*> (x Data..:? "S3KmsKeyId")
+            Prelude.<*> (x Data..:? "S3OutputPath")
+      )
+
+instance Prelude.Hashable SharingSettings where
+  hashWithSalt _salt SharingSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` notebookOutputOption
+      `Prelude.hashWithSalt` s3KmsKeyId
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData SharingSettings where
+  rnf SharingSettings' {..} =
+    Prelude.rnf notebookOutputOption
+      `Prelude.seq` Prelude.rnf s3KmsKeyId
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON SharingSettings where
+  toJSON SharingSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NotebookOutputOption" Data..=)
+              Prelude.<$> notebookOutputOption,
+            ("S3KmsKeyId" Data..=) Prelude.<$> s3KmsKeyId,
+            ("S3OutputPath" Data..=) Prelude.<$> s3OutputPath
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/ShuffleConfig.hs b/gen/Amazonka/SageMaker/Types/ShuffleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/ShuffleConfig.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ShuffleConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.ShuffleConfig 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
+
+-- | A configuration for a shuffle option for input data in a channel. If you
+-- use @S3Prefix@ for @S3DataType@, the results of the S3 key prefix
+-- matches are shuffled. If you use @ManifestFile@, the order of the S3
+-- object references in the @ManifestFile@ is shuffled. If you use
+-- @AugmentedManifestFile@, the order of the JSON lines in the
+-- @AugmentedManifestFile@ is shuffled. The shuffling order is determined
+-- using the @Seed@ value.
+--
+-- For Pipe input mode, when @ShuffleConfig@ is specified shuffling is done
+-- at the start of every epoch. With large datasets, this ensures that the
+-- order of the training data is different for each epoch, and it helps
+-- reduce bias and possible overfitting. In a multi-node training job when
+-- @ShuffleConfig@ is combined with @S3DataDistributionType@ of
+-- @ShardedByS3Key@, the data is shuffled across nodes so that the content
+-- sent to a particular node on the first epoch might be sent to a
+-- different node on the second epoch.
+--
+-- /See:/ 'newShuffleConfig' smart constructor.
+data ShuffleConfig = ShuffleConfig'
+  { -- | Determines the shuffling order in @ShuffleConfig@ value.
+    seed :: Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShuffleConfig' 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:
+--
+-- 'seed', 'shuffleConfig_seed' - Determines the shuffling order in @ShuffleConfig@ value.
+newShuffleConfig ::
+  -- | 'seed'
+  Prelude.Integer ->
+  ShuffleConfig
+newShuffleConfig pSeed_ =
+  ShuffleConfig' {seed = pSeed_}
+
+-- | Determines the shuffling order in @ShuffleConfig@ value.
+shuffleConfig_seed :: Lens.Lens' ShuffleConfig Prelude.Integer
+shuffleConfig_seed = Lens.lens (\ShuffleConfig' {seed} -> seed) (\s@ShuffleConfig' {} a -> s {seed = a} :: ShuffleConfig)
+
+instance Data.FromJSON ShuffleConfig where
+  parseJSON =
+    Data.withObject
+      "ShuffleConfig"
+      ( \x ->
+          ShuffleConfig' Prelude.<$> (x Data..: "Seed")
+      )
+
+instance Prelude.Hashable ShuffleConfig where
+  hashWithSalt _salt ShuffleConfig' {..} =
+    _salt `Prelude.hashWithSalt` seed
+
+instance Prelude.NFData ShuffleConfig where
+  rnf ShuffleConfig' {..} = Prelude.rnf seed
+
+instance Data.ToJSON ShuffleConfig where
+  toJSON ShuffleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Seed" Data..= seed)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SortActionsBy.hs b/gen/Amazonka/SageMaker/Types/SortActionsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortActionsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortActionsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortActionsBy
+  ( SortActionsBy
+      ( ..,
+        SortActionsBy_CreationTime,
+        SortActionsBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortActionsBy = SortActionsBy'
+  { fromSortActionsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortActionsBy_CreationTime :: SortActionsBy
+pattern SortActionsBy_CreationTime = SortActionsBy' "CreationTime"
+
+pattern SortActionsBy_Name :: SortActionsBy
+pattern SortActionsBy_Name = SortActionsBy' "Name"
+
+{-# COMPLETE
+  SortActionsBy_CreationTime,
+  SortActionsBy_Name,
+  SortActionsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortArtifactsBy.hs b/gen/Amazonka/SageMaker/Types/SortArtifactsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortArtifactsBy.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortArtifactsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortArtifactsBy
+  ( SortArtifactsBy
+      ( ..,
+        SortArtifactsBy_CreationTime
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortArtifactsBy = SortArtifactsBy'
+  { fromSortArtifactsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortArtifactsBy_CreationTime :: SortArtifactsBy
+pattern SortArtifactsBy_CreationTime = SortArtifactsBy' "CreationTime"
+
+{-# COMPLETE
+  SortArtifactsBy_CreationTime,
+  SortArtifactsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortAssociationsBy.hs b/gen/Amazonka/SageMaker/Types/SortAssociationsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortAssociationsBy.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortAssociationsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortAssociationsBy
+  ( SortAssociationsBy
+      ( ..,
+        SortAssociationsBy_CreationTime,
+        SortAssociationsBy_DestinationArn,
+        SortAssociationsBy_DestinationType,
+        SortAssociationsBy_SourceArn,
+        SortAssociationsBy_SourceType
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortAssociationsBy = SortAssociationsBy'
+  { fromSortAssociationsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortAssociationsBy_CreationTime :: SortAssociationsBy
+pattern SortAssociationsBy_CreationTime = SortAssociationsBy' "CreationTime"
+
+pattern SortAssociationsBy_DestinationArn :: SortAssociationsBy
+pattern SortAssociationsBy_DestinationArn = SortAssociationsBy' "DestinationArn"
+
+pattern SortAssociationsBy_DestinationType :: SortAssociationsBy
+pattern SortAssociationsBy_DestinationType = SortAssociationsBy' "DestinationType"
+
+pattern SortAssociationsBy_SourceArn :: SortAssociationsBy
+pattern SortAssociationsBy_SourceArn = SortAssociationsBy' "SourceArn"
+
+pattern SortAssociationsBy_SourceType :: SortAssociationsBy
+pattern SortAssociationsBy_SourceType = SortAssociationsBy' "SourceType"
+
+{-# COMPLETE
+  SortAssociationsBy_CreationTime,
+  SortAssociationsBy_DestinationArn,
+  SortAssociationsBy_DestinationType,
+  SortAssociationsBy_SourceArn,
+  SortAssociationsBy_SourceType,
+  SortAssociationsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortBy.hs b/gen/Amazonka/SageMaker/Types/SortBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortBy.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortBy
+  ( SortBy
+      ( ..,
+        SortBy_CreationTime,
+        SortBy_Name,
+        SortBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortBy = SortBy' {fromSortBy :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortBy_CreationTime :: SortBy
+pattern SortBy_CreationTime = SortBy' "CreationTime"
+
+pattern SortBy_Name :: SortBy
+pattern SortBy_Name = SortBy' "Name"
+
+pattern SortBy_Status :: SortBy
+pattern SortBy_Status = SortBy' "Status"
+
+{-# COMPLETE
+  SortBy_CreationTime,
+  SortBy_Name,
+  SortBy_Status,
+  SortBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortContextsBy.hs b/gen/Amazonka/SageMaker/Types/SortContextsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortContextsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortContextsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortContextsBy
+  ( SortContextsBy
+      ( ..,
+        SortContextsBy_CreationTime,
+        SortContextsBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortContextsBy = SortContextsBy'
+  { fromSortContextsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortContextsBy_CreationTime :: SortContextsBy
+pattern SortContextsBy_CreationTime = SortContextsBy' "CreationTime"
+
+pattern SortContextsBy_Name :: SortContextsBy
+pattern SortContextsBy_Name = SortContextsBy' "Name"
+
+{-# COMPLETE
+  SortContextsBy_CreationTime,
+  SortContextsBy_Name,
+  SortContextsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortExperimentsBy.hs b/gen/Amazonka/SageMaker/Types/SortExperimentsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortExperimentsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortExperimentsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortExperimentsBy
+  ( SortExperimentsBy
+      ( ..,
+        SortExperimentsBy_CreationTime,
+        SortExperimentsBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortExperimentsBy = SortExperimentsBy'
+  { fromSortExperimentsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortExperimentsBy_CreationTime :: SortExperimentsBy
+pattern SortExperimentsBy_CreationTime = SortExperimentsBy' "CreationTime"
+
+pattern SortExperimentsBy_Name :: SortExperimentsBy
+pattern SortExperimentsBy_Name = SortExperimentsBy' "Name"
+
+{-# COMPLETE
+  SortExperimentsBy_CreationTime,
+  SortExperimentsBy_Name,
+  SortExperimentsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortInferenceExperimentsBy.hs b/gen/Amazonka/SageMaker/Types/SortInferenceExperimentsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortInferenceExperimentsBy.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortInferenceExperimentsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortInferenceExperimentsBy
+  ( SortInferenceExperimentsBy
+      ( ..,
+        SortInferenceExperimentsBy_CreationTime,
+        SortInferenceExperimentsBy_Name,
+        SortInferenceExperimentsBy_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortInferenceExperimentsBy = SortInferenceExperimentsBy'
+  { fromSortInferenceExperimentsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortInferenceExperimentsBy_CreationTime :: SortInferenceExperimentsBy
+pattern SortInferenceExperimentsBy_CreationTime = SortInferenceExperimentsBy' "CreationTime"
+
+pattern SortInferenceExperimentsBy_Name :: SortInferenceExperimentsBy
+pattern SortInferenceExperimentsBy_Name = SortInferenceExperimentsBy' "Name"
+
+pattern SortInferenceExperimentsBy_Status :: SortInferenceExperimentsBy
+pattern SortInferenceExperimentsBy_Status = SortInferenceExperimentsBy' "Status"
+
+{-# COMPLETE
+  SortInferenceExperimentsBy_CreationTime,
+  SortInferenceExperimentsBy_Name,
+  SortInferenceExperimentsBy_Status,
+  SortInferenceExperimentsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortLineageGroupsBy.hs b/gen/Amazonka/SageMaker/Types/SortLineageGroupsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortLineageGroupsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortLineageGroupsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortLineageGroupsBy
+  ( SortLineageGroupsBy
+      ( ..,
+        SortLineageGroupsBy_CreationTime,
+        SortLineageGroupsBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortLineageGroupsBy = SortLineageGroupsBy'
+  { fromSortLineageGroupsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortLineageGroupsBy_CreationTime :: SortLineageGroupsBy
+pattern SortLineageGroupsBy_CreationTime = SortLineageGroupsBy' "CreationTime"
+
+pattern SortLineageGroupsBy_Name :: SortLineageGroupsBy
+pattern SortLineageGroupsBy_Name = SortLineageGroupsBy' "Name"
+
+{-# COMPLETE
+  SortLineageGroupsBy_CreationTime,
+  SortLineageGroupsBy_Name,
+  SortLineageGroupsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortOrder.hs b/gen/Amazonka/SageMaker/Types/SortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortOrder.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortOrder
+  ( SortOrder
+      ( ..,
+        SortOrder_Ascending,
+        SortOrder_Descending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortOrder = SortOrder'
+  { fromSortOrder ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortOrder_Ascending :: SortOrder
+pattern SortOrder_Ascending = SortOrder' "Ascending"
+
+pattern SortOrder_Descending :: SortOrder
+pattern SortOrder_Descending = SortOrder' "Descending"
+
+{-# COMPLETE
+  SortOrder_Ascending,
+  SortOrder_Descending,
+  SortOrder'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortPipelineExecutionsBy.hs b/gen/Amazonka/SageMaker/Types/SortPipelineExecutionsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortPipelineExecutionsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortPipelineExecutionsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortPipelineExecutionsBy
+  ( SortPipelineExecutionsBy
+      ( ..,
+        SortPipelineExecutionsBy_CreationTime,
+        SortPipelineExecutionsBy_PipelineExecutionArn
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortPipelineExecutionsBy = SortPipelineExecutionsBy'
+  { fromSortPipelineExecutionsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortPipelineExecutionsBy_CreationTime :: SortPipelineExecutionsBy
+pattern SortPipelineExecutionsBy_CreationTime = SortPipelineExecutionsBy' "CreationTime"
+
+pattern SortPipelineExecutionsBy_PipelineExecutionArn :: SortPipelineExecutionsBy
+pattern SortPipelineExecutionsBy_PipelineExecutionArn = SortPipelineExecutionsBy' "PipelineExecutionArn"
+
+{-# COMPLETE
+  SortPipelineExecutionsBy_CreationTime,
+  SortPipelineExecutionsBy_PipelineExecutionArn,
+  SortPipelineExecutionsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortPipelinesBy.hs b/gen/Amazonka/SageMaker/Types/SortPipelinesBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortPipelinesBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortPipelinesBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortPipelinesBy
+  ( SortPipelinesBy
+      ( ..,
+        SortPipelinesBy_CreationTime,
+        SortPipelinesBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortPipelinesBy = SortPipelinesBy'
+  { fromSortPipelinesBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortPipelinesBy_CreationTime :: SortPipelinesBy
+pattern SortPipelinesBy_CreationTime = SortPipelinesBy' "CreationTime"
+
+pattern SortPipelinesBy_Name :: SortPipelinesBy
+pattern SortPipelinesBy_Name = SortPipelinesBy' "Name"
+
+{-# COMPLETE
+  SortPipelinesBy_CreationTime,
+  SortPipelinesBy_Name,
+  SortPipelinesBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortTrialComponentsBy.hs b/gen/Amazonka/SageMaker/Types/SortTrialComponentsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortTrialComponentsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortTrialComponentsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortTrialComponentsBy
+  ( SortTrialComponentsBy
+      ( ..,
+        SortTrialComponentsBy_CreationTime,
+        SortTrialComponentsBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortTrialComponentsBy = SortTrialComponentsBy'
+  { fromSortTrialComponentsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortTrialComponentsBy_CreationTime :: SortTrialComponentsBy
+pattern SortTrialComponentsBy_CreationTime = SortTrialComponentsBy' "CreationTime"
+
+pattern SortTrialComponentsBy_Name :: SortTrialComponentsBy
+pattern SortTrialComponentsBy_Name = SortTrialComponentsBy' "Name"
+
+{-# COMPLETE
+  SortTrialComponentsBy_CreationTime,
+  SortTrialComponentsBy_Name,
+  SortTrialComponentsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SortTrialsBy.hs b/gen/Amazonka/SageMaker/Types/SortTrialsBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SortTrialsBy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SortTrialsBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SortTrialsBy
+  ( SortTrialsBy
+      ( ..,
+        SortTrialsBy_CreationTime,
+        SortTrialsBy_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SortTrialsBy = SortTrialsBy'
+  { fromSortTrialsBy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SortTrialsBy_CreationTime :: SortTrialsBy
+pattern SortTrialsBy_CreationTime = SortTrialsBy' "CreationTime"
+
+pattern SortTrialsBy_Name :: SortTrialsBy
+pattern SortTrialsBy_Name = SortTrialsBy' "Name"
+
+{-# COMPLETE
+  SortTrialsBy_CreationTime,
+  SortTrialsBy_Name,
+  SortTrialsBy'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SourceAlgorithm.hs b/gen/Amazonka/SageMaker/Types/SourceAlgorithm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SourceAlgorithm.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SourceAlgorithm
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SourceAlgorithm 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
+
+-- | Specifies an algorithm that was used to create the model package. The
+-- algorithm must be either an algorithm resource in your SageMaker account
+-- or an algorithm in Amazon Web Services Marketplace that you are
+-- subscribed to.
+--
+-- /See:/ 'newSourceAlgorithm' smart constructor.
+data SourceAlgorithm = SourceAlgorithm'
+  { -- | The Amazon S3 path where the model artifacts, which result from model
+    -- training, are stored. This path must point to a single @gzip@ compressed
+    -- tar archive (@.tar.gz@ suffix).
+    --
+    -- The model artifacts must be in an S3 bucket that is in the same region
+    -- as the algorithm.
+    modelDataUrl :: Prelude.Maybe Prelude.Text,
+    -- | The name of an algorithm that was used to create the model package. The
+    -- algorithm must be either an algorithm resource in your SageMaker account
+    -- or an algorithm in Amazon Web Services Marketplace that you are
+    -- subscribed to.
+    algorithmName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceAlgorithm' 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:
+--
+-- 'modelDataUrl', 'sourceAlgorithm_modelDataUrl' - The Amazon S3 path where the model artifacts, which result from model
+-- training, are stored. This path must point to a single @gzip@ compressed
+-- tar archive (@.tar.gz@ suffix).
+--
+-- The model artifacts must be in an S3 bucket that is in the same region
+-- as the algorithm.
+--
+-- 'algorithmName', 'sourceAlgorithm_algorithmName' - The name of an algorithm that was used to create the model package. The
+-- algorithm must be either an algorithm resource in your SageMaker account
+-- or an algorithm in Amazon Web Services Marketplace that you are
+-- subscribed to.
+newSourceAlgorithm ::
+  -- | 'algorithmName'
+  Prelude.Text ->
+  SourceAlgorithm
+newSourceAlgorithm pAlgorithmName_ =
+  SourceAlgorithm'
+    { modelDataUrl = Prelude.Nothing,
+      algorithmName = pAlgorithmName_
+    }
+
+-- | The Amazon S3 path where the model artifacts, which result from model
+-- training, are stored. This path must point to a single @gzip@ compressed
+-- tar archive (@.tar.gz@ suffix).
+--
+-- The model artifacts must be in an S3 bucket that is in the same region
+-- as the algorithm.
+sourceAlgorithm_modelDataUrl :: Lens.Lens' SourceAlgorithm (Prelude.Maybe Prelude.Text)
+sourceAlgorithm_modelDataUrl = Lens.lens (\SourceAlgorithm' {modelDataUrl} -> modelDataUrl) (\s@SourceAlgorithm' {} a -> s {modelDataUrl = a} :: SourceAlgorithm)
+
+-- | The name of an algorithm that was used to create the model package. The
+-- algorithm must be either an algorithm resource in your SageMaker account
+-- or an algorithm in Amazon Web Services Marketplace that you are
+-- subscribed to.
+sourceAlgorithm_algorithmName :: Lens.Lens' SourceAlgorithm Prelude.Text
+sourceAlgorithm_algorithmName = Lens.lens (\SourceAlgorithm' {algorithmName} -> algorithmName) (\s@SourceAlgorithm' {} a -> s {algorithmName = a} :: SourceAlgorithm)
+
+instance Data.FromJSON SourceAlgorithm where
+  parseJSON =
+    Data.withObject
+      "SourceAlgorithm"
+      ( \x ->
+          SourceAlgorithm'
+            Prelude.<$> (x Data..:? "ModelDataUrl")
+            Prelude.<*> (x Data..: "AlgorithmName")
+      )
+
+instance Prelude.Hashable SourceAlgorithm where
+  hashWithSalt _salt SourceAlgorithm' {..} =
+    _salt
+      `Prelude.hashWithSalt` modelDataUrl
+      `Prelude.hashWithSalt` algorithmName
+
+instance Prelude.NFData SourceAlgorithm where
+  rnf SourceAlgorithm' {..} =
+    Prelude.rnf modelDataUrl
+      `Prelude.seq` Prelude.rnf algorithmName
+
+instance Data.ToJSON SourceAlgorithm where
+  toJSON SourceAlgorithm' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ModelDataUrl" Data..=) Prelude.<$> modelDataUrl,
+            Prelude.Just
+              ("AlgorithmName" Data..= algorithmName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SourceAlgorithmSpecification.hs b/gen/Amazonka/SageMaker/Types/SourceAlgorithmSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SourceAlgorithmSpecification.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SourceAlgorithmSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SourceAlgorithmSpecification 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 Amazonka.SageMaker.Types.SourceAlgorithm
+
+-- | A list of algorithms that were used to create a model package.
+--
+-- /See:/ 'newSourceAlgorithmSpecification' smart constructor.
+data SourceAlgorithmSpecification = SourceAlgorithmSpecification'
+  { -- | A list of the algorithms that were used to create a model package.
+    sourceAlgorithms :: Prelude.NonEmpty SourceAlgorithm
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceAlgorithmSpecification' 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:
+--
+-- 'sourceAlgorithms', 'sourceAlgorithmSpecification_sourceAlgorithms' - A list of the algorithms that were used to create a model package.
+newSourceAlgorithmSpecification ::
+  -- | 'sourceAlgorithms'
+  Prelude.NonEmpty SourceAlgorithm ->
+  SourceAlgorithmSpecification
+newSourceAlgorithmSpecification pSourceAlgorithms_ =
+  SourceAlgorithmSpecification'
+    { sourceAlgorithms =
+        Lens.coerced Lens.# pSourceAlgorithms_
+    }
+
+-- | A list of the algorithms that were used to create a model package.
+sourceAlgorithmSpecification_sourceAlgorithms :: Lens.Lens' SourceAlgorithmSpecification (Prelude.NonEmpty SourceAlgorithm)
+sourceAlgorithmSpecification_sourceAlgorithms = Lens.lens (\SourceAlgorithmSpecification' {sourceAlgorithms} -> sourceAlgorithms) (\s@SourceAlgorithmSpecification' {} a -> s {sourceAlgorithms = a} :: SourceAlgorithmSpecification) Prelude.. Lens.coerced
+
+instance Data.FromJSON SourceAlgorithmSpecification where
+  parseJSON =
+    Data.withObject
+      "SourceAlgorithmSpecification"
+      ( \x ->
+          SourceAlgorithmSpecification'
+            Prelude.<$> (x Data..: "SourceAlgorithms")
+      )
+
+instance
+  Prelude.Hashable
+    SourceAlgorithmSpecification
+  where
+  hashWithSalt _salt SourceAlgorithmSpecification' {..} =
+    _salt `Prelude.hashWithSalt` sourceAlgorithms
+
+instance Prelude.NFData SourceAlgorithmSpecification where
+  rnf SourceAlgorithmSpecification' {..} =
+    Prelude.rnf sourceAlgorithms
+
+instance Data.ToJSON SourceAlgorithmSpecification where
+  toJSON SourceAlgorithmSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("SourceAlgorithms" Data..= sourceAlgorithms)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SourceIpConfig.hs b/gen/Amazonka/SageMaker/Types/SourceIpConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SourceIpConfig.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SourceIpConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SourceIpConfig 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
+
+-- | A list of IP address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>).
+-- Used to create an allow list of IP addresses for a private workforce.
+-- Workers will only be able to login to their worker portal from an IP
+-- address within this range. By default, a workforce isn\'t restricted to
+-- specific IP addresses.
+--
+-- /See:/ 'newSourceIpConfig' smart constructor.
+data SourceIpConfig = SourceIpConfig'
+  { -- | A list of one to ten
+    -- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html Classless Inter-Domain Routing>
+    -- (CIDR) values.
+    --
+    -- Maximum: Ten CIDR values
+    --
+    -- The following Length Constraints apply to individual CIDR values in the
+    -- CIDR value list.
+    cidrs :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceIpConfig' 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:
+--
+-- 'cidrs', 'sourceIpConfig_cidrs' - A list of one to ten
+-- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html Classless Inter-Domain Routing>
+-- (CIDR) values.
+--
+-- Maximum: Ten CIDR values
+--
+-- The following Length Constraints apply to individual CIDR values in the
+-- CIDR value list.
+newSourceIpConfig ::
+  SourceIpConfig
+newSourceIpConfig =
+  SourceIpConfig' {cidrs = Prelude.mempty}
+
+-- | A list of one to ten
+-- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html Classless Inter-Domain Routing>
+-- (CIDR) values.
+--
+-- Maximum: Ten CIDR values
+--
+-- The following Length Constraints apply to individual CIDR values in the
+-- CIDR value list.
+sourceIpConfig_cidrs :: Lens.Lens' SourceIpConfig [Prelude.Text]
+sourceIpConfig_cidrs = Lens.lens (\SourceIpConfig' {cidrs} -> cidrs) (\s@SourceIpConfig' {} a -> s {cidrs = a} :: SourceIpConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON SourceIpConfig where
+  parseJSON =
+    Data.withObject
+      "SourceIpConfig"
+      ( \x ->
+          SourceIpConfig'
+            Prelude.<$> (x Data..:? "Cidrs" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable SourceIpConfig where
+  hashWithSalt _salt SourceIpConfig' {..} =
+    _salt `Prelude.hashWithSalt` cidrs
+
+instance Prelude.NFData SourceIpConfig where
+  rnf SourceIpConfig' {..} = Prelude.rnf cidrs
+
+instance Data.ToJSON SourceIpConfig where
+  toJSON SourceIpConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Cidrs" Data..= cidrs)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SpaceDetails.hs b/gen/Amazonka/SageMaker/Types/SpaceDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SpaceDetails.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SpaceDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SpaceDetails 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 Amazonka.SageMaker.Types.SpaceStatus
+
+-- | The space\'s details.
+--
+-- /See:/ 'newSpaceDetails' smart constructor.
+data SpaceDetails = SpaceDetails'
+  { -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the associated Domain.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the space.
+    spaceName :: Prelude.Maybe Prelude.Text,
+    -- | The status.
+    status :: Prelude.Maybe SpaceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SpaceDetails' 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:
+--
+-- 'creationTime', 'spaceDetails_creationTime' - The creation time.
+--
+-- 'domainId', 'spaceDetails_domainId' - The ID of the associated Domain.
+--
+-- 'lastModifiedTime', 'spaceDetails_lastModifiedTime' - The last modified time.
+--
+-- 'spaceName', 'spaceDetails_spaceName' - The name of the space.
+--
+-- 'status', 'spaceDetails_status' - The status.
+newSpaceDetails ::
+  SpaceDetails
+newSpaceDetails =
+  SpaceDetails'
+    { creationTime = Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      spaceName = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The creation time.
+spaceDetails_creationTime :: Lens.Lens' SpaceDetails (Prelude.Maybe Prelude.UTCTime)
+spaceDetails_creationTime = Lens.lens (\SpaceDetails' {creationTime} -> creationTime) (\s@SpaceDetails' {} a -> s {creationTime = a} :: SpaceDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the associated Domain.
+spaceDetails_domainId :: Lens.Lens' SpaceDetails (Prelude.Maybe Prelude.Text)
+spaceDetails_domainId = Lens.lens (\SpaceDetails' {domainId} -> domainId) (\s@SpaceDetails' {} a -> s {domainId = a} :: SpaceDetails)
+
+-- | The last modified time.
+spaceDetails_lastModifiedTime :: Lens.Lens' SpaceDetails (Prelude.Maybe Prelude.UTCTime)
+spaceDetails_lastModifiedTime = Lens.lens (\SpaceDetails' {lastModifiedTime} -> lastModifiedTime) (\s@SpaceDetails' {} a -> s {lastModifiedTime = a} :: SpaceDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the space.
+spaceDetails_spaceName :: Lens.Lens' SpaceDetails (Prelude.Maybe Prelude.Text)
+spaceDetails_spaceName = Lens.lens (\SpaceDetails' {spaceName} -> spaceName) (\s@SpaceDetails' {} a -> s {spaceName = a} :: SpaceDetails)
+
+-- | The status.
+spaceDetails_status :: Lens.Lens' SpaceDetails (Prelude.Maybe SpaceStatus)
+spaceDetails_status = Lens.lens (\SpaceDetails' {status} -> status) (\s@SpaceDetails' {} a -> s {status = a} :: SpaceDetails)
+
+instance Data.FromJSON SpaceDetails where
+  parseJSON =
+    Data.withObject
+      "SpaceDetails"
+      ( \x ->
+          SpaceDetails'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DomainId")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "SpaceName")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable SpaceDetails where
+  hashWithSalt _salt SpaceDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` spaceName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData SpaceDetails where
+  rnf SpaceDetails' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf spaceName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/SpaceSettings.hs b/gen/Amazonka/SageMaker/Types/SpaceSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SpaceSettings.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SpaceSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SpaceSettings 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 Amazonka.SageMaker.Types.JupyterServerAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayAppSettings
+
+-- | A collection of space settings.
+--
+-- /See:/ 'newSpaceSettings' smart constructor.
+data SpaceSettings = SpaceSettings'
+  { jupyterServerAppSettings :: Prelude.Maybe JupyterServerAppSettings,
+    kernelGatewayAppSettings :: Prelude.Maybe KernelGatewayAppSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SpaceSettings' 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:
+--
+-- 'jupyterServerAppSettings', 'spaceSettings_jupyterServerAppSettings' - Undocumented member.
+--
+-- 'kernelGatewayAppSettings', 'spaceSettings_kernelGatewayAppSettings' - Undocumented member.
+newSpaceSettings ::
+  SpaceSettings
+newSpaceSettings =
+  SpaceSettings'
+    { jupyterServerAppSettings =
+        Prelude.Nothing,
+      kernelGatewayAppSettings = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+spaceSettings_jupyterServerAppSettings :: Lens.Lens' SpaceSettings (Prelude.Maybe JupyterServerAppSettings)
+spaceSettings_jupyterServerAppSettings = Lens.lens (\SpaceSettings' {jupyterServerAppSettings} -> jupyterServerAppSettings) (\s@SpaceSettings' {} a -> s {jupyterServerAppSettings = a} :: SpaceSettings)
+
+-- | Undocumented member.
+spaceSettings_kernelGatewayAppSettings :: Lens.Lens' SpaceSettings (Prelude.Maybe KernelGatewayAppSettings)
+spaceSettings_kernelGatewayAppSettings = Lens.lens (\SpaceSettings' {kernelGatewayAppSettings} -> kernelGatewayAppSettings) (\s@SpaceSettings' {} a -> s {kernelGatewayAppSettings = a} :: SpaceSettings)
+
+instance Data.FromJSON SpaceSettings where
+  parseJSON =
+    Data.withObject
+      "SpaceSettings"
+      ( \x ->
+          SpaceSettings'
+            Prelude.<$> (x Data..:? "JupyterServerAppSettings")
+            Prelude.<*> (x Data..:? "KernelGatewayAppSettings")
+      )
+
+instance Prelude.Hashable SpaceSettings where
+  hashWithSalt _salt SpaceSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` jupyterServerAppSettings
+      `Prelude.hashWithSalt` kernelGatewayAppSettings
+
+instance Prelude.NFData SpaceSettings where
+  rnf SpaceSettings' {..} =
+    Prelude.rnf jupyterServerAppSettings
+      `Prelude.seq` Prelude.rnf kernelGatewayAppSettings
+
+instance Data.ToJSON SpaceSettings where
+  toJSON SpaceSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("JupyterServerAppSettings" Data..=)
+              Prelude.<$> jupyterServerAppSettings,
+            ("KernelGatewayAppSettings" Data..=)
+              Prelude.<$> kernelGatewayAppSettings
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/SpaceSortKey.hs b/gen/Amazonka/SageMaker/Types/SpaceSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SpaceSortKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SpaceSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SpaceSortKey
+  ( SpaceSortKey
+      ( ..,
+        SpaceSortKey_CreationTime,
+        SpaceSortKey_LastModifiedTime
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SpaceSortKey = SpaceSortKey'
+  { fromSpaceSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SpaceSortKey_CreationTime :: SpaceSortKey
+pattern SpaceSortKey_CreationTime = SpaceSortKey' "CreationTime"
+
+pattern SpaceSortKey_LastModifiedTime :: SpaceSortKey
+pattern SpaceSortKey_LastModifiedTime = SpaceSortKey' "LastModifiedTime"
+
+{-# COMPLETE
+  SpaceSortKey_CreationTime,
+  SpaceSortKey_LastModifiedTime,
+  SpaceSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SpaceStatus.hs b/gen/Amazonka/SageMaker/Types/SpaceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SpaceStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SpaceStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SpaceStatus
+  ( SpaceStatus
+      ( ..,
+        SpaceStatus_Delete_Failed,
+        SpaceStatus_Deleting,
+        SpaceStatus_Failed,
+        SpaceStatus_InService,
+        SpaceStatus_Pending,
+        SpaceStatus_Update_Failed,
+        SpaceStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SpaceStatus = SpaceStatus'
+  { fromSpaceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SpaceStatus_Delete_Failed :: SpaceStatus
+pattern SpaceStatus_Delete_Failed = SpaceStatus' "Delete_Failed"
+
+pattern SpaceStatus_Deleting :: SpaceStatus
+pattern SpaceStatus_Deleting = SpaceStatus' "Deleting"
+
+pattern SpaceStatus_Failed :: SpaceStatus
+pattern SpaceStatus_Failed = SpaceStatus' "Failed"
+
+pattern SpaceStatus_InService :: SpaceStatus
+pattern SpaceStatus_InService = SpaceStatus' "InService"
+
+pattern SpaceStatus_Pending :: SpaceStatus
+pattern SpaceStatus_Pending = SpaceStatus' "Pending"
+
+pattern SpaceStatus_Update_Failed :: SpaceStatus
+pattern SpaceStatus_Update_Failed = SpaceStatus' "Update_Failed"
+
+pattern SpaceStatus_Updating :: SpaceStatus
+pattern SpaceStatus_Updating = SpaceStatus' "Updating"
+
+{-# COMPLETE
+  SpaceStatus_Delete_Failed,
+  SpaceStatus_Deleting,
+  SpaceStatus_Failed,
+  SpaceStatus_InService,
+  SpaceStatus_Pending,
+  SpaceStatus_Update_Failed,
+  SpaceStatus_Updating,
+  SpaceStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SplitType.hs b/gen/Amazonka/SageMaker/Types/SplitType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SplitType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.SplitType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SplitType
+  ( SplitType
+      ( ..,
+        SplitType_Line,
+        SplitType_None,
+        SplitType_RecordIO,
+        SplitType_TFRecord
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SplitType = SplitType'
+  { fromSplitType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SplitType_Line :: SplitType
+pattern SplitType_Line = SplitType' "Line"
+
+pattern SplitType_None :: SplitType
+pattern SplitType_None = SplitType' "None"
+
+pattern SplitType_RecordIO :: SplitType
+pattern SplitType_RecordIO = SplitType' "RecordIO"
+
+pattern SplitType_TFRecord :: SplitType
+pattern SplitType_TFRecord = SplitType' "TFRecord"
+
+{-# COMPLETE
+  SplitType_Line,
+  SplitType_None,
+  SplitType_RecordIO,
+  SplitType_TFRecord,
+  SplitType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/StageStatus.hs b/gen/Amazonka/SageMaker/Types/StageStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/StageStatus.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.StageStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.StageStatus
+  ( StageStatus
+      ( ..,
+        StageStatus_CREATING,
+        StageStatus_DEPLOYED,
+        StageStatus_FAILED,
+        StageStatus_INPROGRESS,
+        StageStatus_READYTODEPLOY,
+        StageStatus_STARTING,
+        StageStatus_STOPPED,
+        StageStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StageStatus = StageStatus'
+  { fromStageStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StageStatus_CREATING :: StageStatus
+pattern StageStatus_CREATING = StageStatus' "CREATING"
+
+pattern StageStatus_DEPLOYED :: StageStatus
+pattern StageStatus_DEPLOYED = StageStatus' "DEPLOYED"
+
+pattern StageStatus_FAILED :: StageStatus
+pattern StageStatus_FAILED = StageStatus' "FAILED"
+
+pattern StageStatus_INPROGRESS :: StageStatus
+pattern StageStatus_INPROGRESS = StageStatus' "INPROGRESS"
+
+pattern StageStatus_READYTODEPLOY :: StageStatus
+pattern StageStatus_READYTODEPLOY = StageStatus' "READYTODEPLOY"
+
+pattern StageStatus_STARTING :: StageStatus
+pattern StageStatus_STARTING = StageStatus' "STARTING"
+
+pattern StageStatus_STOPPED :: StageStatus
+pattern StageStatus_STOPPED = StageStatus' "STOPPED"
+
+pattern StageStatus_STOPPING :: StageStatus
+pattern StageStatus_STOPPING = StageStatus' "STOPPING"
+
+{-# COMPLETE
+  StageStatus_CREATING,
+  StageStatus_DEPLOYED,
+  StageStatus_FAILED,
+  StageStatus_INPROGRESS,
+  StageStatus_READYTODEPLOY,
+  StageStatus_STARTING,
+  StageStatus_STOPPED,
+  StageStatus_STOPPING,
+  StageStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/StepStatus.hs b/gen/Amazonka/SageMaker/Types/StepStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/StepStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.StepStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.StepStatus
+  ( StepStatus
+      ( ..,
+        StepStatus_Executing,
+        StepStatus_Failed,
+        StepStatus_Starting,
+        StepStatus_Stopped,
+        StepStatus_Stopping,
+        StepStatus_Succeeded
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StepStatus = StepStatus'
+  { fromStepStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StepStatus_Executing :: StepStatus
+pattern StepStatus_Executing = StepStatus' "Executing"
+
+pattern StepStatus_Failed :: StepStatus
+pattern StepStatus_Failed = StepStatus' "Failed"
+
+pattern StepStatus_Starting :: StepStatus
+pattern StepStatus_Starting = StepStatus' "Starting"
+
+pattern StepStatus_Stopped :: StepStatus
+pattern StepStatus_Stopped = StepStatus' "Stopped"
+
+pattern StepStatus_Stopping :: StepStatus
+pattern StepStatus_Stopping = StepStatus' "Stopping"
+
+pattern StepStatus_Succeeded :: StepStatus
+pattern StepStatus_Succeeded = StepStatus' "Succeeded"
+
+{-# COMPLETE
+  StepStatus_Executing,
+  StepStatus_Failed,
+  StepStatus_Starting,
+  StepStatus_Stopped,
+  StepStatus_Stopping,
+  StepStatus_Succeeded,
+  StepStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/StoppingCondition.hs b/gen/Amazonka/SageMaker/Types/StoppingCondition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/StoppingCondition.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.StoppingCondition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.StoppingCondition 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
+
+-- | Specifies a limit to how long a model training job or model compilation
+-- job can run. It also specifies how long a managed spot training job has
+-- to complete. When the job reaches the time limit, SageMaker ends the
+-- training or compilation job. Use this API to cap model training costs.
+--
+-- To stop a training job, SageMaker sends the algorithm the @SIGTERM@
+-- signal, which delays job termination for 120 seconds. Algorithms can use
+-- this 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+--
+-- The training algorithms provided by SageMaker automatically save the
+-- intermediate results of a model training job when possible. This attempt
+-- to save artifacts is only a best effort case as model might not be in a
+-- state from which it can be saved. For example, if training has just
+-- started, the model might not be ready to save. When saved, this
+-- intermediate data is a valid model artifact. You can use it to create a
+-- model with @CreateModel@.
+--
+-- The Neural Topic Model (NTM) currently does not support saving
+-- intermediate model artifacts. When training NTMs, make sure that the
+-- maximum runtime is sufficient for the training job to complete.
+--
+-- /See:/ 'newStoppingCondition' smart constructor.
+data StoppingCondition = StoppingCondition'
+  { -- | The maximum length of time, in seconds, that a training or compilation
+    -- job can run before it is stopped.
+    --
+    -- For compilation jobs, if the job does not complete during this time, a
+    -- @TimeOut@ error is generated. We recommend starting with 900 seconds and
+    -- increasing as necessary based on your model.
+    --
+    -- For all other jobs, if the job does not complete during this time,
+    -- SageMaker ends the job. When @RetryStrategy@ is specified in the job
+    -- request, @MaxRuntimeInSeconds@ specifies the maximum time for all of the
+    -- attempts in total, not each individual attempt. The default value is 1
+    -- day. The maximum value is 28 days.
+    --
+    -- The maximum time that a @TrainingJob@ can run in total, including any
+    -- time spent publishing metrics or archiving and uploading models after it
+    -- has been stopped, is 30 days.
+    maxRuntimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of time, in seconds, that a managed Spot training job
+    -- has to complete. It is the amount of time spent waiting for Spot
+    -- capacity plus the amount of time the job can run. It must be equal to or
+    -- greater than @MaxRuntimeInSeconds@. If the job does not complete during
+    -- this time, SageMaker ends the job.
+    --
+    -- When @RetryStrategy@ is specified in the job request,
+    -- @MaxWaitTimeInSeconds@ specifies the maximum time for all of the
+    -- attempts in total, not each individual attempt.
+    maxWaitTimeInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StoppingCondition' 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:
+--
+-- 'maxRuntimeInSeconds', 'stoppingCondition_maxRuntimeInSeconds' - The maximum length of time, in seconds, that a training or compilation
+-- job can run before it is stopped.
+--
+-- For compilation jobs, if the job does not complete during this time, a
+-- @TimeOut@ error is generated. We recommend starting with 900 seconds and
+-- increasing as necessary based on your model.
+--
+-- For all other jobs, if the job does not complete during this time,
+-- SageMaker ends the job. When @RetryStrategy@ is specified in the job
+-- request, @MaxRuntimeInSeconds@ specifies the maximum time for all of the
+-- attempts in total, not each individual attempt. The default value is 1
+-- day. The maximum value is 28 days.
+--
+-- The maximum time that a @TrainingJob@ can run in total, including any
+-- time spent publishing metrics or archiving and uploading models after it
+-- has been stopped, is 30 days.
+--
+-- 'maxWaitTimeInSeconds', 'stoppingCondition_maxWaitTimeInSeconds' - The maximum length of time, in seconds, that a managed Spot training job
+-- has to complete. It is the amount of time spent waiting for Spot
+-- capacity plus the amount of time the job can run. It must be equal to or
+-- greater than @MaxRuntimeInSeconds@. If the job does not complete during
+-- this time, SageMaker ends the job.
+--
+-- When @RetryStrategy@ is specified in the job request,
+-- @MaxWaitTimeInSeconds@ specifies the maximum time for all of the
+-- attempts in total, not each individual attempt.
+newStoppingCondition ::
+  StoppingCondition
+newStoppingCondition =
+  StoppingCondition'
+    { maxRuntimeInSeconds =
+        Prelude.Nothing,
+      maxWaitTimeInSeconds = Prelude.Nothing
+    }
+
+-- | The maximum length of time, in seconds, that a training or compilation
+-- job can run before it is stopped.
+--
+-- For compilation jobs, if the job does not complete during this time, a
+-- @TimeOut@ error is generated. We recommend starting with 900 seconds and
+-- increasing as necessary based on your model.
+--
+-- For all other jobs, if the job does not complete during this time,
+-- SageMaker ends the job. When @RetryStrategy@ is specified in the job
+-- request, @MaxRuntimeInSeconds@ specifies the maximum time for all of the
+-- attempts in total, not each individual attempt. The default value is 1
+-- day. The maximum value is 28 days.
+--
+-- The maximum time that a @TrainingJob@ can run in total, including any
+-- time spent publishing metrics or archiving and uploading models after it
+-- has been stopped, is 30 days.
+stoppingCondition_maxRuntimeInSeconds :: Lens.Lens' StoppingCondition (Prelude.Maybe Prelude.Natural)
+stoppingCondition_maxRuntimeInSeconds = Lens.lens (\StoppingCondition' {maxRuntimeInSeconds} -> maxRuntimeInSeconds) (\s@StoppingCondition' {} a -> s {maxRuntimeInSeconds = a} :: StoppingCondition)
+
+-- | The maximum length of time, in seconds, that a managed Spot training job
+-- has to complete. It is the amount of time spent waiting for Spot
+-- capacity plus the amount of time the job can run. It must be equal to or
+-- greater than @MaxRuntimeInSeconds@. If the job does not complete during
+-- this time, SageMaker ends the job.
+--
+-- When @RetryStrategy@ is specified in the job request,
+-- @MaxWaitTimeInSeconds@ specifies the maximum time for all of the
+-- attempts in total, not each individual attempt.
+stoppingCondition_maxWaitTimeInSeconds :: Lens.Lens' StoppingCondition (Prelude.Maybe Prelude.Natural)
+stoppingCondition_maxWaitTimeInSeconds = Lens.lens (\StoppingCondition' {maxWaitTimeInSeconds} -> maxWaitTimeInSeconds) (\s@StoppingCondition' {} a -> s {maxWaitTimeInSeconds = a} :: StoppingCondition)
+
+instance Data.FromJSON StoppingCondition where
+  parseJSON =
+    Data.withObject
+      "StoppingCondition"
+      ( \x ->
+          StoppingCondition'
+            Prelude.<$> (x Data..:? "MaxRuntimeInSeconds")
+            Prelude.<*> (x Data..:? "MaxWaitTimeInSeconds")
+      )
+
+instance Prelude.Hashable StoppingCondition where
+  hashWithSalt _salt StoppingCondition' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxRuntimeInSeconds
+      `Prelude.hashWithSalt` maxWaitTimeInSeconds
+
+instance Prelude.NFData StoppingCondition where
+  rnf StoppingCondition' {..} =
+    Prelude.rnf maxRuntimeInSeconds
+      `Prelude.seq` Prelude.rnf maxWaitTimeInSeconds
+
+instance Data.ToJSON StoppingCondition where
+  toJSON StoppingCondition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxRuntimeInSeconds" Data..=)
+              Prelude.<$> maxRuntimeInSeconds,
+            ("MaxWaitTimeInSeconds" Data..=)
+              Prelude.<$> maxWaitTimeInSeconds
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigAppType.hs b/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigAppType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigAppType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.StudioLifecycleConfigAppType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.StudioLifecycleConfigAppType
+  ( StudioLifecycleConfigAppType
+      ( ..,
+        StudioLifecycleConfigAppType_JupyterServer,
+        StudioLifecycleConfigAppType_KernelGateway
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StudioLifecycleConfigAppType = StudioLifecycleConfigAppType'
+  { fromStudioLifecycleConfigAppType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StudioLifecycleConfigAppType_JupyterServer :: StudioLifecycleConfigAppType
+pattern StudioLifecycleConfigAppType_JupyterServer = StudioLifecycleConfigAppType' "JupyterServer"
+
+pattern StudioLifecycleConfigAppType_KernelGateway :: StudioLifecycleConfigAppType
+pattern StudioLifecycleConfigAppType_KernelGateway = StudioLifecycleConfigAppType' "KernelGateway"
+
+{-# COMPLETE
+  StudioLifecycleConfigAppType_JupyterServer,
+  StudioLifecycleConfigAppType_KernelGateway,
+  StudioLifecycleConfigAppType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigDetails.hs b/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigDetails.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.StudioLifecycleConfigDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.StudioLifecycleConfigDetails 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 Amazonka.SageMaker.Types.StudioLifecycleConfigAppType
+
+-- | Details of the Studio Lifecycle Configuration.
+--
+-- /See:/ 'newStudioLifecycleConfigDetails' smart constructor.
+data StudioLifecycleConfigDetails = StudioLifecycleConfigDetails'
+  { -- | The creation time of the Studio Lifecycle Configuration.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | This value is equivalent to CreationTime because Studio Lifecycle
+    -- Configurations are immutable.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The App type to which the Lifecycle Configuration is attached.
+    studioLifecycleConfigAppType :: Prelude.Maybe StudioLifecycleConfigAppType,
+    -- | The Amazon Resource Name (ARN) of the Lifecycle Configuration.
+    studioLifecycleConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Studio Lifecycle Configuration.
+    studioLifecycleConfigName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StudioLifecycleConfigDetails' 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:
+--
+-- 'creationTime', 'studioLifecycleConfigDetails_creationTime' - The creation time of the Studio Lifecycle Configuration.
+--
+-- 'lastModifiedTime', 'studioLifecycleConfigDetails_lastModifiedTime' - This value is equivalent to CreationTime because Studio Lifecycle
+-- Configurations are immutable.
+--
+-- 'studioLifecycleConfigAppType', 'studioLifecycleConfigDetails_studioLifecycleConfigAppType' - The App type to which the Lifecycle Configuration is attached.
+--
+-- 'studioLifecycleConfigArn', 'studioLifecycleConfigDetails_studioLifecycleConfigArn' - The Amazon Resource Name (ARN) of the Lifecycle Configuration.
+--
+-- 'studioLifecycleConfigName', 'studioLifecycleConfigDetails_studioLifecycleConfigName' - The name of the Studio Lifecycle Configuration.
+newStudioLifecycleConfigDetails ::
+  StudioLifecycleConfigDetails
+newStudioLifecycleConfigDetails =
+  StudioLifecycleConfigDetails'
+    { creationTime =
+        Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      studioLifecycleConfigAppType =
+        Prelude.Nothing,
+      studioLifecycleConfigArn = Prelude.Nothing,
+      studioLifecycleConfigName = Prelude.Nothing
+    }
+
+-- | The creation time of the Studio Lifecycle Configuration.
+studioLifecycleConfigDetails_creationTime :: Lens.Lens' StudioLifecycleConfigDetails (Prelude.Maybe Prelude.UTCTime)
+studioLifecycleConfigDetails_creationTime = Lens.lens (\StudioLifecycleConfigDetails' {creationTime} -> creationTime) (\s@StudioLifecycleConfigDetails' {} a -> s {creationTime = a} :: StudioLifecycleConfigDetails) Prelude.. Lens.mapping Data._Time
+
+-- | This value is equivalent to CreationTime because Studio Lifecycle
+-- Configurations are immutable.
+studioLifecycleConfigDetails_lastModifiedTime :: Lens.Lens' StudioLifecycleConfigDetails (Prelude.Maybe Prelude.UTCTime)
+studioLifecycleConfigDetails_lastModifiedTime = Lens.lens (\StudioLifecycleConfigDetails' {lastModifiedTime} -> lastModifiedTime) (\s@StudioLifecycleConfigDetails' {} a -> s {lastModifiedTime = a} :: StudioLifecycleConfigDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The App type to which the Lifecycle Configuration is attached.
+studioLifecycleConfigDetails_studioLifecycleConfigAppType :: Lens.Lens' StudioLifecycleConfigDetails (Prelude.Maybe StudioLifecycleConfigAppType)
+studioLifecycleConfigDetails_studioLifecycleConfigAppType = Lens.lens (\StudioLifecycleConfigDetails' {studioLifecycleConfigAppType} -> studioLifecycleConfigAppType) (\s@StudioLifecycleConfigDetails' {} a -> s {studioLifecycleConfigAppType = a} :: StudioLifecycleConfigDetails)
+
+-- | The Amazon Resource Name (ARN) of the Lifecycle Configuration.
+studioLifecycleConfigDetails_studioLifecycleConfigArn :: Lens.Lens' StudioLifecycleConfigDetails (Prelude.Maybe Prelude.Text)
+studioLifecycleConfigDetails_studioLifecycleConfigArn = Lens.lens (\StudioLifecycleConfigDetails' {studioLifecycleConfigArn} -> studioLifecycleConfigArn) (\s@StudioLifecycleConfigDetails' {} a -> s {studioLifecycleConfigArn = a} :: StudioLifecycleConfigDetails)
+
+-- | The name of the Studio Lifecycle Configuration.
+studioLifecycleConfigDetails_studioLifecycleConfigName :: Lens.Lens' StudioLifecycleConfigDetails (Prelude.Maybe Prelude.Text)
+studioLifecycleConfigDetails_studioLifecycleConfigName = Lens.lens (\StudioLifecycleConfigDetails' {studioLifecycleConfigName} -> studioLifecycleConfigName) (\s@StudioLifecycleConfigDetails' {} a -> s {studioLifecycleConfigName = a} :: StudioLifecycleConfigDetails)
+
+instance Data.FromJSON StudioLifecycleConfigDetails where
+  parseJSON =
+    Data.withObject
+      "StudioLifecycleConfigDetails"
+      ( \x ->
+          StudioLifecycleConfigDetails'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "StudioLifecycleConfigAppType")
+            Prelude.<*> (x Data..:? "StudioLifecycleConfigArn")
+            Prelude.<*> (x Data..:? "StudioLifecycleConfigName")
+      )
+
+instance
+  Prelude.Hashable
+    StudioLifecycleConfigDetails
+  where
+  hashWithSalt _salt StudioLifecycleConfigDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` studioLifecycleConfigAppType
+      `Prelude.hashWithSalt` studioLifecycleConfigArn
+      `Prelude.hashWithSalt` studioLifecycleConfigName
+
+instance Prelude.NFData StudioLifecycleConfigDetails where
+  rnf StudioLifecycleConfigDetails' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigAppType
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigArn
+      `Prelude.seq` Prelude.rnf studioLifecycleConfigName
diff --git a/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigSortKey.hs b/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/StudioLifecycleConfigSortKey.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.StudioLifecycleConfigSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.StudioLifecycleConfigSortKey
+  ( StudioLifecycleConfigSortKey
+      ( ..,
+        StudioLifecycleConfigSortKey_CreationTime,
+        StudioLifecycleConfigSortKey_LastModifiedTime,
+        StudioLifecycleConfigSortKey_Name
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StudioLifecycleConfigSortKey = StudioLifecycleConfigSortKey'
+  { fromStudioLifecycleConfigSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StudioLifecycleConfigSortKey_CreationTime :: StudioLifecycleConfigSortKey
+pattern StudioLifecycleConfigSortKey_CreationTime = StudioLifecycleConfigSortKey' "CreationTime"
+
+pattern StudioLifecycleConfigSortKey_LastModifiedTime :: StudioLifecycleConfigSortKey
+pattern StudioLifecycleConfigSortKey_LastModifiedTime = StudioLifecycleConfigSortKey' "LastModifiedTime"
+
+pattern StudioLifecycleConfigSortKey_Name :: StudioLifecycleConfigSortKey
+pattern StudioLifecycleConfigSortKey_Name = StudioLifecycleConfigSortKey' "Name"
+
+{-# COMPLETE
+  StudioLifecycleConfigSortKey_CreationTime,
+  StudioLifecycleConfigSortKey_LastModifiedTime,
+  StudioLifecycleConfigSortKey_Name,
+  StudioLifecycleConfigSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/SubscribedWorkteam.hs b/gen/Amazonka/SageMaker/Types/SubscribedWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SubscribedWorkteam.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SubscribedWorkteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SubscribedWorkteam 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
+
+-- | Describes a work team of a vendor that does the a labelling job.
+--
+-- /See:/ 'newSubscribedWorkteam' smart constructor.
+data SubscribedWorkteam = SubscribedWorkteam'
+  { -- | Marketplace product listing ID.
+    listingId :: Prelude.Maybe Prelude.Text,
+    -- | The description of the vendor from the Amazon Marketplace.
+    marketplaceDescription :: Prelude.Maybe Prelude.Text,
+    -- | The title of the service provided by the vendor in the Amazon
+    -- Marketplace.
+    marketplaceTitle :: Prelude.Maybe Prelude.Text,
+    -- | The name of the vendor in the Amazon Marketplace.
+    sellerName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the vendor that you have subscribed.
+    workteamArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SubscribedWorkteam' 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:
+--
+-- 'listingId', 'subscribedWorkteam_listingId' - Marketplace product listing ID.
+--
+-- 'marketplaceDescription', 'subscribedWorkteam_marketplaceDescription' - The description of the vendor from the Amazon Marketplace.
+--
+-- 'marketplaceTitle', 'subscribedWorkteam_marketplaceTitle' - The title of the service provided by the vendor in the Amazon
+-- Marketplace.
+--
+-- 'sellerName', 'subscribedWorkteam_sellerName' - The name of the vendor in the Amazon Marketplace.
+--
+-- 'workteamArn', 'subscribedWorkteam_workteamArn' - The Amazon Resource Name (ARN) of the vendor that you have subscribed.
+newSubscribedWorkteam ::
+  -- | 'workteamArn'
+  Prelude.Text ->
+  SubscribedWorkteam
+newSubscribedWorkteam pWorkteamArn_ =
+  SubscribedWorkteam'
+    { listingId = Prelude.Nothing,
+      marketplaceDescription = Prelude.Nothing,
+      marketplaceTitle = Prelude.Nothing,
+      sellerName = Prelude.Nothing,
+      workteamArn = pWorkteamArn_
+    }
+
+-- | Marketplace product listing ID.
+subscribedWorkteam_listingId :: Lens.Lens' SubscribedWorkteam (Prelude.Maybe Prelude.Text)
+subscribedWorkteam_listingId = Lens.lens (\SubscribedWorkteam' {listingId} -> listingId) (\s@SubscribedWorkteam' {} a -> s {listingId = a} :: SubscribedWorkteam)
+
+-- | The description of the vendor from the Amazon Marketplace.
+subscribedWorkteam_marketplaceDescription :: Lens.Lens' SubscribedWorkteam (Prelude.Maybe Prelude.Text)
+subscribedWorkteam_marketplaceDescription = Lens.lens (\SubscribedWorkteam' {marketplaceDescription} -> marketplaceDescription) (\s@SubscribedWorkteam' {} a -> s {marketplaceDescription = a} :: SubscribedWorkteam)
+
+-- | The title of the service provided by the vendor in the Amazon
+-- Marketplace.
+subscribedWorkteam_marketplaceTitle :: Lens.Lens' SubscribedWorkteam (Prelude.Maybe Prelude.Text)
+subscribedWorkteam_marketplaceTitle = Lens.lens (\SubscribedWorkteam' {marketplaceTitle} -> marketplaceTitle) (\s@SubscribedWorkteam' {} a -> s {marketplaceTitle = a} :: SubscribedWorkteam)
+
+-- | The name of the vendor in the Amazon Marketplace.
+subscribedWorkteam_sellerName :: Lens.Lens' SubscribedWorkteam (Prelude.Maybe Prelude.Text)
+subscribedWorkteam_sellerName = Lens.lens (\SubscribedWorkteam' {sellerName} -> sellerName) (\s@SubscribedWorkteam' {} a -> s {sellerName = a} :: SubscribedWorkteam)
+
+-- | The Amazon Resource Name (ARN) of the vendor that you have subscribed.
+subscribedWorkteam_workteamArn :: Lens.Lens' SubscribedWorkteam Prelude.Text
+subscribedWorkteam_workteamArn = Lens.lens (\SubscribedWorkteam' {workteamArn} -> workteamArn) (\s@SubscribedWorkteam' {} a -> s {workteamArn = a} :: SubscribedWorkteam)
+
+instance Data.FromJSON SubscribedWorkteam where
+  parseJSON =
+    Data.withObject
+      "SubscribedWorkteam"
+      ( \x ->
+          SubscribedWorkteam'
+            Prelude.<$> (x Data..:? "ListingId")
+            Prelude.<*> (x Data..:? "MarketplaceDescription")
+            Prelude.<*> (x Data..:? "MarketplaceTitle")
+            Prelude.<*> (x Data..:? "SellerName")
+            Prelude.<*> (x Data..: "WorkteamArn")
+      )
+
+instance Prelude.Hashable SubscribedWorkteam where
+  hashWithSalt _salt SubscribedWorkteam' {..} =
+    _salt
+      `Prelude.hashWithSalt` listingId
+      `Prelude.hashWithSalt` marketplaceDescription
+      `Prelude.hashWithSalt` marketplaceTitle
+      `Prelude.hashWithSalt` sellerName
+      `Prelude.hashWithSalt` workteamArn
+
+instance Prelude.NFData SubscribedWorkteam where
+  rnf SubscribedWorkteam' {..} =
+    Prelude.rnf listingId
+      `Prelude.seq` Prelude.rnf marketplaceDescription
+      `Prelude.seq` Prelude.rnf marketplaceTitle
+      `Prelude.seq` Prelude.rnf sellerName
+      `Prelude.seq` Prelude.rnf workteamArn
diff --git a/gen/Amazonka/SageMaker/Types/SuggestionQuery.hs b/gen/Amazonka/SageMaker/Types/SuggestionQuery.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/SuggestionQuery.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SuggestionQuery
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.SuggestionQuery 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 Amazonka.SageMaker.Types.PropertyNameQuery
+
+-- | Specified in the GetSearchSuggestions request. Limits the property names
+-- that are included in the response.
+--
+-- /See:/ 'newSuggestionQuery' smart constructor.
+data SuggestionQuery = SuggestionQuery'
+  { -- | Defines a property name hint. Only property names that begin with the
+    -- specified hint are included in the response.
+    propertyNameQuery :: Prelude.Maybe PropertyNameQuery
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SuggestionQuery' 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:
+--
+-- 'propertyNameQuery', 'suggestionQuery_propertyNameQuery' - Defines a property name hint. Only property names that begin with the
+-- specified hint are included in the response.
+newSuggestionQuery ::
+  SuggestionQuery
+newSuggestionQuery =
+  SuggestionQuery'
+    { propertyNameQuery =
+        Prelude.Nothing
+    }
+
+-- | Defines a property name hint. Only property names that begin with the
+-- specified hint are included in the response.
+suggestionQuery_propertyNameQuery :: Lens.Lens' SuggestionQuery (Prelude.Maybe PropertyNameQuery)
+suggestionQuery_propertyNameQuery = Lens.lens (\SuggestionQuery' {propertyNameQuery} -> propertyNameQuery) (\s@SuggestionQuery' {} a -> s {propertyNameQuery = a} :: SuggestionQuery)
+
+instance Prelude.Hashable SuggestionQuery where
+  hashWithSalt _salt SuggestionQuery' {..} =
+    _salt `Prelude.hashWithSalt` propertyNameQuery
+
+instance Prelude.NFData SuggestionQuery where
+  rnf SuggestionQuery' {..} =
+    Prelude.rnf propertyNameQuery
+
+instance Data.ToJSON SuggestionQuery where
+  toJSON SuggestionQuery' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PropertyNameQuery" Data..=)
+              Prelude.<$> propertyNameQuery
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TableFormat.hs b/gen/Amazonka/SageMaker/Types/TableFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TableFormat.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TableFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TableFormat
+  ( TableFormat
+      ( ..,
+        TableFormat_Glue,
+        TableFormat_Iceberg
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TableFormat = TableFormat'
+  { fromTableFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TableFormat_Glue :: TableFormat
+pattern TableFormat_Glue = TableFormat' "Glue"
+
+pattern TableFormat_Iceberg :: TableFormat
+pattern TableFormat_Iceberg = TableFormat' "Iceberg"
+
+{-# COMPLETE
+  TableFormat_Glue,
+  TableFormat_Iceberg,
+  TableFormat'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Tag.hs b/gen/Amazonka/SageMaker/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Tag.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Tag 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
+
+-- | A tag object that consists of a key and an optional value, used to
+-- manage metadata for SageMaker Amazon Web Services resources.
+--
+-- You can add tags to notebook instances, training jobs, hyperparameter
+-- tuning jobs, batch transform jobs, models, labeling jobs, work teams,
+-- endpoint configurations, and endpoints. For more information on adding
+-- tags to SageMaker resources, see AddTags.
+--
+-- For more information on adding metadata to your Amazon Web Services
+-- resources with tagging, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>.
+-- For advice on best practices for managing Amazon Web Services resources
+-- with tagging, see
+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging Best Practices: Implement an Effective Amazon Web Services Resource Tagging Strategy>.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The tag key. Tag keys must be unique per resource.
+    key :: Prelude.Text,
+    -- | The tag value.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' 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:
+--
+-- 'key', 'tag_key' - The tag key. Tag keys must be unique per resource.
+--
+-- 'value', 'tag_value' - The tag value.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | The tag key. Tag keys must be unique per resource.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The tag value.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TargetDevice.hs b/gen/Amazonka/SageMaker/Types/TargetDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TargetDevice.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TargetDevice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TargetDevice
+  ( TargetDevice
+      ( ..,
+        TargetDevice_Aisage,
+        TargetDevice_Amba_cv2,
+        TargetDevice_Amba_cv22,
+        TargetDevice_Amba_cv25,
+        TargetDevice_Coreml,
+        TargetDevice_Deeplens,
+        TargetDevice_Imx8mplus,
+        TargetDevice_Imx8qm,
+        TargetDevice_Jacinto_tda4vm,
+        TargetDevice_Jetson_nano,
+        TargetDevice_Jetson_tx1,
+        TargetDevice_Jetson_tx2,
+        TargetDevice_Jetson_xavier,
+        TargetDevice_Lambda,
+        TargetDevice_Ml_c4,
+        TargetDevice_Ml_c5,
+        TargetDevice_Ml_eia2,
+        TargetDevice_Ml_g4dn,
+        TargetDevice_Ml_inf1,
+        TargetDevice_Ml_m4,
+        TargetDevice_Ml_m5,
+        TargetDevice_Ml_p2,
+        TargetDevice_Ml_p3,
+        TargetDevice_Qcs603,
+        TargetDevice_Qcs605,
+        TargetDevice_Rasp3b,
+        TargetDevice_Rk3288,
+        TargetDevice_Rk3399,
+        TargetDevice_Sbe_c,
+        TargetDevice_Sitara_am57x,
+        TargetDevice_X86_win32,
+        TargetDevice_X86_win64
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetDevice = TargetDevice'
+  { fromTargetDevice ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TargetDevice_Aisage :: TargetDevice
+pattern TargetDevice_Aisage = TargetDevice' "aisage"
+
+pattern TargetDevice_Amba_cv2 :: TargetDevice
+pattern TargetDevice_Amba_cv2 = TargetDevice' "amba_cv2"
+
+pattern TargetDevice_Amba_cv22 :: TargetDevice
+pattern TargetDevice_Amba_cv22 = TargetDevice' "amba_cv22"
+
+pattern TargetDevice_Amba_cv25 :: TargetDevice
+pattern TargetDevice_Amba_cv25 = TargetDevice' "amba_cv25"
+
+pattern TargetDevice_Coreml :: TargetDevice
+pattern TargetDevice_Coreml = TargetDevice' "coreml"
+
+pattern TargetDevice_Deeplens :: TargetDevice
+pattern TargetDevice_Deeplens = TargetDevice' "deeplens"
+
+pattern TargetDevice_Imx8mplus :: TargetDevice
+pattern TargetDevice_Imx8mplus = TargetDevice' "imx8mplus"
+
+pattern TargetDevice_Imx8qm :: TargetDevice
+pattern TargetDevice_Imx8qm = TargetDevice' "imx8qm"
+
+pattern TargetDevice_Jacinto_tda4vm :: TargetDevice
+pattern TargetDevice_Jacinto_tda4vm = TargetDevice' "jacinto_tda4vm"
+
+pattern TargetDevice_Jetson_nano :: TargetDevice
+pattern TargetDevice_Jetson_nano = TargetDevice' "jetson_nano"
+
+pattern TargetDevice_Jetson_tx1 :: TargetDevice
+pattern TargetDevice_Jetson_tx1 = TargetDevice' "jetson_tx1"
+
+pattern TargetDevice_Jetson_tx2 :: TargetDevice
+pattern TargetDevice_Jetson_tx2 = TargetDevice' "jetson_tx2"
+
+pattern TargetDevice_Jetson_xavier :: TargetDevice
+pattern TargetDevice_Jetson_xavier = TargetDevice' "jetson_xavier"
+
+pattern TargetDevice_Lambda :: TargetDevice
+pattern TargetDevice_Lambda = TargetDevice' "lambda"
+
+pattern TargetDevice_Ml_c4 :: TargetDevice
+pattern TargetDevice_Ml_c4 = TargetDevice' "ml_c4"
+
+pattern TargetDevice_Ml_c5 :: TargetDevice
+pattern TargetDevice_Ml_c5 = TargetDevice' "ml_c5"
+
+pattern TargetDevice_Ml_eia2 :: TargetDevice
+pattern TargetDevice_Ml_eia2 = TargetDevice' "ml_eia2"
+
+pattern TargetDevice_Ml_g4dn :: TargetDevice
+pattern TargetDevice_Ml_g4dn = TargetDevice' "ml_g4dn"
+
+pattern TargetDevice_Ml_inf1 :: TargetDevice
+pattern TargetDevice_Ml_inf1 = TargetDevice' "ml_inf1"
+
+pattern TargetDevice_Ml_m4 :: TargetDevice
+pattern TargetDevice_Ml_m4 = TargetDevice' "ml_m4"
+
+pattern TargetDevice_Ml_m5 :: TargetDevice
+pattern TargetDevice_Ml_m5 = TargetDevice' "ml_m5"
+
+pattern TargetDevice_Ml_p2 :: TargetDevice
+pattern TargetDevice_Ml_p2 = TargetDevice' "ml_p2"
+
+pattern TargetDevice_Ml_p3 :: TargetDevice
+pattern TargetDevice_Ml_p3 = TargetDevice' "ml_p3"
+
+pattern TargetDevice_Qcs603 :: TargetDevice
+pattern TargetDevice_Qcs603 = TargetDevice' "qcs603"
+
+pattern TargetDevice_Qcs605 :: TargetDevice
+pattern TargetDevice_Qcs605 = TargetDevice' "qcs605"
+
+pattern TargetDevice_Rasp3b :: TargetDevice
+pattern TargetDevice_Rasp3b = TargetDevice' "rasp3b"
+
+pattern TargetDevice_Rk3288 :: TargetDevice
+pattern TargetDevice_Rk3288 = TargetDevice' "rk3288"
+
+pattern TargetDevice_Rk3399 :: TargetDevice
+pattern TargetDevice_Rk3399 = TargetDevice' "rk3399"
+
+pattern TargetDevice_Sbe_c :: TargetDevice
+pattern TargetDevice_Sbe_c = TargetDevice' "sbe_c"
+
+pattern TargetDevice_Sitara_am57x :: TargetDevice
+pattern TargetDevice_Sitara_am57x = TargetDevice' "sitara_am57x"
+
+pattern TargetDevice_X86_win32 :: TargetDevice
+pattern TargetDevice_X86_win32 = TargetDevice' "x86_win32"
+
+pattern TargetDevice_X86_win64 :: TargetDevice
+pattern TargetDevice_X86_win64 = TargetDevice' "x86_win64"
+
+{-# COMPLETE
+  TargetDevice_Aisage,
+  TargetDevice_Amba_cv2,
+  TargetDevice_Amba_cv22,
+  TargetDevice_Amba_cv25,
+  TargetDevice_Coreml,
+  TargetDevice_Deeplens,
+  TargetDevice_Imx8mplus,
+  TargetDevice_Imx8qm,
+  TargetDevice_Jacinto_tda4vm,
+  TargetDevice_Jetson_nano,
+  TargetDevice_Jetson_tx1,
+  TargetDevice_Jetson_tx2,
+  TargetDevice_Jetson_xavier,
+  TargetDevice_Lambda,
+  TargetDevice_Ml_c4,
+  TargetDevice_Ml_c5,
+  TargetDevice_Ml_eia2,
+  TargetDevice_Ml_g4dn,
+  TargetDevice_Ml_inf1,
+  TargetDevice_Ml_m4,
+  TargetDevice_Ml_m5,
+  TargetDevice_Ml_p2,
+  TargetDevice_Ml_p3,
+  TargetDevice_Qcs603,
+  TargetDevice_Qcs605,
+  TargetDevice_Rasp3b,
+  TargetDevice_Rk3288,
+  TargetDevice_Rk3399,
+  TargetDevice_Sbe_c,
+  TargetDevice_Sitara_am57x,
+  TargetDevice_X86_win32,
+  TargetDevice_X86_win64,
+  TargetDevice'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TargetPlatform.hs b/gen/Amazonka/SageMaker/Types/TargetPlatform.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TargetPlatform.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TargetPlatform
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TargetPlatform 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 Amazonka.SageMaker.Types.TargetPlatformAccelerator
+import Amazonka.SageMaker.Types.TargetPlatformArch
+import Amazonka.SageMaker.Types.TargetPlatformOs
+
+-- | Contains information about a target platform that you want your model to
+-- run on, such as OS, architecture, and accelerators. It is an alternative
+-- of @TargetDevice@.
+--
+-- /See:/ 'newTargetPlatform' smart constructor.
+data TargetPlatform = TargetPlatform'
+  { -- | Specifies a target platform accelerator (optional).
+    --
+    -- -   @NVIDIA@: Nvidia graphics processing unit. It also requires
+    --     @gpu-code@, @trt-ver@, @cuda-ver@ compiler options
+    --
+    -- -   @MALI@: ARM Mali graphics processor
+    --
+    -- -   @INTEL_GRAPHICS@: Integrated Intel graphics
+    accelerator :: Prelude.Maybe TargetPlatformAccelerator,
+    -- | Specifies a target platform OS.
+    --
+    -- -   @LINUX@: Linux-based operating systems.
+    --
+    -- -   @ANDROID@: Android operating systems. Android API level can be
+    --     specified using the @ANDROID_PLATFORM@ compiler option. For example,
+    --     @\"CompilerOptions\": {\'ANDROID_PLATFORM\': 28}@
+    os :: TargetPlatformOs,
+    -- | Specifies a target platform architecture.
+    --
+    -- -   @X86_64@: 64-bit version of the x86 instruction set.
+    --
+    -- -   @X86@: 32-bit version of the x86 instruction set.
+    --
+    -- -   @ARM64@: ARMv8 64-bit CPU.
+    --
+    -- -   @ARM_EABIHF@: ARMv7 32-bit, Hard Float.
+    --
+    -- -   @ARM_EABI@: ARMv7 32-bit, Soft Float. Used by Android 32-bit ARM
+    --     platform.
+    arch :: TargetPlatformArch
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TargetPlatform' 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:
+--
+-- 'accelerator', 'targetPlatform_accelerator' - Specifies a target platform accelerator (optional).
+--
+-- -   @NVIDIA@: Nvidia graphics processing unit. It also requires
+--     @gpu-code@, @trt-ver@, @cuda-ver@ compiler options
+--
+-- -   @MALI@: ARM Mali graphics processor
+--
+-- -   @INTEL_GRAPHICS@: Integrated Intel graphics
+--
+-- 'os', 'targetPlatform_os' - Specifies a target platform OS.
+--
+-- -   @LINUX@: Linux-based operating systems.
+--
+-- -   @ANDROID@: Android operating systems. Android API level can be
+--     specified using the @ANDROID_PLATFORM@ compiler option. For example,
+--     @\"CompilerOptions\": {\'ANDROID_PLATFORM\': 28}@
+--
+-- 'arch', 'targetPlatform_arch' - Specifies a target platform architecture.
+--
+-- -   @X86_64@: 64-bit version of the x86 instruction set.
+--
+-- -   @X86@: 32-bit version of the x86 instruction set.
+--
+-- -   @ARM64@: ARMv8 64-bit CPU.
+--
+-- -   @ARM_EABIHF@: ARMv7 32-bit, Hard Float.
+--
+-- -   @ARM_EABI@: ARMv7 32-bit, Soft Float. Used by Android 32-bit ARM
+--     platform.
+newTargetPlatform ::
+  -- | 'os'
+  TargetPlatformOs ->
+  -- | 'arch'
+  TargetPlatformArch ->
+  TargetPlatform
+newTargetPlatform pOs_ pArch_ =
+  TargetPlatform'
+    { accelerator = Prelude.Nothing,
+      os = pOs_,
+      arch = pArch_
+    }
+
+-- | Specifies a target platform accelerator (optional).
+--
+-- -   @NVIDIA@: Nvidia graphics processing unit. It also requires
+--     @gpu-code@, @trt-ver@, @cuda-ver@ compiler options
+--
+-- -   @MALI@: ARM Mali graphics processor
+--
+-- -   @INTEL_GRAPHICS@: Integrated Intel graphics
+targetPlatform_accelerator :: Lens.Lens' TargetPlatform (Prelude.Maybe TargetPlatformAccelerator)
+targetPlatform_accelerator = Lens.lens (\TargetPlatform' {accelerator} -> accelerator) (\s@TargetPlatform' {} a -> s {accelerator = a} :: TargetPlatform)
+
+-- | Specifies a target platform OS.
+--
+-- -   @LINUX@: Linux-based operating systems.
+--
+-- -   @ANDROID@: Android operating systems. Android API level can be
+--     specified using the @ANDROID_PLATFORM@ compiler option. For example,
+--     @\"CompilerOptions\": {\'ANDROID_PLATFORM\': 28}@
+targetPlatform_os :: Lens.Lens' TargetPlatform TargetPlatformOs
+targetPlatform_os = Lens.lens (\TargetPlatform' {os} -> os) (\s@TargetPlatform' {} a -> s {os = a} :: TargetPlatform)
+
+-- | Specifies a target platform architecture.
+--
+-- -   @X86_64@: 64-bit version of the x86 instruction set.
+--
+-- -   @X86@: 32-bit version of the x86 instruction set.
+--
+-- -   @ARM64@: ARMv8 64-bit CPU.
+--
+-- -   @ARM_EABIHF@: ARMv7 32-bit, Hard Float.
+--
+-- -   @ARM_EABI@: ARMv7 32-bit, Soft Float. Used by Android 32-bit ARM
+--     platform.
+targetPlatform_arch :: Lens.Lens' TargetPlatform TargetPlatformArch
+targetPlatform_arch = Lens.lens (\TargetPlatform' {arch} -> arch) (\s@TargetPlatform' {} a -> s {arch = a} :: TargetPlatform)
+
+instance Data.FromJSON TargetPlatform where
+  parseJSON =
+    Data.withObject
+      "TargetPlatform"
+      ( \x ->
+          TargetPlatform'
+            Prelude.<$> (x Data..:? "Accelerator")
+            Prelude.<*> (x Data..: "Os")
+            Prelude.<*> (x Data..: "Arch")
+      )
+
+instance Prelude.Hashable TargetPlatform where
+  hashWithSalt _salt TargetPlatform' {..} =
+    _salt
+      `Prelude.hashWithSalt` accelerator
+      `Prelude.hashWithSalt` os
+      `Prelude.hashWithSalt` arch
+
+instance Prelude.NFData TargetPlatform where
+  rnf TargetPlatform' {..} =
+    Prelude.rnf accelerator
+      `Prelude.seq` Prelude.rnf os
+      `Prelude.seq` Prelude.rnf arch
+
+instance Data.ToJSON TargetPlatform where
+  toJSON TargetPlatform' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Accelerator" Data..=) Prelude.<$> accelerator,
+            Prelude.Just ("Os" Data..= os),
+            Prelude.Just ("Arch" Data..= arch)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TargetPlatformAccelerator.hs b/gen/Amazonka/SageMaker/Types/TargetPlatformAccelerator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TargetPlatformAccelerator.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TargetPlatformAccelerator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TargetPlatformAccelerator
+  ( TargetPlatformAccelerator
+      ( ..,
+        TargetPlatformAccelerator_INTEL_GRAPHICS,
+        TargetPlatformAccelerator_MALI,
+        TargetPlatformAccelerator_NNA,
+        TargetPlatformAccelerator_NVIDIA
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetPlatformAccelerator = TargetPlatformAccelerator'
+  { fromTargetPlatformAccelerator ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TargetPlatformAccelerator_INTEL_GRAPHICS :: TargetPlatformAccelerator
+pattern TargetPlatformAccelerator_INTEL_GRAPHICS = TargetPlatformAccelerator' "INTEL_GRAPHICS"
+
+pattern TargetPlatformAccelerator_MALI :: TargetPlatformAccelerator
+pattern TargetPlatformAccelerator_MALI = TargetPlatformAccelerator' "MALI"
+
+pattern TargetPlatformAccelerator_NNA :: TargetPlatformAccelerator
+pattern TargetPlatformAccelerator_NNA = TargetPlatformAccelerator' "NNA"
+
+pattern TargetPlatformAccelerator_NVIDIA :: TargetPlatformAccelerator
+pattern TargetPlatformAccelerator_NVIDIA = TargetPlatformAccelerator' "NVIDIA"
+
+{-# COMPLETE
+  TargetPlatformAccelerator_INTEL_GRAPHICS,
+  TargetPlatformAccelerator_MALI,
+  TargetPlatformAccelerator_NNA,
+  TargetPlatformAccelerator_NVIDIA,
+  TargetPlatformAccelerator'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TargetPlatformArch.hs b/gen/Amazonka/SageMaker/Types/TargetPlatformArch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TargetPlatformArch.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TargetPlatformArch
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TargetPlatformArch
+  ( TargetPlatformArch
+      ( ..,
+        TargetPlatformArch_ARM64,
+        TargetPlatformArch_ARM_EABI,
+        TargetPlatformArch_ARM_EABIHF,
+        TargetPlatformArch_X86,
+        TargetPlatformArch_X86_64
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetPlatformArch = TargetPlatformArch'
+  { fromTargetPlatformArch ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TargetPlatformArch_ARM64 :: TargetPlatformArch
+pattern TargetPlatformArch_ARM64 = TargetPlatformArch' "ARM64"
+
+pattern TargetPlatformArch_ARM_EABI :: TargetPlatformArch
+pattern TargetPlatformArch_ARM_EABI = TargetPlatformArch' "ARM_EABI"
+
+pattern TargetPlatformArch_ARM_EABIHF :: TargetPlatformArch
+pattern TargetPlatformArch_ARM_EABIHF = TargetPlatformArch' "ARM_EABIHF"
+
+pattern TargetPlatformArch_X86 :: TargetPlatformArch
+pattern TargetPlatformArch_X86 = TargetPlatformArch' "X86"
+
+pattern TargetPlatformArch_X86_64 :: TargetPlatformArch
+pattern TargetPlatformArch_X86_64 = TargetPlatformArch' "X86_64"
+
+{-# COMPLETE
+  TargetPlatformArch_ARM64,
+  TargetPlatformArch_ARM_EABI,
+  TargetPlatformArch_ARM_EABIHF,
+  TargetPlatformArch_X86,
+  TargetPlatformArch_X86_64,
+  TargetPlatformArch'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TargetPlatformOs.hs b/gen/Amazonka/SageMaker/Types/TargetPlatformOs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TargetPlatformOs.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TargetPlatformOs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TargetPlatformOs
+  ( TargetPlatformOs
+      ( ..,
+        TargetPlatformOs_ANDROID,
+        TargetPlatformOs_LINUX
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetPlatformOs = TargetPlatformOs'
+  { fromTargetPlatformOs ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TargetPlatformOs_ANDROID :: TargetPlatformOs
+pattern TargetPlatformOs_ANDROID = TargetPlatformOs' "ANDROID"
+
+pattern TargetPlatformOs_LINUX :: TargetPlatformOs
+pattern TargetPlatformOs_LINUX = TargetPlatformOs' "LINUX"
+
+{-# COMPLETE
+  TargetPlatformOs_ANDROID,
+  TargetPlatformOs_LINUX,
+  TargetPlatformOs'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TensorBoardAppSettings.hs b/gen/Amazonka/SageMaker/Types/TensorBoardAppSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TensorBoardAppSettings.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TensorBoardAppSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TensorBoardAppSettings 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 Amazonka.SageMaker.Types.ResourceSpec
+
+-- | The TensorBoard app settings.
+--
+-- /See:/ 'newTensorBoardAppSettings' smart constructor.
+data TensorBoardAppSettings = TensorBoardAppSettings'
+  { -- | The default instance type and the Amazon Resource Name (ARN) of the
+    -- SageMaker image created on the instance.
+    defaultResourceSpec :: Prelude.Maybe ResourceSpec
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TensorBoardAppSettings' 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:
+--
+-- 'defaultResourceSpec', 'tensorBoardAppSettings_defaultResourceSpec' - The default instance type and the Amazon Resource Name (ARN) of the
+-- SageMaker image created on the instance.
+newTensorBoardAppSettings ::
+  TensorBoardAppSettings
+newTensorBoardAppSettings =
+  TensorBoardAppSettings'
+    { defaultResourceSpec =
+        Prelude.Nothing
+    }
+
+-- | The default instance type and the Amazon Resource Name (ARN) of the
+-- SageMaker image created on the instance.
+tensorBoardAppSettings_defaultResourceSpec :: Lens.Lens' TensorBoardAppSettings (Prelude.Maybe ResourceSpec)
+tensorBoardAppSettings_defaultResourceSpec = Lens.lens (\TensorBoardAppSettings' {defaultResourceSpec} -> defaultResourceSpec) (\s@TensorBoardAppSettings' {} a -> s {defaultResourceSpec = a} :: TensorBoardAppSettings)
+
+instance Data.FromJSON TensorBoardAppSettings where
+  parseJSON =
+    Data.withObject
+      "TensorBoardAppSettings"
+      ( \x ->
+          TensorBoardAppSettings'
+            Prelude.<$> (x Data..:? "DefaultResourceSpec")
+      )
+
+instance Prelude.Hashable TensorBoardAppSettings where
+  hashWithSalt _salt TensorBoardAppSettings' {..} =
+    _salt `Prelude.hashWithSalt` defaultResourceSpec
+
+instance Prelude.NFData TensorBoardAppSettings where
+  rnf TensorBoardAppSettings' {..} =
+    Prelude.rnf defaultResourceSpec
+
+instance Data.ToJSON TensorBoardAppSettings where
+  toJSON TensorBoardAppSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DefaultResourceSpec" Data..=)
+              Prelude.<$> defaultResourceSpec
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TensorBoardOutputConfig.hs b/gen/Amazonka/SageMaker/Types/TensorBoardOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TensorBoardOutputConfig.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TensorBoardOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TensorBoardOutputConfig 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
+
+-- | Configuration of storage locations for the Amazon SageMaker Debugger
+-- TensorBoard output data.
+--
+-- /See:/ 'newTensorBoardOutputConfig' smart constructor.
+data TensorBoardOutputConfig = TensorBoardOutputConfig'
+  { -- | Path to local storage location for tensorBoard output. Defaults to
+    -- @\/opt\/ml\/output\/tensorboard@.
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Path to Amazon S3 storage location for TensorBoard output.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TensorBoardOutputConfig' 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:
+--
+-- 'localPath', 'tensorBoardOutputConfig_localPath' - Path to local storage location for tensorBoard output. Defaults to
+-- @\/opt\/ml\/output\/tensorboard@.
+--
+-- 's3OutputPath', 'tensorBoardOutputConfig_s3OutputPath' - Path to Amazon S3 storage location for TensorBoard output.
+newTensorBoardOutputConfig ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  TensorBoardOutputConfig
+newTensorBoardOutputConfig pS3OutputPath_ =
+  TensorBoardOutputConfig'
+    { localPath =
+        Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | Path to local storage location for tensorBoard output. Defaults to
+-- @\/opt\/ml\/output\/tensorboard@.
+tensorBoardOutputConfig_localPath :: Lens.Lens' TensorBoardOutputConfig (Prelude.Maybe Prelude.Text)
+tensorBoardOutputConfig_localPath = Lens.lens (\TensorBoardOutputConfig' {localPath} -> localPath) (\s@TensorBoardOutputConfig' {} a -> s {localPath = a} :: TensorBoardOutputConfig)
+
+-- | Path to Amazon S3 storage location for TensorBoard output.
+tensorBoardOutputConfig_s3OutputPath :: Lens.Lens' TensorBoardOutputConfig Prelude.Text
+tensorBoardOutputConfig_s3OutputPath = Lens.lens (\TensorBoardOutputConfig' {s3OutputPath} -> s3OutputPath) (\s@TensorBoardOutputConfig' {} a -> s {s3OutputPath = a} :: TensorBoardOutputConfig)
+
+instance Data.FromJSON TensorBoardOutputConfig where
+  parseJSON =
+    Data.withObject
+      "TensorBoardOutputConfig"
+      ( \x ->
+          TensorBoardOutputConfig'
+            Prelude.<$> (x Data..:? "LocalPath")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable TensorBoardOutputConfig where
+  hashWithSalt _salt TensorBoardOutputConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData TensorBoardOutputConfig where
+  rnf TensorBoardOutputConfig' {..} =
+    Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON TensorBoardOutputConfig where
+  toJSON TensorBoardOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LocalPath" Data..=) Prelude.<$> localPath,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TimeSeriesForecastingSettings.hs b/gen/Amazonka/SageMaker/Types/TimeSeriesForecastingSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TimeSeriesForecastingSettings.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TimeSeriesForecastingSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TimeSeriesForecastingSettings 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 Amazonka.SageMaker.Types.FeatureStatus
+
+-- | Time series forecast settings for the SageMaker Canvas app.
+--
+-- /See:/ 'newTimeSeriesForecastingSettings' smart constructor.
+data TimeSeriesForecastingSettings = TimeSeriesForecastingSettings'
+  { -- | The IAM role that Canvas passes to Amazon Forecast for time series
+    -- forecasting. By default, Canvas uses the execution role specified in the
+    -- @UserProfile@ that launches the Canvas app. If an execution role is not
+    -- specified in the @UserProfile@, Canvas uses the execution role specified
+    -- in the Domain that owns the @UserProfile@. To allow time series
+    -- forecasting, this IAM role should have the
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-canvas.html#security-iam-awsmanpol-AmazonSageMakerCanvasForecastAccess AmazonSageMakerCanvasForecastAccess>
+    -- policy attached and @forecast.amazonaws.com@ added in the trust
+    -- relationship as a service principal.
+    amazonForecastRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | Describes whether time series forecasting is enabled or disabled in the
+    -- Canvas app.
+    status :: Prelude.Maybe FeatureStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeSeriesForecastingSettings' 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:
+--
+-- 'amazonForecastRoleArn', 'timeSeriesForecastingSettings_amazonForecastRoleArn' - The IAM role that Canvas passes to Amazon Forecast for time series
+-- forecasting. By default, Canvas uses the execution role specified in the
+-- @UserProfile@ that launches the Canvas app. If an execution role is not
+-- specified in the @UserProfile@, Canvas uses the execution role specified
+-- in the Domain that owns the @UserProfile@. To allow time series
+-- forecasting, this IAM role should have the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-canvas.html#security-iam-awsmanpol-AmazonSageMakerCanvasForecastAccess AmazonSageMakerCanvasForecastAccess>
+-- policy attached and @forecast.amazonaws.com@ added in the trust
+-- relationship as a service principal.
+--
+-- 'status', 'timeSeriesForecastingSettings_status' - Describes whether time series forecasting is enabled or disabled in the
+-- Canvas app.
+newTimeSeriesForecastingSettings ::
+  TimeSeriesForecastingSettings
+newTimeSeriesForecastingSettings =
+  TimeSeriesForecastingSettings'
+    { amazonForecastRoleArn =
+        Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The IAM role that Canvas passes to Amazon Forecast for time series
+-- forecasting. By default, Canvas uses the execution role specified in the
+-- @UserProfile@ that launches the Canvas app. If an execution role is not
+-- specified in the @UserProfile@, Canvas uses the execution role specified
+-- in the Domain that owns the @UserProfile@. To allow time series
+-- forecasting, this IAM role should have the
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-canvas.html#security-iam-awsmanpol-AmazonSageMakerCanvasForecastAccess AmazonSageMakerCanvasForecastAccess>
+-- policy attached and @forecast.amazonaws.com@ added in the trust
+-- relationship as a service principal.
+timeSeriesForecastingSettings_amazonForecastRoleArn :: Lens.Lens' TimeSeriesForecastingSettings (Prelude.Maybe Prelude.Text)
+timeSeriesForecastingSettings_amazonForecastRoleArn = Lens.lens (\TimeSeriesForecastingSettings' {amazonForecastRoleArn} -> amazonForecastRoleArn) (\s@TimeSeriesForecastingSettings' {} a -> s {amazonForecastRoleArn = a} :: TimeSeriesForecastingSettings)
+
+-- | Describes whether time series forecasting is enabled or disabled in the
+-- Canvas app.
+timeSeriesForecastingSettings_status :: Lens.Lens' TimeSeriesForecastingSettings (Prelude.Maybe FeatureStatus)
+timeSeriesForecastingSettings_status = Lens.lens (\TimeSeriesForecastingSettings' {status} -> status) (\s@TimeSeriesForecastingSettings' {} a -> s {status = a} :: TimeSeriesForecastingSettings)
+
+instance Data.FromJSON TimeSeriesForecastingSettings where
+  parseJSON =
+    Data.withObject
+      "TimeSeriesForecastingSettings"
+      ( \x ->
+          TimeSeriesForecastingSettings'
+            Prelude.<$> (x Data..:? "AmazonForecastRoleArn")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance
+  Prelude.Hashable
+    TimeSeriesForecastingSettings
+  where
+  hashWithSalt _salt TimeSeriesForecastingSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` amazonForecastRoleArn
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData TimeSeriesForecastingSettings where
+  rnf TimeSeriesForecastingSettings' {..} =
+    Prelude.rnf amazonForecastRoleArn
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToJSON TimeSeriesForecastingSettings where
+  toJSON TimeSeriesForecastingSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AmazonForecastRoleArn" Data..=)
+              Prelude.<$> amazonForecastRoleArn,
+            ("Status" Data..=) Prelude.<$> status
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrafficPattern.hs b/gen/Amazonka/SageMaker/Types/TrafficPattern.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrafficPattern.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrafficPattern
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrafficPattern 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 Amazonka.SageMaker.Types.Phase
+import Amazonka.SageMaker.Types.TrafficType
+
+-- | Defines the traffic pattern of the load test.
+--
+-- /See:/ 'newTrafficPattern' smart constructor.
+data TrafficPattern = TrafficPattern'
+  { -- | Defines the phases traffic specification.
+    phases :: Prelude.Maybe (Prelude.NonEmpty Phase),
+    -- | Defines the traffic patterns.
+    trafficType :: Prelude.Maybe TrafficType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrafficPattern' 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:
+--
+-- 'phases', 'trafficPattern_phases' - Defines the phases traffic specification.
+--
+-- 'trafficType', 'trafficPattern_trafficType' - Defines the traffic patterns.
+newTrafficPattern ::
+  TrafficPattern
+newTrafficPattern =
+  TrafficPattern'
+    { phases = Prelude.Nothing,
+      trafficType = Prelude.Nothing
+    }
+
+-- | Defines the phases traffic specification.
+trafficPattern_phases :: Lens.Lens' TrafficPattern (Prelude.Maybe (Prelude.NonEmpty Phase))
+trafficPattern_phases = Lens.lens (\TrafficPattern' {phases} -> phases) (\s@TrafficPattern' {} a -> s {phases = a} :: TrafficPattern) Prelude.. Lens.mapping Lens.coerced
+
+-- | Defines the traffic patterns.
+trafficPattern_trafficType :: Lens.Lens' TrafficPattern (Prelude.Maybe TrafficType)
+trafficPattern_trafficType = Lens.lens (\TrafficPattern' {trafficType} -> trafficType) (\s@TrafficPattern' {} a -> s {trafficType = a} :: TrafficPattern)
+
+instance Data.FromJSON TrafficPattern where
+  parseJSON =
+    Data.withObject
+      "TrafficPattern"
+      ( \x ->
+          TrafficPattern'
+            Prelude.<$> (x Data..:? "Phases")
+            Prelude.<*> (x Data..:? "TrafficType")
+      )
+
+instance Prelude.Hashable TrafficPattern where
+  hashWithSalt _salt TrafficPattern' {..} =
+    _salt
+      `Prelude.hashWithSalt` phases
+      `Prelude.hashWithSalt` trafficType
+
+instance Prelude.NFData TrafficPattern where
+  rnf TrafficPattern' {..} =
+    Prelude.rnf phases
+      `Prelude.seq` Prelude.rnf trafficType
+
+instance Data.ToJSON TrafficPattern where
+  toJSON TrafficPattern' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Phases" Data..=) Prelude.<$> phases,
+            ("TrafficType" Data..=) Prelude.<$> trafficType
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrafficRoutingConfig.hs b/gen/Amazonka/SageMaker/Types/TrafficRoutingConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrafficRoutingConfig.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrafficRoutingConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrafficRoutingConfig 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 Amazonka.SageMaker.Types.CapacitySize
+import Amazonka.SageMaker.Types.TrafficRoutingConfigType
+
+-- | Defines the traffic routing strategy during an endpoint deployment to
+-- shift traffic from the old fleet to the new fleet.
+--
+-- /See:/ 'newTrafficRoutingConfig' smart constructor.
+data TrafficRoutingConfig = TrafficRoutingConfig'
+  { -- | Batch size for the first step to turn on traffic on the new endpoint
+    -- fleet. @Value@ must be less than or equal to 50% of the variant\'s total
+    -- instance count.
+    canarySize :: Prelude.Maybe CapacitySize,
+    -- | Batch size for each step to turn on traffic on the new endpoint fleet.
+    -- @Value@ must be 10-50% of the variant\'s total instance count.
+    linearStepSize :: Prelude.Maybe CapacitySize,
+    -- | Traffic routing strategy type.
+    --
+    -- -   @ALL_AT_ONCE@: Endpoint traffic shifts to the new fleet in a single
+    --     step.
+    --
+    -- -   @CANARY@: Endpoint traffic shifts to the new fleet in two steps. The
+    --     first step is the canary, which is a small portion of the traffic.
+    --     The second step is the remainder of the traffic.
+    --
+    -- -   @LINEAR@: Endpoint traffic shifts to the new fleet in n steps of a
+    --     configurable size.
+    type' :: TrafficRoutingConfigType,
+    -- | The waiting time (in seconds) between incremental steps to turn on
+    -- traffic on the new endpoint fleet.
+    waitIntervalInSeconds :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrafficRoutingConfig' 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:
+--
+-- 'canarySize', 'trafficRoutingConfig_canarySize' - Batch size for the first step to turn on traffic on the new endpoint
+-- fleet. @Value@ must be less than or equal to 50% of the variant\'s total
+-- instance count.
+--
+-- 'linearStepSize', 'trafficRoutingConfig_linearStepSize' - Batch size for each step to turn on traffic on the new endpoint fleet.
+-- @Value@ must be 10-50% of the variant\'s total instance count.
+--
+-- 'type'', 'trafficRoutingConfig_type' - Traffic routing strategy type.
+--
+-- -   @ALL_AT_ONCE@: Endpoint traffic shifts to the new fleet in a single
+--     step.
+--
+-- -   @CANARY@: Endpoint traffic shifts to the new fleet in two steps. The
+--     first step is the canary, which is a small portion of the traffic.
+--     The second step is the remainder of the traffic.
+--
+-- -   @LINEAR@: Endpoint traffic shifts to the new fleet in n steps of a
+--     configurable size.
+--
+-- 'waitIntervalInSeconds', 'trafficRoutingConfig_waitIntervalInSeconds' - The waiting time (in seconds) between incremental steps to turn on
+-- traffic on the new endpoint fleet.
+newTrafficRoutingConfig ::
+  -- | 'type''
+  TrafficRoutingConfigType ->
+  -- | 'waitIntervalInSeconds'
+  Prelude.Natural ->
+  TrafficRoutingConfig
+newTrafficRoutingConfig
+  pType_
+  pWaitIntervalInSeconds_ =
+    TrafficRoutingConfig'
+      { canarySize = Prelude.Nothing,
+        linearStepSize = Prelude.Nothing,
+        type' = pType_,
+        waitIntervalInSeconds = pWaitIntervalInSeconds_
+      }
+
+-- | Batch size for the first step to turn on traffic on the new endpoint
+-- fleet. @Value@ must be less than or equal to 50% of the variant\'s total
+-- instance count.
+trafficRoutingConfig_canarySize :: Lens.Lens' TrafficRoutingConfig (Prelude.Maybe CapacitySize)
+trafficRoutingConfig_canarySize = Lens.lens (\TrafficRoutingConfig' {canarySize} -> canarySize) (\s@TrafficRoutingConfig' {} a -> s {canarySize = a} :: TrafficRoutingConfig)
+
+-- | Batch size for each step to turn on traffic on the new endpoint fleet.
+-- @Value@ must be 10-50% of the variant\'s total instance count.
+trafficRoutingConfig_linearStepSize :: Lens.Lens' TrafficRoutingConfig (Prelude.Maybe CapacitySize)
+trafficRoutingConfig_linearStepSize = Lens.lens (\TrafficRoutingConfig' {linearStepSize} -> linearStepSize) (\s@TrafficRoutingConfig' {} a -> s {linearStepSize = a} :: TrafficRoutingConfig)
+
+-- | Traffic routing strategy type.
+--
+-- -   @ALL_AT_ONCE@: Endpoint traffic shifts to the new fleet in a single
+--     step.
+--
+-- -   @CANARY@: Endpoint traffic shifts to the new fleet in two steps. The
+--     first step is the canary, which is a small portion of the traffic.
+--     The second step is the remainder of the traffic.
+--
+-- -   @LINEAR@: Endpoint traffic shifts to the new fleet in n steps of a
+--     configurable size.
+trafficRoutingConfig_type :: Lens.Lens' TrafficRoutingConfig TrafficRoutingConfigType
+trafficRoutingConfig_type = Lens.lens (\TrafficRoutingConfig' {type'} -> type') (\s@TrafficRoutingConfig' {} a -> s {type' = a} :: TrafficRoutingConfig)
+
+-- | The waiting time (in seconds) between incremental steps to turn on
+-- traffic on the new endpoint fleet.
+trafficRoutingConfig_waitIntervalInSeconds :: Lens.Lens' TrafficRoutingConfig Prelude.Natural
+trafficRoutingConfig_waitIntervalInSeconds = Lens.lens (\TrafficRoutingConfig' {waitIntervalInSeconds} -> waitIntervalInSeconds) (\s@TrafficRoutingConfig' {} a -> s {waitIntervalInSeconds = a} :: TrafficRoutingConfig)
+
+instance Data.FromJSON TrafficRoutingConfig where
+  parseJSON =
+    Data.withObject
+      "TrafficRoutingConfig"
+      ( \x ->
+          TrafficRoutingConfig'
+            Prelude.<$> (x Data..:? "CanarySize")
+            Prelude.<*> (x Data..:? "LinearStepSize")
+            Prelude.<*> (x Data..: "Type")
+            Prelude.<*> (x Data..: "WaitIntervalInSeconds")
+      )
+
+instance Prelude.Hashable TrafficRoutingConfig where
+  hashWithSalt _salt TrafficRoutingConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` canarySize
+      `Prelude.hashWithSalt` linearStepSize
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` waitIntervalInSeconds
+
+instance Prelude.NFData TrafficRoutingConfig where
+  rnf TrafficRoutingConfig' {..} =
+    Prelude.rnf canarySize
+      `Prelude.seq` Prelude.rnf linearStepSize
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf waitIntervalInSeconds
+
+instance Data.ToJSON TrafficRoutingConfig where
+  toJSON TrafficRoutingConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CanarySize" Data..=) Prelude.<$> canarySize,
+            ("LinearStepSize" Data..=)
+              Prelude.<$> linearStepSize,
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just
+              ( "WaitIntervalInSeconds"
+                  Data..= waitIntervalInSeconds
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrafficRoutingConfigType.hs b/gen/Amazonka/SageMaker/Types/TrafficRoutingConfigType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrafficRoutingConfigType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrafficRoutingConfigType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrafficRoutingConfigType
+  ( TrafficRoutingConfigType
+      ( ..,
+        TrafficRoutingConfigType_ALL_AT_ONCE,
+        TrafficRoutingConfigType_CANARY,
+        TrafficRoutingConfigType_LINEAR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrafficRoutingConfigType = TrafficRoutingConfigType'
+  { fromTrafficRoutingConfigType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrafficRoutingConfigType_ALL_AT_ONCE :: TrafficRoutingConfigType
+pattern TrafficRoutingConfigType_ALL_AT_ONCE = TrafficRoutingConfigType' "ALL_AT_ONCE"
+
+pattern TrafficRoutingConfigType_CANARY :: TrafficRoutingConfigType
+pattern TrafficRoutingConfigType_CANARY = TrafficRoutingConfigType' "CANARY"
+
+pattern TrafficRoutingConfigType_LINEAR :: TrafficRoutingConfigType
+pattern TrafficRoutingConfigType_LINEAR = TrafficRoutingConfigType' "LINEAR"
+
+{-# COMPLETE
+  TrafficRoutingConfigType_ALL_AT_ONCE,
+  TrafficRoutingConfigType_CANARY,
+  TrafficRoutingConfigType_LINEAR,
+  TrafficRoutingConfigType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrafficType.hs b/gen/Amazonka/SageMaker/Types/TrafficType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrafficType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrafficType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrafficType
+  ( TrafficType
+      ( ..,
+        TrafficType_PHASES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrafficType = TrafficType'
+  { fromTrafficType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrafficType_PHASES :: TrafficType
+pattern TrafficType_PHASES = TrafficType' "PHASES"
+
+{-# COMPLETE
+  TrafficType_PHASES,
+  TrafficType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrainingInputMode.hs b/gen/Amazonka/SageMaker/Types/TrainingInputMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingInputMode.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrainingInputMode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingInputMode
+  ( TrainingInputMode
+      ( ..,
+        TrainingInputMode_FastFile,
+        TrainingInputMode_File,
+        TrainingInputMode_Pipe
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The training input mode that the algorithm supports. For more
+-- information about input modes, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms>.
+--
+-- __Pipe mode__
+--
+-- If an algorithm supports @Pipe@ mode, Amazon SageMaker streams data
+-- directly from Amazon S3 to the container.
+--
+-- __File mode__
+--
+-- If an algorithm supports @File@ mode, SageMaker downloads the training
+-- data from S3 to the provisioned ML storage volume, and mounts the
+-- directory to the Docker volume for the training container.
+--
+-- You must provision the ML storage volume with sufficient capacity to
+-- accommodate the data downloaded from S3. In addition to the training
+-- data, the ML storage volume also stores the output model. The algorithm
+-- container uses the ML storage volume to also store intermediate
+-- information, if any.
+--
+-- For distributed algorithms, training data is distributed uniformly. Your
+-- training duration is predictable if the input data objects sizes are
+-- approximately the same. SageMaker does not split the files any further
+-- for model training. If the object sizes are skewed, training won\'t be
+-- optimal as the data distribution is also skewed when one host in a
+-- training cluster is overloaded, thus becoming a bottleneck in training.
+--
+-- __FastFile mode__
+--
+-- If an algorithm supports @FastFile@ mode, SageMaker streams data
+-- directly from S3 to the container with no code changes, and provides
+-- file system access to the data. Users can author their training script
+-- to interact with these files as if they were stored on disk.
+--
+-- @FastFile@ mode works best when the data is read sequentially. Augmented
+-- manifest files aren\'t supported. The startup time is lower when there
+-- are fewer files in the S3 bucket provided.
+newtype TrainingInputMode = TrainingInputMode'
+  { fromTrainingInputMode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrainingInputMode_FastFile :: TrainingInputMode
+pattern TrainingInputMode_FastFile = TrainingInputMode' "FastFile"
+
+pattern TrainingInputMode_File :: TrainingInputMode
+pattern TrainingInputMode_File = TrainingInputMode' "File"
+
+pattern TrainingInputMode_Pipe :: TrainingInputMode
+pattern TrainingInputMode_Pipe = TrainingInputMode' "Pipe"
+
+{-# COMPLETE
+  TrainingInputMode_FastFile,
+  TrainingInputMode_File,
+  TrainingInputMode_Pipe,
+  TrainingInputMode'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrainingInstanceType.hs b/gen/Amazonka/SageMaker/Types/TrainingInstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingInstanceType.hs
@@ -0,0 +1,306 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrainingInstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingInstanceType
+  ( TrainingInstanceType
+      ( ..,
+        TrainingInstanceType_Ml_c4_2xlarge,
+        TrainingInstanceType_Ml_c4_4xlarge,
+        TrainingInstanceType_Ml_c4_8xlarge,
+        TrainingInstanceType_Ml_c4_xlarge,
+        TrainingInstanceType_Ml_c5_18xlarge,
+        TrainingInstanceType_Ml_c5_2xlarge,
+        TrainingInstanceType_Ml_c5_4xlarge,
+        TrainingInstanceType_Ml_c5_9xlarge,
+        TrainingInstanceType_Ml_c5_xlarge,
+        TrainingInstanceType_Ml_c5n_18xlarge,
+        TrainingInstanceType_Ml_c5n_2xlarge,
+        TrainingInstanceType_Ml_c5n_4xlarge,
+        TrainingInstanceType_Ml_c5n_9xlarge,
+        TrainingInstanceType_Ml_c5n_xlarge,
+        TrainingInstanceType_Ml_g4dn_12xlarge,
+        TrainingInstanceType_Ml_g4dn_16xlarge,
+        TrainingInstanceType_Ml_g4dn_2xlarge,
+        TrainingInstanceType_Ml_g4dn_4xlarge,
+        TrainingInstanceType_Ml_g4dn_8xlarge,
+        TrainingInstanceType_Ml_g4dn_xlarge,
+        TrainingInstanceType_Ml_g5_12xlarge,
+        TrainingInstanceType_Ml_g5_16xlarge,
+        TrainingInstanceType_Ml_g5_24xlarge,
+        TrainingInstanceType_Ml_g5_2xlarge,
+        TrainingInstanceType_Ml_g5_48xlarge,
+        TrainingInstanceType_Ml_g5_4xlarge,
+        TrainingInstanceType_Ml_g5_8xlarge,
+        TrainingInstanceType_Ml_g5_xlarge,
+        TrainingInstanceType_Ml_m4_10xlarge,
+        TrainingInstanceType_Ml_m4_16xlarge,
+        TrainingInstanceType_Ml_m4_2xlarge,
+        TrainingInstanceType_Ml_m4_4xlarge,
+        TrainingInstanceType_Ml_m4_xlarge,
+        TrainingInstanceType_Ml_m5_12xlarge,
+        TrainingInstanceType_Ml_m5_24xlarge,
+        TrainingInstanceType_Ml_m5_2xlarge,
+        TrainingInstanceType_Ml_m5_4xlarge,
+        TrainingInstanceType_Ml_m5_large,
+        TrainingInstanceType_Ml_m5_xlarge,
+        TrainingInstanceType_Ml_p2_16xlarge,
+        TrainingInstanceType_Ml_p2_8xlarge,
+        TrainingInstanceType_Ml_p2_xlarge,
+        TrainingInstanceType_Ml_p3_16xlarge,
+        TrainingInstanceType_Ml_p3_2xlarge,
+        TrainingInstanceType_Ml_p3_8xlarge,
+        TrainingInstanceType_Ml_p3dn_24xlarge,
+        TrainingInstanceType_Ml_p4d_24xlarge,
+        TrainingInstanceType_Ml_trn1_2xlarge,
+        TrainingInstanceType_Ml_trn1_32xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrainingInstanceType = TrainingInstanceType'
+  { fromTrainingInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrainingInstanceType_Ml_c4_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c4_2xlarge = TrainingInstanceType' "ml.c4.2xlarge"
+
+pattern TrainingInstanceType_Ml_c4_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c4_4xlarge = TrainingInstanceType' "ml.c4.4xlarge"
+
+pattern TrainingInstanceType_Ml_c4_8xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c4_8xlarge = TrainingInstanceType' "ml.c4.8xlarge"
+
+pattern TrainingInstanceType_Ml_c4_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c4_xlarge = TrainingInstanceType' "ml.c4.xlarge"
+
+pattern TrainingInstanceType_Ml_c5_18xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5_18xlarge = TrainingInstanceType' "ml.c5.18xlarge"
+
+pattern TrainingInstanceType_Ml_c5_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5_2xlarge = TrainingInstanceType' "ml.c5.2xlarge"
+
+pattern TrainingInstanceType_Ml_c5_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5_4xlarge = TrainingInstanceType' "ml.c5.4xlarge"
+
+pattern TrainingInstanceType_Ml_c5_9xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5_9xlarge = TrainingInstanceType' "ml.c5.9xlarge"
+
+pattern TrainingInstanceType_Ml_c5_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5_xlarge = TrainingInstanceType' "ml.c5.xlarge"
+
+pattern TrainingInstanceType_Ml_c5n_18xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5n_18xlarge = TrainingInstanceType' "ml.c5n.18xlarge"
+
+pattern TrainingInstanceType_Ml_c5n_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5n_2xlarge = TrainingInstanceType' "ml.c5n.2xlarge"
+
+pattern TrainingInstanceType_Ml_c5n_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5n_4xlarge = TrainingInstanceType' "ml.c5n.4xlarge"
+
+pattern TrainingInstanceType_Ml_c5n_9xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5n_9xlarge = TrainingInstanceType' "ml.c5n.9xlarge"
+
+pattern TrainingInstanceType_Ml_c5n_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_c5n_xlarge = TrainingInstanceType' "ml.c5n.xlarge"
+
+pattern TrainingInstanceType_Ml_g4dn_12xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g4dn_12xlarge = TrainingInstanceType' "ml.g4dn.12xlarge"
+
+pattern TrainingInstanceType_Ml_g4dn_16xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g4dn_16xlarge = TrainingInstanceType' "ml.g4dn.16xlarge"
+
+pattern TrainingInstanceType_Ml_g4dn_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g4dn_2xlarge = TrainingInstanceType' "ml.g4dn.2xlarge"
+
+pattern TrainingInstanceType_Ml_g4dn_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g4dn_4xlarge = TrainingInstanceType' "ml.g4dn.4xlarge"
+
+pattern TrainingInstanceType_Ml_g4dn_8xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g4dn_8xlarge = TrainingInstanceType' "ml.g4dn.8xlarge"
+
+pattern TrainingInstanceType_Ml_g4dn_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g4dn_xlarge = TrainingInstanceType' "ml.g4dn.xlarge"
+
+pattern TrainingInstanceType_Ml_g5_12xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_12xlarge = TrainingInstanceType' "ml.g5.12xlarge"
+
+pattern TrainingInstanceType_Ml_g5_16xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_16xlarge = TrainingInstanceType' "ml.g5.16xlarge"
+
+pattern TrainingInstanceType_Ml_g5_24xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_24xlarge = TrainingInstanceType' "ml.g5.24xlarge"
+
+pattern TrainingInstanceType_Ml_g5_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_2xlarge = TrainingInstanceType' "ml.g5.2xlarge"
+
+pattern TrainingInstanceType_Ml_g5_48xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_48xlarge = TrainingInstanceType' "ml.g5.48xlarge"
+
+pattern TrainingInstanceType_Ml_g5_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_4xlarge = TrainingInstanceType' "ml.g5.4xlarge"
+
+pattern TrainingInstanceType_Ml_g5_8xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_8xlarge = TrainingInstanceType' "ml.g5.8xlarge"
+
+pattern TrainingInstanceType_Ml_g5_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_g5_xlarge = TrainingInstanceType' "ml.g5.xlarge"
+
+pattern TrainingInstanceType_Ml_m4_10xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m4_10xlarge = TrainingInstanceType' "ml.m4.10xlarge"
+
+pattern TrainingInstanceType_Ml_m4_16xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m4_16xlarge = TrainingInstanceType' "ml.m4.16xlarge"
+
+pattern TrainingInstanceType_Ml_m4_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m4_2xlarge = TrainingInstanceType' "ml.m4.2xlarge"
+
+pattern TrainingInstanceType_Ml_m4_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m4_4xlarge = TrainingInstanceType' "ml.m4.4xlarge"
+
+pattern TrainingInstanceType_Ml_m4_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m4_xlarge = TrainingInstanceType' "ml.m4.xlarge"
+
+pattern TrainingInstanceType_Ml_m5_12xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m5_12xlarge = TrainingInstanceType' "ml.m5.12xlarge"
+
+pattern TrainingInstanceType_Ml_m5_24xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m5_24xlarge = TrainingInstanceType' "ml.m5.24xlarge"
+
+pattern TrainingInstanceType_Ml_m5_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m5_2xlarge = TrainingInstanceType' "ml.m5.2xlarge"
+
+pattern TrainingInstanceType_Ml_m5_4xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m5_4xlarge = TrainingInstanceType' "ml.m5.4xlarge"
+
+pattern TrainingInstanceType_Ml_m5_large :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m5_large = TrainingInstanceType' "ml.m5.large"
+
+pattern TrainingInstanceType_Ml_m5_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_m5_xlarge = TrainingInstanceType' "ml.m5.xlarge"
+
+pattern TrainingInstanceType_Ml_p2_16xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p2_16xlarge = TrainingInstanceType' "ml.p2.16xlarge"
+
+pattern TrainingInstanceType_Ml_p2_8xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p2_8xlarge = TrainingInstanceType' "ml.p2.8xlarge"
+
+pattern TrainingInstanceType_Ml_p2_xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p2_xlarge = TrainingInstanceType' "ml.p2.xlarge"
+
+pattern TrainingInstanceType_Ml_p3_16xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p3_16xlarge = TrainingInstanceType' "ml.p3.16xlarge"
+
+pattern TrainingInstanceType_Ml_p3_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p3_2xlarge = TrainingInstanceType' "ml.p3.2xlarge"
+
+pattern TrainingInstanceType_Ml_p3_8xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p3_8xlarge = TrainingInstanceType' "ml.p3.8xlarge"
+
+pattern TrainingInstanceType_Ml_p3dn_24xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p3dn_24xlarge = TrainingInstanceType' "ml.p3dn.24xlarge"
+
+pattern TrainingInstanceType_Ml_p4d_24xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_p4d_24xlarge = TrainingInstanceType' "ml.p4d.24xlarge"
+
+pattern TrainingInstanceType_Ml_trn1_2xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_trn1_2xlarge = TrainingInstanceType' "ml.trn1.2xlarge"
+
+pattern TrainingInstanceType_Ml_trn1_32xlarge :: TrainingInstanceType
+pattern TrainingInstanceType_Ml_trn1_32xlarge = TrainingInstanceType' "ml.trn1.32xlarge"
+
+{-# COMPLETE
+  TrainingInstanceType_Ml_c4_2xlarge,
+  TrainingInstanceType_Ml_c4_4xlarge,
+  TrainingInstanceType_Ml_c4_8xlarge,
+  TrainingInstanceType_Ml_c4_xlarge,
+  TrainingInstanceType_Ml_c5_18xlarge,
+  TrainingInstanceType_Ml_c5_2xlarge,
+  TrainingInstanceType_Ml_c5_4xlarge,
+  TrainingInstanceType_Ml_c5_9xlarge,
+  TrainingInstanceType_Ml_c5_xlarge,
+  TrainingInstanceType_Ml_c5n_18xlarge,
+  TrainingInstanceType_Ml_c5n_2xlarge,
+  TrainingInstanceType_Ml_c5n_4xlarge,
+  TrainingInstanceType_Ml_c5n_9xlarge,
+  TrainingInstanceType_Ml_c5n_xlarge,
+  TrainingInstanceType_Ml_g4dn_12xlarge,
+  TrainingInstanceType_Ml_g4dn_16xlarge,
+  TrainingInstanceType_Ml_g4dn_2xlarge,
+  TrainingInstanceType_Ml_g4dn_4xlarge,
+  TrainingInstanceType_Ml_g4dn_8xlarge,
+  TrainingInstanceType_Ml_g4dn_xlarge,
+  TrainingInstanceType_Ml_g5_12xlarge,
+  TrainingInstanceType_Ml_g5_16xlarge,
+  TrainingInstanceType_Ml_g5_24xlarge,
+  TrainingInstanceType_Ml_g5_2xlarge,
+  TrainingInstanceType_Ml_g5_48xlarge,
+  TrainingInstanceType_Ml_g5_4xlarge,
+  TrainingInstanceType_Ml_g5_8xlarge,
+  TrainingInstanceType_Ml_g5_xlarge,
+  TrainingInstanceType_Ml_m4_10xlarge,
+  TrainingInstanceType_Ml_m4_16xlarge,
+  TrainingInstanceType_Ml_m4_2xlarge,
+  TrainingInstanceType_Ml_m4_4xlarge,
+  TrainingInstanceType_Ml_m4_xlarge,
+  TrainingInstanceType_Ml_m5_12xlarge,
+  TrainingInstanceType_Ml_m5_24xlarge,
+  TrainingInstanceType_Ml_m5_2xlarge,
+  TrainingInstanceType_Ml_m5_4xlarge,
+  TrainingInstanceType_Ml_m5_large,
+  TrainingInstanceType_Ml_m5_xlarge,
+  TrainingInstanceType_Ml_p2_16xlarge,
+  TrainingInstanceType_Ml_p2_8xlarge,
+  TrainingInstanceType_Ml_p2_xlarge,
+  TrainingInstanceType_Ml_p3_16xlarge,
+  TrainingInstanceType_Ml_p3_2xlarge,
+  TrainingInstanceType_Ml_p3_8xlarge,
+  TrainingInstanceType_Ml_p3dn_24xlarge,
+  TrainingInstanceType_Ml_p4d_24xlarge,
+  TrainingInstanceType_Ml_trn1_2xlarge,
+  TrainingInstanceType_Ml_trn1_32xlarge,
+  TrainingInstanceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJob.hs b/gen/Amazonka/SageMaker/Types/TrainingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJob.hs
@@ -0,0 +1,856 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrainingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJob 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 Amazonka.SageMaker.Types.AlgorithmSpecification
+import Amazonka.SageMaker.Types.Channel
+import Amazonka.SageMaker.Types.CheckpointConfig
+import Amazonka.SageMaker.Types.DebugHookConfig
+import Amazonka.SageMaker.Types.DebugRuleConfiguration
+import Amazonka.SageMaker.Types.DebugRuleEvaluationStatus
+import Amazonka.SageMaker.Types.ExperimentConfig
+import Amazonka.SageMaker.Types.MetricData
+import Amazonka.SageMaker.Types.ModelArtifacts
+import Amazonka.SageMaker.Types.OutputDataConfig
+import Amazonka.SageMaker.Types.ResourceConfig
+import Amazonka.SageMaker.Types.RetryStrategy
+import Amazonka.SageMaker.Types.SecondaryStatus
+import Amazonka.SageMaker.Types.SecondaryStatusTransition
+import Amazonka.SageMaker.Types.StoppingCondition
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TensorBoardOutputConfig
+import Amazonka.SageMaker.Types.TrainingJobStatus
+import Amazonka.SageMaker.Types.VpcConfig
+
+-- | Contains information about a training job.
+--
+-- /See:/ 'newTrainingJob' smart constructor.
+data TrainingJob = TrainingJob'
+  { -- | Information about the algorithm used for training, and algorithm
+    -- metadata.
+    algorithmSpecification :: Prelude.Maybe AlgorithmSpecification,
+    -- | The Amazon Resource Name (ARN) of the job.
+    autoMLJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The billable time in seconds.
+    billableTimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    checkpointConfig :: Prelude.Maybe CheckpointConfig,
+    -- | A timestamp that indicates when the training job was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    debugHookConfig :: Prelude.Maybe DebugHookConfig,
+    -- | Information about the debug rule configuration.
+    debugRuleConfigurations :: Prelude.Maybe [DebugRuleConfiguration],
+    -- | Information about the evaluation status of the rules for the training
+    -- job.
+    debugRuleEvaluationStatuses :: Prelude.Maybe [DebugRuleEvaluationStatus],
+    -- | To encrypt all communications between ML compute instances in
+    -- distributed training, choose @True@. Encryption provides greater
+    -- security for distributed training, but training might take longer. How
+    -- long it takes depends on the amount of communication between compute
+    -- instances, especially if you use a deep learning algorithm in
+    -- distributed training.
+    enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
+    -- | When true, enables managed spot training using Amazon EC2 Spot instances
+    -- to run training jobs instead of on-demand instances. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
+    enableManagedSpotTraining :: Prelude.Maybe Prelude.Bool,
+    -- | If the @TrainingJob@ was created with network isolation, the value is
+    -- set to @true@. If network isolation is enabled, nodes can\'t communicate
+    -- beyond the VPC they run in.
+    enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
+    -- | The environment variables to set in the Docker container.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | If the training job failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | A list of final metric values that are set when the training job
+    -- completes. Used only if the training job was configured to use metrics.
+    finalMetricDataList :: Prelude.Maybe [MetricData],
+    -- | Algorithm-specific parameters.
+    hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | An array of @Channel@ objects that describes each data input channel.
+    inputDataConfig :: Prelude.Maybe (Prelude.NonEmpty Channel),
+    -- | The Amazon Resource Name (ARN) of the labeling job.
+    labelingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the status of the training job was last
+    -- modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | Information about the Amazon S3 location that is configured for storing
+    -- model artifacts.
+    modelArtifacts :: Prelude.Maybe ModelArtifacts,
+    -- | The S3 path where model artifacts that you configured when creating the
+    -- job are stored. SageMaker creates subfolders for model artifacts.
+    outputDataConfig :: Prelude.Maybe OutputDataConfig,
+    -- | Resources, including ML compute instances and ML storage volumes, that
+    -- are configured for model training.
+    resourceConfig :: Prelude.Maybe ResourceConfig,
+    -- | The number of times to retry the job when the job fails due to an
+    -- @InternalServerError@.
+    retryStrategy :: Prelude.Maybe RetryStrategy,
+    -- | The Amazon Web Services Identity and Access Management (IAM) role
+    -- configured for the training job.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides detailed information about the state of the training job. For
+    -- detailed information about the secondary status of the training job, see
+    -- @StatusMessage@ under SecondaryStatusTransition.
+    --
+    -- SageMaker provides primary statuses and secondary statuses that apply to
+    -- each of them:
+    --
+    -- [InProgress]
+    --     -   @Starting@ - Starting the training job.
+    --
+    --     -   @Downloading@ - An optional stage for algorithms that support
+    --         @File@ training input mode. It indicates that data is being
+    --         downloaded to the ML storage volumes.
+    --
+    --     -   @Training@ - Training is in progress.
+    --
+    --     -   @Uploading@ - Training is complete and the model artifacts are
+    --         being uploaded to the S3 location.
+    --
+    -- [Completed]
+    --     -   @Completed@ - The training job has completed.
+    --
+    -- [Failed]
+    --     -   @Failed@ - The training job has failed. The reason for the
+    --         failure is returned in the @FailureReason@ field of
+    --         @DescribeTrainingJobResponse@.
+    --
+    -- [Stopped]
+    --     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+    --         maximum allowed runtime.
+    --
+    --     -   @Stopped@ - The training job has stopped.
+    --
+    -- [Stopping]
+    --     -   @Stopping@ - Stopping the training job.
+    --
+    -- Valid values for @SecondaryStatus@ are subject to change.
+    --
+    -- We no longer support the following secondary statuses:
+    --
+    -- -   @LaunchingMLInstances@
+    --
+    -- -   @PreparingTrainingStack@
+    --
+    -- -   @DownloadingTrainingImage@
+    secondaryStatus :: Prelude.Maybe SecondaryStatus,
+    -- | A history of all of the secondary statuses that the training job has
+    -- transitioned through.
+    secondaryStatusTransitions :: Prelude.Maybe [SecondaryStatusTransition],
+    -- | Specifies a limit to how long a model training job can run. It also
+    -- specifies how long a managed Spot training job has to complete. When the
+    -- job reaches the time limit, SageMaker ends the training job. Use this
+    -- API to cap model training costs.
+    --
+    -- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+    -- delays job termination for 120 seconds. Algorithms can use this
+    -- 120-second window to save the model artifacts, so the results of
+    -- training are not lost.
+    stoppingCondition :: Prelude.Maybe StoppingCondition,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    tags :: Prelude.Maybe [Tag],
+    tensorBoardOutputConfig :: Prelude.Maybe TensorBoardOutputConfig,
+    -- | Indicates the time when the training job ends on training instances. You
+    -- are billed for the time interval between the value of
+    -- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+    -- this is the time after model artifacts are uploaded. For failed jobs,
+    -- this is the time when SageMaker detects a job failure.
+    trainingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the training job.
+    trainingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the training job.
+    trainingJobName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the training job.
+    --
+    -- Training job statuses are:
+    --
+    -- -   @InProgress@ - The training is in progress.
+    --
+    -- -   @Completed@ - The training job has completed.
+    --
+    -- -   @Failed@ - The training job has failed. To see the reason for the
+    --     failure, see the @FailureReason@ field in the response to a
+    --     @DescribeTrainingJobResponse@ call.
+    --
+    -- -   @Stopping@ - The training job is stopping.
+    --
+    -- -   @Stopped@ - The training job has stopped.
+    --
+    -- For more detailed information, see @SecondaryStatus@.
+    trainingJobStatus :: Prelude.Maybe TrainingJobStatus,
+    -- | Indicates the time when the training job starts on training instances.
+    -- You are billed for the time interval between this time and the value of
+    -- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
+    -- this time. The difference is due to the time it takes to download the
+    -- training data and to the size of the training container.
+    trainingStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The training time in seconds.
+    trainingTimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Resource Name (ARN) of the associated hyperparameter tuning
+    -- job if the training job was launched by a hyperparameter tuning job.
+    tuningJobArn :: Prelude.Maybe Prelude.Text,
+    -- | A VpcConfig object that specifies the VPC that this training job has
+    -- access to. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+    vpcConfig :: Prelude.Maybe VpcConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrainingJob' 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:
+--
+-- 'algorithmSpecification', 'trainingJob_algorithmSpecification' - Information about the algorithm used for training, and algorithm
+-- metadata.
+--
+-- 'autoMLJobArn', 'trainingJob_autoMLJobArn' - The Amazon Resource Name (ARN) of the job.
+--
+-- 'billableTimeInSeconds', 'trainingJob_billableTimeInSeconds' - The billable time in seconds.
+--
+-- 'checkpointConfig', 'trainingJob_checkpointConfig' - Undocumented member.
+--
+-- 'creationTime', 'trainingJob_creationTime' - A timestamp that indicates when the training job was created.
+--
+-- 'debugHookConfig', 'trainingJob_debugHookConfig' - Undocumented member.
+--
+-- 'debugRuleConfigurations', 'trainingJob_debugRuleConfigurations' - Information about the debug rule configuration.
+--
+-- 'debugRuleEvaluationStatuses', 'trainingJob_debugRuleEvaluationStatuses' - Information about the evaluation status of the rules for the training
+-- job.
+--
+-- 'enableInterContainerTrafficEncryption', 'trainingJob_enableInterContainerTrafficEncryption' - To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithm in
+-- distributed training.
+--
+-- 'enableManagedSpotTraining', 'trainingJob_enableManagedSpotTraining' - When true, enables managed spot training using Amazon EC2 Spot instances
+-- to run training jobs instead of on-demand instances. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
+--
+-- 'enableNetworkIsolation', 'trainingJob_enableNetworkIsolation' - If the @TrainingJob@ was created with network isolation, the value is
+-- set to @true@. If network isolation is enabled, nodes can\'t communicate
+-- beyond the VPC they run in.
+--
+-- 'environment', 'trainingJob_environment' - The environment variables to set in the Docker container.
+--
+-- 'experimentConfig', 'trainingJob_experimentConfig' - Undocumented member.
+--
+-- 'failureReason', 'trainingJob_failureReason' - If the training job failed, the reason it failed.
+--
+-- 'finalMetricDataList', 'trainingJob_finalMetricDataList' - A list of final metric values that are set when the training job
+-- completes. Used only if the training job was configured to use metrics.
+--
+-- 'hyperParameters', 'trainingJob_hyperParameters' - Algorithm-specific parameters.
+--
+-- 'inputDataConfig', 'trainingJob_inputDataConfig' - An array of @Channel@ objects that describes each data input channel.
+--
+-- 'labelingJobArn', 'trainingJob_labelingJobArn' - The Amazon Resource Name (ARN) of the labeling job.
+--
+-- 'lastModifiedTime', 'trainingJob_lastModifiedTime' - A timestamp that indicates when the status of the training job was last
+-- modified.
+--
+-- 'modelArtifacts', 'trainingJob_modelArtifacts' - Information about the Amazon S3 location that is configured for storing
+-- model artifacts.
+--
+-- 'outputDataConfig', 'trainingJob_outputDataConfig' - The S3 path where model artifacts that you configured when creating the
+-- job are stored. SageMaker creates subfolders for model artifacts.
+--
+-- 'resourceConfig', 'trainingJob_resourceConfig' - Resources, including ML compute instances and ML storage volumes, that
+-- are configured for model training.
+--
+-- 'retryStrategy', 'trainingJob_retryStrategy' - The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+--
+-- 'roleArn', 'trainingJob_roleArn' - The Amazon Web Services Identity and Access Management (IAM) role
+-- configured for the training job.
+--
+-- 'secondaryStatus', 'trainingJob_secondaryStatus' - Provides detailed information about the state of the training job. For
+-- detailed information about the secondary status of the training job, see
+-- @StatusMessage@ under SecondaryStatusTransition.
+--
+-- SageMaker provides primary statuses and secondary statuses that apply to
+-- each of them:
+--
+-- [InProgress]
+--     -   @Starting@ - Starting the training job.
+--
+--     -   @Downloading@ - An optional stage for algorithms that support
+--         @File@ training input mode. It indicates that data is being
+--         downloaded to the ML storage volumes.
+--
+--     -   @Training@ - Training is in progress.
+--
+--     -   @Uploading@ - Training is complete and the model artifacts are
+--         being uploaded to the S3 location.
+--
+-- [Completed]
+--     -   @Completed@ - The training job has completed.
+--
+-- [Failed]
+--     -   @Failed@ - The training job has failed. The reason for the
+--         failure is returned in the @FailureReason@ field of
+--         @DescribeTrainingJobResponse@.
+--
+-- [Stopped]
+--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed runtime.
+--
+--     -   @Stopped@ - The training job has stopped.
+--
+-- [Stopping]
+--     -   @Stopping@ - Stopping the training job.
+--
+-- Valid values for @SecondaryStatus@ are subject to change.
+--
+-- We no longer support the following secondary statuses:
+--
+-- -   @LaunchingMLInstances@
+--
+-- -   @PreparingTrainingStack@
+--
+-- -   @DownloadingTrainingImage@
+--
+-- 'secondaryStatusTransitions', 'trainingJob_secondaryStatusTransitions' - A history of all of the secondary statuses that the training job has
+-- transitioned through.
+--
+-- 'stoppingCondition', 'trainingJob_stoppingCondition' - Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+--
+-- 'tags', 'trainingJob_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+--
+-- 'tensorBoardOutputConfig', 'trainingJob_tensorBoardOutputConfig' - Undocumented member.
+--
+-- 'trainingEndTime', 'trainingJob_trainingEndTime' - Indicates the time when the training job ends on training instances. You
+-- are billed for the time interval between the value of
+-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+-- this is the time after model artifacts are uploaded. For failed jobs,
+-- this is the time when SageMaker detects a job failure.
+--
+-- 'trainingJobArn', 'trainingJob_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
+--
+-- 'trainingJobName', 'trainingJob_trainingJobName' - The name of the training job.
+--
+-- 'trainingJobStatus', 'trainingJob_trainingJobStatus' - The status of the training job.
+--
+-- Training job statuses are:
+--
+-- -   @InProgress@ - The training is in progress.
+--
+-- -   @Completed@ - The training job has completed.
+--
+-- -   @Failed@ - The training job has failed. To see the reason for the
+--     failure, see the @FailureReason@ field in the response to a
+--     @DescribeTrainingJobResponse@ call.
+--
+-- -   @Stopping@ - The training job is stopping.
+--
+-- -   @Stopped@ - The training job has stopped.
+--
+-- For more detailed information, see @SecondaryStatus@.
+--
+-- 'trainingStartTime', 'trainingJob_trainingStartTime' - Indicates the time when the training job starts on training instances.
+-- You are billed for the time interval between this time and the value of
+-- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
+-- this time. The difference is due to the time it takes to download the
+-- training data and to the size of the training container.
+--
+-- 'trainingTimeInSeconds', 'trainingJob_trainingTimeInSeconds' - The training time in seconds.
+--
+-- 'tuningJobArn', 'trainingJob_tuningJobArn' - The Amazon Resource Name (ARN) of the associated hyperparameter tuning
+-- job if the training job was launched by a hyperparameter tuning job.
+--
+-- 'vpcConfig', 'trainingJob_vpcConfig' - A VpcConfig object that specifies the VPC that this training job has
+-- access to. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+newTrainingJob ::
+  TrainingJob
+newTrainingJob =
+  TrainingJob'
+    { algorithmSpecification =
+        Prelude.Nothing,
+      autoMLJobArn = Prelude.Nothing,
+      billableTimeInSeconds = Prelude.Nothing,
+      checkpointConfig = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      debugHookConfig = Prelude.Nothing,
+      debugRuleConfigurations = Prelude.Nothing,
+      debugRuleEvaluationStatuses = Prelude.Nothing,
+      enableInterContainerTrafficEncryption =
+        Prelude.Nothing,
+      enableManagedSpotTraining = Prelude.Nothing,
+      enableNetworkIsolation = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      experimentConfig = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      finalMetricDataList = Prelude.Nothing,
+      hyperParameters = Prelude.Nothing,
+      inputDataConfig = Prelude.Nothing,
+      labelingJobArn = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      modelArtifacts = Prelude.Nothing,
+      outputDataConfig = Prelude.Nothing,
+      resourceConfig = Prelude.Nothing,
+      retryStrategy = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      secondaryStatus = Prelude.Nothing,
+      secondaryStatusTransitions = Prelude.Nothing,
+      stoppingCondition = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      tensorBoardOutputConfig = Prelude.Nothing,
+      trainingEndTime = Prelude.Nothing,
+      trainingJobArn = Prelude.Nothing,
+      trainingJobName = Prelude.Nothing,
+      trainingJobStatus = Prelude.Nothing,
+      trainingStartTime = Prelude.Nothing,
+      trainingTimeInSeconds = Prelude.Nothing,
+      tuningJobArn = Prelude.Nothing,
+      vpcConfig = Prelude.Nothing
+    }
+
+-- | Information about the algorithm used for training, and algorithm
+-- metadata.
+trainingJob_algorithmSpecification :: Lens.Lens' TrainingJob (Prelude.Maybe AlgorithmSpecification)
+trainingJob_algorithmSpecification = Lens.lens (\TrainingJob' {algorithmSpecification} -> algorithmSpecification) (\s@TrainingJob' {} a -> s {algorithmSpecification = a} :: TrainingJob)
+
+-- | The Amazon Resource Name (ARN) of the job.
+trainingJob_autoMLJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_autoMLJobArn = Lens.lens (\TrainingJob' {autoMLJobArn} -> autoMLJobArn) (\s@TrainingJob' {} a -> s {autoMLJobArn = a} :: TrainingJob)
+
+-- | The billable time in seconds.
+trainingJob_billableTimeInSeconds :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Natural)
+trainingJob_billableTimeInSeconds = Lens.lens (\TrainingJob' {billableTimeInSeconds} -> billableTimeInSeconds) (\s@TrainingJob' {} a -> s {billableTimeInSeconds = a} :: TrainingJob)
+
+-- | Undocumented member.
+trainingJob_checkpointConfig :: Lens.Lens' TrainingJob (Prelude.Maybe CheckpointConfig)
+trainingJob_checkpointConfig = Lens.lens (\TrainingJob' {checkpointConfig} -> checkpointConfig) (\s@TrainingJob' {} a -> s {checkpointConfig = a} :: TrainingJob)
+
+-- | A timestamp that indicates when the training job was created.
+trainingJob_creationTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
+trainingJob_creationTime = Lens.lens (\TrainingJob' {creationTime} -> creationTime) (\s@TrainingJob' {} a -> s {creationTime = a} :: TrainingJob) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+trainingJob_debugHookConfig :: Lens.Lens' TrainingJob (Prelude.Maybe DebugHookConfig)
+trainingJob_debugHookConfig = Lens.lens (\TrainingJob' {debugHookConfig} -> debugHookConfig) (\s@TrainingJob' {} a -> s {debugHookConfig = a} :: TrainingJob)
+
+-- | Information about the debug rule configuration.
+trainingJob_debugRuleConfigurations :: Lens.Lens' TrainingJob (Prelude.Maybe [DebugRuleConfiguration])
+trainingJob_debugRuleConfigurations = Lens.lens (\TrainingJob' {debugRuleConfigurations} -> debugRuleConfigurations) (\s@TrainingJob' {} a -> s {debugRuleConfigurations = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Information about the evaluation status of the rules for the training
+-- job.
+trainingJob_debugRuleEvaluationStatuses :: Lens.Lens' TrainingJob (Prelude.Maybe [DebugRuleEvaluationStatus])
+trainingJob_debugRuleEvaluationStatuses = Lens.lens (\TrainingJob' {debugRuleEvaluationStatuses} -> debugRuleEvaluationStatuses) (\s@TrainingJob' {} a -> s {debugRuleEvaluationStatuses = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | To encrypt all communications between ML compute instances in
+-- distributed training, choose @True@. Encryption provides greater
+-- security for distributed training, but training might take longer. How
+-- long it takes depends on the amount of communication between compute
+-- instances, especially if you use a deep learning algorithm in
+-- distributed training.
+trainingJob_enableInterContainerTrafficEncryption :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Bool)
+trainingJob_enableInterContainerTrafficEncryption = Lens.lens (\TrainingJob' {enableInterContainerTrafficEncryption} -> enableInterContainerTrafficEncryption) (\s@TrainingJob' {} a -> s {enableInterContainerTrafficEncryption = a} :: TrainingJob)
+
+-- | When true, enables managed spot training using Amazon EC2 Spot instances
+-- to run training jobs instead of on-demand instances. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
+trainingJob_enableManagedSpotTraining :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Bool)
+trainingJob_enableManagedSpotTraining = Lens.lens (\TrainingJob' {enableManagedSpotTraining} -> enableManagedSpotTraining) (\s@TrainingJob' {} a -> s {enableManagedSpotTraining = a} :: TrainingJob)
+
+-- | If the @TrainingJob@ was created with network isolation, the value is
+-- set to @true@. If network isolation is enabled, nodes can\'t communicate
+-- beyond the VPC they run in.
+trainingJob_enableNetworkIsolation :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Bool)
+trainingJob_enableNetworkIsolation = Lens.lens (\TrainingJob' {enableNetworkIsolation} -> enableNetworkIsolation) (\s@TrainingJob' {} a -> s {enableNetworkIsolation = a} :: TrainingJob)
+
+-- | The environment variables to set in the Docker container.
+trainingJob_environment :: Lens.Lens' TrainingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+trainingJob_environment = Lens.lens (\TrainingJob' {environment} -> environment) (\s@TrainingJob' {} a -> s {environment = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+trainingJob_experimentConfig :: Lens.Lens' TrainingJob (Prelude.Maybe ExperimentConfig)
+trainingJob_experimentConfig = Lens.lens (\TrainingJob' {experimentConfig} -> experimentConfig) (\s@TrainingJob' {} a -> s {experimentConfig = a} :: TrainingJob)
+
+-- | If the training job failed, the reason it failed.
+trainingJob_failureReason :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_failureReason = Lens.lens (\TrainingJob' {failureReason} -> failureReason) (\s@TrainingJob' {} a -> s {failureReason = a} :: TrainingJob)
+
+-- | A list of final metric values that are set when the training job
+-- completes. Used only if the training job was configured to use metrics.
+trainingJob_finalMetricDataList :: Lens.Lens' TrainingJob (Prelude.Maybe [MetricData])
+trainingJob_finalMetricDataList = Lens.lens (\TrainingJob' {finalMetricDataList} -> finalMetricDataList) (\s@TrainingJob' {} a -> s {finalMetricDataList = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Algorithm-specific parameters.
+trainingJob_hyperParameters :: Lens.Lens' TrainingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+trainingJob_hyperParameters = Lens.lens (\TrainingJob' {hyperParameters} -> hyperParameters) (\s@TrainingJob' {} a -> s {hyperParameters = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of @Channel@ objects that describes each data input channel.
+trainingJob_inputDataConfig :: Lens.Lens' TrainingJob (Prelude.Maybe (Prelude.NonEmpty Channel))
+trainingJob_inputDataConfig = Lens.lens (\TrainingJob' {inputDataConfig} -> inputDataConfig) (\s@TrainingJob' {} a -> s {inputDataConfig = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the labeling job.
+trainingJob_labelingJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_labelingJobArn = Lens.lens (\TrainingJob' {labelingJobArn} -> labelingJobArn) (\s@TrainingJob' {} a -> s {labelingJobArn = a} :: TrainingJob)
+
+-- | A timestamp that indicates when the status of the training job was last
+-- modified.
+trainingJob_lastModifiedTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
+trainingJob_lastModifiedTime = Lens.lens (\TrainingJob' {lastModifiedTime} -> lastModifiedTime) (\s@TrainingJob' {} a -> s {lastModifiedTime = a} :: TrainingJob) Prelude.. Lens.mapping Data._Time
+
+-- | Information about the Amazon S3 location that is configured for storing
+-- model artifacts.
+trainingJob_modelArtifacts :: Lens.Lens' TrainingJob (Prelude.Maybe ModelArtifacts)
+trainingJob_modelArtifacts = Lens.lens (\TrainingJob' {modelArtifacts} -> modelArtifacts) (\s@TrainingJob' {} a -> s {modelArtifacts = a} :: TrainingJob)
+
+-- | The S3 path where model artifacts that you configured when creating the
+-- job are stored. SageMaker creates subfolders for model artifacts.
+trainingJob_outputDataConfig :: Lens.Lens' TrainingJob (Prelude.Maybe OutputDataConfig)
+trainingJob_outputDataConfig = Lens.lens (\TrainingJob' {outputDataConfig} -> outputDataConfig) (\s@TrainingJob' {} a -> s {outputDataConfig = a} :: TrainingJob)
+
+-- | Resources, including ML compute instances and ML storage volumes, that
+-- are configured for model training.
+trainingJob_resourceConfig :: Lens.Lens' TrainingJob (Prelude.Maybe ResourceConfig)
+trainingJob_resourceConfig = Lens.lens (\TrainingJob' {resourceConfig} -> resourceConfig) (\s@TrainingJob' {} a -> s {resourceConfig = a} :: TrainingJob)
+
+-- | The number of times to retry the job when the job fails due to an
+-- @InternalServerError@.
+trainingJob_retryStrategy :: Lens.Lens' TrainingJob (Prelude.Maybe RetryStrategy)
+trainingJob_retryStrategy = Lens.lens (\TrainingJob' {retryStrategy} -> retryStrategy) (\s@TrainingJob' {} a -> s {retryStrategy = a} :: TrainingJob)
+
+-- | The Amazon Web Services Identity and Access Management (IAM) role
+-- configured for the training job.
+trainingJob_roleArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_roleArn = Lens.lens (\TrainingJob' {roleArn} -> roleArn) (\s@TrainingJob' {} a -> s {roleArn = a} :: TrainingJob)
+
+-- | Provides detailed information about the state of the training job. For
+-- detailed information about the secondary status of the training job, see
+-- @StatusMessage@ under SecondaryStatusTransition.
+--
+-- SageMaker provides primary statuses and secondary statuses that apply to
+-- each of them:
+--
+-- [InProgress]
+--     -   @Starting@ - Starting the training job.
+--
+--     -   @Downloading@ - An optional stage for algorithms that support
+--         @File@ training input mode. It indicates that data is being
+--         downloaded to the ML storage volumes.
+--
+--     -   @Training@ - Training is in progress.
+--
+--     -   @Uploading@ - Training is complete and the model artifacts are
+--         being uploaded to the S3 location.
+--
+-- [Completed]
+--     -   @Completed@ - The training job has completed.
+--
+-- [Failed]
+--     -   @Failed@ - The training job has failed. The reason for the
+--         failure is returned in the @FailureReason@ field of
+--         @DescribeTrainingJobResponse@.
+--
+-- [Stopped]
+--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
+--         maximum allowed runtime.
+--
+--     -   @Stopped@ - The training job has stopped.
+--
+-- [Stopping]
+--     -   @Stopping@ - Stopping the training job.
+--
+-- Valid values for @SecondaryStatus@ are subject to change.
+--
+-- We no longer support the following secondary statuses:
+--
+-- -   @LaunchingMLInstances@
+--
+-- -   @PreparingTrainingStack@
+--
+-- -   @DownloadingTrainingImage@
+trainingJob_secondaryStatus :: Lens.Lens' TrainingJob (Prelude.Maybe SecondaryStatus)
+trainingJob_secondaryStatus = Lens.lens (\TrainingJob' {secondaryStatus} -> secondaryStatus) (\s@TrainingJob' {} a -> s {secondaryStatus = a} :: TrainingJob)
+
+-- | A history of all of the secondary statuses that the training job has
+-- transitioned through.
+trainingJob_secondaryStatusTransitions :: Lens.Lens' TrainingJob (Prelude.Maybe [SecondaryStatusTransition])
+trainingJob_secondaryStatusTransitions = Lens.lens (\TrainingJob' {secondaryStatusTransitions} -> secondaryStatusTransitions) (\s@TrainingJob' {} a -> s {secondaryStatusTransitions = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the @SIGTERM@ signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts, so the results of
+-- training are not lost.
+trainingJob_stoppingCondition :: Lens.Lens' TrainingJob (Prelude.Maybe StoppingCondition)
+trainingJob_stoppingCondition = Lens.lens (\TrainingJob' {stoppingCondition} -> stoppingCondition) (\s@TrainingJob' {} a -> s {stoppingCondition = a} :: TrainingJob)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+trainingJob_tags :: Lens.Lens' TrainingJob (Prelude.Maybe [Tag])
+trainingJob_tags = Lens.lens (\TrainingJob' {tags} -> tags) (\s@TrainingJob' {} a -> s {tags = a} :: TrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+trainingJob_tensorBoardOutputConfig :: Lens.Lens' TrainingJob (Prelude.Maybe TensorBoardOutputConfig)
+trainingJob_tensorBoardOutputConfig = Lens.lens (\TrainingJob' {tensorBoardOutputConfig} -> tensorBoardOutputConfig) (\s@TrainingJob' {} a -> s {tensorBoardOutputConfig = a} :: TrainingJob)
+
+-- | Indicates the time when the training job ends on training instances. You
+-- are billed for the time interval between the value of
+-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
+-- this is the time after model artifacts are uploaded. For failed jobs,
+-- this is the time when SageMaker detects a job failure.
+trainingJob_trainingEndTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
+trainingJob_trainingEndTime = Lens.lens (\TrainingJob' {trainingEndTime} -> trainingEndTime) (\s@TrainingJob' {} a -> s {trainingEndTime = a} :: TrainingJob) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the training job.
+trainingJob_trainingJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_trainingJobArn = Lens.lens (\TrainingJob' {trainingJobArn} -> trainingJobArn) (\s@TrainingJob' {} a -> s {trainingJobArn = a} :: TrainingJob)
+
+-- | The name of the training job.
+trainingJob_trainingJobName :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_trainingJobName = Lens.lens (\TrainingJob' {trainingJobName} -> trainingJobName) (\s@TrainingJob' {} a -> s {trainingJobName = a} :: TrainingJob)
+
+-- | The status of the training job.
+--
+-- Training job statuses are:
+--
+-- -   @InProgress@ - The training is in progress.
+--
+-- -   @Completed@ - The training job has completed.
+--
+-- -   @Failed@ - The training job has failed. To see the reason for the
+--     failure, see the @FailureReason@ field in the response to a
+--     @DescribeTrainingJobResponse@ call.
+--
+-- -   @Stopping@ - The training job is stopping.
+--
+-- -   @Stopped@ - The training job has stopped.
+--
+-- For more detailed information, see @SecondaryStatus@.
+trainingJob_trainingJobStatus :: Lens.Lens' TrainingJob (Prelude.Maybe TrainingJobStatus)
+trainingJob_trainingJobStatus = Lens.lens (\TrainingJob' {trainingJobStatus} -> trainingJobStatus) (\s@TrainingJob' {} a -> s {trainingJobStatus = a} :: TrainingJob)
+
+-- | Indicates the time when the training job starts on training instances.
+-- You are billed for the time interval between this time and the value of
+-- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
+-- this time. The difference is due to the time it takes to download the
+-- training data and to the size of the training container.
+trainingJob_trainingStartTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
+trainingJob_trainingStartTime = Lens.lens (\TrainingJob' {trainingStartTime} -> trainingStartTime) (\s@TrainingJob' {} a -> s {trainingStartTime = a} :: TrainingJob) Prelude.. Lens.mapping Data._Time
+
+-- | The training time in seconds.
+trainingJob_trainingTimeInSeconds :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Natural)
+trainingJob_trainingTimeInSeconds = Lens.lens (\TrainingJob' {trainingTimeInSeconds} -> trainingTimeInSeconds) (\s@TrainingJob' {} a -> s {trainingTimeInSeconds = a} :: TrainingJob)
+
+-- | The Amazon Resource Name (ARN) of the associated hyperparameter tuning
+-- job if the training job was launched by a hyperparameter tuning job.
+trainingJob_tuningJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
+trainingJob_tuningJobArn = Lens.lens (\TrainingJob' {tuningJobArn} -> tuningJobArn) (\s@TrainingJob' {} a -> s {tuningJobArn = a} :: TrainingJob)
+
+-- | A VpcConfig object that specifies the VPC that this training job has
+-- access to. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+trainingJob_vpcConfig :: Lens.Lens' TrainingJob (Prelude.Maybe VpcConfig)
+trainingJob_vpcConfig = Lens.lens (\TrainingJob' {vpcConfig} -> vpcConfig) (\s@TrainingJob' {} a -> s {vpcConfig = a} :: TrainingJob)
+
+instance Data.FromJSON TrainingJob where
+  parseJSON =
+    Data.withObject
+      "TrainingJob"
+      ( \x ->
+          TrainingJob'
+            Prelude.<$> (x Data..:? "AlgorithmSpecification")
+            Prelude.<*> (x Data..:? "AutoMLJobArn")
+            Prelude.<*> (x Data..:? "BillableTimeInSeconds")
+            Prelude.<*> (x Data..:? "CheckpointConfig")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DebugHookConfig")
+            Prelude.<*> ( x
+                            Data..:? "DebugRuleConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "DebugRuleEvaluationStatuses"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "EnableInterContainerTrafficEncryption")
+            Prelude.<*> (x Data..:? "EnableManagedSpotTraining")
+            Prelude.<*> (x Data..:? "EnableNetworkIsolation")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ExperimentConfig")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> ( x
+                            Data..:? "FinalMetricDataList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "HyperParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "InputDataConfig")
+            Prelude.<*> (x Data..:? "LabelingJobArn")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ModelArtifacts")
+            Prelude.<*> (x Data..:? "OutputDataConfig")
+            Prelude.<*> (x Data..:? "ResourceConfig")
+            Prelude.<*> (x Data..:? "RetryStrategy")
+            Prelude.<*> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "SecondaryStatus")
+            Prelude.<*> ( x
+                            Data..:? "SecondaryStatusTransitions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "StoppingCondition")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TensorBoardOutputConfig")
+            Prelude.<*> (x Data..:? "TrainingEndTime")
+            Prelude.<*> (x Data..:? "TrainingJobArn")
+            Prelude.<*> (x Data..:? "TrainingJobName")
+            Prelude.<*> (x Data..:? "TrainingJobStatus")
+            Prelude.<*> (x Data..:? "TrainingStartTime")
+            Prelude.<*> (x Data..:? "TrainingTimeInSeconds")
+            Prelude.<*> (x Data..:? "TuningJobArn")
+            Prelude.<*> (x Data..:? "VpcConfig")
+      )
+
+instance Prelude.Hashable TrainingJob where
+  hashWithSalt _salt TrainingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmSpecification
+      `Prelude.hashWithSalt` autoMLJobArn
+      `Prelude.hashWithSalt` billableTimeInSeconds
+      `Prelude.hashWithSalt` checkpointConfig
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` debugHookConfig
+      `Prelude.hashWithSalt` debugRuleConfigurations
+      `Prelude.hashWithSalt` debugRuleEvaluationStatuses
+      `Prelude.hashWithSalt` enableInterContainerTrafficEncryption
+      `Prelude.hashWithSalt` enableManagedSpotTraining
+      `Prelude.hashWithSalt` enableNetworkIsolation
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` experimentConfig
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` finalMetricDataList
+      `Prelude.hashWithSalt` hyperParameters
+      `Prelude.hashWithSalt` inputDataConfig
+      `Prelude.hashWithSalt` labelingJobArn
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modelArtifacts
+      `Prelude.hashWithSalt` outputDataConfig
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` retryStrategy
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` secondaryStatus
+      `Prelude.hashWithSalt` secondaryStatusTransitions
+      `Prelude.hashWithSalt` stoppingCondition
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` tensorBoardOutputConfig
+      `Prelude.hashWithSalt` trainingEndTime
+      `Prelude.hashWithSalt` trainingJobArn
+      `Prelude.hashWithSalt` trainingJobName
+      `Prelude.hashWithSalt` trainingJobStatus
+      `Prelude.hashWithSalt` trainingStartTime
+      `Prelude.hashWithSalt` trainingTimeInSeconds
+      `Prelude.hashWithSalt` tuningJobArn
+      `Prelude.hashWithSalt` vpcConfig
+
+instance Prelude.NFData TrainingJob where
+  rnf TrainingJob' {..} =
+    Prelude.rnf algorithmSpecification
+      `Prelude.seq` Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf billableTimeInSeconds
+      `Prelude.seq` Prelude.rnf checkpointConfig
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf debugHookConfig
+      `Prelude.seq` Prelude.rnf debugRuleConfigurations
+      `Prelude.seq` Prelude.rnf debugRuleEvaluationStatuses
+      `Prelude.seq` Prelude.rnf enableInterContainerTrafficEncryption
+      `Prelude.seq` Prelude.rnf enableManagedSpotTraining
+      `Prelude.seq` Prelude.rnf enableNetworkIsolation
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf finalMetricDataList
+      `Prelude.seq` Prelude.rnf hyperParameters
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf labelingJobArn
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modelArtifacts
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf
+        retryStrategy
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf
+        secondaryStatus
+      `Prelude.seq` Prelude.rnf
+        secondaryStatusTransitions
+      `Prelude.seq` Prelude.rnf
+        stoppingCondition
+      `Prelude.seq` Prelude.rnf
+        tags
+      `Prelude.seq` Prelude.rnf
+        tensorBoardOutputConfig
+      `Prelude.seq` Prelude.rnf
+        trainingEndTime
+      `Prelude.seq` Prelude.rnf
+        trainingJobArn
+      `Prelude.seq` Prelude.rnf
+        trainingJobName
+      `Prelude.seq` Prelude.rnf
+        trainingJobStatus
+      `Prelude.seq` Prelude.rnf
+        trainingStartTime
+      `Prelude.seq` Prelude.rnf
+        trainingTimeInSeconds
+      `Prelude.seq` Prelude.rnf
+        tuningJobArn
+      `Prelude.seq` Prelude.rnf
+        vpcConfig
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobDefinition.hs b/gen/Amazonka/SageMaker/Types/TrainingJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobDefinition.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrainingJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobDefinition 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 Amazonka.SageMaker.Types.Channel
+import Amazonka.SageMaker.Types.OutputDataConfig
+import Amazonka.SageMaker.Types.ResourceConfig
+import Amazonka.SageMaker.Types.StoppingCondition
+import Amazonka.SageMaker.Types.TrainingInputMode
+
+-- | Defines the input needed to run a training job using the algorithm.
+--
+-- /See:/ 'newTrainingJobDefinition' smart constructor.
+data TrainingJobDefinition = TrainingJobDefinition'
+  { -- | The hyperparameters used for the training job.
+    hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    trainingInputMode :: TrainingInputMode,
+    -- | An array of @Channel@ objects, each of which specifies an input source.
+    inputDataConfig :: Prelude.NonEmpty Channel,
+    -- | the path to the S3 bucket where you want to store model artifacts.
+    -- SageMaker creates subfolders for the artifacts.
+    outputDataConfig :: OutputDataConfig,
+    -- | The resources, including the ML compute instances and ML storage
+    -- volumes, to use for model training.
+    resourceConfig :: ResourceConfig,
+    -- | Specifies a limit to how long a model training job can run. It also
+    -- specifies how long a managed Spot training job has to complete. When the
+    -- job reaches the time limit, SageMaker ends the training job. Use this
+    -- API to cap model training costs.
+    --
+    -- To stop a job, SageMaker sends the algorithm the SIGTERM signal, which
+    -- delays job termination for 120 seconds. Algorithms can use this
+    -- 120-second window to save the model artifacts.
+    stoppingCondition :: StoppingCondition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrainingJobDefinition' 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:
+--
+-- 'hyperParameters', 'trainingJobDefinition_hyperParameters' - The hyperparameters used for the training job.
+--
+-- 'trainingInputMode', 'trainingJobDefinition_trainingInputMode' - Undocumented member.
+--
+-- 'inputDataConfig', 'trainingJobDefinition_inputDataConfig' - An array of @Channel@ objects, each of which specifies an input source.
+--
+-- 'outputDataConfig', 'trainingJobDefinition_outputDataConfig' - the path to the S3 bucket where you want to store model artifacts.
+-- SageMaker creates subfolders for the artifacts.
+--
+-- 'resourceConfig', 'trainingJobDefinition_resourceConfig' - The resources, including the ML compute instances and ML storage
+-- volumes, to use for model training.
+--
+-- 'stoppingCondition', 'trainingJobDefinition_stoppingCondition' - Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the SIGTERM signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts.
+newTrainingJobDefinition ::
+  -- | 'trainingInputMode'
+  TrainingInputMode ->
+  -- | 'inputDataConfig'
+  Prelude.NonEmpty Channel ->
+  -- | 'outputDataConfig'
+  OutputDataConfig ->
+  -- | 'resourceConfig'
+  ResourceConfig ->
+  -- | 'stoppingCondition'
+  StoppingCondition ->
+  TrainingJobDefinition
+newTrainingJobDefinition
+  pTrainingInputMode_
+  pInputDataConfig_
+  pOutputDataConfig_
+  pResourceConfig_
+  pStoppingCondition_ =
+    TrainingJobDefinition'
+      { hyperParameters =
+          Prelude.Nothing,
+        trainingInputMode = pTrainingInputMode_,
+        inputDataConfig =
+          Lens.coerced Lens.# pInputDataConfig_,
+        outputDataConfig = pOutputDataConfig_,
+        resourceConfig = pResourceConfig_,
+        stoppingCondition = pStoppingCondition_
+      }
+
+-- | The hyperparameters used for the training job.
+trainingJobDefinition_hyperParameters :: Lens.Lens' TrainingJobDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+trainingJobDefinition_hyperParameters = Lens.lens (\TrainingJobDefinition' {hyperParameters} -> hyperParameters) (\s@TrainingJobDefinition' {} a -> s {hyperParameters = a} :: TrainingJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+trainingJobDefinition_trainingInputMode :: Lens.Lens' TrainingJobDefinition TrainingInputMode
+trainingJobDefinition_trainingInputMode = Lens.lens (\TrainingJobDefinition' {trainingInputMode} -> trainingInputMode) (\s@TrainingJobDefinition' {} a -> s {trainingInputMode = a} :: TrainingJobDefinition)
+
+-- | An array of @Channel@ objects, each of which specifies an input source.
+trainingJobDefinition_inputDataConfig :: Lens.Lens' TrainingJobDefinition (Prelude.NonEmpty Channel)
+trainingJobDefinition_inputDataConfig = Lens.lens (\TrainingJobDefinition' {inputDataConfig} -> inputDataConfig) (\s@TrainingJobDefinition' {} a -> s {inputDataConfig = a} :: TrainingJobDefinition) Prelude.. Lens.coerced
+
+-- | the path to the S3 bucket where you want to store model artifacts.
+-- SageMaker creates subfolders for the artifacts.
+trainingJobDefinition_outputDataConfig :: Lens.Lens' TrainingJobDefinition OutputDataConfig
+trainingJobDefinition_outputDataConfig = Lens.lens (\TrainingJobDefinition' {outputDataConfig} -> outputDataConfig) (\s@TrainingJobDefinition' {} a -> s {outputDataConfig = a} :: TrainingJobDefinition)
+
+-- | The resources, including the ML compute instances and ML storage
+-- volumes, to use for model training.
+trainingJobDefinition_resourceConfig :: Lens.Lens' TrainingJobDefinition ResourceConfig
+trainingJobDefinition_resourceConfig = Lens.lens (\TrainingJobDefinition' {resourceConfig} -> resourceConfig) (\s@TrainingJobDefinition' {} a -> s {resourceConfig = a} :: TrainingJobDefinition)
+
+-- | Specifies a limit to how long a model training job can run. It also
+-- specifies how long a managed Spot training job has to complete. When the
+-- job reaches the time limit, SageMaker ends the training job. Use this
+-- API to cap model training costs.
+--
+-- To stop a job, SageMaker sends the algorithm the SIGTERM signal, which
+-- delays job termination for 120 seconds. Algorithms can use this
+-- 120-second window to save the model artifacts.
+trainingJobDefinition_stoppingCondition :: Lens.Lens' TrainingJobDefinition StoppingCondition
+trainingJobDefinition_stoppingCondition = Lens.lens (\TrainingJobDefinition' {stoppingCondition} -> stoppingCondition) (\s@TrainingJobDefinition' {} a -> s {stoppingCondition = a} :: TrainingJobDefinition)
+
+instance Data.FromJSON TrainingJobDefinition where
+  parseJSON =
+    Data.withObject
+      "TrainingJobDefinition"
+      ( \x ->
+          TrainingJobDefinition'
+            Prelude.<$> ( x
+                            Data..:? "HyperParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "TrainingInputMode")
+            Prelude.<*> (x Data..: "InputDataConfig")
+            Prelude.<*> (x Data..: "OutputDataConfig")
+            Prelude.<*> (x Data..: "ResourceConfig")
+            Prelude.<*> (x Data..: "StoppingCondition")
+      )
+
+instance Prelude.Hashable TrainingJobDefinition where
+  hashWithSalt _salt TrainingJobDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` hyperParameters
+      `Prelude.hashWithSalt` trainingInputMode
+      `Prelude.hashWithSalt` inputDataConfig
+      `Prelude.hashWithSalt` outputDataConfig
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` stoppingCondition
+
+instance Prelude.NFData TrainingJobDefinition where
+  rnf TrainingJobDefinition' {..} =
+    Prelude.rnf hyperParameters
+      `Prelude.seq` Prelude.rnf trainingInputMode
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+
+instance Data.ToJSON TrainingJobDefinition where
+  toJSON TrainingJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HyperParameters" Data..=)
+              Prelude.<$> hyperParameters,
+            Prelude.Just
+              ("TrainingInputMode" Data..= trainingInputMode),
+            Prelude.Just
+              ("InputDataConfig" Data..= inputDataConfig),
+            Prelude.Just
+              ("OutputDataConfig" Data..= outputDataConfig),
+            Prelude.Just
+              ("ResourceConfig" Data..= resourceConfig),
+            Prelude.Just
+              ("StoppingCondition" Data..= stoppingCondition)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobEarlyStoppingType.hs b/gen/Amazonka/SageMaker/Types/TrainingJobEarlyStoppingType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobEarlyStoppingType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrainingJobEarlyStoppingType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobEarlyStoppingType
+  ( TrainingJobEarlyStoppingType
+      ( ..,
+        TrainingJobEarlyStoppingType_Auto,
+        TrainingJobEarlyStoppingType_Off
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrainingJobEarlyStoppingType = TrainingJobEarlyStoppingType'
+  { fromTrainingJobEarlyStoppingType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrainingJobEarlyStoppingType_Auto :: TrainingJobEarlyStoppingType
+pattern TrainingJobEarlyStoppingType_Auto = TrainingJobEarlyStoppingType' "Auto"
+
+pattern TrainingJobEarlyStoppingType_Off :: TrainingJobEarlyStoppingType
+pattern TrainingJobEarlyStoppingType_Off = TrainingJobEarlyStoppingType' "Off"
+
+{-# COMPLETE
+  TrainingJobEarlyStoppingType_Auto,
+  TrainingJobEarlyStoppingType_Off,
+  TrainingJobEarlyStoppingType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobSortByOptions.hs b/gen/Amazonka/SageMaker/Types/TrainingJobSortByOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobSortByOptions.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrainingJobSortByOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobSortByOptions
+  ( TrainingJobSortByOptions
+      ( ..,
+        TrainingJobSortByOptions_CreationTime,
+        TrainingJobSortByOptions_FinalObjectiveMetricValue,
+        TrainingJobSortByOptions_Name,
+        TrainingJobSortByOptions_Status
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrainingJobSortByOptions = TrainingJobSortByOptions'
+  { fromTrainingJobSortByOptions ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrainingJobSortByOptions_CreationTime :: TrainingJobSortByOptions
+pattern TrainingJobSortByOptions_CreationTime = TrainingJobSortByOptions' "CreationTime"
+
+pattern TrainingJobSortByOptions_FinalObjectiveMetricValue :: TrainingJobSortByOptions
+pattern TrainingJobSortByOptions_FinalObjectiveMetricValue = TrainingJobSortByOptions' "FinalObjectiveMetricValue"
+
+pattern TrainingJobSortByOptions_Name :: TrainingJobSortByOptions
+pattern TrainingJobSortByOptions_Name = TrainingJobSortByOptions' "Name"
+
+pattern TrainingJobSortByOptions_Status :: TrainingJobSortByOptions
+pattern TrainingJobSortByOptions_Status = TrainingJobSortByOptions' "Status"
+
+{-# COMPLETE
+  TrainingJobSortByOptions_CreationTime,
+  TrainingJobSortByOptions_FinalObjectiveMetricValue,
+  TrainingJobSortByOptions_Name,
+  TrainingJobSortByOptions_Status,
+  TrainingJobSortByOptions'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobStatus.hs b/gen/Amazonka/SageMaker/Types/TrainingJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrainingJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobStatus
+  ( TrainingJobStatus
+      ( ..,
+        TrainingJobStatus_Completed,
+        TrainingJobStatus_Failed,
+        TrainingJobStatus_InProgress,
+        TrainingJobStatus_Stopped,
+        TrainingJobStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrainingJobStatus = TrainingJobStatus'
+  { fromTrainingJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrainingJobStatus_Completed :: TrainingJobStatus
+pattern TrainingJobStatus_Completed = TrainingJobStatus' "Completed"
+
+pattern TrainingJobStatus_Failed :: TrainingJobStatus
+pattern TrainingJobStatus_Failed = TrainingJobStatus' "Failed"
+
+pattern TrainingJobStatus_InProgress :: TrainingJobStatus
+pattern TrainingJobStatus_InProgress = TrainingJobStatus' "InProgress"
+
+pattern TrainingJobStatus_Stopped :: TrainingJobStatus
+pattern TrainingJobStatus_Stopped = TrainingJobStatus' "Stopped"
+
+pattern TrainingJobStatus_Stopping :: TrainingJobStatus
+pattern TrainingJobStatus_Stopping = TrainingJobStatus' "Stopping"
+
+{-# COMPLETE
+  TrainingJobStatus_Completed,
+  TrainingJobStatus_Failed,
+  TrainingJobStatus_InProgress,
+  TrainingJobStatus_Stopped,
+  TrainingJobStatus_Stopping,
+  TrainingJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobStatusCounters.hs b/gen/Amazonka/SageMaker/Types/TrainingJobStatusCounters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobStatusCounters.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrainingJobStatusCounters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobStatusCounters 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
+
+-- | The numbers of training jobs launched by a hyperparameter tuning job,
+-- categorized by status.
+--
+-- /See:/ 'newTrainingJobStatusCounters' smart constructor.
+data TrainingJobStatusCounters = TrainingJobStatusCounters'
+  { -- | The number of completed training jobs launched by the hyperparameter
+    -- tuning job.
+    completed :: Prelude.Maybe Prelude.Natural,
+    -- | The number of in-progress training jobs launched by a hyperparameter
+    -- tuning job.
+    inProgress :: Prelude.Maybe Prelude.Natural,
+    -- | The number of training jobs that failed and can\'t be retried. A failed
+    -- training job can\'t be retried if it failed because a client error
+    -- occurred.
+    nonRetryableError :: Prelude.Maybe Prelude.Natural,
+    -- | The number of training jobs that failed, but can be retried. A failed
+    -- training job can be retried only if it failed because an internal
+    -- service error occurred.
+    retryableError :: Prelude.Maybe Prelude.Natural,
+    -- | The number of training jobs launched by a hyperparameter tuning job that
+    -- were manually stopped.
+    stopped :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrainingJobStatusCounters' 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:
+--
+-- 'completed', 'trainingJobStatusCounters_completed' - The number of completed training jobs launched by the hyperparameter
+-- tuning job.
+--
+-- 'inProgress', 'trainingJobStatusCounters_inProgress' - The number of in-progress training jobs launched by a hyperparameter
+-- tuning job.
+--
+-- 'nonRetryableError', 'trainingJobStatusCounters_nonRetryableError' - The number of training jobs that failed and can\'t be retried. A failed
+-- training job can\'t be retried if it failed because a client error
+-- occurred.
+--
+-- 'retryableError', 'trainingJobStatusCounters_retryableError' - The number of training jobs that failed, but can be retried. A failed
+-- training job can be retried only if it failed because an internal
+-- service error occurred.
+--
+-- 'stopped', 'trainingJobStatusCounters_stopped' - The number of training jobs launched by a hyperparameter tuning job that
+-- were manually stopped.
+newTrainingJobStatusCounters ::
+  TrainingJobStatusCounters
+newTrainingJobStatusCounters =
+  TrainingJobStatusCounters'
+    { completed =
+        Prelude.Nothing,
+      inProgress = Prelude.Nothing,
+      nonRetryableError = Prelude.Nothing,
+      retryableError = Prelude.Nothing,
+      stopped = Prelude.Nothing
+    }
+
+-- | The number of completed training jobs launched by the hyperparameter
+-- tuning job.
+trainingJobStatusCounters_completed :: Lens.Lens' TrainingJobStatusCounters (Prelude.Maybe Prelude.Natural)
+trainingJobStatusCounters_completed = Lens.lens (\TrainingJobStatusCounters' {completed} -> completed) (\s@TrainingJobStatusCounters' {} a -> s {completed = a} :: TrainingJobStatusCounters)
+
+-- | The number of in-progress training jobs launched by a hyperparameter
+-- tuning job.
+trainingJobStatusCounters_inProgress :: Lens.Lens' TrainingJobStatusCounters (Prelude.Maybe Prelude.Natural)
+trainingJobStatusCounters_inProgress = Lens.lens (\TrainingJobStatusCounters' {inProgress} -> inProgress) (\s@TrainingJobStatusCounters' {} a -> s {inProgress = a} :: TrainingJobStatusCounters)
+
+-- | The number of training jobs that failed and can\'t be retried. A failed
+-- training job can\'t be retried if it failed because a client error
+-- occurred.
+trainingJobStatusCounters_nonRetryableError :: Lens.Lens' TrainingJobStatusCounters (Prelude.Maybe Prelude.Natural)
+trainingJobStatusCounters_nonRetryableError = Lens.lens (\TrainingJobStatusCounters' {nonRetryableError} -> nonRetryableError) (\s@TrainingJobStatusCounters' {} a -> s {nonRetryableError = a} :: TrainingJobStatusCounters)
+
+-- | The number of training jobs that failed, but can be retried. A failed
+-- training job can be retried only if it failed because an internal
+-- service error occurred.
+trainingJobStatusCounters_retryableError :: Lens.Lens' TrainingJobStatusCounters (Prelude.Maybe Prelude.Natural)
+trainingJobStatusCounters_retryableError = Lens.lens (\TrainingJobStatusCounters' {retryableError} -> retryableError) (\s@TrainingJobStatusCounters' {} a -> s {retryableError = a} :: TrainingJobStatusCounters)
+
+-- | The number of training jobs launched by a hyperparameter tuning job that
+-- were manually stopped.
+trainingJobStatusCounters_stopped :: Lens.Lens' TrainingJobStatusCounters (Prelude.Maybe Prelude.Natural)
+trainingJobStatusCounters_stopped = Lens.lens (\TrainingJobStatusCounters' {stopped} -> stopped) (\s@TrainingJobStatusCounters' {} a -> s {stopped = a} :: TrainingJobStatusCounters)
+
+instance Data.FromJSON TrainingJobStatusCounters where
+  parseJSON =
+    Data.withObject
+      "TrainingJobStatusCounters"
+      ( \x ->
+          TrainingJobStatusCounters'
+            Prelude.<$> (x Data..:? "Completed")
+            Prelude.<*> (x Data..:? "InProgress")
+            Prelude.<*> (x Data..:? "NonRetryableError")
+            Prelude.<*> (x Data..:? "RetryableError")
+            Prelude.<*> (x Data..:? "Stopped")
+      )
+
+instance Prelude.Hashable TrainingJobStatusCounters where
+  hashWithSalt _salt TrainingJobStatusCounters' {..} =
+    _salt
+      `Prelude.hashWithSalt` completed
+      `Prelude.hashWithSalt` inProgress
+      `Prelude.hashWithSalt` nonRetryableError
+      `Prelude.hashWithSalt` retryableError
+      `Prelude.hashWithSalt` stopped
+
+instance Prelude.NFData TrainingJobStatusCounters where
+  rnf TrainingJobStatusCounters' {..} =
+    Prelude.rnf completed
+      `Prelude.seq` Prelude.rnf inProgress
+      `Prelude.seq` Prelude.rnf nonRetryableError
+      `Prelude.seq` Prelude.rnf retryableError
+      `Prelude.seq` Prelude.rnf stopped
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobStepMetadata.hs b/gen/Amazonka/SageMaker/Types/TrainingJobStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobStepMetadata.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrainingJobStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobStepMetadata 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
+
+-- | Metadata for a training job step.
+--
+-- /See:/ 'newTrainingJobStepMetadata' smart constructor.
+data TrainingJobStepMetadata = TrainingJobStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the training job that was run by this
+    -- step execution.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrainingJobStepMetadata' 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:
+--
+-- 'arn', 'trainingJobStepMetadata_arn' - The Amazon Resource Name (ARN) of the training job that was run by this
+-- step execution.
+newTrainingJobStepMetadata ::
+  TrainingJobStepMetadata
+newTrainingJobStepMetadata =
+  TrainingJobStepMetadata' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the training job that was run by this
+-- step execution.
+trainingJobStepMetadata_arn :: Lens.Lens' TrainingJobStepMetadata (Prelude.Maybe Prelude.Text)
+trainingJobStepMetadata_arn = Lens.lens (\TrainingJobStepMetadata' {arn} -> arn) (\s@TrainingJobStepMetadata' {} a -> s {arn = a} :: TrainingJobStepMetadata)
+
+instance Data.FromJSON TrainingJobStepMetadata where
+  parseJSON =
+    Data.withObject
+      "TrainingJobStepMetadata"
+      ( \x ->
+          TrainingJobStepMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable TrainingJobStepMetadata where
+  hashWithSalt _salt TrainingJobStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData TrainingJobStepMetadata where
+  rnf TrainingJobStepMetadata' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/TrainingJobSummary.hs b/gen/Amazonka/SageMaker/Types/TrainingJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingJobSummary.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrainingJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingJobSummary 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 Amazonka.SageMaker.Types.TrainingJobStatus
+import Amazonka.SageMaker.Types.WarmPoolStatus
+
+-- | Provides summary information about a training job.
+--
+-- /See:/ 'newTrainingJobSummary' smart constructor.
+data TrainingJobSummary = TrainingJobSummary'
+  { -- | Timestamp when the training job was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | A timestamp that shows when the training job ended. This field is set
+    -- only if the training job has one of the terminal statuses (@Completed@,
+    -- @Failed@, or @Stopped@).
+    trainingEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The status of the warm pool associated with the training job.
+    warmPoolStatus :: Prelude.Maybe WarmPoolStatus,
+    -- | The name of the training job that you want a summary for.
+    trainingJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the training job.
+    trainingJobArn :: Prelude.Text,
+    -- | A timestamp that shows when the training job was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the training job.
+    trainingJobStatus :: TrainingJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrainingJobSummary' 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:
+--
+-- 'lastModifiedTime', 'trainingJobSummary_lastModifiedTime' - Timestamp when the training job was last modified.
+--
+-- 'trainingEndTime', 'trainingJobSummary_trainingEndTime' - A timestamp that shows when the training job ended. This field is set
+-- only if the training job has one of the terminal statuses (@Completed@,
+-- @Failed@, or @Stopped@).
+--
+-- 'warmPoolStatus', 'trainingJobSummary_warmPoolStatus' - The status of the warm pool associated with the training job.
+--
+-- 'trainingJobName', 'trainingJobSummary_trainingJobName' - The name of the training job that you want a summary for.
+--
+-- 'trainingJobArn', 'trainingJobSummary_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
+--
+-- 'creationTime', 'trainingJobSummary_creationTime' - A timestamp that shows when the training job was created.
+--
+-- 'trainingJobStatus', 'trainingJobSummary_trainingJobStatus' - The status of the training job.
+newTrainingJobSummary ::
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  -- | 'trainingJobArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'trainingJobStatus'
+  TrainingJobStatus ->
+  TrainingJobSummary
+newTrainingJobSummary
+  pTrainingJobName_
+  pTrainingJobArn_
+  pCreationTime_
+  pTrainingJobStatus_ =
+    TrainingJobSummary'
+      { lastModifiedTime =
+          Prelude.Nothing,
+        trainingEndTime = Prelude.Nothing,
+        warmPoolStatus = Prelude.Nothing,
+        trainingJobName = pTrainingJobName_,
+        trainingJobArn = pTrainingJobArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        trainingJobStatus = pTrainingJobStatus_
+      }
+
+-- | Timestamp when the training job was last modified.
+trainingJobSummary_lastModifiedTime :: Lens.Lens' TrainingJobSummary (Prelude.Maybe Prelude.UTCTime)
+trainingJobSummary_lastModifiedTime = Lens.lens (\TrainingJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@TrainingJobSummary' {} a -> s {lastModifiedTime = a} :: TrainingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A timestamp that shows when the training job ended. This field is set
+-- only if the training job has one of the terminal statuses (@Completed@,
+-- @Failed@, or @Stopped@).
+trainingJobSummary_trainingEndTime :: Lens.Lens' TrainingJobSummary (Prelude.Maybe Prelude.UTCTime)
+trainingJobSummary_trainingEndTime = Lens.lens (\TrainingJobSummary' {trainingEndTime} -> trainingEndTime) (\s@TrainingJobSummary' {} a -> s {trainingEndTime = a} :: TrainingJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the warm pool associated with the training job.
+trainingJobSummary_warmPoolStatus :: Lens.Lens' TrainingJobSummary (Prelude.Maybe WarmPoolStatus)
+trainingJobSummary_warmPoolStatus = Lens.lens (\TrainingJobSummary' {warmPoolStatus} -> warmPoolStatus) (\s@TrainingJobSummary' {} a -> s {warmPoolStatus = a} :: TrainingJobSummary)
+
+-- | The name of the training job that you want a summary for.
+trainingJobSummary_trainingJobName :: Lens.Lens' TrainingJobSummary Prelude.Text
+trainingJobSummary_trainingJobName = Lens.lens (\TrainingJobSummary' {trainingJobName} -> trainingJobName) (\s@TrainingJobSummary' {} a -> s {trainingJobName = a} :: TrainingJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the training job.
+trainingJobSummary_trainingJobArn :: Lens.Lens' TrainingJobSummary Prelude.Text
+trainingJobSummary_trainingJobArn = Lens.lens (\TrainingJobSummary' {trainingJobArn} -> trainingJobArn) (\s@TrainingJobSummary' {} a -> s {trainingJobArn = a} :: TrainingJobSummary)
+
+-- | A timestamp that shows when the training job was created.
+trainingJobSummary_creationTime :: Lens.Lens' TrainingJobSummary Prelude.UTCTime
+trainingJobSummary_creationTime = Lens.lens (\TrainingJobSummary' {creationTime} -> creationTime) (\s@TrainingJobSummary' {} a -> s {creationTime = a} :: TrainingJobSummary) Prelude.. Data._Time
+
+-- | The status of the training job.
+trainingJobSummary_trainingJobStatus :: Lens.Lens' TrainingJobSummary TrainingJobStatus
+trainingJobSummary_trainingJobStatus = Lens.lens (\TrainingJobSummary' {trainingJobStatus} -> trainingJobStatus) (\s@TrainingJobSummary' {} a -> s {trainingJobStatus = a} :: TrainingJobSummary)
+
+instance Data.FromJSON TrainingJobSummary where
+  parseJSON =
+    Data.withObject
+      "TrainingJobSummary"
+      ( \x ->
+          TrainingJobSummary'
+            Prelude.<$> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "TrainingEndTime")
+            Prelude.<*> (x Data..:? "WarmPoolStatus")
+            Prelude.<*> (x Data..: "TrainingJobName")
+            Prelude.<*> (x Data..: "TrainingJobArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "TrainingJobStatus")
+      )
+
+instance Prelude.Hashable TrainingJobSummary where
+  hashWithSalt _salt TrainingJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` trainingEndTime
+      `Prelude.hashWithSalt` warmPoolStatus
+      `Prelude.hashWithSalt` trainingJobName
+      `Prelude.hashWithSalt` trainingJobArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` trainingJobStatus
+
+instance Prelude.NFData TrainingJobSummary where
+  rnf TrainingJobSummary' {..} =
+    Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf trainingEndTime
+      `Prelude.seq` Prelude.rnf warmPoolStatus
+      `Prelude.seq` Prelude.rnf trainingJobName
+      `Prelude.seq` Prelude.rnf trainingJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf trainingJobStatus
diff --git a/gen/Amazonka/SageMaker/Types/TrainingSpecification.hs b/gen/Amazonka/SageMaker/Types/TrainingSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrainingSpecification.hs
@@ -0,0 +1,229 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrainingSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrainingSpecification 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 Amazonka.SageMaker.Types.ChannelSpecification
+import Amazonka.SageMaker.Types.HyperParameterSpecification
+import Amazonka.SageMaker.Types.HyperParameterTuningJobObjective
+import Amazonka.SageMaker.Types.MetricDefinition
+import Amazonka.SageMaker.Types.TrainingInstanceType
+
+-- | Defines how the algorithm is used for a training job.
+--
+-- /See:/ 'newTrainingSpecification' smart constructor.
+data TrainingSpecification = TrainingSpecification'
+  { -- | A list of @MetricDefinition@ objects, which are used for parsing metrics
+    -- generated by the algorithm.
+    metricDefinitions :: Prelude.Maybe [MetricDefinition],
+    -- | A list of the @HyperParameterSpecification@ objects, that define the
+    -- supported hyperparameters. This is required if the algorithm supports
+    -- automatic model tuning.>
+    supportedHyperParameters :: Prelude.Maybe [HyperParameterSpecification],
+    -- | A list of the metrics that the algorithm emits that can be used as the
+    -- objective metric in a hyperparameter tuning job.
+    supportedTuningJobObjectiveMetrics :: Prelude.Maybe [HyperParameterTuningJobObjective],
+    -- | Indicates whether the algorithm supports distributed training. If set to
+    -- false, buyers can\'t request more than one instance during training.
+    supportsDistributedTraining :: Prelude.Maybe Prelude.Bool,
+    -- | An MD5 hash of the training algorithm that identifies the Docker image
+    -- used for training.
+    trainingImageDigest :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon ECR registry path of the Docker image that contains the
+    -- training algorithm.
+    trainingImage :: Prelude.Text,
+    -- | A list of the instance types that this algorithm can use for training.
+    supportedTrainingInstanceTypes :: [TrainingInstanceType],
+    -- | A list of @ChannelSpecification@ objects, which specify the input
+    -- sources to be used by the algorithm.
+    trainingChannels :: Prelude.NonEmpty ChannelSpecification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrainingSpecification' 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:
+--
+-- 'metricDefinitions', 'trainingSpecification_metricDefinitions' - A list of @MetricDefinition@ objects, which are used for parsing metrics
+-- generated by the algorithm.
+--
+-- 'supportedHyperParameters', 'trainingSpecification_supportedHyperParameters' - A list of the @HyperParameterSpecification@ objects, that define the
+-- supported hyperparameters. This is required if the algorithm supports
+-- automatic model tuning.>
+--
+-- 'supportedTuningJobObjectiveMetrics', 'trainingSpecification_supportedTuningJobObjectiveMetrics' - A list of the metrics that the algorithm emits that can be used as the
+-- objective metric in a hyperparameter tuning job.
+--
+-- 'supportsDistributedTraining', 'trainingSpecification_supportsDistributedTraining' - Indicates whether the algorithm supports distributed training. If set to
+-- false, buyers can\'t request more than one instance during training.
+--
+-- 'trainingImageDigest', 'trainingSpecification_trainingImageDigest' - An MD5 hash of the training algorithm that identifies the Docker image
+-- used for training.
+--
+-- 'trainingImage', 'trainingSpecification_trainingImage' - The Amazon ECR registry path of the Docker image that contains the
+-- training algorithm.
+--
+-- 'supportedTrainingInstanceTypes', 'trainingSpecification_supportedTrainingInstanceTypes' - A list of the instance types that this algorithm can use for training.
+--
+-- 'trainingChannels', 'trainingSpecification_trainingChannels' - A list of @ChannelSpecification@ objects, which specify the input
+-- sources to be used by the algorithm.
+newTrainingSpecification ::
+  -- | 'trainingImage'
+  Prelude.Text ->
+  -- | 'trainingChannels'
+  Prelude.NonEmpty ChannelSpecification ->
+  TrainingSpecification
+newTrainingSpecification
+  pTrainingImage_
+  pTrainingChannels_ =
+    TrainingSpecification'
+      { metricDefinitions =
+          Prelude.Nothing,
+        supportedHyperParameters = Prelude.Nothing,
+        supportedTuningJobObjectiveMetrics = Prelude.Nothing,
+        supportsDistributedTraining = Prelude.Nothing,
+        trainingImageDigest = Prelude.Nothing,
+        trainingImage = pTrainingImage_,
+        supportedTrainingInstanceTypes = Prelude.mempty,
+        trainingChannels =
+          Lens.coerced Lens.# pTrainingChannels_
+      }
+
+-- | A list of @MetricDefinition@ objects, which are used for parsing metrics
+-- generated by the algorithm.
+trainingSpecification_metricDefinitions :: Lens.Lens' TrainingSpecification (Prelude.Maybe [MetricDefinition])
+trainingSpecification_metricDefinitions = Lens.lens (\TrainingSpecification' {metricDefinitions} -> metricDefinitions) (\s@TrainingSpecification' {} a -> s {metricDefinitions = a} :: TrainingSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the @HyperParameterSpecification@ objects, that define the
+-- supported hyperparameters. This is required if the algorithm supports
+-- automatic model tuning.>
+trainingSpecification_supportedHyperParameters :: Lens.Lens' TrainingSpecification (Prelude.Maybe [HyperParameterSpecification])
+trainingSpecification_supportedHyperParameters = Lens.lens (\TrainingSpecification' {supportedHyperParameters} -> supportedHyperParameters) (\s@TrainingSpecification' {} a -> s {supportedHyperParameters = a} :: TrainingSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of the metrics that the algorithm emits that can be used as the
+-- objective metric in a hyperparameter tuning job.
+trainingSpecification_supportedTuningJobObjectiveMetrics :: Lens.Lens' TrainingSpecification (Prelude.Maybe [HyperParameterTuningJobObjective])
+trainingSpecification_supportedTuningJobObjectiveMetrics = Lens.lens (\TrainingSpecification' {supportedTuningJobObjectiveMetrics} -> supportedTuningJobObjectiveMetrics) (\s@TrainingSpecification' {} a -> s {supportedTuningJobObjectiveMetrics = a} :: TrainingSpecification) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates whether the algorithm supports distributed training. If set to
+-- false, buyers can\'t request more than one instance during training.
+trainingSpecification_supportsDistributedTraining :: Lens.Lens' TrainingSpecification (Prelude.Maybe Prelude.Bool)
+trainingSpecification_supportsDistributedTraining = Lens.lens (\TrainingSpecification' {supportsDistributedTraining} -> supportsDistributedTraining) (\s@TrainingSpecification' {} a -> s {supportsDistributedTraining = a} :: TrainingSpecification)
+
+-- | An MD5 hash of the training algorithm that identifies the Docker image
+-- used for training.
+trainingSpecification_trainingImageDigest :: Lens.Lens' TrainingSpecification (Prelude.Maybe Prelude.Text)
+trainingSpecification_trainingImageDigest = Lens.lens (\TrainingSpecification' {trainingImageDigest} -> trainingImageDigest) (\s@TrainingSpecification' {} a -> s {trainingImageDigest = a} :: TrainingSpecification)
+
+-- | The Amazon ECR registry path of the Docker image that contains the
+-- training algorithm.
+trainingSpecification_trainingImage :: Lens.Lens' TrainingSpecification Prelude.Text
+trainingSpecification_trainingImage = Lens.lens (\TrainingSpecification' {trainingImage} -> trainingImage) (\s@TrainingSpecification' {} a -> s {trainingImage = a} :: TrainingSpecification)
+
+-- | A list of the instance types that this algorithm can use for training.
+trainingSpecification_supportedTrainingInstanceTypes :: Lens.Lens' TrainingSpecification [TrainingInstanceType]
+trainingSpecification_supportedTrainingInstanceTypes = Lens.lens (\TrainingSpecification' {supportedTrainingInstanceTypes} -> supportedTrainingInstanceTypes) (\s@TrainingSpecification' {} a -> s {supportedTrainingInstanceTypes = a} :: TrainingSpecification) Prelude.. Lens.coerced
+
+-- | A list of @ChannelSpecification@ objects, which specify the input
+-- sources to be used by the algorithm.
+trainingSpecification_trainingChannels :: Lens.Lens' TrainingSpecification (Prelude.NonEmpty ChannelSpecification)
+trainingSpecification_trainingChannels = Lens.lens (\TrainingSpecification' {trainingChannels} -> trainingChannels) (\s@TrainingSpecification' {} a -> s {trainingChannels = a} :: TrainingSpecification) Prelude.. Lens.coerced
+
+instance Data.FromJSON TrainingSpecification where
+  parseJSON =
+    Data.withObject
+      "TrainingSpecification"
+      ( \x ->
+          TrainingSpecification'
+            Prelude.<$> ( x
+                            Data..:? "MetricDefinitions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedHyperParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedTuningJobObjectiveMetrics"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SupportsDistributedTraining")
+            Prelude.<*> (x Data..:? "TrainingImageDigest")
+            Prelude.<*> (x Data..: "TrainingImage")
+            Prelude.<*> ( x
+                            Data..:? "SupportedTrainingInstanceTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "TrainingChannels")
+      )
+
+instance Prelude.Hashable TrainingSpecification where
+  hashWithSalt _salt TrainingSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` metricDefinitions
+      `Prelude.hashWithSalt` supportedHyperParameters
+      `Prelude.hashWithSalt` supportedTuningJobObjectiveMetrics
+      `Prelude.hashWithSalt` supportsDistributedTraining
+      `Prelude.hashWithSalt` trainingImageDigest
+      `Prelude.hashWithSalt` trainingImage
+      `Prelude.hashWithSalt` supportedTrainingInstanceTypes
+      `Prelude.hashWithSalt` trainingChannels
+
+instance Prelude.NFData TrainingSpecification where
+  rnf TrainingSpecification' {..} =
+    Prelude.rnf metricDefinitions
+      `Prelude.seq` Prelude.rnf supportedHyperParameters
+      `Prelude.seq` Prelude.rnf supportedTuningJobObjectiveMetrics
+      `Prelude.seq` Prelude.rnf supportsDistributedTraining
+      `Prelude.seq` Prelude.rnf trainingImageDigest
+      `Prelude.seq` Prelude.rnf trainingImage
+      `Prelude.seq` Prelude.rnf supportedTrainingInstanceTypes
+      `Prelude.seq` Prelude.rnf trainingChannels
+
+instance Data.ToJSON TrainingSpecification where
+  toJSON TrainingSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MetricDefinitions" Data..=)
+              Prelude.<$> metricDefinitions,
+            ("SupportedHyperParameters" Data..=)
+              Prelude.<$> supportedHyperParameters,
+            ("SupportedTuningJobObjectiveMetrics" Data..=)
+              Prelude.<$> supportedTuningJobObjectiveMetrics,
+            ("SupportsDistributedTraining" Data..=)
+              Prelude.<$> supportsDistributedTraining,
+            ("TrainingImageDigest" Data..=)
+              Prelude.<$> trainingImageDigest,
+            Prelude.Just ("TrainingImage" Data..= trainingImage),
+            Prelude.Just
+              ( "SupportedTrainingInstanceTypes"
+                  Data..= supportedTrainingInstanceTypes
+              ),
+            Prelude.Just
+              ("TrainingChannels" Data..= trainingChannels)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TransformDataSource.hs b/gen/Amazonka/SageMaker/Types/TransformDataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformDataSource.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformDataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformDataSource 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 Amazonka.SageMaker.Types.TransformS3DataSource
+
+-- | Describes the location of the channel data.
+--
+-- /See:/ 'newTransformDataSource' smart constructor.
+data TransformDataSource = TransformDataSource'
+  { -- | The S3 location of the data source that is associated with a channel.
+    s3DataSource :: TransformS3DataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformDataSource' 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:
+--
+-- 's3DataSource', 'transformDataSource_s3DataSource' - The S3 location of the data source that is associated with a channel.
+newTransformDataSource ::
+  -- | 's3DataSource'
+  TransformS3DataSource ->
+  TransformDataSource
+newTransformDataSource pS3DataSource_ =
+  TransformDataSource' {s3DataSource = pS3DataSource_}
+
+-- | The S3 location of the data source that is associated with a channel.
+transformDataSource_s3DataSource :: Lens.Lens' TransformDataSource TransformS3DataSource
+transformDataSource_s3DataSource = Lens.lens (\TransformDataSource' {s3DataSource} -> s3DataSource) (\s@TransformDataSource' {} a -> s {s3DataSource = a} :: TransformDataSource)
+
+instance Data.FromJSON TransformDataSource where
+  parseJSON =
+    Data.withObject
+      "TransformDataSource"
+      ( \x ->
+          TransformDataSource'
+            Prelude.<$> (x Data..: "S3DataSource")
+      )
+
+instance Prelude.Hashable TransformDataSource where
+  hashWithSalt _salt TransformDataSource' {..} =
+    _salt `Prelude.hashWithSalt` s3DataSource
+
+instance Prelude.NFData TransformDataSource where
+  rnf TransformDataSource' {..} =
+    Prelude.rnf s3DataSource
+
+instance Data.ToJSON TransformDataSource where
+  toJSON TransformDataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("S3DataSource" Data..= s3DataSource)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TransformInput.hs b/gen/Amazonka/SageMaker/Types/TransformInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformInput.hs
@@ -0,0 +1,237 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformInput 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 Amazonka.SageMaker.Types.CompressionType
+import Amazonka.SageMaker.Types.SplitType
+import Amazonka.SageMaker.Types.TransformDataSource
+
+-- | Describes the input source of a transform job and the way the transform
+-- job consumes it.
+--
+-- /See:/ 'newTransformInput' smart constructor.
+data TransformInput = TransformInput'
+  { -- | If your transform data is compressed, specify the compression type.
+    -- Amazon SageMaker automatically decompresses the data for the transform
+    -- job accordingly. The default value is @None@.
+    compressionType :: Prelude.Maybe CompressionType,
+    -- | The multipurpose internet mail extension (MIME) type of the data. Amazon
+    -- SageMaker uses the MIME type with each http call to transfer data to the
+    -- transform job.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | The method to use to split the transform job\'s data files into smaller
+    -- batches. Splitting is necessary when the total size of each object is
+    -- too large to fit in a single request. You can also use data splitting to
+    -- improve performance by processing multiple concurrent mini-batches. The
+    -- default value for @SplitType@ is @None@, which indicates that input data
+    -- files are not split, and request payloads contain the entire contents of
+    -- an input object. Set the value of this parameter to @Line@ to split
+    -- records on a newline character boundary. @SplitType@ also supports a
+    -- number of record-oriented binary data formats. Currently, the supported
+    -- record formats are:
+    --
+    -- -   RecordIO
+    --
+    -- -   TFRecord
+    --
+    -- When splitting is enabled, the size of a mini-batch depends on the
+    -- values of the @BatchStrategy@ and @MaxPayloadInMB@ parameters. When the
+    -- value of @BatchStrategy@ is @MultiRecord@, Amazon SageMaker sends the
+    -- maximum number of records in each request, up to the @MaxPayloadInMB@
+    -- limit. If the value of @BatchStrategy@ is @SingleRecord@, Amazon
+    -- SageMaker sends individual records in each request.
+    --
+    -- Some data formats represent a record as a binary payload wrapped with
+    -- extra padding bytes. When splitting is applied to a binary data format,
+    -- padding is removed if the value of @BatchStrategy@ is set to
+    -- @SingleRecord@. Padding is not removed if the value of @BatchStrategy@
+    -- is set to @MultiRecord@.
+    --
+    -- For more information about @RecordIO@, see
+    -- <https://mxnet.apache.org/api/faq/recordio Create a Dataset Using RecordIO>
+    -- in the MXNet documentation. For more information about @TFRecord@, see
+    -- <https://www.tensorflow.org/guide/data#consuming_tfrecord_data Consuming TFRecord data>
+    -- in the TensorFlow documentation.
+    splitType :: Prelude.Maybe SplitType,
+    -- | Describes the location of the channel data, which is, the S3 location of
+    -- the input data that the model can consume.
+    dataSource :: TransformDataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformInput' 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:
+--
+-- 'compressionType', 'transformInput_compressionType' - If your transform data is compressed, specify the compression type.
+-- Amazon SageMaker automatically decompresses the data for the transform
+-- job accordingly. The default value is @None@.
+--
+-- 'contentType', 'transformInput_contentType' - The multipurpose internet mail extension (MIME) type of the data. Amazon
+-- SageMaker uses the MIME type with each http call to transfer data to the
+-- transform job.
+--
+-- 'splitType', 'transformInput_splitType' - The method to use to split the transform job\'s data files into smaller
+-- batches. Splitting is necessary when the total size of each object is
+-- too large to fit in a single request. You can also use data splitting to
+-- improve performance by processing multiple concurrent mini-batches. The
+-- default value for @SplitType@ is @None@, which indicates that input data
+-- files are not split, and request payloads contain the entire contents of
+-- an input object. Set the value of this parameter to @Line@ to split
+-- records on a newline character boundary. @SplitType@ also supports a
+-- number of record-oriented binary data formats. Currently, the supported
+-- record formats are:
+--
+-- -   RecordIO
+--
+-- -   TFRecord
+--
+-- When splitting is enabled, the size of a mini-batch depends on the
+-- values of the @BatchStrategy@ and @MaxPayloadInMB@ parameters. When the
+-- value of @BatchStrategy@ is @MultiRecord@, Amazon SageMaker sends the
+-- maximum number of records in each request, up to the @MaxPayloadInMB@
+-- limit. If the value of @BatchStrategy@ is @SingleRecord@, Amazon
+-- SageMaker sends individual records in each request.
+--
+-- Some data formats represent a record as a binary payload wrapped with
+-- extra padding bytes. When splitting is applied to a binary data format,
+-- padding is removed if the value of @BatchStrategy@ is set to
+-- @SingleRecord@. Padding is not removed if the value of @BatchStrategy@
+-- is set to @MultiRecord@.
+--
+-- For more information about @RecordIO@, see
+-- <https://mxnet.apache.org/api/faq/recordio Create a Dataset Using RecordIO>
+-- in the MXNet documentation. For more information about @TFRecord@, see
+-- <https://www.tensorflow.org/guide/data#consuming_tfrecord_data Consuming TFRecord data>
+-- in the TensorFlow documentation.
+--
+-- 'dataSource', 'transformInput_dataSource' - Describes the location of the channel data, which is, the S3 location of
+-- the input data that the model can consume.
+newTransformInput ::
+  -- | 'dataSource'
+  TransformDataSource ->
+  TransformInput
+newTransformInput pDataSource_ =
+  TransformInput'
+    { compressionType = Prelude.Nothing,
+      contentType = Prelude.Nothing,
+      splitType = Prelude.Nothing,
+      dataSource = pDataSource_
+    }
+
+-- | If your transform data is compressed, specify the compression type.
+-- Amazon SageMaker automatically decompresses the data for the transform
+-- job accordingly. The default value is @None@.
+transformInput_compressionType :: Lens.Lens' TransformInput (Prelude.Maybe CompressionType)
+transformInput_compressionType = Lens.lens (\TransformInput' {compressionType} -> compressionType) (\s@TransformInput' {} a -> s {compressionType = a} :: TransformInput)
+
+-- | The multipurpose internet mail extension (MIME) type of the data. Amazon
+-- SageMaker uses the MIME type with each http call to transfer data to the
+-- transform job.
+transformInput_contentType :: Lens.Lens' TransformInput (Prelude.Maybe Prelude.Text)
+transformInput_contentType = Lens.lens (\TransformInput' {contentType} -> contentType) (\s@TransformInput' {} a -> s {contentType = a} :: TransformInput)
+
+-- | The method to use to split the transform job\'s data files into smaller
+-- batches. Splitting is necessary when the total size of each object is
+-- too large to fit in a single request. You can also use data splitting to
+-- improve performance by processing multiple concurrent mini-batches. The
+-- default value for @SplitType@ is @None@, which indicates that input data
+-- files are not split, and request payloads contain the entire contents of
+-- an input object. Set the value of this parameter to @Line@ to split
+-- records on a newline character boundary. @SplitType@ also supports a
+-- number of record-oriented binary data formats. Currently, the supported
+-- record formats are:
+--
+-- -   RecordIO
+--
+-- -   TFRecord
+--
+-- When splitting is enabled, the size of a mini-batch depends on the
+-- values of the @BatchStrategy@ and @MaxPayloadInMB@ parameters. When the
+-- value of @BatchStrategy@ is @MultiRecord@, Amazon SageMaker sends the
+-- maximum number of records in each request, up to the @MaxPayloadInMB@
+-- limit. If the value of @BatchStrategy@ is @SingleRecord@, Amazon
+-- SageMaker sends individual records in each request.
+--
+-- Some data formats represent a record as a binary payload wrapped with
+-- extra padding bytes. When splitting is applied to a binary data format,
+-- padding is removed if the value of @BatchStrategy@ is set to
+-- @SingleRecord@. Padding is not removed if the value of @BatchStrategy@
+-- is set to @MultiRecord@.
+--
+-- For more information about @RecordIO@, see
+-- <https://mxnet.apache.org/api/faq/recordio Create a Dataset Using RecordIO>
+-- in the MXNet documentation. For more information about @TFRecord@, see
+-- <https://www.tensorflow.org/guide/data#consuming_tfrecord_data Consuming TFRecord data>
+-- in the TensorFlow documentation.
+transformInput_splitType :: Lens.Lens' TransformInput (Prelude.Maybe SplitType)
+transformInput_splitType = Lens.lens (\TransformInput' {splitType} -> splitType) (\s@TransformInput' {} a -> s {splitType = a} :: TransformInput)
+
+-- | Describes the location of the channel data, which is, the S3 location of
+-- the input data that the model can consume.
+transformInput_dataSource :: Lens.Lens' TransformInput TransformDataSource
+transformInput_dataSource = Lens.lens (\TransformInput' {dataSource} -> dataSource) (\s@TransformInput' {} a -> s {dataSource = a} :: TransformInput)
+
+instance Data.FromJSON TransformInput where
+  parseJSON =
+    Data.withObject
+      "TransformInput"
+      ( \x ->
+          TransformInput'
+            Prelude.<$> (x Data..:? "CompressionType")
+            Prelude.<*> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..:? "SplitType")
+            Prelude.<*> (x Data..: "DataSource")
+      )
+
+instance Prelude.Hashable TransformInput where
+  hashWithSalt _salt TransformInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` compressionType
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` splitType
+      `Prelude.hashWithSalt` dataSource
+
+instance Prelude.NFData TransformInput where
+  rnf TransformInput' {..} =
+    Prelude.rnf compressionType
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf splitType
+      `Prelude.seq` Prelude.rnf dataSource
+
+instance Data.ToJSON TransformInput where
+  toJSON TransformInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CompressionType" Data..=)
+              Prelude.<$> compressionType,
+            ("ContentType" Data..=) Prelude.<$> contentType,
+            ("SplitType" Data..=) Prelude.<$> splitType,
+            Prelude.Just ("DataSource" Data..= dataSource)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TransformInstanceType.hs b/gen/Amazonka/SageMaker/Types/TransformInstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformInstanceType.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TransformInstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformInstanceType
+  ( TransformInstanceType
+      ( ..,
+        TransformInstanceType_Ml_c4_2xlarge,
+        TransformInstanceType_Ml_c4_4xlarge,
+        TransformInstanceType_Ml_c4_8xlarge,
+        TransformInstanceType_Ml_c4_xlarge,
+        TransformInstanceType_Ml_c5_18xlarge,
+        TransformInstanceType_Ml_c5_2xlarge,
+        TransformInstanceType_Ml_c5_4xlarge,
+        TransformInstanceType_Ml_c5_9xlarge,
+        TransformInstanceType_Ml_c5_xlarge,
+        TransformInstanceType_Ml_g4dn_12xlarge,
+        TransformInstanceType_Ml_g4dn_16xlarge,
+        TransformInstanceType_Ml_g4dn_2xlarge,
+        TransformInstanceType_Ml_g4dn_4xlarge,
+        TransformInstanceType_Ml_g4dn_8xlarge,
+        TransformInstanceType_Ml_g4dn_xlarge,
+        TransformInstanceType_Ml_m4_10xlarge,
+        TransformInstanceType_Ml_m4_16xlarge,
+        TransformInstanceType_Ml_m4_2xlarge,
+        TransformInstanceType_Ml_m4_4xlarge,
+        TransformInstanceType_Ml_m4_xlarge,
+        TransformInstanceType_Ml_m5_12xlarge,
+        TransformInstanceType_Ml_m5_24xlarge,
+        TransformInstanceType_Ml_m5_2xlarge,
+        TransformInstanceType_Ml_m5_4xlarge,
+        TransformInstanceType_Ml_m5_large,
+        TransformInstanceType_Ml_m5_xlarge,
+        TransformInstanceType_Ml_p2_16xlarge,
+        TransformInstanceType_Ml_p2_8xlarge,
+        TransformInstanceType_Ml_p2_xlarge,
+        TransformInstanceType_Ml_p3_16xlarge,
+        TransformInstanceType_Ml_p3_2xlarge,
+        TransformInstanceType_Ml_p3_8xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TransformInstanceType = TransformInstanceType'
+  { fromTransformInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TransformInstanceType_Ml_c4_2xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c4_2xlarge = TransformInstanceType' "ml.c4.2xlarge"
+
+pattern TransformInstanceType_Ml_c4_4xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c4_4xlarge = TransformInstanceType' "ml.c4.4xlarge"
+
+pattern TransformInstanceType_Ml_c4_8xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c4_8xlarge = TransformInstanceType' "ml.c4.8xlarge"
+
+pattern TransformInstanceType_Ml_c4_xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c4_xlarge = TransformInstanceType' "ml.c4.xlarge"
+
+pattern TransformInstanceType_Ml_c5_18xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c5_18xlarge = TransformInstanceType' "ml.c5.18xlarge"
+
+pattern TransformInstanceType_Ml_c5_2xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c5_2xlarge = TransformInstanceType' "ml.c5.2xlarge"
+
+pattern TransformInstanceType_Ml_c5_4xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c5_4xlarge = TransformInstanceType' "ml.c5.4xlarge"
+
+pattern TransformInstanceType_Ml_c5_9xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c5_9xlarge = TransformInstanceType' "ml.c5.9xlarge"
+
+pattern TransformInstanceType_Ml_c5_xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_c5_xlarge = TransformInstanceType' "ml.c5.xlarge"
+
+pattern TransformInstanceType_Ml_g4dn_12xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_g4dn_12xlarge = TransformInstanceType' "ml.g4dn.12xlarge"
+
+pattern TransformInstanceType_Ml_g4dn_16xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_g4dn_16xlarge = TransformInstanceType' "ml.g4dn.16xlarge"
+
+pattern TransformInstanceType_Ml_g4dn_2xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_g4dn_2xlarge = TransformInstanceType' "ml.g4dn.2xlarge"
+
+pattern TransformInstanceType_Ml_g4dn_4xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_g4dn_4xlarge = TransformInstanceType' "ml.g4dn.4xlarge"
+
+pattern TransformInstanceType_Ml_g4dn_8xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_g4dn_8xlarge = TransformInstanceType' "ml.g4dn.8xlarge"
+
+pattern TransformInstanceType_Ml_g4dn_xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_g4dn_xlarge = TransformInstanceType' "ml.g4dn.xlarge"
+
+pattern TransformInstanceType_Ml_m4_10xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m4_10xlarge = TransformInstanceType' "ml.m4.10xlarge"
+
+pattern TransformInstanceType_Ml_m4_16xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m4_16xlarge = TransformInstanceType' "ml.m4.16xlarge"
+
+pattern TransformInstanceType_Ml_m4_2xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m4_2xlarge = TransformInstanceType' "ml.m4.2xlarge"
+
+pattern TransformInstanceType_Ml_m4_4xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m4_4xlarge = TransformInstanceType' "ml.m4.4xlarge"
+
+pattern TransformInstanceType_Ml_m4_xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m4_xlarge = TransformInstanceType' "ml.m4.xlarge"
+
+pattern TransformInstanceType_Ml_m5_12xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m5_12xlarge = TransformInstanceType' "ml.m5.12xlarge"
+
+pattern TransformInstanceType_Ml_m5_24xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m5_24xlarge = TransformInstanceType' "ml.m5.24xlarge"
+
+pattern TransformInstanceType_Ml_m5_2xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m5_2xlarge = TransformInstanceType' "ml.m5.2xlarge"
+
+pattern TransformInstanceType_Ml_m5_4xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m5_4xlarge = TransformInstanceType' "ml.m5.4xlarge"
+
+pattern TransformInstanceType_Ml_m5_large :: TransformInstanceType
+pattern TransformInstanceType_Ml_m5_large = TransformInstanceType' "ml.m5.large"
+
+pattern TransformInstanceType_Ml_m5_xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_m5_xlarge = TransformInstanceType' "ml.m5.xlarge"
+
+pattern TransformInstanceType_Ml_p2_16xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_p2_16xlarge = TransformInstanceType' "ml.p2.16xlarge"
+
+pattern TransformInstanceType_Ml_p2_8xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_p2_8xlarge = TransformInstanceType' "ml.p2.8xlarge"
+
+pattern TransformInstanceType_Ml_p2_xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_p2_xlarge = TransformInstanceType' "ml.p2.xlarge"
+
+pattern TransformInstanceType_Ml_p3_16xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_p3_16xlarge = TransformInstanceType' "ml.p3.16xlarge"
+
+pattern TransformInstanceType_Ml_p3_2xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_p3_2xlarge = TransformInstanceType' "ml.p3.2xlarge"
+
+pattern TransformInstanceType_Ml_p3_8xlarge :: TransformInstanceType
+pattern TransformInstanceType_Ml_p3_8xlarge = TransformInstanceType' "ml.p3.8xlarge"
+
+{-# COMPLETE
+  TransformInstanceType_Ml_c4_2xlarge,
+  TransformInstanceType_Ml_c4_4xlarge,
+  TransformInstanceType_Ml_c4_8xlarge,
+  TransformInstanceType_Ml_c4_xlarge,
+  TransformInstanceType_Ml_c5_18xlarge,
+  TransformInstanceType_Ml_c5_2xlarge,
+  TransformInstanceType_Ml_c5_4xlarge,
+  TransformInstanceType_Ml_c5_9xlarge,
+  TransformInstanceType_Ml_c5_xlarge,
+  TransformInstanceType_Ml_g4dn_12xlarge,
+  TransformInstanceType_Ml_g4dn_16xlarge,
+  TransformInstanceType_Ml_g4dn_2xlarge,
+  TransformInstanceType_Ml_g4dn_4xlarge,
+  TransformInstanceType_Ml_g4dn_8xlarge,
+  TransformInstanceType_Ml_g4dn_xlarge,
+  TransformInstanceType_Ml_m4_10xlarge,
+  TransformInstanceType_Ml_m4_16xlarge,
+  TransformInstanceType_Ml_m4_2xlarge,
+  TransformInstanceType_Ml_m4_4xlarge,
+  TransformInstanceType_Ml_m4_xlarge,
+  TransformInstanceType_Ml_m5_12xlarge,
+  TransformInstanceType_Ml_m5_24xlarge,
+  TransformInstanceType_Ml_m5_2xlarge,
+  TransformInstanceType_Ml_m5_4xlarge,
+  TransformInstanceType_Ml_m5_large,
+  TransformInstanceType_Ml_m5_xlarge,
+  TransformInstanceType_Ml_p2_16xlarge,
+  TransformInstanceType_Ml_p2_8xlarge,
+  TransformInstanceType_Ml_p2_xlarge,
+  TransformInstanceType_Ml_p3_16xlarge,
+  TransformInstanceType_Ml_p3_2xlarge,
+  TransformInstanceType_Ml_p3_8xlarge,
+  TransformInstanceType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TransformJob.hs b/gen/Amazonka/SageMaker/Types/TransformJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformJob.hs
@@ -0,0 +1,435 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformJob 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 Amazonka.SageMaker.Types.BatchStrategy
+import Amazonka.SageMaker.Types.DataProcessing
+import Amazonka.SageMaker.Types.ExperimentConfig
+import Amazonka.SageMaker.Types.ModelClientConfig
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TransformInput
+import Amazonka.SageMaker.Types.TransformJobStatus
+import Amazonka.SageMaker.Types.TransformOutput
+import Amazonka.SageMaker.Types.TransformResources
+
+-- | A batch transform job. For information about SageMaker batch transform,
+-- see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html Use Batch Transform>.
+--
+-- /See:/ 'newTransformJob' smart constructor.
+data TransformJob = TransformJob'
+  { -- | The Amazon Resource Name (ARN) of the AutoML job that created the
+    -- transform job.
+    autoMLJobArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the number of records to include in a mini-batch for an HTTP
+    -- inference request. A record is a single unit of input data that
+    -- inference can be made on. For example, a single line in a CSV file is a
+    -- record.
+    batchStrategy :: Prelude.Maybe BatchStrategy,
+    -- | A timestamp that shows when the transform Job was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    dataProcessing :: Prelude.Maybe DataProcessing,
+    -- | The environment variables to set in the Docker container. We support up
+    -- to 16 key and values entries in the map.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    experimentConfig :: Prelude.Maybe ExperimentConfig,
+    -- | If the transform job failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the labeling job that created the
+    -- transform job.
+    labelingJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of parallel requests that can be sent to each
+    -- instance in a transform job. If @MaxConcurrentTransforms@ is set to 0 or
+    -- left unset, SageMaker checks the optional execution-parameters to
+    -- determine the settings for your chosen algorithm. If the
+    -- execution-parameters endpoint is not enabled, the default value is 1.
+    -- For built-in algorithms, you don\'t need to set a value for
+    -- @MaxConcurrentTransforms@.
+    maxConcurrentTransforms :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum allowed size of the payload, in MB. A payload is the data
+    -- portion of a record (without metadata). The value in @MaxPayloadInMB@
+    -- must be greater than, or equal to, the size of a single record. To
+    -- estimate the size of a record in MB, divide the size of your dataset by
+    -- the number of records. To ensure that the records fit within the maximum
+    -- payload size, we recommend using a slightly larger value. The default
+    -- value is 6 MB. For cases where the payload might be arbitrarily large
+    -- and is transmitted using HTTP chunked encoding, set the value to 0. This
+    -- feature works only in supported algorithms. Currently, SageMaker
+    -- built-in algorithms do not support HTTP chunked encoding.
+    maxPayloadInMB :: Prelude.Maybe Prelude.Natural,
+    modelClientConfig :: Prelude.Maybe ModelClientConfig,
+    -- | The name of the model associated with the transform job.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags associated with the transform job.
+    tags :: Prelude.Maybe [Tag],
+    -- | Indicates when the transform job has been completed, or has stopped or
+    -- failed. You are billed for the time interval between this time and the
+    -- value of @TransformStartTime@.
+    transformEndTime :: Prelude.Maybe Data.POSIX,
+    transformInput :: Prelude.Maybe TransformInput,
+    -- | The Amazon Resource Name (ARN) of the transform job.
+    transformJobArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the transform job.
+    transformJobName :: Prelude.Maybe Prelude.Text,
+    -- | The status of the transform job.
+    --
+    -- Transform job statuses are:
+    --
+    -- -   @InProgress@ - The job is in progress.
+    --
+    -- -   @Completed@ - The job has completed.
+    --
+    -- -   @Failed@ - The transform job has failed. To see the reason for the
+    --     failure, see the @FailureReason@ field in the response to a
+    --     @DescribeTransformJob@ call.
+    --
+    -- -   @Stopping@ - The transform job is stopping.
+    --
+    -- -   @Stopped@ - The transform job has stopped.
+    transformJobStatus :: Prelude.Maybe TransformJobStatus,
+    transformOutput :: Prelude.Maybe TransformOutput,
+    transformResources :: Prelude.Maybe TransformResources,
+    -- | Indicates when the transform job starts on ML instances. You are billed
+    -- for the time interval between this time and the value of
+    -- @TransformEndTime@.
+    transformStartTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformJob' 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:
+--
+-- 'autoMLJobArn', 'transformJob_autoMLJobArn' - The Amazon Resource Name (ARN) of the AutoML job that created the
+-- transform job.
+--
+-- 'batchStrategy', 'transformJob_batchStrategy' - Specifies the number of records to include in a mini-batch for an HTTP
+-- inference request. A record is a single unit of input data that
+-- inference can be made on. For example, a single line in a CSV file is a
+-- record.
+--
+-- 'creationTime', 'transformJob_creationTime' - A timestamp that shows when the transform Job was created.
+--
+-- 'dataProcessing', 'transformJob_dataProcessing' - Undocumented member.
+--
+-- 'environment', 'transformJob_environment' - The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+--
+-- 'experimentConfig', 'transformJob_experimentConfig' - Undocumented member.
+--
+-- 'failureReason', 'transformJob_failureReason' - If the transform job failed, the reason it failed.
+--
+-- 'labelingJobArn', 'transformJob_labelingJobArn' - The Amazon Resource Name (ARN) of the labeling job that created the
+-- transform job.
+--
+-- 'maxConcurrentTransforms', 'transformJob_maxConcurrentTransforms' - The maximum number of parallel requests that can be sent to each
+-- instance in a transform job. If @MaxConcurrentTransforms@ is set to 0 or
+-- left unset, SageMaker checks the optional execution-parameters to
+-- determine the settings for your chosen algorithm. If the
+-- execution-parameters endpoint is not enabled, the default value is 1.
+-- For built-in algorithms, you don\'t need to set a value for
+-- @MaxConcurrentTransforms@.
+--
+-- 'maxPayloadInMB', 'transformJob_maxPayloadInMB' - The maximum allowed size of the payload, in MB. A payload is the data
+-- portion of a record (without metadata). The value in @MaxPayloadInMB@
+-- must be greater than, or equal to, the size of a single record. To
+-- estimate the size of a record in MB, divide the size of your dataset by
+-- the number of records. To ensure that the records fit within the maximum
+-- payload size, we recommend using a slightly larger value. The default
+-- value is 6 MB. For cases where the payload might be arbitrarily large
+-- and is transmitted using HTTP chunked encoding, set the value to 0. This
+-- feature works only in supported algorithms. Currently, SageMaker
+-- built-in algorithms do not support HTTP chunked encoding.
+--
+-- 'modelClientConfig', 'transformJob_modelClientConfig' - Undocumented member.
+--
+-- 'modelName', 'transformJob_modelName' - The name of the model associated with the transform job.
+--
+-- 'tags', 'transformJob_tags' - A list of tags associated with the transform job.
+--
+-- 'transformEndTime', 'transformJob_transformEndTime' - Indicates when the transform job has been completed, or has stopped or
+-- failed. You are billed for the time interval between this time and the
+-- value of @TransformStartTime@.
+--
+-- 'transformInput', 'transformJob_transformInput' - Undocumented member.
+--
+-- 'transformJobArn', 'transformJob_transformJobArn' - The Amazon Resource Name (ARN) of the transform job.
+--
+-- 'transformJobName', 'transformJob_transformJobName' - The name of the transform job.
+--
+-- 'transformJobStatus', 'transformJob_transformJobStatus' - The status of the transform job.
+--
+-- Transform job statuses are:
+--
+-- -   @InProgress@ - The job is in progress.
+--
+-- -   @Completed@ - The job has completed.
+--
+-- -   @Failed@ - The transform job has failed. To see the reason for the
+--     failure, see the @FailureReason@ field in the response to a
+--     @DescribeTransformJob@ call.
+--
+-- -   @Stopping@ - The transform job is stopping.
+--
+-- -   @Stopped@ - The transform job has stopped.
+--
+-- 'transformOutput', 'transformJob_transformOutput' - Undocumented member.
+--
+-- 'transformResources', 'transformJob_transformResources' - Undocumented member.
+--
+-- 'transformStartTime', 'transformJob_transformStartTime' - Indicates when the transform job starts on ML instances. You are billed
+-- for the time interval between this time and the value of
+-- @TransformEndTime@.
+newTransformJob ::
+  TransformJob
+newTransformJob =
+  TransformJob'
+    { autoMLJobArn = Prelude.Nothing,
+      batchStrategy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      dataProcessing = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      experimentConfig = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      labelingJobArn = Prelude.Nothing,
+      maxConcurrentTransforms = Prelude.Nothing,
+      maxPayloadInMB = Prelude.Nothing,
+      modelClientConfig = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      transformEndTime = Prelude.Nothing,
+      transformInput = Prelude.Nothing,
+      transformJobArn = Prelude.Nothing,
+      transformJobName = Prelude.Nothing,
+      transformJobStatus = Prelude.Nothing,
+      transformOutput = Prelude.Nothing,
+      transformResources = Prelude.Nothing,
+      transformStartTime = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the AutoML job that created the
+-- transform job.
+transformJob_autoMLJobArn :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Text)
+transformJob_autoMLJobArn = Lens.lens (\TransformJob' {autoMLJobArn} -> autoMLJobArn) (\s@TransformJob' {} a -> s {autoMLJobArn = a} :: TransformJob)
+
+-- | Specifies the number of records to include in a mini-batch for an HTTP
+-- inference request. A record is a single unit of input data that
+-- inference can be made on. For example, a single line in a CSV file is a
+-- record.
+transformJob_batchStrategy :: Lens.Lens' TransformJob (Prelude.Maybe BatchStrategy)
+transformJob_batchStrategy = Lens.lens (\TransformJob' {batchStrategy} -> batchStrategy) (\s@TransformJob' {} a -> s {batchStrategy = a} :: TransformJob)
+
+-- | A timestamp that shows when the transform Job was created.
+transformJob_creationTime :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.UTCTime)
+transformJob_creationTime = Lens.lens (\TransformJob' {creationTime} -> creationTime) (\s@TransformJob' {} a -> s {creationTime = a} :: TransformJob) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+transformJob_dataProcessing :: Lens.Lens' TransformJob (Prelude.Maybe DataProcessing)
+transformJob_dataProcessing = Lens.lens (\TransformJob' {dataProcessing} -> dataProcessing) (\s@TransformJob' {} a -> s {dataProcessing = a} :: TransformJob)
+
+-- | The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+transformJob_environment :: Lens.Lens' TransformJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+transformJob_environment = Lens.lens (\TransformJob' {environment} -> environment) (\s@TransformJob' {} a -> s {environment = a} :: TransformJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+transformJob_experimentConfig :: Lens.Lens' TransformJob (Prelude.Maybe ExperimentConfig)
+transformJob_experimentConfig = Lens.lens (\TransformJob' {experimentConfig} -> experimentConfig) (\s@TransformJob' {} a -> s {experimentConfig = a} :: TransformJob)
+
+-- | If the transform job failed, the reason it failed.
+transformJob_failureReason :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Text)
+transformJob_failureReason = Lens.lens (\TransformJob' {failureReason} -> failureReason) (\s@TransformJob' {} a -> s {failureReason = a} :: TransformJob)
+
+-- | The Amazon Resource Name (ARN) of the labeling job that created the
+-- transform job.
+transformJob_labelingJobArn :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Text)
+transformJob_labelingJobArn = Lens.lens (\TransformJob' {labelingJobArn} -> labelingJobArn) (\s@TransformJob' {} a -> s {labelingJobArn = a} :: TransformJob)
+
+-- | The maximum number of parallel requests that can be sent to each
+-- instance in a transform job. If @MaxConcurrentTransforms@ is set to 0 or
+-- left unset, SageMaker checks the optional execution-parameters to
+-- determine the settings for your chosen algorithm. If the
+-- execution-parameters endpoint is not enabled, the default value is 1.
+-- For built-in algorithms, you don\'t need to set a value for
+-- @MaxConcurrentTransforms@.
+transformJob_maxConcurrentTransforms :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Natural)
+transformJob_maxConcurrentTransforms = Lens.lens (\TransformJob' {maxConcurrentTransforms} -> maxConcurrentTransforms) (\s@TransformJob' {} a -> s {maxConcurrentTransforms = a} :: TransformJob)
+
+-- | The maximum allowed size of the payload, in MB. A payload is the data
+-- portion of a record (without metadata). The value in @MaxPayloadInMB@
+-- must be greater than, or equal to, the size of a single record. To
+-- estimate the size of a record in MB, divide the size of your dataset by
+-- the number of records. To ensure that the records fit within the maximum
+-- payload size, we recommend using a slightly larger value. The default
+-- value is 6 MB. For cases where the payload might be arbitrarily large
+-- and is transmitted using HTTP chunked encoding, set the value to 0. This
+-- feature works only in supported algorithms. Currently, SageMaker
+-- built-in algorithms do not support HTTP chunked encoding.
+transformJob_maxPayloadInMB :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Natural)
+transformJob_maxPayloadInMB = Lens.lens (\TransformJob' {maxPayloadInMB} -> maxPayloadInMB) (\s@TransformJob' {} a -> s {maxPayloadInMB = a} :: TransformJob)
+
+-- | Undocumented member.
+transformJob_modelClientConfig :: Lens.Lens' TransformJob (Prelude.Maybe ModelClientConfig)
+transformJob_modelClientConfig = Lens.lens (\TransformJob' {modelClientConfig} -> modelClientConfig) (\s@TransformJob' {} a -> s {modelClientConfig = a} :: TransformJob)
+
+-- | The name of the model associated with the transform job.
+transformJob_modelName :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Text)
+transformJob_modelName = Lens.lens (\TransformJob' {modelName} -> modelName) (\s@TransformJob' {} a -> s {modelName = a} :: TransformJob)
+
+-- | A list of tags associated with the transform job.
+transformJob_tags :: Lens.Lens' TransformJob (Prelude.Maybe [Tag])
+transformJob_tags = Lens.lens (\TransformJob' {tags} -> tags) (\s@TransformJob' {} a -> s {tags = a} :: TransformJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates when the transform job has been completed, or has stopped or
+-- failed. You are billed for the time interval between this time and the
+-- value of @TransformStartTime@.
+transformJob_transformEndTime :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.UTCTime)
+transformJob_transformEndTime = Lens.lens (\TransformJob' {transformEndTime} -> transformEndTime) (\s@TransformJob' {} a -> s {transformEndTime = a} :: TransformJob) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+transformJob_transformInput :: Lens.Lens' TransformJob (Prelude.Maybe TransformInput)
+transformJob_transformInput = Lens.lens (\TransformJob' {transformInput} -> transformInput) (\s@TransformJob' {} a -> s {transformInput = a} :: TransformJob)
+
+-- | The Amazon Resource Name (ARN) of the transform job.
+transformJob_transformJobArn :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Text)
+transformJob_transformJobArn = Lens.lens (\TransformJob' {transformJobArn} -> transformJobArn) (\s@TransformJob' {} a -> s {transformJobArn = a} :: TransformJob)
+
+-- | The name of the transform job.
+transformJob_transformJobName :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.Text)
+transformJob_transformJobName = Lens.lens (\TransformJob' {transformJobName} -> transformJobName) (\s@TransformJob' {} a -> s {transformJobName = a} :: TransformJob)
+
+-- | The status of the transform job.
+--
+-- Transform job statuses are:
+--
+-- -   @InProgress@ - The job is in progress.
+--
+-- -   @Completed@ - The job has completed.
+--
+-- -   @Failed@ - The transform job has failed. To see the reason for the
+--     failure, see the @FailureReason@ field in the response to a
+--     @DescribeTransformJob@ call.
+--
+-- -   @Stopping@ - The transform job is stopping.
+--
+-- -   @Stopped@ - The transform job has stopped.
+transformJob_transformJobStatus :: Lens.Lens' TransformJob (Prelude.Maybe TransformJobStatus)
+transformJob_transformJobStatus = Lens.lens (\TransformJob' {transformJobStatus} -> transformJobStatus) (\s@TransformJob' {} a -> s {transformJobStatus = a} :: TransformJob)
+
+-- | Undocumented member.
+transformJob_transformOutput :: Lens.Lens' TransformJob (Prelude.Maybe TransformOutput)
+transformJob_transformOutput = Lens.lens (\TransformJob' {transformOutput} -> transformOutput) (\s@TransformJob' {} a -> s {transformOutput = a} :: TransformJob)
+
+-- | Undocumented member.
+transformJob_transformResources :: Lens.Lens' TransformJob (Prelude.Maybe TransformResources)
+transformJob_transformResources = Lens.lens (\TransformJob' {transformResources} -> transformResources) (\s@TransformJob' {} a -> s {transformResources = a} :: TransformJob)
+
+-- | Indicates when the transform job starts on ML instances. You are billed
+-- for the time interval between this time and the value of
+-- @TransformEndTime@.
+transformJob_transformStartTime :: Lens.Lens' TransformJob (Prelude.Maybe Prelude.UTCTime)
+transformJob_transformStartTime = Lens.lens (\TransformJob' {transformStartTime} -> transformStartTime) (\s@TransformJob' {} a -> s {transformStartTime = a} :: TransformJob) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON TransformJob where
+  parseJSON =
+    Data.withObject
+      "TransformJob"
+      ( \x ->
+          TransformJob'
+            Prelude.<$> (x Data..:? "AutoMLJobArn")
+            Prelude.<*> (x Data..:? "BatchStrategy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DataProcessing")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ExperimentConfig")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LabelingJobArn")
+            Prelude.<*> (x Data..:? "MaxConcurrentTransforms")
+            Prelude.<*> (x Data..:? "MaxPayloadInMB")
+            Prelude.<*> (x Data..:? "ModelClientConfig")
+            Prelude.<*> (x Data..:? "ModelName")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TransformEndTime")
+            Prelude.<*> (x Data..:? "TransformInput")
+            Prelude.<*> (x Data..:? "TransformJobArn")
+            Prelude.<*> (x Data..:? "TransformJobName")
+            Prelude.<*> (x Data..:? "TransformJobStatus")
+            Prelude.<*> (x Data..:? "TransformOutput")
+            Prelude.<*> (x Data..:? "TransformResources")
+            Prelude.<*> (x Data..:? "TransformStartTime")
+      )
+
+instance Prelude.Hashable TransformJob where
+  hashWithSalt _salt TransformJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoMLJobArn
+      `Prelude.hashWithSalt` batchStrategy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` dataProcessing
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` experimentConfig
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` labelingJobArn
+      `Prelude.hashWithSalt` maxConcurrentTransforms
+      `Prelude.hashWithSalt` maxPayloadInMB
+      `Prelude.hashWithSalt` modelClientConfig
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` transformEndTime
+      `Prelude.hashWithSalt` transformInput
+      `Prelude.hashWithSalt` transformJobArn
+      `Prelude.hashWithSalt` transformJobName
+      `Prelude.hashWithSalt` transformJobStatus
+      `Prelude.hashWithSalt` transformOutput
+      `Prelude.hashWithSalt` transformResources
+      `Prelude.hashWithSalt` transformStartTime
+
+instance Prelude.NFData TransformJob where
+  rnf TransformJob' {..} =
+    Prelude.rnf autoMLJobArn
+      `Prelude.seq` Prelude.rnf batchStrategy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf dataProcessing
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf experimentConfig
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf labelingJobArn
+      `Prelude.seq` Prelude.rnf maxConcurrentTransforms
+      `Prelude.seq` Prelude.rnf maxPayloadInMB
+      `Prelude.seq` Prelude.rnf modelClientConfig
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf transformEndTime
+      `Prelude.seq` Prelude.rnf transformInput
+      `Prelude.seq` Prelude.rnf transformJobArn
+      `Prelude.seq` Prelude.rnf transformJobName
+      `Prelude.seq` Prelude.rnf transformJobStatus
+      `Prelude.seq` Prelude.rnf transformOutput
+      `Prelude.seq` Prelude.rnf transformResources
+      `Prelude.seq` Prelude.rnf
+        transformStartTime
diff --git a/gen/Amazonka/SageMaker/Types/TransformJobDefinition.hs b/gen/Amazonka/SageMaker/Types/TransformJobDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformJobDefinition.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformJobDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformJobDefinition 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 Amazonka.SageMaker.Types.BatchStrategy
+import Amazonka.SageMaker.Types.TransformInput
+import Amazonka.SageMaker.Types.TransformOutput
+import Amazonka.SageMaker.Types.TransformResources
+
+-- | Defines the input needed to run a transform job using the inference
+-- specification specified in the algorithm.
+--
+-- /See:/ 'newTransformJobDefinition' smart constructor.
+data TransformJobDefinition = TransformJobDefinition'
+  { -- | A string that determines the number of records included in a single
+    -- mini-batch.
+    --
+    -- @SingleRecord@ means only one record is used per mini-batch.
+    -- @MultiRecord@ means a mini-batch is set to contain as many records that
+    -- can fit within the @MaxPayloadInMB@ limit.
+    batchStrategy :: Prelude.Maybe BatchStrategy,
+    -- | The environment variables to set in the Docker container. We support up
+    -- to 16 key and values entries in the map.
+    environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The maximum number of parallel requests that can be sent to each
+    -- instance in a transform job. The default value is 1.
+    maxConcurrentTransforms :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum payload size allowed, in MB. A payload is the data portion
+    -- of a record (without metadata).
+    maxPayloadInMB :: Prelude.Maybe Prelude.Natural,
+    -- | A description of the input source and the way the transform job consumes
+    -- it.
+    transformInput :: TransformInput,
+    -- | Identifies the Amazon S3 location where you want Amazon SageMaker to
+    -- save the results from the transform job.
+    transformOutput :: TransformOutput,
+    -- | Identifies the ML compute instances for the transform job.
+    transformResources :: TransformResources
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformJobDefinition' 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:
+--
+-- 'batchStrategy', 'transformJobDefinition_batchStrategy' - A string that determines the number of records included in a single
+-- mini-batch.
+--
+-- @SingleRecord@ means only one record is used per mini-batch.
+-- @MultiRecord@ means a mini-batch is set to contain as many records that
+-- can fit within the @MaxPayloadInMB@ limit.
+--
+-- 'environment', 'transformJobDefinition_environment' - The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+--
+-- 'maxConcurrentTransforms', 'transformJobDefinition_maxConcurrentTransforms' - The maximum number of parallel requests that can be sent to each
+-- instance in a transform job. The default value is 1.
+--
+-- 'maxPayloadInMB', 'transformJobDefinition_maxPayloadInMB' - The maximum payload size allowed, in MB. A payload is the data portion
+-- of a record (without metadata).
+--
+-- 'transformInput', 'transformJobDefinition_transformInput' - A description of the input source and the way the transform job consumes
+-- it.
+--
+-- 'transformOutput', 'transformJobDefinition_transformOutput' - Identifies the Amazon S3 location where you want Amazon SageMaker to
+-- save the results from the transform job.
+--
+-- 'transformResources', 'transformJobDefinition_transformResources' - Identifies the ML compute instances for the transform job.
+newTransformJobDefinition ::
+  -- | 'transformInput'
+  TransformInput ->
+  -- | 'transformOutput'
+  TransformOutput ->
+  -- | 'transformResources'
+  TransformResources ->
+  TransformJobDefinition
+newTransformJobDefinition
+  pTransformInput_
+  pTransformOutput_
+  pTransformResources_ =
+    TransformJobDefinition'
+      { batchStrategy =
+          Prelude.Nothing,
+        environment = Prelude.Nothing,
+        maxConcurrentTransforms = Prelude.Nothing,
+        maxPayloadInMB = Prelude.Nothing,
+        transformInput = pTransformInput_,
+        transformOutput = pTransformOutput_,
+        transformResources = pTransformResources_
+      }
+
+-- | A string that determines the number of records included in a single
+-- mini-batch.
+--
+-- @SingleRecord@ means only one record is used per mini-batch.
+-- @MultiRecord@ means a mini-batch is set to contain as many records that
+-- can fit within the @MaxPayloadInMB@ limit.
+transformJobDefinition_batchStrategy :: Lens.Lens' TransformJobDefinition (Prelude.Maybe BatchStrategy)
+transformJobDefinition_batchStrategy = Lens.lens (\TransformJobDefinition' {batchStrategy} -> batchStrategy) (\s@TransformJobDefinition' {} a -> s {batchStrategy = a} :: TransformJobDefinition)
+
+-- | The environment variables to set in the Docker container. We support up
+-- to 16 key and values entries in the map.
+transformJobDefinition_environment :: Lens.Lens' TransformJobDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+transformJobDefinition_environment = Lens.lens (\TransformJobDefinition' {environment} -> environment) (\s@TransformJobDefinition' {} a -> s {environment = a} :: TransformJobDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of parallel requests that can be sent to each
+-- instance in a transform job. The default value is 1.
+transformJobDefinition_maxConcurrentTransforms :: Lens.Lens' TransformJobDefinition (Prelude.Maybe Prelude.Natural)
+transformJobDefinition_maxConcurrentTransforms = Lens.lens (\TransformJobDefinition' {maxConcurrentTransforms} -> maxConcurrentTransforms) (\s@TransformJobDefinition' {} a -> s {maxConcurrentTransforms = a} :: TransformJobDefinition)
+
+-- | The maximum payload size allowed, in MB. A payload is the data portion
+-- of a record (without metadata).
+transformJobDefinition_maxPayloadInMB :: Lens.Lens' TransformJobDefinition (Prelude.Maybe Prelude.Natural)
+transformJobDefinition_maxPayloadInMB = Lens.lens (\TransformJobDefinition' {maxPayloadInMB} -> maxPayloadInMB) (\s@TransformJobDefinition' {} a -> s {maxPayloadInMB = a} :: TransformJobDefinition)
+
+-- | A description of the input source and the way the transform job consumes
+-- it.
+transformJobDefinition_transformInput :: Lens.Lens' TransformJobDefinition TransformInput
+transformJobDefinition_transformInput = Lens.lens (\TransformJobDefinition' {transformInput} -> transformInput) (\s@TransformJobDefinition' {} a -> s {transformInput = a} :: TransformJobDefinition)
+
+-- | Identifies the Amazon S3 location where you want Amazon SageMaker to
+-- save the results from the transform job.
+transformJobDefinition_transformOutput :: Lens.Lens' TransformJobDefinition TransformOutput
+transformJobDefinition_transformOutput = Lens.lens (\TransformJobDefinition' {transformOutput} -> transformOutput) (\s@TransformJobDefinition' {} a -> s {transformOutput = a} :: TransformJobDefinition)
+
+-- | Identifies the ML compute instances for the transform job.
+transformJobDefinition_transformResources :: Lens.Lens' TransformJobDefinition TransformResources
+transformJobDefinition_transformResources = Lens.lens (\TransformJobDefinition' {transformResources} -> transformResources) (\s@TransformJobDefinition' {} a -> s {transformResources = a} :: TransformJobDefinition)
+
+instance Data.FromJSON TransformJobDefinition where
+  parseJSON =
+    Data.withObject
+      "TransformJobDefinition"
+      ( \x ->
+          TransformJobDefinition'
+            Prelude.<$> (x Data..:? "BatchStrategy")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "MaxConcurrentTransforms")
+            Prelude.<*> (x Data..:? "MaxPayloadInMB")
+            Prelude.<*> (x Data..: "TransformInput")
+            Prelude.<*> (x Data..: "TransformOutput")
+            Prelude.<*> (x Data..: "TransformResources")
+      )
+
+instance Prelude.Hashable TransformJobDefinition where
+  hashWithSalt _salt TransformJobDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchStrategy
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` maxConcurrentTransforms
+      `Prelude.hashWithSalt` maxPayloadInMB
+      `Prelude.hashWithSalt` transformInput
+      `Prelude.hashWithSalt` transformOutput
+      `Prelude.hashWithSalt` transformResources
+
+instance Prelude.NFData TransformJobDefinition where
+  rnf TransformJobDefinition' {..} =
+    Prelude.rnf batchStrategy
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf maxConcurrentTransforms
+      `Prelude.seq` Prelude.rnf maxPayloadInMB
+      `Prelude.seq` Prelude.rnf transformInput
+      `Prelude.seq` Prelude.rnf transformOutput
+      `Prelude.seq` Prelude.rnf transformResources
+
+instance Data.ToJSON TransformJobDefinition where
+  toJSON TransformJobDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchStrategy" Data..=) Prelude.<$> batchStrategy,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("MaxConcurrentTransforms" Data..=)
+              Prelude.<$> maxConcurrentTransforms,
+            ("MaxPayloadInMB" Data..=)
+              Prelude.<$> maxPayloadInMB,
+            Prelude.Just
+              ("TransformInput" Data..= transformInput),
+            Prelude.Just
+              ("TransformOutput" Data..= transformOutput),
+            Prelude.Just
+              ("TransformResources" Data..= transformResources)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TransformJobStatus.hs b/gen/Amazonka/SageMaker/Types/TransformJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformJobStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TransformJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformJobStatus
+  ( TransformJobStatus
+      ( ..,
+        TransformJobStatus_Completed,
+        TransformJobStatus_Failed,
+        TransformJobStatus_InProgress,
+        TransformJobStatus_Stopped,
+        TransformJobStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TransformJobStatus = TransformJobStatus'
+  { fromTransformJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TransformJobStatus_Completed :: TransformJobStatus
+pattern TransformJobStatus_Completed = TransformJobStatus' "Completed"
+
+pattern TransformJobStatus_Failed :: TransformJobStatus
+pattern TransformJobStatus_Failed = TransformJobStatus' "Failed"
+
+pattern TransformJobStatus_InProgress :: TransformJobStatus
+pattern TransformJobStatus_InProgress = TransformJobStatus' "InProgress"
+
+pattern TransformJobStatus_Stopped :: TransformJobStatus
+pattern TransformJobStatus_Stopped = TransformJobStatus' "Stopped"
+
+pattern TransformJobStatus_Stopping :: TransformJobStatus
+pattern TransformJobStatus_Stopping = TransformJobStatus' "Stopping"
+
+{-# COMPLETE
+  TransformJobStatus_Completed,
+  TransformJobStatus_Failed,
+  TransformJobStatus_InProgress,
+  TransformJobStatus_Stopped,
+  TransformJobStatus_Stopping,
+  TransformJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TransformJobStepMetadata.hs b/gen/Amazonka/SageMaker/Types/TransformJobStepMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformJobStepMetadata.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformJobStepMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformJobStepMetadata 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
+
+-- | Metadata for a transform job step.
+--
+-- /See:/ 'newTransformJobStepMetadata' smart constructor.
+data TransformJobStepMetadata = TransformJobStepMetadata'
+  { -- | The Amazon Resource Name (ARN) of the transform job that was run by this
+    -- step execution.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformJobStepMetadata' 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:
+--
+-- 'arn', 'transformJobStepMetadata_arn' - The Amazon Resource Name (ARN) of the transform job that was run by this
+-- step execution.
+newTransformJobStepMetadata ::
+  TransformJobStepMetadata
+newTransformJobStepMetadata =
+  TransformJobStepMetadata' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the transform job that was run by this
+-- step execution.
+transformJobStepMetadata_arn :: Lens.Lens' TransformJobStepMetadata (Prelude.Maybe Prelude.Text)
+transformJobStepMetadata_arn = Lens.lens (\TransformJobStepMetadata' {arn} -> arn) (\s@TransformJobStepMetadata' {} a -> s {arn = a} :: TransformJobStepMetadata)
+
+instance Data.FromJSON TransformJobStepMetadata where
+  parseJSON =
+    Data.withObject
+      "TransformJobStepMetadata"
+      ( \x ->
+          TransformJobStepMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable TransformJobStepMetadata where
+  hashWithSalt _salt TransformJobStepMetadata' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData TransformJobStepMetadata where
+  rnf TransformJobStepMetadata' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/TransformJobSummary.hs b/gen/Amazonka/SageMaker/Types/TransformJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformJobSummary.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformJobSummary 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 Amazonka.SageMaker.Types.TransformJobStatus
+
+-- | Provides a summary of a transform job. Multiple @TransformJobSummary@
+-- objects are returned as a list after in response to a ListTransformJobs
+-- call.
+--
+-- /See:/ 'newTransformJobSummary' smart constructor.
+data TransformJobSummary = TransformJobSummary'
+  { -- | If the transform job failed, the reason it failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Indicates when the transform job was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates when the transform job ends on compute instances. For
+    -- successful jobs and stopped jobs, this is the exact time recorded after
+    -- the results are uploaded. For failed jobs, this is when Amazon SageMaker
+    -- detected that the job failed.
+    transformEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the transform job.
+    transformJobName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the transform job.
+    transformJobArn :: Prelude.Text,
+    -- | A timestamp that shows when the transform Job was created.
+    creationTime :: Data.POSIX,
+    -- | The status of the transform job.
+    transformJobStatus :: TransformJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformJobSummary' 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:
+--
+-- 'failureReason', 'transformJobSummary_failureReason' - If the transform job failed, the reason it failed.
+--
+-- 'lastModifiedTime', 'transformJobSummary_lastModifiedTime' - Indicates when the transform job was last modified.
+--
+-- 'transformEndTime', 'transformJobSummary_transformEndTime' - Indicates when the transform job ends on compute instances. For
+-- successful jobs and stopped jobs, this is the exact time recorded after
+-- the results are uploaded. For failed jobs, this is when Amazon SageMaker
+-- detected that the job failed.
+--
+-- 'transformJobName', 'transformJobSummary_transformJobName' - The name of the transform job.
+--
+-- 'transformJobArn', 'transformJobSummary_transformJobArn' - The Amazon Resource Name (ARN) of the transform job.
+--
+-- 'creationTime', 'transformJobSummary_creationTime' - A timestamp that shows when the transform Job was created.
+--
+-- 'transformJobStatus', 'transformJobSummary_transformJobStatus' - The status of the transform job.
+newTransformJobSummary ::
+  -- | 'transformJobName'
+  Prelude.Text ->
+  -- | 'transformJobArn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'transformJobStatus'
+  TransformJobStatus ->
+  TransformJobSummary
+newTransformJobSummary
+  pTransformJobName_
+  pTransformJobArn_
+  pCreationTime_
+  pTransformJobStatus_ =
+    TransformJobSummary'
+      { failureReason =
+          Prelude.Nothing,
+        lastModifiedTime = Prelude.Nothing,
+        transformEndTime = Prelude.Nothing,
+        transformJobName = pTransformJobName_,
+        transformJobArn = pTransformJobArn_,
+        creationTime = Data._Time Lens.# pCreationTime_,
+        transformJobStatus = pTransformJobStatus_
+      }
+
+-- | If the transform job failed, the reason it failed.
+transformJobSummary_failureReason :: Lens.Lens' TransformJobSummary (Prelude.Maybe Prelude.Text)
+transformJobSummary_failureReason = Lens.lens (\TransformJobSummary' {failureReason} -> failureReason) (\s@TransformJobSummary' {} a -> s {failureReason = a} :: TransformJobSummary)
+
+-- | Indicates when the transform job was last modified.
+transformJobSummary_lastModifiedTime :: Lens.Lens' TransformJobSummary (Prelude.Maybe Prelude.UTCTime)
+transformJobSummary_lastModifiedTime = Lens.lens (\TransformJobSummary' {lastModifiedTime} -> lastModifiedTime) (\s@TransformJobSummary' {} a -> s {lastModifiedTime = a} :: TransformJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates when the transform job ends on compute instances. For
+-- successful jobs and stopped jobs, this is the exact time recorded after
+-- the results are uploaded. For failed jobs, this is when Amazon SageMaker
+-- detected that the job failed.
+transformJobSummary_transformEndTime :: Lens.Lens' TransformJobSummary (Prelude.Maybe Prelude.UTCTime)
+transformJobSummary_transformEndTime = Lens.lens (\TransformJobSummary' {transformEndTime} -> transformEndTime) (\s@TransformJobSummary' {} a -> s {transformEndTime = a} :: TransformJobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the transform job.
+transformJobSummary_transformJobName :: Lens.Lens' TransformJobSummary Prelude.Text
+transformJobSummary_transformJobName = Lens.lens (\TransformJobSummary' {transformJobName} -> transformJobName) (\s@TransformJobSummary' {} a -> s {transformJobName = a} :: TransformJobSummary)
+
+-- | The Amazon Resource Name (ARN) of the transform job.
+transformJobSummary_transformJobArn :: Lens.Lens' TransformJobSummary Prelude.Text
+transformJobSummary_transformJobArn = Lens.lens (\TransformJobSummary' {transformJobArn} -> transformJobArn) (\s@TransformJobSummary' {} a -> s {transformJobArn = a} :: TransformJobSummary)
+
+-- | A timestamp that shows when the transform Job was created.
+transformJobSummary_creationTime :: Lens.Lens' TransformJobSummary Prelude.UTCTime
+transformJobSummary_creationTime = Lens.lens (\TransformJobSummary' {creationTime} -> creationTime) (\s@TransformJobSummary' {} a -> s {creationTime = a} :: TransformJobSummary) Prelude.. Data._Time
+
+-- | The status of the transform job.
+transformJobSummary_transformJobStatus :: Lens.Lens' TransformJobSummary TransformJobStatus
+transformJobSummary_transformJobStatus = Lens.lens (\TransformJobSummary' {transformJobStatus} -> transformJobStatus) (\s@TransformJobSummary' {} a -> s {transformJobStatus = a} :: TransformJobSummary)
+
+instance Data.FromJSON TransformJobSummary where
+  parseJSON =
+    Data.withObject
+      "TransformJobSummary"
+      ( \x ->
+          TransformJobSummary'
+            Prelude.<$> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "TransformEndTime")
+            Prelude.<*> (x Data..: "TransformJobName")
+            Prelude.<*> (x Data..: "TransformJobArn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "TransformJobStatus")
+      )
+
+instance Prelude.Hashable TransformJobSummary where
+  hashWithSalt _salt TransformJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` transformEndTime
+      `Prelude.hashWithSalt` transformJobName
+      `Prelude.hashWithSalt` transformJobArn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` transformJobStatus
+
+instance Prelude.NFData TransformJobSummary where
+  rnf TransformJobSummary' {..} =
+    Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf transformEndTime
+      `Prelude.seq` Prelude.rnf transformJobName
+      `Prelude.seq` Prelude.rnf transformJobArn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf transformJobStatus
diff --git a/gen/Amazonka/SageMaker/Types/TransformOutput.hs b/gen/Amazonka/SageMaker/Types/TransformOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformOutput.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformOutput 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 Amazonka.SageMaker.Types.AssemblyType
+
+-- | Describes the results of a transform job.
+--
+-- /See:/ 'newTransformOutput' smart constructor.
+data TransformOutput = TransformOutput'
+  { -- | The MIME type used to specify the output data. Amazon SageMaker uses the
+    -- MIME type with each http call to transfer data from the transform job.
+    accept :: Prelude.Maybe Prelude.Text,
+    -- | Defines how to assemble the results of the transform job as a single S3
+    -- object. Choose a format that is most convenient to you. To concatenate
+    -- the results in binary format, specify @None@. To add a newline character
+    -- at the end of every transformed record, specify @Line@.
+    assembleWith :: Prelude.Maybe AssemblyType,
+    -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt the model artifacts at rest
+    -- using Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+    -- following formats:
+    --
+    -- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Key ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Alias name: @alias\/ExampleAlias@
+    --
+    -- -   Alias name ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+    --
+    -- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+    -- KMS key for Amazon S3 for your role\'s account. For more information,
+    -- see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+    -- in the /Amazon Simple Storage Service Developer Guide./
+    --
+    -- The KMS key policy must grant permission to the IAM role that you
+    -- specify in your
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html CreateModel>
+    -- request. For more information, see
+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+    -- in the /Amazon Web Services Key Management Service Developer Guide/.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 path where you want Amazon SageMaker to store the results
+    -- of the transform job. For example,
+    -- @s3:\/\/bucket-name\/key-name-prefix@.
+    --
+    -- For every S3 object used as input for the transform job, batch transform
+    -- stores the transformed data with an .@out@ suffix in a corresponding
+    -- subfolder in the location in the output prefix. For example, for the
+    -- input data stored at
+    -- @s3:\/\/bucket-name\/input-name-prefix\/dataset01\/data.csv@, batch
+    -- transform stores the transformed data at
+    -- @s3:\/\/bucket-name\/output-name-prefix\/input-name-prefix\/data.csv.out@.
+    -- Batch transform doesn\'t upload partially processed objects. For an
+    -- input S3 object that contains multiple records, it creates an .@out@
+    -- file only if the transform job succeeds on the entire file. When the
+    -- input contains multiple S3 objects, the batch transform job processes
+    -- the listed S3 objects and uploads only the output for successfully
+    -- processed objects. If any object fails in the transform job batch
+    -- transform marks the job as failed to prompt investigation.
+    s3OutputPath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformOutput' 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:
+--
+-- 'accept', 'transformOutput_accept' - The MIME type used to specify the output data. Amazon SageMaker uses the
+-- MIME type with each http call to transfer data from the transform job.
+--
+-- 'assembleWith', 'transformOutput_assembleWith' - Defines how to assemble the results of the transform job as a single S3
+-- object. Choose a format that is most convenient to you. To concatenate
+-- the results in binary format, specify @None@. To add a newline character
+-- at the end of every transformed record, specify @Line@.
+--
+-- 'kmsKeyId', 'transformOutput_kmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt the model artifacts at rest
+-- using Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+-- following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+-- KMS key for Amazon S3 for your role\'s account. For more information,
+-- see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html CreateModel>
+-- request. For more information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+--
+-- 's3OutputPath', 'transformOutput_s3OutputPath' - The Amazon S3 path where you want Amazon SageMaker to store the results
+-- of the transform job. For example,
+-- @s3:\/\/bucket-name\/key-name-prefix@.
+--
+-- For every S3 object used as input for the transform job, batch transform
+-- stores the transformed data with an .@out@ suffix in a corresponding
+-- subfolder in the location in the output prefix. For example, for the
+-- input data stored at
+-- @s3:\/\/bucket-name\/input-name-prefix\/dataset01\/data.csv@, batch
+-- transform stores the transformed data at
+-- @s3:\/\/bucket-name\/output-name-prefix\/input-name-prefix\/data.csv.out@.
+-- Batch transform doesn\'t upload partially processed objects. For an
+-- input S3 object that contains multiple records, it creates an .@out@
+-- file only if the transform job succeeds on the entire file. When the
+-- input contains multiple S3 objects, the batch transform job processes
+-- the listed S3 objects and uploads only the output for successfully
+-- processed objects. If any object fails in the transform job batch
+-- transform marks the job as failed to prompt investigation.
+newTransformOutput ::
+  -- | 's3OutputPath'
+  Prelude.Text ->
+  TransformOutput
+newTransformOutput pS3OutputPath_ =
+  TransformOutput'
+    { accept = Prelude.Nothing,
+      assembleWith = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      s3OutputPath = pS3OutputPath_
+    }
+
+-- | The MIME type used to specify the output data. Amazon SageMaker uses the
+-- MIME type with each http call to transfer data from the transform job.
+transformOutput_accept :: Lens.Lens' TransformOutput (Prelude.Maybe Prelude.Text)
+transformOutput_accept = Lens.lens (\TransformOutput' {accept} -> accept) (\s@TransformOutput' {} a -> s {accept = a} :: TransformOutput)
+
+-- | Defines how to assemble the results of the transform job as a single S3
+-- object. Choose a format that is most convenient to you. To concatenate
+-- the results in binary format, specify @None@. To add a newline character
+-- at the end of every transformed record, specify @Line@.
+transformOutput_assembleWith :: Lens.Lens' TransformOutput (Prelude.Maybe AssemblyType)
+transformOutput_assembleWith = Lens.lens (\TransformOutput' {assembleWith} -> assembleWith) (\s@TransformOutput' {} a -> s {assembleWith = a} :: TransformOutput)
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt the model artifacts at rest
+-- using Amazon S3 server-side encryption. The @KmsKeyId@ can be any of the
+-- following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- If you don\'t provide a KMS key ID, Amazon SageMaker uses the default
+-- KMS key for Amazon S3 for your role\'s account. For more information,
+-- see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html KMS-Managed Encryption Keys>
+-- in the /Amazon Simple Storage Service Developer Guide./
+--
+-- The KMS key policy must grant permission to the IAM role that you
+-- specify in your
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html CreateModel>
+-- request. For more information, see
+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html Using Key Policies in Amazon Web Services KMS>
+-- in the /Amazon Web Services Key Management Service Developer Guide/.
+transformOutput_kmsKeyId :: Lens.Lens' TransformOutput (Prelude.Maybe Prelude.Text)
+transformOutput_kmsKeyId = Lens.lens (\TransformOutput' {kmsKeyId} -> kmsKeyId) (\s@TransformOutput' {} a -> s {kmsKeyId = a} :: TransformOutput)
+
+-- | The Amazon S3 path where you want Amazon SageMaker to store the results
+-- of the transform job. For example,
+-- @s3:\/\/bucket-name\/key-name-prefix@.
+--
+-- For every S3 object used as input for the transform job, batch transform
+-- stores the transformed data with an .@out@ suffix in a corresponding
+-- subfolder in the location in the output prefix. For example, for the
+-- input data stored at
+-- @s3:\/\/bucket-name\/input-name-prefix\/dataset01\/data.csv@, batch
+-- transform stores the transformed data at
+-- @s3:\/\/bucket-name\/output-name-prefix\/input-name-prefix\/data.csv.out@.
+-- Batch transform doesn\'t upload partially processed objects. For an
+-- input S3 object that contains multiple records, it creates an .@out@
+-- file only if the transform job succeeds on the entire file. When the
+-- input contains multiple S3 objects, the batch transform job processes
+-- the listed S3 objects and uploads only the output for successfully
+-- processed objects. If any object fails in the transform job batch
+-- transform marks the job as failed to prompt investigation.
+transformOutput_s3OutputPath :: Lens.Lens' TransformOutput Prelude.Text
+transformOutput_s3OutputPath = Lens.lens (\TransformOutput' {s3OutputPath} -> s3OutputPath) (\s@TransformOutput' {} a -> s {s3OutputPath = a} :: TransformOutput)
+
+instance Data.FromJSON TransformOutput where
+  parseJSON =
+    Data.withObject
+      "TransformOutput"
+      ( \x ->
+          TransformOutput'
+            Prelude.<$> (x Data..:? "Accept")
+            Prelude.<*> (x Data..:? "AssembleWith")
+            Prelude.<*> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3OutputPath")
+      )
+
+instance Prelude.Hashable TransformOutput where
+  hashWithSalt _salt TransformOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` accept
+      `Prelude.hashWithSalt` assembleWith
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3OutputPath
+
+instance Prelude.NFData TransformOutput where
+  rnf TransformOutput' {..} =
+    Prelude.rnf accept
+      `Prelude.seq` Prelude.rnf assembleWith
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3OutputPath
+
+instance Data.ToJSON TransformOutput where
+  toJSON TransformOutput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Accept" Data..=) Prelude.<$> accept,
+            ("AssembleWith" Data..=) Prelude.<$> assembleWith,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("S3OutputPath" Data..= s3OutputPath)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TransformResources.hs b/gen/Amazonka/SageMaker/Types/TransformResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformResources.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformResources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformResources 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 Amazonka.SageMaker.Types.TransformInstanceType
+
+-- | Describes the resources, including ML instance types and ML instance
+-- count, to use for transform job.
+--
+-- /See:/ 'newTransformResources' smart constructor.
+data TransformResources = TransformResources'
+  { -- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+    -- key that Amazon SageMaker uses to encrypt model data on the storage
+    -- volume attached to the ML compute instance(s) that run the batch
+    -- transform job.
+    --
+    -- Certain Nitro-based instances include local storage, dependent on the
+    -- instance type. Local storage volumes are encrypted using a hardware
+    -- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+    -- an instance type with local storage.
+    --
+    -- For a list of instance types that support local instance storage, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+    --
+    -- For more information about local instance storage encryption, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+    --
+    -- The @VolumeKmsKeyId@ can be any of the following formats:
+    --
+    -- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Key ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+    --
+    -- -   Alias name: @alias\/ExampleAlias@
+    --
+    -- -   Alias name ARN:
+    --     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+    volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The ML compute instance type for the transform job. If you are using
+    -- built-in algorithms to transform moderately sized datasets, we recommend
+    -- using ml.m4.xlarge or @ml.m5.large@instance types.
+    instanceType :: TransformInstanceType,
+    -- | The number of ML compute instances to use in the transform job. The
+    -- default value is @1@, and the maximum is @100@. For distributed
+    -- transform jobs, specify a value greater than @1@.
+    instanceCount :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformResources' 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:
+--
+-- 'volumeKmsKeyId', 'transformResources_volumeKmsKeyId' - The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt model data on the storage
+-- volume attached to the ML compute instance(s) that run the batch
+-- transform job.
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+-- an instance type with local storage.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+--
+-- The @VolumeKmsKeyId@ can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+--
+-- 'instanceType', 'transformResources_instanceType' - The ML compute instance type for the transform job. If you are using
+-- built-in algorithms to transform moderately sized datasets, we recommend
+-- using ml.m4.xlarge or @ml.m5.large@instance types.
+--
+-- 'instanceCount', 'transformResources_instanceCount' - The number of ML compute instances to use in the transform job. The
+-- default value is @1@, and the maximum is @100@. For distributed
+-- transform jobs, specify a value greater than @1@.
+newTransformResources ::
+  -- | 'instanceType'
+  TransformInstanceType ->
+  -- | 'instanceCount'
+  Prelude.Natural ->
+  TransformResources
+newTransformResources pInstanceType_ pInstanceCount_ =
+  TransformResources'
+    { volumeKmsKeyId =
+        Prelude.Nothing,
+      instanceType = pInstanceType_,
+      instanceCount = pInstanceCount_
+    }
+
+-- | The Amazon Web Services Key Management Service (Amazon Web Services KMS)
+-- key that Amazon SageMaker uses to encrypt model data on the storage
+-- volume attached to the ML compute instance(s) that run the batch
+-- transform job.
+--
+-- Certain Nitro-based instances include local storage, dependent on the
+-- instance type. Local storage volumes are encrypted using a hardware
+-- module on the instance. You can\'t request a @VolumeKmsKeyId@ when using
+-- an instance type with local storage.
+--
+-- For a list of instance types that support local instance storage, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes Instance Store Volumes>.
+--
+-- For more information about local instance storage encryption, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html SSD Instance Store Volumes>.
+--
+-- The @VolumeKmsKeyId@ can be any of the following formats:
+--
+-- -   Key ID: @1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Key ARN:
+--     @arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab@
+--
+-- -   Alias name: @alias\/ExampleAlias@
+--
+-- -   Alias name ARN:
+--     @arn:aws:kms:us-west-2:111122223333:alias\/ExampleAlias@
+transformResources_volumeKmsKeyId :: Lens.Lens' TransformResources (Prelude.Maybe Prelude.Text)
+transformResources_volumeKmsKeyId = Lens.lens (\TransformResources' {volumeKmsKeyId} -> volumeKmsKeyId) (\s@TransformResources' {} a -> s {volumeKmsKeyId = a} :: TransformResources)
+
+-- | The ML compute instance type for the transform job. If you are using
+-- built-in algorithms to transform moderately sized datasets, we recommend
+-- using ml.m4.xlarge or @ml.m5.large@instance types.
+transformResources_instanceType :: Lens.Lens' TransformResources TransformInstanceType
+transformResources_instanceType = Lens.lens (\TransformResources' {instanceType} -> instanceType) (\s@TransformResources' {} a -> s {instanceType = a} :: TransformResources)
+
+-- | The number of ML compute instances to use in the transform job. The
+-- default value is @1@, and the maximum is @100@. For distributed
+-- transform jobs, specify a value greater than @1@.
+transformResources_instanceCount :: Lens.Lens' TransformResources Prelude.Natural
+transformResources_instanceCount = Lens.lens (\TransformResources' {instanceCount} -> instanceCount) (\s@TransformResources' {} a -> s {instanceCount = a} :: TransformResources)
+
+instance Data.FromJSON TransformResources where
+  parseJSON =
+    Data.withObject
+      "TransformResources"
+      ( \x ->
+          TransformResources'
+            Prelude.<$> (x Data..:? "VolumeKmsKeyId")
+            Prelude.<*> (x Data..: "InstanceType")
+            Prelude.<*> (x Data..: "InstanceCount")
+      )
+
+instance Prelude.Hashable TransformResources where
+  hashWithSalt _salt TransformResources' {..} =
+    _salt
+      `Prelude.hashWithSalt` volumeKmsKeyId
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` instanceCount
+
+instance Prelude.NFData TransformResources where
+  rnf TransformResources' {..} =
+    Prelude.rnf volumeKmsKeyId
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf instanceCount
+
+instance Data.ToJSON TransformResources where
+  toJSON TransformResources' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VolumeKmsKeyId" Data..=)
+              Prelude.<$> volumeKmsKeyId,
+            Prelude.Just ("InstanceType" Data..= instanceType),
+            Prelude.Just
+              ("InstanceCount" Data..= instanceCount)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TransformS3DataSource.hs b/gen/Amazonka/SageMaker/Types/TransformS3DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TransformS3DataSource.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TransformS3DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TransformS3DataSource 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 Amazonka.SageMaker.Types.S3DataType
+
+-- | Describes the S3 data source.
+--
+-- /See:/ 'newTransformS3DataSource' smart constructor.
+data TransformS3DataSource = TransformS3DataSource'
+  { -- | If you choose @S3Prefix@, @S3Uri@ identifies a key name prefix. Amazon
+    -- SageMaker uses all objects with the specified key name prefix for batch
+    -- transform.
+    --
+    -- If you choose @ManifestFile@, @S3Uri@ identifies an object that is a
+    -- manifest file containing a list of object keys that you want Amazon
+    -- SageMaker to use for batch transform.
+    --
+    -- The following values are compatible: @ManifestFile@, @S3Prefix@
+    --
+    -- The following value is not compatible: @AugmentedManifestFile@
+    s3DataType :: S3DataType,
+    -- | Depending on the value specified for the @S3DataType@, identifies either
+    -- a key name prefix or a manifest. For example:
+    --
+    -- -   A key name prefix might look like this:
+    --     @s3:\/\/bucketname\/exampleprefix@.
+    --
+    -- -   A manifest might look like this:
+    --     @s3:\/\/bucketname\/example.manifest@
+    --
+    --     The manifest is an S3 object which is a JSON file with the following
+    --     format:
+    --
+    --     @[ {\"prefix\": \"s3:\/\/customer_bucket\/some\/prefix\/\"},@
+    --
+    --     @\"relative\/path\/to\/custdata-1\",@
+    --
+    --     @\"relative\/path\/custdata-2\",@
+    --
+    --     @...@
+    --
+    --     @\"relative\/path\/custdata-N\"@
+    --
+    --     @]@
+    --
+    --     The preceding JSON matches the following @S3Uris@:
+    --
+    --     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/to\/custdata-1@
+    --
+    --     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-2@
+    --
+    --     @...@
+    --
+    --     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-N@
+    --
+    --     The complete set of @S3Uris@ in this manifest constitutes the input
+    --     data for the channel for this datasource. The object that each
+    --     @S3Uris@ points to must be readable by the IAM role that Amazon
+    --     SageMaker uses to perform tasks on your behalf.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransformS3DataSource' 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:
+--
+-- 's3DataType', 'transformS3DataSource_s3DataType' - If you choose @S3Prefix@, @S3Uri@ identifies a key name prefix. Amazon
+-- SageMaker uses all objects with the specified key name prefix for batch
+-- transform.
+--
+-- If you choose @ManifestFile@, @S3Uri@ identifies an object that is a
+-- manifest file containing a list of object keys that you want Amazon
+-- SageMaker to use for batch transform.
+--
+-- The following values are compatible: @ManifestFile@, @S3Prefix@
+--
+-- The following value is not compatible: @AugmentedManifestFile@
+--
+-- 's3Uri', 'transformS3DataSource_s3Uri' - Depending on the value specified for the @S3DataType@, identifies either
+-- a key name prefix or a manifest. For example:
+--
+-- -   A key name prefix might look like this:
+--     @s3:\/\/bucketname\/exampleprefix@.
+--
+-- -   A manifest might look like this:
+--     @s3:\/\/bucketname\/example.manifest@
+--
+--     The manifest is an S3 object which is a JSON file with the following
+--     format:
+--
+--     @[ {\"prefix\": \"s3:\/\/customer_bucket\/some\/prefix\/\"},@
+--
+--     @\"relative\/path\/to\/custdata-1\",@
+--
+--     @\"relative\/path\/custdata-2\",@
+--
+--     @...@
+--
+--     @\"relative\/path\/custdata-N\"@
+--
+--     @]@
+--
+--     The preceding JSON matches the following @S3Uris@:
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/to\/custdata-1@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-2@
+--
+--     @...@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-N@
+--
+--     The complete set of @S3Uris@ in this manifest constitutes the input
+--     data for the channel for this datasource. The object that each
+--     @S3Uris@ points to must be readable by the IAM role that Amazon
+--     SageMaker uses to perform tasks on your behalf.
+newTransformS3DataSource ::
+  -- | 's3DataType'
+  S3DataType ->
+  -- | 's3Uri'
+  Prelude.Text ->
+  TransformS3DataSource
+newTransformS3DataSource pS3DataType_ pS3Uri_ =
+  TransformS3DataSource'
+    { s3DataType = pS3DataType_,
+      s3Uri = pS3Uri_
+    }
+
+-- | If you choose @S3Prefix@, @S3Uri@ identifies a key name prefix. Amazon
+-- SageMaker uses all objects with the specified key name prefix for batch
+-- transform.
+--
+-- If you choose @ManifestFile@, @S3Uri@ identifies an object that is a
+-- manifest file containing a list of object keys that you want Amazon
+-- SageMaker to use for batch transform.
+--
+-- The following values are compatible: @ManifestFile@, @S3Prefix@
+--
+-- The following value is not compatible: @AugmentedManifestFile@
+transformS3DataSource_s3DataType :: Lens.Lens' TransformS3DataSource S3DataType
+transformS3DataSource_s3DataType = Lens.lens (\TransformS3DataSource' {s3DataType} -> s3DataType) (\s@TransformS3DataSource' {} a -> s {s3DataType = a} :: TransformS3DataSource)
+
+-- | Depending on the value specified for the @S3DataType@, identifies either
+-- a key name prefix or a manifest. For example:
+--
+-- -   A key name prefix might look like this:
+--     @s3:\/\/bucketname\/exampleprefix@.
+--
+-- -   A manifest might look like this:
+--     @s3:\/\/bucketname\/example.manifest@
+--
+--     The manifest is an S3 object which is a JSON file with the following
+--     format:
+--
+--     @[ {\"prefix\": \"s3:\/\/customer_bucket\/some\/prefix\/\"},@
+--
+--     @\"relative\/path\/to\/custdata-1\",@
+--
+--     @\"relative\/path\/custdata-2\",@
+--
+--     @...@
+--
+--     @\"relative\/path\/custdata-N\"@
+--
+--     @]@
+--
+--     The preceding JSON matches the following @S3Uris@:
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/to\/custdata-1@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-2@
+--
+--     @...@
+--
+--     @s3:\/\/customer_bucket\/some\/prefix\/relative\/path\/custdata-N@
+--
+--     The complete set of @S3Uris@ in this manifest constitutes the input
+--     data for the channel for this datasource. The object that each
+--     @S3Uris@ points to must be readable by the IAM role that Amazon
+--     SageMaker uses to perform tasks on your behalf.
+transformS3DataSource_s3Uri :: Lens.Lens' TransformS3DataSource Prelude.Text
+transformS3DataSource_s3Uri = Lens.lens (\TransformS3DataSource' {s3Uri} -> s3Uri) (\s@TransformS3DataSource' {} a -> s {s3Uri = a} :: TransformS3DataSource)
+
+instance Data.FromJSON TransformS3DataSource where
+  parseJSON =
+    Data.withObject
+      "TransformS3DataSource"
+      ( \x ->
+          TransformS3DataSource'
+            Prelude.<$> (x Data..: "S3DataType")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable TransformS3DataSource where
+  hashWithSalt _salt TransformS3DataSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3DataType
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData TransformS3DataSource where
+  rnf TransformS3DataSource' {..} =
+    Prelude.rnf s3DataType
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON TransformS3DataSource where
+  toJSON TransformS3DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("S3DataType" Data..= s3DataType),
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/Trial.hs b/gen/Amazonka/SageMaker/Types/Trial.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Trial.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Trial
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Trial 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 Amazonka.SageMaker.Types.MetadataProperties
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TrialComponentSimpleSummary
+import Amazonka.SageMaker.Types.TrialSource
+import Amazonka.SageMaker.Types.UserContext
+
+-- | The properties of a trial as returned by the Search API.
+--
+-- /See:/ 'newTrial' smart constructor.
+data Trial = Trial'
+  { -- | Who created the trial.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the trial was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+    -- @TrialName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment the trial is part of.
+    experimentName :: Prelude.Maybe Prelude.Text,
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | Who last modified the trial.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    source :: Prelude.Maybe TrialSource,
+    -- | The list of tags that are associated with the trial. You can use Search
+    -- API to search on the tags.
+    tags :: Prelude.Maybe [Tag],
+    -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of the components associated with the trial. For each component,
+    -- a summary of the component\'s properties is included.
+    trialComponentSummaries :: Prelude.Maybe [TrialComponentSimpleSummary],
+    -- | The name of the trial.
+    trialName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Trial' 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:
+--
+-- 'createdBy', 'trial_createdBy' - Who created the trial.
+--
+-- 'creationTime', 'trial_creationTime' - When the trial was created.
+--
+-- 'displayName', 'trial_displayName' - The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+-- @TrialName@ is displayed.
+--
+-- 'experimentName', 'trial_experimentName' - The name of the experiment the trial is part of.
+--
+-- 'lastModifiedBy', 'trial_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'trial_lastModifiedTime' - Who last modified the trial.
+--
+-- 'metadataProperties', 'trial_metadataProperties' - Undocumented member.
+--
+-- 'source', 'trial_source' - Undocumented member.
+--
+-- 'tags', 'trial_tags' - The list of tags that are associated with the trial. You can use Search
+-- API to search on the tags.
+--
+-- 'trialArn', 'trial_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'trialComponentSummaries', 'trial_trialComponentSummaries' - A list of the components associated with the trial. For each component,
+-- a summary of the component\'s properties is included.
+--
+-- 'trialName', 'trial_trialName' - The name of the trial.
+newTrial ::
+  Trial
+newTrial =
+  Trial'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      experimentName = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      source = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      trialArn = Prelude.Nothing,
+      trialComponentSummaries = Prelude.Nothing,
+      trialName = Prelude.Nothing
+    }
+
+-- | Who created the trial.
+trial_createdBy :: Lens.Lens' Trial (Prelude.Maybe UserContext)
+trial_createdBy = Lens.lens (\Trial' {createdBy} -> createdBy) (\s@Trial' {} a -> s {createdBy = a} :: Trial)
+
+-- | When the trial was created.
+trial_creationTime :: Lens.Lens' Trial (Prelude.Maybe Prelude.UTCTime)
+trial_creationTime = Lens.lens (\Trial' {creationTime} -> creationTime) (\s@Trial' {} a -> s {creationTime = a} :: Trial) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+-- @TrialName@ is displayed.
+trial_displayName :: Lens.Lens' Trial (Prelude.Maybe Prelude.Text)
+trial_displayName = Lens.lens (\Trial' {displayName} -> displayName) (\s@Trial' {} a -> s {displayName = a} :: Trial)
+
+-- | The name of the experiment the trial is part of.
+trial_experimentName :: Lens.Lens' Trial (Prelude.Maybe Prelude.Text)
+trial_experimentName = Lens.lens (\Trial' {experimentName} -> experimentName) (\s@Trial' {} a -> s {experimentName = a} :: Trial)
+
+-- | Undocumented member.
+trial_lastModifiedBy :: Lens.Lens' Trial (Prelude.Maybe UserContext)
+trial_lastModifiedBy = Lens.lens (\Trial' {lastModifiedBy} -> lastModifiedBy) (\s@Trial' {} a -> s {lastModifiedBy = a} :: Trial)
+
+-- | Who last modified the trial.
+trial_lastModifiedTime :: Lens.Lens' Trial (Prelude.Maybe Prelude.UTCTime)
+trial_lastModifiedTime = Lens.lens (\Trial' {lastModifiedTime} -> lastModifiedTime) (\s@Trial' {} a -> s {lastModifiedTime = a} :: Trial) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+trial_metadataProperties :: Lens.Lens' Trial (Prelude.Maybe MetadataProperties)
+trial_metadataProperties = Lens.lens (\Trial' {metadataProperties} -> metadataProperties) (\s@Trial' {} a -> s {metadataProperties = a} :: Trial)
+
+-- | Undocumented member.
+trial_source :: Lens.Lens' Trial (Prelude.Maybe TrialSource)
+trial_source = Lens.lens (\Trial' {source} -> source) (\s@Trial' {} a -> s {source = a} :: Trial)
+
+-- | The list of tags that are associated with the trial. You can use Search
+-- API to search on the tags.
+trial_tags :: Lens.Lens' Trial (Prelude.Maybe [Tag])
+trial_tags = Lens.lens (\Trial' {tags} -> tags) (\s@Trial' {} a -> s {tags = a} :: Trial) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the trial.
+trial_trialArn :: Lens.Lens' Trial (Prelude.Maybe Prelude.Text)
+trial_trialArn = Lens.lens (\Trial' {trialArn} -> trialArn) (\s@Trial' {} a -> s {trialArn = a} :: Trial)
+
+-- | A list of the components associated with the trial. For each component,
+-- a summary of the component\'s properties is included.
+trial_trialComponentSummaries :: Lens.Lens' Trial (Prelude.Maybe [TrialComponentSimpleSummary])
+trial_trialComponentSummaries = Lens.lens (\Trial' {trialComponentSummaries} -> trialComponentSummaries) (\s@Trial' {} a -> s {trialComponentSummaries = a} :: Trial) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the trial.
+trial_trialName :: Lens.Lens' Trial (Prelude.Maybe Prelude.Text)
+trial_trialName = Lens.lens (\Trial' {trialName} -> trialName) (\s@Trial' {} a -> s {trialName = a} :: Trial)
+
+instance Data.FromJSON Trial where
+  parseJSON =
+    Data.withObject
+      "Trial"
+      ( \x ->
+          Trial'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "ExperimentName")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "MetadataProperties")
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TrialArn")
+            Prelude.<*> ( x
+                            Data..:? "TrialComponentSummaries"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "TrialName")
+      )
+
+instance Prelude.Hashable Trial where
+  hashWithSalt _salt Trial' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` experimentName
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trialArn
+      `Prelude.hashWithSalt` trialComponentSummaries
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData Trial where
+  rnf Trial' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf experimentName
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf trialComponentSummaries
+      `Prelude.seq` Prelude.rnf trialName
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponent.hs b/gen/Amazonka/SageMaker/Types/TrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponent.hs
@@ -0,0 +1,338 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponent 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 Amazonka.SageMaker.Types.MetadataProperties
+import Amazonka.SageMaker.Types.Parent
+import Amazonka.SageMaker.Types.Tag
+import Amazonka.SageMaker.Types.TrialComponentArtifact
+import Amazonka.SageMaker.Types.TrialComponentMetricSummary
+import Amazonka.SageMaker.Types.TrialComponentParameterValue
+import Amazonka.SageMaker.Types.TrialComponentSource
+import Amazonka.SageMaker.Types.TrialComponentSourceDetail
+import Amazonka.SageMaker.Types.TrialComponentStatus
+import Amazonka.SageMaker.Types.UserContext
+
+-- | The properties of a trial component as returned by the Search API.
+--
+-- /See:/ 'newTrialComponent' smart constructor.
+data TrialComponent = TrialComponent'
+  { -- | Who created the trial component.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the component was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the component as displayed. If @DisplayName@ isn\'t
+    -- specified, @TrialComponentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When the component ended.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The input artifacts of the component.
+    inputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the component was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the lineage group resource.
+    lineageGroupArn :: Prelude.Maybe Prelude.Text,
+    metadataProperties :: Prelude.Maybe MetadataProperties,
+    -- | The metrics for the component.
+    metrics :: Prelude.Maybe [TrialComponentMetricSummary],
+    -- | The output artifacts of the component.
+    outputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    -- | The hyperparameters of the component.
+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue),
+    -- | An array of the parents of the component. A parent is a trial the
+    -- component is associated with and the experiment the trial is part of. A
+    -- component might not have any parents.
+    parents :: Prelude.Maybe [Parent],
+    -- | The name of the experiment run.
+    runName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) and job type of the source of the
+    -- component.
+    source :: Prelude.Maybe TrialComponentSource,
+    -- | Details of the source of the component.
+    sourceDetail :: Prelude.Maybe TrialComponentSourceDetail,
+    -- | When the component started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    status :: Prelude.Maybe TrialComponentStatus,
+    -- | The list of tags that are associated with the component. You can use
+    -- Search API to search on the tags.
+    tags :: Prelude.Maybe [Tag],
+    -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial component.
+    trialComponentName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponent' 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:
+--
+-- 'createdBy', 'trialComponent_createdBy' - Who created the trial component.
+--
+-- 'creationTime', 'trialComponent_creationTime' - When the component was created.
+--
+-- 'displayName', 'trialComponent_displayName' - The name of the component as displayed. If @DisplayName@ isn\'t
+-- specified, @TrialComponentName@ is displayed.
+--
+-- 'endTime', 'trialComponent_endTime' - When the component ended.
+--
+-- 'inputArtifacts', 'trialComponent_inputArtifacts' - The input artifacts of the component.
+--
+-- 'lastModifiedBy', 'trialComponent_lastModifiedBy' - Undocumented member.
+--
+-- 'lastModifiedTime', 'trialComponent_lastModifiedTime' - When the component was last modified.
+--
+-- 'lineageGroupArn', 'trialComponent_lineageGroupArn' - The Amazon Resource Name (ARN) of the lineage group resource.
+--
+-- 'metadataProperties', 'trialComponent_metadataProperties' - Undocumented member.
+--
+-- 'metrics', 'trialComponent_metrics' - The metrics for the component.
+--
+-- 'outputArtifacts', 'trialComponent_outputArtifacts' - The output artifacts of the component.
+--
+-- 'parameters', 'trialComponent_parameters' - The hyperparameters of the component.
+--
+-- 'parents', 'trialComponent_parents' - An array of the parents of the component. A parent is a trial the
+-- component is associated with and the experiment the trial is part of. A
+-- component might not have any parents.
+--
+-- 'runName', 'trialComponent_runName' - The name of the experiment run.
+--
+-- 'source', 'trialComponent_source' - The Amazon Resource Name (ARN) and job type of the source of the
+-- component.
+--
+-- 'sourceDetail', 'trialComponent_sourceDetail' - Details of the source of the component.
+--
+-- 'startTime', 'trialComponent_startTime' - When the component started.
+--
+-- 'status', 'trialComponent_status' - Undocumented member.
+--
+-- 'tags', 'trialComponent_tags' - The list of tags that are associated with the component. You can use
+-- Search API to search on the tags.
+--
+-- 'trialComponentArn', 'trialComponent_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'trialComponentName', 'trialComponent_trialComponentName' - The name of the trial component.
+newTrialComponent ::
+  TrialComponent
+newTrialComponent =
+  TrialComponent'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      inputArtifacts = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      lineageGroupArn = Prelude.Nothing,
+      metadataProperties = Prelude.Nothing,
+      metrics = Prelude.Nothing,
+      outputArtifacts = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      parents = Prelude.Nothing,
+      runName = Prelude.Nothing,
+      source = Prelude.Nothing,
+      sourceDetail = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      trialComponentArn = Prelude.Nothing,
+      trialComponentName = Prelude.Nothing
+    }
+
+-- | Who created the trial component.
+trialComponent_createdBy :: Lens.Lens' TrialComponent (Prelude.Maybe UserContext)
+trialComponent_createdBy = Lens.lens (\TrialComponent' {createdBy} -> createdBy) (\s@TrialComponent' {} a -> s {createdBy = a} :: TrialComponent)
+
+-- | When the component was created.
+trialComponent_creationTime :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.UTCTime)
+trialComponent_creationTime = Lens.lens (\TrialComponent' {creationTime} -> creationTime) (\s@TrialComponent' {} a -> s {creationTime = a} :: TrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the component as displayed. If @DisplayName@ isn\'t
+-- specified, @TrialComponentName@ is displayed.
+trialComponent_displayName :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.Text)
+trialComponent_displayName = Lens.lens (\TrialComponent' {displayName} -> displayName) (\s@TrialComponent' {} a -> s {displayName = a} :: TrialComponent)
+
+-- | When the component ended.
+trialComponent_endTime :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.UTCTime)
+trialComponent_endTime = Lens.lens (\TrialComponent' {endTime} -> endTime) (\s@TrialComponent' {} a -> s {endTime = a} :: TrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | The input artifacts of the component.
+trialComponent_inputArtifacts :: Lens.Lens' TrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+trialComponent_inputArtifacts = Lens.lens (\TrialComponent' {inputArtifacts} -> inputArtifacts) (\s@TrialComponent' {} a -> s {inputArtifacts = a} :: TrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+trialComponent_lastModifiedBy :: Lens.Lens' TrialComponent (Prelude.Maybe UserContext)
+trialComponent_lastModifiedBy = Lens.lens (\TrialComponent' {lastModifiedBy} -> lastModifiedBy) (\s@TrialComponent' {} a -> s {lastModifiedBy = a} :: TrialComponent)
+
+-- | When the component was last modified.
+trialComponent_lastModifiedTime :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.UTCTime)
+trialComponent_lastModifiedTime = Lens.lens (\TrialComponent' {lastModifiedTime} -> lastModifiedTime) (\s@TrialComponent' {} a -> s {lastModifiedTime = a} :: TrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the lineage group resource.
+trialComponent_lineageGroupArn :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.Text)
+trialComponent_lineageGroupArn = Lens.lens (\TrialComponent' {lineageGroupArn} -> lineageGroupArn) (\s@TrialComponent' {} a -> s {lineageGroupArn = a} :: TrialComponent)
+
+-- | Undocumented member.
+trialComponent_metadataProperties :: Lens.Lens' TrialComponent (Prelude.Maybe MetadataProperties)
+trialComponent_metadataProperties = Lens.lens (\TrialComponent' {metadataProperties} -> metadataProperties) (\s@TrialComponent' {} a -> s {metadataProperties = a} :: TrialComponent)
+
+-- | The metrics for the component.
+trialComponent_metrics :: Lens.Lens' TrialComponent (Prelude.Maybe [TrialComponentMetricSummary])
+trialComponent_metrics = Lens.lens (\TrialComponent' {metrics} -> metrics) (\s@TrialComponent' {} a -> s {metrics = a} :: TrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The output artifacts of the component.
+trialComponent_outputArtifacts :: Lens.Lens' TrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+trialComponent_outputArtifacts = Lens.lens (\TrialComponent' {outputArtifacts} -> outputArtifacts) (\s@TrialComponent' {} a -> s {outputArtifacts = a} :: TrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hyperparameters of the component.
+trialComponent_parameters :: Lens.Lens' TrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue))
+trialComponent_parameters = Lens.lens (\TrialComponent' {parameters} -> parameters) (\s@TrialComponent' {} a -> s {parameters = a} :: TrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of the parents of the component. A parent is a trial the
+-- component is associated with and the experiment the trial is part of. A
+-- component might not have any parents.
+trialComponent_parents :: Lens.Lens' TrialComponent (Prelude.Maybe [Parent])
+trialComponent_parents = Lens.lens (\TrialComponent' {parents} -> parents) (\s@TrialComponent' {} a -> s {parents = a} :: TrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the experiment run.
+trialComponent_runName :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.Text)
+trialComponent_runName = Lens.lens (\TrialComponent' {runName} -> runName) (\s@TrialComponent' {} a -> s {runName = a} :: TrialComponent)
+
+-- | The Amazon Resource Name (ARN) and job type of the source of the
+-- component.
+trialComponent_source :: Lens.Lens' TrialComponent (Prelude.Maybe TrialComponentSource)
+trialComponent_source = Lens.lens (\TrialComponent' {source} -> source) (\s@TrialComponent' {} a -> s {source = a} :: TrialComponent)
+
+-- | Details of the source of the component.
+trialComponent_sourceDetail :: Lens.Lens' TrialComponent (Prelude.Maybe TrialComponentSourceDetail)
+trialComponent_sourceDetail = Lens.lens (\TrialComponent' {sourceDetail} -> sourceDetail) (\s@TrialComponent' {} a -> s {sourceDetail = a} :: TrialComponent)
+
+-- | When the component started.
+trialComponent_startTime :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.UTCTime)
+trialComponent_startTime = Lens.lens (\TrialComponent' {startTime} -> startTime) (\s@TrialComponent' {} a -> s {startTime = a} :: TrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | Undocumented member.
+trialComponent_status :: Lens.Lens' TrialComponent (Prelude.Maybe TrialComponentStatus)
+trialComponent_status = Lens.lens (\TrialComponent' {status} -> status) (\s@TrialComponent' {} a -> s {status = a} :: TrialComponent)
+
+-- | The list of tags that are associated with the component. You can use
+-- Search API to search on the tags.
+trialComponent_tags :: Lens.Lens' TrialComponent (Prelude.Maybe [Tag])
+trialComponent_tags = Lens.lens (\TrialComponent' {tags} -> tags) (\s@TrialComponent' {} a -> s {tags = a} :: TrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+trialComponent_trialComponentArn :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.Text)
+trialComponent_trialComponentArn = Lens.lens (\TrialComponent' {trialComponentArn} -> trialComponentArn) (\s@TrialComponent' {} a -> s {trialComponentArn = a} :: TrialComponent)
+
+-- | The name of the trial component.
+trialComponent_trialComponentName :: Lens.Lens' TrialComponent (Prelude.Maybe Prelude.Text)
+trialComponent_trialComponentName = Lens.lens (\TrialComponent' {trialComponentName} -> trialComponentName) (\s@TrialComponent' {} a -> s {trialComponentName = a} :: TrialComponent)
+
+instance Data.FromJSON TrialComponent where
+  parseJSON =
+    Data.withObject
+      "TrialComponent"
+      ( \x ->
+          TrialComponent'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "InputArtifacts" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "LineageGroupArn")
+            Prelude.<*> (x Data..:? "MetadataProperties")
+            Prelude.<*> (x Data..:? "Metrics" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "OutputArtifacts"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Parameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Parents" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RunName")
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "SourceDetail")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TrialComponentArn")
+            Prelude.<*> (x Data..:? "TrialComponentName")
+      )
+
+instance Prelude.Hashable TrialComponent where
+  hashWithSalt _salt TrialComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` inputArtifacts
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` lineageGroupArn
+      `Prelude.hashWithSalt` metadataProperties
+      `Prelude.hashWithSalt` metrics
+      `Prelude.hashWithSalt` outputArtifacts
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` parents
+      `Prelude.hashWithSalt` runName
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` sourceDetail
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trialComponentArn
+      `Prelude.hashWithSalt` trialComponentName
+
+instance Prelude.NFData TrialComponent where
+  rnf TrialComponent' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf inputArtifacts
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf lineageGroupArn
+      `Prelude.seq` Prelude.rnf metadataProperties
+      `Prelude.seq` Prelude.rnf metrics
+      `Prelude.seq` Prelude.rnf outputArtifacts
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf parents
+      `Prelude.seq` Prelude.rnf runName
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf sourceDetail
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf
+        trialComponentName
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentArtifact.hs b/gen/Amazonka/SageMaker/Types/TrialComponentArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentArtifact.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentArtifact
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentArtifact 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
+
+-- | Represents an input or output artifact of a trial component. You specify
+-- @TrialComponentArtifact@ as part of the @InputArtifacts@ and
+-- @OutputArtifacts@ parameters in the CreateTrialComponent request.
+--
+-- Examples of input artifacts are datasets, algorithms, hyperparameters,
+-- source code, and instance types. Examples of output artifacts are
+-- metrics, snapshots, logs, and images.
+--
+-- /See:/ 'newTrialComponentArtifact' smart constructor.
+data TrialComponentArtifact = TrialComponentArtifact'
+  { -- | The media type of the artifact, which indicates the type of data in the
+    -- artifact file. The media type consists of a /type/ and a /subtype/
+    -- concatenated with a slash (\/) character, for example, text\/csv,
+    -- image\/jpeg, and s3\/uri. The type specifies the category of the media.
+    -- The subtype specifies the kind of data.
+    mediaType :: Prelude.Maybe Prelude.Text,
+    -- | The location of the artifact.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentArtifact' 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:
+--
+-- 'mediaType', 'trialComponentArtifact_mediaType' - The media type of the artifact, which indicates the type of data in the
+-- artifact file. The media type consists of a /type/ and a /subtype/
+-- concatenated with a slash (\/) character, for example, text\/csv,
+-- image\/jpeg, and s3\/uri. The type specifies the category of the media.
+-- The subtype specifies the kind of data.
+--
+-- 'value', 'trialComponentArtifact_value' - The location of the artifact.
+newTrialComponentArtifact ::
+  -- | 'value'
+  Prelude.Text ->
+  TrialComponentArtifact
+newTrialComponentArtifact pValue_ =
+  TrialComponentArtifact'
+    { mediaType =
+        Prelude.Nothing,
+      value = pValue_
+    }
+
+-- | The media type of the artifact, which indicates the type of data in the
+-- artifact file. The media type consists of a /type/ and a /subtype/
+-- concatenated with a slash (\/) character, for example, text\/csv,
+-- image\/jpeg, and s3\/uri. The type specifies the category of the media.
+-- The subtype specifies the kind of data.
+trialComponentArtifact_mediaType :: Lens.Lens' TrialComponentArtifact (Prelude.Maybe Prelude.Text)
+trialComponentArtifact_mediaType = Lens.lens (\TrialComponentArtifact' {mediaType} -> mediaType) (\s@TrialComponentArtifact' {} a -> s {mediaType = a} :: TrialComponentArtifact)
+
+-- | The location of the artifact.
+trialComponentArtifact_value :: Lens.Lens' TrialComponentArtifact Prelude.Text
+trialComponentArtifact_value = Lens.lens (\TrialComponentArtifact' {value} -> value) (\s@TrialComponentArtifact' {} a -> s {value = a} :: TrialComponentArtifact)
+
+instance Data.FromJSON TrialComponentArtifact where
+  parseJSON =
+    Data.withObject
+      "TrialComponentArtifact"
+      ( \x ->
+          TrialComponentArtifact'
+            Prelude.<$> (x Data..:? "MediaType")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable TrialComponentArtifact where
+  hashWithSalt _salt TrialComponentArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` mediaType
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData TrialComponentArtifact where
+  rnf TrialComponentArtifact' {..} =
+    Prelude.rnf mediaType
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON TrialComponentArtifact where
+  toJSON TrialComponentArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MediaType" Data..=) Prelude.<$> mediaType,
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentMetricSummary.hs b/gen/Amazonka/SageMaker/Types/TrialComponentMetricSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentMetricSummary.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentMetricSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentMetricSummary 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
+
+-- | A summary of the metrics of a trial component.
+--
+-- /See:/ 'newTrialComponentMetricSummary' smart constructor.
+data TrialComponentMetricSummary = TrialComponentMetricSummary'
+  { -- | The average value of the metric.
+    avg :: Prelude.Maybe Prelude.Double,
+    -- | The number of samples used to generate the metric.
+    count :: Prelude.Maybe Prelude.Int,
+    -- | The most recent value of the metric.
+    last :: Prelude.Maybe Prelude.Double,
+    -- | The maximum value of the metric.
+    max :: Prelude.Maybe Prelude.Double,
+    -- | The name of the metric.
+    metricName :: Prelude.Maybe Prelude.Text,
+    -- | The minimum value of the metric.
+    min :: Prelude.Maybe Prelude.Double,
+    -- | The Amazon Resource Name (ARN) of the source.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The standard deviation of the metric.
+    stdDev :: Prelude.Maybe Prelude.Double,
+    -- | When the metric was last updated.
+    timeStamp :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentMetricSummary' 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:
+--
+-- 'avg', 'trialComponentMetricSummary_avg' - The average value of the metric.
+--
+-- 'count', 'trialComponentMetricSummary_count' - The number of samples used to generate the metric.
+--
+-- 'last', 'trialComponentMetricSummary_last' - The most recent value of the metric.
+--
+-- 'max', 'trialComponentMetricSummary_max' - The maximum value of the metric.
+--
+-- 'metricName', 'trialComponentMetricSummary_metricName' - The name of the metric.
+--
+-- 'min', 'trialComponentMetricSummary_min' - The minimum value of the metric.
+--
+-- 'sourceArn', 'trialComponentMetricSummary_sourceArn' - The Amazon Resource Name (ARN) of the source.
+--
+-- 'stdDev', 'trialComponentMetricSummary_stdDev' - The standard deviation of the metric.
+--
+-- 'timeStamp', 'trialComponentMetricSummary_timeStamp' - When the metric was last updated.
+newTrialComponentMetricSummary ::
+  TrialComponentMetricSummary
+newTrialComponentMetricSummary =
+  TrialComponentMetricSummary'
+    { avg = Prelude.Nothing,
+      count = Prelude.Nothing,
+      last = Prelude.Nothing,
+      max = Prelude.Nothing,
+      metricName = Prelude.Nothing,
+      min = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      stdDev = Prelude.Nothing,
+      timeStamp = Prelude.Nothing
+    }
+
+-- | The average value of the metric.
+trialComponentMetricSummary_avg :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Double)
+trialComponentMetricSummary_avg = Lens.lens (\TrialComponentMetricSummary' {avg} -> avg) (\s@TrialComponentMetricSummary' {} a -> s {avg = a} :: TrialComponentMetricSummary)
+
+-- | The number of samples used to generate the metric.
+trialComponentMetricSummary_count :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Int)
+trialComponentMetricSummary_count = Lens.lens (\TrialComponentMetricSummary' {count} -> count) (\s@TrialComponentMetricSummary' {} a -> s {count = a} :: TrialComponentMetricSummary)
+
+-- | The most recent value of the metric.
+trialComponentMetricSummary_last :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Double)
+trialComponentMetricSummary_last = Lens.lens (\TrialComponentMetricSummary' {last} -> last) (\s@TrialComponentMetricSummary' {} a -> s {last = a} :: TrialComponentMetricSummary)
+
+-- | The maximum value of the metric.
+trialComponentMetricSummary_max :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Double)
+trialComponentMetricSummary_max = Lens.lens (\TrialComponentMetricSummary' {max} -> max) (\s@TrialComponentMetricSummary' {} a -> s {max = a} :: TrialComponentMetricSummary)
+
+-- | The name of the metric.
+trialComponentMetricSummary_metricName :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Text)
+trialComponentMetricSummary_metricName = Lens.lens (\TrialComponentMetricSummary' {metricName} -> metricName) (\s@TrialComponentMetricSummary' {} a -> s {metricName = a} :: TrialComponentMetricSummary)
+
+-- | The minimum value of the metric.
+trialComponentMetricSummary_min :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Double)
+trialComponentMetricSummary_min = Lens.lens (\TrialComponentMetricSummary' {min} -> min) (\s@TrialComponentMetricSummary' {} a -> s {min = a} :: TrialComponentMetricSummary)
+
+-- | The Amazon Resource Name (ARN) of the source.
+trialComponentMetricSummary_sourceArn :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Text)
+trialComponentMetricSummary_sourceArn = Lens.lens (\TrialComponentMetricSummary' {sourceArn} -> sourceArn) (\s@TrialComponentMetricSummary' {} a -> s {sourceArn = a} :: TrialComponentMetricSummary)
+
+-- | The standard deviation of the metric.
+trialComponentMetricSummary_stdDev :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.Double)
+trialComponentMetricSummary_stdDev = Lens.lens (\TrialComponentMetricSummary' {stdDev} -> stdDev) (\s@TrialComponentMetricSummary' {} a -> s {stdDev = a} :: TrialComponentMetricSummary)
+
+-- | When the metric was last updated.
+trialComponentMetricSummary_timeStamp :: Lens.Lens' TrialComponentMetricSummary (Prelude.Maybe Prelude.UTCTime)
+trialComponentMetricSummary_timeStamp = Lens.lens (\TrialComponentMetricSummary' {timeStamp} -> timeStamp) (\s@TrialComponentMetricSummary' {} a -> s {timeStamp = a} :: TrialComponentMetricSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON TrialComponentMetricSummary where
+  parseJSON =
+    Data.withObject
+      "TrialComponentMetricSummary"
+      ( \x ->
+          TrialComponentMetricSummary'
+            Prelude.<$> (x Data..:? "Avg")
+            Prelude.<*> (x Data..:? "Count")
+            Prelude.<*> (x Data..:? "Last")
+            Prelude.<*> (x Data..:? "Max")
+            Prelude.<*> (x Data..:? "MetricName")
+            Prelude.<*> (x Data..:? "Min")
+            Prelude.<*> (x Data..:? "SourceArn")
+            Prelude.<*> (x Data..:? "StdDev")
+            Prelude.<*> (x Data..:? "TimeStamp")
+      )
+
+instance Prelude.Hashable TrialComponentMetricSummary where
+  hashWithSalt _salt TrialComponentMetricSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` avg
+      `Prelude.hashWithSalt` count
+      `Prelude.hashWithSalt` last
+      `Prelude.hashWithSalt` max
+      `Prelude.hashWithSalt` metricName
+      `Prelude.hashWithSalt` min
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` stdDev
+      `Prelude.hashWithSalt` timeStamp
+
+instance Prelude.NFData TrialComponentMetricSummary where
+  rnf TrialComponentMetricSummary' {..} =
+    Prelude.rnf avg
+      `Prelude.seq` Prelude.rnf count
+      `Prelude.seq` Prelude.rnf last
+      `Prelude.seq` Prelude.rnf max
+      `Prelude.seq` Prelude.rnf metricName
+      `Prelude.seq` Prelude.rnf min
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf stdDev
+      `Prelude.seq` Prelude.rnf timeStamp
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentParameterValue.hs b/gen/Amazonka/SageMaker/Types/TrialComponentParameterValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentParameterValue.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentParameterValue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentParameterValue 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
+
+-- | The value of a hyperparameter. Only one of @NumberValue@ or
+-- @StringValue@ can be specified.
+--
+-- This object is specified in the CreateTrialComponent request.
+--
+-- /See:/ 'newTrialComponentParameterValue' smart constructor.
+data TrialComponentParameterValue = TrialComponentParameterValue'
+  { -- | The numeric value of a numeric hyperparameter. If you specify a value
+    -- for this parameter, you can\'t specify the @StringValue@ parameter.
+    numberValue :: Prelude.Maybe Prelude.Double,
+    -- | The string value of a categorical hyperparameter. If you specify a value
+    -- for this parameter, you can\'t specify the @NumberValue@ parameter.
+    stringValue :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentParameterValue' 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:
+--
+-- 'numberValue', 'trialComponentParameterValue_numberValue' - The numeric value of a numeric hyperparameter. If you specify a value
+-- for this parameter, you can\'t specify the @StringValue@ parameter.
+--
+-- 'stringValue', 'trialComponentParameterValue_stringValue' - The string value of a categorical hyperparameter. If you specify a value
+-- for this parameter, you can\'t specify the @NumberValue@ parameter.
+newTrialComponentParameterValue ::
+  TrialComponentParameterValue
+newTrialComponentParameterValue =
+  TrialComponentParameterValue'
+    { numberValue =
+        Prelude.Nothing,
+      stringValue = Prelude.Nothing
+    }
+
+-- | The numeric value of a numeric hyperparameter. If you specify a value
+-- for this parameter, you can\'t specify the @StringValue@ parameter.
+trialComponentParameterValue_numberValue :: Lens.Lens' TrialComponentParameterValue (Prelude.Maybe Prelude.Double)
+trialComponentParameterValue_numberValue = Lens.lens (\TrialComponentParameterValue' {numberValue} -> numberValue) (\s@TrialComponentParameterValue' {} a -> s {numberValue = a} :: TrialComponentParameterValue)
+
+-- | The string value of a categorical hyperparameter. If you specify a value
+-- for this parameter, you can\'t specify the @NumberValue@ parameter.
+trialComponentParameterValue_stringValue :: Lens.Lens' TrialComponentParameterValue (Prelude.Maybe Prelude.Text)
+trialComponentParameterValue_stringValue = Lens.lens (\TrialComponentParameterValue' {stringValue} -> stringValue) (\s@TrialComponentParameterValue' {} a -> s {stringValue = a} :: TrialComponentParameterValue)
+
+instance Data.FromJSON TrialComponentParameterValue where
+  parseJSON =
+    Data.withObject
+      "TrialComponentParameterValue"
+      ( \x ->
+          TrialComponentParameterValue'
+            Prelude.<$> (x Data..:? "NumberValue")
+            Prelude.<*> (x Data..:? "StringValue")
+      )
+
+instance
+  Prelude.Hashable
+    TrialComponentParameterValue
+  where
+  hashWithSalt _salt TrialComponentParameterValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` numberValue
+      `Prelude.hashWithSalt` stringValue
+
+instance Prelude.NFData TrialComponentParameterValue where
+  rnf TrialComponentParameterValue' {..} =
+    Prelude.rnf numberValue
+      `Prelude.seq` Prelude.rnf stringValue
+
+instance Data.ToJSON TrialComponentParameterValue where
+  toJSON TrialComponentParameterValue' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NumberValue" Data..=) Prelude.<$> numberValue,
+            ("StringValue" Data..=) Prelude.<$> stringValue
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentPrimaryStatus.hs b/gen/Amazonka/SageMaker/Types/TrialComponentPrimaryStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentPrimaryStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.TrialComponentPrimaryStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentPrimaryStatus
+  ( TrialComponentPrimaryStatus
+      ( ..,
+        TrialComponentPrimaryStatus_Completed,
+        TrialComponentPrimaryStatus_Failed,
+        TrialComponentPrimaryStatus_InProgress,
+        TrialComponentPrimaryStatus_Stopped,
+        TrialComponentPrimaryStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TrialComponentPrimaryStatus = TrialComponentPrimaryStatus'
+  { fromTrialComponentPrimaryStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TrialComponentPrimaryStatus_Completed :: TrialComponentPrimaryStatus
+pattern TrialComponentPrimaryStatus_Completed = TrialComponentPrimaryStatus' "Completed"
+
+pattern TrialComponentPrimaryStatus_Failed :: TrialComponentPrimaryStatus
+pattern TrialComponentPrimaryStatus_Failed = TrialComponentPrimaryStatus' "Failed"
+
+pattern TrialComponentPrimaryStatus_InProgress :: TrialComponentPrimaryStatus
+pattern TrialComponentPrimaryStatus_InProgress = TrialComponentPrimaryStatus' "InProgress"
+
+pattern TrialComponentPrimaryStatus_Stopped :: TrialComponentPrimaryStatus
+pattern TrialComponentPrimaryStatus_Stopped = TrialComponentPrimaryStatus' "Stopped"
+
+pattern TrialComponentPrimaryStatus_Stopping :: TrialComponentPrimaryStatus
+pattern TrialComponentPrimaryStatus_Stopping = TrialComponentPrimaryStatus' "Stopping"
+
+{-# COMPLETE
+  TrialComponentPrimaryStatus_Completed,
+  TrialComponentPrimaryStatus_Failed,
+  TrialComponentPrimaryStatus_InProgress,
+  TrialComponentPrimaryStatus_Stopped,
+  TrialComponentPrimaryStatus_Stopping,
+  TrialComponentPrimaryStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentSimpleSummary.hs b/gen/Amazonka/SageMaker/Types/TrialComponentSimpleSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentSimpleSummary.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentSimpleSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentSimpleSummary 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 Amazonka.SageMaker.Types.TrialComponentSource
+import Amazonka.SageMaker.Types.UserContext
+
+-- | A short summary of a trial component.
+--
+-- /See:/ 'newTrialComponentSimpleSummary' smart constructor.
+data TrialComponentSimpleSummary = TrialComponentSimpleSummary'
+  { createdBy :: Prelude.Maybe UserContext,
+    -- | When the component was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial component.
+    trialComponentName :: Prelude.Maybe Prelude.Text,
+    trialComponentSource :: Prelude.Maybe TrialComponentSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentSimpleSummary' 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:
+--
+-- 'createdBy', 'trialComponentSimpleSummary_createdBy' - Undocumented member.
+--
+-- 'creationTime', 'trialComponentSimpleSummary_creationTime' - When the component was created.
+--
+-- 'trialComponentArn', 'trialComponentSimpleSummary_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'trialComponentName', 'trialComponentSimpleSummary_trialComponentName' - The name of the trial component.
+--
+-- 'trialComponentSource', 'trialComponentSimpleSummary_trialComponentSource' - Undocumented member.
+newTrialComponentSimpleSummary ::
+  TrialComponentSimpleSummary
+newTrialComponentSimpleSummary =
+  TrialComponentSimpleSummary'
+    { createdBy =
+        Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      trialComponentArn = Prelude.Nothing,
+      trialComponentName = Prelude.Nothing,
+      trialComponentSource = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+trialComponentSimpleSummary_createdBy :: Lens.Lens' TrialComponentSimpleSummary (Prelude.Maybe UserContext)
+trialComponentSimpleSummary_createdBy = Lens.lens (\TrialComponentSimpleSummary' {createdBy} -> createdBy) (\s@TrialComponentSimpleSummary' {} a -> s {createdBy = a} :: TrialComponentSimpleSummary)
+
+-- | When the component was created.
+trialComponentSimpleSummary_creationTime :: Lens.Lens' TrialComponentSimpleSummary (Prelude.Maybe Prelude.UTCTime)
+trialComponentSimpleSummary_creationTime = Lens.lens (\TrialComponentSimpleSummary' {creationTime} -> creationTime) (\s@TrialComponentSimpleSummary' {} a -> s {creationTime = a} :: TrialComponentSimpleSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+trialComponentSimpleSummary_trialComponentArn :: Lens.Lens' TrialComponentSimpleSummary (Prelude.Maybe Prelude.Text)
+trialComponentSimpleSummary_trialComponentArn = Lens.lens (\TrialComponentSimpleSummary' {trialComponentArn} -> trialComponentArn) (\s@TrialComponentSimpleSummary' {} a -> s {trialComponentArn = a} :: TrialComponentSimpleSummary)
+
+-- | The name of the trial component.
+trialComponentSimpleSummary_trialComponentName :: Lens.Lens' TrialComponentSimpleSummary (Prelude.Maybe Prelude.Text)
+trialComponentSimpleSummary_trialComponentName = Lens.lens (\TrialComponentSimpleSummary' {trialComponentName} -> trialComponentName) (\s@TrialComponentSimpleSummary' {} a -> s {trialComponentName = a} :: TrialComponentSimpleSummary)
+
+-- | Undocumented member.
+trialComponentSimpleSummary_trialComponentSource :: Lens.Lens' TrialComponentSimpleSummary (Prelude.Maybe TrialComponentSource)
+trialComponentSimpleSummary_trialComponentSource = Lens.lens (\TrialComponentSimpleSummary' {trialComponentSource} -> trialComponentSource) (\s@TrialComponentSimpleSummary' {} a -> s {trialComponentSource = a} :: TrialComponentSimpleSummary)
+
+instance Data.FromJSON TrialComponentSimpleSummary where
+  parseJSON =
+    Data.withObject
+      "TrialComponentSimpleSummary"
+      ( \x ->
+          TrialComponentSimpleSummary'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "TrialComponentArn")
+            Prelude.<*> (x Data..:? "TrialComponentName")
+            Prelude.<*> (x Data..:? "TrialComponentSource")
+      )
+
+instance Prelude.Hashable TrialComponentSimpleSummary where
+  hashWithSalt _salt TrialComponentSimpleSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` trialComponentArn
+      `Prelude.hashWithSalt` trialComponentName
+      `Prelude.hashWithSalt` trialComponentSource
+
+instance Prelude.NFData TrialComponentSimpleSummary where
+  rnf TrialComponentSimpleSummary' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf trialComponentName
+      `Prelude.seq` Prelude.rnf trialComponentSource
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentSource.hs b/gen/Amazonka/SageMaker/Types/TrialComponentSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentSource.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentSource 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
+
+-- | The Amazon Resource Name (ARN) and job type of the source of a trial
+-- component.
+--
+-- /See:/ 'newTrialComponentSource' smart constructor.
+data TrialComponentSource = TrialComponentSource'
+  { -- | The source job type.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The source Amazon Resource Name (ARN).
+    sourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentSource' 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:
+--
+-- 'sourceType', 'trialComponentSource_sourceType' - The source job type.
+--
+-- 'sourceArn', 'trialComponentSource_sourceArn' - The source Amazon Resource Name (ARN).
+newTrialComponentSource ::
+  -- | 'sourceArn'
+  Prelude.Text ->
+  TrialComponentSource
+newTrialComponentSource pSourceArn_ =
+  TrialComponentSource'
+    { sourceType = Prelude.Nothing,
+      sourceArn = pSourceArn_
+    }
+
+-- | The source job type.
+trialComponentSource_sourceType :: Lens.Lens' TrialComponentSource (Prelude.Maybe Prelude.Text)
+trialComponentSource_sourceType = Lens.lens (\TrialComponentSource' {sourceType} -> sourceType) (\s@TrialComponentSource' {} a -> s {sourceType = a} :: TrialComponentSource)
+
+-- | The source Amazon Resource Name (ARN).
+trialComponentSource_sourceArn :: Lens.Lens' TrialComponentSource Prelude.Text
+trialComponentSource_sourceArn = Lens.lens (\TrialComponentSource' {sourceArn} -> sourceArn) (\s@TrialComponentSource' {} a -> s {sourceArn = a} :: TrialComponentSource)
+
+instance Data.FromJSON TrialComponentSource where
+  parseJSON =
+    Data.withObject
+      "TrialComponentSource"
+      ( \x ->
+          TrialComponentSource'
+            Prelude.<$> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..: "SourceArn")
+      )
+
+instance Prelude.Hashable TrialComponentSource where
+  hashWithSalt _salt TrialComponentSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceArn
+
+instance Prelude.NFData TrialComponentSource where
+  rnf TrialComponentSource' {..} =
+    Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceArn
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentSourceDetail.hs b/gen/Amazonka/SageMaker/Types/TrialComponentSourceDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentSourceDetail.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentSourceDetail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentSourceDetail 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 Amazonka.SageMaker.Types.ProcessingJob
+import Amazonka.SageMaker.Types.TrainingJob
+import Amazonka.SageMaker.Types.TransformJob
+
+-- | Detailed information about the source of a trial component. Either
+-- @ProcessingJob@ or @TrainingJob@ is returned.
+--
+-- /See:/ 'newTrialComponentSourceDetail' smart constructor.
+data TrialComponentSourceDetail = TrialComponentSourceDetail'
+  { -- | Information about a processing job that\'s the source of a trial
+    -- component.
+    processingJob :: Prelude.Maybe ProcessingJob,
+    -- | The Amazon Resource Name (ARN) of the source.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | Information about a training job that\'s the source of a trial
+    -- component.
+    trainingJob :: Prelude.Maybe TrainingJob,
+    -- | Information about a transform job that\'s the source of a trial
+    -- component.
+    transformJob :: Prelude.Maybe TransformJob
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentSourceDetail' 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:
+--
+-- 'processingJob', 'trialComponentSourceDetail_processingJob' - Information about a processing job that\'s the source of a trial
+-- component.
+--
+-- 'sourceArn', 'trialComponentSourceDetail_sourceArn' - The Amazon Resource Name (ARN) of the source.
+--
+-- 'trainingJob', 'trialComponentSourceDetail_trainingJob' - Information about a training job that\'s the source of a trial
+-- component.
+--
+-- 'transformJob', 'trialComponentSourceDetail_transformJob' - Information about a transform job that\'s the source of a trial
+-- component.
+newTrialComponentSourceDetail ::
+  TrialComponentSourceDetail
+newTrialComponentSourceDetail =
+  TrialComponentSourceDetail'
+    { processingJob =
+        Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      trainingJob = Prelude.Nothing,
+      transformJob = Prelude.Nothing
+    }
+
+-- | Information about a processing job that\'s the source of a trial
+-- component.
+trialComponentSourceDetail_processingJob :: Lens.Lens' TrialComponentSourceDetail (Prelude.Maybe ProcessingJob)
+trialComponentSourceDetail_processingJob = Lens.lens (\TrialComponentSourceDetail' {processingJob} -> processingJob) (\s@TrialComponentSourceDetail' {} a -> s {processingJob = a} :: TrialComponentSourceDetail)
+
+-- | The Amazon Resource Name (ARN) of the source.
+trialComponentSourceDetail_sourceArn :: Lens.Lens' TrialComponentSourceDetail (Prelude.Maybe Prelude.Text)
+trialComponentSourceDetail_sourceArn = Lens.lens (\TrialComponentSourceDetail' {sourceArn} -> sourceArn) (\s@TrialComponentSourceDetail' {} a -> s {sourceArn = a} :: TrialComponentSourceDetail)
+
+-- | Information about a training job that\'s the source of a trial
+-- component.
+trialComponentSourceDetail_trainingJob :: Lens.Lens' TrialComponentSourceDetail (Prelude.Maybe TrainingJob)
+trialComponentSourceDetail_trainingJob = Lens.lens (\TrialComponentSourceDetail' {trainingJob} -> trainingJob) (\s@TrialComponentSourceDetail' {} a -> s {trainingJob = a} :: TrialComponentSourceDetail)
+
+-- | Information about a transform job that\'s the source of a trial
+-- component.
+trialComponentSourceDetail_transformJob :: Lens.Lens' TrialComponentSourceDetail (Prelude.Maybe TransformJob)
+trialComponentSourceDetail_transformJob = Lens.lens (\TrialComponentSourceDetail' {transformJob} -> transformJob) (\s@TrialComponentSourceDetail' {} a -> s {transformJob = a} :: TrialComponentSourceDetail)
+
+instance Data.FromJSON TrialComponentSourceDetail where
+  parseJSON =
+    Data.withObject
+      "TrialComponentSourceDetail"
+      ( \x ->
+          TrialComponentSourceDetail'
+            Prelude.<$> (x Data..:? "ProcessingJob")
+            Prelude.<*> (x Data..:? "SourceArn")
+            Prelude.<*> (x Data..:? "TrainingJob")
+            Prelude.<*> (x Data..:? "TransformJob")
+      )
+
+instance Prelude.Hashable TrialComponentSourceDetail where
+  hashWithSalt _salt TrialComponentSourceDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` processingJob
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` trainingJob
+      `Prelude.hashWithSalt` transformJob
+
+instance Prelude.NFData TrialComponentSourceDetail where
+  rnf TrialComponentSourceDetail' {..} =
+    Prelude.rnf processingJob
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf trainingJob
+      `Prelude.seq` Prelude.rnf transformJob
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentStatus.hs b/gen/Amazonka/SageMaker/Types/TrialComponentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentStatus.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentStatus 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 Amazonka.SageMaker.Types.TrialComponentPrimaryStatus
+
+-- | The status of the trial component.
+--
+-- /See:/ 'newTrialComponentStatus' smart constructor.
+data TrialComponentStatus = TrialComponentStatus'
+  { -- | If the component failed, a message describing why.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The status of the trial component.
+    primaryStatus :: Prelude.Maybe TrialComponentPrimaryStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentStatus' 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:
+--
+-- 'message', 'trialComponentStatus_message' - If the component failed, a message describing why.
+--
+-- 'primaryStatus', 'trialComponentStatus_primaryStatus' - The status of the trial component.
+newTrialComponentStatus ::
+  TrialComponentStatus
+newTrialComponentStatus =
+  TrialComponentStatus'
+    { message = Prelude.Nothing,
+      primaryStatus = Prelude.Nothing
+    }
+
+-- | If the component failed, a message describing why.
+trialComponentStatus_message :: Lens.Lens' TrialComponentStatus (Prelude.Maybe Prelude.Text)
+trialComponentStatus_message = Lens.lens (\TrialComponentStatus' {message} -> message) (\s@TrialComponentStatus' {} a -> s {message = a} :: TrialComponentStatus)
+
+-- | The status of the trial component.
+trialComponentStatus_primaryStatus :: Lens.Lens' TrialComponentStatus (Prelude.Maybe TrialComponentPrimaryStatus)
+trialComponentStatus_primaryStatus = Lens.lens (\TrialComponentStatus' {primaryStatus} -> primaryStatus) (\s@TrialComponentStatus' {} a -> s {primaryStatus = a} :: TrialComponentStatus)
+
+instance Data.FromJSON TrialComponentStatus where
+  parseJSON =
+    Data.withObject
+      "TrialComponentStatus"
+      ( \x ->
+          TrialComponentStatus'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "PrimaryStatus")
+      )
+
+instance Prelude.Hashable TrialComponentStatus where
+  hashWithSalt _salt TrialComponentStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` primaryStatus
+
+instance Prelude.NFData TrialComponentStatus where
+  rnf TrialComponentStatus' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf primaryStatus
+
+instance Data.ToJSON TrialComponentStatus where
+  toJSON TrialComponentStatus' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Message" Data..=) Prelude.<$> message,
+            ("PrimaryStatus" Data..=) Prelude.<$> primaryStatus
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TrialComponentSummary.hs b/gen/Amazonka/SageMaker/Types/TrialComponentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialComponentSummary.hs
@@ -0,0 +1,217 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialComponentSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialComponentSummary 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 Amazonka.SageMaker.Types.TrialComponentSource
+import Amazonka.SageMaker.Types.TrialComponentStatus
+import Amazonka.SageMaker.Types.UserContext
+
+-- | A summary of the properties of a trial component. To get all the
+-- properties, call the DescribeTrialComponent API and provide the
+-- @TrialComponentName@.
+--
+-- /See:/ 'newTrialComponentSummary' smart constructor.
+data TrialComponentSummary = TrialComponentSummary'
+  { -- | Who created the trial component.
+    createdBy :: Prelude.Maybe UserContext,
+    -- | When the component was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the component as displayed. If @DisplayName@ isn\'t
+    -- specified, @TrialComponentName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When the component ended.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Who last modified the component.
+    lastModifiedBy :: Prelude.Maybe UserContext,
+    -- | When the component was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | When the component started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The status of the component. States include:
+    --
+    -- -   InProgress
+    --
+    -- -   Completed
+    --
+    -- -   Failed
+    status :: Prelude.Maybe TrialComponentStatus,
+    -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial component.
+    trialComponentName :: Prelude.Maybe Prelude.Text,
+    trialComponentSource :: Prelude.Maybe TrialComponentSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialComponentSummary' 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:
+--
+-- 'createdBy', 'trialComponentSummary_createdBy' - Who created the trial component.
+--
+-- 'creationTime', 'trialComponentSummary_creationTime' - When the component was created.
+--
+-- 'displayName', 'trialComponentSummary_displayName' - The name of the component as displayed. If @DisplayName@ isn\'t
+-- specified, @TrialComponentName@ is displayed.
+--
+-- 'endTime', 'trialComponentSummary_endTime' - When the component ended.
+--
+-- 'lastModifiedBy', 'trialComponentSummary_lastModifiedBy' - Who last modified the component.
+--
+-- 'lastModifiedTime', 'trialComponentSummary_lastModifiedTime' - When the component was last modified.
+--
+-- 'startTime', 'trialComponentSummary_startTime' - When the component started.
+--
+-- 'status', 'trialComponentSummary_status' - The status of the component. States include:
+--
+-- -   InProgress
+--
+-- -   Completed
+--
+-- -   Failed
+--
+-- 'trialComponentArn', 'trialComponentSummary_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'trialComponentName', 'trialComponentSummary_trialComponentName' - The name of the trial component.
+--
+-- 'trialComponentSource', 'trialComponentSummary_trialComponentSource' - Undocumented member.
+newTrialComponentSummary ::
+  TrialComponentSummary
+newTrialComponentSummary =
+  TrialComponentSummary'
+    { createdBy = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      trialComponentArn = Prelude.Nothing,
+      trialComponentName = Prelude.Nothing,
+      trialComponentSource = Prelude.Nothing
+    }
+
+-- | Who created the trial component.
+trialComponentSummary_createdBy :: Lens.Lens' TrialComponentSummary (Prelude.Maybe UserContext)
+trialComponentSummary_createdBy = Lens.lens (\TrialComponentSummary' {createdBy} -> createdBy) (\s@TrialComponentSummary' {} a -> s {createdBy = a} :: TrialComponentSummary)
+
+-- | When the component was created.
+trialComponentSummary_creationTime :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.UTCTime)
+trialComponentSummary_creationTime = Lens.lens (\TrialComponentSummary' {creationTime} -> creationTime) (\s@TrialComponentSummary' {} a -> s {creationTime = a} :: TrialComponentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the component as displayed. If @DisplayName@ isn\'t
+-- specified, @TrialComponentName@ is displayed.
+trialComponentSummary_displayName :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.Text)
+trialComponentSummary_displayName = Lens.lens (\TrialComponentSummary' {displayName} -> displayName) (\s@TrialComponentSummary' {} a -> s {displayName = a} :: TrialComponentSummary)
+
+-- | When the component ended.
+trialComponentSummary_endTime :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.UTCTime)
+trialComponentSummary_endTime = Lens.lens (\TrialComponentSummary' {endTime} -> endTime) (\s@TrialComponentSummary' {} a -> s {endTime = a} :: TrialComponentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Who last modified the component.
+trialComponentSummary_lastModifiedBy :: Lens.Lens' TrialComponentSummary (Prelude.Maybe UserContext)
+trialComponentSummary_lastModifiedBy = Lens.lens (\TrialComponentSummary' {lastModifiedBy} -> lastModifiedBy) (\s@TrialComponentSummary' {} a -> s {lastModifiedBy = a} :: TrialComponentSummary)
+
+-- | When the component was last modified.
+trialComponentSummary_lastModifiedTime :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.UTCTime)
+trialComponentSummary_lastModifiedTime = Lens.lens (\TrialComponentSummary' {lastModifiedTime} -> lastModifiedTime) (\s@TrialComponentSummary' {} a -> s {lastModifiedTime = a} :: TrialComponentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | When the component started.
+trialComponentSummary_startTime :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.UTCTime)
+trialComponentSummary_startTime = Lens.lens (\TrialComponentSummary' {startTime} -> startTime) (\s@TrialComponentSummary' {} a -> s {startTime = a} :: TrialComponentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the component. States include:
+--
+-- -   InProgress
+--
+-- -   Completed
+--
+-- -   Failed
+trialComponentSummary_status :: Lens.Lens' TrialComponentSummary (Prelude.Maybe TrialComponentStatus)
+trialComponentSummary_status = Lens.lens (\TrialComponentSummary' {status} -> status) (\s@TrialComponentSummary' {} a -> s {status = a} :: TrialComponentSummary)
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+trialComponentSummary_trialComponentArn :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.Text)
+trialComponentSummary_trialComponentArn = Lens.lens (\TrialComponentSummary' {trialComponentArn} -> trialComponentArn) (\s@TrialComponentSummary' {} a -> s {trialComponentArn = a} :: TrialComponentSummary)
+
+-- | The name of the trial component.
+trialComponentSummary_trialComponentName :: Lens.Lens' TrialComponentSummary (Prelude.Maybe Prelude.Text)
+trialComponentSummary_trialComponentName = Lens.lens (\TrialComponentSummary' {trialComponentName} -> trialComponentName) (\s@TrialComponentSummary' {} a -> s {trialComponentName = a} :: TrialComponentSummary)
+
+-- | Undocumented member.
+trialComponentSummary_trialComponentSource :: Lens.Lens' TrialComponentSummary (Prelude.Maybe TrialComponentSource)
+trialComponentSummary_trialComponentSource = Lens.lens (\TrialComponentSummary' {trialComponentSource} -> trialComponentSource) (\s@TrialComponentSummary' {} a -> s {trialComponentSource = a} :: TrialComponentSummary)
+
+instance Data.FromJSON TrialComponentSummary where
+  parseJSON =
+    Data.withObject
+      "TrialComponentSummary"
+      ( \x ->
+          TrialComponentSummary'
+            Prelude.<$> (x Data..:? "CreatedBy")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "TrialComponentArn")
+            Prelude.<*> (x Data..:? "TrialComponentName")
+            Prelude.<*> (x Data..:? "TrialComponentSource")
+      )
+
+instance Prelude.Hashable TrialComponentSummary where
+  hashWithSalt _salt TrialComponentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdBy
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` trialComponentArn
+      `Prelude.hashWithSalt` trialComponentName
+      `Prelude.hashWithSalt` trialComponentSource
+
+instance Prelude.NFData TrialComponentSummary where
+  rnf TrialComponentSummary' {..} =
+    Prelude.rnf createdBy
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf trialComponentName
+      `Prelude.seq` Prelude.rnf trialComponentSource
diff --git a/gen/Amazonka/SageMaker/Types/TrialSource.hs b/gen/Amazonka/SageMaker/Types/TrialSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialSource.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialSource 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
+
+-- | The source of the trial.
+--
+-- /See:/ 'newTrialSource' smart constructor.
+data TrialSource = TrialSource'
+  { -- | The source job type.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the source.
+    sourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialSource' 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:
+--
+-- 'sourceType', 'trialSource_sourceType' - The source job type.
+--
+-- 'sourceArn', 'trialSource_sourceArn' - The Amazon Resource Name (ARN) of the source.
+newTrialSource ::
+  -- | 'sourceArn'
+  Prelude.Text ->
+  TrialSource
+newTrialSource pSourceArn_ =
+  TrialSource'
+    { sourceType = Prelude.Nothing,
+      sourceArn = pSourceArn_
+    }
+
+-- | The source job type.
+trialSource_sourceType :: Lens.Lens' TrialSource (Prelude.Maybe Prelude.Text)
+trialSource_sourceType = Lens.lens (\TrialSource' {sourceType} -> sourceType) (\s@TrialSource' {} a -> s {sourceType = a} :: TrialSource)
+
+-- | The Amazon Resource Name (ARN) of the source.
+trialSource_sourceArn :: Lens.Lens' TrialSource Prelude.Text
+trialSource_sourceArn = Lens.lens (\TrialSource' {sourceArn} -> sourceArn) (\s@TrialSource' {} a -> s {sourceArn = a} :: TrialSource)
+
+instance Data.FromJSON TrialSource where
+  parseJSON =
+    Data.withObject
+      "TrialSource"
+      ( \x ->
+          TrialSource'
+            Prelude.<$> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..: "SourceArn")
+      )
+
+instance Prelude.Hashable TrialSource where
+  hashWithSalt _salt TrialSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceArn
+
+instance Prelude.NFData TrialSource where
+  rnf TrialSource' {..} =
+    Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceArn
diff --git a/gen/Amazonka/SageMaker/Types/TrialSummary.hs b/gen/Amazonka/SageMaker/Types/TrialSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TrialSummary.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TrialSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TrialSummary 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 Amazonka.SageMaker.Types.TrialSource
+
+-- | A summary of the properties of a trial. To get the complete set of
+-- properties, call the DescribeTrial API and provide the @TrialName@.
+--
+-- /See:/ 'newTrialSummary' smart constructor.
+data TrialSummary = TrialSummary'
+  { -- | When the trial was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+    -- @TrialName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When the trial was last modified.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial.
+    trialName :: Prelude.Maybe Prelude.Text,
+    trialSource :: Prelude.Maybe TrialSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrialSummary' 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:
+--
+-- 'creationTime', 'trialSummary_creationTime' - When the trial was created.
+--
+-- 'displayName', 'trialSummary_displayName' - The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+-- @TrialName@ is displayed.
+--
+-- 'lastModifiedTime', 'trialSummary_lastModifiedTime' - When the trial was last modified.
+--
+-- 'trialArn', 'trialSummary_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'trialName', 'trialSummary_trialName' - The name of the trial.
+--
+-- 'trialSource', 'trialSummary_trialSource' - Undocumented member.
+newTrialSummary ::
+  TrialSummary
+newTrialSummary =
+  TrialSummary'
+    { creationTime = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      trialArn = Prelude.Nothing,
+      trialName = Prelude.Nothing,
+      trialSource = Prelude.Nothing
+    }
+
+-- | When the trial was created.
+trialSummary_creationTime :: Lens.Lens' TrialSummary (Prelude.Maybe Prelude.UTCTime)
+trialSummary_creationTime = Lens.lens (\TrialSummary' {creationTime} -> creationTime) (\s@TrialSummary' {} a -> s {creationTime = a} :: TrialSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the trial as displayed. If @DisplayName@ isn\'t specified,
+-- @TrialName@ is displayed.
+trialSummary_displayName :: Lens.Lens' TrialSummary (Prelude.Maybe Prelude.Text)
+trialSummary_displayName = Lens.lens (\TrialSummary' {displayName} -> displayName) (\s@TrialSummary' {} a -> s {displayName = a} :: TrialSummary)
+
+-- | When the trial was last modified.
+trialSummary_lastModifiedTime :: Lens.Lens' TrialSummary (Prelude.Maybe Prelude.UTCTime)
+trialSummary_lastModifiedTime = Lens.lens (\TrialSummary' {lastModifiedTime} -> lastModifiedTime) (\s@TrialSummary' {} a -> s {lastModifiedTime = a} :: TrialSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the trial.
+trialSummary_trialArn :: Lens.Lens' TrialSummary (Prelude.Maybe Prelude.Text)
+trialSummary_trialArn = Lens.lens (\TrialSummary' {trialArn} -> trialArn) (\s@TrialSummary' {} a -> s {trialArn = a} :: TrialSummary)
+
+-- | The name of the trial.
+trialSummary_trialName :: Lens.Lens' TrialSummary (Prelude.Maybe Prelude.Text)
+trialSummary_trialName = Lens.lens (\TrialSummary' {trialName} -> trialName) (\s@TrialSummary' {} a -> s {trialName = a} :: TrialSummary)
+
+-- | Undocumented member.
+trialSummary_trialSource :: Lens.Lens' TrialSummary (Prelude.Maybe TrialSource)
+trialSummary_trialSource = Lens.lens (\TrialSummary' {trialSource} -> trialSource) (\s@TrialSummary' {} a -> s {trialSource = a} :: TrialSummary)
+
+instance Data.FromJSON TrialSummary where
+  parseJSON =
+    Data.withObject
+      "TrialSummary"
+      ( \x ->
+          TrialSummary'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DisplayName")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "TrialArn")
+            Prelude.<*> (x Data..:? "TrialName")
+            Prelude.<*> (x Data..:? "TrialSource")
+      )
+
+instance Prelude.Hashable TrialSummary where
+  hashWithSalt _salt TrialSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` trialArn
+      `Prelude.hashWithSalt` trialName
+      `Prelude.hashWithSalt` trialSource
+
+instance Prelude.NFData TrialSummary where
+  rnf TrialSummary' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf trialName
+      `Prelude.seq` Prelude.rnf trialSource
diff --git a/gen/Amazonka/SageMaker/Types/TuningJobCompletionCriteria.hs b/gen/Amazonka/SageMaker/Types/TuningJobCompletionCriteria.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TuningJobCompletionCriteria.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TuningJobCompletionCriteria
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TuningJobCompletionCriteria 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
+
+-- | The job completion criteria.
+--
+-- /See:/ 'newTuningJobCompletionCriteria' smart constructor.
+data TuningJobCompletionCriteria = TuningJobCompletionCriteria'
+  { -- | The value of the objective metric.
+    targetObjectiveMetricValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TuningJobCompletionCriteria' 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:
+--
+-- 'targetObjectiveMetricValue', 'tuningJobCompletionCriteria_targetObjectiveMetricValue' - The value of the objective metric.
+newTuningJobCompletionCriteria ::
+  -- | 'targetObjectiveMetricValue'
+  Prelude.Double ->
+  TuningJobCompletionCriteria
+newTuningJobCompletionCriteria
+  pTargetObjectiveMetricValue_ =
+    TuningJobCompletionCriteria'
+      { targetObjectiveMetricValue =
+          pTargetObjectiveMetricValue_
+      }
+
+-- | The value of the objective metric.
+tuningJobCompletionCriteria_targetObjectiveMetricValue :: Lens.Lens' TuningJobCompletionCriteria Prelude.Double
+tuningJobCompletionCriteria_targetObjectiveMetricValue = Lens.lens (\TuningJobCompletionCriteria' {targetObjectiveMetricValue} -> targetObjectiveMetricValue) (\s@TuningJobCompletionCriteria' {} a -> s {targetObjectiveMetricValue = a} :: TuningJobCompletionCriteria)
+
+instance Data.FromJSON TuningJobCompletionCriteria where
+  parseJSON =
+    Data.withObject
+      "TuningJobCompletionCriteria"
+      ( \x ->
+          TuningJobCompletionCriteria'
+            Prelude.<$> (x Data..: "TargetObjectiveMetricValue")
+      )
+
+instance Prelude.Hashable TuningJobCompletionCriteria where
+  hashWithSalt _salt TuningJobCompletionCriteria' {..} =
+    _salt
+      `Prelude.hashWithSalt` targetObjectiveMetricValue
+
+instance Prelude.NFData TuningJobCompletionCriteria where
+  rnf TuningJobCompletionCriteria' {..} =
+    Prelude.rnf targetObjectiveMetricValue
+
+instance Data.ToJSON TuningJobCompletionCriteria where
+  toJSON TuningJobCompletionCriteria' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "TargetObjectiveMetricValue"
+                  Data..= targetObjectiveMetricValue
+              )
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/TuningJobStepMetaData.hs b/gen/Amazonka/SageMaker/Types/TuningJobStepMetaData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/TuningJobStepMetaData.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.TuningJobStepMetaData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.TuningJobStepMetaData 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
+
+-- | Metadata for a tuning step.
+--
+-- /See:/ 'newTuningJobStepMetaData' smart constructor.
+data TuningJobStepMetaData = TuningJobStepMetaData'
+  { -- | The Amazon Resource Name (ARN) of the tuning job that was run by this
+    -- step execution.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TuningJobStepMetaData' 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:
+--
+-- 'arn', 'tuningJobStepMetaData_arn' - The Amazon Resource Name (ARN) of the tuning job that was run by this
+-- step execution.
+newTuningJobStepMetaData ::
+  TuningJobStepMetaData
+newTuningJobStepMetaData =
+  TuningJobStepMetaData' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the tuning job that was run by this
+-- step execution.
+tuningJobStepMetaData_arn :: Lens.Lens' TuningJobStepMetaData (Prelude.Maybe Prelude.Text)
+tuningJobStepMetaData_arn = Lens.lens (\TuningJobStepMetaData' {arn} -> arn) (\s@TuningJobStepMetaData' {} a -> s {arn = a} :: TuningJobStepMetaData)
+
+instance Data.FromJSON TuningJobStepMetaData where
+  parseJSON =
+    Data.withObject
+      "TuningJobStepMetaData"
+      ( \x ->
+          TuningJobStepMetaData'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable TuningJobStepMetaData where
+  hashWithSalt _salt TuningJobStepMetaData' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData TuningJobStepMetaData where
+  rnf TuningJobStepMetaData' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/SageMaker/Types/USD.hs b/gen/Amazonka/SageMaker/Types/USD.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/USD.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.USD
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.USD 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
+
+-- | Represents an amount of money in United States dollars.
+--
+-- /See:/ 'newUSD' smart constructor.
+data USD = USD'
+  { -- | The fractional portion, in cents, of the amount.
+    cents :: Prelude.Maybe Prelude.Natural,
+    -- | The whole number of dollars in the amount.
+    dollars :: Prelude.Maybe Prelude.Natural,
+    -- | Fractions of a cent, in tenths.
+    tenthFractionsOfACent :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'USD' 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:
+--
+-- 'cents', 'usd_cents' - The fractional portion, in cents, of the amount.
+--
+-- 'dollars', 'usd_dollars' - The whole number of dollars in the amount.
+--
+-- 'tenthFractionsOfACent', 'usd_tenthFractionsOfACent' - Fractions of a cent, in tenths.
+newUSD ::
+  USD
+newUSD =
+  USD'
+    { cents = Prelude.Nothing,
+      dollars = Prelude.Nothing,
+      tenthFractionsOfACent = Prelude.Nothing
+    }
+
+-- | The fractional portion, in cents, of the amount.
+usd_cents :: Lens.Lens' USD (Prelude.Maybe Prelude.Natural)
+usd_cents = Lens.lens (\USD' {cents} -> cents) (\s@USD' {} a -> s {cents = a} :: USD)
+
+-- | The whole number of dollars in the amount.
+usd_dollars :: Lens.Lens' USD (Prelude.Maybe Prelude.Natural)
+usd_dollars = Lens.lens (\USD' {dollars} -> dollars) (\s@USD' {} a -> s {dollars = a} :: USD)
+
+-- | Fractions of a cent, in tenths.
+usd_tenthFractionsOfACent :: Lens.Lens' USD (Prelude.Maybe Prelude.Natural)
+usd_tenthFractionsOfACent = Lens.lens (\USD' {tenthFractionsOfACent} -> tenthFractionsOfACent) (\s@USD' {} a -> s {tenthFractionsOfACent = a} :: USD)
+
+instance Data.FromJSON USD where
+  parseJSON =
+    Data.withObject
+      "USD"
+      ( \x ->
+          USD'
+            Prelude.<$> (x Data..:? "Cents")
+            Prelude.<*> (x Data..:? "Dollars")
+            Prelude.<*> (x Data..:? "TenthFractionsOfACent")
+      )
+
+instance Prelude.Hashable USD where
+  hashWithSalt _salt USD' {..} =
+    _salt
+      `Prelude.hashWithSalt` cents
+      `Prelude.hashWithSalt` dollars
+      `Prelude.hashWithSalt` tenthFractionsOfACent
+
+instance Prelude.NFData USD where
+  rnf USD' {..} =
+    Prelude.rnf cents
+      `Prelude.seq` Prelude.rnf dollars
+      `Prelude.seq` Prelude.rnf tenthFractionsOfACent
+
+instance Data.ToJSON USD where
+  toJSON USD' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Cents" Data..=) Prelude.<$> cents,
+            ("Dollars" Data..=) Prelude.<$> dollars,
+            ("TenthFractionsOfACent" Data..=)
+              Prelude.<$> tenthFractionsOfACent
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/UiConfig.hs b/gen/Amazonka/SageMaker/Types/UiConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UiConfig.hs
@@ -0,0 +1,250 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.UiConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UiConfig 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
+
+-- | Provided configuration information for the worker UI for a labeling job.
+-- Provide either @HumanTaskUiArn@ or @UiTemplateS3Uri@.
+--
+-- For named entity recognition, 3D point cloud and video frame labeling
+-- jobs, use @HumanTaskUiArn@.
+--
+-- For all other Ground Truth built-in task types and custom task types,
+-- use @UiTemplateS3Uri@ to specify the location of a worker task template
+-- in Amazon S3.
+--
+-- /See:/ 'newUiConfig' smart constructor.
+data UiConfig = UiConfig'
+  { -- | The ARN of the worker task template used to render the worker UI and
+    -- tools for labeling job tasks.
+    --
+    -- Use this parameter when you are creating a labeling job for named entity
+    -- recognition, 3D point cloud and video frame labeling jobs. Use your
+    -- labeling job task type to select one of the following ARNs and use it
+    -- with this parameter when you create a labeling job. Replace @aws-region@
+    -- with the Amazon Web Services Region you are creating your labeling job
+    -- in. For example, replace @aws-region@ with @us-west-1@ if you create a
+    -- labeling job in US West (N. California).
+    --
+    -- __Named Entity Recognition__
+    --
+    -- Use the following @HumanTaskUiArn@ for named entity recognition labeling
+    -- jobs:
+    --
+    -- @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/NamedEntityRecognition@
+    --
+    -- __3D Point Cloud HumanTaskUiArns__
+    --
+    -- Use this @HumanTaskUiArn@ for 3D point cloud object detection and 3D
+    -- point cloud object detection adjustment labeling jobs.
+    --
+    -- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudObjectDetection@
+    --
+    -- Use this @HumanTaskUiArn@ for 3D point cloud object tracking and 3D
+    -- point cloud object tracking adjustment labeling jobs.
+    --
+    -- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudObjectTracking@
+    --
+    -- Use this @HumanTaskUiArn@ for 3D point cloud semantic segmentation and
+    -- 3D point cloud semantic segmentation adjustment labeling jobs.
+    --
+    -- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudSemanticSegmentation@
+    --
+    -- __Video Frame HumanTaskUiArns__
+    --
+    -- Use this @HumanTaskUiArn@ for video frame object detection and video
+    -- frame object detection adjustment labeling jobs.
+    --
+    -- -   @arn:aws:sagemaker:region:394669845002:human-task-ui\/VideoObjectDetection@
+    --
+    -- Use this @HumanTaskUiArn@ for video frame object tracking and video
+    -- frame object tracking adjustment labeling jobs.
+    --
+    -- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/VideoObjectTracking@
+    humanTaskUiArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon S3 bucket location of the UI template, or worker task
+    -- template. This is the template used to render the worker UI and tools
+    -- for labeling job tasks. For more information about the contents of a UI
+    -- template, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step2.html Creating Your Custom Labeling Task Template>.
+    uiTemplateS3Uri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UiConfig' 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:
+--
+-- 'humanTaskUiArn', 'uiConfig_humanTaskUiArn' - The ARN of the worker task template used to render the worker UI and
+-- tools for labeling job tasks.
+--
+-- Use this parameter when you are creating a labeling job for named entity
+-- recognition, 3D point cloud and video frame labeling jobs. Use your
+-- labeling job task type to select one of the following ARNs and use it
+-- with this parameter when you create a labeling job. Replace @aws-region@
+-- with the Amazon Web Services Region you are creating your labeling job
+-- in. For example, replace @aws-region@ with @us-west-1@ if you create a
+-- labeling job in US West (N. California).
+--
+-- __Named Entity Recognition__
+--
+-- Use the following @HumanTaskUiArn@ for named entity recognition labeling
+-- jobs:
+--
+-- @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/NamedEntityRecognition@
+--
+-- __3D Point Cloud HumanTaskUiArns__
+--
+-- Use this @HumanTaskUiArn@ for 3D point cloud object detection and 3D
+-- point cloud object detection adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudObjectDetection@
+--
+-- Use this @HumanTaskUiArn@ for 3D point cloud object tracking and 3D
+-- point cloud object tracking adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudObjectTracking@
+--
+-- Use this @HumanTaskUiArn@ for 3D point cloud semantic segmentation and
+-- 3D point cloud semantic segmentation adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudSemanticSegmentation@
+--
+-- __Video Frame HumanTaskUiArns__
+--
+-- Use this @HumanTaskUiArn@ for video frame object detection and video
+-- frame object detection adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:region:394669845002:human-task-ui\/VideoObjectDetection@
+--
+-- Use this @HumanTaskUiArn@ for video frame object tracking and video
+-- frame object tracking adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/VideoObjectTracking@
+--
+-- 'uiTemplateS3Uri', 'uiConfig_uiTemplateS3Uri' - The Amazon S3 bucket location of the UI template, or worker task
+-- template. This is the template used to render the worker UI and tools
+-- for labeling job tasks. For more information about the contents of a UI
+-- template, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step2.html Creating Your Custom Labeling Task Template>.
+newUiConfig ::
+  UiConfig
+newUiConfig =
+  UiConfig'
+    { humanTaskUiArn = Prelude.Nothing,
+      uiTemplateS3Uri = Prelude.Nothing
+    }
+
+-- | The ARN of the worker task template used to render the worker UI and
+-- tools for labeling job tasks.
+--
+-- Use this parameter when you are creating a labeling job for named entity
+-- recognition, 3D point cloud and video frame labeling jobs. Use your
+-- labeling job task type to select one of the following ARNs and use it
+-- with this parameter when you create a labeling job. Replace @aws-region@
+-- with the Amazon Web Services Region you are creating your labeling job
+-- in. For example, replace @aws-region@ with @us-west-1@ if you create a
+-- labeling job in US West (N. California).
+--
+-- __Named Entity Recognition__
+--
+-- Use the following @HumanTaskUiArn@ for named entity recognition labeling
+-- jobs:
+--
+-- @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/NamedEntityRecognition@
+--
+-- __3D Point Cloud HumanTaskUiArns__
+--
+-- Use this @HumanTaskUiArn@ for 3D point cloud object detection and 3D
+-- point cloud object detection adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudObjectDetection@
+--
+-- Use this @HumanTaskUiArn@ for 3D point cloud object tracking and 3D
+-- point cloud object tracking adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudObjectTracking@
+--
+-- Use this @HumanTaskUiArn@ for 3D point cloud semantic segmentation and
+-- 3D point cloud semantic segmentation adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/PointCloudSemanticSegmentation@
+--
+-- __Video Frame HumanTaskUiArns__
+--
+-- Use this @HumanTaskUiArn@ for video frame object detection and video
+-- frame object detection adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:region:394669845002:human-task-ui\/VideoObjectDetection@
+--
+-- Use this @HumanTaskUiArn@ for video frame object tracking and video
+-- frame object tracking adjustment labeling jobs.
+--
+-- -   @arn:aws:sagemaker:aws-region:394669845002:human-task-ui\/VideoObjectTracking@
+uiConfig_humanTaskUiArn :: Lens.Lens' UiConfig (Prelude.Maybe Prelude.Text)
+uiConfig_humanTaskUiArn = Lens.lens (\UiConfig' {humanTaskUiArn} -> humanTaskUiArn) (\s@UiConfig' {} a -> s {humanTaskUiArn = a} :: UiConfig)
+
+-- | The Amazon S3 bucket location of the UI template, or worker task
+-- template. This is the template used to render the worker UI and tools
+-- for labeling job tasks. For more information about the contents of a UI
+-- template, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step2.html Creating Your Custom Labeling Task Template>.
+uiConfig_uiTemplateS3Uri :: Lens.Lens' UiConfig (Prelude.Maybe Prelude.Text)
+uiConfig_uiTemplateS3Uri = Lens.lens (\UiConfig' {uiTemplateS3Uri} -> uiTemplateS3Uri) (\s@UiConfig' {} a -> s {uiTemplateS3Uri = a} :: UiConfig)
+
+instance Data.FromJSON UiConfig where
+  parseJSON =
+    Data.withObject
+      "UiConfig"
+      ( \x ->
+          UiConfig'
+            Prelude.<$> (x Data..:? "HumanTaskUiArn")
+            Prelude.<*> (x Data..:? "UiTemplateS3Uri")
+      )
+
+instance Prelude.Hashable UiConfig where
+  hashWithSalt _salt UiConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` humanTaskUiArn
+      `Prelude.hashWithSalt` uiTemplateS3Uri
+
+instance Prelude.NFData UiConfig where
+  rnf UiConfig' {..} =
+    Prelude.rnf humanTaskUiArn
+      `Prelude.seq` Prelude.rnf uiTemplateS3Uri
+
+instance Data.ToJSON UiConfig where
+  toJSON UiConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HumanTaskUiArn" Data..=)
+              Prelude.<$> humanTaskUiArn,
+            ("UiTemplateS3Uri" Data..=)
+              Prelude.<$> uiTemplateS3Uri
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/UiTemplate.hs b/gen/Amazonka/SageMaker/Types/UiTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UiTemplate.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.UiTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UiTemplate 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
+
+-- | The Liquid template for the worker user interface.
+--
+-- /See:/ 'newUiTemplate' smart constructor.
+data UiTemplate = UiTemplate'
+  { -- | The content of the Liquid template for the worker user interface.
+    content :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UiTemplate' 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:
+--
+-- 'content', 'uiTemplate_content' - The content of the Liquid template for the worker user interface.
+newUiTemplate ::
+  -- | 'content'
+  Prelude.Text ->
+  UiTemplate
+newUiTemplate pContent_ =
+  UiTemplate' {content = pContent_}
+
+-- | The content of the Liquid template for the worker user interface.
+uiTemplate_content :: Lens.Lens' UiTemplate Prelude.Text
+uiTemplate_content = Lens.lens (\UiTemplate' {content} -> content) (\s@UiTemplate' {} a -> s {content = a} :: UiTemplate)
+
+instance Prelude.Hashable UiTemplate where
+  hashWithSalt _salt UiTemplate' {..} =
+    _salt `Prelude.hashWithSalt` content
+
+instance Prelude.NFData UiTemplate where
+  rnf UiTemplate' {..} = Prelude.rnf content
+
+instance Data.ToJSON UiTemplate where
+  toJSON UiTemplate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Content" Data..= content)]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/UiTemplateInfo.hs b/gen/Amazonka/SageMaker/Types/UiTemplateInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UiTemplateInfo.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.UiTemplateInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UiTemplateInfo 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
+
+-- | Container for user interface template information.
+--
+-- /See:/ 'newUiTemplateInfo' smart constructor.
+data UiTemplateInfo = UiTemplateInfo'
+  { -- | The SHA-256 digest of the contents of the template.
+    contentSha256 :: Prelude.Maybe Prelude.Text,
+    -- | The URL for the user interface template.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UiTemplateInfo' 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:
+--
+-- 'contentSha256', 'uiTemplateInfo_contentSha256' - The SHA-256 digest of the contents of the template.
+--
+-- 'url', 'uiTemplateInfo_url' - The URL for the user interface template.
+newUiTemplateInfo ::
+  UiTemplateInfo
+newUiTemplateInfo =
+  UiTemplateInfo'
+    { contentSha256 = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | The SHA-256 digest of the contents of the template.
+uiTemplateInfo_contentSha256 :: Lens.Lens' UiTemplateInfo (Prelude.Maybe Prelude.Text)
+uiTemplateInfo_contentSha256 = Lens.lens (\UiTemplateInfo' {contentSha256} -> contentSha256) (\s@UiTemplateInfo' {} a -> s {contentSha256 = a} :: UiTemplateInfo)
+
+-- | The URL for the user interface template.
+uiTemplateInfo_url :: Lens.Lens' UiTemplateInfo (Prelude.Maybe Prelude.Text)
+uiTemplateInfo_url = Lens.lens (\UiTemplateInfo' {url} -> url) (\s@UiTemplateInfo' {} a -> s {url = a} :: UiTemplateInfo)
+
+instance Data.FromJSON UiTemplateInfo where
+  parseJSON =
+    Data.withObject
+      "UiTemplateInfo"
+      ( \x ->
+          UiTemplateInfo'
+            Prelude.<$> (x Data..:? "ContentSha256")
+            Prelude.<*> (x Data..:? "Url")
+      )
+
+instance Prelude.Hashable UiTemplateInfo where
+  hashWithSalt _salt UiTemplateInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentSha256
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData UiTemplateInfo where
+  rnf UiTemplateInfo' {..} =
+    Prelude.rnf contentSha256
+      `Prelude.seq` Prelude.rnf url
diff --git a/gen/Amazonka/SageMaker/Types/UserContext.hs b/gen/Amazonka/SageMaker/Types/UserContext.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UserContext.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.UserContext
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UserContext 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
+
+-- | Information about the user who created or modified an experiment, trial,
+-- trial component, lineage group, project, or model card.
+--
+-- /See:/ 'newUserContext' smart constructor.
+data UserContext = UserContext'
+  { -- | The domain associated with the user.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the user\'s profile.
+    userProfileArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the user\'s profile.
+    userProfileName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserContext' 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:
+--
+-- 'domainId', 'userContext_domainId' - The domain associated with the user.
+--
+-- 'userProfileArn', 'userContext_userProfileArn' - The Amazon Resource Name (ARN) of the user\'s profile.
+--
+-- 'userProfileName', 'userContext_userProfileName' - The name of the user\'s profile.
+newUserContext ::
+  UserContext
+newUserContext =
+  UserContext'
+    { domainId = Prelude.Nothing,
+      userProfileArn = Prelude.Nothing,
+      userProfileName = Prelude.Nothing
+    }
+
+-- | The domain associated with the user.
+userContext_domainId :: Lens.Lens' UserContext (Prelude.Maybe Prelude.Text)
+userContext_domainId = Lens.lens (\UserContext' {domainId} -> domainId) (\s@UserContext' {} a -> s {domainId = a} :: UserContext)
+
+-- | The Amazon Resource Name (ARN) of the user\'s profile.
+userContext_userProfileArn :: Lens.Lens' UserContext (Prelude.Maybe Prelude.Text)
+userContext_userProfileArn = Lens.lens (\UserContext' {userProfileArn} -> userProfileArn) (\s@UserContext' {} a -> s {userProfileArn = a} :: UserContext)
+
+-- | The name of the user\'s profile.
+userContext_userProfileName :: Lens.Lens' UserContext (Prelude.Maybe Prelude.Text)
+userContext_userProfileName = Lens.lens (\UserContext' {userProfileName} -> userProfileName) (\s@UserContext' {} a -> s {userProfileName = a} :: UserContext)
+
+instance Data.FromJSON UserContext where
+  parseJSON =
+    Data.withObject
+      "UserContext"
+      ( \x ->
+          UserContext'
+            Prelude.<$> (x Data..:? "DomainId")
+            Prelude.<*> (x Data..:? "UserProfileArn")
+            Prelude.<*> (x Data..:? "UserProfileName")
+      )
+
+instance Prelude.Hashable UserContext where
+  hashWithSalt _salt UserContext' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` userProfileArn
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData UserContext where
+  rnf UserContext' {..} =
+    Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf userProfileArn
+      `Prelude.seq` Prelude.rnf userProfileName
diff --git a/gen/Amazonka/SageMaker/Types/UserProfileDetails.hs b/gen/Amazonka/SageMaker/Types/UserProfileDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UserProfileDetails.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.UserProfileDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UserProfileDetails 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 Amazonka.SageMaker.Types.UserProfileStatus
+
+-- | The user profile details.
+--
+-- /See:/ 'newUserProfileDetails' smart constructor.
+data UserProfileDetails = UserProfileDetails'
+  { -- | The creation time.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The domain ID.
+    domainId :: Prelude.Maybe Prelude.Text,
+    -- | The last modified time.
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The status.
+    status :: Prelude.Maybe UserProfileStatus,
+    -- | The user profile name.
+    userProfileName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserProfileDetails' 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:
+--
+-- 'creationTime', 'userProfileDetails_creationTime' - The creation time.
+--
+-- 'domainId', 'userProfileDetails_domainId' - The domain ID.
+--
+-- 'lastModifiedTime', 'userProfileDetails_lastModifiedTime' - The last modified time.
+--
+-- 'status', 'userProfileDetails_status' - The status.
+--
+-- 'userProfileName', 'userProfileDetails_userProfileName' - The user profile name.
+newUserProfileDetails ::
+  UserProfileDetails
+newUserProfileDetails =
+  UserProfileDetails'
+    { creationTime = Prelude.Nothing,
+      domainId = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      userProfileName = Prelude.Nothing
+    }
+
+-- | The creation time.
+userProfileDetails_creationTime :: Lens.Lens' UserProfileDetails (Prelude.Maybe Prelude.UTCTime)
+userProfileDetails_creationTime = Lens.lens (\UserProfileDetails' {creationTime} -> creationTime) (\s@UserProfileDetails' {} a -> s {creationTime = a} :: UserProfileDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The domain ID.
+userProfileDetails_domainId :: Lens.Lens' UserProfileDetails (Prelude.Maybe Prelude.Text)
+userProfileDetails_domainId = Lens.lens (\UserProfileDetails' {domainId} -> domainId) (\s@UserProfileDetails' {} a -> s {domainId = a} :: UserProfileDetails)
+
+-- | The last modified time.
+userProfileDetails_lastModifiedTime :: Lens.Lens' UserProfileDetails (Prelude.Maybe Prelude.UTCTime)
+userProfileDetails_lastModifiedTime = Lens.lens (\UserProfileDetails' {lastModifiedTime} -> lastModifiedTime) (\s@UserProfileDetails' {} a -> s {lastModifiedTime = a} :: UserProfileDetails) Prelude.. Lens.mapping Data._Time
+
+-- | The status.
+userProfileDetails_status :: Lens.Lens' UserProfileDetails (Prelude.Maybe UserProfileStatus)
+userProfileDetails_status = Lens.lens (\UserProfileDetails' {status} -> status) (\s@UserProfileDetails' {} a -> s {status = a} :: UserProfileDetails)
+
+-- | The user profile name.
+userProfileDetails_userProfileName :: Lens.Lens' UserProfileDetails (Prelude.Maybe Prelude.Text)
+userProfileDetails_userProfileName = Lens.lens (\UserProfileDetails' {userProfileName} -> userProfileName) (\s@UserProfileDetails' {} a -> s {userProfileName = a} :: UserProfileDetails)
+
+instance Data.FromJSON UserProfileDetails where
+  parseJSON =
+    Data.withObject
+      "UserProfileDetails"
+      ( \x ->
+          UserProfileDetails'
+            Prelude.<$> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "DomainId")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UserProfileName")
+      )
+
+instance Prelude.Hashable UserProfileDetails where
+  hashWithSalt _salt UserProfileDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData UserProfileDetails where
+  rnf UserProfileDetails' {..} =
+    Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf userProfileName
diff --git a/gen/Amazonka/SageMaker/Types/UserProfileSortKey.hs b/gen/Amazonka/SageMaker/Types/UserProfileSortKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UserProfileSortKey.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.UserProfileSortKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UserProfileSortKey
+  ( UserProfileSortKey
+      ( ..,
+        UserProfileSortKey_CreationTime,
+        UserProfileSortKey_LastModifiedTime
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserProfileSortKey = UserProfileSortKey'
+  { fromUserProfileSortKey ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern UserProfileSortKey_CreationTime :: UserProfileSortKey
+pattern UserProfileSortKey_CreationTime = UserProfileSortKey' "CreationTime"
+
+pattern UserProfileSortKey_LastModifiedTime :: UserProfileSortKey
+pattern UserProfileSortKey_LastModifiedTime = UserProfileSortKey' "LastModifiedTime"
+
+{-# COMPLETE
+  UserProfileSortKey_CreationTime,
+  UserProfileSortKey_LastModifiedTime,
+  UserProfileSortKey'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/UserProfileStatus.hs b/gen/Amazonka/SageMaker/Types/UserProfileStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UserProfileStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.UserProfileStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UserProfileStatus
+  ( UserProfileStatus
+      ( ..,
+        UserProfileStatus_Delete_Failed,
+        UserProfileStatus_Deleting,
+        UserProfileStatus_Failed,
+        UserProfileStatus_InService,
+        UserProfileStatus_Pending,
+        UserProfileStatus_Update_Failed,
+        UserProfileStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserProfileStatus = UserProfileStatus'
+  { fromUserProfileStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern UserProfileStatus_Delete_Failed :: UserProfileStatus
+pattern UserProfileStatus_Delete_Failed = UserProfileStatus' "Delete_Failed"
+
+pattern UserProfileStatus_Deleting :: UserProfileStatus
+pattern UserProfileStatus_Deleting = UserProfileStatus' "Deleting"
+
+pattern UserProfileStatus_Failed :: UserProfileStatus
+pattern UserProfileStatus_Failed = UserProfileStatus' "Failed"
+
+pattern UserProfileStatus_InService :: UserProfileStatus
+pattern UserProfileStatus_InService = UserProfileStatus' "InService"
+
+pattern UserProfileStatus_Pending :: UserProfileStatus
+pattern UserProfileStatus_Pending = UserProfileStatus' "Pending"
+
+pattern UserProfileStatus_Update_Failed :: UserProfileStatus
+pattern UserProfileStatus_Update_Failed = UserProfileStatus' "Update_Failed"
+
+pattern UserProfileStatus_Updating :: UserProfileStatus
+pattern UserProfileStatus_Updating = UserProfileStatus' "Updating"
+
+{-# COMPLETE
+  UserProfileStatus_Delete_Failed,
+  UserProfileStatus_Deleting,
+  UserProfileStatus_Failed,
+  UserProfileStatus_InService,
+  UserProfileStatus_Pending,
+  UserProfileStatus_Update_Failed,
+  UserProfileStatus_Updating,
+  UserProfileStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/UserSettings.hs b/gen/Amazonka/SageMaker/Types/UserSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/UserSettings.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.UserSettings
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.UserSettings 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 Amazonka.SageMaker.Types.CanvasAppSettings
+import Amazonka.SageMaker.Types.JupyterServerAppSettings
+import Amazonka.SageMaker.Types.KernelGatewayAppSettings
+import Amazonka.SageMaker.Types.RSessionAppSettings
+import Amazonka.SageMaker.Types.RStudioServerProAppSettings
+import Amazonka.SageMaker.Types.SharingSettings
+import Amazonka.SageMaker.Types.TensorBoardAppSettings
+
+-- | A collection of settings that apply to users of Amazon SageMaker Studio.
+-- These settings are specified when the @CreateUserProfile@ API is called,
+-- and as @DefaultUserSettings@ when the @CreateDomain@ API is called.
+--
+-- @SecurityGroups@ is aggregated when specified in both calls. For all
+-- other settings in @UserSettings@, the values specified in
+-- @CreateUserProfile@ take precedence over those specified in
+-- @CreateDomain@.
+--
+-- /See:/ 'newUserSettings' smart constructor.
+data UserSettings = UserSettings'
+  { -- | The Canvas app settings.
+    canvasAppSettings :: Prelude.Maybe CanvasAppSettings,
+    -- | The execution role for the user.
+    executionRole :: Prelude.Maybe Prelude.Text,
+    -- | The Jupyter server\'s app settings.
+    jupyterServerAppSettings :: Prelude.Maybe JupyterServerAppSettings,
+    -- | The kernel gateway app settings.
+    kernelGatewayAppSettings :: Prelude.Maybe KernelGatewayAppSettings,
+    -- | A collection of settings that configure the @RSessionGateway@ app.
+    rSessionAppSettings :: Prelude.Maybe RSessionAppSettings,
+    -- | A collection of settings that configure user interaction with the
+    -- @RStudioServerPro@ app.
+    rStudioServerProAppSettings :: Prelude.Maybe RStudioServerProAppSettings,
+    -- | The security groups for the Amazon Virtual Private Cloud (VPC) that
+    -- Studio uses for communication.
+    --
+    -- Optional when the @CreateDomain.AppNetworkAccessType@ parameter is set
+    -- to @PublicInternetOnly@.
+    --
+    -- Required when the @CreateDomain.AppNetworkAccessType@ parameter is set
+    -- to @VpcOnly@.
+    --
+    -- Amazon SageMaker adds a security group to allow NFS traffic from
+    -- SageMaker Studio. Therefore, the number of security groups that you can
+    -- specify is one less than the maximum number shown.
+    securityGroups :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies options for sharing SageMaker Studio notebooks.
+    sharingSettings :: Prelude.Maybe SharingSettings,
+    -- | The TensorBoard app settings.
+    tensorBoardAppSettings :: Prelude.Maybe TensorBoardAppSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserSettings' 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:
+--
+-- 'canvasAppSettings', 'userSettings_canvasAppSettings' - The Canvas app settings.
+--
+-- 'executionRole', 'userSettings_executionRole' - The execution role for the user.
+--
+-- 'jupyterServerAppSettings', 'userSettings_jupyterServerAppSettings' - The Jupyter server\'s app settings.
+--
+-- 'kernelGatewayAppSettings', 'userSettings_kernelGatewayAppSettings' - The kernel gateway app settings.
+--
+-- 'rSessionAppSettings', 'userSettings_rSessionAppSettings' - A collection of settings that configure the @RSessionGateway@ app.
+--
+-- 'rStudioServerProAppSettings', 'userSettings_rStudioServerProAppSettings' - A collection of settings that configure user interaction with the
+-- @RStudioServerPro@ app.
+--
+-- 'securityGroups', 'userSettings_securityGroups' - The security groups for the Amazon Virtual Private Cloud (VPC) that
+-- Studio uses for communication.
+--
+-- Optional when the @CreateDomain.AppNetworkAccessType@ parameter is set
+-- to @PublicInternetOnly@.
+--
+-- Required when the @CreateDomain.AppNetworkAccessType@ parameter is set
+-- to @VpcOnly@.
+--
+-- Amazon SageMaker adds a security group to allow NFS traffic from
+-- SageMaker Studio. Therefore, the number of security groups that you can
+-- specify is one less than the maximum number shown.
+--
+-- 'sharingSettings', 'userSettings_sharingSettings' - Specifies options for sharing SageMaker Studio notebooks.
+--
+-- 'tensorBoardAppSettings', 'userSettings_tensorBoardAppSettings' - The TensorBoard app settings.
+newUserSettings ::
+  UserSettings
+newUserSettings =
+  UserSettings'
+    { canvasAppSettings = Prelude.Nothing,
+      executionRole = Prelude.Nothing,
+      jupyterServerAppSettings = Prelude.Nothing,
+      kernelGatewayAppSettings = Prelude.Nothing,
+      rSessionAppSettings = Prelude.Nothing,
+      rStudioServerProAppSettings = Prelude.Nothing,
+      securityGroups = Prelude.Nothing,
+      sharingSettings = Prelude.Nothing,
+      tensorBoardAppSettings = Prelude.Nothing
+    }
+
+-- | The Canvas app settings.
+userSettings_canvasAppSettings :: Lens.Lens' UserSettings (Prelude.Maybe CanvasAppSettings)
+userSettings_canvasAppSettings = Lens.lens (\UserSettings' {canvasAppSettings} -> canvasAppSettings) (\s@UserSettings' {} a -> s {canvasAppSettings = a} :: UserSettings)
+
+-- | The execution role for the user.
+userSettings_executionRole :: Lens.Lens' UserSettings (Prelude.Maybe Prelude.Text)
+userSettings_executionRole = Lens.lens (\UserSettings' {executionRole} -> executionRole) (\s@UserSettings' {} a -> s {executionRole = a} :: UserSettings)
+
+-- | The Jupyter server\'s app settings.
+userSettings_jupyterServerAppSettings :: Lens.Lens' UserSettings (Prelude.Maybe JupyterServerAppSettings)
+userSettings_jupyterServerAppSettings = Lens.lens (\UserSettings' {jupyterServerAppSettings} -> jupyterServerAppSettings) (\s@UserSettings' {} a -> s {jupyterServerAppSettings = a} :: UserSettings)
+
+-- | The kernel gateway app settings.
+userSettings_kernelGatewayAppSettings :: Lens.Lens' UserSettings (Prelude.Maybe KernelGatewayAppSettings)
+userSettings_kernelGatewayAppSettings = Lens.lens (\UserSettings' {kernelGatewayAppSettings} -> kernelGatewayAppSettings) (\s@UserSettings' {} a -> s {kernelGatewayAppSettings = a} :: UserSettings)
+
+-- | A collection of settings that configure the @RSessionGateway@ app.
+userSettings_rSessionAppSettings :: Lens.Lens' UserSettings (Prelude.Maybe RSessionAppSettings)
+userSettings_rSessionAppSettings = Lens.lens (\UserSettings' {rSessionAppSettings} -> rSessionAppSettings) (\s@UserSettings' {} a -> s {rSessionAppSettings = a} :: UserSettings)
+
+-- | A collection of settings that configure user interaction with the
+-- @RStudioServerPro@ app.
+userSettings_rStudioServerProAppSettings :: Lens.Lens' UserSettings (Prelude.Maybe RStudioServerProAppSettings)
+userSettings_rStudioServerProAppSettings = Lens.lens (\UserSettings' {rStudioServerProAppSettings} -> rStudioServerProAppSettings) (\s@UserSettings' {} a -> s {rStudioServerProAppSettings = a} :: UserSettings)
+
+-- | The security groups for the Amazon Virtual Private Cloud (VPC) that
+-- Studio uses for communication.
+--
+-- Optional when the @CreateDomain.AppNetworkAccessType@ parameter is set
+-- to @PublicInternetOnly@.
+--
+-- Required when the @CreateDomain.AppNetworkAccessType@ parameter is set
+-- to @VpcOnly@.
+--
+-- Amazon SageMaker adds a security group to allow NFS traffic from
+-- SageMaker Studio. Therefore, the number of security groups that you can
+-- specify is one less than the maximum number shown.
+userSettings_securityGroups :: Lens.Lens' UserSettings (Prelude.Maybe [Prelude.Text])
+userSettings_securityGroups = Lens.lens (\UserSettings' {securityGroups} -> securityGroups) (\s@UserSettings' {} a -> s {securityGroups = a} :: UserSettings) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies options for sharing SageMaker Studio notebooks.
+userSettings_sharingSettings :: Lens.Lens' UserSettings (Prelude.Maybe SharingSettings)
+userSettings_sharingSettings = Lens.lens (\UserSettings' {sharingSettings} -> sharingSettings) (\s@UserSettings' {} a -> s {sharingSettings = a} :: UserSettings)
+
+-- | The TensorBoard app settings.
+userSettings_tensorBoardAppSettings :: Lens.Lens' UserSettings (Prelude.Maybe TensorBoardAppSettings)
+userSettings_tensorBoardAppSettings = Lens.lens (\UserSettings' {tensorBoardAppSettings} -> tensorBoardAppSettings) (\s@UserSettings' {} a -> s {tensorBoardAppSettings = a} :: UserSettings)
+
+instance Data.FromJSON UserSettings where
+  parseJSON =
+    Data.withObject
+      "UserSettings"
+      ( \x ->
+          UserSettings'
+            Prelude.<$> (x Data..:? "CanvasAppSettings")
+            Prelude.<*> (x Data..:? "ExecutionRole")
+            Prelude.<*> (x Data..:? "JupyterServerAppSettings")
+            Prelude.<*> (x Data..:? "KernelGatewayAppSettings")
+            Prelude.<*> (x Data..:? "RSessionAppSettings")
+            Prelude.<*> (x Data..:? "RStudioServerProAppSettings")
+            Prelude.<*> (x Data..:? "SecurityGroups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "SharingSettings")
+            Prelude.<*> (x Data..:? "TensorBoardAppSettings")
+      )
+
+instance Prelude.Hashable UserSettings where
+  hashWithSalt _salt UserSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` canvasAppSettings
+      `Prelude.hashWithSalt` executionRole
+      `Prelude.hashWithSalt` jupyterServerAppSettings
+      `Prelude.hashWithSalt` kernelGatewayAppSettings
+      `Prelude.hashWithSalt` rSessionAppSettings
+      `Prelude.hashWithSalt` rStudioServerProAppSettings
+      `Prelude.hashWithSalt` securityGroups
+      `Prelude.hashWithSalt` sharingSettings
+      `Prelude.hashWithSalt` tensorBoardAppSettings
+
+instance Prelude.NFData UserSettings where
+  rnf UserSettings' {..} =
+    Prelude.rnf canvasAppSettings
+      `Prelude.seq` Prelude.rnf executionRole
+      `Prelude.seq` Prelude.rnf jupyterServerAppSettings
+      `Prelude.seq` Prelude.rnf kernelGatewayAppSettings
+      `Prelude.seq` Prelude.rnf rSessionAppSettings
+      `Prelude.seq` Prelude.rnf rStudioServerProAppSettings
+      `Prelude.seq` Prelude.rnf securityGroups
+      `Prelude.seq` Prelude.rnf sharingSettings
+      `Prelude.seq` Prelude.rnf tensorBoardAppSettings
+
+instance Data.ToJSON UserSettings where
+  toJSON UserSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CanvasAppSettings" Data..=)
+              Prelude.<$> canvasAppSettings,
+            ("ExecutionRole" Data..=) Prelude.<$> executionRole,
+            ("JupyterServerAppSettings" Data..=)
+              Prelude.<$> jupyterServerAppSettings,
+            ("KernelGatewayAppSettings" Data..=)
+              Prelude.<$> kernelGatewayAppSettings,
+            ("RSessionAppSettings" Data..=)
+              Prelude.<$> rSessionAppSettings,
+            ("RStudioServerProAppSettings" Data..=)
+              Prelude.<$> rStudioServerProAppSettings,
+            ("SecurityGroups" Data..=)
+              Prelude.<$> securityGroups,
+            ("SharingSettings" Data..=)
+              Prelude.<$> sharingSettings,
+            ("TensorBoardAppSettings" Data..=)
+              Prelude.<$> tensorBoardAppSettings
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/VariantProperty.hs b/gen/Amazonka/SageMaker/Types/VariantProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/VariantProperty.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.VariantProperty
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.VariantProperty 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 Amazonka.SageMaker.Types.VariantPropertyType
+
+-- | Specifies a production variant property type for an Endpoint.
+--
+-- If you are updating an endpoint with the
+-- UpdateEndpointInput$RetainAllVariantProperties option set to @true@, the
+-- @VariantProperty@ objects listed in
+-- UpdateEndpointInput$ExcludeRetainedVariantProperties override the
+-- existing variant properties of the endpoint.
+--
+-- /See:/ 'newVariantProperty' smart constructor.
+data VariantProperty = VariantProperty'
+  { -- | The type of variant property. The supported values are:
+    --
+    -- -   @DesiredInstanceCount@: Overrides the existing variant instance
+    --     counts using the ProductionVariant$InitialInstanceCount values in
+    --     the CreateEndpointConfigInput$ProductionVariants.
+    --
+    -- -   @DesiredWeight@: Overrides the existing variant weights using the
+    --     ProductionVariant$InitialVariantWeight values in the
+    --     CreateEndpointConfigInput$ProductionVariants.
+    --
+    -- -   @DataCaptureConfig@: (Not currently supported.)
+    variantPropertyType :: VariantPropertyType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VariantProperty' 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:
+--
+-- 'variantPropertyType', 'variantProperty_variantPropertyType' - The type of variant property. The supported values are:
+--
+-- -   @DesiredInstanceCount@: Overrides the existing variant instance
+--     counts using the ProductionVariant$InitialInstanceCount values in
+--     the CreateEndpointConfigInput$ProductionVariants.
+--
+-- -   @DesiredWeight@: Overrides the existing variant weights using the
+--     ProductionVariant$InitialVariantWeight values in the
+--     CreateEndpointConfigInput$ProductionVariants.
+--
+-- -   @DataCaptureConfig@: (Not currently supported.)
+newVariantProperty ::
+  -- | 'variantPropertyType'
+  VariantPropertyType ->
+  VariantProperty
+newVariantProperty pVariantPropertyType_ =
+  VariantProperty'
+    { variantPropertyType =
+        pVariantPropertyType_
+    }
+
+-- | The type of variant property. The supported values are:
+--
+-- -   @DesiredInstanceCount@: Overrides the existing variant instance
+--     counts using the ProductionVariant$InitialInstanceCount values in
+--     the CreateEndpointConfigInput$ProductionVariants.
+--
+-- -   @DesiredWeight@: Overrides the existing variant weights using the
+--     ProductionVariant$InitialVariantWeight values in the
+--     CreateEndpointConfigInput$ProductionVariants.
+--
+-- -   @DataCaptureConfig@: (Not currently supported.)
+variantProperty_variantPropertyType :: Lens.Lens' VariantProperty VariantPropertyType
+variantProperty_variantPropertyType = Lens.lens (\VariantProperty' {variantPropertyType} -> variantPropertyType) (\s@VariantProperty' {} a -> s {variantPropertyType = a} :: VariantProperty)
+
+instance Prelude.Hashable VariantProperty where
+  hashWithSalt _salt VariantProperty' {..} =
+    _salt `Prelude.hashWithSalt` variantPropertyType
+
+instance Prelude.NFData VariantProperty where
+  rnf VariantProperty' {..} =
+    Prelude.rnf variantPropertyType
+
+instance Data.ToJSON VariantProperty where
+  toJSON VariantProperty' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("VariantPropertyType" Data..= variantPropertyType)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/VariantPropertyType.hs b/gen/Amazonka/SageMaker/Types/VariantPropertyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/VariantPropertyType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.VariantPropertyType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.VariantPropertyType
+  ( VariantPropertyType
+      ( ..,
+        VariantPropertyType_DataCaptureConfig,
+        VariantPropertyType_DesiredInstanceCount,
+        VariantPropertyType_DesiredWeight
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VariantPropertyType = VariantPropertyType'
+  { fromVariantPropertyType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VariantPropertyType_DataCaptureConfig :: VariantPropertyType
+pattern VariantPropertyType_DataCaptureConfig = VariantPropertyType' "DataCaptureConfig"
+
+pattern VariantPropertyType_DesiredInstanceCount :: VariantPropertyType
+pattern VariantPropertyType_DesiredInstanceCount = VariantPropertyType' "DesiredInstanceCount"
+
+pattern VariantPropertyType_DesiredWeight :: VariantPropertyType
+pattern VariantPropertyType_DesiredWeight = VariantPropertyType' "DesiredWeight"
+
+{-# COMPLETE
+  VariantPropertyType_DataCaptureConfig,
+  VariantPropertyType_DesiredInstanceCount,
+  VariantPropertyType_DesiredWeight,
+  VariantPropertyType'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/VariantStatus.hs b/gen/Amazonka/SageMaker/Types/VariantStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/VariantStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.VariantStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.VariantStatus
+  ( VariantStatus
+      ( ..,
+        VariantStatus_ActivatingTraffic,
+        VariantStatus_Baking,
+        VariantStatus_Creating,
+        VariantStatus_Deleting,
+        VariantStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VariantStatus = VariantStatus'
+  { fromVariantStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VariantStatus_ActivatingTraffic :: VariantStatus
+pattern VariantStatus_ActivatingTraffic = VariantStatus' "ActivatingTraffic"
+
+pattern VariantStatus_Baking :: VariantStatus
+pattern VariantStatus_Baking = VariantStatus' "Baking"
+
+pattern VariantStatus_Creating :: VariantStatus
+pattern VariantStatus_Creating = VariantStatus' "Creating"
+
+pattern VariantStatus_Deleting :: VariantStatus
+pattern VariantStatus_Deleting = VariantStatus' "Deleting"
+
+pattern VariantStatus_Updating :: VariantStatus
+pattern VariantStatus_Updating = VariantStatus' "Updating"
+
+{-# COMPLETE
+  VariantStatus_ActivatingTraffic,
+  VariantStatus_Baking,
+  VariantStatus_Creating,
+  VariantStatus_Deleting,
+  VariantStatus_Updating,
+  VariantStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/VendorGuidance.hs b/gen/Amazonka/SageMaker/Types/VendorGuidance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/VendorGuidance.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.VendorGuidance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.VendorGuidance
+  ( VendorGuidance
+      ( ..,
+        VendorGuidance_ARCHIVED,
+        VendorGuidance_NOT_PROVIDED,
+        VendorGuidance_STABLE,
+        VendorGuidance_TO_BE_ARCHIVED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VendorGuidance = VendorGuidance'
+  { fromVendorGuidance ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VendorGuidance_ARCHIVED :: VendorGuidance
+pattern VendorGuidance_ARCHIVED = VendorGuidance' "ARCHIVED"
+
+pattern VendorGuidance_NOT_PROVIDED :: VendorGuidance
+pattern VendorGuidance_NOT_PROVIDED = VendorGuidance' "NOT_PROVIDED"
+
+pattern VendorGuidance_STABLE :: VendorGuidance
+pattern VendorGuidance_STABLE = VendorGuidance' "STABLE"
+
+pattern VendorGuidance_TO_BE_ARCHIVED :: VendorGuidance
+pattern VendorGuidance_TO_BE_ARCHIVED = VendorGuidance' "TO_BE_ARCHIVED"
+
+{-# COMPLETE
+  VendorGuidance_ARCHIVED,
+  VendorGuidance_NOT_PROVIDED,
+  VendorGuidance_STABLE,
+  VendorGuidance_TO_BE_ARCHIVED,
+  VendorGuidance'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/Vertex.hs b/gen/Amazonka/SageMaker/Types/Vertex.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Vertex.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Vertex
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Vertex 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 Amazonka.SageMaker.Types.LineageType
+
+-- | A lineage entity connected to the starting entity(ies).
+--
+-- /See:/ 'newVertex' smart constructor.
+data Vertex = Vertex'
+  { -- | The Amazon Resource Name (ARN) of the lineage entity resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The type of resource of the lineage entity.
+    lineageType :: Prelude.Maybe LineageType,
+    -- | The type of the lineage entity resource. For example: @DataSet@,
+    -- @Model@, @Endpoint@, etc...
+    type' :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Vertex' 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:
+--
+-- 'arn', 'vertex_arn' - The Amazon Resource Name (ARN) of the lineage entity resource.
+--
+-- 'lineageType', 'vertex_lineageType' - The type of resource of the lineage entity.
+--
+-- 'type'', 'vertex_type' - The type of the lineage entity resource. For example: @DataSet@,
+-- @Model@, @Endpoint@, etc...
+newVertex ::
+  Vertex
+newVertex =
+  Vertex'
+    { arn = Prelude.Nothing,
+      lineageType = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the lineage entity resource.
+vertex_arn :: Lens.Lens' Vertex (Prelude.Maybe Prelude.Text)
+vertex_arn = Lens.lens (\Vertex' {arn} -> arn) (\s@Vertex' {} a -> s {arn = a} :: Vertex)
+
+-- | The type of resource of the lineage entity.
+vertex_lineageType :: Lens.Lens' Vertex (Prelude.Maybe LineageType)
+vertex_lineageType = Lens.lens (\Vertex' {lineageType} -> lineageType) (\s@Vertex' {} a -> s {lineageType = a} :: Vertex)
+
+-- | The type of the lineage entity resource. For example: @DataSet@,
+-- @Model@, @Endpoint@, etc...
+vertex_type :: Lens.Lens' Vertex (Prelude.Maybe Prelude.Text)
+vertex_type = Lens.lens (\Vertex' {type'} -> type') (\s@Vertex' {} a -> s {type' = a} :: Vertex)
+
+instance Data.FromJSON Vertex where
+  parseJSON =
+    Data.withObject
+      "Vertex"
+      ( \x ->
+          Vertex'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "LineageType")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable Vertex where
+  hashWithSalt _salt Vertex' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` lineageType
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Vertex where
+  rnf Vertex' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf lineageType
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMaker/Types/VpcConfig.hs b/gen/Amazonka/SageMaker/Types/VpcConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/VpcConfig.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.VpcConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.VpcConfig 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
+
+-- | Specifies a VPC that your training jobs and hosted models have access
+-- to. Control access to and from your training and model containers by
+-- configuring the VPC. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html Protect Endpoints by Using an Amazon Virtual Private Cloud>
+-- and
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
+--
+-- /See:/ 'newVpcConfig' smart constructor.
+data VpcConfig = VpcConfig'
+  { -- | The VPC security group IDs, in the form sg-xxxxxxxx. Specify the
+    -- security groups for the VPC that is specified in the @Subnets@ field.
+    securityGroupIds :: Prelude.NonEmpty Prelude.Text,
+    -- | The ID of the subnets in the VPC to which you want to connect your
+    -- training job or model. For information about the availability of
+    -- specific instance types, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/instance-types-az.html Supported Instance Types and Availability Zones>.
+    subnets :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VpcConfig' 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:
+--
+-- 'securityGroupIds', 'vpcConfig_securityGroupIds' - The VPC security group IDs, in the form sg-xxxxxxxx. Specify the
+-- security groups for the VPC that is specified in the @Subnets@ field.
+--
+-- 'subnets', 'vpcConfig_subnets' - The ID of the subnets in the VPC to which you want to connect your
+-- training job or model. For information about the availability of
+-- specific instance types, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/instance-types-az.html Supported Instance Types and Availability Zones>.
+newVpcConfig ::
+  -- | 'securityGroupIds'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'subnets'
+  Prelude.NonEmpty Prelude.Text ->
+  VpcConfig
+newVpcConfig pSecurityGroupIds_ pSubnets_ =
+  VpcConfig'
+    { securityGroupIds =
+        Lens.coerced Lens.# pSecurityGroupIds_,
+      subnets = Lens.coerced Lens.# pSubnets_
+    }
+
+-- | The VPC security group IDs, in the form sg-xxxxxxxx. Specify the
+-- security groups for the VPC that is specified in the @Subnets@ field.
+vpcConfig_securityGroupIds :: Lens.Lens' VpcConfig (Prelude.NonEmpty Prelude.Text)
+vpcConfig_securityGroupIds = Lens.lens (\VpcConfig' {securityGroupIds} -> securityGroupIds) (\s@VpcConfig' {} a -> s {securityGroupIds = a} :: VpcConfig) Prelude.. Lens.coerced
+
+-- | The ID of the subnets in the VPC to which you want to connect your
+-- training job or model. For information about the availability of
+-- specific instance types, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/instance-types-az.html Supported Instance Types and Availability Zones>.
+vpcConfig_subnets :: Lens.Lens' VpcConfig (Prelude.NonEmpty Prelude.Text)
+vpcConfig_subnets = Lens.lens (\VpcConfig' {subnets} -> subnets) (\s@VpcConfig' {} a -> s {subnets = a} :: VpcConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON VpcConfig where
+  parseJSON =
+    Data.withObject
+      "VpcConfig"
+      ( \x ->
+          VpcConfig'
+            Prelude.<$> (x Data..: "SecurityGroupIds")
+            Prelude.<*> (x Data..: "Subnets")
+      )
+
+instance Prelude.Hashable VpcConfig where
+  hashWithSalt _salt VpcConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` subnets
+
+instance Prelude.NFData VpcConfig where
+  rnf VpcConfig' {..} =
+    Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf subnets
+
+instance Data.ToJSON VpcConfig where
+  toJSON VpcConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("SecurityGroupIds" Data..= securityGroupIds),
+            Prelude.Just ("Subnets" Data..= subnets)
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/WarmPoolResourceStatus.hs b/gen/Amazonka/SageMaker/Types/WarmPoolResourceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/WarmPoolResourceStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.WarmPoolResourceStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.WarmPoolResourceStatus
+  ( WarmPoolResourceStatus
+      ( ..,
+        WarmPoolResourceStatus_Available,
+        WarmPoolResourceStatus_InUse,
+        WarmPoolResourceStatus_Reused,
+        WarmPoolResourceStatus_Terminated
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WarmPoolResourceStatus = WarmPoolResourceStatus'
+  { fromWarmPoolResourceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WarmPoolResourceStatus_Available :: WarmPoolResourceStatus
+pattern WarmPoolResourceStatus_Available = WarmPoolResourceStatus' "Available"
+
+pattern WarmPoolResourceStatus_InUse :: WarmPoolResourceStatus
+pattern WarmPoolResourceStatus_InUse = WarmPoolResourceStatus' "InUse"
+
+pattern WarmPoolResourceStatus_Reused :: WarmPoolResourceStatus
+pattern WarmPoolResourceStatus_Reused = WarmPoolResourceStatus' "Reused"
+
+pattern WarmPoolResourceStatus_Terminated :: WarmPoolResourceStatus
+pattern WarmPoolResourceStatus_Terminated = WarmPoolResourceStatus' "Terminated"
+
+{-# COMPLETE
+  WarmPoolResourceStatus_Available,
+  WarmPoolResourceStatus_InUse,
+  WarmPoolResourceStatus_Reused,
+  WarmPoolResourceStatus_Terminated,
+  WarmPoolResourceStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/WarmPoolStatus.hs b/gen/Amazonka/SageMaker/Types/WarmPoolStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/WarmPoolStatus.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.WarmPoolStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.WarmPoolStatus 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 Amazonka.SageMaker.Types.WarmPoolResourceStatus
+
+-- | Status and billing information about the warm pool.
+--
+-- /See:/ 'newWarmPoolStatus' smart constructor.
+data WarmPoolStatus = WarmPoolStatus'
+  { -- | The billable time in seconds used by the warm pool. Billable time refers
+    -- to the absolute wall-clock time.
+    --
+    -- Multiply @ResourceRetainedBillableTimeInSeconds@ by the number of
+    -- instances (@InstanceCount@) in your training cluster to get the total
+    -- compute time SageMaker bills you if you run warm pool training. The
+    -- formula is as follows:
+    -- @ResourceRetainedBillableTimeInSeconds * InstanceCount@.
+    resourceRetainedBillableTimeInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the matching training job that reused the warm pool.
+    reusedByJob :: Prelude.Maybe Prelude.Text,
+    -- | The status of the warm pool.
+    --
+    -- -   @InUse@: The warm pool is in use for the training job.
+    --
+    -- -   @Available@: The warm pool is available to reuse for a matching
+    --     training job.
+    --
+    -- -   @Reused@: The warm pool moved to a matching training job for reuse.
+    --
+    -- -   @Terminated@: The warm pool is no longer available. Warm pools are
+    --     unavailable if they are terminated by a user, terminated for a patch
+    --     update, or terminated for exceeding the specified
+    --     @KeepAlivePeriodInSeconds@.
+    status :: WarmPoolResourceStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WarmPoolStatus' 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:
+--
+-- 'resourceRetainedBillableTimeInSeconds', 'warmPoolStatus_resourceRetainedBillableTimeInSeconds' - The billable time in seconds used by the warm pool. Billable time refers
+-- to the absolute wall-clock time.
+--
+-- Multiply @ResourceRetainedBillableTimeInSeconds@ by the number of
+-- instances (@InstanceCount@) in your training cluster to get the total
+-- compute time SageMaker bills you if you run warm pool training. The
+-- formula is as follows:
+-- @ResourceRetainedBillableTimeInSeconds * InstanceCount@.
+--
+-- 'reusedByJob', 'warmPoolStatus_reusedByJob' - The name of the matching training job that reused the warm pool.
+--
+-- 'status', 'warmPoolStatus_status' - The status of the warm pool.
+--
+-- -   @InUse@: The warm pool is in use for the training job.
+--
+-- -   @Available@: The warm pool is available to reuse for a matching
+--     training job.
+--
+-- -   @Reused@: The warm pool moved to a matching training job for reuse.
+--
+-- -   @Terminated@: The warm pool is no longer available. Warm pools are
+--     unavailable if they are terminated by a user, terminated for a patch
+--     update, or terminated for exceeding the specified
+--     @KeepAlivePeriodInSeconds@.
+newWarmPoolStatus ::
+  -- | 'status'
+  WarmPoolResourceStatus ->
+  WarmPoolStatus
+newWarmPoolStatus pStatus_ =
+  WarmPoolStatus'
+    { resourceRetainedBillableTimeInSeconds =
+        Prelude.Nothing,
+      reusedByJob = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | The billable time in seconds used by the warm pool. Billable time refers
+-- to the absolute wall-clock time.
+--
+-- Multiply @ResourceRetainedBillableTimeInSeconds@ by the number of
+-- instances (@InstanceCount@) in your training cluster to get the total
+-- compute time SageMaker bills you if you run warm pool training. The
+-- formula is as follows:
+-- @ResourceRetainedBillableTimeInSeconds * InstanceCount@.
+warmPoolStatus_resourceRetainedBillableTimeInSeconds :: Lens.Lens' WarmPoolStatus (Prelude.Maybe Prelude.Natural)
+warmPoolStatus_resourceRetainedBillableTimeInSeconds = Lens.lens (\WarmPoolStatus' {resourceRetainedBillableTimeInSeconds} -> resourceRetainedBillableTimeInSeconds) (\s@WarmPoolStatus' {} a -> s {resourceRetainedBillableTimeInSeconds = a} :: WarmPoolStatus)
+
+-- | The name of the matching training job that reused the warm pool.
+warmPoolStatus_reusedByJob :: Lens.Lens' WarmPoolStatus (Prelude.Maybe Prelude.Text)
+warmPoolStatus_reusedByJob = Lens.lens (\WarmPoolStatus' {reusedByJob} -> reusedByJob) (\s@WarmPoolStatus' {} a -> s {reusedByJob = a} :: WarmPoolStatus)
+
+-- | The status of the warm pool.
+--
+-- -   @InUse@: The warm pool is in use for the training job.
+--
+-- -   @Available@: The warm pool is available to reuse for a matching
+--     training job.
+--
+-- -   @Reused@: The warm pool moved to a matching training job for reuse.
+--
+-- -   @Terminated@: The warm pool is no longer available. Warm pools are
+--     unavailable if they are terminated by a user, terminated for a patch
+--     update, or terminated for exceeding the specified
+--     @KeepAlivePeriodInSeconds@.
+warmPoolStatus_status :: Lens.Lens' WarmPoolStatus WarmPoolResourceStatus
+warmPoolStatus_status = Lens.lens (\WarmPoolStatus' {status} -> status) (\s@WarmPoolStatus' {} a -> s {status = a} :: WarmPoolStatus)
+
+instance Data.FromJSON WarmPoolStatus where
+  parseJSON =
+    Data.withObject
+      "WarmPoolStatus"
+      ( \x ->
+          WarmPoolStatus'
+            Prelude.<$> (x Data..:? "ResourceRetainedBillableTimeInSeconds")
+            Prelude.<*> (x Data..:? "ReusedByJob")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable WarmPoolStatus where
+  hashWithSalt _salt WarmPoolStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceRetainedBillableTimeInSeconds
+      `Prelude.hashWithSalt` reusedByJob
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData WarmPoolStatus where
+  rnf WarmPoolStatus' {..} =
+    Prelude.rnf resourceRetainedBillableTimeInSeconds
+      `Prelude.seq` Prelude.rnf reusedByJob
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMaker/Types/Workforce.hs b/gen/Amazonka/SageMaker/Types/Workforce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Workforce.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Workforce
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Workforce 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 Amazonka.SageMaker.Types.CognitoConfig
+import Amazonka.SageMaker.Types.OidcConfigForResponse
+import Amazonka.SageMaker.Types.SourceIpConfig
+import Amazonka.SageMaker.Types.WorkforceStatus
+import Amazonka.SageMaker.Types.WorkforceVpcConfigResponse
+
+-- | A single private workforce, which is automatically created when you
+-- create your first private work team. You can create one private work
+-- force in each Amazon Web Services Region. By default, any
+-- workforce-related API operation used in a specific region will apply to
+-- the workforce created in that region. To learn how to create a private
+-- workforce, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+--
+-- /See:/ 'newWorkforce' smart constructor.
+data Workforce = Workforce'
+  { -- | The configuration of an Amazon Cognito workforce. A single Cognito
+    -- workforce is created using and corresponds to a single
+    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+    cognitoConfig :: Prelude.Maybe CognitoConfig,
+    -- | The date that the workforce is created.
+    createDate :: Prelude.Maybe Data.POSIX,
+    -- | The reason your workforce failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The most recent date that was used to successfully add one or more IP
+    -- address ranges
+    -- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+    -- to a private workforce\'s allow list.
+    lastUpdatedDate :: Prelude.Maybe Data.POSIX,
+    -- | The configuration of an OIDC Identity Provider (IdP) private workforce.
+    oidcConfig :: Prelude.Maybe OidcConfigForResponse,
+    -- | A list of one to ten IP address ranges
+    -- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+    -- to be added to the workforce allow list. By default, a workforce isn\'t
+    -- restricted to specific IP addresses.
+    sourceIpConfig :: Prelude.Maybe SourceIpConfig,
+    -- | The status of your workforce.
+    status :: Prelude.Maybe WorkforceStatus,
+    -- | The subdomain for your OIDC Identity Provider.
+    subDomain :: Prelude.Maybe Prelude.Text,
+    -- | The configuration of a VPC workforce.
+    workforceVpcConfig :: Prelude.Maybe WorkforceVpcConfigResponse,
+    -- | The name of the private workforce.
+    workforceName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the private workforce.
+    workforceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Workforce' 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:
+--
+-- 'cognitoConfig', 'workforce_cognitoConfig' - The configuration of an Amazon Cognito workforce. A single Cognito
+-- workforce is created using and corresponds to a single
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+--
+-- 'createDate', 'workforce_createDate' - The date that the workforce is created.
+--
+-- 'failureReason', 'workforce_failureReason' - The reason your workforce failed.
+--
+-- 'lastUpdatedDate', 'workforce_lastUpdatedDate' - The most recent date that was used to successfully add one or more IP
+-- address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+-- to a private workforce\'s allow list.
+--
+-- 'oidcConfig', 'workforce_oidcConfig' - The configuration of an OIDC Identity Provider (IdP) private workforce.
+--
+-- 'sourceIpConfig', 'workforce_sourceIpConfig' - A list of one to ten IP address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+-- to be added to the workforce allow list. By default, a workforce isn\'t
+-- restricted to specific IP addresses.
+--
+-- 'status', 'workforce_status' - The status of your workforce.
+--
+-- 'subDomain', 'workforce_subDomain' - The subdomain for your OIDC Identity Provider.
+--
+-- 'workforceVpcConfig', 'workforce_workforceVpcConfig' - The configuration of a VPC workforce.
+--
+-- 'workforceName', 'workforce_workforceName' - The name of the private workforce.
+--
+-- 'workforceArn', 'workforce_workforceArn' - The Amazon Resource Name (ARN) of the private workforce.
+newWorkforce ::
+  -- | 'workforceName'
+  Prelude.Text ->
+  -- | 'workforceArn'
+  Prelude.Text ->
+  Workforce
+newWorkforce pWorkforceName_ pWorkforceArn_ =
+  Workforce'
+    { cognitoConfig = Prelude.Nothing,
+      createDate = Prelude.Nothing,
+      failureReason = Prelude.Nothing,
+      lastUpdatedDate = Prelude.Nothing,
+      oidcConfig = Prelude.Nothing,
+      sourceIpConfig = Prelude.Nothing,
+      status = Prelude.Nothing,
+      subDomain = Prelude.Nothing,
+      workforceVpcConfig = Prelude.Nothing,
+      workforceName = pWorkforceName_,
+      workforceArn = pWorkforceArn_
+    }
+
+-- | The configuration of an Amazon Cognito workforce. A single Cognito
+-- workforce is created using and corresponds to a single
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito user pool>.
+workforce_cognitoConfig :: Lens.Lens' Workforce (Prelude.Maybe CognitoConfig)
+workforce_cognitoConfig = Lens.lens (\Workforce' {cognitoConfig} -> cognitoConfig) (\s@Workforce' {} a -> s {cognitoConfig = a} :: Workforce)
+
+-- | The date that the workforce is created.
+workforce_createDate :: Lens.Lens' Workforce (Prelude.Maybe Prelude.UTCTime)
+workforce_createDate = Lens.lens (\Workforce' {createDate} -> createDate) (\s@Workforce' {} a -> s {createDate = a} :: Workforce) Prelude.. Lens.mapping Data._Time
+
+-- | The reason your workforce failed.
+workforce_failureReason :: Lens.Lens' Workforce (Prelude.Maybe Prelude.Text)
+workforce_failureReason = Lens.lens (\Workforce' {failureReason} -> failureReason) (\s@Workforce' {} a -> s {failureReason = a} :: Workforce)
+
+-- | The most recent date that was used to successfully add one or more IP
+-- address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+-- to a private workforce\'s allow list.
+workforce_lastUpdatedDate :: Lens.Lens' Workforce (Prelude.Maybe Prelude.UTCTime)
+workforce_lastUpdatedDate = Lens.lens (\Workforce' {lastUpdatedDate} -> lastUpdatedDate) (\s@Workforce' {} a -> s {lastUpdatedDate = a} :: Workforce) Prelude.. Lens.mapping Data._Time
+
+-- | The configuration of an OIDC Identity Provider (IdP) private workforce.
+workforce_oidcConfig :: Lens.Lens' Workforce (Prelude.Maybe OidcConfigForResponse)
+workforce_oidcConfig = Lens.lens (\Workforce' {oidcConfig} -> oidcConfig) (\s@Workforce' {} a -> s {oidcConfig = a} :: Workforce)
+
+-- | A list of one to ten IP address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+-- to be added to the workforce allow list. By default, a workforce isn\'t
+-- restricted to specific IP addresses.
+workforce_sourceIpConfig :: Lens.Lens' Workforce (Prelude.Maybe SourceIpConfig)
+workforce_sourceIpConfig = Lens.lens (\Workforce' {sourceIpConfig} -> sourceIpConfig) (\s@Workforce' {} a -> s {sourceIpConfig = a} :: Workforce)
+
+-- | The status of your workforce.
+workforce_status :: Lens.Lens' Workforce (Prelude.Maybe WorkforceStatus)
+workforce_status = Lens.lens (\Workforce' {status} -> status) (\s@Workforce' {} a -> s {status = a} :: Workforce)
+
+-- | The subdomain for your OIDC Identity Provider.
+workforce_subDomain :: Lens.Lens' Workforce (Prelude.Maybe Prelude.Text)
+workforce_subDomain = Lens.lens (\Workforce' {subDomain} -> subDomain) (\s@Workforce' {} a -> s {subDomain = a} :: Workforce)
+
+-- | The configuration of a VPC workforce.
+workforce_workforceVpcConfig :: Lens.Lens' Workforce (Prelude.Maybe WorkforceVpcConfigResponse)
+workforce_workforceVpcConfig = Lens.lens (\Workforce' {workforceVpcConfig} -> workforceVpcConfig) (\s@Workforce' {} a -> s {workforceVpcConfig = a} :: Workforce)
+
+-- | The name of the private workforce.
+workforce_workforceName :: Lens.Lens' Workforce Prelude.Text
+workforce_workforceName = Lens.lens (\Workforce' {workforceName} -> workforceName) (\s@Workforce' {} a -> s {workforceName = a} :: Workforce)
+
+-- | The Amazon Resource Name (ARN) of the private workforce.
+workforce_workforceArn :: Lens.Lens' Workforce Prelude.Text
+workforce_workforceArn = Lens.lens (\Workforce' {workforceArn} -> workforceArn) (\s@Workforce' {} a -> s {workforceArn = a} :: Workforce)
+
+instance Data.FromJSON Workforce where
+  parseJSON =
+    Data.withObject
+      "Workforce"
+      ( \x ->
+          Workforce'
+            Prelude.<$> (x Data..:? "CognitoConfig")
+            Prelude.<*> (x Data..:? "CreateDate")
+            Prelude.<*> (x Data..:? "FailureReason")
+            Prelude.<*> (x Data..:? "LastUpdatedDate")
+            Prelude.<*> (x Data..:? "OidcConfig")
+            Prelude.<*> (x Data..:? "SourceIpConfig")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "SubDomain")
+            Prelude.<*> (x Data..:? "WorkforceVpcConfig")
+            Prelude.<*> (x Data..: "WorkforceName")
+            Prelude.<*> (x Data..: "WorkforceArn")
+      )
+
+instance Prelude.Hashable Workforce where
+  hashWithSalt _salt Workforce' {..} =
+    _salt
+      `Prelude.hashWithSalt` cognitoConfig
+      `Prelude.hashWithSalt` createDate
+      `Prelude.hashWithSalt` failureReason
+      `Prelude.hashWithSalt` lastUpdatedDate
+      `Prelude.hashWithSalt` oidcConfig
+      `Prelude.hashWithSalt` sourceIpConfig
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` subDomain
+      `Prelude.hashWithSalt` workforceVpcConfig
+      `Prelude.hashWithSalt` workforceName
+      `Prelude.hashWithSalt` workforceArn
+
+instance Prelude.NFData Workforce where
+  rnf Workforce' {..} =
+    Prelude.rnf cognitoConfig
+      `Prelude.seq` Prelude.rnf createDate
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf lastUpdatedDate
+      `Prelude.seq` Prelude.rnf oidcConfig
+      `Prelude.seq` Prelude.rnf sourceIpConfig
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf subDomain
+      `Prelude.seq` Prelude.rnf workforceVpcConfig
+      `Prelude.seq` Prelude.rnf workforceName
+      `Prelude.seq` Prelude.rnf workforceArn
diff --git a/gen/Amazonka/SageMaker/Types/WorkforceStatus.hs b/gen/Amazonka/SageMaker/Types/WorkforceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/WorkforceStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Types.WorkforceStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.WorkforceStatus
+  ( WorkforceStatus
+      ( ..,
+        WorkforceStatus_Active,
+        WorkforceStatus_Deleting,
+        WorkforceStatus_Failed,
+        WorkforceStatus_Initializing,
+        WorkforceStatus_Updating
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype WorkforceStatus = WorkforceStatus'
+  { fromWorkforceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern WorkforceStatus_Active :: WorkforceStatus
+pattern WorkforceStatus_Active = WorkforceStatus' "Active"
+
+pattern WorkforceStatus_Deleting :: WorkforceStatus
+pattern WorkforceStatus_Deleting = WorkforceStatus' "Deleting"
+
+pattern WorkforceStatus_Failed :: WorkforceStatus
+pattern WorkforceStatus_Failed = WorkforceStatus' "Failed"
+
+pattern WorkforceStatus_Initializing :: WorkforceStatus
+pattern WorkforceStatus_Initializing = WorkforceStatus' "Initializing"
+
+pattern WorkforceStatus_Updating :: WorkforceStatus
+pattern WorkforceStatus_Updating = WorkforceStatus' "Updating"
+
+{-# COMPLETE
+  WorkforceStatus_Active,
+  WorkforceStatus_Deleting,
+  WorkforceStatus_Failed,
+  WorkforceStatus_Initializing,
+  WorkforceStatus_Updating,
+  WorkforceStatus'
+  #-}
diff --git a/gen/Amazonka/SageMaker/Types/WorkforceVpcConfigRequest.hs b/gen/Amazonka/SageMaker/Types/WorkforceVpcConfigRequest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/WorkforceVpcConfigRequest.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.WorkforceVpcConfigRequest
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.WorkforceVpcConfigRequest 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
+
+-- | The VPC object you use to create or update a workforce.
+--
+-- /See:/ 'newWorkforceVpcConfigRequest' smart constructor.
+data WorkforceVpcConfigRequest = WorkforceVpcConfigRequest'
+  { -- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+    -- must be for the same VPC as specified in the subnet.
+    securityGroupIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The ID of the subnets in the VPC that you want to connect.
+    subnets :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The ID of the VPC that the workforce uses for communication.
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkforceVpcConfigRequest' 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:
+--
+-- 'securityGroupIds', 'workforceVpcConfigRequest_securityGroupIds' - The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+-- must be for the same VPC as specified in the subnet.
+--
+-- 'subnets', 'workforceVpcConfigRequest_subnets' - The ID of the subnets in the VPC that you want to connect.
+--
+-- 'vpcId', 'workforceVpcConfigRequest_vpcId' - The ID of the VPC that the workforce uses for communication.
+newWorkforceVpcConfigRequest ::
+  WorkforceVpcConfigRequest
+newWorkforceVpcConfigRequest =
+  WorkforceVpcConfigRequest'
+    { securityGroupIds =
+        Prelude.Nothing,
+      subnets = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+-- must be for the same VPC as specified in the subnet.
+workforceVpcConfigRequest_securityGroupIds :: Lens.Lens' WorkforceVpcConfigRequest (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+workforceVpcConfigRequest_securityGroupIds = Lens.lens (\WorkforceVpcConfigRequest' {securityGroupIds} -> securityGroupIds) (\s@WorkforceVpcConfigRequest' {} a -> s {securityGroupIds = a} :: WorkforceVpcConfigRequest) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the subnets in the VPC that you want to connect.
+workforceVpcConfigRequest_subnets :: Lens.Lens' WorkforceVpcConfigRequest (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+workforceVpcConfigRequest_subnets = Lens.lens (\WorkforceVpcConfigRequest' {subnets} -> subnets) (\s@WorkforceVpcConfigRequest' {} a -> s {subnets = a} :: WorkforceVpcConfigRequest) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the VPC that the workforce uses for communication.
+workforceVpcConfigRequest_vpcId :: Lens.Lens' WorkforceVpcConfigRequest (Prelude.Maybe Prelude.Text)
+workforceVpcConfigRequest_vpcId = Lens.lens (\WorkforceVpcConfigRequest' {vpcId} -> vpcId) (\s@WorkforceVpcConfigRequest' {} a -> s {vpcId = a} :: WorkforceVpcConfigRequest)
+
+instance Prelude.Hashable WorkforceVpcConfigRequest where
+  hashWithSalt _salt WorkforceVpcConfigRequest' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` subnets
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData WorkforceVpcConfigRequest where
+  rnf WorkforceVpcConfigRequest' {..} =
+    Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf subnets
+      `Prelude.seq` Prelude.rnf vpcId
+
+instance Data.ToJSON WorkforceVpcConfigRequest where
+  toJSON WorkforceVpcConfigRequest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SecurityGroupIds" Data..=)
+              Prelude.<$> securityGroupIds,
+            ("Subnets" Data..=) Prelude.<$> subnets,
+            ("VpcId" Data..=) Prelude.<$> vpcId
+          ]
+      )
diff --git a/gen/Amazonka/SageMaker/Types/WorkforceVpcConfigResponse.hs b/gen/Amazonka/SageMaker/Types/WorkforceVpcConfigResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/WorkforceVpcConfigResponse.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.WorkforceVpcConfigResponse
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.WorkforceVpcConfigResponse 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
+
+-- | A VpcConfig object that specifies the VPC that you want your workforce
+-- to connect to.
+--
+-- /See:/ 'newWorkforceVpcConfigResponse' smart constructor.
+data WorkforceVpcConfigResponse = WorkforceVpcConfigResponse'
+  { -- | The IDs for the VPC service endpoints of your VPC workforce when it is
+    -- created and updated.
+    vpcEndpointId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the VPC that the workforce uses for communication.
+    vpcId :: Prelude.Text,
+    -- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+    -- must be for the same VPC as specified in the subnet.
+    securityGroupIds :: Prelude.NonEmpty Prelude.Text,
+    -- | The ID of the subnets in the VPC that you want to connect.
+    subnets :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkforceVpcConfigResponse' 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:
+--
+-- 'vpcEndpointId', 'workforceVpcConfigResponse_vpcEndpointId' - The IDs for the VPC service endpoints of your VPC workforce when it is
+-- created and updated.
+--
+-- 'vpcId', 'workforceVpcConfigResponse_vpcId' - The ID of the VPC that the workforce uses for communication.
+--
+-- 'securityGroupIds', 'workforceVpcConfigResponse_securityGroupIds' - The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+-- must be for the same VPC as specified in the subnet.
+--
+-- 'subnets', 'workforceVpcConfigResponse_subnets' - The ID of the subnets in the VPC that you want to connect.
+newWorkforceVpcConfigResponse ::
+  -- | 'vpcId'
+  Prelude.Text ->
+  -- | 'securityGroupIds'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'subnets'
+  Prelude.NonEmpty Prelude.Text ->
+  WorkforceVpcConfigResponse
+newWorkforceVpcConfigResponse
+  pVpcId_
+  pSecurityGroupIds_
+  pSubnets_ =
+    WorkforceVpcConfigResponse'
+      { vpcEndpointId =
+          Prelude.Nothing,
+        vpcId = pVpcId_,
+        securityGroupIds =
+          Lens.coerced Lens.# pSecurityGroupIds_,
+        subnets = Lens.coerced Lens.# pSubnets_
+      }
+
+-- | The IDs for the VPC service endpoints of your VPC workforce when it is
+-- created and updated.
+workforceVpcConfigResponse_vpcEndpointId :: Lens.Lens' WorkforceVpcConfigResponse (Prelude.Maybe Prelude.Text)
+workforceVpcConfigResponse_vpcEndpointId = Lens.lens (\WorkforceVpcConfigResponse' {vpcEndpointId} -> vpcEndpointId) (\s@WorkforceVpcConfigResponse' {} a -> s {vpcEndpointId = a} :: WorkforceVpcConfigResponse)
+
+-- | The ID of the VPC that the workforce uses for communication.
+workforceVpcConfigResponse_vpcId :: Lens.Lens' WorkforceVpcConfigResponse Prelude.Text
+workforceVpcConfigResponse_vpcId = Lens.lens (\WorkforceVpcConfigResponse' {vpcId} -> vpcId) (\s@WorkforceVpcConfigResponse' {} a -> s {vpcId = a} :: WorkforceVpcConfigResponse)
+
+-- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups
+-- must be for the same VPC as specified in the subnet.
+workforceVpcConfigResponse_securityGroupIds :: Lens.Lens' WorkforceVpcConfigResponse (Prelude.NonEmpty Prelude.Text)
+workforceVpcConfigResponse_securityGroupIds = Lens.lens (\WorkforceVpcConfigResponse' {securityGroupIds} -> securityGroupIds) (\s@WorkforceVpcConfigResponse' {} a -> s {securityGroupIds = a} :: WorkforceVpcConfigResponse) Prelude.. Lens.coerced
+
+-- | The ID of the subnets in the VPC that you want to connect.
+workforceVpcConfigResponse_subnets :: Lens.Lens' WorkforceVpcConfigResponse (Prelude.NonEmpty Prelude.Text)
+workforceVpcConfigResponse_subnets = Lens.lens (\WorkforceVpcConfigResponse' {subnets} -> subnets) (\s@WorkforceVpcConfigResponse' {} a -> s {subnets = a} :: WorkforceVpcConfigResponse) Prelude.. Lens.coerced
+
+instance Data.FromJSON WorkforceVpcConfigResponse where
+  parseJSON =
+    Data.withObject
+      "WorkforceVpcConfigResponse"
+      ( \x ->
+          WorkforceVpcConfigResponse'
+            Prelude.<$> (x Data..:? "VpcEndpointId")
+            Prelude.<*> (x Data..: "VpcId")
+            Prelude.<*> (x Data..: "SecurityGroupIds")
+            Prelude.<*> (x Data..: "Subnets")
+      )
+
+instance Prelude.Hashable WorkforceVpcConfigResponse where
+  hashWithSalt _salt WorkforceVpcConfigResponse' {..} =
+    _salt
+      `Prelude.hashWithSalt` vpcEndpointId
+      `Prelude.hashWithSalt` vpcId
+      `Prelude.hashWithSalt` securityGroupIds
+      `Prelude.hashWithSalt` subnets
+
+instance Prelude.NFData WorkforceVpcConfigResponse where
+  rnf WorkforceVpcConfigResponse' {..} =
+    Prelude.rnf vpcEndpointId
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf securityGroupIds
+      `Prelude.seq` Prelude.rnf subnets
diff --git a/gen/Amazonka/SageMaker/Types/Workteam.hs b/gen/Amazonka/SageMaker/Types/Workteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Types/Workteam.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Workteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Types.Workteam 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 Amazonka.SageMaker.Types.MemberDefinition
+import Amazonka.SageMaker.Types.NotificationConfiguration
+
+-- | Provides details about a labeling work team.
+--
+-- /See:/ 'newWorkteam' smart constructor.
+data Workteam = Workteam'
+  { -- | The date and time that the work team was created (timestamp).
+    createDate :: Prelude.Maybe Data.POSIX,
+    -- | The date and time that the work team was last updated (timestamp).
+    lastUpdatedDate :: Prelude.Maybe Data.POSIX,
+    -- | Configures SNS notifications of available or expiring work items for
+    -- work teams.
+    notificationConfiguration :: Prelude.Maybe NotificationConfiguration,
+    -- | The Amazon Marketplace identifier for a vendor\'s work team.
+    productListingIds :: Prelude.Maybe [Prelude.Text],
+    -- | The URI of the labeling job\'s user interface. Workers open this URI to
+    -- start labeling your data objects.
+    subDomain :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the workforce.
+    workforceArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the work team.
+    workteamName :: Prelude.Text,
+    -- | A list of @MemberDefinition@ objects that contains objects that identify
+    -- the workers that make up the work team.
+    --
+    -- Workforces can be created using Amazon Cognito or your own OIDC Identity
+    -- Provider (IdP). For private workforces created using Amazon Cognito use
+    -- @CognitoMemberDefinition@. For workforces created using your own OIDC
+    -- identity provider (IdP) use @OidcMemberDefinition@.
+    memberDefinitions :: Prelude.NonEmpty MemberDefinition,
+    -- | The Amazon Resource Name (ARN) that identifies the work team.
+    workteamArn :: Prelude.Text,
+    -- | A description of the work team.
+    description :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Workteam' 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:
+--
+-- 'createDate', 'workteam_createDate' - The date and time that the work team was created (timestamp).
+--
+-- 'lastUpdatedDate', 'workteam_lastUpdatedDate' - The date and time that the work team was last updated (timestamp).
+--
+-- 'notificationConfiguration', 'workteam_notificationConfiguration' - Configures SNS notifications of available or expiring work items for
+-- work teams.
+--
+-- 'productListingIds', 'workteam_productListingIds' - The Amazon Marketplace identifier for a vendor\'s work team.
+--
+-- 'subDomain', 'workteam_subDomain' - The URI of the labeling job\'s user interface. Workers open this URI to
+-- start labeling your data objects.
+--
+-- 'workforceArn', 'workteam_workforceArn' - The Amazon Resource Name (ARN) of the workforce.
+--
+-- 'workteamName', 'workteam_workteamName' - The name of the work team.
+--
+-- 'memberDefinitions', 'workteam_memberDefinitions' - A list of @MemberDefinition@ objects that contains objects that identify
+-- the workers that make up the work team.
+--
+-- Workforces can be created using Amazon Cognito or your own OIDC Identity
+-- Provider (IdP). For private workforces created using Amazon Cognito use
+-- @CognitoMemberDefinition@. For workforces created using your own OIDC
+-- identity provider (IdP) use @OidcMemberDefinition@.
+--
+-- 'workteamArn', 'workteam_workteamArn' - The Amazon Resource Name (ARN) that identifies the work team.
+--
+-- 'description', 'workteam_description' - A description of the work team.
+newWorkteam ::
+  -- | 'workteamName'
+  Prelude.Text ->
+  -- | 'memberDefinitions'
+  Prelude.NonEmpty MemberDefinition ->
+  -- | 'workteamArn'
+  Prelude.Text ->
+  -- | 'description'
+  Prelude.Text ->
+  Workteam
+newWorkteam
+  pWorkteamName_
+  pMemberDefinitions_
+  pWorkteamArn_
+  pDescription_ =
+    Workteam'
+      { createDate = Prelude.Nothing,
+        lastUpdatedDate = Prelude.Nothing,
+        notificationConfiguration = Prelude.Nothing,
+        productListingIds = Prelude.Nothing,
+        subDomain = Prelude.Nothing,
+        workforceArn = Prelude.Nothing,
+        workteamName = pWorkteamName_,
+        memberDefinitions =
+          Lens.coerced Lens.# pMemberDefinitions_,
+        workteamArn = pWorkteamArn_,
+        description = pDescription_
+      }
+
+-- | The date and time that the work team was created (timestamp).
+workteam_createDate :: Lens.Lens' Workteam (Prelude.Maybe Prelude.UTCTime)
+workteam_createDate = Lens.lens (\Workteam' {createDate} -> createDate) (\s@Workteam' {} a -> s {createDate = a} :: Workteam) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that the work team was last updated (timestamp).
+workteam_lastUpdatedDate :: Lens.Lens' Workteam (Prelude.Maybe Prelude.UTCTime)
+workteam_lastUpdatedDate = Lens.lens (\Workteam' {lastUpdatedDate} -> lastUpdatedDate) (\s@Workteam' {} a -> s {lastUpdatedDate = a} :: Workteam) Prelude.. Lens.mapping Data._Time
+
+-- | Configures SNS notifications of available or expiring work items for
+-- work teams.
+workteam_notificationConfiguration :: Lens.Lens' Workteam (Prelude.Maybe NotificationConfiguration)
+workteam_notificationConfiguration = Lens.lens (\Workteam' {notificationConfiguration} -> notificationConfiguration) (\s@Workteam' {} a -> s {notificationConfiguration = a} :: Workteam)
+
+-- | The Amazon Marketplace identifier for a vendor\'s work team.
+workteam_productListingIds :: Lens.Lens' Workteam (Prelude.Maybe [Prelude.Text])
+workteam_productListingIds = Lens.lens (\Workteam' {productListingIds} -> productListingIds) (\s@Workteam' {} a -> s {productListingIds = a} :: Workteam) Prelude.. Lens.mapping Lens.coerced
+
+-- | The URI of the labeling job\'s user interface. Workers open this URI to
+-- start labeling your data objects.
+workteam_subDomain :: Lens.Lens' Workteam (Prelude.Maybe Prelude.Text)
+workteam_subDomain = Lens.lens (\Workteam' {subDomain} -> subDomain) (\s@Workteam' {} a -> s {subDomain = a} :: Workteam)
+
+-- | The Amazon Resource Name (ARN) of the workforce.
+workteam_workforceArn :: Lens.Lens' Workteam (Prelude.Maybe Prelude.Text)
+workteam_workforceArn = Lens.lens (\Workteam' {workforceArn} -> workforceArn) (\s@Workteam' {} a -> s {workforceArn = a} :: Workteam)
+
+-- | The name of the work team.
+workteam_workteamName :: Lens.Lens' Workteam Prelude.Text
+workteam_workteamName = Lens.lens (\Workteam' {workteamName} -> workteamName) (\s@Workteam' {} a -> s {workteamName = a} :: Workteam)
+
+-- | A list of @MemberDefinition@ objects that contains objects that identify
+-- the workers that make up the work team.
+--
+-- Workforces can be created using Amazon Cognito or your own OIDC Identity
+-- Provider (IdP). For private workforces created using Amazon Cognito use
+-- @CognitoMemberDefinition@. For workforces created using your own OIDC
+-- identity provider (IdP) use @OidcMemberDefinition@.
+workteam_memberDefinitions :: Lens.Lens' Workteam (Prelude.NonEmpty MemberDefinition)
+workteam_memberDefinitions = Lens.lens (\Workteam' {memberDefinitions} -> memberDefinitions) (\s@Workteam' {} a -> s {memberDefinitions = a} :: Workteam) Prelude.. Lens.coerced
+
+-- | The Amazon Resource Name (ARN) that identifies the work team.
+workteam_workteamArn :: Lens.Lens' Workteam Prelude.Text
+workteam_workteamArn = Lens.lens (\Workteam' {workteamArn} -> workteamArn) (\s@Workteam' {} a -> s {workteamArn = a} :: Workteam)
+
+-- | A description of the work team.
+workteam_description :: Lens.Lens' Workteam Prelude.Text
+workteam_description = Lens.lens (\Workteam' {description} -> description) (\s@Workteam' {} a -> s {description = a} :: Workteam)
+
+instance Data.FromJSON Workteam where
+  parseJSON =
+    Data.withObject
+      "Workteam"
+      ( \x ->
+          Workteam'
+            Prelude.<$> (x Data..:? "CreateDate")
+            Prelude.<*> (x Data..:? "LastUpdatedDate")
+            Prelude.<*> (x Data..:? "NotificationConfiguration")
+            Prelude.<*> ( x
+                            Data..:? "ProductListingIds"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SubDomain")
+            Prelude.<*> (x Data..:? "WorkforceArn")
+            Prelude.<*> (x Data..: "WorkteamName")
+            Prelude.<*> (x Data..: "MemberDefinitions")
+            Prelude.<*> (x Data..: "WorkteamArn")
+            Prelude.<*> (x Data..: "Description")
+      )
+
+instance Prelude.Hashable Workteam where
+  hashWithSalt _salt Workteam' {..} =
+    _salt
+      `Prelude.hashWithSalt` createDate
+      `Prelude.hashWithSalt` lastUpdatedDate
+      `Prelude.hashWithSalt` notificationConfiguration
+      `Prelude.hashWithSalt` productListingIds
+      `Prelude.hashWithSalt` subDomain
+      `Prelude.hashWithSalt` workforceArn
+      `Prelude.hashWithSalt` workteamName
+      `Prelude.hashWithSalt` memberDefinitions
+      `Prelude.hashWithSalt` workteamArn
+      `Prelude.hashWithSalt` description
+
+instance Prelude.NFData Workteam where
+  rnf Workteam' {..} =
+    Prelude.rnf createDate
+      `Prelude.seq` Prelude.rnf lastUpdatedDate
+      `Prelude.seq` Prelude.rnf notificationConfiguration
+      `Prelude.seq` Prelude.rnf productListingIds
+      `Prelude.seq` Prelude.rnf subDomain
+      `Prelude.seq` Prelude.rnf workforceArn
+      `Prelude.seq` Prelude.rnf workteamName
+      `Prelude.seq` Prelude.rnf memberDefinitions
+      `Prelude.seq` Prelude.rnf workteamArn
+      `Prelude.seq` Prelude.rnf description
diff --git a/gen/Amazonka/SageMaker/UpdateAction.hs b/gen/Amazonka/SageMaker/UpdateAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateAction.hs
@@ -0,0 +1,221 @@
+{-# 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.UpdateAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an action.
+module Amazonka.SageMaker.UpdateAction
+  ( -- * Creating a Request
+    UpdateAction (..),
+    newUpdateAction,
+
+    -- * Request Lenses
+    updateAction_description,
+    updateAction_properties,
+    updateAction_propertiesToRemove,
+    updateAction_status,
+    updateAction_actionName,
+
+    -- * Destructuring the Response
+    UpdateActionResponse (..),
+    newUpdateActionResponse,
+
+    -- * Response Lenses
+    updateActionResponse_actionArn,
+    updateActionResponse_httpStatus,
+  )
+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:/ 'newUpdateAction' smart constructor.
+data UpdateAction = UpdateAction'
+  { -- | The new description for the action.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The new list of properties. Overwrites the current property list.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of properties to remove.
+    propertiesToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | The new status for the action.
+    status :: Prelude.Maybe ActionStatus,
+    -- | The name of the action to update.
+    actionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAction' 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:
+--
+-- 'description', 'updateAction_description' - The new description for the action.
+--
+-- 'properties', 'updateAction_properties' - The new list of properties. Overwrites the current property list.
+--
+-- 'propertiesToRemove', 'updateAction_propertiesToRemove' - A list of properties to remove.
+--
+-- 'status', 'updateAction_status' - The new status for the action.
+--
+-- 'actionName', 'updateAction_actionName' - The name of the action to update.
+newUpdateAction ::
+  -- | 'actionName'
+  Prelude.Text ->
+  UpdateAction
+newUpdateAction pActionName_ =
+  UpdateAction'
+    { description = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      propertiesToRemove = Prelude.Nothing,
+      status = Prelude.Nothing,
+      actionName = pActionName_
+    }
+
+-- | The new description for the action.
+updateAction_description :: Lens.Lens' UpdateAction (Prelude.Maybe Prelude.Text)
+updateAction_description = Lens.lens (\UpdateAction' {description} -> description) (\s@UpdateAction' {} a -> s {description = a} :: UpdateAction)
+
+-- | The new list of properties. Overwrites the current property list.
+updateAction_properties :: Lens.Lens' UpdateAction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateAction_properties = Lens.lens (\UpdateAction' {properties} -> properties) (\s@UpdateAction' {} a -> s {properties = a} :: UpdateAction) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of properties to remove.
+updateAction_propertiesToRemove :: Lens.Lens' UpdateAction (Prelude.Maybe [Prelude.Text])
+updateAction_propertiesToRemove = Lens.lens (\UpdateAction' {propertiesToRemove} -> propertiesToRemove) (\s@UpdateAction' {} a -> s {propertiesToRemove = a} :: UpdateAction) Prelude.. Lens.mapping Lens.coerced
+
+-- | The new status for the action.
+updateAction_status :: Lens.Lens' UpdateAction (Prelude.Maybe ActionStatus)
+updateAction_status = Lens.lens (\UpdateAction' {status} -> status) (\s@UpdateAction' {} a -> s {status = a} :: UpdateAction)
+
+-- | The name of the action to update.
+updateAction_actionName :: Lens.Lens' UpdateAction Prelude.Text
+updateAction_actionName = Lens.lens (\UpdateAction' {actionName} -> actionName) (\s@UpdateAction' {} a -> s {actionName = a} :: UpdateAction)
+
+instance Core.AWSRequest UpdateAction where
+  type AWSResponse UpdateAction = UpdateActionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateActionResponse'
+            Prelude.<$> (x Data..?> "ActionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAction where
+  hashWithSalt _salt UpdateAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` propertiesToRemove
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` actionName
+
+instance Prelude.NFData UpdateAction where
+  rnf UpdateAction' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf propertiesToRemove
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf actionName
+
+instance Data.ToHeaders UpdateAction where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateAction" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAction where
+  toJSON UpdateAction' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("PropertiesToRemove" Data..=)
+              Prelude.<$> propertiesToRemove,
+            ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just ("ActionName" Data..= actionName)
+          ]
+      )
+
+instance Data.ToPath UpdateAction where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateAction where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateActionResponse' smart constructor.
+data UpdateActionResponse = UpdateActionResponse'
+  { -- | The Amazon Resource Name (ARN) of the action.
+    actionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateActionResponse' 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:
+--
+-- 'actionArn', 'updateActionResponse_actionArn' - The Amazon Resource Name (ARN) of the action.
+--
+-- 'httpStatus', 'updateActionResponse_httpStatus' - The response's http status code.
+newUpdateActionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateActionResponse
+newUpdateActionResponse pHttpStatus_ =
+  UpdateActionResponse'
+    { actionArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the action.
+updateActionResponse_actionArn :: Lens.Lens' UpdateActionResponse (Prelude.Maybe Prelude.Text)
+updateActionResponse_actionArn = Lens.lens (\UpdateActionResponse' {actionArn} -> actionArn) (\s@UpdateActionResponse' {} a -> s {actionArn = a} :: UpdateActionResponse)
+
+-- | The response's http status code.
+updateActionResponse_httpStatus :: Lens.Lens' UpdateActionResponse Prelude.Int
+updateActionResponse_httpStatus = Lens.lens (\UpdateActionResponse' {httpStatus} -> httpStatus) (\s@UpdateActionResponse' {} a -> s {httpStatus = a} :: UpdateActionResponse)
+
+instance Prelude.NFData UpdateActionResponse where
+  rnf UpdateActionResponse' {..} =
+    Prelude.rnf actionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateAppImageConfig.hs b/gen/Amazonka/SageMaker/UpdateAppImageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateAppImageConfig.hs
@@ -0,0 +1,189 @@
+{-# 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.UpdateAppImageConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the properties of an AppImageConfig.
+module Amazonka.SageMaker.UpdateAppImageConfig
+  ( -- * Creating a Request
+    UpdateAppImageConfig (..),
+    newUpdateAppImageConfig,
+
+    -- * Request Lenses
+    updateAppImageConfig_kernelGatewayImageConfig,
+    updateAppImageConfig_appImageConfigName,
+
+    -- * Destructuring the Response
+    UpdateAppImageConfigResponse (..),
+    newUpdateAppImageConfigResponse,
+
+    -- * Response Lenses
+    updateAppImageConfigResponse_appImageConfigArn,
+    updateAppImageConfigResponse_httpStatus,
+  )
+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:/ 'newUpdateAppImageConfig' smart constructor.
+data UpdateAppImageConfig = UpdateAppImageConfig'
+  { -- | The new KernelGateway app to run on the image.
+    kernelGatewayImageConfig :: Prelude.Maybe KernelGatewayImageConfig,
+    -- | The name of the AppImageConfig to update.
+    appImageConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAppImageConfig' 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:
+--
+-- 'kernelGatewayImageConfig', 'updateAppImageConfig_kernelGatewayImageConfig' - The new KernelGateway app to run on the image.
+--
+-- 'appImageConfigName', 'updateAppImageConfig_appImageConfigName' - The name of the AppImageConfig to update.
+newUpdateAppImageConfig ::
+  -- | 'appImageConfigName'
+  Prelude.Text ->
+  UpdateAppImageConfig
+newUpdateAppImageConfig pAppImageConfigName_ =
+  UpdateAppImageConfig'
+    { kernelGatewayImageConfig =
+        Prelude.Nothing,
+      appImageConfigName = pAppImageConfigName_
+    }
+
+-- | The new KernelGateway app to run on the image.
+updateAppImageConfig_kernelGatewayImageConfig :: Lens.Lens' UpdateAppImageConfig (Prelude.Maybe KernelGatewayImageConfig)
+updateAppImageConfig_kernelGatewayImageConfig = Lens.lens (\UpdateAppImageConfig' {kernelGatewayImageConfig} -> kernelGatewayImageConfig) (\s@UpdateAppImageConfig' {} a -> s {kernelGatewayImageConfig = a} :: UpdateAppImageConfig)
+
+-- | The name of the AppImageConfig to update.
+updateAppImageConfig_appImageConfigName :: Lens.Lens' UpdateAppImageConfig Prelude.Text
+updateAppImageConfig_appImageConfigName = Lens.lens (\UpdateAppImageConfig' {appImageConfigName} -> appImageConfigName) (\s@UpdateAppImageConfig' {} a -> s {appImageConfigName = a} :: UpdateAppImageConfig)
+
+instance Core.AWSRequest UpdateAppImageConfig where
+  type
+    AWSResponse UpdateAppImageConfig =
+      UpdateAppImageConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateAppImageConfigResponse'
+            Prelude.<$> (x Data..?> "AppImageConfigArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateAppImageConfig where
+  hashWithSalt _salt UpdateAppImageConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kernelGatewayImageConfig
+      `Prelude.hashWithSalt` appImageConfigName
+
+instance Prelude.NFData UpdateAppImageConfig where
+  rnf UpdateAppImageConfig' {..} =
+    Prelude.rnf kernelGatewayImageConfig
+      `Prelude.seq` Prelude.rnf appImageConfigName
+
+instance Data.ToHeaders UpdateAppImageConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateAppImageConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateAppImageConfig where
+  toJSON UpdateAppImageConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KernelGatewayImageConfig" Data..=)
+              Prelude.<$> kernelGatewayImageConfig,
+            Prelude.Just
+              ("AppImageConfigName" Data..= appImageConfigName)
+          ]
+      )
+
+instance Data.ToPath UpdateAppImageConfig where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateAppImageConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateAppImageConfigResponse' smart constructor.
+data UpdateAppImageConfigResponse = UpdateAppImageConfigResponse'
+  { -- | The Amazon Resource Name (ARN) for the AppImageConfig.
+    appImageConfigArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAppImageConfigResponse' 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:
+--
+-- 'appImageConfigArn', 'updateAppImageConfigResponse_appImageConfigArn' - The Amazon Resource Name (ARN) for the AppImageConfig.
+--
+-- 'httpStatus', 'updateAppImageConfigResponse_httpStatus' - The response's http status code.
+newUpdateAppImageConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateAppImageConfigResponse
+newUpdateAppImageConfigResponse pHttpStatus_ =
+  UpdateAppImageConfigResponse'
+    { appImageConfigArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) for the AppImageConfig.
+updateAppImageConfigResponse_appImageConfigArn :: Lens.Lens' UpdateAppImageConfigResponse (Prelude.Maybe Prelude.Text)
+updateAppImageConfigResponse_appImageConfigArn = Lens.lens (\UpdateAppImageConfigResponse' {appImageConfigArn} -> appImageConfigArn) (\s@UpdateAppImageConfigResponse' {} a -> s {appImageConfigArn = a} :: UpdateAppImageConfigResponse)
+
+-- | The response's http status code.
+updateAppImageConfigResponse_httpStatus :: Lens.Lens' UpdateAppImageConfigResponse Prelude.Int
+updateAppImageConfigResponse_httpStatus = Lens.lens (\UpdateAppImageConfigResponse' {httpStatus} -> httpStatus) (\s@UpdateAppImageConfigResponse' {} a -> s {httpStatus = a} :: UpdateAppImageConfigResponse)
+
+instance Prelude.NFData UpdateAppImageConfigResponse where
+  rnf UpdateAppImageConfigResponse' {..} =
+    Prelude.rnf appImageConfigArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateArtifact.hs b/gen/Amazonka/SageMaker/UpdateArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateArtifact.hs
@@ -0,0 +1,211 @@
+{-# 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.UpdateArtifact
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an artifact.
+module Amazonka.SageMaker.UpdateArtifact
+  ( -- * Creating a Request
+    UpdateArtifact (..),
+    newUpdateArtifact,
+
+    -- * Request Lenses
+    updateArtifact_artifactName,
+    updateArtifact_properties,
+    updateArtifact_propertiesToRemove,
+    updateArtifact_artifactArn,
+
+    -- * Destructuring the Response
+    UpdateArtifactResponse (..),
+    newUpdateArtifactResponse,
+
+    -- * Response Lenses
+    updateArtifactResponse_artifactArn,
+    updateArtifactResponse_httpStatus,
+  )
+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:/ 'newUpdateArtifact' smart constructor.
+data UpdateArtifact = UpdateArtifact'
+  { -- | The new name for the artifact.
+    artifactName :: Prelude.Maybe Prelude.Text,
+    -- | The new list of properties. Overwrites the current property list.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of properties to remove.
+    propertiesToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | The Amazon Resource Name (ARN) of the artifact to update.
+    artifactArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateArtifact' 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:
+--
+-- 'artifactName', 'updateArtifact_artifactName' - The new name for the artifact.
+--
+-- 'properties', 'updateArtifact_properties' - The new list of properties. Overwrites the current property list.
+--
+-- 'propertiesToRemove', 'updateArtifact_propertiesToRemove' - A list of properties to remove.
+--
+-- 'artifactArn', 'updateArtifact_artifactArn' - The Amazon Resource Name (ARN) of the artifact to update.
+newUpdateArtifact ::
+  -- | 'artifactArn'
+  Prelude.Text ->
+  UpdateArtifact
+newUpdateArtifact pArtifactArn_ =
+  UpdateArtifact'
+    { artifactName = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      propertiesToRemove = Prelude.Nothing,
+      artifactArn = pArtifactArn_
+    }
+
+-- | The new name for the artifact.
+updateArtifact_artifactName :: Lens.Lens' UpdateArtifact (Prelude.Maybe Prelude.Text)
+updateArtifact_artifactName = Lens.lens (\UpdateArtifact' {artifactName} -> artifactName) (\s@UpdateArtifact' {} a -> s {artifactName = a} :: UpdateArtifact)
+
+-- | The new list of properties. Overwrites the current property list.
+updateArtifact_properties :: Lens.Lens' UpdateArtifact (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateArtifact_properties = Lens.lens (\UpdateArtifact' {properties} -> properties) (\s@UpdateArtifact' {} a -> s {properties = a} :: UpdateArtifact) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of properties to remove.
+updateArtifact_propertiesToRemove :: Lens.Lens' UpdateArtifact (Prelude.Maybe [Prelude.Text])
+updateArtifact_propertiesToRemove = Lens.lens (\UpdateArtifact' {propertiesToRemove} -> propertiesToRemove) (\s@UpdateArtifact' {} a -> s {propertiesToRemove = a} :: UpdateArtifact) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the artifact to update.
+updateArtifact_artifactArn :: Lens.Lens' UpdateArtifact Prelude.Text
+updateArtifact_artifactArn = Lens.lens (\UpdateArtifact' {artifactArn} -> artifactArn) (\s@UpdateArtifact' {} a -> s {artifactArn = a} :: UpdateArtifact)
+
+instance Core.AWSRequest UpdateArtifact where
+  type
+    AWSResponse UpdateArtifact =
+      UpdateArtifactResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateArtifactResponse'
+            Prelude.<$> (x Data..?> "ArtifactArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateArtifact where
+  hashWithSalt _salt UpdateArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactName
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` propertiesToRemove
+      `Prelude.hashWithSalt` artifactArn
+
+instance Prelude.NFData UpdateArtifact where
+  rnf UpdateArtifact' {..} =
+    Prelude.rnf artifactName
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf propertiesToRemove
+      `Prelude.seq` Prelude.rnf artifactArn
+
+instance Data.ToHeaders UpdateArtifact where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateArtifact" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateArtifact where
+  toJSON UpdateArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArtifactName" Data..=) Prelude.<$> artifactName,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("PropertiesToRemove" Data..=)
+              Prelude.<$> propertiesToRemove,
+            Prelude.Just ("ArtifactArn" Data..= artifactArn)
+          ]
+      )
+
+instance Data.ToPath UpdateArtifact where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateArtifact where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateArtifactResponse' smart constructor.
+data UpdateArtifactResponse = UpdateArtifactResponse'
+  { -- | The Amazon Resource Name (ARN) of the artifact.
+    artifactArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateArtifactResponse' 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:
+--
+-- 'artifactArn', 'updateArtifactResponse_artifactArn' - The Amazon Resource Name (ARN) of the artifact.
+--
+-- 'httpStatus', 'updateArtifactResponse_httpStatus' - The response's http status code.
+newUpdateArtifactResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateArtifactResponse
+newUpdateArtifactResponse pHttpStatus_ =
+  UpdateArtifactResponse'
+    { artifactArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the artifact.
+updateArtifactResponse_artifactArn :: Lens.Lens' UpdateArtifactResponse (Prelude.Maybe Prelude.Text)
+updateArtifactResponse_artifactArn = Lens.lens (\UpdateArtifactResponse' {artifactArn} -> artifactArn) (\s@UpdateArtifactResponse' {} a -> s {artifactArn = a} :: UpdateArtifactResponse)
+
+-- | The response's http status code.
+updateArtifactResponse_httpStatus :: Lens.Lens' UpdateArtifactResponse Prelude.Int
+updateArtifactResponse_httpStatus = Lens.lens (\UpdateArtifactResponse' {httpStatus} -> httpStatus) (\s@UpdateArtifactResponse' {} a -> s {httpStatus = a} :: UpdateArtifactResponse)
+
+instance Prelude.NFData UpdateArtifactResponse where
+  rnf UpdateArtifactResponse' {..} =
+    Prelude.rnf artifactArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateCodeRepository.hs b/gen/Amazonka/SageMaker/UpdateCodeRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateCodeRepository.hs
@@ -0,0 +1,209 @@
+{-# 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.UpdateCodeRepository
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified Git repository with the specified values.
+module Amazonka.SageMaker.UpdateCodeRepository
+  ( -- * Creating a Request
+    UpdateCodeRepository (..),
+    newUpdateCodeRepository,
+
+    -- * Request Lenses
+    updateCodeRepository_gitConfig,
+    updateCodeRepository_codeRepositoryName,
+
+    -- * Destructuring the Response
+    UpdateCodeRepositoryResponse (..),
+    newUpdateCodeRepositoryResponse,
+
+    -- * Response Lenses
+    updateCodeRepositoryResponse_httpStatus,
+    updateCodeRepositoryResponse_codeRepositoryArn,
+  )
+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:/ 'newUpdateCodeRepository' smart constructor.
+data UpdateCodeRepository = UpdateCodeRepository'
+  { -- | The configuration of the git repository, including the URL and the
+    -- Amazon Resource Name (ARN) of the Amazon Web Services Secrets Manager
+    -- secret that contains the credentials used to access the repository. The
+    -- secret must have a staging label of @AWSCURRENT@ and must be in the
+    -- following format:
+    --
+    -- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+    gitConfig :: Prelude.Maybe GitConfigForUpdate,
+    -- | The name of the Git repository to update.
+    codeRepositoryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCodeRepository' 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:
+--
+-- 'gitConfig', 'updateCodeRepository_gitConfig' - The configuration of the git repository, including the URL and the
+-- Amazon Resource Name (ARN) of the Amazon Web Services Secrets Manager
+-- secret that contains the credentials used to access the repository. The
+-- secret must have a staging label of @AWSCURRENT@ and must be in the
+-- following format:
+--
+-- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+--
+-- 'codeRepositoryName', 'updateCodeRepository_codeRepositoryName' - The name of the Git repository to update.
+newUpdateCodeRepository ::
+  -- | 'codeRepositoryName'
+  Prelude.Text ->
+  UpdateCodeRepository
+newUpdateCodeRepository pCodeRepositoryName_ =
+  UpdateCodeRepository'
+    { gitConfig = Prelude.Nothing,
+      codeRepositoryName = pCodeRepositoryName_
+    }
+
+-- | The configuration of the git repository, including the URL and the
+-- Amazon Resource Name (ARN) of the Amazon Web Services Secrets Manager
+-- secret that contains the credentials used to access the repository. The
+-- secret must have a staging label of @AWSCURRENT@ and must be in the
+-- following format:
+--
+-- @{\"username\": @/@UserName@/@, \"password\": @/@Password@/@}@
+updateCodeRepository_gitConfig :: Lens.Lens' UpdateCodeRepository (Prelude.Maybe GitConfigForUpdate)
+updateCodeRepository_gitConfig = Lens.lens (\UpdateCodeRepository' {gitConfig} -> gitConfig) (\s@UpdateCodeRepository' {} a -> s {gitConfig = a} :: UpdateCodeRepository)
+
+-- | The name of the Git repository to update.
+updateCodeRepository_codeRepositoryName :: Lens.Lens' UpdateCodeRepository Prelude.Text
+updateCodeRepository_codeRepositoryName = Lens.lens (\UpdateCodeRepository' {codeRepositoryName} -> codeRepositoryName) (\s@UpdateCodeRepository' {} a -> s {codeRepositoryName = a} :: UpdateCodeRepository)
+
+instance Core.AWSRequest UpdateCodeRepository where
+  type
+    AWSResponse UpdateCodeRepository =
+      UpdateCodeRepositoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateCodeRepositoryResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "CodeRepositoryArn")
+      )
+
+instance Prelude.Hashable UpdateCodeRepository where
+  hashWithSalt _salt UpdateCodeRepository' {..} =
+    _salt
+      `Prelude.hashWithSalt` gitConfig
+      `Prelude.hashWithSalt` codeRepositoryName
+
+instance Prelude.NFData UpdateCodeRepository where
+  rnf UpdateCodeRepository' {..} =
+    Prelude.rnf gitConfig
+      `Prelude.seq` Prelude.rnf codeRepositoryName
+
+instance Data.ToHeaders UpdateCodeRepository where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateCodeRepository" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateCodeRepository where
+  toJSON UpdateCodeRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GitConfig" Data..=) Prelude.<$> gitConfig,
+            Prelude.Just
+              ("CodeRepositoryName" Data..= codeRepositoryName)
+          ]
+      )
+
+instance Data.ToPath UpdateCodeRepository where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateCodeRepository where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateCodeRepositoryResponse' smart constructor.
+data UpdateCodeRepositoryResponse = UpdateCodeRepositoryResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the Git repository.
+    codeRepositoryArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCodeRepositoryResponse' 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', 'updateCodeRepositoryResponse_httpStatus' - The response's http status code.
+--
+-- 'codeRepositoryArn', 'updateCodeRepositoryResponse_codeRepositoryArn' - The ARN of the Git repository.
+newUpdateCodeRepositoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'codeRepositoryArn'
+  Prelude.Text ->
+  UpdateCodeRepositoryResponse
+newUpdateCodeRepositoryResponse
+  pHttpStatus_
+  pCodeRepositoryArn_ =
+    UpdateCodeRepositoryResponse'
+      { httpStatus =
+          pHttpStatus_,
+        codeRepositoryArn = pCodeRepositoryArn_
+      }
+
+-- | The response's http status code.
+updateCodeRepositoryResponse_httpStatus :: Lens.Lens' UpdateCodeRepositoryResponse Prelude.Int
+updateCodeRepositoryResponse_httpStatus = Lens.lens (\UpdateCodeRepositoryResponse' {httpStatus} -> httpStatus) (\s@UpdateCodeRepositoryResponse' {} a -> s {httpStatus = a} :: UpdateCodeRepositoryResponse)
+
+-- | The ARN of the Git repository.
+updateCodeRepositoryResponse_codeRepositoryArn :: Lens.Lens' UpdateCodeRepositoryResponse Prelude.Text
+updateCodeRepositoryResponse_codeRepositoryArn = Lens.lens (\UpdateCodeRepositoryResponse' {codeRepositoryArn} -> codeRepositoryArn) (\s@UpdateCodeRepositoryResponse' {} a -> s {codeRepositoryArn = a} :: UpdateCodeRepositoryResponse)
+
+instance Prelude.NFData UpdateCodeRepositoryResponse where
+  rnf UpdateCodeRepositoryResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf codeRepositoryArn
diff --git a/gen/Amazonka/SageMaker/UpdateContext.hs b/gen/Amazonka/SageMaker/UpdateContext.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateContext.hs
@@ -0,0 +1,211 @@
+{-# 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.UpdateContext
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a context.
+module Amazonka.SageMaker.UpdateContext
+  ( -- * Creating a Request
+    UpdateContext (..),
+    newUpdateContext,
+
+    -- * Request Lenses
+    updateContext_description,
+    updateContext_properties,
+    updateContext_propertiesToRemove,
+    updateContext_contextName,
+
+    -- * Destructuring the Response
+    UpdateContextResponse (..),
+    newUpdateContextResponse,
+
+    -- * Response Lenses
+    updateContextResponse_contextArn,
+    updateContextResponse_httpStatus,
+  )
+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:/ 'newUpdateContext' smart constructor.
+data UpdateContext = UpdateContext'
+  { -- | The new description for the context.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The new list of properties. Overwrites the current property list.
+    properties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of properties to remove.
+    propertiesToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the context to update.
+    contextName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateContext' 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:
+--
+-- 'description', 'updateContext_description' - The new description for the context.
+--
+-- 'properties', 'updateContext_properties' - The new list of properties. Overwrites the current property list.
+--
+-- 'propertiesToRemove', 'updateContext_propertiesToRemove' - A list of properties to remove.
+--
+-- 'contextName', 'updateContext_contextName' - The name of the context to update.
+newUpdateContext ::
+  -- | 'contextName'
+  Prelude.Text ->
+  UpdateContext
+newUpdateContext pContextName_ =
+  UpdateContext'
+    { description = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      propertiesToRemove = Prelude.Nothing,
+      contextName = pContextName_
+    }
+
+-- | The new description for the context.
+updateContext_description :: Lens.Lens' UpdateContext (Prelude.Maybe Prelude.Text)
+updateContext_description = Lens.lens (\UpdateContext' {description} -> description) (\s@UpdateContext' {} a -> s {description = a} :: UpdateContext)
+
+-- | The new list of properties. Overwrites the current property list.
+updateContext_properties :: Lens.Lens' UpdateContext (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateContext_properties = Lens.lens (\UpdateContext' {properties} -> properties) (\s@UpdateContext' {} a -> s {properties = a} :: UpdateContext) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of properties to remove.
+updateContext_propertiesToRemove :: Lens.Lens' UpdateContext (Prelude.Maybe [Prelude.Text])
+updateContext_propertiesToRemove = Lens.lens (\UpdateContext' {propertiesToRemove} -> propertiesToRemove) (\s@UpdateContext' {} a -> s {propertiesToRemove = a} :: UpdateContext) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the context to update.
+updateContext_contextName :: Lens.Lens' UpdateContext Prelude.Text
+updateContext_contextName = Lens.lens (\UpdateContext' {contextName} -> contextName) (\s@UpdateContext' {} a -> s {contextName = a} :: UpdateContext)
+
+instance Core.AWSRequest UpdateContext where
+  type
+    AWSResponse UpdateContext =
+      UpdateContextResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateContextResponse'
+            Prelude.<$> (x Data..?> "ContextArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateContext where
+  hashWithSalt _salt UpdateContext' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` propertiesToRemove
+      `Prelude.hashWithSalt` contextName
+
+instance Prelude.NFData UpdateContext where
+  rnf UpdateContext' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf propertiesToRemove
+      `Prelude.seq` Prelude.rnf contextName
+
+instance Data.ToHeaders UpdateContext where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateContext" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateContext where
+  toJSON UpdateContext' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Properties" Data..=) Prelude.<$> properties,
+            ("PropertiesToRemove" Data..=)
+              Prelude.<$> propertiesToRemove,
+            Prelude.Just ("ContextName" Data..= contextName)
+          ]
+      )
+
+instance Data.ToPath UpdateContext where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateContext where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateContextResponse' smart constructor.
+data UpdateContextResponse = UpdateContextResponse'
+  { -- | The Amazon Resource Name (ARN) of the context.
+    contextArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateContextResponse' 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:
+--
+-- 'contextArn', 'updateContextResponse_contextArn' - The Amazon Resource Name (ARN) of the context.
+--
+-- 'httpStatus', 'updateContextResponse_httpStatus' - The response's http status code.
+newUpdateContextResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateContextResponse
+newUpdateContextResponse pHttpStatus_ =
+  UpdateContextResponse'
+    { contextArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the context.
+updateContextResponse_contextArn :: Lens.Lens' UpdateContextResponse (Prelude.Maybe Prelude.Text)
+updateContextResponse_contextArn = Lens.lens (\UpdateContextResponse' {contextArn} -> contextArn) (\s@UpdateContextResponse' {} a -> s {contextArn = a} :: UpdateContextResponse)
+
+-- | The response's http status code.
+updateContextResponse_httpStatus :: Lens.Lens' UpdateContextResponse Prelude.Int
+updateContextResponse_httpStatus = Lens.lens (\UpdateContextResponse' {httpStatus} -> httpStatus) (\s@UpdateContextResponse' {} a -> s {httpStatus = a} :: UpdateContextResponse)
+
+instance Prelude.NFData UpdateContextResponse where
+  rnf UpdateContextResponse' {..} =
+    Prelude.rnf contextArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateDeviceFleet.hs b/gen/Amazonka/SageMaker/UpdateDeviceFleet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateDeviceFleet.hs
@@ -0,0 +1,209 @@
+{-# 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.UpdateDeviceFleet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a fleet of devices.
+module Amazonka.SageMaker.UpdateDeviceFleet
+  ( -- * Creating a Request
+    UpdateDeviceFleet (..),
+    newUpdateDeviceFleet,
+
+    -- * Request Lenses
+    updateDeviceFleet_description,
+    updateDeviceFleet_enableIotRoleAlias,
+    updateDeviceFleet_roleArn,
+    updateDeviceFleet_deviceFleetName,
+    updateDeviceFleet_outputConfig,
+
+    -- * Destructuring the Response
+    UpdateDeviceFleetResponse (..),
+    newUpdateDeviceFleetResponse,
+  )
+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:/ 'newUpdateDeviceFleet' smart constructor.
+data UpdateDeviceFleet = UpdateDeviceFleet'
+  { -- | Description of the fleet.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Whether to create an Amazon Web Services IoT Role Alias during device
+    -- fleet creation. The name of the role alias generated will match this
+    -- pattern: \"SageMakerEdge-{DeviceFleetName}\".
+    --
+    -- For example, if your device fleet is called \"demo-fleet\", the name of
+    -- the role alias will be \"SageMakerEdge-demo-fleet\".
+    enableIotRoleAlias :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) of the device.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the fleet.
+    deviceFleetName :: Prelude.Text,
+    -- | Output configuration for storing sample data collected by the fleet.
+    outputConfig :: EdgeOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDeviceFleet' 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:
+--
+-- 'description', 'updateDeviceFleet_description' - Description of the fleet.
+--
+-- 'enableIotRoleAlias', 'updateDeviceFleet_enableIotRoleAlias' - Whether to create an Amazon Web Services IoT Role Alias during device
+-- fleet creation. The name of the role alias generated will match this
+-- pattern: \"SageMakerEdge-{DeviceFleetName}\".
+--
+-- For example, if your device fleet is called \"demo-fleet\", the name of
+-- the role alias will be \"SageMakerEdge-demo-fleet\".
+--
+-- 'roleArn', 'updateDeviceFleet_roleArn' - The Amazon Resource Name (ARN) of the device.
+--
+-- 'deviceFleetName', 'updateDeviceFleet_deviceFleetName' - The name of the fleet.
+--
+-- 'outputConfig', 'updateDeviceFleet_outputConfig' - Output configuration for storing sample data collected by the fleet.
+newUpdateDeviceFleet ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  EdgeOutputConfig ->
+  UpdateDeviceFleet
+newUpdateDeviceFleet pDeviceFleetName_ pOutputConfig_ =
+  UpdateDeviceFleet'
+    { description = Prelude.Nothing,
+      enableIotRoleAlias = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      deviceFleetName = pDeviceFleetName_,
+      outputConfig = pOutputConfig_
+    }
+
+-- | Description of the fleet.
+updateDeviceFleet_description :: Lens.Lens' UpdateDeviceFleet (Prelude.Maybe Prelude.Text)
+updateDeviceFleet_description = Lens.lens (\UpdateDeviceFleet' {description} -> description) (\s@UpdateDeviceFleet' {} a -> s {description = a} :: UpdateDeviceFleet)
+
+-- | Whether to create an Amazon Web Services IoT Role Alias during device
+-- fleet creation. The name of the role alias generated will match this
+-- pattern: \"SageMakerEdge-{DeviceFleetName}\".
+--
+-- For example, if your device fleet is called \"demo-fleet\", the name of
+-- the role alias will be \"SageMakerEdge-demo-fleet\".
+updateDeviceFleet_enableIotRoleAlias :: Lens.Lens' UpdateDeviceFleet (Prelude.Maybe Prelude.Bool)
+updateDeviceFleet_enableIotRoleAlias = Lens.lens (\UpdateDeviceFleet' {enableIotRoleAlias} -> enableIotRoleAlias) (\s@UpdateDeviceFleet' {} a -> s {enableIotRoleAlias = a} :: UpdateDeviceFleet)
+
+-- | The Amazon Resource Name (ARN) of the device.
+updateDeviceFleet_roleArn :: Lens.Lens' UpdateDeviceFleet (Prelude.Maybe Prelude.Text)
+updateDeviceFleet_roleArn = Lens.lens (\UpdateDeviceFleet' {roleArn} -> roleArn) (\s@UpdateDeviceFleet' {} a -> s {roleArn = a} :: UpdateDeviceFleet)
+
+-- | The name of the fleet.
+updateDeviceFleet_deviceFleetName :: Lens.Lens' UpdateDeviceFleet Prelude.Text
+updateDeviceFleet_deviceFleetName = Lens.lens (\UpdateDeviceFleet' {deviceFleetName} -> deviceFleetName) (\s@UpdateDeviceFleet' {} a -> s {deviceFleetName = a} :: UpdateDeviceFleet)
+
+-- | Output configuration for storing sample data collected by the fleet.
+updateDeviceFleet_outputConfig :: Lens.Lens' UpdateDeviceFleet EdgeOutputConfig
+updateDeviceFleet_outputConfig = Lens.lens (\UpdateDeviceFleet' {outputConfig} -> outputConfig) (\s@UpdateDeviceFleet' {} a -> s {outputConfig = a} :: UpdateDeviceFleet)
+
+instance Core.AWSRequest UpdateDeviceFleet where
+  type
+    AWSResponse UpdateDeviceFleet =
+      UpdateDeviceFleetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateDeviceFleetResponse'
+
+instance Prelude.Hashable UpdateDeviceFleet where
+  hashWithSalt _salt UpdateDeviceFleet' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` enableIotRoleAlias
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData UpdateDeviceFleet where
+  rnf UpdateDeviceFleet' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf enableIotRoleAlias
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToHeaders UpdateDeviceFleet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateDeviceFleet" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDeviceFleet where
+  toJSON UpdateDeviceFleet' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("EnableIotRoleAlias" Data..=)
+              Prelude.<$> enableIotRoleAlias,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName),
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
+
+instance Data.ToPath UpdateDeviceFleet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateDeviceFleet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDeviceFleetResponse' smart constructor.
+data UpdateDeviceFleetResponse = UpdateDeviceFleetResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDeviceFleetResponse' 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.
+newUpdateDeviceFleetResponse ::
+  UpdateDeviceFleetResponse
+newUpdateDeviceFleetResponse =
+  UpdateDeviceFleetResponse'
+
+instance Prelude.NFData UpdateDeviceFleetResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/UpdateDevices.hs b/gen/Amazonka/SageMaker/UpdateDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateDevices.hs
@@ -0,0 +1,149 @@
+{-# 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.UpdateDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates one or more devices in a fleet.
+module Amazonka.SageMaker.UpdateDevices
+  ( -- * Creating a Request
+    UpdateDevices (..),
+    newUpdateDevices,
+
+    -- * Request Lenses
+    updateDevices_deviceFleetName,
+    updateDevices_devices,
+
+    -- * Destructuring the Response
+    UpdateDevicesResponse (..),
+    newUpdateDevicesResponse,
+  )
+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:/ 'newUpdateDevices' smart constructor.
+data UpdateDevices = UpdateDevices'
+  { -- | The name of the fleet the devices belong to.
+    deviceFleetName :: Prelude.Text,
+    -- | List of devices to register with Edge Manager agent.
+    devices :: [Device]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDevices' 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:
+--
+-- 'deviceFleetName', 'updateDevices_deviceFleetName' - The name of the fleet the devices belong to.
+--
+-- 'devices', 'updateDevices_devices' - List of devices to register with Edge Manager agent.
+newUpdateDevices ::
+  -- | 'deviceFleetName'
+  Prelude.Text ->
+  UpdateDevices
+newUpdateDevices pDeviceFleetName_ =
+  UpdateDevices'
+    { deviceFleetName = pDeviceFleetName_,
+      devices = Prelude.mempty
+    }
+
+-- | The name of the fleet the devices belong to.
+updateDevices_deviceFleetName :: Lens.Lens' UpdateDevices Prelude.Text
+updateDevices_deviceFleetName = Lens.lens (\UpdateDevices' {deviceFleetName} -> deviceFleetName) (\s@UpdateDevices' {} a -> s {deviceFleetName = a} :: UpdateDevices)
+
+-- | List of devices to register with Edge Manager agent.
+updateDevices_devices :: Lens.Lens' UpdateDevices [Device]
+updateDevices_devices = Lens.lens (\UpdateDevices' {devices} -> devices) (\s@UpdateDevices' {} a -> s {devices = a} :: UpdateDevices) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UpdateDevices where
+  type
+    AWSResponse UpdateDevices =
+      UpdateDevicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateDevicesResponse'
+
+instance Prelude.Hashable UpdateDevices where
+  hashWithSalt _salt UpdateDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceFleetName
+      `Prelude.hashWithSalt` devices
+
+instance Prelude.NFData UpdateDevices where
+  rnf UpdateDevices' {..} =
+    Prelude.rnf deviceFleetName
+      `Prelude.seq` Prelude.rnf devices
+
+instance Data.ToHeaders UpdateDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateDevices" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDevices where
+  toJSON UpdateDevices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DeviceFleetName" Data..= deviceFleetName),
+            Prelude.Just ("Devices" Data..= devices)
+          ]
+      )
+
+instance Data.ToPath UpdateDevices where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateDevices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDevicesResponse' smart constructor.
+data UpdateDevicesResponse = UpdateDevicesResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDevicesResponse' 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.
+newUpdateDevicesResponse ::
+  UpdateDevicesResponse
+newUpdateDevicesResponse = UpdateDevicesResponse'
+
+instance Prelude.NFData UpdateDevicesResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/UpdateDomain.hs b/gen/Amazonka/SageMaker/UpdateDomain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateDomain.hs
@@ -0,0 +1,237 @@
+{-# 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.UpdateDomain
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the default settings for new user profiles in the domain.
+module Amazonka.SageMaker.UpdateDomain
+  ( -- * Creating a Request
+    UpdateDomain (..),
+    newUpdateDomain,
+
+    -- * Request Lenses
+    updateDomain_appSecurityGroupManagement,
+    updateDomain_defaultSpaceSettings,
+    updateDomain_defaultUserSettings,
+    updateDomain_domainSettingsForUpdate,
+    updateDomain_domainId,
+
+    -- * Destructuring the Response
+    UpdateDomainResponse (..),
+    newUpdateDomainResponse,
+
+    -- * Response Lenses
+    updateDomainResponse_domainArn,
+    updateDomainResponse_httpStatus,
+  )
+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:/ 'newUpdateDomain' smart constructor.
+data UpdateDomain = UpdateDomain'
+  { -- | The entity that creates and manages the required security groups for
+    -- inter-app communication in @VPCOnly@ mode. Required when
+    -- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+    -- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+    -- is provided.
+    appSecurityGroupManagement :: Prelude.Maybe AppSecurityGroupManagement,
+    -- | The default settings used to create a space within the Domain.
+    defaultSpaceSettings :: Prelude.Maybe DefaultSpaceSettings,
+    -- | A collection of settings.
+    defaultUserSettings :: Prelude.Maybe UserSettings,
+    -- | A collection of @DomainSettings@ configuration values to update.
+    domainSettingsForUpdate :: Prelude.Maybe DomainSettingsForUpdate,
+    -- | The ID of the domain to be updated.
+    domainId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDomain' 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:
+--
+-- 'appSecurityGroupManagement', 'updateDomain_appSecurityGroupManagement' - The entity that creates and manages the required security groups for
+-- inter-app communication in @VPCOnly@ mode. Required when
+-- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+-- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+-- is provided.
+--
+-- 'defaultSpaceSettings', 'updateDomain_defaultSpaceSettings' - The default settings used to create a space within the Domain.
+--
+-- 'defaultUserSettings', 'updateDomain_defaultUserSettings' - A collection of settings.
+--
+-- 'domainSettingsForUpdate', 'updateDomain_domainSettingsForUpdate' - A collection of @DomainSettings@ configuration values to update.
+--
+-- 'domainId', 'updateDomain_domainId' - The ID of the domain to be updated.
+newUpdateDomain ::
+  -- | 'domainId'
+  Prelude.Text ->
+  UpdateDomain
+newUpdateDomain pDomainId_ =
+  UpdateDomain'
+    { appSecurityGroupManagement =
+        Prelude.Nothing,
+      defaultSpaceSettings = Prelude.Nothing,
+      defaultUserSettings = Prelude.Nothing,
+      domainSettingsForUpdate = Prelude.Nothing,
+      domainId = pDomainId_
+    }
+
+-- | The entity that creates and manages the required security groups for
+-- inter-app communication in @VPCOnly@ mode. Required when
+-- @CreateDomain.AppNetworkAccessType@ is @VPCOnly@ and
+-- @DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn@
+-- is provided.
+updateDomain_appSecurityGroupManagement :: Lens.Lens' UpdateDomain (Prelude.Maybe AppSecurityGroupManagement)
+updateDomain_appSecurityGroupManagement = Lens.lens (\UpdateDomain' {appSecurityGroupManagement} -> appSecurityGroupManagement) (\s@UpdateDomain' {} a -> s {appSecurityGroupManagement = a} :: UpdateDomain)
+
+-- | The default settings used to create a space within the Domain.
+updateDomain_defaultSpaceSettings :: Lens.Lens' UpdateDomain (Prelude.Maybe DefaultSpaceSettings)
+updateDomain_defaultSpaceSettings = Lens.lens (\UpdateDomain' {defaultSpaceSettings} -> defaultSpaceSettings) (\s@UpdateDomain' {} a -> s {defaultSpaceSettings = a} :: UpdateDomain)
+
+-- | A collection of settings.
+updateDomain_defaultUserSettings :: Lens.Lens' UpdateDomain (Prelude.Maybe UserSettings)
+updateDomain_defaultUserSettings = Lens.lens (\UpdateDomain' {defaultUserSettings} -> defaultUserSettings) (\s@UpdateDomain' {} a -> s {defaultUserSettings = a} :: UpdateDomain)
+
+-- | A collection of @DomainSettings@ configuration values to update.
+updateDomain_domainSettingsForUpdate :: Lens.Lens' UpdateDomain (Prelude.Maybe DomainSettingsForUpdate)
+updateDomain_domainSettingsForUpdate = Lens.lens (\UpdateDomain' {domainSettingsForUpdate} -> domainSettingsForUpdate) (\s@UpdateDomain' {} a -> s {domainSettingsForUpdate = a} :: UpdateDomain)
+
+-- | The ID of the domain to be updated.
+updateDomain_domainId :: Lens.Lens' UpdateDomain Prelude.Text
+updateDomain_domainId = Lens.lens (\UpdateDomain' {domainId} -> domainId) (\s@UpdateDomain' {} a -> s {domainId = a} :: UpdateDomain)
+
+instance Core.AWSRequest UpdateDomain where
+  type AWSResponse UpdateDomain = UpdateDomainResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDomainResponse'
+            Prelude.<$> (x Data..?> "DomainArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDomain where
+  hashWithSalt _salt UpdateDomain' {..} =
+    _salt
+      `Prelude.hashWithSalt` appSecurityGroupManagement
+      `Prelude.hashWithSalt` defaultSpaceSettings
+      `Prelude.hashWithSalt` defaultUserSettings
+      `Prelude.hashWithSalt` domainSettingsForUpdate
+      `Prelude.hashWithSalt` domainId
+
+instance Prelude.NFData UpdateDomain where
+  rnf UpdateDomain' {..} =
+    Prelude.rnf appSecurityGroupManagement
+      `Prelude.seq` Prelude.rnf defaultSpaceSettings
+      `Prelude.seq` Prelude.rnf defaultUserSettings
+      `Prelude.seq` Prelude.rnf domainSettingsForUpdate
+      `Prelude.seq` Prelude.rnf domainId
+
+instance Data.ToHeaders UpdateDomain where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateDomain" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDomain where
+  toJSON UpdateDomain' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AppSecurityGroupManagement" Data..=)
+              Prelude.<$> appSecurityGroupManagement,
+            ("DefaultSpaceSettings" Data..=)
+              Prelude.<$> defaultSpaceSettings,
+            ("DefaultUserSettings" Data..=)
+              Prelude.<$> defaultUserSettings,
+            ("DomainSettingsForUpdate" Data..=)
+              Prelude.<$> domainSettingsForUpdate,
+            Prelude.Just ("DomainId" Data..= domainId)
+          ]
+      )
+
+instance Data.ToPath UpdateDomain where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateDomain where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDomainResponse' smart constructor.
+data UpdateDomainResponse = UpdateDomainResponse'
+  { -- | The Amazon Resource Name (ARN) of the domain.
+    domainArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDomainResponse' 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:
+--
+-- 'domainArn', 'updateDomainResponse_domainArn' - The Amazon Resource Name (ARN) of the domain.
+--
+-- 'httpStatus', 'updateDomainResponse_httpStatus' - The response's http status code.
+newUpdateDomainResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateDomainResponse
+newUpdateDomainResponse pHttpStatus_ =
+  UpdateDomainResponse'
+    { domainArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the domain.
+updateDomainResponse_domainArn :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe Prelude.Text)
+updateDomainResponse_domainArn = Lens.lens (\UpdateDomainResponse' {domainArn} -> domainArn) (\s@UpdateDomainResponse' {} a -> s {domainArn = a} :: UpdateDomainResponse)
+
+-- | The response's http status code.
+updateDomainResponse_httpStatus :: Lens.Lens' UpdateDomainResponse Prelude.Int
+updateDomainResponse_httpStatus = Lens.lens (\UpdateDomainResponse' {httpStatus} -> httpStatus) (\s@UpdateDomainResponse' {} a -> s {httpStatus = a} :: UpdateDomainResponse)
+
+instance Prelude.NFData UpdateDomainResponse where
+  rnf UpdateDomainResponse' {..} =
+    Prelude.rnf domainArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateEndpoint.hs b/gen/Amazonka/SageMaker/UpdateEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateEndpoint.hs
@@ -0,0 +1,301 @@
+{-# 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.UpdateEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deploys the new @EndpointConfig@ specified in the request, switches to
+-- using newly created endpoint, and then deletes resources provisioned for
+-- the endpoint using the previous @EndpointConfig@ (there is no
+-- availability loss).
+--
+-- When SageMaker receives the request, it sets the endpoint status to
+-- @Updating@. After updating the endpoint, it sets the status to
+-- @InService@. To check the status of an endpoint, use the
+-- DescribeEndpoint API.
+--
+-- You must not delete an @EndpointConfig@ in use by an endpoint that is
+-- live or while the @UpdateEndpoint@ or @CreateEndpoint@ operations are
+-- being performed on the endpoint. To update an endpoint, you must create
+-- a new @EndpointConfig@.
+--
+-- If you delete the @EndpointConfig@ of an endpoint that is active or
+-- being created or updated you may lose visibility into the instance type
+-- the endpoint is using. The endpoint must be deleted in order to stop
+-- incurring charges.
+module Amazonka.SageMaker.UpdateEndpoint
+  ( -- * Creating a Request
+    UpdateEndpoint (..),
+    newUpdateEndpoint,
+
+    -- * Request Lenses
+    updateEndpoint_deploymentConfig,
+    updateEndpoint_excludeRetainedVariantProperties,
+    updateEndpoint_retainAllVariantProperties,
+    updateEndpoint_retainDeploymentConfig,
+    updateEndpoint_endpointName,
+    updateEndpoint_endpointConfigName,
+
+    -- * Destructuring the Response
+    UpdateEndpointResponse (..),
+    newUpdateEndpointResponse,
+
+    -- * Response Lenses
+    updateEndpointResponse_httpStatus,
+    updateEndpointResponse_endpointArn,
+  )
+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:/ 'newUpdateEndpoint' smart constructor.
+data UpdateEndpoint = UpdateEndpoint'
+  { -- | The deployment configuration for an endpoint, which contains the desired
+    -- deployment strategy and rollback configurations.
+    deploymentConfig :: Prelude.Maybe DeploymentConfig,
+    -- | When you are updating endpoint resources with
+    -- UpdateEndpointInput$RetainAllVariantProperties, whose value is set to
+    -- @true@, @ExcludeRetainedVariantProperties@ specifies the list of type
+    -- VariantProperty to override with the values provided by
+    -- @EndpointConfig@. If you don\'t specify a value for
+    -- @ExcludeAllVariantProperties@, no variant properties are overridden.
+    excludeRetainedVariantProperties :: Prelude.Maybe [VariantProperty],
+    -- | When updating endpoint resources, enables or disables the retention of
+    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VariantProperty.html variant properties>,
+    -- such as the instance count or the variant weight. To retain the variant
+    -- properties of an endpoint when updating it, set
+    -- @RetainAllVariantProperties@ to @true@. To use the variant properties
+    -- specified in a new @EndpointConfig@ call when updating an endpoint, set
+    -- @RetainAllVariantProperties@ to @false@. The default is @false@.
+    retainAllVariantProperties :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies whether to reuse the last deployment configuration. The
+    -- default value is false (the configuration is not reused).
+    retainDeploymentConfig :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the endpoint whose configuration you want to update.
+    endpointName :: Prelude.Text,
+    -- | The name of the new endpoint configuration.
+    endpointConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateEndpoint' 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:
+--
+-- 'deploymentConfig', 'updateEndpoint_deploymentConfig' - The deployment configuration for an endpoint, which contains the desired
+-- deployment strategy and rollback configurations.
+--
+-- 'excludeRetainedVariantProperties', 'updateEndpoint_excludeRetainedVariantProperties' - When you are updating endpoint resources with
+-- UpdateEndpointInput$RetainAllVariantProperties, whose value is set to
+-- @true@, @ExcludeRetainedVariantProperties@ specifies the list of type
+-- VariantProperty to override with the values provided by
+-- @EndpointConfig@. If you don\'t specify a value for
+-- @ExcludeAllVariantProperties@, no variant properties are overridden.
+--
+-- 'retainAllVariantProperties', 'updateEndpoint_retainAllVariantProperties' - When updating endpoint resources, enables or disables the retention of
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VariantProperty.html variant properties>,
+-- such as the instance count or the variant weight. To retain the variant
+-- properties of an endpoint when updating it, set
+-- @RetainAllVariantProperties@ to @true@. To use the variant properties
+-- specified in a new @EndpointConfig@ call when updating an endpoint, set
+-- @RetainAllVariantProperties@ to @false@. The default is @false@.
+--
+-- 'retainDeploymentConfig', 'updateEndpoint_retainDeploymentConfig' - Specifies whether to reuse the last deployment configuration. The
+-- default value is false (the configuration is not reused).
+--
+-- 'endpointName', 'updateEndpoint_endpointName' - The name of the endpoint whose configuration you want to update.
+--
+-- 'endpointConfigName', 'updateEndpoint_endpointConfigName' - The name of the new endpoint configuration.
+newUpdateEndpoint ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'endpointConfigName'
+  Prelude.Text ->
+  UpdateEndpoint
+newUpdateEndpoint pEndpointName_ pEndpointConfigName_ =
+  UpdateEndpoint'
+    { deploymentConfig = Prelude.Nothing,
+      excludeRetainedVariantProperties = Prelude.Nothing,
+      retainAllVariantProperties = Prelude.Nothing,
+      retainDeploymentConfig = Prelude.Nothing,
+      endpointName = pEndpointName_,
+      endpointConfigName = pEndpointConfigName_
+    }
+
+-- | The deployment configuration for an endpoint, which contains the desired
+-- deployment strategy and rollback configurations.
+updateEndpoint_deploymentConfig :: Lens.Lens' UpdateEndpoint (Prelude.Maybe DeploymentConfig)
+updateEndpoint_deploymentConfig = Lens.lens (\UpdateEndpoint' {deploymentConfig} -> deploymentConfig) (\s@UpdateEndpoint' {} a -> s {deploymentConfig = a} :: UpdateEndpoint)
+
+-- | When you are updating endpoint resources with
+-- UpdateEndpointInput$RetainAllVariantProperties, whose value is set to
+-- @true@, @ExcludeRetainedVariantProperties@ specifies the list of type
+-- VariantProperty to override with the values provided by
+-- @EndpointConfig@. If you don\'t specify a value for
+-- @ExcludeAllVariantProperties@, no variant properties are overridden.
+updateEndpoint_excludeRetainedVariantProperties :: Lens.Lens' UpdateEndpoint (Prelude.Maybe [VariantProperty])
+updateEndpoint_excludeRetainedVariantProperties = Lens.lens (\UpdateEndpoint' {excludeRetainedVariantProperties} -> excludeRetainedVariantProperties) (\s@UpdateEndpoint' {} a -> s {excludeRetainedVariantProperties = a} :: UpdateEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | When updating endpoint resources, enables or disables the retention of
+-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VariantProperty.html variant properties>,
+-- such as the instance count or the variant weight. To retain the variant
+-- properties of an endpoint when updating it, set
+-- @RetainAllVariantProperties@ to @true@. To use the variant properties
+-- specified in a new @EndpointConfig@ call when updating an endpoint, set
+-- @RetainAllVariantProperties@ to @false@. The default is @false@.
+updateEndpoint_retainAllVariantProperties :: Lens.Lens' UpdateEndpoint (Prelude.Maybe Prelude.Bool)
+updateEndpoint_retainAllVariantProperties = Lens.lens (\UpdateEndpoint' {retainAllVariantProperties} -> retainAllVariantProperties) (\s@UpdateEndpoint' {} a -> s {retainAllVariantProperties = a} :: UpdateEndpoint)
+
+-- | Specifies whether to reuse the last deployment configuration. The
+-- default value is false (the configuration is not reused).
+updateEndpoint_retainDeploymentConfig :: Lens.Lens' UpdateEndpoint (Prelude.Maybe Prelude.Bool)
+updateEndpoint_retainDeploymentConfig = Lens.lens (\UpdateEndpoint' {retainDeploymentConfig} -> retainDeploymentConfig) (\s@UpdateEndpoint' {} a -> s {retainDeploymentConfig = a} :: UpdateEndpoint)
+
+-- | The name of the endpoint whose configuration you want to update.
+updateEndpoint_endpointName :: Lens.Lens' UpdateEndpoint Prelude.Text
+updateEndpoint_endpointName = Lens.lens (\UpdateEndpoint' {endpointName} -> endpointName) (\s@UpdateEndpoint' {} a -> s {endpointName = a} :: UpdateEndpoint)
+
+-- | The name of the new endpoint configuration.
+updateEndpoint_endpointConfigName :: Lens.Lens' UpdateEndpoint Prelude.Text
+updateEndpoint_endpointConfigName = Lens.lens (\UpdateEndpoint' {endpointConfigName} -> endpointConfigName) (\s@UpdateEndpoint' {} a -> s {endpointConfigName = a} :: UpdateEndpoint)
+
+instance Core.AWSRequest UpdateEndpoint where
+  type
+    AWSResponse UpdateEndpoint =
+      UpdateEndpointResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateEndpointResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EndpointArn")
+      )
+
+instance Prelude.Hashable UpdateEndpoint where
+  hashWithSalt _salt UpdateEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` deploymentConfig
+      `Prelude.hashWithSalt` excludeRetainedVariantProperties
+      `Prelude.hashWithSalt` retainAllVariantProperties
+      `Prelude.hashWithSalt` retainDeploymentConfig
+      `Prelude.hashWithSalt` endpointName
+      `Prelude.hashWithSalt` endpointConfigName
+
+instance Prelude.NFData UpdateEndpoint where
+  rnf UpdateEndpoint' {..} =
+    Prelude.rnf deploymentConfig
+      `Prelude.seq` Prelude.rnf excludeRetainedVariantProperties
+      `Prelude.seq` Prelude.rnf retainAllVariantProperties
+      `Prelude.seq` Prelude.rnf retainDeploymentConfig
+      `Prelude.seq` Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf endpointConfigName
+
+instance Data.ToHeaders UpdateEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateEndpoint" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateEndpoint where
+  toJSON UpdateEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeploymentConfig" Data..=)
+              Prelude.<$> deploymentConfig,
+            ("ExcludeRetainedVariantProperties" Data..=)
+              Prelude.<$> excludeRetainedVariantProperties,
+            ("RetainAllVariantProperties" Data..=)
+              Prelude.<$> retainAllVariantProperties,
+            ("RetainDeploymentConfig" Data..=)
+              Prelude.<$> retainDeploymentConfig,
+            Prelude.Just ("EndpointName" Data..= endpointName),
+            Prelude.Just
+              ("EndpointConfigName" Data..= endpointConfigName)
+          ]
+      )
+
+instance Data.ToPath UpdateEndpoint where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateEndpointResponse' smart constructor.
+data UpdateEndpointResponse = UpdateEndpointResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the endpoint.
+    endpointArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateEndpointResponse' 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', 'updateEndpointResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointArn', 'updateEndpointResponse_endpointArn' - The Amazon Resource Name (ARN) of the endpoint.
+newUpdateEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  UpdateEndpointResponse
+newUpdateEndpointResponse pHttpStatus_ pEndpointArn_ =
+  UpdateEndpointResponse'
+    { httpStatus = pHttpStatus_,
+      endpointArn = pEndpointArn_
+    }
+
+-- | The response's http status code.
+updateEndpointResponse_httpStatus :: Lens.Lens' UpdateEndpointResponse Prelude.Int
+updateEndpointResponse_httpStatus = Lens.lens (\UpdateEndpointResponse' {httpStatus} -> httpStatus) (\s@UpdateEndpointResponse' {} a -> s {httpStatus = a} :: UpdateEndpointResponse)
+
+-- | The Amazon Resource Name (ARN) of the endpoint.
+updateEndpointResponse_endpointArn :: Lens.Lens' UpdateEndpointResponse Prelude.Text
+updateEndpointResponse_endpointArn = Lens.lens (\UpdateEndpointResponse' {endpointArn} -> endpointArn) (\s@UpdateEndpointResponse' {} a -> s {endpointArn = a} :: UpdateEndpointResponse)
+
+instance Prelude.NFData UpdateEndpointResponse where
+  rnf UpdateEndpointResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointArn
diff --git a/gen/Amazonka/SageMaker/UpdateEndpointWeightsAndCapacities.hs b/gen/Amazonka/SageMaker/UpdateEndpointWeightsAndCapacities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateEndpointWeightsAndCapacities.hs
@@ -0,0 +1,231 @@
+{-# 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.UpdateEndpointWeightsAndCapacities
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates variant weight of one or more variants associated with an
+-- existing endpoint, or capacity of one variant associated with an
+-- existing endpoint. When it receives the request, SageMaker sets the
+-- endpoint status to @Updating@. After updating the endpoint, it sets the
+-- status to @InService@. To check the status of an endpoint, use the
+-- DescribeEndpoint API.
+module Amazonka.SageMaker.UpdateEndpointWeightsAndCapacities
+  ( -- * Creating a Request
+    UpdateEndpointWeightsAndCapacities (..),
+    newUpdateEndpointWeightsAndCapacities,
+
+    -- * Request Lenses
+    updateEndpointWeightsAndCapacities_endpointName,
+    updateEndpointWeightsAndCapacities_desiredWeightsAndCapacities,
+
+    -- * Destructuring the Response
+    UpdateEndpointWeightsAndCapacitiesResponse (..),
+    newUpdateEndpointWeightsAndCapacitiesResponse,
+
+    -- * Response Lenses
+    updateEndpointWeightsAndCapacitiesResponse_httpStatus,
+    updateEndpointWeightsAndCapacitiesResponse_endpointArn,
+  )
+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:/ 'newUpdateEndpointWeightsAndCapacities' smart constructor.
+data UpdateEndpointWeightsAndCapacities = UpdateEndpointWeightsAndCapacities'
+  { -- | The name of an existing SageMaker endpoint.
+    endpointName :: Prelude.Text,
+    -- | An object that provides new capacity and weight values for a variant.
+    desiredWeightsAndCapacities :: Prelude.NonEmpty DesiredWeightAndCapacity
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateEndpointWeightsAndCapacities' 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:
+--
+-- 'endpointName', 'updateEndpointWeightsAndCapacities_endpointName' - The name of an existing SageMaker endpoint.
+--
+-- 'desiredWeightsAndCapacities', 'updateEndpointWeightsAndCapacities_desiredWeightsAndCapacities' - An object that provides new capacity and weight values for a variant.
+newUpdateEndpointWeightsAndCapacities ::
+  -- | 'endpointName'
+  Prelude.Text ->
+  -- | 'desiredWeightsAndCapacities'
+  Prelude.NonEmpty DesiredWeightAndCapacity ->
+  UpdateEndpointWeightsAndCapacities
+newUpdateEndpointWeightsAndCapacities
+  pEndpointName_
+  pDesiredWeightsAndCapacities_ =
+    UpdateEndpointWeightsAndCapacities'
+      { endpointName =
+          pEndpointName_,
+        desiredWeightsAndCapacities =
+          Lens.coerced
+            Lens.# pDesiredWeightsAndCapacities_
+      }
+
+-- | The name of an existing SageMaker endpoint.
+updateEndpointWeightsAndCapacities_endpointName :: Lens.Lens' UpdateEndpointWeightsAndCapacities Prelude.Text
+updateEndpointWeightsAndCapacities_endpointName = Lens.lens (\UpdateEndpointWeightsAndCapacities' {endpointName} -> endpointName) (\s@UpdateEndpointWeightsAndCapacities' {} a -> s {endpointName = a} :: UpdateEndpointWeightsAndCapacities)
+
+-- | An object that provides new capacity and weight values for a variant.
+updateEndpointWeightsAndCapacities_desiredWeightsAndCapacities :: Lens.Lens' UpdateEndpointWeightsAndCapacities (Prelude.NonEmpty DesiredWeightAndCapacity)
+updateEndpointWeightsAndCapacities_desiredWeightsAndCapacities = Lens.lens (\UpdateEndpointWeightsAndCapacities' {desiredWeightsAndCapacities} -> desiredWeightsAndCapacities) (\s@UpdateEndpointWeightsAndCapacities' {} a -> s {desiredWeightsAndCapacities = a} :: UpdateEndpointWeightsAndCapacities) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    UpdateEndpointWeightsAndCapacities
+  where
+  type
+    AWSResponse UpdateEndpointWeightsAndCapacities =
+      UpdateEndpointWeightsAndCapacitiesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateEndpointWeightsAndCapacitiesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "EndpointArn")
+      )
+
+instance
+  Prelude.Hashable
+    UpdateEndpointWeightsAndCapacities
+  where
+  hashWithSalt
+    _salt
+    UpdateEndpointWeightsAndCapacities' {..} =
+      _salt
+        `Prelude.hashWithSalt` endpointName
+        `Prelude.hashWithSalt` desiredWeightsAndCapacities
+
+instance
+  Prelude.NFData
+    UpdateEndpointWeightsAndCapacities
+  where
+  rnf UpdateEndpointWeightsAndCapacities' {..} =
+    Prelude.rnf endpointName
+      `Prelude.seq` Prelude.rnf desiredWeightsAndCapacities
+
+instance
+  Data.ToHeaders
+    UpdateEndpointWeightsAndCapacities
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateEndpointWeightsAndCapacities" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    UpdateEndpointWeightsAndCapacities
+  where
+  toJSON UpdateEndpointWeightsAndCapacities' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("EndpointName" Data..= endpointName),
+            Prelude.Just
+              ( "DesiredWeightsAndCapacities"
+                  Data..= desiredWeightsAndCapacities
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    UpdateEndpointWeightsAndCapacities
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateEndpointWeightsAndCapacities
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateEndpointWeightsAndCapacitiesResponse' smart constructor.
+data UpdateEndpointWeightsAndCapacitiesResponse = UpdateEndpointWeightsAndCapacitiesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the updated endpoint.
+    endpointArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateEndpointWeightsAndCapacitiesResponse' 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', 'updateEndpointWeightsAndCapacitiesResponse_httpStatus' - The response's http status code.
+--
+-- 'endpointArn', 'updateEndpointWeightsAndCapacitiesResponse_endpointArn' - The Amazon Resource Name (ARN) of the updated endpoint.
+newUpdateEndpointWeightsAndCapacitiesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'endpointArn'
+  Prelude.Text ->
+  UpdateEndpointWeightsAndCapacitiesResponse
+newUpdateEndpointWeightsAndCapacitiesResponse
+  pHttpStatus_
+  pEndpointArn_ =
+    UpdateEndpointWeightsAndCapacitiesResponse'
+      { httpStatus =
+          pHttpStatus_,
+        endpointArn = pEndpointArn_
+      }
+
+-- | The response's http status code.
+updateEndpointWeightsAndCapacitiesResponse_httpStatus :: Lens.Lens' UpdateEndpointWeightsAndCapacitiesResponse Prelude.Int
+updateEndpointWeightsAndCapacitiesResponse_httpStatus = Lens.lens (\UpdateEndpointWeightsAndCapacitiesResponse' {httpStatus} -> httpStatus) (\s@UpdateEndpointWeightsAndCapacitiesResponse' {} a -> s {httpStatus = a} :: UpdateEndpointWeightsAndCapacitiesResponse)
+
+-- | The Amazon Resource Name (ARN) of the updated endpoint.
+updateEndpointWeightsAndCapacitiesResponse_endpointArn :: Lens.Lens' UpdateEndpointWeightsAndCapacitiesResponse Prelude.Text
+updateEndpointWeightsAndCapacitiesResponse_endpointArn = Lens.lens (\UpdateEndpointWeightsAndCapacitiesResponse' {endpointArn} -> endpointArn) (\s@UpdateEndpointWeightsAndCapacitiesResponse' {} a -> s {endpointArn = a} :: UpdateEndpointWeightsAndCapacitiesResponse)
+
+instance
+  Prelude.NFData
+    UpdateEndpointWeightsAndCapacitiesResponse
+  where
+  rnf UpdateEndpointWeightsAndCapacitiesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf endpointArn
diff --git a/gen/Amazonka/SageMaker/UpdateExperiment.hs b/gen/Amazonka/SageMaker/UpdateExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateExperiment.hs
@@ -0,0 +1,205 @@
+{-# 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.UpdateExperiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds, updates, or removes the description of an experiment. Updates the
+-- display name of an experiment.
+module Amazonka.SageMaker.UpdateExperiment
+  ( -- * Creating a Request
+    UpdateExperiment (..),
+    newUpdateExperiment,
+
+    -- * Request Lenses
+    updateExperiment_description,
+    updateExperiment_displayName,
+    updateExperiment_experimentName,
+
+    -- * Destructuring the Response
+    UpdateExperimentResponse (..),
+    newUpdateExperimentResponse,
+
+    -- * Response Lenses
+    updateExperimentResponse_experimentArn,
+    updateExperimentResponse_httpStatus,
+  )
+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:/ 'newUpdateExperiment' smart constructor.
+data UpdateExperiment = UpdateExperiment'
+  { -- | The description of the experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment as displayed. The name doesn\'t need to be
+    -- unique. If @DisplayName@ isn\'t specified, @ExperimentName@ is
+    -- displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the experiment to update.
+    experimentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateExperiment' 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:
+--
+-- 'description', 'updateExperiment_description' - The description of the experiment.
+--
+-- 'displayName', 'updateExperiment_displayName' - The name of the experiment as displayed. The name doesn\'t need to be
+-- unique. If @DisplayName@ isn\'t specified, @ExperimentName@ is
+-- displayed.
+--
+-- 'experimentName', 'updateExperiment_experimentName' - The name of the experiment to update.
+newUpdateExperiment ::
+  -- | 'experimentName'
+  Prelude.Text ->
+  UpdateExperiment
+newUpdateExperiment pExperimentName_ =
+  UpdateExperiment'
+    { description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      experimentName = pExperimentName_
+    }
+
+-- | The description of the experiment.
+updateExperiment_description :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Text)
+updateExperiment_description = Lens.lens (\UpdateExperiment' {description} -> description) (\s@UpdateExperiment' {} a -> s {description = a} :: UpdateExperiment)
+
+-- | The name of the experiment as displayed. The name doesn\'t need to be
+-- unique. If @DisplayName@ isn\'t specified, @ExperimentName@ is
+-- displayed.
+updateExperiment_displayName :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Text)
+updateExperiment_displayName = Lens.lens (\UpdateExperiment' {displayName} -> displayName) (\s@UpdateExperiment' {} a -> s {displayName = a} :: UpdateExperiment)
+
+-- | The name of the experiment to update.
+updateExperiment_experimentName :: Lens.Lens' UpdateExperiment Prelude.Text
+updateExperiment_experimentName = Lens.lens (\UpdateExperiment' {experimentName} -> experimentName) (\s@UpdateExperiment' {} a -> s {experimentName = a} :: UpdateExperiment)
+
+instance Core.AWSRequest UpdateExperiment where
+  type
+    AWSResponse UpdateExperiment =
+      UpdateExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateExperimentResponse'
+            Prelude.<$> (x Data..?> "ExperimentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateExperiment where
+  hashWithSalt _salt UpdateExperiment' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` experimentName
+
+instance Prelude.NFData UpdateExperiment where
+  rnf UpdateExperiment' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf experimentName
+
+instance Data.ToHeaders UpdateExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateExperiment" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateExperiment where
+  toJSON UpdateExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("DisplayName" Data..=) Prelude.<$> displayName,
+            Prelude.Just
+              ("ExperimentName" Data..= experimentName)
+          ]
+      )
+
+instance Data.ToPath UpdateExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateExperimentResponse' smart constructor.
+data UpdateExperimentResponse = UpdateExperimentResponse'
+  { -- | The Amazon Resource Name (ARN) of the experiment.
+    experimentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateExperimentResponse' 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:
+--
+-- 'experimentArn', 'updateExperimentResponse_experimentArn' - The Amazon Resource Name (ARN) of the experiment.
+--
+-- 'httpStatus', 'updateExperimentResponse_httpStatus' - The response's http status code.
+newUpdateExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateExperimentResponse
+newUpdateExperimentResponse pHttpStatus_ =
+  UpdateExperimentResponse'
+    { experimentArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the experiment.
+updateExperimentResponse_experimentArn :: Lens.Lens' UpdateExperimentResponse (Prelude.Maybe Prelude.Text)
+updateExperimentResponse_experimentArn = Lens.lens (\UpdateExperimentResponse' {experimentArn} -> experimentArn) (\s@UpdateExperimentResponse' {} a -> s {experimentArn = a} :: UpdateExperimentResponse)
+
+-- | The response's http status code.
+updateExperimentResponse_httpStatus :: Lens.Lens' UpdateExperimentResponse Prelude.Int
+updateExperimentResponse_httpStatus = Lens.lens (\UpdateExperimentResponse' {httpStatus} -> httpStatus) (\s@UpdateExperimentResponse' {} a -> s {httpStatus = a} :: UpdateExperimentResponse)
+
+instance Prelude.NFData UpdateExperimentResponse where
+  rnf UpdateExperimentResponse' {..} =
+    Prelude.rnf experimentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateFeatureGroup.hs b/gen/Amazonka/SageMaker/UpdateFeatureGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateFeatureGroup.hs
@@ -0,0 +1,205 @@
+{-# 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.UpdateFeatureGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the feature group.
+module Amazonka.SageMaker.UpdateFeatureGroup
+  ( -- * Creating a Request
+    UpdateFeatureGroup (..),
+    newUpdateFeatureGroup,
+
+    -- * Request Lenses
+    updateFeatureGroup_featureAdditions,
+    updateFeatureGroup_featureGroupName,
+
+    -- * Destructuring the Response
+    UpdateFeatureGroupResponse (..),
+    newUpdateFeatureGroupResponse,
+
+    -- * Response Lenses
+    updateFeatureGroupResponse_httpStatus,
+    updateFeatureGroupResponse_featureGroupArn,
+  )
+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:/ 'newUpdateFeatureGroup' smart constructor.
+data UpdateFeatureGroup = UpdateFeatureGroup'
+  { -- | Updates the feature group. Updating a feature group is an asynchronous
+    -- operation. When you get an HTTP 200 response, you\'ve made a valid
+    -- request. It takes some time after you\'ve made a valid request for
+    -- Feature Store to update the feature group.
+    featureAdditions :: Prelude.Maybe (Prelude.NonEmpty FeatureDefinition),
+    -- | The name of the feature group that you\'re updating.
+    featureGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFeatureGroup' 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:
+--
+-- 'featureAdditions', 'updateFeatureGroup_featureAdditions' - Updates the feature group. Updating a feature group is an asynchronous
+-- operation. When you get an HTTP 200 response, you\'ve made a valid
+-- request. It takes some time after you\'ve made a valid request for
+-- Feature Store to update the feature group.
+--
+-- 'featureGroupName', 'updateFeatureGroup_featureGroupName' - The name of the feature group that you\'re updating.
+newUpdateFeatureGroup ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  UpdateFeatureGroup
+newUpdateFeatureGroup pFeatureGroupName_ =
+  UpdateFeatureGroup'
+    { featureAdditions =
+        Prelude.Nothing,
+      featureGroupName = pFeatureGroupName_
+    }
+
+-- | Updates the feature group. Updating a feature group is an asynchronous
+-- operation. When you get an HTTP 200 response, you\'ve made a valid
+-- request. It takes some time after you\'ve made a valid request for
+-- Feature Store to update the feature group.
+updateFeatureGroup_featureAdditions :: Lens.Lens' UpdateFeatureGroup (Prelude.Maybe (Prelude.NonEmpty FeatureDefinition))
+updateFeatureGroup_featureAdditions = Lens.lens (\UpdateFeatureGroup' {featureAdditions} -> featureAdditions) (\s@UpdateFeatureGroup' {} a -> s {featureAdditions = a} :: UpdateFeatureGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the feature group that you\'re updating.
+updateFeatureGroup_featureGroupName :: Lens.Lens' UpdateFeatureGroup Prelude.Text
+updateFeatureGroup_featureGroupName = Lens.lens (\UpdateFeatureGroup' {featureGroupName} -> featureGroupName) (\s@UpdateFeatureGroup' {} a -> s {featureGroupName = a} :: UpdateFeatureGroup)
+
+instance Core.AWSRequest UpdateFeatureGroup where
+  type
+    AWSResponse UpdateFeatureGroup =
+      UpdateFeatureGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateFeatureGroupResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "FeatureGroupArn")
+      )
+
+instance Prelude.Hashable UpdateFeatureGroup where
+  hashWithSalt _salt UpdateFeatureGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` featureAdditions
+      `Prelude.hashWithSalt` featureGroupName
+
+instance Prelude.NFData UpdateFeatureGroup where
+  rnf UpdateFeatureGroup' {..} =
+    Prelude.rnf featureAdditions
+      `Prelude.seq` Prelude.rnf featureGroupName
+
+instance Data.ToHeaders UpdateFeatureGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateFeatureGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFeatureGroup where
+  toJSON UpdateFeatureGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FeatureAdditions" Data..=)
+              Prelude.<$> featureAdditions,
+            Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName)
+          ]
+      )
+
+instance Data.ToPath UpdateFeatureGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateFeatureGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFeatureGroupResponse' smart constructor.
+data UpdateFeatureGroupResponse = UpdateFeatureGroupResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Number (ARN) of the feature group that you\'re
+    -- updating.
+    featureGroupArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFeatureGroupResponse' 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', 'updateFeatureGroupResponse_httpStatus' - The response's http status code.
+--
+-- 'featureGroupArn', 'updateFeatureGroupResponse_featureGroupArn' - The Amazon Resource Number (ARN) of the feature group that you\'re
+-- updating.
+newUpdateFeatureGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'featureGroupArn'
+  Prelude.Text ->
+  UpdateFeatureGroupResponse
+newUpdateFeatureGroupResponse
+  pHttpStatus_
+  pFeatureGroupArn_ =
+    UpdateFeatureGroupResponse'
+      { httpStatus =
+          pHttpStatus_,
+        featureGroupArn = pFeatureGroupArn_
+      }
+
+-- | The response's http status code.
+updateFeatureGroupResponse_httpStatus :: Lens.Lens' UpdateFeatureGroupResponse Prelude.Int
+updateFeatureGroupResponse_httpStatus = Lens.lens (\UpdateFeatureGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateFeatureGroupResponse' {} a -> s {httpStatus = a} :: UpdateFeatureGroupResponse)
+
+-- | The Amazon Resource Number (ARN) of the feature group that you\'re
+-- updating.
+updateFeatureGroupResponse_featureGroupArn :: Lens.Lens' UpdateFeatureGroupResponse Prelude.Text
+updateFeatureGroupResponse_featureGroupArn = Lens.lens (\UpdateFeatureGroupResponse' {featureGroupArn} -> featureGroupArn) (\s@UpdateFeatureGroupResponse' {} a -> s {featureGroupArn = a} :: UpdateFeatureGroupResponse)
+
+instance Prelude.NFData UpdateFeatureGroupResponse where
+  rnf UpdateFeatureGroupResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf featureGroupArn
diff --git a/gen/Amazonka/SageMaker/UpdateFeatureMetadata.hs b/gen/Amazonka/SageMaker/UpdateFeatureMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateFeatureMetadata.hs
@@ -0,0 +1,207 @@
+{-# 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.UpdateFeatureMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the description and parameters of the feature group.
+module Amazonka.SageMaker.UpdateFeatureMetadata
+  ( -- * Creating a Request
+    UpdateFeatureMetadata (..),
+    newUpdateFeatureMetadata,
+
+    -- * Request Lenses
+    updateFeatureMetadata_description,
+    updateFeatureMetadata_parameterAdditions,
+    updateFeatureMetadata_parameterRemovals,
+    updateFeatureMetadata_featureGroupName,
+    updateFeatureMetadata_featureName,
+
+    -- * Destructuring the Response
+    UpdateFeatureMetadataResponse (..),
+    newUpdateFeatureMetadataResponse,
+  )
+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:/ 'newUpdateFeatureMetadata' smart constructor.
+data UpdateFeatureMetadata = UpdateFeatureMetadata'
+  { -- | A description that you can write to better describe the feature.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | A list of key-value pairs that you can add to better describe the
+    -- feature.
+    parameterAdditions :: Prelude.Maybe [FeatureParameter],
+    -- | A list of parameter keys that you can specify to remove parameters that
+    -- describe your feature.
+    parameterRemovals :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the feature group containing the feature that you\'re
+    -- updating.
+    featureGroupName :: Prelude.Text,
+    -- | The name of the feature that you\'re updating.
+    featureName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFeatureMetadata' 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:
+--
+-- 'description', 'updateFeatureMetadata_description' - A description that you can write to better describe the feature.
+--
+-- 'parameterAdditions', 'updateFeatureMetadata_parameterAdditions' - A list of key-value pairs that you can add to better describe the
+-- feature.
+--
+-- 'parameterRemovals', 'updateFeatureMetadata_parameterRemovals' - A list of parameter keys that you can specify to remove parameters that
+-- describe your feature.
+--
+-- 'featureGroupName', 'updateFeatureMetadata_featureGroupName' - The name of the feature group containing the feature that you\'re
+-- updating.
+--
+-- 'featureName', 'updateFeatureMetadata_featureName' - The name of the feature that you\'re updating.
+newUpdateFeatureMetadata ::
+  -- | 'featureGroupName'
+  Prelude.Text ->
+  -- | 'featureName'
+  Prelude.Text ->
+  UpdateFeatureMetadata
+newUpdateFeatureMetadata
+  pFeatureGroupName_
+  pFeatureName_ =
+    UpdateFeatureMetadata'
+      { description =
+          Prelude.Nothing,
+        parameterAdditions = Prelude.Nothing,
+        parameterRemovals = Prelude.Nothing,
+        featureGroupName = pFeatureGroupName_,
+        featureName = pFeatureName_
+      }
+
+-- | A description that you can write to better describe the feature.
+updateFeatureMetadata_description :: Lens.Lens' UpdateFeatureMetadata (Prelude.Maybe Prelude.Text)
+updateFeatureMetadata_description = Lens.lens (\UpdateFeatureMetadata' {description} -> description) (\s@UpdateFeatureMetadata' {} a -> s {description = a} :: UpdateFeatureMetadata)
+
+-- | A list of key-value pairs that you can add to better describe the
+-- feature.
+updateFeatureMetadata_parameterAdditions :: Lens.Lens' UpdateFeatureMetadata (Prelude.Maybe [FeatureParameter])
+updateFeatureMetadata_parameterAdditions = Lens.lens (\UpdateFeatureMetadata' {parameterAdditions} -> parameterAdditions) (\s@UpdateFeatureMetadata' {} a -> s {parameterAdditions = a} :: UpdateFeatureMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of parameter keys that you can specify to remove parameters that
+-- describe your feature.
+updateFeatureMetadata_parameterRemovals :: Lens.Lens' UpdateFeatureMetadata (Prelude.Maybe [Prelude.Text])
+updateFeatureMetadata_parameterRemovals = Lens.lens (\UpdateFeatureMetadata' {parameterRemovals} -> parameterRemovals) (\s@UpdateFeatureMetadata' {} a -> s {parameterRemovals = a} :: UpdateFeatureMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the feature group containing the feature that you\'re
+-- updating.
+updateFeatureMetadata_featureGroupName :: Lens.Lens' UpdateFeatureMetadata Prelude.Text
+updateFeatureMetadata_featureGroupName = Lens.lens (\UpdateFeatureMetadata' {featureGroupName} -> featureGroupName) (\s@UpdateFeatureMetadata' {} a -> s {featureGroupName = a} :: UpdateFeatureMetadata)
+
+-- | The name of the feature that you\'re updating.
+updateFeatureMetadata_featureName :: Lens.Lens' UpdateFeatureMetadata Prelude.Text
+updateFeatureMetadata_featureName = Lens.lens (\UpdateFeatureMetadata' {featureName} -> featureName) (\s@UpdateFeatureMetadata' {} a -> s {featureName = a} :: UpdateFeatureMetadata)
+
+instance Core.AWSRequest UpdateFeatureMetadata where
+  type
+    AWSResponse UpdateFeatureMetadata =
+      UpdateFeatureMetadataResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateFeatureMetadataResponse'
+
+instance Prelude.Hashable UpdateFeatureMetadata where
+  hashWithSalt _salt UpdateFeatureMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` parameterAdditions
+      `Prelude.hashWithSalt` parameterRemovals
+      `Prelude.hashWithSalt` featureGroupName
+      `Prelude.hashWithSalt` featureName
+
+instance Prelude.NFData UpdateFeatureMetadata where
+  rnf UpdateFeatureMetadata' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf parameterAdditions
+      `Prelude.seq` Prelude.rnf parameterRemovals
+      `Prelude.seq` Prelude.rnf featureGroupName
+      `Prelude.seq` Prelude.rnf featureName
+
+instance Data.ToHeaders UpdateFeatureMetadata where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateFeatureMetadata" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateFeatureMetadata where
+  toJSON UpdateFeatureMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("ParameterAdditions" Data..=)
+              Prelude.<$> parameterAdditions,
+            ("ParameterRemovals" Data..=)
+              Prelude.<$> parameterRemovals,
+            Prelude.Just
+              ("FeatureGroupName" Data..= featureGroupName),
+            Prelude.Just ("FeatureName" Data..= featureName)
+          ]
+      )
+
+instance Data.ToPath UpdateFeatureMetadata where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateFeatureMetadata where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFeatureMetadataResponse' smart constructor.
+data UpdateFeatureMetadataResponse = UpdateFeatureMetadataResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFeatureMetadataResponse' 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.
+newUpdateFeatureMetadataResponse ::
+  UpdateFeatureMetadataResponse
+newUpdateFeatureMetadataResponse =
+  UpdateFeatureMetadataResponse'
+
+instance Prelude.NFData UpdateFeatureMetadataResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SageMaker/UpdateHub.hs b/gen/Amazonka/SageMaker/UpdateHub.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateHub.hs
@@ -0,0 +1,212 @@
+{-# 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.UpdateHub
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a hub.
+module Amazonka.SageMaker.UpdateHub
+  ( -- * Creating a Request
+    UpdateHub (..),
+    newUpdateHub,
+
+    -- * Request Lenses
+    updateHub_hubDescription,
+    updateHub_hubDisplayName,
+    updateHub_hubSearchKeywords,
+    updateHub_hubName,
+
+    -- * Destructuring the Response
+    UpdateHubResponse (..),
+    newUpdateHubResponse,
+
+    -- * Response Lenses
+    updateHubResponse_httpStatus,
+    updateHubResponse_hubArn,
+  )
+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:/ 'newUpdateHub' smart constructor.
+data UpdateHub = UpdateHub'
+  { -- | A description of the updated hub.
+    hubDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the hub.
+    hubDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The searchable keywords for the hub.
+    hubSearchKeywords :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the hub to update.
+    hubName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateHub' 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:
+--
+-- 'hubDescription', 'updateHub_hubDescription' - A description of the updated hub.
+--
+-- 'hubDisplayName', 'updateHub_hubDisplayName' - The display name of the hub.
+--
+-- 'hubSearchKeywords', 'updateHub_hubSearchKeywords' - The searchable keywords for the hub.
+--
+-- 'hubName', 'updateHub_hubName' - The name of the hub to update.
+newUpdateHub ::
+  -- | 'hubName'
+  Prelude.Text ->
+  UpdateHub
+newUpdateHub pHubName_ =
+  UpdateHub'
+    { hubDescription = Prelude.Nothing,
+      hubDisplayName = Prelude.Nothing,
+      hubSearchKeywords = Prelude.Nothing,
+      hubName = pHubName_
+    }
+
+-- | A description of the updated hub.
+updateHub_hubDescription :: Lens.Lens' UpdateHub (Prelude.Maybe Prelude.Text)
+updateHub_hubDescription = Lens.lens (\UpdateHub' {hubDescription} -> hubDescription) (\s@UpdateHub' {} a -> s {hubDescription = a} :: UpdateHub)
+
+-- | The display name of the hub.
+updateHub_hubDisplayName :: Lens.Lens' UpdateHub (Prelude.Maybe Prelude.Text)
+updateHub_hubDisplayName = Lens.lens (\UpdateHub' {hubDisplayName} -> hubDisplayName) (\s@UpdateHub' {} a -> s {hubDisplayName = a} :: UpdateHub)
+
+-- | The searchable keywords for the hub.
+updateHub_hubSearchKeywords :: Lens.Lens' UpdateHub (Prelude.Maybe [Prelude.Text])
+updateHub_hubSearchKeywords = Lens.lens (\UpdateHub' {hubSearchKeywords} -> hubSearchKeywords) (\s@UpdateHub' {} a -> s {hubSearchKeywords = a} :: UpdateHub) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the hub to update.
+updateHub_hubName :: Lens.Lens' UpdateHub Prelude.Text
+updateHub_hubName = Lens.lens (\UpdateHub' {hubName} -> hubName) (\s@UpdateHub' {} a -> s {hubName = a} :: UpdateHub)
+
+instance Core.AWSRequest UpdateHub where
+  type AWSResponse UpdateHub = UpdateHubResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateHubResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "HubArn")
+      )
+
+instance Prelude.Hashable UpdateHub where
+  hashWithSalt _salt UpdateHub' {..} =
+    _salt
+      `Prelude.hashWithSalt` hubDescription
+      `Prelude.hashWithSalt` hubDisplayName
+      `Prelude.hashWithSalt` hubSearchKeywords
+      `Prelude.hashWithSalt` hubName
+
+instance Prelude.NFData UpdateHub where
+  rnf UpdateHub' {..} =
+    Prelude.rnf hubDescription
+      `Prelude.seq` Prelude.rnf hubDisplayName
+      `Prelude.seq` Prelude.rnf hubSearchKeywords
+      `Prelude.seq` Prelude.rnf hubName
+
+instance Data.ToHeaders UpdateHub where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateHub" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateHub where
+  toJSON UpdateHub' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HubDescription" Data..=)
+              Prelude.<$> hubDescription,
+            ("HubDisplayName" Data..=)
+              Prelude.<$> hubDisplayName,
+            ("HubSearchKeywords" Data..=)
+              Prelude.<$> hubSearchKeywords,
+            Prelude.Just ("HubName" Data..= hubName)
+          ]
+      )
+
+instance Data.ToPath UpdateHub where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateHub where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateHubResponse' smart constructor.
+data UpdateHubResponse = UpdateHubResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the updated hub.
+    hubArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateHubResponse' 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', 'updateHubResponse_httpStatus' - The response's http status code.
+--
+-- 'hubArn', 'updateHubResponse_hubArn' - The Amazon Resource Name (ARN) of the updated hub.
+newUpdateHubResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'hubArn'
+  Prelude.Text ->
+  UpdateHubResponse
+newUpdateHubResponse pHttpStatus_ pHubArn_ =
+  UpdateHubResponse'
+    { httpStatus = pHttpStatus_,
+      hubArn = pHubArn_
+    }
+
+-- | The response's http status code.
+updateHubResponse_httpStatus :: Lens.Lens' UpdateHubResponse Prelude.Int
+updateHubResponse_httpStatus = Lens.lens (\UpdateHubResponse' {httpStatus} -> httpStatus) (\s@UpdateHubResponse' {} a -> s {httpStatus = a} :: UpdateHubResponse)
+
+-- | The Amazon Resource Name (ARN) of the updated hub.
+updateHubResponse_hubArn :: Lens.Lens' UpdateHubResponse Prelude.Text
+updateHubResponse_hubArn = Lens.lens (\UpdateHubResponse' {hubArn} -> hubArn) (\s@UpdateHubResponse' {} a -> s {hubArn = a} :: UpdateHubResponse)
+
+instance Prelude.NFData UpdateHubResponse where
+  rnf UpdateHubResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf hubArn
diff --git a/gen/Amazonka/SageMaker/UpdateImage.hs b/gen/Amazonka/SageMaker/UpdateImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateImage.hs
@@ -0,0 +1,228 @@
+{-# 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.UpdateImage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the properties of a SageMaker image. To change the image\'s
+-- tags, use the AddTags and DeleteTags APIs.
+module Amazonka.SageMaker.UpdateImage
+  ( -- * Creating a Request
+    UpdateImage (..),
+    newUpdateImage,
+
+    -- * Request Lenses
+    updateImage_deleteProperties,
+    updateImage_description,
+    updateImage_displayName,
+    updateImage_roleArn,
+    updateImage_imageName,
+
+    -- * Destructuring the Response
+    UpdateImageResponse (..),
+    newUpdateImageResponse,
+
+    -- * Response Lenses
+    updateImageResponse_imageArn,
+    updateImageResponse_httpStatus,
+  )
+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:/ 'newUpdateImage' smart constructor.
+data UpdateImage = UpdateImage'
+  { -- | A list of properties to delete. Only the @Description@ and @DisplayName@
+    -- properties can be deleted.
+    deleteProperties :: Prelude.Maybe [Prelude.Text],
+    -- | The new description for the image.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The new display name for the image.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The new ARN for the IAM role that enables Amazon SageMaker to perform
+    -- tasks on your behalf.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the image to update.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateImage' 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:
+--
+-- 'deleteProperties', 'updateImage_deleteProperties' - A list of properties to delete. Only the @Description@ and @DisplayName@
+-- properties can be deleted.
+--
+-- 'description', 'updateImage_description' - The new description for the image.
+--
+-- 'displayName', 'updateImage_displayName' - The new display name for the image.
+--
+-- 'roleArn', 'updateImage_roleArn' - The new ARN for the IAM role that enables Amazon SageMaker to perform
+-- tasks on your behalf.
+--
+-- 'imageName', 'updateImage_imageName' - The name of the image to update.
+newUpdateImage ::
+  -- | 'imageName'
+  Prelude.Text ->
+  UpdateImage
+newUpdateImage pImageName_ =
+  UpdateImage'
+    { deleteProperties = Prelude.Nothing,
+      description = Prelude.Nothing,
+      displayName = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      imageName = pImageName_
+    }
+
+-- | A list of properties to delete. Only the @Description@ and @DisplayName@
+-- properties can be deleted.
+updateImage_deleteProperties :: Lens.Lens' UpdateImage (Prelude.Maybe [Prelude.Text])
+updateImage_deleteProperties = Lens.lens (\UpdateImage' {deleteProperties} -> deleteProperties) (\s@UpdateImage' {} a -> s {deleteProperties = a} :: UpdateImage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The new description for the image.
+updateImage_description :: Lens.Lens' UpdateImage (Prelude.Maybe Prelude.Text)
+updateImage_description = Lens.lens (\UpdateImage' {description} -> description) (\s@UpdateImage' {} a -> s {description = a} :: UpdateImage)
+
+-- | The new display name for the image.
+updateImage_displayName :: Lens.Lens' UpdateImage (Prelude.Maybe Prelude.Text)
+updateImage_displayName = Lens.lens (\UpdateImage' {displayName} -> displayName) (\s@UpdateImage' {} a -> s {displayName = a} :: UpdateImage)
+
+-- | The new ARN for the IAM role that enables Amazon SageMaker to perform
+-- tasks on your behalf.
+updateImage_roleArn :: Lens.Lens' UpdateImage (Prelude.Maybe Prelude.Text)
+updateImage_roleArn = Lens.lens (\UpdateImage' {roleArn} -> roleArn) (\s@UpdateImage' {} a -> s {roleArn = a} :: UpdateImage)
+
+-- | The name of the image to update.
+updateImage_imageName :: Lens.Lens' UpdateImage Prelude.Text
+updateImage_imageName = Lens.lens (\UpdateImage' {imageName} -> imageName) (\s@UpdateImage' {} a -> s {imageName = a} :: UpdateImage)
+
+instance Core.AWSRequest UpdateImage where
+  type AWSResponse UpdateImage = UpdateImageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateImageResponse'
+            Prelude.<$> (x Data..?> "ImageArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateImage where
+  hashWithSalt _salt UpdateImage' {..} =
+    _salt
+      `Prelude.hashWithSalt` deleteProperties
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData UpdateImage where
+  rnf UpdateImage' {..} =
+    Prelude.rnf deleteProperties
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders UpdateImage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateImage" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateImage where
+  toJSON UpdateImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeleteProperties" Data..=)
+              Prelude.<$> deleteProperties,
+            ("Description" Data..=) Prelude.<$> description,
+            ("DisplayName" Data..=) Prelude.<$> displayName,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath UpdateImage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateImage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateImageResponse' smart constructor.
+data UpdateImageResponse = UpdateImageResponse'
+  { -- | The ARN of the image.
+    imageArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateImageResponse' 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:
+--
+-- 'imageArn', 'updateImageResponse_imageArn' - The ARN of the image.
+--
+-- 'httpStatus', 'updateImageResponse_httpStatus' - The response's http status code.
+newUpdateImageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateImageResponse
+newUpdateImageResponse pHttpStatus_ =
+  UpdateImageResponse'
+    { imageArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the image.
+updateImageResponse_imageArn :: Lens.Lens' UpdateImageResponse (Prelude.Maybe Prelude.Text)
+updateImageResponse_imageArn = Lens.lens (\UpdateImageResponse' {imageArn} -> imageArn) (\s@UpdateImageResponse' {} a -> s {imageArn = a} :: UpdateImageResponse)
+
+-- | The response's http status code.
+updateImageResponse_httpStatus :: Lens.Lens' UpdateImageResponse Prelude.Int
+updateImageResponse_httpStatus = Lens.lens (\UpdateImageResponse' {httpStatus} -> httpStatus) (\s@UpdateImageResponse' {} a -> s {httpStatus = a} :: UpdateImageResponse)
+
+instance Prelude.NFData UpdateImageResponse where
+  rnf UpdateImageResponse' {..} =
+    Prelude.rnf imageArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateImageVersion.hs b/gen/Amazonka/SageMaker/UpdateImageVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateImageVersion.hs
@@ -0,0 +1,394 @@
+{-# 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.UpdateImageVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the properties of a SageMaker image version.
+module Amazonka.SageMaker.UpdateImageVersion
+  ( -- * Creating a Request
+    UpdateImageVersion (..),
+    newUpdateImageVersion,
+
+    -- * Request Lenses
+    updateImageVersion_alias,
+    updateImageVersion_aliasesToAdd,
+    updateImageVersion_aliasesToDelete,
+    updateImageVersion_horovod,
+    updateImageVersion_jobType,
+    updateImageVersion_mLFramework,
+    updateImageVersion_processor,
+    updateImageVersion_programmingLang,
+    updateImageVersion_releaseNotes,
+    updateImageVersion_vendorGuidance,
+    updateImageVersion_version,
+    updateImageVersion_imageName,
+
+    -- * Destructuring the Response
+    UpdateImageVersionResponse (..),
+    newUpdateImageVersionResponse,
+
+    -- * Response Lenses
+    updateImageVersionResponse_imageVersionArn,
+    updateImageVersionResponse_httpStatus,
+  )
+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:/ 'newUpdateImageVersion' smart constructor.
+data UpdateImageVersion = UpdateImageVersion'
+  { -- | The alias of the image version.
+    alias :: Prelude.Maybe Prelude.Text,
+    -- | A list of aliases to add.
+    aliasesToAdd :: Prelude.Maybe [Prelude.Text],
+    -- | A list of aliases to delete.
+    aliasesToDelete :: Prelude.Maybe [Prelude.Text],
+    -- | Indicates Horovod compatibility.
+    horovod :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates SageMaker job type compatibility.
+    --
+    -- -   @TRAINING@: The image version is compatible with SageMaker training
+    --     jobs.
+    --
+    -- -   @INFERENCE@: The image version is compatible with SageMaker
+    --     inference jobs.
+    --
+    -- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+    --     notebook kernels.
+    jobType :: Prelude.Maybe JobType,
+    -- | The machine learning framework vended in the image version.
+    mLFramework :: Prelude.Maybe Prelude.Text,
+    -- | Indicates CPU or GPU compatibility.
+    --
+    -- -   @CPU@: The image version is compatible with CPU.
+    --
+    -- -   @GPU@: The image version is compatible with GPU.
+    processor :: Prelude.Maybe Processor,
+    -- | The supported programming language and its version.
+    programmingLang :: Prelude.Maybe Prelude.Text,
+    -- | The maintainer description of the image version.
+    releaseNotes :: Prelude.Maybe Prelude.Text,
+    -- | The availability of the image version specified by the maintainer.
+    --
+    -- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+    --     version stability.
+    --
+    -- -   @STABLE@: The image version is stable.
+    --
+    -- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+    --     image versions that are set to be archived are automatically
+    --     archived after three months.
+    --
+    -- -   @ARCHIVED@: The image version is archived. Archived image versions
+    --     are not searchable and are no longer actively supported.
+    vendorGuidance :: Prelude.Maybe VendorGuidance,
+    -- | The version of the image.
+    version :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the image.
+    imageName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateImageVersion' 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:
+--
+-- 'alias', 'updateImageVersion_alias' - The alias of the image version.
+--
+-- 'aliasesToAdd', 'updateImageVersion_aliasesToAdd' - A list of aliases to add.
+--
+-- 'aliasesToDelete', 'updateImageVersion_aliasesToDelete' - A list of aliases to delete.
+--
+-- 'horovod', 'updateImageVersion_horovod' - Indicates Horovod compatibility.
+--
+-- 'jobType', 'updateImageVersion_jobType' - Indicates SageMaker job type compatibility.
+--
+-- -   @TRAINING@: The image version is compatible with SageMaker training
+--     jobs.
+--
+-- -   @INFERENCE@: The image version is compatible with SageMaker
+--     inference jobs.
+--
+-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+--     notebook kernels.
+--
+-- 'mLFramework', 'updateImageVersion_mLFramework' - The machine learning framework vended in the image version.
+--
+-- 'processor', 'updateImageVersion_processor' - Indicates CPU or GPU compatibility.
+--
+-- -   @CPU@: The image version is compatible with CPU.
+--
+-- -   @GPU@: The image version is compatible with GPU.
+--
+-- 'programmingLang', 'updateImageVersion_programmingLang' - The supported programming language and its version.
+--
+-- 'releaseNotes', 'updateImageVersion_releaseNotes' - The maintainer description of the image version.
+--
+-- 'vendorGuidance', 'updateImageVersion_vendorGuidance' - The availability of the image version specified by the maintainer.
+--
+-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+--     version stability.
+--
+-- -   @STABLE@: The image version is stable.
+--
+-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+--     image versions that are set to be archived are automatically
+--     archived after three months.
+--
+-- -   @ARCHIVED@: The image version is archived. Archived image versions
+--     are not searchable and are no longer actively supported.
+--
+-- 'version', 'updateImageVersion_version' - The version of the image.
+--
+-- 'imageName', 'updateImageVersion_imageName' - The name of the image.
+newUpdateImageVersion ::
+  -- | 'imageName'
+  Prelude.Text ->
+  UpdateImageVersion
+newUpdateImageVersion pImageName_ =
+  UpdateImageVersion'
+    { alias = Prelude.Nothing,
+      aliasesToAdd = Prelude.Nothing,
+      aliasesToDelete = Prelude.Nothing,
+      horovod = Prelude.Nothing,
+      jobType = Prelude.Nothing,
+      mLFramework = Prelude.Nothing,
+      processor = Prelude.Nothing,
+      programmingLang = Prelude.Nothing,
+      releaseNotes = Prelude.Nothing,
+      vendorGuidance = Prelude.Nothing,
+      version = Prelude.Nothing,
+      imageName = pImageName_
+    }
+
+-- | The alias of the image version.
+updateImageVersion_alias :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Text)
+updateImageVersion_alias = Lens.lens (\UpdateImageVersion' {alias} -> alias) (\s@UpdateImageVersion' {} a -> s {alias = a} :: UpdateImageVersion)
+
+-- | A list of aliases to add.
+updateImageVersion_aliasesToAdd :: Lens.Lens' UpdateImageVersion (Prelude.Maybe [Prelude.Text])
+updateImageVersion_aliasesToAdd = Lens.lens (\UpdateImageVersion' {aliasesToAdd} -> aliasesToAdd) (\s@UpdateImageVersion' {} a -> s {aliasesToAdd = a} :: UpdateImageVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of aliases to delete.
+updateImageVersion_aliasesToDelete :: Lens.Lens' UpdateImageVersion (Prelude.Maybe [Prelude.Text])
+updateImageVersion_aliasesToDelete = Lens.lens (\UpdateImageVersion' {aliasesToDelete} -> aliasesToDelete) (\s@UpdateImageVersion' {} a -> s {aliasesToDelete = a} :: UpdateImageVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates Horovod compatibility.
+updateImageVersion_horovod :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Bool)
+updateImageVersion_horovod = Lens.lens (\UpdateImageVersion' {horovod} -> horovod) (\s@UpdateImageVersion' {} a -> s {horovod = a} :: UpdateImageVersion)
+
+-- | Indicates SageMaker job type compatibility.
+--
+-- -   @TRAINING@: The image version is compatible with SageMaker training
+--     jobs.
+--
+-- -   @INFERENCE@: The image version is compatible with SageMaker
+--     inference jobs.
+--
+-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
+--     notebook kernels.
+updateImageVersion_jobType :: Lens.Lens' UpdateImageVersion (Prelude.Maybe JobType)
+updateImageVersion_jobType = Lens.lens (\UpdateImageVersion' {jobType} -> jobType) (\s@UpdateImageVersion' {} a -> s {jobType = a} :: UpdateImageVersion)
+
+-- | The machine learning framework vended in the image version.
+updateImageVersion_mLFramework :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Text)
+updateImageVersion_mLFramework = Lens.lens (\UpdateImageVersion' {mLFramework} -> mLFramework) (\s@UpdateImageVersion' {} a -> s {mLFramework = a} :: UpdateImageVersion)
+
+-- | Indicates CPU or GPU compatibility.
+--
+-- -   @CPU@: The image version is compatible with CPU.
+--
+-- -   @GPU@: The image version is compatible with GPU.
+updateImageVersion_processor :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Processor)
+updateImageVersion_processor = Lens.lens (\UpdateImageVersion' {processor} -> processor) (\s@UpdateImageVersion' {} a -> s {processor = a} :: UpdateImageVersion)
+
+-- | The supported programming language and its version.
+updateImageVersion_programmingLang :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Text)
+updateImageVersion_programmingLang = Lens.lens (\UpdateImageVersion' {programmingLang} -> programmingLang) (\s@UpdateImageVersion' {} a -> s {programmingLang = a} :: UpdateImageVersion)
+
+-- | The maintainer description of the image version.
+updateImageVersion_releaseNotes :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Text)
+updateImageVersion_releaseNotes = Lens.lens (\UpdateImageVersion' {releaseNotes} -> releaseNotes) (\s@UpdateImageVersion' {} a -> s {releaseNotes = a} :: UpdateImageVersion)
+
+-- | The availability of the image version specified by the maintainer.
+--
+-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
+--     version stability.
+--
+-- -   @STABLE@: The image version is stable.
+--
+-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
+--     image versions that are set to be archived are automatically
+--     archived after three months.
+--
+-- -   @ARCHIVED@: The image version is archived. Archived image versions
+--     are not searchable and are no longer actively supported.
+updateImageVersion_vendorGuidance :: Lens.Lens' UpdateImageVersion (Prelude.Maybe VendorGuidance)
+updateImageVersion_vendorGuidance = Lens.lens (\UpdateImageVersion' {vendorGuidance} -> vendorGuidance) (\s@UpdateImageVersion' {} a -> s {vendorGuidance = a} :: UpdateImageVersion)
+
+-- | The version of the image.
+updateImageVersion_version :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Natural)
+updateImageVersion_version = Lens.lens (\UpdateImageVersion' {version} -> version) (\s@UpdateImageVersion' {} a -> s {version = a} :: UpdateImageVersion)
+
+-- | The name of the image.
+updateImageVersion_imageName :: Lens.Lens' UpdateImageVersion Prelude.Text
+updateImageVersion_imageName = Lens.lens (\UpdateImageVersion' {imageName} -> imageName) (\s@UpdateImageVersion' {} a -> s {imageName = a} :: UpdateImageVersion)
+
+instance Core.AWSRequest UpdateImageVersion where
+  type
+    AWSResponse UpdateImageVersion =
+      UpdateImageVersionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateImageVersionResponse'
+            Prelude.<$> (x Data..?> "ImageVersionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateImageVersion where
+  hashWithSalt _salt UpdateImageVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` aliasesToAdd
+      `Prelude.hashWithSalt` aliasesToDelete
+      `Prelude.hashWithSalt` horovod
+      `Prelude.hashWithSalt` jobType
+      `Prelude.hashWithSalt` mLFramework
+      `Prelude.hashWithSalt` processor
+      `Prelude.hashWithSalt` programmingLang
+      `Prelude.hashWithSalt` releaseNotes
+      `Prelude.hashWithSalt` vendorGuidance
+      `Prelude.hashWithSalt` version
+      `Prelude.hashWithSalt` imageName
+
+instance Prelude.NFData UpdateImageVersion where
+  rnf UpdateImageVersion' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf aliasesToAdd
+      `Prelude.seq` Prelude.rnf aliasesToDelete
+      `Prelude.seq` Prelude.rnf horovod
+      `Prelude.seq` Prelude.rnf jobType
+      `Prelude.seq` Prelude.rnf mLFramework
+      `Prelude.seq` Prelude.rnf processor
+      `Prelude.seq` Prelude.rnf programmingLang
+      `Prelude.seq` Prelude.rnf releaseNotes
+      `Prelude.seq` Prelude.rnf vendorGuidance
+      `Prelude.seq` Prelude.rnf version
+      `Prelude.seq` Prelude.rnf imageName
+
+instance Data.ToHeaders UpdateImageVersion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateImageVersion" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateImageVersion where
+  toJSON UpdateImageVersion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Alias" Data..=) Prelude.<$> alias,
+            ("AliasesToAdd" Data..=) Prelude.<$> aliasesToAdd,
+            ("AliasesToDelete" Data..=)
+              Prelude.<$> aliasesToDelete,
+            ("Horovod" Data..=) Prelude.<$> horovod,
+            ("JobType" Data..=) Prelude.<$> jobType,
+            ("MLFramework" Data..=) Prelude.<$> mLFramework,
+            ("Processor" Data..=) Prelude.<$> processor,
+            ("ProgrammingLang" Data..=)
+              Prelude.<$> programmingLang,
+            ("ReleaseNotes" Data..=) Prelude.<$> releaseNotes,
+            ("VendorGuidance" Data..=)
+              Prelude.<$> vendorGuidance,
+            ("Version" Data..=) Prelude.<$> version,
+            Prelude.Just ("ImageName" Data..= imageName)
+          ]
+      )
+
+instance Data.ToPath UpdateImageVersion where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateImageVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateImageVersionResponse' smart constructor.
+data UpdateImageVersionResponse = UpdateImageVersionResponse'
+  { -- | The ARN of the image version.
+    imageVersionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateImageVersionResponse' 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:
+--
+-- 'imageVersionArn', 'updateImageVersionResponse_imageVersionArn' - The ARN of the image version.
+--
+-- 'httpStatus', 'updateImageVersionResponse_httpStatus' - The response's http status code.
+newUpdateImageVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateImageVersionResponse
+newUpdateImageVersionResponse pHttpStatus_ =
+  UpdateImageVersionResponse'
+    { imageVersionArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the image version.
+updateImageVersionResponse_imageVersionArn :: Lens.Lens' UpdateImageVersionResponse (Prelude.Maybe Prelude.Text)
+updateImageVersionResponse_imageVersionArn = Lens.lens (\UpdateImageVersionResponse' {imageVersionArn} -> imageVersionArn) (\s@UpdateImageVersionResponse' {} a -> s {imageVersionArn = a} :: UpdateImageVersionResponse)
+
+-- | The response's http status code.
+updateImageVersionResponse_httpStatus :: Lens.Lens' UpdateImageVersionResponse Prelude.Int
+updateImageVersionResponse_httpStatus = Lens.lens (\UpdateImageVersionResponse' {httpStatus} -> httpStatus) (\s@UpdateImageVersionResponse' {} a -> s {httpStatus = a} :: UpdateImageVersionResponse)
+
+instance Prelude.NFData UpdateImageVersionResponse where
+  rnf UpdateImageVersionResponse' {..} =
+    Prelude.rnf imageVersionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateInferenceExperiment.hs b/gen/Amazonka/SageMaker/UpdateInferenceExperiment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateInferenceExperiment.hs
@@ -0,0 +1,279 @@
+{-# 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.UpdateInferenceExperiment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an inference experiment that you created. The status of the
+-- inference experiment has to be either @Created@, @Running@. For more
+-- information on the status of an inference experiment, see
+-- DescribeInferenceExperimentResponse$Status.
+module Amazonka.SageMaker.UpdateInferenceExperiment
+  ( -- * Creating a Request
+    UpdateInferenceExperiment (..),
+    newUpdateInferenceExperiment,
+
+    -- * Request Lenses
+    updateInferenceExperiment_dataStorageConfig,
+    updateInferenceExperiment_description,
+    updateInferenceExperiment_modelVariants,
+    updateInferenceExperiment_schedule,
+    updateInferenceExperiment_shadowModeConfig,
+    updateInferenceExperiment_name,
+
+    -- * Destructuring the Response
+    UpdateInferenceExperimentResponse (..),
+    newUpdateInferenceExperimentResponse,
+
+    -- * Response Lenses
+    updateInferenceExperimentResponse_httpStatus,
+    updateInferenceExperimentResponse_inferenceExperimentArn,
+  )
+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:/ 'newUpdateInferenceExperiment' smart constructor.
+data UpdateInferenceExperiment = UpdateInferenceExperiment'
+  { -- | The Amazon S3 location and configuration for storing inference request
+    -- and response data.
+    dataStorageConfig :: Prelude.Maybe InferenceExperimentDataStorageConfig,
+    -- | The description of the inference experiment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | An array of @ModelVariantConfig@ objects. There is one for each variant,
+    -- whose infrastructure configuration you want to update.
+    modelVariants :: Prelude.Maybe (Prelude.NonEmpty ModelVariantConfig),
+    -- | The duration for which the inference experiment will run. If the status
+    -- of the inference experiment is @Created@, then you can update both the
+    -- start and end dates. If the status of the inference experiment is
+    -- @Running@, then you can update only the end date.
+    schedule :: Prelude.Maybe InferenceExperimentSchedule,
+    -- | The configuration of @ShadowMode@ inference experiment type. Use this
+    -- field to specify a production variant which takes all the inference
+    -- requests, and a shadow variant to which Amazon SageMaker replicates a
+    -- percentage of the inference requests. For the shadow variant also
+    -- specify the percentage of requests that Amazon SageMaker replicates.
+    shadowModeConfig :: Prelude.Maybe ShadowModeConfig,
+    -- | The name of the inference experiment to be updated.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateInferenceExperiment' 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:
+--
+-- 'dataStorageConfig', 'updateInferenceExperiment_dataStorageConfig' - The Amazon S3 location and configuration for storing inference request
+-- and response data.
+--
+-- 'description', 'updateInferenceExperiment_description' - The description of the inference experiment.
+--
+-- 'modelVariants', 'updateInferenceExperiment_modelVariants' - An array of @ModelVariantConfig@ objects. There is one for each variant,
+-- whose infrastructure configuration you want to update.
+--
+-- 'schedule', 'updateInferenceExperiment_schedule' - The duration for which the inference experiment will run. If the status
+-- of the inference experiment is @Created@, then you can update both the
+-- start and end dates. If the status of the inference experiment is
+-- @Running@, then you can update only the end date.
+--
+-- 'shadowModeConfig', 'updateInferenceExperiment_shadowModeConfig' - The configuration of @ShadowMode@ inference experiment type. Use this
+-- field to specify a production variant which takes all the inference
+-- requests, and a shadow variant to which Amazon SageMaker replicates a
+-- percentage of the inference requests. For the shadow variant also
+-- specify the percentage of requests that Amazon SageMaker replicates.
+--
+-- 'name', 'updateInferenceExperiment_name' - The name of the inference experiment to be updated.
+newUpdateInferenceExperiment ::
+  -- | 'name'
+  Prelude.Text ->
+  UpdateInferenceExperiment
+newUpdateInferenceExperiment pName_ =
+  UpdateInferenceExperiment'
+    { dataStorageConfig =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      modelVariants = Prelude.Nothing,
+      schedule = Prelude.Nothing,
+      shadowModeConfig = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The Amazon S3 location and configuration for storing inference request
+-- and response data.
+updateInferenceExperiment_dataStorageConfig :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe InferenceExperimentDataStorageConfig)
+updateInferenceExperiment_dataStorageConfig = Lens.lens (\UpdateInferenceExperiment' {dataStorageConfig} -> dataStorageConfig) (\s@UpdateInferenceExperiment' {} a -> s {dataStorageConfig = a} :: UpdateInferenceExperiment)
+
+-- | The description of the inference experiment.
+updateInferenceExperiment_description :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe Prelude.Text)
+updateInferenceExperiment_description = Lens.lens (\UpdateInferenceExperiment' {description} -> description) (\s@UpdateInferenceExperiment' {} a -> s {description = a} :: UpdateInferenceExperiment)
+
+-- | An array of @ModelVariantConfig@ objects. There is one for each variant,
+-- whose infrastructure configuration you want to update.
+updateInferenceExperiment_modelVariants :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe (Prelude.NonEmpty ModelVariantConfig))
+updateInferenceExperiment_modelVariants = Lens.lens (\UpdateInferenceExperiment' {modelVariants} -> modelVariants) (\s@UpdateInferenceExperiment' {} a -> s {modelVariants = a} :: UpdateInferenceExperiment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The duration for which the inference experiment will run. If the status
+-- of the inference experiment is @Created@, then you can update both the
+-- start and end dates. If the status of the inference experiment is
+-- @Running@, then you can update only the end date.
+updateInferenceExperiment_schedule :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe InferenceExperimentSchedule)
+updateInferenceExperiment_schedule = Lens.lens (\UpdateInferenceExperiment' {schedule} -> schedule) (\s@UpdateInferenceExperiment' {} a -> s {schedule = a} :: UpdateInferenceExperiment)
+
+-- | The configuration of @ShadowMode@ inference experiment type. Use this
+-- field to specify a production variant which takes all the inference
+-- requests, and a shadow variant to which Amazon SageMaker replicates a
+-- percentage of the inference requests. For the shadow variant also
+-- specify the percentage of requests that Amazon SageMaker replicates.
+updateInferenceExperiment_shadowModeConfig :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe ShadowModeConfig)
+updateInferenceExperiment_shadowModeConfig = Lens.lens (\UpdateInferenceExperiment' {shadowModeConfig} -> shadowModeConfig) (\s@UpdateInferenceExperiment' {} a -> s {shadowModeConfig = a} :: UpdateInferenceExperiment)
+
+-- | The name of the inference experiment to be updated.
+updateInferenceExperiment_name :: Lens.Lens' UpdateInferenceExperiment Prelude.Text
+updateInferenceExperiment_name = Lens.lens (\UpdateInferenceExperiment' {name} -> name) (\s@UpdateInferenceExperiment' {} a -> s {name = a} :: UpdateInferenceExperiment)
+
+instance Core.AWSRequest UpdateInferenceExperiment where
+  type
+    AWSResponse UpdateInferenceExperiment =
+      UpdateInferenceExperimentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateInferenceExperimentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InferenceExperimentArn")
+      )
+
+instance Prelude.Hashable UpdateInferenceExperiment where
+  hashWithSalt _salt UpdateInferenceExperiment' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataStorageConfig
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` modelVariants
+      `Prelude.hashWithSalt` schedule
+      `Prelude.hashWithSalt` shadowModeConfig
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData UpdateInferenceExperiment where
+  rnf UpdateInferenceExperiment' {..} =
+    Prelude.rnf dataStorageConfig
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf modelVariants
+      `Prelude.seq` Prelude.rnf schedule
+      `Prelude.seq` Prelude.rnf shadowModeConfig
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders UpdateInferenceExperiment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateInferenceExperiment" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateInferenceExperiment where
+  toJSON UpdateInferenceExperiment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataStorageConfig" Data..=)
+              Prelude.<$> dataStorageConfig,
+            ("Description" Data..=) Prelude.<$> description,
+            ("ModelVariants" Data..=) Prelude.<$> modelVariants,
+            ("Schedule" Data..=) Prelude.<$> schedule,
+            ("ShadowModeConfig" Data..=)
+              Prelude.<$> shadowModeConfig,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath UpdateInferenceExperiment where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateInferenceExperiment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateInferenceExperimentResponse' smart constructor.
+data UpdateInferenceExperimentResponse = UpdateInferenceExperimentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the updated inference experiment.
+    inferenceExperimentArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateInferenceExperimentResponse' 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', 'updateInferenceExperimentResponse_httpStatus' - The response's http status code.
+--
+-- 'inferenceExperimentArn', 'updateInferenceExperimentResponse_inferenceExperimentArn' - The ARN of the updated inference experiment.
+newUpdateInferenceExperimentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'inferenceExperimentArn'
+  Prelude.Text ->
+  UpdateInferenceExperimentResponse
+newUpdateInferenceExperimentResponse
+  pHttpStatus_
+  pInferenceExperimentArn_ =
+    UpdateInferenceExperimentResponse'
+      { httpStatus =
+          pHttpStatus_,
+        inferenceExperimentArn =
+          pInferenceExperimentArn_
+      }
+
+-- | The response's http status code.
+updateInferenceExperimentResponse_httpStatus :: Lens.Lens' UpdateInferenceExperimentResponse Prelude.Int
+updateInferenceExperimentResponse_httpStatus = Lens.lens (\UpdateInferenceExperimentResponse' {httpStatus} -> httpStatus) (\s@UpdateInferenceExperimentResponse' {} a -> s {httpStatus = a} :: UpdateInferenceExperimentResponse)
+
+-- | The ARN of the updated inference experiment.
+updateInferenceExperimentResponse_inferenceExperimentArn :: Lens.Lens' UpdateInferenceExperimentResponse Prelude.Text
+updateInferenceExperimentResponse_inferenceExperimentArn = Lens.lens (\UpdateInferenceExperimentResponse' {inferenceExperimentArn} -> inferenceExperimentArn) (\s@UpdateInferenceExperimentResponse' {} a -> s {inferenceExperimentArn = a} :: UpdateInferenceExperimentResponse)
+
+instance
+  Prelude.NFData
+    UpdateInferenceExperimentResponse
+  where
+  rnf UpdateInferenceExperimentResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf inferenceExperimentArn
diff --git a/gen/Amazonka/SageMaker/UpdateModelCard.hs b/gen/Amazonka/SageMaker/UpdateModelCard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateModelCard.hs
@@ -0,0 +1,253 @@
+{-# 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.UpdateModelCard
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an Amazon SageMaker Model Card.
+--
+-- You cannot update both model card content and model card status in a
+-- single call.
+module Amazonka.SageMaker.UpdateModelCard
+  ( -- * Creating a Request
+    UpdateModelCard (..),
+    newUpdateModelCard,
+
+    -- * Request Lenses
+    updateModelCard_content,
+    updateModelCard_modelCardStatus,
+    updateModelCard_modelCardName,
+
+    -- * Destructuring the Response
+    UpdateModelCardResponse (..),
+    newUpdateModelCardResponse,
+
+    -- * Response Lenses
+    updateModelCardResponse_httpStatus,
+    updateModelCardResponse_modelCardArn,
+  )
+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:/ 'newUpdateModelCard' smart constructor.
+data UpdateModelCard = UpdateModelCard'
+  { -- | The updated model card content. Content must be in
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+    -- and provided as a string.
+    --
+    -- When updating model card content, be sure to include the full content
+    -- and not just updated content.
+    content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The approval status of the model card within your organization.
+    -- Different organizations might have different criteria for model card
+    -- review and approval.
+    --
+    -- -   @Draft@: The model card is a work in progress.
+    --
+    -- -   @PendingReview@: The model card is pending review.
+    --
+    -- -   @Approved@: The model card is approved.
+    --
+    -- -   @Archived@: The model card is archived. No more updates should be
+    --     made to the model card, but it can still be exported.
+    modelCardStatus :: Prelude.Maybe ModelCardStatus,
+    -- | The name of the model card to update.
+    modelCardName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateModelCard' 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:
+--
+-- 'content', 'updateModelCard_content' - The updated model card content. Content must be in
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+-- and provided as a string.
+--
+-- When updating model card content, be sure to include the full content
+-- and not just updated content.
+--
+-- 'modelCardStatus', 'updateModelCard_modelCardStatus' - The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+--
+-- 'modelCardName', 'updateModelCard_modelCardName' - The name of the model card to update.
+newUpdateModelCard ::
+  -- | 'modelCardName'
+  Prelude.Text ->
+  UpdateModelCard
+newUpdateModelCard pModelCardName_ =
+  UpdateModelCard'
+    { content = Prelude.Nothing,
+      modelCardStatus = Prelude.Nothing,
+      modelCardName = pModelCardName_
+    }
+
+-- | The updated model card content. Content must be in
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-api-json-schema.html model card JSON schema>
+-- and provided as a string.
+--
+-- When updating model card content, be sure to include the full content
+-- and not just updated content.
+updateModelCard_content :: Lens.Lens' UpdateModelCard (Prelude.Maybe Prelude.Text)
+updateModelCard_content = Lens.lens (\UpdateModelCard' {content} -> content) (\s@UpdateModelCard' {} a -> s {content = a} :: UpdateModelCard) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The approval status of the model card within your organization.
+-- Different organizations might have different criteria for model card
+-- review and approval.
+--
+-- -   @Draft@: The model card is a work in progress.
+--
+-- -   @PendingReview@: The model card is pending review.
+--
+-- -   @Approved@: The model card is approved.
+--
+-- -   @Archived@: The model card is archived. No more updates should be
+--     made to the model card, but it can still be exported.
+updateModelCard_modelCardStatus :: Lens.Lens' UpdateModelCard (Prelude.Maybe ModelCardStatus)
+updateModelCard_modelCardStatus = Lens.lens (\UpdateModelCard' {modelCardStatus} -> modelCardStatus) (\s@UpdateModelCard' {} a -> s {modelCardStatus = a} :: UpdateModelCard)
+
+-- | The name of the model card to update.
+updateModelCard_modelCardName :: Lens.Lens' UpdateModelCard Prelude.Text
+updateModelCard_modelCardName = Lens.lens (\UpdateModelCard' {modelCardName} -> modelCardName) (\s@UpdateModelCard' {} a -> s {modelCardName = a} :: UpdateModelCard)
+
+instance Core.AWSRequest UpdateModelCard where
+  type
+    AWSResponse UpdateModelCard =
+      UpdateModelCardResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateModelCardResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelCardArn")
+      )
+
+instance Prelude.Hashable UpdateModelCard where
+  hashWithSalt _salt UpdateModelCard' {..} =
+    _salt
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` modelCardStatus
+      `Prelude.hashWithSalt` modelCardName
+
+instance Prelude.NFData UpdateModelCard where
+  rnf UpdateModelCard' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf modelCardStatus
+      `Prelude.seq` Prelude.rnf modelCardName
+
+instance Data.ToHeaders UpdateModelCard where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateModelCard" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateModelCard where
+  toJSON UpdateModelCard' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Content" Data..=) Prelude.<$> content,
+            ("ModelCardStatus" Data..=)
+              Prelude.<$> modelCardStatus,
+            Prelude.Just
+              ("ModelCardName" Data..= modelCardName)
+          ]
+      )
+
+instance Data.ToPath UpdateModelCard where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateModelCard where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateModelCardResponse' smart constructor.
+data UpdateModelCardResponse = UpdateModelCardResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the updated model card.
+    modelCardArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateModelCardResponse' 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', 'updateModelCardResponse_httpStatus' - The response's http status code.
+--
+-- 'modelCardArn', 'updateModelCardResponse_modelCardArn' - The Amazon Resource Name (ARN) of the updated model card.
+newUpdateModelCardResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelCardArn'
+  Prelude.Text ->
+  UpdateModelCardResponse
+newUpdateModelCardResponse
+  pHttpStatus_
+  pModelCardArn_ =
+    UpdateModelCardResponse'
+      { httpStatus = pHttpStatus_,
+        modelCardArn = pModelCardArn_
+      }
+
+-- | The response's http status code.
+updateModelCardResponse_httpStatus :: Lens.Lens' UpdateModelCardResponse Prelude.Int
+updateModelCardResponse_httpStatus = Lens.lens (\UpdateModelCardResponse' {httpStatus} -> httpStatus) (\s@UpdateModelCardResponse' {} a -> s {httpStatus = a} :: UpdateModelCardResponse)
+
+-- | The Amazon Resource Name (ARN) of the updated model card.
+updateModelCardResponse_modelCardArn :: Lens.Lens' UpdateModelCardResponse Prelude.Text
+updateModelCardResponse_modelCardArn = Lens.lens (\UpdateModelCardResponse' {modelCardArn} -> modelCardArn) (\s@UpdateModelCardResponse' {} a -> s {modelCardArn = a} :: UpdateModelCardResponse)
+
+instance Prelude.NFData UpdateModelCardResponse where
+  rnf UpdateModelCardResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelCardArn
diff --git a/gen/Amazonka/SageMaker/UpdateModelPackage.hs b/gen/Amazonka/SageMaker/UpdateModelPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateModelPackage.hs
@@ -0,0 +1,267 @@
+{-# 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.UpdateModelPackage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a versioned model.
+module Amazonka.SageMaker.UpdateModelPackage
+  ( -- * Creating a Request
+    UpdateModelPackage (..),
+    newUpdateModelPackage,
+
+    -- * Request Lenses
+    updateModelPackage_additionalInferenceSpecificationsToAdd,
+    updateModelPackage_approvalDescription,
+    updateModelPackage_customerMetadataProperties,
+    updateModelPackage_customerMetadataPropertiesToRemove,
+    updateModelPackage_modelApprovalStatus,
+    updateModelPackage_modelPackageArn,
+
+    -- * Destructuring the Response
+    UpdateModelPackageResponse (..),
+    newUpdateModelPackageResponse,
+
+    -- * Response Lenses
+    updateModelPackageResponse_httpStatus,
+    updateModelPackageResponse_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:/ 'newUpdateModelPackage' smart constructor.
+data UpdateModelPackage = UpdateModelPackage'
+  { -- | An array of additional Inference Specification objects to be added to
+    -- the existing array additional Inference Specification. Total number of
+    -- additional Inference Specifications can not exceed 15. 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.
+    additionalInferenceSpecificationsToAdd :: Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition),
+    -- | A description for the approval status of the model.
+    approvalDescription :: Prelude.Maybe Prelude.Text,
+    -- | The metadata properties associated with the model package versions.
+    customerMetadataProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The metadata properties associated with the model package versions to
+    -- remove.
+    customerMetadataPropertiesToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | The approval status of the model.
+    modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
+    -- | The Amazon Resource Name (ARN) of the model package.
+    modelPackageArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateModelPackage' 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:
+--
+-- 'additionalInferenceSpecificationsToAdd', 'updateModelPackage_additionalInferenceSpecificationsToAdd' - An array of additional Inference Specification objects to be added to
+-- the existing array additional Inference Specification. Total number of
+-- additional Inference Specifications can not exceed 15. 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.
+--
+-- 'approvalDescription', 'updateModelPackage_approvalDescription' - A description for the approval status of the model.
+--
+-- 'customerMetadataProperties', 'updateModelPackage_customerMetadataProperties' - The metadata properties associated with the model package versions.
+--
+-- 'customerMetadataPropertiesToRemove', 'updateModelPackage_customerMetadataPropertiesToRemove' - The metadata properties associated with the model package versions to
+-- remove.
+--
+-- 'modelApprovalStatus', 'updateModelPackage_modelApprovalStatus' - The approval status of the model.
+--
+-- 'modelPackageArn', 'updateModelPackage_modelPackageArn' - The Amazon Resource Name (ARN) of the model package.
+newUpdateModelPackage ::
+  -- | 'modelPackageArn'
+  Prelude.Text ->
+  UpdateModelPackage
+newUpdateModelPackage pModelPackageArn_ =
+  UpdateModelPackage'
+    { additionalInferenceSpecificationsToAdd =
+        Prelude.Nothing,
+      approvalDescription = Prelude.Nothing,
+      customerMetadataProperties = Prelude.Nothing,
+      customerMetadataPropertiesToRemove = Prelude.Nothing,
+      modelApprovalStatus = Prelude.Nothing,
+      modelPackageArn = pModelPackageArn_
+    }
+
+-- | An array of additional Inference Specification objects to be added to
+-- the existing array additional Inference Specification. Total number of
+-- additional Inference Specifications can not exceed 15. 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.
+updateModelPackage_additionalInferenceSpecificationsToAdd :: Lens.Lens' UpdateModelPackage (Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition))
+updateModelPackage_additionalInferenceSpecificationsToAdd = Lens.lens (\UpdateModelPackage' {additionalInferenceSpecificationsToAdd} -> additionalInferenceSpecificationsToAdd) (\s@UpdateModelPackage' {} a -> s {additionalInferenceSpecificationsToAdd = a} :: UpdateModelPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description for the approval status of the model.
+updateModelPackage_approvalDescription :: Lens.Lens' UpdateModelPackage (Prelude.Maybe Prelude.Text)
+updateModelPackage_approvalDescription = Lens.lens (\UpdateModelPackage' {approvalDescription} -> approvalDescription) (\s@UpdateModelPackage' {} a -> s {approvalDescription = a} :: UpdateModelPackage)
+
+-- | The metadata properties associated with the model package versions.
+updateModelPackage_customerMetadataProperties :: Lens.Lens' UpdateModelPackage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateModelPackage_customerMetadataProperties = Lens.lens (\UpdateModelPackage' {customerMetadataProperties} -> customerMetadataProperties) (\s@UpdateModelPackage' {} a -> s {customerMetadataProperties = a} :: UpdateModelPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The metadata properties associated with the model package versions to
+-- remove.
+updateModelPackage_customerMetadataPropertiesToRemove :: Lens.Lens' UpdateModelPackage (Prelude.Maybe [Prelude.Text])
+updateModelPackage_customerMetadataPropertiesToRemove = Lens.lens (\UpdateModelPackage' {customerMetadataPropertiesToRemove} -> customerMetadataPropertiesToRemove) (\s@UpdateModelPackage' {} a -> s {customerMetadataPropertiesToRemove = a} :: UpdateModelPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The approval status of the model.
+updateModelPackage_modelApprovalStatus :: Lens.Lens' UpdateModelPackage (Prelude.Maybe ModelApprovalStatus)
+updateModelPackage_modelApprovalStatus = Lens.lens (\UpdateModelPackage' {modelApprovalStatus} -> modelApprovalStatus) (\s@UpdateModelPackage' {} a -> s {modelApprovalStatus = a} :: UpdateModelPackage)
+
+-- | The Amazon Resource Name (ARN) of the model package.
+updateModelPackage_modelPackageArn :: Lens.Lens' UpdateModelPackage Prelude.Text
+updateModelPackage_modelPackageArn = Lens.lens (\UpdateModelPackage' {modelPackageArn} -> modelPackageArn) (\s@UpdateModelPackage' {} a -> s {modelPackageArn = a} :: UpdateModelPackage)
+
+instance Core.AWSRequest UpdateModelPackage where
+  type
+    AWSResponse UpdateModelPackage =
+      UpdateModelPackageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateModelPackageResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ModelPackageArn")
+      )
+
+instance Prelude.Hashable UpdateModelPackage where
+  hashWithSalt _salt UpdateModelPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalInferenceSpecificationsToAdd
+      `Prelude.hashWithSalt` approvalDescription
+      `Prelude.hashWithSalt` customerMetadataProperties
+      `Prelude.hashWithSalt` customerMetadataPropertiesToRemove
+      `Prelude.hashWithSalt` modelApprovalStatus
+      `Prelude.hashWithSalt` modelPackageArn
+
+instance Prelude.NFData UpdateModelPackage where
+  rnf UpdateModelPackage' {..} =
+    Prelude.rnf additionalInferenceSpecificationsToAdd
+      `Prelude.seq` Prelude.rnf approvalDescription
+      `Prelude.seq` Prelude.rnf customerMetadataProperties
+      `Prelude.seq` Prelude.rnf customerMetadataPropertiesToRemove
+      `Prelude.seq` Prelude.rnf modelApprovalStatus
+      `Prelude.seq` Prelude.rnf modelPackageArn
+
+instance Data.ToHeaders UpdateModelPackage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateModelPackage" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateModelPackage where
+  toJSON UpdateModelPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AdditionalInferenceSpecificationsToAdd" Data..=)
+              Prelude.<$> additionalInferenceSpecificationsToAdd,
+            ("ApprovalDescription" Data..=)
+              Prelude.<$> approvalDescription,
+            ("CustomerMetadataProperties" Data..=)
+              Prelude.<$> customerMetadataProperties,
+            ("CustomerMetadataPropertiesToRemove" Data..=)
+              Prelude.<$> customerMetadataPropertiesToRemove,
+            ("ModelApprovalStatus" Data..=)
+              Prelude.<$> modelApprovalStatus,
+            Prelude.Just
+              ("ModelPackageArn" Data..= modelPackageArn)
+          ]
+      )
+
+instance Data.ToPath UpdateModelPackage where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateModelPackage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateModelPackageResponse' smart constructor.
+data UpdateModelPackageResponse = UpdateModelPackageResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the model.
+    modelPackageArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateModelPackageResponse' 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', 'updateModelPackageResponse_httpStatus' - The response's http status code.
+--
+-- 'modelPackageArn', 'updateModelPackageResponse_modelPackageArn' - The Amazon Resource Name (ARN) of the model.
+newUpdateModelPackageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'modelPackageArn'
+  Prelude.Text ->
+  UpdateModelPackageResponse
+newUpdateModelPackageResponse
+  pHttpStatus_
+  pModelPackageArn_ =
+    UpdateModelPackageResponse'
+      { httpStatus =
+          pHttpStatus_,
+        modelPackageArn = pModelPackageArn_
+      }
+
+-- | The response's http status code.
+updateModelPackageResponse_httpStatus :: Lens.Lens' UpdateModelPackageResponse Prelude.Int
+updateModelPackageResponse_httpStatus = Lens.lens (\UpdateModelPackageResponse' {httpStatus} -> httpStatus) (\s@UpdateModelPackageResponse' {} a -> s {httpStatus = a} :: UpdateModelPackageResponse)
+
+-- | The Amazon Resource Name (ARN) of the model.
+updateModelPackageResponse_modelPackageArn :: Lens.Lens' UpdateModelPackageResponse Prelude.Text
+updateModelPackageResponse_modelPackageArn = Lens.lens (\UpdateModelPackageResponse' {modelPackageArn} -> modelPackageArn) (\s@UpdateModelPackageResponse' {} a -> s {modelPackageArn = a} :: UpdateModelPackageResponse)
+
+instance Prelude.NFData UpdateModelPackageResponse where
+  rnf UpdateModelPackageResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf modelPackageArn
diff --git a/gen/Amazonka/SageMaker/UpdateMonitoringAlert.hs b/gen/Amazonka/SageMaker/UpdateMonitoringAlert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateMonitoringAlert.hs
@@ -0,0 +1,252 @@
+{-# 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.UpdateMonitoringAlert
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the parameters of a model monitor alert.
+module Amazonka.SageMaker.UpdateMonitoringAlert
+  ( -- * Creating a Request
+    UpdateMonitoringAlert (..),
+    newUpdateMonitoringAlert,
+
+    -- * Request Lenses
+    updateMonitoringAlert_monitoringScheduleName,
+    updateMonitoringAlert_monitoringAlertName,
+    updateMonitoringAlert_datapointsToAlert,
+    updateMonitoringAlert_evaluationPeriod,
+
+    -- * Destructuring the Response
+    UpdateMonitoringAlertResponse (..),
+    newUpdateMonitoringAlertResponse,
+
+    -- * Response Lenses
+    updateMonitoringAlertResponse_monitoringAlertName,
+    updateMonitoringAlertResponse_httpStatus,
+    updateMonitoringAlertResponse_monitoringScheduleArn,
+  )
+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:/ 'newUpdateMonitoringAlert' smart constructor.
+data UpdateMonitoringAlert = UpdateMonitoringAlert'
+  { -- | The name of a monitoring schedule.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The name of a monitoring alert.
+    monitoringAlertName :: Prelude.Text,
+    -- | Within @EvaluationPeriod@, how many execution failures will raise an
+    -- alert.
+    datapointsToAlert :: Prelude.Natural,
+    -- | The number of most recent monitoring executions to consider when
+    -- evaluating alert status.
+    evaluationPeriod :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateMonitoringAlert' 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:
+--
+-- 'monitoringScheduleName', 'updateMonitoringAlert_monitoringScheduleName' - The name of a monitoring schedule.
+--
+-- 'monitoringAlertName', 'updateMonitoringAlert_monitoringAlertName' - The name of a monitoring alert.
+--
+-- 'datapointsToAlert', 'updateMonitoringAlert_datapointsToAlert' - Within @EvaluationPeriod@, how many execution failures will raise an
+-- alert.
+--
+-- 'evaluationPeriod', 'updateMonitoringAlert_evaluationPeriod' - The number of most recent monitoring executions to consider when
+-- evaluating alert status.
+newUpdateMonitoringAlert ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'monitoringAlertName'
+  Prelude.Text ->
+  -- | 'datapointsToAlert'
+  Prelude.Natural ->
+  -- | 'evaluationPeriod'
+  Prelude.Natural ->
+  UpdateMonitoringAlert
+newUpdateMonitoringAlert
+  pMonitoringScheduleName_
+  pMonitoringAlertName_
+  pDatapointsToAlert_
+  pEvaluationPeriod_ =
+    UpdateMonitoringAlert'
+      { monitoringScheduleName =
+          pMonitoringScheduleName_,
+        monitoringAlertName = pMonitoringAlertName_,
+        datapointsToAlert = pDatapointsToAlert_,
+        evaluationPeriod = pEvaluationPeriod_
+      }
+
+-- | The name of a monitoring schedule.
+updateMonitoringAlert_monitoringScheduleName :: Lens.Lens' UpdateMonitoringAlert Prelude.Text
+updateMonitoringAlert_monitoringScheduleName = Lens.lens (\UpdateMonitoringAlert' {monitoringScheduleName} -> monitoringScheduleName) (\s@UpdateMonitoringAlert' {} a -> s {monitoringScheduleName = a} :: UpdateMonitoringAlert)
+
+-- | The name of a monitoring alert.
+updateMonitoringAlert_monitoringAlertName :: Lens.Lens' UpdateMonitoringAlert Prelude.Text
+updateMonitoringAlert_monitoringAlertName = Lens.lens (\UpdateMonitoringAlert' {monitoringAlertName} -> monitoringAlertName) (\s@UpdateMonitoringAlert' {} a -> s {monitoringAlertName = a} :: UpdateMonitoringAlert)
+
+-- | Within @EvaluationPeriod@, how many execution failures will raise an
+-- alert.
+updateMonitoringAlert_datapointsToAlert :: Lens.Lens' UpdateMonitoringAlert Prelude.Natural
+updateMonitoringAlert_datapointsToAlert = Lens.lens (\UpdateMonitoringAlert' {datapointsToAlert} -> datapointsToAlert) (\s@UpdateMonitoringAlert' {} a -> s {datapointsToAlert = a} :: UpdateMonitoringAlert)
+
+-- | The number of most recent monitoring executions to consider when
+-- evaluating alert status.
+updateMonitoringAlert_evaluationPeriod :: Lens.Lens' UpdateMonitoringAlert Prelude.Natural
+updateMonitoringAlert_evaluationPeriod = Lens.lens (\UpdateMonitoringAlert' {evaluationPeriod} -> evaluationPeriod) (\s@UpdateMonitoringAlert' {} a -> s {evaluationPeriod = a} :: UpdateMonitoringAlert)
+
+instance Core.AWSRequest UpdateMonitoringAlert where
+  type
+    AWSResponse UpdateMonitoringAlert =
+      UpdateMonitoringAlertResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateMonitoringAlertResponse'
+            Prelude.<$> (x Data..?> "MonitoringAlertName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "MonitoringScheduleArn")
+      )
+
+instance Prelude.Hashable UpdateMonitoringAlert where
+  hashWithSalt _salt UpdateMonitoringAlert' {..} =
+    _salt
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringAlertName
+      `Prelude.hashWithSalt` datapointsToAlert
+      `Prelude.hashWithSalt` evaluationPeriod
+
+instance Prelude.NFData UpdateMonitoringAlert where
+  rnf UpdateMonitoringAlert' {..} =
+    Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringAlertName
+      `Prelude.seq` Prelude.rnf datapointsToAlert
+      `Prelude.seq` Prelude.rnf evaluationPeriod
+
+instance Data.ToHeaders UpdateMonitoringAlert where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateMonitoringAlert" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateMonitoringAlert where
+  toJSON UpdateMonitoringAlert' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              ),
+            Prelude.Just
+              ("MonitoringAlertName" Data..= monitoringAlertName),
+            Prelude.Just
+              ("DatapointsToAlert" Data..= datapointsToAlert),
+            Prelude.Just
+              ("EvaluationPeriod" Data..= evaluationPeriod)
+          ]
+      )
+
+instance Data.ToPath UpdateMonitoringAlert where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateMonitoringAlert where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateMonitoringAlertResponse' smart constructor.
+data UpdateMonitoringAlertResponse = UpdateMonitoringAlertResponse'
+  { -- | The name of a monitoring alert.
+    monitoringAlertName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the monitoring schedule.
+    monitoringScheduleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateMonitoringAlertResponse' 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:
+--
+-- 'monitoringAlertName', 'updateMonitoringAlertResponse_monitoringAlertName' - The name of a monitoring alert.
+--
+-- 'httpStatus', 'updateMonitoringAlertResponse_httpStatus' - The response's http status code.
+--
+-- 'monitoringScheduleArn', 'updateMonitoringAlertResponse_monitoringScheduleArn' - The Amazon Resource Name (ARN) of the monitoring schedule.
+newUpdateMonitoringAlertResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'monitoringScheduleArn'
+  Prelude.Text ->
+  UpdateMonitoringAlertResponse
+newUpdateMonitoringAlertResponse
+  pHttpStatus_
+  pMonitoringScheduleArn_ =
+    UpdateMonitoringAlertResponse'
+      { monitoringAlertName =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        monitoringScheduleArn =
+          pMonitoringScheduleArn_
+      }
+
+-- | The name of a monitoring alert.
+updateMonitoringAlertResponse_monitoringAlertName :: Lens.Lens' UpdateMonitoringAlertResponse (Prelude.Maybe Prelude.Text)
+updateMonitoringAlertResponse_monitoringAlertName = Lens.lens (\UpdateMonitoringAlertResponse' {monitoringAlertName} -> monitoringAlertName) (\s@UpdateMonitoringAlertResponse' {} a -> s {monitoringAlertName = a} :: UpdateMonitoringAlertResponse)
+
+-- | The response's http status code.
+updateMonitoringAlertResponse_httpStatus :: Lens.Lens' UpdateMonitoringAlertResponse Prelude.Int
+updateMonitoringAlertResponse_httpStatus = Lens.lens (\UpdateMonitoringAlertResponse' {httpStatus} -> httpStatus) (\s@UpdateMonitoringAlertResponse' {} a -> s {httpStatus = a} :: UpdateMonitoringAlertResponse)
+
+-- | The Amazon Resource Name (ARN) of the monitoring schedule.
+updateMonitoringAlertResponse_monitoringScheduleArn :: Lens.Lens' UpdateMonitoringAlertResponse Prelude.Text
+updateMonitoringAlertResponse_monitoringScheduleArn = Lens.lens (\UpdateMonitoringAlertResponse' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@UpdateMonitoringAlertResponse' {} a -> s {monitoringScheduleArn = a} :: UpdateMonitoringAlertResponse)
+
+instance Prelude.NFData UpdateMonitoringAlertResponse where
+  rnf UpdateMonitoringAlertResponse' {..} =
+    Prelude.rnf monitoringAlertName
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
diff --git a/gen/Amazonka/SageMaker/UpdateMonitoringSchedule.hs b/gen/Amazonka/SageMaker/UpdateMonitoringSchedule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateMonitoringSchedule.hs
@@ -0,0 +1,212 @@
+{-# 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.UpdateMonitoringSchedule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a previously created schedule.
+module Amazonka.SageMaker.UpdateMonitoringSchedule
+  ( -- * Creating a Request
+    UpdateMonitoringSchedule (..),
+    newUpdateMonitoringSchedule,
+
+    -- * Request Lenses
+    updateMonitoringSchedule_monitoringScheduleName,
+    updateMonitoringSchedule_monitoringScheduleConfig,
+
+    -- * Destructuring the Response
+    UpdateMonitoringScheduleResponse (..),
+    newUpdateMonitoringScheduleResponse,
+
+    -- * Response Lenses
+    updateMonitoringScheduleResponse_httpStatus,
+    updateMonitoringScheduleResponse_monitoringScheduleArn,
+  )
+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:/ 'newUpdateMonitoringSchedule' smart constructor.
+data UpdateMonitoringSchedule = UpdateMonitoringSchedule'
+  { -- | The name of the monitoring schedule. The name must be unique within an
+    -- Amazon Web Services Region within an Amazon Web Services account.
+    monitoringScheduleName :: Prelude.Text,
+    -- | The configuration object that specifies the monitoring schedule and
+    -- defines the monitoring job.
+    monitoringScheduleConfig :: MonitoringScheduleConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateMonitoringSchedule' 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:
+--
+-- 'monitoringScheduleName', 'updateMonitoringSchedule_monitoringScheduleName' - The name of the monitoring schedule. The name must be unique within an
+-- Amazon Web Services Region within an Amazon Web Services account.
+--
+-- 'monitoringScheduleConfig', 'updateMonitoringSchedule_monitoringScheduleConfig' - The configuration object that specifies the monitoring schedule and
+-- defines the monitoring job.
+newUpdateMonitoringSchedule ::
+  -- | 'monitoringScheduleName'
+  Prelude.Text ->
+  -- | 'monitoringScheduleConfig'
+  MonitoringScheduleConfig ->
+  UpdateMonitoringSchedule
+newUpdateMonitoringSchedule
+  pMonitoringScheduleName_
+  pMonitoringScheduleConfig_ =
+    UpdateMonitoringSchedule'
+      { monitoringScheduleName =
+          pMonitoringScheduleName_,
+        monitoringScheduleConfig =
+          pMonitoringScheduleConfig_
+      }
+
+-- | The name of the monitoring schedule. The name must be unique within an
+-- Amazon Web Services Region within an Amazon Web Services account.
+updateMonitoringSchedule_monitoringScheduleName :: Lens.Lens' UpdateMonitoringSchedule Prelude.Text
+updateMonitoringSchedule_monitoringScheduleName = Lens.lens (\UpdateMonitoringSchedule' {monitoringScheduleName} -> monitoringScheduleName) (\s@UpdateMonitoringSchedule' {} a -> s {monitoringScheduleName = a} :: UpdateMonitoringSchedule)
+
+-- | The configuration object that specifies the monitoring schedule and
+-- defines the monitoring job.
+updateMonitoringSchedule_monitoringScheduleConfig :: Lens.Lens' UpdateMonitoringSchedule MonitoringScheduleConfig
+updateMonitoringSchedule_monitoringScheduleConfig = Lens.lens (\UpdateMonitoringSchedule' {monitoringScheduleConfig} -> monitoringScheduleConfig) (\s@UpdateMonitoringSchedule' {} a -> s {monitoringScheduleConfig = a} :: UpdateMonitoringSchedule)
+
+instance Core.AWSRequest UpdateMonitoringSchedule where
+  type
+    AWSResponse UpdateMonitoringSchedule =
+      UpdateMonitoringScheduleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateMonitoringScheduleResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "MonitoringScheduleArn")
+      )
+
+instance Prelude.Hashable UpdateMonitoringSchedule where
+  hashWithSalt _salt UpdateMonitoringSchedule' {..} =
+    _salt
+      `Prelude.hashWithSalt` monitoringScheduleName
+      `Prelude.hashWithSalt` monitoringScheduleConfig
+
+instance Prelude.NFData UpdateMonitoringSchedule where
+  rnf UpdateMonitoringSchedule' {..} =
+    Prelude.rnf monitoringScheduleName
+      `Prelude.seq` Prelude.rnf monitoringScheduleConfig
+
+instance Data.ToHeaders UpdateMonitoringSchedule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateMonitoringSchedule" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateMonitoringSchedule where
+  toJSON UpdateMonitoringSchedule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "MonitoringScheduleName"
+                  Data..= monitoringScheduleName
+              ),
+            Prelude.Just
+              ( "MonitoringScheduleConfig"
+                  Data..= monitoringScheduleConfig
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateMonitoringSchedule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateMonitoringSchedule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateMonitoringScheduleResponse' smart constructor.
+data UpdateMonitoringScheduleResponse = UpdateMonitoringScheduleResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the monitoring schedule.
+    monitoringScheduleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateMonitoringScheduleResponse' 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', 'updateMonitoringScheduleResponse_httpStatus' - The response's http status code.
+--
+-- 'monitoringScheduleArn', 'updateMonitoringScheduleResponse_monitoringScheduleArn' - The Amazon Resource Name (ARN) of the monitoring schedule.
+newUpdateMonitoringScheduleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'monitoringScheduleArn'
+  Prelude.Text ->
+  UpdateMonitoringScheduleResponse
+newUpdateMonitoringScheduleResponse
+  pHttpStatus_
+  pMonitoringScheduleArn_ =
+    UpdateMonitoringScheduleResponse'
+      { httpStatus =
+          pHttpStatus_,
+        monitoringScheduleArn =
+          pMonitoringScheduleArn_
+      }
+
+-- | The response's http status code.
+updateMonitoringScheduleResponse_httpStatus :: Lens.Lens' UpdateMonitoringScheduleResponse Prelude.Int
+updateMonitoringScheduleResponse_httpStatus = Lens.lens (\UpdateMonitoringScheduleResponse' {httpStatus} -> httpStatus) (\s@UpdateMonitoringScheduleResponse' {} a -> s {httpStatus = a} :: UpdateMonitoringScheduleResponse)
+
+-- | The Amazon Resource Name (ARN) of the monitoring schedule.
+updateMonitoringScheduleResponse_monitoringScheduleArn :: Lens.Lens' UpdateMonitoringScheduleResponse Prelude.Text
+updateMonitoringScheduleResponse_monitoringScheduleArn = Lens.lens (\UpdateMonitoringScheduleResponse' {monitoringScheduleArn} -> monitoringScheduleArn) (\s@UpdateMonitoringScheduleResponse' {} a -> s {monitoringScheduleArn = a} :: UpdateMonitoringScheduleResponse)
+
+instance
+  Prelude.NFData
+    UpdateMonitoringScheduleResponse
+  where
+  rnf UpdateMonitoringScheduleResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf monitoringScheduleArn
diff --git a/gen/Amazonka/SageMaker/UpdateNotebookInstance.hs b/gen/Amazonka/SageMaker/UpdateNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateNotebookInstance.hs
@@ -0,0 +1,495 @@
+{-# 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.UpdateNotebookInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a notebook instance. NotebookInstance updates include upgrading
+-- or downgrading the ML compute instance used for your notebook instance
+-- to accommodate changes in your workload requirements.
+module Amazonka.SageMaker.UpdateNotebookInstance
+  ( -- * Creating a Request
+    UpdateNotebookInstance (..),
+    newUpdateNotebookInstance,
+
+    -- * Request Lenses
+    updateNotebookInstance_acceleratorTypes,
+    updateNotebookInstance_additionalCodeRepositories,
+    updateNotebookInstance_defaultCodeRepository,
+    updateNotebookInstance_disassociateAcceleratorTypes,
+    updateNotebookInstance_disassociateAdditionalCodeRepositories,
+    updateNotebookInstance_disassociateDefaultCodeRepository,
+    updateNotebookInstance_disassociateLifecycleConfig,
+    updateNotebookInstance_instanceMetadataServiceConfiguration,
+    updateNotebookInstance_instanceType,
+    updateNotebookInstance_lifecycleConfigName,
+    updateNotebookInstance_roleArn,
+    updateNotebookInstance_rootAccess,
+    updateNotebookInstance_volumeSizeInGB,
+    updateNotebookInstance_notebookInstanceName,
+
+    -- * Destructuring the Response
+    UpdateNotebookInstanceResponse (..),
+    newUpdateNotebookInstanceResponse,
+
+    -- * Response Lenses
+    updateNotebookInstanceResponse_httpStatus,
+  )
+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:/ 'newUpdateNotebookInstance' smart constructor.
+data UpdateNotebookInstance = UpdateNotebookInstance'
+  { -- | A list of the Elastic Inference (EI) instance types to associate with
+    -- this notebook instance. Currently only one EI instance type can be
+    -- associated with a notebook instance. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+    acceleratorTypes :: Prelude.Maybe [NotebookInstanceAcceleratorType],
+    -- | An array of up to three Git repositories to associate with the notebook
+    -- instance. These can be either the names of Git repositories stored as
+    -- resources in your account, or the URL of Git repositories in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. These repositories are cloned at the
+    -- same level as the default repository of your notebook instance. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    additionalCodeRepositories :: Prelude.Maybe [Prelude.Text],
+    -- | The Git repository to associate with the notebook instance as its
+    -- default code repository. This can be either the name of a Git repository
+    -- stored as a resource in your account, or the URL of a Git repository in
+    -- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+    -- or in any other Git repository. When you open a notebook instance, it
+    -- opens in the directory that contains this repository. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+    defaultCodeRepository :: Prelude.Maybe Prelude.Text,
+    -- | A list of the Elastic Inference (EI) instance types to remove from this
+    -- notebook instance. This operation is idempotent. If you specify an
+    -- accelerator type that is not associated with the notebook instance when
+    -- you call this method, it does not throw an error.
+    disassociateAcceleratorTypes :: Prelude.Maybe Prelude.Bool,
+    -- | A list of names or URLs of the default Git repositories to remove from
+    -- this notebook instance. This operation is idempotent. If you specify a
+    -- Git repository that is not associated with the notebook instance when
+    -- you call this method, it does not throw an error.
+    disassociateAdditionalCodeRepositories :: Prelude.Maybe Prelude.Bool,
+    -- | The name or URL of the default Git repository to remove from this
+    -- notebook instance. This operation is idempotent. If you specify a Git
+    -- repository that is not associated with the notebook instance when you
+    -- call this method, it does not throw an error.
+    disassociateDefaultCodeRepository :: Prelude.Maybe Prelude.Bool,
+    -- | Set to @true@ to remove the notebook instance lifecycle configuration
+    -- currently associated with the notebook instance. This operation is
+    -- idempotent. If you specify a lifecycle configuration that is not
+    -- associated with the notebook instance when you call this method, it does
+    -- not throw an error.
+    disassociateLifecycleConfig :: Prelude.Maybe Prelude.Bool,
+    -- | Information on the IMDS configuration of the notebook instance
+    instanceMetadataServiceConfiguration :: Prelude.Maybe InstanceMetadataServiceConfiguration,
+    -- | The Amazon ML compute instance type.
+    instanceType :: Prelude.Maybe InstanceType,
+    -- | The name of a lifecycle configuration to associate with the notebook
+    -- instance. For information about lifestyle configurations, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+    lifecycleConfigName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume
+    -- to access the notebook instance. For more information, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+    --
+    -- To be able to pass this role to SageMaker, the caller of this API must
+    -- have the @iam:PassRole@ permission.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Whether root access is enabled or disabled for users of the notebook
+    -- instance. The default value is @Enabled@.
+    --
+    -- If you set this to @Disabled@, users don\'t have root access on the
+    -- notebook instance, but lifecycle configuration scripts still run with
+    -- root permissions.
+    rootAccess :: Prelude.Maybe RootAccess,
+    -- | The size, in GB, of the ML storage volume to attach to the notebook
+    -- instance. The default value is 5 GB. ML storage volumes are encrypted,
+    -- so SageMaker can\'t determine the amount of available free space on the
+    -- volume. Because of this, you can increase the volume size when you
+    -- update a notebook instance, but you can\'t decrease the volume size. If
+    -- you want to decrease the size of the ML storage volume in use, create a
+    -- new notebook instance with the desired size.
+    volumeSizeInGB :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the notebook instance to update.
+    notebookInstanceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNotebookInstance' 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:
+--
+-- 'acceleratorTypes', 'updateNotebookInstance_acceleratorTypes' - A list of the Elastic Inference (EI) instance types to associate with
+-- this notebook instance. Currently only one EI instance type can be
+-- associated with a notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+--
+-- 'additionalCodeRepositories', 'updateNotebookInstance_additionalCodeRepositories' - An array of up to three Git repositories to associate with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'defaultCodeRepository', 'updateNotebookInstance_defaultCodeRepository' - The Git repository to associate with the notebook instance as its
+-- default code repository. This can be either the name of a Git repository
+-- stored as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+--
+-- 'disassociateAcceleratorTypes', 'updateNotebookInstance_disassociateAcceleratorTypes' - A list of the Elastic Inference (EI) instance types to remove from this
+-- notebook instance. This operation is idempotent. If you specify an
+-- accelerator type that is not associated with the notebook instance when
+-- you call this method, it does not throw an error.
+--
+-- 'disassociateAdditionalCodeRepositories', 'updateNotebookInstance_disassociateAdditionalCodeRepositories' - A list of names or URLs of the default Git repositories to remove from
+-- this notebook instance. This operation is idempotent. If you specify a
+-- Git repository that is not associated with the notebook instance when
+-- you call this method, it does not throw an error.
+--
+-- 'disassociateDefaultCodeRepository', 'updateNotebookInstance_disassociateDefaultCodeRepository' - The name or URL of the default Git repository to remove from this
+-- notebook instance. This operation is idempotent. If you specify a Git
+-- repository that is not associated with the notebook instance when you
+-- call this method, it does not throw an error.
+--
+-- 'disassociateLifecycleConfig', 'updateNotebookInstance_disassociateLifecycleConfig' - Set to @true@ to remove the notebook instance lifecycle configuration
+-- currently associated with the notebook instance. This operation is
+-- idempotent. If you specify a lifecycle configuration that is not
+-- associated with the notebook instance when you call this method, it does
+-- not throw an error.
+--
+-- 'instanceMetadataServiceConfiguration', 'updateNotebookInstance_instanceMetadataServiceConfiguration' - Information on the IMDS configuration of the notebook instance
+--
+-- 'instanceType', 'updateNotebookInstance_instanceType' - The Amazon ML compute instance type.
+--
+-- 'lifecycleConfigName', 'updateNotebookInstance_lifecycleConfigName' - The name of a lifecycle configuration to associate with the notebook
+-- instance. For information about lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+--
+-- 'roleArn', 'updateNotebookInstance_roleArn' - The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume
+-- to access the notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+--
+-- 'rootAccess', 'updateNotebookInstance_rootAccess' - Whether root access is enabled or disabled for users of the notebook
+-- instance. The default value is @Enabled@.
+--
+-- If you set this to @Disabled@, users don\'t have root access on the
+-- notebook instance, but lifecycle configuration scripts still run with
+-- root permissions.
+--
+-- 'volumeSizeInGB', 'updateNotebookInstance_volumeSizeInGB' - The size, in GB, of the ML storage volume to attach to the notebook
+-- instance. The default value is 5 GB. ML storage volumes are encrypted,
+-- so SageMaker can\'t determine the amount of available free space on the
+-- volume. Because of this, you can increase the volume size when you
+-- update a notebook instance, but you can\'t decrease the volume size. If
+-- you want to decrease the size of the ML storage volume in use, create a
+-- new notebook instance with the desired size.
+--
+-- 'notebookInstanceName', 'updateNotebookInstance_notebookInstanceName' - The name of the notebook instance to update.
+newUpdateNotebookInstance ::
+  -- | 'notebookInstanceName'
+  Prelude.Text ->
+  UpdateNotebookInstance
+newUpdateNotebookInstance pNotebookInstanceName_ =
+  UpdateNotebookInstance'
+    { acceleratorTypes =
+        Prelude.Nothing,
+      additionalCodeRepositories = Prelude.Nothing,
+      defaultCodeRepository = Prelude.Nothing,
+      disassociateAcceleratorTypes = Prelude.Nothing,
+      disassociateAdditionalCodeRepositories =
+        Prelude.Nothing,
+      disassociateDefaultCodeRepository = Prelude.Nothing,
+      disassociateLifecycleConfig = Prelude.Nothing,
+      instanceMetadataServiceConfiguration =
+        Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      lifecycleConfigName = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      rootAccess = Prelude.Nothing,
+      volumeSizeInGB = Prelude.Nothing,
+      notebookInstanceName = pNotebookInstanceName_
+    }
+
+-- | A list of the Elastic Inference (EI) instance types to associate with
+-- this notebook instance. Currently only one EI instance type can be
+-- associated with a notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html Using Elastic Inference in Amazon SageMaker>.
+updateNotebookInstance_acceleratorTypes :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe [NotebookInstanceAcceleratorType])
+updateNotebookInstance_acceleratorTypes = Lens.lens (\UpdateNotebookInstance' {acceleratorTypes} -> acceleratorTypes) (\s@UpdateNotebookInstance' {} a -> s {acceleratorTypes = a} :: UpdateNotebookInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | An array of up to three Git repositories to associate with the notebook
+-- instance. These can be either the names of Git repositories stored as
+-- resources in your account, or the URL of Git repositories in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. These repositories are cloned at the
+-- same level as the default repository of your notebook instance. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+updateNotebookInstance_additionalCodeRepositories :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe [Prelude.Text])
+updateNotebookInstance_additionalCodeRepositories = Lens.lens (\UpdateNotebookInstance' {additionalCodeRepositories} -> additionalCodeRepositories) (\s@UpdateNotebookInstance' {} a -> s {additionalCodeRepositories = a} :: UpdateNotebookInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Git repository to associate with the notebook instance as its
+-- default code repository. This can be either the name of a Git repository
+-- stored as a resource in your account, or the URL of a Git repository in
+-- <https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html Amazon Web Services CodeCommit>
+-- or in any other Git repository. When you open a notebook instance, it
+-- opens in the directory that contains this repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html Associating Git Repositories with SageMaker Notebook Instances>.
+updateNotebookInstance_defaultCodeRepository :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Text)
+updateNotebookInstance_defaultCodeRepository = Lens.lens (\UpdateNotebookInstance' {defaultCodeRepository} -> defaultCodeRepository) (\s@UpdateNotebookInstance' {} a -> s {defaultCodeRepository = a} :: UpdateNotebookInstance)
+
+-- | A list of the Elastic Inference (EI) instance types to remove from this
+-- notebook instance. This operation is idempotent. If you specify an
+-- accelerator type that is not associated with the notebook instance when
+-- you call this method, it does not throw an error.
+updateNotebookInstance_disassociateAcceleratorTypes :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Bool)
+updateNotebookInstance_disassociateAcceleratorTypes = Lens.lens (\UpdateNotebookInstance' {disassociateAcceleratorTypes} -> disassociateAcceleratorTypes) (\s@UpdateNotebookInstance' {} a -> s {disassociateAcceleratorTypes = a} :: UpdateNotebookInstance)
+
+-- | A list of names or URLs of the default Git repositories to remove from
+-- this notebook instance. This operation is idempotent. If you specify a
+-- Git repository that is not associated with the notebook instance when
+-- you call this method, it does not throw an error.
+updateNotebookInstance_disassociateAdditionalCodeRepositories :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Bool)
+updateNotebookInstance_disassociateAdditionalCodeRepositories = Lens.lens (\UpdateNotebookInstance' {disassociateAdditionalCodeRepositories} -> disassociateAdditionalCodeRepositories) (\s@UpdateNotebookInstance' {} a -> s {disassociateAdditionalCodeRepositories = a} :: UpdateNotebookInstance)
+
+-- | The name or URL of the default Git repository to remove from this
+-- notebook instance. This operation is idempotent. If you specify a Git
+-- repository that is not associated with the notebook instance when you
+-- call this method, it does not throw an error.
+updateNotebookInstance_disassociateDefaultCodeRepository :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Bool)
+updateNotebookInstance_disassociateDefaultCodeRepository = Lens.lens (\UpdateNotebookInstance' {disassociateDefaultCodeRepository} -> disassociateDefaultCodeRepository) (\s@UpdateNotebookInstance' {} a -> s {disassociateDefaultCodeRepository = a} :: UpdateNotebookInstance)
+
+-- | Set to @true@ to remove the notebook instance lifecycle configuration
+-- currently associated with the notebook instance. This operation is
+-- idempotent. If you specify a lifecycle configuration that is not
+-- associated with the notebook instance when you call this method, it does
+-- not throw an error.
+updateNotebookInstance_disassociateLifecycleConfig :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Bool)
+updateNotebookInstance_disassociateLifecycleConfig = Lens.lens (\UpdateNotebookInstance' {disassociateLifecycleConfig} -> disassociateLifecycleConfig) (\s@UpdateNotebookInstance' {} a -> s {disassociateLifecycleConfig = a} :: UpdateNotebookInstance)
+
+-- | Information on the IMDS configuration of the notebook instance
+updateNotebookInstance_instanceMetadataServiceConfiguration :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe InstanceMetadataServiceConfiguration)
+updateNotebookInstance_instanceMetadataServiceConfiguration = Lens.lens (\UpdateNotebookInstance' {instanceMetadataServiceConfiguration} -> instanceMetadataServiceConfiguration) (\s@UpdateNotebookInstance' {} a -> s {instanceMetadataServiceConfiguration = a} :: UpdateNotebookInstance)
+
+-- | The Amazon ML compute instance type.
+updateNotebookInstance_instanceType :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe InstanceType)
+updateNotebookInstance_instanceType = Lens.lens (\UpdateNotebookInstance' {instanceType} -> instanceType) (\s@UpdateNotebookInstance' {} a -> s {instanceType = a} :: UpdateNotebookInstance)
+
+-- | The name of a lifecycle configuration to associate with the notebook
+-- instance. For information about lifestyle configurations, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html Step 2.1: (Optional) Customize a Notebook Instance>.
+updateNotebookInstance_lifecycleConfigName :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Text)
+updateNotebookInstance_lifecycleConfigName = Lens.lens (\UpdateNotebookInstance' {lifecycleConfigName} -> lifecycleConfigName) (\s@UpdateNotebookInstance' {} a -> s {lifecycleConfigName = a} :: UpdateNotebookInstance)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume
+-- to access the notebook instance. For more information, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html SageMaker Roles>.
+--
+-- To be able to pass this role to SageMaker, the caller of this API must
+-- have the @iam:PassRole@ permission.
+updateNotebookInstance_roleArn :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Text)
+updateNotebookInstance_roleArn = Lens.lens (\UpdateNotebookInstance' {roleArn} -> roleArn) (\s@UpdateNotebookInstance' {} a -> s {roleArn = a} :: UpdateNotebookInstance)
+
+-- | Whether root access is enabled or disabled for users of the notebook
+-- instance. The default value is @Enabled@.
+--
+-- If you set this to @Disabled@, users don\'t have root access on the
+-- notebook instance, but lifecycle configuration scripts still run with
+-- root permissions.
+updateNotebookInstance_rootAccess :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe RootAccess)
+updateNotebookInstance_rootAccess = Lens.lens (\UpdateNotebookInstance' {rootAccess} -> rootAccess) (\s@UpdateNotebookInstance' {} a -> s {rootAccess = a} :: UpdateNotebookInstance)
+
+-- | The size, in GB, of the ML storage volume to attach to the notebook
+-- instance. The default value is 5 GB. ML storage volumes are encrypted,
+-- so SageMaker can\'t determine the amount of available free space on the
+-- volume. Because of this, you can increase the volume size when you
+-- update a notebook instance, but you can\'t decrease the volume size. If
+-- you want to decrease the size of the ML storage volume in use, create a
+-- new notebook instance with the desired size.
+updateNotebookInstance_volumeSizeInGB :: Lens.Lens' UpdateNotebookInstance (Prelude.Maybe Prelude.Natural)
+updateNotebookInstance_volumeSizeInGB = Lens.lens (\UpdateNotebookInstance' {volumeSizeInGB} -> volumeSizeInGB) (\s@UpdateNotebookInstance' {} a -> s {volumeSizeInGB = a} :: UpdateNotebookInstance)
+
+-- | The name of the notebook instance to update.
+updateNotebookInstance_notebookInstanceName :: Lens.Lens' UpdateNotebookInstance Prelude.Text
+updateNotebookInstance_notebookInstanceName = Lens.lens (\UpdateNotebookInstance' {notebookInstanceName} -> notebookInstanceName) (\s@UpdateNotebookInstance' {} a -> s {notebookInstanceName = a} :: UpdateNotebookInstance)
+
+instance Core.AWSRequest UpdateNotebookInstance where
+  type
+    AWSResponse UpdateNotebookInstance =
+      UpdateNotebookInstanceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateNotebookInstanceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateNotebookInstance where
+  hashWithSalt _salt UpdateNotebookInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` acceleratorTypes
+      `Prelude.hashWithSalt` additionalCodeRepositories
+      `Prelude.hashWithSalt` defaultCodeRepository
+      `Prelude.hashWithSalt` disassociateAcceleratorTypes
+      `Prelude.hashWithSalt` disassociateAdditionalCodeRepositories
+      `Prelude.hashWithSalt` disassociateDefaultCodeRepository
+      `Prelude.hashWithSalt` disassociateLifecycleConfig
+      `Prelude.hashWithSalt` instanceMetadataServiceConfiguration
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` lifecycleConfigName
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` rootAccess
+      `Prelude.hashWithSalt` volumeSizeInGB
+      `Prelude.hashWithSalt` notebookInstanceName
+
+instance Prelude.NFData UpdateNotebookInstance where
+  rnf UpdateNotebookInstance' {..} =
+    Prelude.rnf acceleratorTypes
+      `Prelude.seq` Prelude.rnf additionalCodeRepositories
+      `Prelude.seq` Prelude.rnf defaultCodeRepository
+      `Prelude.seq` Prelude.rnf disassociateAcceleratorTypes
+      `Prelude.seq` Prelude.rnf disassociateAdditionalCodeRepositories
+      `Prelude.seq` Prelude.rnf disassociateDefaultCodeRepository
+      `Prelude.seq` Prelude.rnf disassociateLifecycleConfig
+      `Prelude.seq` Prelude.rnf instanceMetadataServiceConfiguration
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf lifecycleConfigName
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf rootAccess
+      `Prelude.seq` Prelude.rnf volumeSizeInGB
+      `Prelude.seq` Prelude.rnf notebookInstanceName
+
+instance Data.ToHeaders UpdateNotebookInstance where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateNotebookInstance" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateNotebookInstance where
+  toJSON UpdateNotebookInstance' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AcceleratorTypes" Data..=)
+              Prelude.<$> acceleratorTypes,
+            ("AdditionalCodeRepositories" Data..=)
+              Prelude.<$> additionalCodeRepositories,
+            ("DefaultCodeRepository" Data..=)
+              Prelude.<$> defaultCodeRepository,
+            ("DisassociateAcceleratorTypes" Data..=)
+              Prelude.<$> disassociateAcceleratorTypes,
+            ("DisassociateAdditionalCodeRepositories" Data..=)
+              Prelude.<$> disassociateAdditionalCodeRepositories,
+            ("DisassociateDefaultCodeRepository" Data..=)
+              Prelude.<$> disassociateDefaultCodeRepository,
+            ("DisassociateLifecycleConfig" Data..=)
+              Prelude.<$> disassociateLifecycleConfig,
+            ("InstanceMetadataServiceConfiguration" Data..=)
+              Prelude.<$> instanceMetadataServiceConfiguration,
+            ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("LifecycleConfigName" Data..=)
+              Prelude.<$> lifecycleConfigName,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            ("RootAccess" Data..=) Prelude.<$> rootAccess,
+            ("VolumeSizeInGB" Data..=)
+              Prelude.<$> volumeSizeInGB,
+            Prelude.Just
+              ( "NotebookInstanceName"
+                  Data..= notebookInstanceName
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateNotebookInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateNotebookInstance where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateNotebookInstanceResponse' smart constructor.
+data UpdateNotebookInstanceResponse = UpdateNotebookInstanceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNotebookInstanceResponse' 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', 'updateNotebookInstanceResponse_httpStatus' - The response's http status code.
+newUpdateNotebookInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateNotebookInstanceResponse
+newUpdateNotebookInstanceResponse pHttpStatus_ =
+  UpdateNotebookInstanceResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateNotebookInstanceResponse_httpStatus :: Lens.Lens' UpdateNotebookInstanceResponse Prelude.Int
+updateNotebookInstanceResponse_httpStatus = Lens.lens (\UpdateNotebookInstanceResponse' {httpStatus} -> httpStatus) (\s@UpdateNotebookInstanceResponse' {} a -> s {httpStatus = a} :: UpdateNotebookInstanceResponse)
+
+instance
+  Prelude.NFData
+    UpdateNotebookInstanceResponse
+  where
+  rnf UpdateNotebookInstanceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateNotebookInstanceLifecycleConfig.hs b/gen/Amazonka/SageMaker/UpdateNotebookInstanceLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateNotebookInstanceLifecycleConfig.hs
@@ -0,0 +1,232 @@
+{-# 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.UpdateNotebookInstanceLifecycleConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a notebook instance lifecycle configuration created with the
+-- CreateNotebookInstanceLifecycleConfig API.
+module Amazonka.SageMaker.UpdateNotebookInstanceLifecycleConfig
+  ( -- * Creating a Request
+    UpdateNotebookInstanceLifecycleConfig (..),
+    newUpdateNotebookInstanceLifecycleConfig,
+
+    -- * Request Lenses
+    updateNotebookInstanceLifecycleConfig_onCreate,
+    updateNotebookInstanceLifecycleConfig_onStart,
+    updateNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName,
+
+    -- * Destructuring the Response
+    UpdateNotebookInstanceLifecycleConfigResponse (..),
+    newUpdateNotebookInstanceLifecycleConfigResponse,
+
+    -- * Response Lenses
+    updateNotebookInstanceLifecycleConfigResponse_httpStatus,
+  )
+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:/ 'newUpdateNotebookInstanceLifecycleConfig' smart constructor.
+data UpdateNotebookInstanceLifecycleConfig = UpdateNotebookInstanceLifecycleConfig'
+  { -- | The shell script that runs only once, when you create a notebook
+    -- instance. The shell script must be a base64-encoded string.
+    onCreate :: Prelude.Maybe [NotebookInstanceLifecycleHook],
+    -- | The shell script that runs every time you start a notebook instance,
+    -- including when you create the notebook instance. The shell script must
+    -- be a base64-encoded string.
+    onStart :: Prelude.Maybe [NotebookInstanceLifecycleHook],
+    -- | The name of the lifecycle configuration.
+    notebookInstanceLifecycleConfigName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNotebookInstanceLifecycleConfig' 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:
+--
+-- 'onCreate', 'updateNotebookInstanceLifecycleConfig_onCreate' - The shell script that runs only once, when you create a notebook
+-- instance. The shell script must be a base64-encoded string.
+--
+-- 'onStart', 'updateNotebookInstanceLifecycleConfig_onStart' - The shell script that runs every time you start a notebook instance,
+-- including when you create the notebook instance. The shell script must
+-- be a base64-encoded string.
+--
+-- 'notebookInstanceLifecycleConfigName', 'updateNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
+newUpdateNotebookInstanceLifecycleConfig ::
+  -- | 'notebookInstanceLifecycleConfigName'
+  Prelude.Text ->
+  UpdateNotebookInstanceLifecycleConfig
+newUpdateNotebookInstanceLifecycleConfig
+  pNotebookInstanceLifecycleConfigName_ =
+    UpdateNotebookInstanceLifecycleConfig'
+      { onCreate =
+          Prelude.Nothing,
+        onStart = Prelude.Nothing,
+        notebookInstanceLifecycleConfigName =
+          pNotebookInstanceLifecycleConfigName_
+      }
+
+-- | The shell script that runs only once, when you create a notebook
+-- instance. The shell script must be a base64-encoded string.
+updateNotebookInstanceLifecycleConfig_onCreate :: Lens.Lens' UpdateNotebookInstanceLifecycleConfig (Prelude.Maybe [NotebookInstanceLifecycleHook])
+updateNotebookInstanceLifecycleConfig_onCreate = Lens.lens (\UpdateNotebookInstanceLifecycleConfig' {onCreate} -> onCreate) (\s@UpdateNotebookInstanceLifecycleConfig' {} a -> s {onCreate = a} :: UpdateNotebookInstanceLifecycleConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The shell script that runs every time you start a notebook instance,
+-- including when you create the notebook instance. The shell script must
+-- be a base64-encoded string.
+updateNotebookInstanceLifecycleConfig_onStart :: Lens.Lens' UpdateNotebookInstanceLifecycleConfig (Prelude.Maybe [NotebookInstanceLifecycleHook])
+updateNotebookInstanceLifecycleConfig_onStart = Lens.lens (\UpdateNotebookInstanceLifecycleConfig' {onStart} -> onStart) (\s@UpdateNotebookInstanceLifecycleConfig' {} a -> s {onStart = a} :: UpdateNotebookInstanceLifecycleConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the lifecycle configuration.
+updateNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName :: Lens.Lens' UpdateNotebookInstanceLifecycleConfig Prelude.Text
+updateNotebookInstanceLifecycleConfig_notebookInstanceLifecycleConfigName = Lens.lens (\UpdateNotebookInstanceLifecycleConfig' {notebookInstanceLifecycleConfigName} -> notebookInstanceLifecycleConfigName) (\s@UpdateNotebookInstanceLifecycleConfig' {} a -> s {notebookInstanceLifecycleConfigName = a} :: UpdateNotebookInstanceLifecycleConfig)
+
+instance
+  Core.AWSRequest
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  type
+    AWSResponse
+      UpdateNotebookInstanceLifecycleConfig =
+      UpdateNotebookInstanceLifecycleConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateNotebookInstanceLifecycleConfigResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateNotebookInstanceLifecycleConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` onCreate
+        `Prelude.hashWithSalt` onStart
+        `Prelude.hashWithSalt` notebookInstanceLifecycleConfigName
+
+instance
+  Prelude.NFData
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  rnf UpdateNotebookInstanceLifecycleConfig' {..} =
+    Prelude.rnf onCreate
+      `Prelude.seq` Prelude.rnf onStart
+      `Prelude.seq` Prelude.rnf notebookInstanceLifecycleConfigName
+
+instance
+  Data.ToHeaders
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateNotebookInstanceLifecycleConfig" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  toJSON UpdateNotebookInstanceLifecycleConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OnCreate" Data..=) Prelude.<$> onCreate,
+            ("OnStart" Data..=) Prelude.<$> onStart,
+            Prelude.Just
+              ( "NotebookInstanceLifecycleConfigName"
+                  Data..= notebookInstanceLifecycleConfigName
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateNotebookInstanceLifecycleConfig
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateNotebookInstanceLifecycleConfigResponse' smart constructor.
+data UpdateNotebookInstanceLifecycleConfigResponse = UpdateNotebookInstanceLifecycleConfigResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNotebookInstanceLifecycleConfigResponse' 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', 'updateNotebookInstanceLifecycleConfigResponse_httpStatus' - The response's http status code.
+newUpdateNotebookInstanceLifecycleConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateNotebookInstanceLifecycleConfigResponse
+newUpdateNotebookInstanceLifecycleConfigResponse
+  pHttpStatus_ =
+    UpdateNotebookInstanceLifecycleConfigResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+updateNotebookInstanceLifecycleConfigResponse_httpStatus :: Lens.Lens' UpdateNotebookInstanceLifecycleConfigResponse Prelude.Int
+updateNotebookInstanceLifecycleConfigResponse_httpStatus = Lens.lens (\UpdateNotebookInstanceLifecycleConfigResponse' {httpStatus} -> httpStatus) (\s@UpdateNotebookInstanceLifecycleConfigResponse' {} a -> s {httpStatus = a} :: UpdateNotebookInstanceLifecycleConfigResponse)
+
+instance
+  Prelude.NFData
+    UpdateNotebookInstanceLifecycleConfigResponse
+  where
+  rnf
+    UpdateNotebookInstanceLifecycleConfigResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdatePipeline.hs b/gen/Amazonka/SageMaker/UpdatePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdatePipeline.hs
@@ -0,0 +1,261 @@
+{-# 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.UpdatePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a pipeline.
+module Amazonka.SageMaker.UpdatePipeline
+  ( -- * Creating a Request
+    UpdatePipeline (..),
+    newUpdatePipeline,
+
+    -- * Request Lenses
+    updatePipeline_parallelismConfiguration,
+    updatePipeline_pipelineDefinition,
+    updatePipeline_pipelineDefinitionS3Location,
+    updatePipeline_pipelineDescription,
+    updatePipeline_pipelineDisplayName,
+    updatePipeline_roleArn,
+    updatePipeline_pipelineName,
+
+    -- * Destructuring the Response
+    UpdatePipelineResponse (..),
+    newUpdatePipelineResponse,
+
+    -- * Response Lenses
+    updatePipelineResponse_pipelineArn,
+    updatePipelineResponse_httpStatus,
+  )
+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:/ 'newUpdatePipeline' smart constructor.
+data UpdatePipeline = UpdatePipeline'
+  { -- | If specified, it applies to all executions of this pipeline by default.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The JSON pipeline definition.
+    pipelineDefinition :: Prelude.Maybe Prelude.Text,
+    -- | The location of the pipeline definition stored in Amazon S3. If
+    -- specified, SageMaker will retrieve the pipeline definition from this
+    -- location.
+    pipelineDefinitionS3Location :: Prelude.Maybe PipelineDefinitionS3Location,
+    -- | The description of the pipeline.
+    pipelineDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline.
+    pipelineDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) that the pipeline uses to execute.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the pipeline to update.
+    pipelineName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeline' 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:
+--
+-- 'parallelismConfiguration', 'updatePipeline_parallelismConfiguration' - If specified, it applies to all executions of this pipeline by default.
+--
+-- 'pipelineDefinition', 'updatePipeline_pipelineDefinition' - The JSON pipeline definition.
+--
+-- 'pipelineDefinitionS3Location', 'updatePipeline_pipelineDefinitionS3Location' - The location of the pipeline definition stored in Amazon S3. If
+-- specified, SageMaker will retrieve the pipeline definition from this
+-- location.
+--
+-- 'pipelineDescription', 'updatePipeline_pipelineDescription' - The description of the pipeline.
+--
+-- 'pipelineDisplayName', 'updatePipeline_pipelineDisplayName' - The display name of the pipeline.
+--
+-- 'roleArn', 'updatePipeline_roleArn' - The Amazon Resource Name (ARN) that the pipeline uses to execute.
+--
+-- 'pipelineName', 'updatePipeline_pipelineName' - The name of the pipeline to update.
+newUpdatePipeline ::
+  -- | 'pipelineName'
+  Prelude.Text ->
+  UpdatePipeline
+newUpdatePipeline pPipelineName_ =
+  UpdatePipeline'
+    { parallelismConfiguration =
+        Prelude.Nothing,
+      pipelineDefinition = Prelude.Nothing,
+      pipelineDefinitionS3Location = Prelude.Nothing,
+      pipelineDescription = Prelude.Nothing,
+      pipelineDisplayName = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      pipelineName = pPipelineName_
+    }
+
+-- | If specified, it applies to all executions of this pipeline by default.
+updatePipeline_parallelismConfiguration :: Lens.Lens' UpdatePipeline (Prelude.Maybe ParallelismConfiguration)
+updatePipeline_parallelismConfiguration = Lens.lens (\UpdatePipeline' {parallelismConfiguration} -> parallelismConfiguration) (\s@UpdatePipeline' {} a -> s {parallelismConfiguration = a} :: UpdatePipeline)
+
+-- | The JSON pipeline definition.
+updatePipeline_pipelineDefinition :: Lens.Lens' UpdatePipeline (Prelude.Maybe Prelude.Text)
+updatePipeline_pipelineDefinition = Lens.lens (\UpdatePipeline' {pipelineDefinition} -> pipelineDefinition) (\s@UpdatePipeline' {} a -> s {pipelineDefinition = a} :: UpdatePipeline)
+
+-- | The location of the pipeline definition stored in Amazon S3. If
+-- specified, SageMaker will retrieve the pipeline definition from this
+-- location.
+updatePipeline_pipelineDefinitionS3Location :: Lens.Lens' UpdatePipeline (Prelude.Maybe PipelineDefinitionS3Location)
+updatePipeline_pipelineDefinitionS3Location = Lens.lens (\UpdatePipeline' {pipelineDefinitionS3Location} -> pipelineDefinitionS3Location) (\s@UpdatePipeline' {} a -> s {pipelineDefinitionS3Location = a} :: UpdatePipeline)
+
+-- | The description of the pipeline.
+updatePipeline_pipelineDescription :: Lens.Lens' UpdatePipeline (Prelude.Maybe Prelude.Text)
+updatePipeline_pipelineDescription = Lens.lens (\UpdatePipeline' {pipelineDescription} -> pipelineDescription) (\s@UpdatePipeline' {} a -> s {pipelineDescription = a} :: UpdatePipeline)
+
+-- | The display name of the pipeline.
+updatePipeline_pipelineDisplayName :: Lens.Lens' UpdatePipeline (Prelude.Maybe Prelude.Text)
+updatePipeline_pipelineDisplayName = Lens.lens (\UpdatePipeline' {pipelineDisplayName} -> pipelineDisplayName) (\s@UpdatePipeline' {} a -> s {pipelineDisplayName = a} :: UpdatePipeline)
+
+-- | The Amazon Resource Name (ARN) that the pipeline uses to execute.
+updatePipeline_roleArn :: Lens.Lens' UpdatePipeline (Prelude.Maybe Prelude.Text)
+updatePipeline_roleArn = Lens.lens (\UpdatePipeline' {roleArn} -> roleArn) (\s@UpdatePipeline' {} a -> s {roleArn = a} :: UpdatePipeline)
+
+-- | The name of the pipeline to update.
+updatePipeline_pipelineName :: Lens.Lens' UpdatePipeline Prelude.Text
+updatePipeline_pipelineName = Lens.lens (\UpdatePipeline' {pipelineName} -> pipelineName) (\s@UpdatePipeline' {} a -> s {pipelineName = a} :: UpdatePipeline)
+
+instance Core.AWSRequest UpdatePipeline where
+  type
+    AWSResponse UpdatePipeline =
+      UpdatePipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePipelineResponse'
+            Prelude.<$> (x Data..?> "PipelineArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePipeline where
+  hashWithSalt _salt UpdatePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineDefinition
+      `Prelude.hashWithSalt` pipelineDefinitionS3Location
+      `Prelude.hashWithSalt` pipelineDescription
+      `Prelude.hashWithSalt` pipelineDisplayName
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` pipelineName
+
+instance Prelude.NFData UpdatePipeline where
+  rnf UpdatePipeline' {..} =
+    Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineDefinition
+      `Prelude.seq` Prelude.rnf pipelineDefinitionS3Location
+      `Prelude.seq` Prelude.rnf pipelineDescription
+      `Prelude.seq` Prelude.rnf pipelineDisplayName
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf pipelineName
+
+instance Data.ToHeaders UpdatePipeline where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdatePipeline" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePipeline where
+  toJSON UpdatePipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ParallelismConfiguration" Data..=)
+              Prelude.<$> parallelismConfiguration,
+            ("PipelineDefinition" Data..=)
+              Prelude.<$> pipelineDefinition,
+            ("PipelineDefinitionS3Location" Data..=)
+              Prelude.<$> pipelineDefinitionS3Location,
+            ("PipelineDescription" Data..=)
+              Prelude.<$> pipelineDescription,
+            ("PipelineDisplayName" Data..=)
+              Prelude.<$> pipelineDisplayName,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            Prelude.Just ("PipelineName" Data..= pipelineName)
+          ]
+      )
+
+instance Data.ToPath UpdatePipeline where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdatePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePipelineResponse' smart constructor.
+data UpdatePipelineResponse = UpdatePipelineResponse'
+  { -- | The Amazon Resource Name (ARN) of the updated pipeline.
+    pipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipelineResponse' 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:
+--
+-- 'pipelineArn', 'updatePipelineResponse_pipelineArn' - The Amazon Resource Name (ARN) of the updated pipeline.
+--
+-- 'httpStatus', 'updatePipelineResponse_httpStatus' - The response's http status code.
+newUpdatePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePipelineResponse
+newUpdatePipelineResponse pHttpStatus_ =
+  UpdatePipelineResponse'
+    { pipelineArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the updated pipeline.
+updatePipelineResponse_pipelineArn :: Lens.Lens' UpdatePipelineResponse (Prelude.Maybe Prelude.Text)
+updatePipelineResponse_pipelineArn = Lens.lens (\UpdatePipelineResponse' {pipelineArn} -> pipelineArn) (\s@UpdatePipelineResponse' {} a -> s {pipelineArn = a} :: UpdatePipelineResponse)
+
+-- | The response's http status code.
+updatePipelineResponse_httpStatus :: Lens.Lens' UpdatePipelineResponse Prelude.Int
+updatePipelineResponse_httpStatus = Lens.lens (\UpdatePipelineResponse' {httpStatus} -> httpStatus) (\s@UpdatePipelineResponse' {} a -> s {httpStatus = a} :: UpdatePipelineResponse)
+
+instance Prelude.NFData UpdatePipelineResponse where
+  rnf UpdatePipelineResponse' {..} =
+    Prelude.rnf pipelineArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdatePipelineExecution.hs b/gen/Amazonka/SageMaker/UpdatePipelineExecution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdatePipelineExecution.hs
@@ -0,0 +1,225 @@
+{-# 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.UpdatePipelineExecution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a pipeline execution.
+module Amazonka.SageMaker.UpdatePipelineExecution
+  ( -- * Creating a Request
+    UpdatePipelineExecution (..),
+    newUpdatePipelineExecution,
+
+    -- * Request Lenses
+    updatePipelineExecution_parallelismConfiguration,
+    updatePipelineExecution_pipelineExecutionDescription,
+    updatePipelineExecution_pipelineExecutionDisplayName,
+    updatePipelineExecution_pipelineExecutionArn,
+
+    -- * Destructuring the Response
+    UpdatePipelineExecutionResponse (..),
+    newUpdatePipelineExecutionResponse,
+
+    -- * Response Lenses
+    updatePipelineExecutionResponse_pipelineExecutionArn,
+    updatePipelineExecutionResponse_httpStatus,
+  )
+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:/ 'newUpdatePipelineExecution' smart constructor.
+data UpdatePipelineExecution = UpdatePipelineExecution'
+  { -- | This configuration, if specified, overrides the parallelism
+    -- configuration of the parent pipeline for this specific run.
+    parallelismConfiguration :: Prelude.Maybe ParallelismConfiguration,
+    -- | The description of the pipeline execution.
+    pipelineExecutionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The display name of the pipeline execution.
+    pipelineExecutionDisplayName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pipeline execution.
+    pipelineExecutionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipelineExecution' 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:
+--
+-- 'parallelismConfiguration', 'updatePipelineExecution_parallelismConfiguration' - This configuration, if specified, overrides the parallelism
+-- configuration of the parent pipeline for this specific run.
+--
+-- 'pipelineExecutionDescription', 'updatePipelineExecution_pipelineExecutionDescription' - The description of the pipeline execution.
+--
+-- 'pipelineExecutionDisplayName', 'updatePipelineExecution_pipelineExecutionDisplayName' - The display name of the pipeline execution.
+--
+-- 'pipelineExecutionArn', 'updatePipelineExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
+newUpdatePipelineExecution ::
+  -- | 'pipelineExecutionArn'
+  Prelude.Text ->
+  UpdatePipelineExecution
+newUpdatePipelineExecution pPipelineExecutionArn_ =
+  UpdatePipelineExecution'
+    { parallelismConfiguration =
+        Prelude.Nothing,
+      pipelineExecutionDescription = Prelude.Nothing,
+      pipelineExecutionDisplayName = Prelude.Nothing,
+      pipelineExecutionArn = pPipelineExecutionArn_
+    }
+
+-- | This configuration, if specified, overrides the parallelism
+-- configuration of the parent pipeline for this specific run.
+updatePipelineExecution_parallelismConfiguration :: Lens.Lens' UpdatePipelineExecution (Prelude.Maybe ParallelismConfiguration)
+updatePipelineExecution_parallelismConfiguration = Lens.lens (\UpdatePipelineExecution' {parallelismConfiguration} -> parallelismConfiguration) (\s@UpdatePipelineExecution' {} a -> s {parallelismConfiguration = a} :: UpdatePipelineExecution)
+
+-- | The description of the pipeline execution.
+updatePipelineExecution_pipelineExecutionDescription :: Lens.Lens' UpdatePipelineExecution (Prelude.Maybe Prelude.Text)
+updatePipelineExecution_pipelineExecutionDescription = Lens.lens (\UpdatePipelineExecution' {pipelineExecutionDescription} -> pipelineExecutionDescription) (\s@UpdatePipelineExecution' {} a -> s {pipelineExecutionDescription = a} :: UpdatePipelineExecution)
+
+-- | The display name of the pipeline execution.
+updatePipelineExecution_pipelineExecutionDisplayName :: Lens.Lens' UpdatePipelineExecution (Prelude.Maybe Prelude.Text)
+updatePipelineExecution_pipelineExecutionDisplayName = Lens.lens (\UpdatePipelineExecution' {pipelineExecutionDisplayName} -> pipelineExecutionDisplayName) (\s@UpdatePipelineExecution' {} a -> s {pipelineExecutionDisplayName = a} :: UpdatePipelineExecution)
+
+-- | The Amazon Resource Name (ARN) of the pipeline execution.
+updatePipelineExecution_pipelineExecutionArn :: Lens.Lens' UpdatePipelineExecution Prelude.Text
+updatePipelineExecution_pipelineExecutionArn = Lens.lens (\UpdatePipelineExecution' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@UpdatePipelineExecution' {} a -> s {pipelineExecutionArn = a} :: UpdatePipelineExecution)
+
+instance Core.AWSRequest UpdatePipelineExecution where
+  type
+    AWSResponse UpdatePipelineExecution =
+      UpdatePipelineExecutionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePipelineExecutionResponse'
+            Prelude.<$> (x Data..?> "PipelineExecutionArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePipelineExecution where
+  hashWithSalt _salt UpdatePipelineExecution' {..} =
+    _salt
+      `Prelude.hashWithSalt` parallelismConfiguration
+      `Prelude.hashWithSalt` pipelineExecutionDescription
+      `Prelude.hashWithSalt` pipelineExecutionDisplayName
+      `Prelude.hashWithSalt` pipelineExecutionArn
+
+instance Prelude.NFData UpdatePipelineExecution where
+  rnf UpdatePipelineExecution' {..} =
+    Prelude.rnf parallelismConfiguration
+      `Prelude.seq` Prelude.rnf pipelineExecutionDescription
+      `Prelude.seq` Prelude.rnf pipelineExecutionDisplayName
+      `Prelude.seq` Prelude.rnf pipelineExecutionArn
+
+instance Data.ToHeaders UpdatePipelineExecution where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdatePipelineExecution" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePipelineExecution where
+  toJSON UpdatePipelineExecution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ParallelismConfiguration" Data..=)
+              Prelude.<$> parallelismConfiguration,
+            ("PipelineExecutionDescription" Data..=)
+              Prelude.<$> pipelineExecutionDescription,
+            ("PipelineExecutionDisplayName" Data..=)
+              Prelude.<$> pipelineExecutionDisplayName,
+            Prelude.Just
+              ( "PipelineExecutionArn"
+                  Data..= pipelineExecutionArn
+              )
+          ]
+      )
+
+instance Data.ToPath UpdatePipelineExecution where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdatePipelineExecution where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePipelineExecutionResponse' smart constructor.
+data UpdatePipelineExecutionResponse = UpdatePipelineExecutionResponse'
+  { -- | The Amazon Resource Name (ARN) of the updated pipeline execution.
+    pipelineExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipelineExecutionResponse' 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:
+--
+-- 'pipelineExecutionArn', 'updatePipelineExecutionResponse_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the updated pipeline execution.
+--
+-- 'httpStatus', 'updatePipelineExecutionResponse_httpStatus' - The response's http status code.
+newUpdatePipelineExecutionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePipelineExecutionResponse
+newUpdatePipelineExecutionResponse pHttpStatus_ =
+  UpdatePipelineExecutionResponse'
+    { pipelineExecutionArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the updated pipeline execution.
+updatePipelineExecutionResponse_pipelineExecutionArn :: Lens.Lens' UpdatePipelineExecutionResponse (Prelude.Maybe Prelude.Text)
+updatePipelineExecutionResponse_pipelineExecutionArn = Lens.lens (\UpdatePipelineExecutionResponse' {pipelineExecutionArn} -> pipelineExecutionArn) (\s@UpdatePipelineExecutionResponse' {} a -> s {pipelineExecutionArn = a} :: UpdatePipelineExecutionResponse)
+
+-- | The response's http status code.
+updatePipelineExecutionResponse_httpStatus :: Lens.Lens' UpdatePipelineExecutionResponse Prelude.Int
+updatePipelineExecutionResponse_httpStatus = Lens.lens (\UpdatePipelineExecutionResponse' {httpStatus} -> httpStatus) (\s@UpdatePipelineExecutionResponse' {} a -> s {httpStatus = a} :: UpdatePipelineExecutionResponse)
+
+instance
+  Prelude.NFData
+    UpdatePipelineExecutionResponse
+  where
+  rnf UpdatePipelineExecutionResponse' {..} =
+    Prelude.rnf pipelineExecutionArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateProject.hs b/gen/Amazonka/SageMaker/UpdateProject.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateProject.hs
@@ -0,0 +1,252 @@
+{-# 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.UpdateProject
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a machine learning (ML) project that is created from a template
+-- that sets up an ML pipeline from training to deploying an approved
+-- model.
+--
+-- You must not update a project that is in use. If you update the
+-- @ServiceCatalogProvisioningUpdateDetails@ of a project that is active or
+-- being created, or updated, you may lose resources already created by the
+-- project.
+module Amazonka.SageMaker.UpdateProject
+  ( -- * Creating a Request
+    UpdateProject (..),
+    newUpdateProject,
+
+    -- * Request Lenses
+    updateProject_projectDescription,
+    updateProject_serviceCatalogProvisioningUpdateDetails,
+    updateProject_tags,
+    updateProject_projectName,
+
+    -- * Destructuring the Response
+    UpdateProjectResponse (..),
+    newUpdateProjectResponse,
+
+    -- * Response Lenses
+    updateProjectResponse_httpStatus,
+    updateProjectResponse_projectArn,
+  )
+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:/ 'newUpdateProject' smart constructor.
+data UpdateProject = UpdateProject'
+  { -- | The description for the project.
+    projectDescription :: Prelude.Maybe Prelude.Text,
+    -- | The product ID and provisioning artifact ID to provision a service
+    -- catalog. The provisioning artifact ID will default to the latest
+    -- provisioning artifact ID of the product, if you don\'t provide the
+    -- provisioning artifact ID. For more information, see
+    -- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+    serviceCatalogProvisioningUpdateDetails :: Prelude.Maybe ServiceCatalogProvisioningUpdateDetails,
+    -- | An array of key-value pairs. You can use tags to categorize your Amazon
+    -- Web Services resources in different ways, for example, by purpose,
+    -- owner, or environment. For more information, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+    -- In addition, the project must have tag update constraints set in order
+    -- to include this parameter in the request. For more information, see
+    -- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-resourceupdate.html Amazon Web Services Service Catalog Tag Update Constraints>.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the project.
+    projectName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateProject' 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:
+--
+-- 'projectDescription', 'updateProject_projectDescription' - The description for the project.
+--
+-- 'serviceCatalogProvisioningUpdateDetails', 'updateProject_serviceCatalogProvisioningUpdateDetails' - The product ID and provisioning artifact ID to provision a service
+-- catalog. The provisioning artifact ID will default to the latest
+-- provisioning artifact ID of the product, if you don\'t provide the
+-- provisioning artifact ID. For more information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+--
+-- 'tags', 'updateProject_tags' - An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+-- In addition, the project must have tag update constraints set in order
+-- to include this parameter in the request. For more information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-resourceupdate.html Amazon Web Services Service Catalog Tag Update Constraints>.
+--
+-- 'projectName', 'updateProject_projectName' - The name of the project.
+newUpdateProject ::
+  -- | 'projectName'
+  Prelude.Text ->
+  UpdateProject
+newUpdateProject pProjectName_ =
+  UpdateProject'
+    { projectDescription =
+        Prelude.Nothing,
+      serviceCatalogProvisioningUpdateDetails =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      projectName = pProjectName_
+    }
+
+-- | The description for the project.
+updateProject_projectDescription :: Lens.Lens' UpdateProject (Prelude.Maybe Prelude.Text)
+updateProject_projectDescription = Lens.lens (\UpdateProject' {projectDescription} -> projectDescription) (\s@UpdateProject' {} a -> s {projectDescription = a} :: UpdateProject)
+
+-- | The product ID and provisioning artifact ID to provision a service
+-- catalog. The provisioning artifact ID will default to the latest
+-- provisioning artifact ID of the product, if you don\'t provide the
+-- provisioning artifact ID. For more information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html What is Amazon Web Services Service Catalog>.
+updateProject_serviceCatalogProvisioningUpdateDetails :: Lens.Lens' UpdateProject (Prelude.Maybe ServiceCatalogProvisioningUpdateDetails)
+updateProject_serviceCatalogProvisioningUpdateDetails = Lens.lens (\UpdateProject' {serviceCatalogProvisioningUpdateDetails} -> serviceCatalogProvisioningUpdateDetails) (\s@UpdateProject' {} a -> s {serviceCatalogProvisioningUpdateDetails = a} :: UpdateProject)
+
+-- | An array of key-value pairs. You can use tags to categorize your Amazon
+-- Web Services resources in different ways, for example, by purpose,
+-- owner, or environment. For more information, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
+-- In addition, the project must have tag update constraints set in order
+-- to include this parameter in the request. For more information, see
+-- <https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-resourceupdate.html Amazon Web Services Service Catalog Tag Update Constraints>.
+updateProject_tags :: Lens.Lens' UpdateProject (Prelude.Maybe [Tag])
+updateProject_tags = Lens.lens (\UpdateProject' {tags} -> tags) (\s@UpdateProject' {} a -> s {tags = a} :: UpdateProject) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the project.
+updateProject_projectName :: Lens.Lens' UpdateProject Prelude.Text
+updateProject_projectName = Lens.lens (\UpdateProject' {projectName} -> projectName) (\s@UpdateProject' {} a -> s {projectName = a} :: UpdateProject)
+
+instance Core.AWSRequest UpdateProject where
+  type
+    AWSResponse UpdateProject =
+      UpdateProjectResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateProjectResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProjectArn")
+      )
+
+instance Prelude.Hashable UpdateProject where
+  hashWithSalt _salt UpdateProject' {..} =
+    _salt
+      `Prelude.hashWithSalt` projectDescription
+      `Prelude.hashWithSalt` serviceCatalogProvisioningUpdateDetails
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` projectName
+
+instance Prelude.NFData UpdateProject where
+  rnf UpdateProject' {..} =
+    Prelude.rnf projectDescription
+      `Prelude.seq` Prelude.rnf serviceCatalogProvisioningUpdateDetails
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf projectName
+
+instance Data.ToHeaders UpdateProject where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateProject" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateProject where
+  toJSON UpdateProject' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ProjectDescription" Data..=)
+              Prelude.<$> projectDescription,
+            ("ServiceCatalogProvisioningUpdateDetails" Data..=)
+              Prelude.<$> serviceCatalogProvisioningUpdateDetails,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ProjectName" Data..= projectName)
+          ]
+      )
+
+instance Data.ToPath UpdateProject where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateProject where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateProjectResponse' smart constructor.
+data UpdateProjectResponse = UpdateProjectResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the project.
+    projectArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateProjectResponse' 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', 'updateProjectResponse_httpStatus' - The response's http status code.
+--
+-- 'projectArn', 'updateProjectResponse_projectArn' - The Amazon Resource Name (ARN) of the project.
+newUpdateProjectResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'projectArn'
+  Prelude.Text ->
+  UpdateProjectResponse
+newUpdateProjectResponse pHttpStatus_ pProjectArn_ =
+  UpdateProjectResponse'
+    { httpStatus = pHttpStatus_,
+      projectArn = pProjectArn_
+    }
+
+-- | The response's http status code.
+updateProjectResponse_httpStatus :: Lens.Lens' UpdateProjectResponse Prelude.Int
+updateProjectResponse_httpStatus = Lens.lens (\UpdateProjectResponse' {httpStatus} -> httpStatus) (\s@UpdateProjectResponse' {} a -> s {httpStatus = a} :: UpdateProjectResponse)
+
+-- | The Amazon Resource Name (ARN) of the project.
+updateProjectResponse_projectArn :: Lens.Lens' UpdateProjectResponse Prelude.Text
+updateProjectResponse_projectArn = Lens.lens (\UpdateProjectResponse' {projectArn} -> projectArn) (\s@UpdateProjectResponse' {} a -> s {projectArn = a} :: UpdateProjectResponse)
+
+instance Prelude.NFData UpdateProjectResponse where
+  rnf UpdateProjectResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf projectArn
diff --git a/gen/Amazonka/SageMaker/UpdateSpace.hs b/gen/Amazonka/SageMaker/UpdateSpace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateSpace.hs
@@ -0,0 +1,196 @@
+{-# 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.UpdateSpace
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings of a space.
+module Amazonka.SageMaker.UpdateSpace
+  ( -- * Creating a Request
+    UpdateSpace (..),
+    newUpdateSpace,
+
+    -- * Request Lenses
+    updateSpace_spaceSettings,
+    updateSpace_domainId,
+    updateSpace_spaceName,
+
+    -- * Destructuring the Response
+    UpdateSpaceResponse (..),
+    newUpdateSpaceResponse,
+
+    -- * Response Lenses
+    updateSpaceResponse_spaceArn,
+    updateSpaceResponse_httpStatus,
+  )
+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:/ 'newUpdateSpace' smart constructor.
+data UpdateSpace = UpdateSpace'
+  { -- | A collection of space settings.
+    spaceSettings :: Prelude.Maybe SpaceSettings,
+    -- | The ID of the associated Domain.
+    domainId :: Prelude.Text,
+    -- | The name of the space.
+    spaceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSpace' 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:
+--
+-- 'spaceSettings', 'updateSpace_spaceSettings' - A collection of space settings.
+--
+-- 'domainId', 'updateSpace_domainId' - The ID of the associated Domain.
+--
+-- 'spaceName', 'updateSpace_spaceName' - The name of the space.
+newUpdateSpace ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'spaceName'
+  Prelude.Text ->
+  UpdateSpace
+newUpdateSpace pDomainId_ pSpaceName_ =
+  UpdateSpace'
+    { spaceSettings = Prelude.Nothing,
+      domainId = pDomainId_,
+      spaceName = pSpaceName_
+    }
+
+-- | A collection of space settings.
+updateSpace_spaceSettings :: Lens.Lens' UpdateSpace (Prelude.Maybe SpaceSettings)
+updateSpace_spaceSettings = Lens.lens (\UpdateSpace' {spaceSettings} -> spaceSettings) (\s@UpdateSpace' {} a -> s {spaceSettings = a} :: UpdateSpace)
+
+-- | The ID of the associated Domain.
+updateSpace_domainId :: Lens.Lens' UpdateSpace Prelude.Text
+updateSpace_domainId = Lens.lens (\UpdateSpace' {domainId} -> domainId) (\s@UpdateSpace' {} a -> s {domainId = a} :: UpdateSpace)
+
+-- | The name of the space.
+updateSpace_spaceName :: Lens.Lens' UpdateSpace Prelude.Text
+updateSpace_spaceName = Lens.lens (\UpdateSpace' {spaceName} -> spaceName) (\s@UpdateSpace' {} a -> s {spaceName = a} :: UpdateSpace)
+
+instance Core.AWSRequest UpdateSpace where
+  type AWSResponse UpdateSpace = UpdateSpaceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSpaceResponse'
+            Prelude.<$> (x Data..?> "SpaceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSpace where
+  hashWithSalt _salt UpdateSpace' {..} =
+    _salt
+      `Prelude.hashWithSalt` spaceSettings
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` spaceName
+
+instance Prelude.NFData UpdateSpace where
+  rnf UpdateSpace' {..} =
+    Prelude.rnf spaceSettings
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf spaceName
+
+instance Data.ToHeaders UpdateSpace where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateSpace" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSpace where
+  toJSON UpdateSpace' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SpaceSettings" Data..=) Prelude.<$> spaceSettings,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just ("SpaceName" Data..= spaceName)
+          ]
+      )
+
+instance Data.ToPath UpdateSpace where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateSpace where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSpaceResponse' smart constructor.
+data UpdateSpaceResponse = UpdateSpaceResponse'
+  { -- | The space\'s Amazon Resource Name (ARN).
+    spaceArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSpaceResponse' 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:
+--
+-- 'spaceArn', 'updateSpaceResponse_spaceArn' - The space\'s Amazon Resource Name (ARN).
+--
+-- 'httpStatus', 'updateSpaceResponse_httpStatus' - The response's http status code.
+newUpdateSpaceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSpaceResponse
+newUpdateSpaceResponse pHttpStatus_ =
+  UpdateSpaceResponse'
+    { spaceArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The space\'s Amazon Resource Name (ARN).
+updateSpaceResponse_spaceArn :: Lens.Lens' UpdateSpaceResponse (Prelude.Maybe Prelude.Text)
+updateSpaceResponse_spaceArn = Lens.lens (\UpdateSpaceResponse' {spaceArn} -> spaceArn) (\s@UpdateSpaceResponse' {} a -> s {spaceArn = a} :: UpdateSpaceResponse)
+
+-- | The response's http status code.
+updateSpaceResponse_httpStatus :: Lens.Lens' UpdateSpaceResponse Prelude.Int
+updateSpaceResponse_httpStatus = Lens.lens (\UpdateSpaceResponse' {httpStatus} -> httpStatus) (\s@UpdateSpaceResponse' {} a -> s {httpStatus = a} :: UpdateSpaceResponse)
+
+instance Prelude.NFData UpdateSpaceResponse where
+  rnf UpdateSpaceResponse' {..} =
+    Prelude.rnf spaceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateTrainingJob.hs b/gen/Amazonka/SageMaker/UpdateTrainingJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateTrainingJob.hs
@@ -0,0 +1,231 @@
+{-# 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.UpdateTrainingJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a model training job to request a new Debugger profiling
+-- configuration or to change warm pool retention length.
+module Amazonka.SageMaker.UpdateTrainingJob
+  ( -- * Creating a Request
+    UpdateTrainingJob (..),
+    newUpdateTrainingJob,
+
+    -- * Request Lenses
+    updateTrainingJob_profilerConfig,
+    updateTrainingJob_profilerRuleConfigurations,
+    updateTrainingJob_resourceConfig,
+    updateTrainingJob_trainingJobName,
+
+    -- * Destructuring the Response
+    UpdateTrainingJobResponse (..),
+    newUpdateTrainingJobResponse,
+
+    -- * Response Lenses
+    updateTrainingJobResponse_httpStatus,
+    updateTrainingJobResponse_trainingJobArn,
+  )
+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:/ 'newUpdateTrainingJob' smart constructor.
+data UpdateTrainingJob = UpdateTrainingJob'
+  { -- | Configuration information for Amazon SageMaker Debugger system
+    -- monitoring, framework profiling, and storage paths.
+    profilerConfig :: Prelude.Maybe ProfilerConfigForUpdate,
+    -- | Configuration information for Amazon SageMaker Debugger rules for
+    -- profiling system and framework metrics.
+    profilerRuleConfigurations :: Prelude.Maybe [ProfilerRuleConfiguration],
+    -- | The training job @ResourceConfig@ to update warm pool retention length.
+    resourceConfig :: Prelude.Maybe ResourceConfigForUpdate,
+    -- | The name of a training job to update the Debugger profiling
+    -- configuration.
+    trainingJobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTrainingJob' 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:
+--
+-- 'profilerConfig', 'updateTrainingJob_profilerConfig' - Configuration information for Amazon SageMaker Debugger system
+-- monitoring, framework profiling, and storage paths.
+--
+-- 'profilerRuleConfigurations', 'updateTrainingJob_profilerRuleConfigurations' - Configuration information for Amazon SageMaker Debugger rules for
+-- profiling system and framework metrics.
+--
+-- 'resourceConfig', 'updateTrainingJob_resourceConfig' - The training job @ResourceConfig@ to update warm pool retention length.
+--
+-- 'trainingJobName', 'updateTrainingJob_trainingJobName' - The name of a training job to update the Debugger profiling
+-- configuration.
+newUpdateTrainingJob ::
+  -- | 'trainingJobName'
+  Prelude.Text ->
+  UpdateTrainingJob
+newUpdateTrainingJob pTrainingJobName_ =
+  UpdateTrainingJob'
+    { profilerConfig =
+        Prelude.Nothing,
+      profilerRuleConfigurations = Prelude.Nothing,
+      resourceConfig = Prelude.Nothing,
+      trainingJobName = pTrainingJobName_
+    }
+
+-- | Configuration information for Amazon SageMaker Debugger system
+-- monitoring, framework profiling, and storage paths.
+updateTrainingJob_profilerConfig :: Lens.Lens' UpdateTrainingJob (Prelude.Maybe ProfilerConfigForUpdate)
+updateTrainingJob_profilerConfig = Lens.lens (\UpdateTrainingJob' {profilerConfig} -> profilerConfig) (\s@UpdateTrainingJob' {} a -> s {profilerConfig = a} :: UpdateTrainingJob)
+
+-- | Configuration information for Amazon SageMaker Debugger rules for
+-- profiling system and framework metrics.
+updateTrainingJob_profilerRuleConfigurations :: Lens.Lens' UpdateTrainingJob (Prelude.Maybe [ProfilerRuleConfiguration])
+updateTrainingJob_profilerRuleConfigurations = Lens.lens (\UpdateTrainingJob' {profilerRuleConfigurations} -> profilerRuleConfigurations) (\s@UpdateTrainingJob' {} a -> s {profilerRuleConfigurations = a} :: UpdateTrainingJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The training job @ResourceConfig@ to update warm pool retention length.
+updateTrainingJob_resourceConfig :: Lens.Lens' UpdateTrainingJob (Prelude.Maybe ResourceConfigForUpdate)
+updateTrainingJob_resourceConfig = Lens.lens (\UpdateTrainingJob' {resourceConfig} -> resourceConfig) (\s@UpdateTrainingJob' {} a -> s {resourceConfig = a} :: UpdateTrainingJob)
+
+-- | The name of a training job to update the Debugger profiling
+-- configuration.
+updateTrainingJob_trainingJobName :: Lens.Lens' UpdateTrainingJob Prelude.Text
+updateTrainingJob_trainingJobName = Lens.lens (\UpdateTrainingJob' {trainingJobName} -> trainingJobName) (\s@UpdateTrainingJob' {} a -> s {trainingJobName = a} :: UpdateTrainingJob)
+
+instance Core.AWSRequest UpdateTrainingJob where
+  type
+    AWSResponse UpdateTrainingJob =
+      UpdateTrainingJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateTrainingJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "TrainingJobArn")
+      )
+
+instance Prelude.Hashable UpdateTrainingJob where
+  hashWithSalt _salt UpdateTrainingJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` profilerConfig
+      `Prelude.hashWithSalt` profilerRuleConfigurations
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` trainingJobName
+
+instance Prelude.NFData UpdateTrainingJob where
+  rnf UpdateTrainingJob' {..} =
+    Prelude.rnf profilerConfig
+      `Prelude.seq` Prelude.rnf profilerRuleConfigurations
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf trainingJobName
+
+instance Data.ToHeaders UpdateTrainingJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateTrainingJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTrainingJob where
+  toJSON UpdateTrainingJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ProfilerConfig" Data..=)
+              Prelude.<$> profilerConfig,
+            ("ProfilerRuleConfigurations" Data..=)
+              Prelude.<$> profilerRuleConfigurations,
+            ("ResourceConfig" Data..=)
+              Prelude.<$> resourceConfig,
+            Prelude.Just
+              ("TrainingJobName" Data..= trainingJobName)
+          ]
+      )
+
+instance Data.ToPath UpdateTrainingJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateTrainingJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTrainingJobResponse' smart constructor.
+data UpdateTrainingJobResponse = UpdateTrainingJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the training job.
+    trainingJobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTrainingJobResponse' 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', 'updateTrainingJobResponse_httpStatus' - The response's http status code.
+--
+-- 'trainingJobArn', 'updateTrainingJobResponse_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
+newUpdateTrainingJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'trainingJobArn'
+  Prelude.Text ->
+  UpdateTrainingJobResponse
+newUpdateTrainingJobResponse
+  pHttpStatus_
+  pTrainingJobArn_ =
+    UpdateTrainingJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        trainingJobArn = pTrainingJobArn_
+      }
+
+-- | The response's http status code.
+updateTrainingJobResponse_httpStatus :: Lens.Lens' UpdateTrainingJobResponse Prelude.Int
+updateTrainingJobResponse_httpStatus = Lens.lens (\UpdateTrainingJobResponse' {httpStatus} -> httpStatus) (\s@UpdateTrainingJobResponse' {} a -> s {httpStatus = a} :: UpdateTrainingJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the training job.
+updateTrainingJobResponse_trainingJobArn :: Lens.Lens' UpdateTrainingJobResponse Prelude.Text
+updateTrainingJobResponse_trainingJobArn = Lens.lens (\UpdateTrainingJobResponse' {trainingJobArn} -> trainingJobArn) (\s@UpdateTrainingJobResponse' {} a -> s {trainingJobArn = a} :: UpdateTrainingJobResponse)
+
+instance Prelude.NFData UpdateTrainingJobResponse where
+  rnf UpdateTrainingJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf trainingJobArn
diff --git a/gen/Amazonka/SageMaker/UpdateTrial.hs b/gen/Amazonka/SageMaker/UpdateTrial.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateTrial.hs
@@ -0,0 +1,184 @@
+{-# 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.UpdateTrial
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the display name of a trial.
+module Amazonka.SageMaker.UpdateTrial
+  ( -- * Creating a Request
+    UpdateTrial (..),
+    newUpdateTrial,
+
+    -- * Request Lenses
+    updateTrial_displayName,
+    updateTrial_trialName,
+
+    -- * Destructuring the Response
+    UpdateTrialResponse (..),
+    newUpdateTrialResponse,
+
+    -- * Response Lenses
+    updateTrialResponse_trialArn,
+    updateTrialResponse_httpStatus,
+  )
+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:/ 'newUpdateTrial' smart constructor.
+data UpdateTrial = UpdateTrial'
+  { -- | The name of the trial as displayed. The name doesn\'t need to be unique.
+    -- If @DisplayName@ isn\'t specified, @TrialName@ is displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the trial to update.
+    trialName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTrial' 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:
+--
+-- 'displayName', 'updateTrial_displayName' - The name of the trial as displayed. The name doesn\'t need to be unique.
+-- If @DisplayName@ isn\'t specified, @TrialName@ is displayed.
+--
+-- 'trialName', 'updateTrial_trialName' - The name of the trial to update.
+newUpdateTrial ::
+  -- | 'trialName'
+  Prelude.Text ->
+  UpdateTrial
+newUpdateTrial pTrialName_ =
+  UpdateTrial'
+    { displayName = Prelude.Nothing,
+      trialName = pTrialName_
+    }
+
+-- | The name of the trial as displayed. The name doesn\'t need to be unique.
+-- If @DisplayName@ isn\'t specified, @TrialName@ is displayed.
+updateTrial_displayName :: Lens.Lens' UpdateTrial (Prelude.Maybe Prelude.Text)
+updateTrial_displayName = Lens.lens (\UpdateTrial' {displayName} -> displayName) (\s@UpdateTrial' {} a -> s {displayName = a} :: UpdateTrial)
+
+-- | The name of the trial to update.
+updateTrial_trialName :: Lens.Lens' UpdateTrial Prelude.Text
+updateTrial_trialName = Lens.lens (\UpdateTrial' {trialName} -> trialName) (\s@UpdateTrial' {} a -> s {trialName = a} :: UpdateTrial)
+
+instance Core.AWSRequest UpdateTrial where
+  type AWSResponse UpdateTrial = UpdateTrialResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateTrialResponse'
+            Prelude.<$> (x Data..?> "TrialArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTrial where
+  hashWithSalt _salt UpdateTrial' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` trialName
+
+instance Prelude.NFData UpdateTrial where
+  rnf UpdateTrial' {..} =
+    Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf trialName
+
+instance Data.ToHeaders UpdateTrial where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateTrial" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTrial where
+  toJSON UpdateTrial' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayName" Data..=) Prelude.<$> displayName,
+            Prelude.Just ("TrialName" Data..= trialName)
+          ]
+      )
+
+instance Data.ToPath UpdateTrial where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateTrial where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTrialResponse' smart constructor.
+data UpdateTrialResponse = UpdateTrialResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial.
+    trialArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTrialResponse' 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:
+--
+-- 'trialArn', 'updateTrialResponse_trialArn' - The Amazon Resource Name (ARN) of the trial.
+--
+-- 'httpStatus', 'updateTrialResponse_httpStatus' - The response's http status code.
+newUpdateTrialResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateTrialResponse
+newUpdateTrialResponse pHttpStatus_ =
+  UpdateTrialResponse'
+    { trialArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial.
+updateTrialResponse_trialArn :: Lens.Lens' UpdateTrialResponse (Prelude.Maybe Prelude.Text)
+updateTrialResponse_trialArn = Lens.lens (\UpdateTrialResponse' {trialArn} -> trialArn) (\s@UpdateTrialResponse' {} a -> s {trialArn = a} :: UpdateTrialResponse)
+
+-- | The response's http status code.
+updateTrialResponse_httpStatus :: Lens.Lens' UpdateTrialResponse Prelude.Int
+updateTrialResponse_httpStatus = Lens.lens (\UpdateTrialResponse' {httpStatus} -> httpStatus) (\s@UpdateTrialResponse' {} a -> s {httpStatus = a} :: UpdateTrialResponse)
+
+instance Prelude.NFData UpdateTrialResponse where
+  rnf UpdateTrialResponse' {..} =
+    Prelude.rnf trialArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateTrialComponent.hs b/gen/Amazonka/SageMaker/UpdateTrialComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateTrialComponent.hs
@@ -0,0 +1,325 @@
+{-# 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.UpdateTrialComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates one or more properties of a trial component.
+module Amazonka.SageMaker.UpdateTrialComponent
+  ( -- * Creating a Request
+    UpdateTrialComponent (..),
+    newUpdateTrialComponent,
+
+    -- * Request Lenses
+    updateTrialComponent_displayName,
+    updateTrialComponent_endTime,
+    updateTrialComponent_inputArtifacts,
+    updateTrialComponent_inputArtifactsToRemove,
+    updateTrialComponent_outputArtifacts,
+    updateTrialComponent_outputArtifactsToRemove,
+    updateTrialComponent_parameters,
+    updateTrialComponent_parametersToRemove,
+    updateTrialComponent_startTime,
+    updateTrialComponent_status,
+    updateTrialComponent_trialComponentName,
+
+    -- * Destructuring the Response
+    UpdateTrialComponentResponse (..),
+    newUpdateTrialComponentResponse,
+
+    -- * Response Lenses
+    updateTrialComponentResponse_trialComponentArn,
+    updateTrialComponentResponse_httpStatus,
+  )
+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:/ 'newUpdateTrialComponent' smart constructor.
+data UpdateTrialComponent = UpdateTrialComponent'
+  { -- | The name of the component as displayed. The name doesn\'t need to be
+    -- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
+    -- displayed.
+    displayName :: Prelude.Maybe Prelude.Text,
+    -- | When the component ended.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Replaces all of the component\'s input artifacts with the specified
+    -- artifacts.
+    inputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    -- | The input artifacts to remove from the component.
+    inputArtifactsToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | Replaces all of the component\'s output artifacts with the specified
+    -- artifacts.
+    outputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
+    -- | The output artifacts to remove from the component.
+    outputArtifactsToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | Replaces all of the component\'s hyperparameters with the specified
+    -- hyperparameters.
+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue),
+    -- | The hyperparameters to remove from the component.
+    parametersToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | When the component started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The new status of the component.
+    status :: Prelude.Maybe TrialComponentStatus,
+    -- | The name of the component to update.
+    trialComponentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTrialComponent' 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:
+--
+-- 'displayName', 'updateTrialComponent_displayName' - The name of the component as displayed. The name doesn\'t need to be
+-- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
+-- displayed.
+--
+-- 'endTime', 'updateTrialComponent_endTime' - When the component ended.
+--
+-- 'inputArtifacts', 'updateTrialComponent_inputArtifacts' - Replaces all of the component\'s input artifacts with the specified
+-- artifacts.
+--
+-- 'inputArtifactsToRemove', 'updateTrialComponent_inputArtifactsToRemove' - The input artifacts to remove from the component.
+--
+-- 'outputArtifacts', 'updateTrialComponent_outputArtifacts' - Replaces all of the component\'s output artifacts with the specified
+-- artifacts.
+--
+-- 'outputArtifactsToRemove', 'updateTrialComponent_outputArtifactsToRemove' - The output artifacts to remove from the component.
+--
+-- 'parameters', 'updateTrialComponent_parameters' - Replaces all of the component\'s hyperparameters with the specified
+-- hyperparameters.
+--
+-- 'parametersToRemove', 'updateTrialComponent_parametersToRemove' - The hyperparameters to remove from the component.
+--
+-- 'startTime', 'updateTrialComponent_startTime' - When the component started.
+--
+-- 'status', 'updateTrialComponent_status' - The new status of the component.
+--
+-- 'trialComponentName', 'updateTrialComponent_trialComponentName' - The name of the component to update.
+newUpdateTrialComponent ::
+  -- | 'trialComponentName'
+  Prelude.Text ->
+  UpdateTrialComponent
+newUpdateTrialComponent pTrialComponentName_ =
+  UpdateTrialComponent'
+    { displayName =
+        Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      inputArtifacts = Prelude.Nothing,
+      inputArtifactsToRemove = Prelude.Nothing,
+      outputArtifacts = Prelude.Nothing,
+      outputArtifactsToRemove = Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      parametersToRemove = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      trialComponentName = pTrialComponentName_
+    }
+
+-- | The name of the component as displayed. The name doesn\'t need to be
+-- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
+-- displayed.
+updateTrialComponent_displayName :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe Prelude.Text)
+updateTrialComponent_displayName = Lens.lens (\UpdateTrialComponent' {displayName} -> displayName) (\s@UpdateTrialComponent' {} a -> s {displayName = a} :: UpdateTrialComponent)
+
+-- | When the component ended.
+updateTrialComponent_endTime :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe Prelude.UTCTime)
+updateTrialComponent_endTime = Lens.lens (\UpdateTrialComponent' {endTime} -> endTime) (\s@UpdateTrialComponent' {} a -> s {endTime = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | Replaces all of the component\'s input artifacts with the specified
+-- artifacts.
+updateTrialComponent_inputArtifacts :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+updateTrialComponent_inputArtifacts = Lens.lens (\UpdateTrialComponent' {inputArtifacts} -> inputArtifacts) (\s@UpdateTrialComponent' {} a -> s {inputArtifacts = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The input artifacts to remove from the component.
+updateTrialComponent_inputArtifactsToRemove :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe [Prelude.Text])
+updateTrialComponent_inputArtifactsToRemove = Lens.lens (\UpdateTrialComponent' {inputArtifactsToRemove} -> inputArtifactsToRemove) (\s@UpdateTrialComponent' {} a -> s {inputArtifactsToRemove = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | Replaces all of the component\'s output artifacts with the specified
+-- artifacts.
+updateTrialComponent_outputArtifacts :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
+updateTrialComponent_outputArtifacts = Lens.lens (\UpdateTrialComponent' {outputArtifacts} -> outputArtifacts) (\s@UpdateTrialComponent' {} a -> s {outputArtifacts = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The output artifacts to remove from the component.
+updateTrialComponent_outputArtifactsToRemove :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe [Prelude.Text])
+updateTrialComponent_outputArtifactsToRemove = Lens.lens (\UpdateTrialComponent' {outputArtifactsToRemove} -> outputArtifactsToRemove) (\s@UpdateTrialComponent' {} a -> s {outputArtifactsToRemove = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | Replaces all of the component\'s hyperparameters with the specified
+-- hyperparameters.
+updateTrialComponent_parameters :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue))
+updateTrialComponent_parameters = Lens.lens (\UpdateTrialComponent' {parameters} -> parameters) (\s@UpdateTrialComponent' {} a -> s {parameters = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hyperparameters to remove from the component.
+updateTrialComponent_parametersToRemove :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe [Prelude.Text])
+updateTrialComponent_parametersToRemove = Lens.lens (\UpdateTrialComponent' {parametersToRemove} -> parametersToRemove) (\s@UpdateTrialComponent' {} a -> s {parametersToRemove = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | When the component started.
+updateTrialComponent_startTime :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe Prelude.UTCTime)
+updateTrialComponent_startTime = Lens.lens (\UpdateTrialComponent' {startTime} -> startTime) (\s@UpdateTrialComponent' {} a -> s {startTime = a} :: UpdateTrialComponent) Prelude.. Lens.mapping Data._Time
+
+-- | The new status of the component.
+updateTrialComponent_status :: Lens.Lens' UpdateTrialComponent (Prelude.Maybe TrialComponentStatus)
+updateTrialComponent_status = Lens.lens (\UpdateTrialComponent' {status} -> status) (\s@UpdateTrialComponent' {} a -> s {status = a} :: UpdateTrialComponent)
+
+-- | The name of the component to update.
+updateTrialComponent_trialComponentName :: Lens.Lens' UpdateTrialComponent Prelude.Text
+updateTrialComponent_trialComponentName = Lens.lens (\UpdateTrialComponent' {trialComponentName} -> trialComponentName) (\s@UpdateTrialComponent' {} a -> s {trialComponentName = a} :: UpdateTrialComponent)
+
+instance Core.AWSRequest UpdateTrialComponent where
+  type
+    AWSResponse UpdateTrialComponent =
+      UpdateTrialComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateTrialComponentResponse'
+            Prelude.<$> (x Data..?> "TrialComponentArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTrialComponent where
+  hashWithSalt _salt UpdateTrialComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` displayName
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` inputArtifacts
+      `Prelude.hashWithSalt` inputArtifactsToRemove
+      `Prelude.hashWithSalt` outputArtifacts
+      `Prelude.hashWithSalt` outputArtifactsToRemove
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` parametersToRemove
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` trialComponentName
+
+instance Prelude.NFData UpdateTrialComponent where
+  rnf UpdateTrialComponent' {..} =
+    Prelude.rnf displayName
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf inputArtifacts
+      `Prelude.seq` Prelude.rnf inputArtifactsToRemove
+      `Prelude.seq` Prelude.rnf outputArtifacts
+      `Prelude.seq` Prelude.rnf outputArtifactsToRemove
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf parametersToRemove
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf trialComponentName
+
+instance Data.ToHeaders UpdateTrialComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateTrialComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateTrialComponent where
+  toJSON UpdateTrialComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DisplayName" Data..=) Prelude.<$> displayName,
+            ("EndTime" Data..=) Prelude.<$> endTime,
+            ("InputArtifacts" Data..=)
+              Prelude.<$> inputArtifacts,
+            ("InputArtifactsToRemove" Data..=)
+              Prelude.<$> inputArtifactsToRemove,
+            ("OutputArtifacts" Data..=)
+              Prelude.<$> outputArtifacts,
+            ("OutputArtifactsToRemove" Data..=)
+              Prelude.<$> outputArtifactsToRemove,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("ParametersToRemove" Data..=)
+              Prelude.<$> parametersToRemove,
+            ("StartTime" Data..=) Prelude.<$> startTime,
+            ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just
+              ("TrialComponentName" Data..= trialComponentName)
+          ]
+      )
+
+instance Data.ToPath UpdateTrialComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateTrialComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateTrialComponentResponse' smart constructor.
+data UpdateTrialComponentResponse = UpdateTrialComponentResponse'
+  { -- | The Amazon Resource Name (ARN) of the trial component.
+    trialComponentArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTrialComponentResponse' 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:
+--
+-- 'trialComponentArn', 'updateTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
+--
+-- 'httpStatus', 'updateTrialComponentResponse_httpStatus' - The response's http status code.
+newUpdateTrialComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateTrialComponentResponse
+newUpdateTrialComponentResponse pHttpStatus_ =
+  UpdateTrialComponentResponse'
+    { trialComponentArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the trial component.
+updateTrialComponentResponse_trialComponentArn :: Lens.Lens' UpdateTrialComponentResponse (Prelude.Maybe Prelude.Text)
+updateTrialComponentResponse_trialComponentArn = Lens.lens (\UpdateTrialComponentResponse' {trialComponentArn} -> trialComponentArn) (\s@UpdateTrialComponentResponse' {} a -> s {trialComponentArn = a} :: UpdateTrialComponentResponse)
+
+-- | The response's http status code.
+updateTrialComponentResponse_httpStatus :: Lens.Lens' UpdateTrialComponentResponse Prelude.Int
+updateTrialComponentResponse_httpStatus = Lens.lens (\UpdateTrialComponentResponse' {httpStatus} -> httpStatus) (\s@UpdateTrialComponentResponse' {} a -> s {httpStatus = a} :: UpdateTrialComponentResponse)
+
+instance Prelude.NFData UpdateTrialComponentResponse where
+  rnf UpdateTrialComponentResponse' {..} =
+    Prelude.rnf trialComponentArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateUserProfile.hs b/gen/Amazonka/SageMaker/UpdateUserProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateUserProfile.hs
@@ -0,0 +1,202 @@
+{-# 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.UpdateUserProfile
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a user profile.
+module Amazonka.SageMaker.UpdateUserProfile
+  ( -- * Creating a Request
+    UpdateUserProfile (..),
+    newUpdateUserProfile,
+
+    -- * Request Lenses
+    updateUserProfile_userSettings,
+    updateUserProfile_domainId,
+    updateUserProfile_userProfileName,
+
+    -- * Destructuring the Response
+    UpdateUserProfileResponse (..),
+    newUpdateUserProfileResponse,
+
+    -- * Response Lenses
+    updateUserProfileResponse_userProfileArn,
+    updateUserProfileResponse_httpStatus,
+  )
+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:/ 'newUpdateUserProfile' smart constructor.
+data UpdateUserProfile = UpdateUserProfile'
+  { -- | A collection of settings.
+    userSettings :: Prelude.Maybe UserSettings,
+    -- | The domain ID.
+    domainId :: Prelude.Text,
+    -- | The user profile name.
+    userProfileName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserProfile' 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:
+--
+-- 'userSettings', 'updateUserProfile_userSettings' - A collection of settings.
+--
+-- 'domainId', 'updateUserProfile_domainId' - The domain ID.
+--
+-- 'userProfileName', 'updateUserProfile_userProfileName' - The user profile name.
+newUpdateUserProfile ::
+  -- | 'domainId'
+  Prelude.Text ->
+  -- | 'userProfileName'
+  Prelude.Text ->
+  UpdateUserProfile
+newUpdateUserProfile pDomainId_ pUserProfileName_ =
+  UpdateUserProfile'
+    { userSettings = Prelude.Nothing,
+      domainId = pDomainId_,
+      userProfileName = pUserProfileName_
+    }
+
+-- | A collection of settings.
+updateUserProfile_userSettings :: Lens.Lens' UpdateUserProfile (Prelude.Maybe UserSettings)
+updateUserProfile_userSettings = Lens.lens (\UpdateUserProfile' {userSettings} -> userSettings) (\s@UpdateUserProfile' {} a -> s {userSettings = a} :: UpdateUserProfile)
+
+-- | The domain ID.
+updateUserProfile_domainId :: Lens.Lens' UpdateUserProfile Prelude.Text
+updateUserProfile_domainId = Lens.lens (\UpdateUserProfile' {domainId} -> domainId) (\s@UpdateUserProfile' {} a -> s {domainId = a} :: UpdateUserProfile)
+
+-- | The user profile name.
+updateUserProfile_userProfileName :: Lens.Lens' UpdateUserProfile Prelude.Text
+updateUserProfile_userProfileName = Lens.lens (\UpdateUserProfile' {userProfileName} -> userProfileName) (\s@UpdateUserProfile' {} a -> s {userProfileName = a} :: UpdateUserProfile)
+
+instance Core.AWSRequest UpdateUserProfile where
+  type
+    AWSResponse UpdateUserProfile =
+      UpdateUserProfileResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateUserProfileResponse'
+            Prelude.<$> (x Data..?> "UserProfileArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateUserProfile where
+  hashWithSalt _salt UpdateUserProfile' {..} =
+    _salt
+      `Prelude.hashWithSalt` userSettings
+      `Prelude.hashWithSalt` domainId
+      `Prelude.hashWithSalt` userProfileName
+
+instance Prelude.NFData UpdateUserProfile where
+  rnf UpdateUserProfile' {..} =
+    Prelude.rnf userSettings
+      `Prelude.seq` Prelude.rnf domainId
+      `Prelude.seq` Prelude.rnf userProfileName
+
+instance Data.ToHeaders UpdateUserProfile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "SageMaker.UpdateUserProfile" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateUserProfile where
+  toJSON UpdateUserProfile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("UserSettings" Data..=) Prelude.<$> userSettings,
+            Prelude.Just ("DomainId" Data..= domainId),
+            Prelude.Just
+              ("UserProfileName" Data..= userProfileName)
+          ]
+      )
+
+instance Data.ToPath UpdateUserProfile where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateUserProfile where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateUserProfileResponse' smart constructor.
+data UpdateUserProfileResponse = UpdateUserProfileResponse'
+  { -- | The user profile Amazon Resource Name (ARN).
+    userProfileArn :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserProfileResponse' 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:
+--
+-- 'userProfileArn', 'updateUserProfileResponse_userProfileArn' - The user profile Amazon Resource Name (ARN).
+--
+-- 'httpStatus', 'updateUserProfileResponse_httpStatus' - The response's http status code.
+newUpdateUserProfileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateUserProfileResponse
+newUpdateUserProfileResponse pHttpStatus_ =
+  UpdateUserProfileResponse'
+    { userProfileArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user profile Amazon Resource Name (ARN).
+updateUserProfileResponse_userProfileArn :: Lens.Lens' UpdateUserProfileResponse (Prelude.Maybe Prelude.Text)
+updateUserProfileResponse_userProfileArn = Lens.lens (\UpdateUserProfileResponse' {userProfileArn} -> userProfileArn) (\s@UpdateUserProfileResponse' {} a -> s {userProfileArn = a} :: UpdateUserProfileResponse)
+
+-- | The response's http status code.
+updateUserProfileResponse_httpStatus :: Lens.Lens' UpdateUserProfileResponse Prelude.Int
+updateUserProfileResponse_httpStatus = Lens.lens (\UpdateUserProfileResponse' {httpStatus} -> httpStatus) (\s@UpdateUserProfileResponse' {} a -> s {httpStatus = a} :: UpdateUserProfileResponse)
+
+instance Prelude.NFData UpdateUserProfileResponse where
+  rnf UpdateUserProfileResponse' {..} =
+    Prelude.rnf userProfileArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMaker/UpdateWorkforce.hs b/gen/Amazonka/SageMaker/UpdateWorkforce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateWorkforce.hs
@@ -0,0 +1,277 @@
+{-# 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.UpdateWorkforce
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use this operation to update your workforce. You can use this operation
+-- to require that workers use specific IP addresses to work on tasks and
+-- to update your OpenID Connect (OIDC) Identity Provider (IdP) workforce
+-- configuration.
+--
+-- The worker portal is now supported in VPC and public internet.
+--
+-- Use @SourceIpConfig@ to restrict worker access to tasks to a specific
+-- range of IP addresses. You specify allowed IP addresses by creating a
+-- list of up to ten
+-- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>.
+-- By default, a workforce isn\'t restricted to specific IP addresses. If
+-- you specify a range of IP addresses, workers who attempt to access tasks
+-- using any IP address outside the specified range are denied and get a
+-- @Not Found@ error message on the worker portal.
+--
+-- To restrict access to all the workers in public internet, add the
+-- @SourceIpConfig@ CIDR value as \"0.0.0.0\/0\".
+--
+-- Amazon SageMaker does not support Source Ip restriction for worker
+-- portals in VPC.
+--
+-- Use @OidcConfig@ to update the configuration of a workforce created
+-- using your own OIDC IdP.
+--
+-- You can only update your OIDC IdP configuration when there are no work
+-- teams associated with your workforce. You can delete work teams using
+-- the operation.
+--
+-- After restricting access to a range of IP addresses or updating your
+-- OIDC IdP configuration with this operation, you can view details about
+-- your update workforce using the operation.
+--
+-- This operation only applies to private workforces.
+module Amazonka.SageMaker.UpdateWorkforce
+  ( -- * Creating a Request
+    UpdateWorkforce (..),
+    newUpdateWorkforce,
+
+    -- * Request Lenses
+    updateWorkforce_oidcConfig,
+    updateWorkforce_sourceIpConfig,
+    updateWorkforce_workforceVpcConfig,
+    updateWorkforce_workforceName,
+
+    -- * Destructuring the Response
+    UpdateWorkforceResponse (..),
+    newUpdateWorkforceResponse,
+
+    -- * Response Lenses
+    updateWorkforceResponse_httpStatus,
+    updateWorkforceResponse_workforce,
+  )
+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:/ 'newUpdateWorkforce' smart constructor.
+data UpdateWorkforce = UpdateWorkforce'
+  { -- | Use this parameter to update your OIDC Identity Provider (IdP)
+    -- configuration for a workforce made using your own IdP.
+    oidcConfig :: Prelude.Maybe OidcConfig,
+    -- | A list of one to ten worker IP address ranges
+    -- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+    -- that can be used to access tasks assigned to this workforce.
+    --
+    -- Maximum: Ten CIDR values
+    sourceIpConfig :: Prelude.Maybe SourceIpConfig,
+    -- | Use this parameter to update your VPC configuration for a workforce.
+    workforceVpcConfig :: Prelude.Maybe WorkforceVpcConfigRequest,
+    -- | The name of the private workforce that you want to update. You can find
+    -- your workforce name by using the operation.
+    workforceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkforce' 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:
+--
+-- 'oidcConfig', 'updateWorkforce_oidcConfig' - Use this parameter to update your OIDC Identity Provider (IdP)
+-- configuration for a workforce made using your own IdP.
+--
+-- 'sourceIpConfig', 'updateWorkforce_sourceIpConfig' - A list of one to ten worker IP address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+-- that can be used to access tasks assigned to this workforce.
+--
+-- Maximum: Ten CIDR values
+--
+-- 'workforceVpcConfig', 'updateWorkforce_workforceVpcConfig' - Use this parameter to update your VPC configuration for a workforce.
+--
+-- 'workforceName', 'updateWorkforce_workforceName' - The name of the private workforce that you want to update. You can find
+-- your workforce name by using the operation.
+newUpdateWorkforce ::
+  -- | 'workforceName'
+  Prelude.Text ->
+  UpdateWorkforce
+newUpdateWorkforce pWorkforceName_ =
+  UpdateWorkforce'
+    { oidcConfig = Prelude.Nothing,
+      sourceIpConfig = Prelude.Nothing,
+      workforceVpcConfig = Prelude.Nothing,
+      workforceName = pWorkforceName_
+    }
+
+-- | Use this parameter to update your OIDC Identity Provider (IdP)
+-- configuration for a workforce made using your own IdP.
+updateWorkforce_oidcConfig :: Lens.Lens' UpdateWorkforce (Prelude.Maybe OidcConfig)
+updateWorkforce_oidcConfig = Lens.lens (\UpdateWorkforce' {oidcConfig} -> oidcConfig) (\s@UpdateWorkforce' {} a -> s {oidcConfig = a} :: UpdateWorkforce)
+
+-- | A list of one to ten worker IP address ranges
+-- (<https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html CIDRs>)
+-- that can be used to access tasks assigned to this workforce.
+--
+-- Maximum: Ten CIDR values
+updateWorkforce_sourceIpConfig :: Lens.Lens' UpdateWorkforce (Prelude.Maybe SourceIpConfig)
+updateWorkforce_sourceIpConfig = Lens.lens (\UpdateWorkforce' {sourceIpConfig} -> sourceIpConfig) (\s@UpdateWorkforce' {} a -> s {sourceIpConfig = a} :: UpdateWorkforce)
+
+-- | Use this parameter to update your VPC configuration for a workforce.
+updateWorkforce_workforceVpcConfig :: Lens.Lens' UpdateWorkforce (Prelude.Maybe WorkforceVpcConfigRequest)
+updateWorkforce_workforceVpcConfig = Lens.lens (\UpdateWorkforce' {workforceVpcConfig} -> workforceVpcConfig) (\s@UpdateWorkforce' {} a -> s {workforceVpcConfig = a} :: UpdateWorkforce)
+
+-- | The name of the private workforce that you want to update. You can find
+-- your workforce name by using the operation.
+updateWorkforce_workforceName :: Lens.Lens' UpdateWorkforce Prelude.Text
+updateWorkforce_workforceName = Lens.lens (\UpdateWorkforce' {workforceName} -> workforceName) (\s@UpdateWorkforce' {} a -> s {workforceName = a} :: UpdateWorkforce)
+
+instance Core.AWSRequest UpdateWorkforce where
+  type
+    AWSResponse UpdateWorkforce =
+      UpdateWorkforceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateWorkforceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Workforce")
+      )
+
+instance Prelude.Hashable UpdateWorkforce where
+  hashWithSalt _salt UpdateWorkforce' {..} =
+    _salt
+      `Prelude.hashWithSalt` oidcConfig
+      `Prelude.hashWithSalt` sourceIpConfig
+      `Prelude.hashWithSalt` workforceVpcConfig
+      `Prelude.hashWithSalt` workforceName
+
+instance Prelude.NFData UpdateWorkforce where
+  rnf UpdateWorkforce' {..} =
+    Prelude.rnf oidcConfig
+      `Prelude.seq` Prelude.rnf sourceIpConfig
+      `Prelude.seq` Prelude.rnf workforceVpcConfig
+      `Prelude.seq` Prelude.rnf workforceName
+
+instance Data.ToHeaders UpdateWorkforce where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateWorkforce" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateWorkforce where
+  toJSON UpdateWorkforce' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OidcConfig" Data..=) Prelude.<$> oidcConfig,
+            ("SourceIpConfig" Data..=)
+              Prelude.<$> sourceIpConfig,
+            ("WorkforceVpcConfig" Data..=)
+              Prelude.<$> workforceVpcConfig,
+            Prelude.Just
+              ("WorkforceName" Data..= workforceName)
+          ]
+      )
+
+instance Data.ToPath UpdateWorkforce where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateWorkforce where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateWorkforceResponse' smart constructor.
+data UpdateWorkforceResponse = UpdateWorkforceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A single private workforce. You can create one private work force in
+    -- each Amazon Web Services Region. By default, any workforce-related API
+    -- operation used in a specific region will apply to the workforce created
+    -- in that region. To learn how to create a private workforce, see
+    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+    workforce :: Workforce
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkforceResponse' 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', 'updateWorkforceResponse_httpStatus' - The response's http status code.
+--
+-- 'workforce', 'updateWorkforceResponse_workforce' - A single private workforce. You can create one private work force in
+-- each Amazon Web Services Region. By default, any workforce-related API
+-- operation used in a specific region will apply to the workforce created
+-- in that region. To learn how to create a private workforce, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+newUpdateWorkforceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'workforce'
+  Workforce ->
+  UpdateWorkforceResponse
+newUpdateWorkforceResponse pHttpStatus_ pWorkforce_ =
+  UpdateWorkforceResponse'
+    { httpStatus = pHttpStatus_,
+      workforce = pWorkforce_
+    }
+
+-- | The response's http status code.
+updateWorkforceResponse_httpStatus :: Lens.Lens' UpdateWorkforceResponse Prelude.Int
+updateWorkforceResponse_httpStatus = Lens.lens (\UpdateWorkforceResponse' {httpStatus} -> httpStatus) (\s@UpdateWorkforceResponse' {} a -> s {httpStatus = a} :: UpdateWorkforceResponse)
+
+-- | A single private workforce. You can create one private work force in
+-- each Amazon Web Services Region. By default, any workforce-related API
+-- operation used in a specific region will apply to the workforce created
+-- in that region. To learn how to create a private workforce, see
+-- <https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private.html Create a Private Workforce>.
+updateWorkforceResponse_workforce :: Lens.Lens' UpdateWorkforceResponse Workforce
+updateWorkforceResponse_workforce = Lens.lens (\UpdateWorkforceResponse' {workforce} -> workforce) (\s@UpdateWorkforceResponse' {} a -> s {workforce = a} :: UpdateWorkforceResponse)
+
+instance Prelude.NFData UpdateWorkforceResponse where
+  rnf UpdateWorkforceResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workforce
diff --git a/gen/Amazonka/SageMaker/UpdateWorkteam.hs b/gen/Amazonka/SageMaker/UpdateWorkteam.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/UpdateWorkteam.hs
@@ -0,0 +1,286 @@
+{-# 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.UpdateWorkteam
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing work team with new member definitions or
+-- description.
+module Amazonka.SageMaker.UpdateWorkteam
+  ( -- * Creating a Request
+    UpdateWorkteam (..),
+    newUpdateWorkteam,
+
+    -- * Request Lenses
+    updateWorkteam_description,
+    updateWorkteam_memberDefinitions,
+    updateWorkteam_notificationConfiguration,
+    updateWorkteam_workteamName,
+
+    -- * Destructuring the Response
+    UpdateWorkteamResponse (..),
+    newUpdateWorkteamResponse,
+
+    -- * Response Lenses
+    updateWorkteamResponse_httpStatus,
+    updateWorkteamResponse_workteam,
+  )
+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:/ 'newUpdateWorkteam' smart constructor.
+data UpdateWorkteam = UpdateWorkteam'
+  { -- | An updated description for the work team.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | A list of @MemberDefinition@ objects that contains objects that identify
+    -- the workers that make up the work team.
+    --
+    -- Workforces can be created using Amazon Cognito or your own OIDC Identity
+    -- Provider (IdP). For private workforces created using Amazon Cognito use
+    -- @CognitoMemberDefinition@. For workforces created using your own OIDC
+    -- identity provider (IdP) use @OidcMemberDefinition@. You should not
+    -- provide input for both of these parameters in a single request.
+    --
+    -- For workforces created using Amazon Cognito, private work teams
+    -- correspond to Amazon Cognito /user groups/ within the user pool used to
+    -- create a workforce. All of the @CognitoMemberDefinition@ objects that
+    -- make up the member definition must have the same @ClientId@ and
+    -- @UserPool@ values. To add a Amazon Cognito user group to an existing
+    -- worker pool, see < Adding groups to a User Pool>. For more information
+    -- about user pools, see
+    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito User Pools>.
+    --
+    -- For workforces created using your own OIDC IdP, specify the user groups
+    -- that you want to include in your private work team in
+    -- @OidcMemberDefinition@ by listing those groups in @Groups@. Be aware
+    -- that user groups that are already in the work team must also be listed
+    -- in @Groups@ when you make this request to remain on the work team. If
+    -- you do not include these user groups, they will no longer be associated
+    -- with the work team you update.
+    memberDefinitions :: Prelude.Maybe (Prelude.NonEmpty MemberDefinition),
+    -- | Configures SNS topic notifications for available or expiring work items
+    notificationConfiguration :: Prelude.Maybe NotificationConfiguration,
+    -- | The name of the work team to update.
+    workteamName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkteam' 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:
+--
+-- 'description', 'updateWorkteam_description' - An updated description for the work team.
+--
+-- 'memberDefinitions', 'updateWorkteam_memberDefinitions' - A list of @MemberDefinition@ objects that contains objects that identify
+-- the workers that make up the work team.
+--
+-- Workforces can be created using Amazon Cognito or your own OIDC Identity
+-- Provider (IdP). For private workforces created using Amazon Cognito use
+-- @CognitoMemberDefinition@. For workforces created using your own OIDC
+-- identity provider (IdP) use @OidcMemberDefinition@. You should not
+-- provide input for both of these parameters in a single request.
+--
+-- For workforces created using Amazon Cognito, private work teams
+-- correspond to Amazon Cognito /user groups/ within the user pool used to
+-- create a workforce. All of the @CognitoMemberDefinition@ objects that
+-- make up the member definition must have the same @ClientId@ and
+-- @UserPool@ values. To add a Amazon Cognito user group to an existing
+-- worker pool, see < Adding groups to a User Pool>. For more information
+-- about user pools, see
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito User Pools>.
+--
+-- For workforces created using your own OIDC IdP, specify the user groups
+-- that you want to include in your private work team in
+-- @OidcMemberDefinition@ by listing those groups in @Groups@. Be aware
+-- that user groups that are already in the work team must also be listed
+-- in @Groups@ when you make this request to remain on the work team. If
+-- you do not include these user groups, they will no longer be associated
+-- with the work team you update.
+--
+-- 'notificationConfiguration', 'updateWorkteam_notificationConfiguration' - Configures SNS topic notifications for available or expiring work items
+--
+-- 'workteamName', 'updateWorkteam_workteamName' - The name of the work team to update.
+newUpdateWorkteam ::
+  -- | 'workteamName'
+  Prelude.Text ->
+  UpdateWorkteam
+newUpdateWorkteam pWorkteamName_ =
+  UpdateWorkteam'
+    { description = Prelude.Nothing,
+      memberDefinitions = Prelude.Nothing,
+      notificationConfiguration = Prelude.Nothing,
+      workteamName = pWorkteamName_
+    }
+
+-- | An updated description for the work team.
+updateWorkteam_description :: Lens.Lens' UpdateWorkteam (Prelude.Maybe Prelude.Text)
+updateWorkteam_description = Lens.lens (\UpdateWorkteam' {description} -> description) (\s@UpdateWorkteam' {} a -> s {description = a} :: UpdateWorkteam)
+
+-- | A list of @MemberDefinition@ objects that contains objects that identify
+-- the workers that make up the work team.
+--
+-- Workforces can be created using Amazon Cognito or your own OIDC Identity
+-- Provider (IdP). For private workforces created using Amazon Cognito use
+-- @CognitoMemberDefinition@. For workforces created using your own OIDC
+-- identity provider (IdP) use @OidcMemberDefinition@. You should not
+-- provide input for both of these parameters in a single request.
+--
+-- For workforces created using Amazon Cognito, private work teams
+-- correspond to Amazon Cognito /user groups/ within the user pool used to
+-- create a workforce. All of the @CognitoMemberDefinition@ objects that
+-- make up the member definition must have the same @ClientId@ and
+-- @UserPool@ values. To add a Amazon Cognito user group to an existing
+-- worker pool, see < Adding groups to a User Pool>. For more information
+-- about user pools, see
+-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html Amazon Cognito User Pools>.
+--
+-- For workforces created using your own OIDC IdP, specify the user groups
+-- that you want to include in your private work team in
+-- @OidcMemberDefinition@ by listing those groups in @Groups@. Be aware
+-- that user groups that are already in the work team must also be listed
+-- in @Groups@ when you make this request to remain on the work team. If
+-- you do not include these user groups, they will no longer be associated
+-- with the work team you update.
+updateWorkteam_memberDefinitions :: Lens.Lens' UpdateWorkteam (Prelude.Maybe (Prelude.NonEmpty MemberDefinition))
+updateWorkteam_memberDefinitions = Lens.lens (\UpdateWorkteam' {memberDefinitions} -> memberDefinitions) (\s@UpdateWorkteam' {} a -> s {memberDefinitions = a} :: UpdateWorkteam) Prelude.. Lens.mapping Lens.coerced
+
+-- | Configures SNS topic notifications for available or expiring work items
+updateWorkteam_notificationConfiguration :: Lens.Lens' UpdateWorkteam (Prelude.Maybe NotificationConfiguration)
+updateWorkteam_notificationConfiguration = Lens.lens (\UpdateWorkteam' {notificationConfiguration} -> notificationConfiguration) (\s@UpdateWorkteam' {} a -> s {notificationConfiguration = a} :: UpdateWorkteam)
+
+-- | The name of the work team to update.
+updateWorkteam_workteamName :: Lens.Lens' UpdateWorkteam Prelude.Text
+updateWorkteam_workteamName = Lens.lens (\UpdateWorkteam' {workteamName} -> workteamName) (\s@UpdateWorkteam' {} a -> s {workteamName = a} :: UpdateWorkteam)
+
+instance Core.AWSRequest UpdateWorkteam where
+  type
+    AWSResponse UpdateWorkteam =
+      UpdateWorkteamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateWorkteamResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Workteam")
+      )
+
+instance Prelude.Hashable UpdateWorkteam where
+  hashWithSalt _salt UpdateWorkteam' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` memberDefinitions
+      `Prelude.hashWithSalt` notificationConfiguration
+      `Prelude.hashWithSalt` workteamName
+
+instance Prelude.NFData UpdateWorkteam where
+  rnf UpdateWorkteam' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf memberDefinitions
+      `Prelude.seq` Prelude.rnf notificationConfiguration
+      `Prelude.seq` Prelude.rnf workteamName
+
+instance Data.ToHeaders UpdateWorkteam where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("SageMaker.UpdateWorkteam" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateWorkteam where
+  toJSON UpdateWorkteam' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("MemberDefinitions" Data..=)
+              Prelude.<$> memberDefinitions,
+            ("NotificationConfiguration" Data..=)
+              Prelude.<$> notificationConfiguration,
+            Prelude.Just ("WorkteamName" Data..= workteamName)
+          ]
+      )
+
+instance Data.ToPath UpdateWorkteam where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateWorkteam where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateWorkteamResponse' smart constructor.
+data UpdateWorkteamResponse = UpdateWorkteamResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A @Workteam@ object that describes the updated work team.
+    workteam :: Workteam
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateWorkteamResponse' 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', 'updateWorkteamResponse_httpStatus' - The response's http status code.
+--
+-- 'workteam', 'updateWorkteamResponse_workteam' - A @Workteam@ object that describes the updated work team.
+newUpdateWorkteamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'workteam'
+  Workteam ->
+  UpdateWorkteamResponse
+newUpdateWorkteamResponse pHttpStatus_ pWorkteam_ =
+  UpdateWorkteamResponse'
+    { httpStatus = pHttpStatus_,
+      workteam = pWorkteam_
+    }
+
+-- | The response's http status code.
+updateWorkteamResponse_httpStatus :: Lens.Lens' UpdateWorkteamResponse Prelude.Int
+updateWorkteamResponse_httpStatus = Lens.lens (\UpdateWorkteamResponse' {httpStatus} -> httpStatus) (\s@UpdateWorkteamResponse' {} a -> s {httpStatus = a} :: UpdateWorkteamResponse)
+
+-- | A @Workteam@ object that describes the updated work team.
+updateWorkteamResponse_workteam :: Lens.Lens' UpdateWorkteamResponse Workteam
+updateWorkteamResponse_workteam = Lens.lens (\UpdateWorkteamResponse' {workteam} -> workteam) (\s@UpdateWorkteamResponse' {} a -> s {workteam = a} :: UpdateWorkteamResponse)
+
+instance Prelude.NFData UpdateWorkteamResponse where
+  rnf UpdateWorkteamResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf workteam
diff --git a/gen/Amazonka/SageMaker/Waiters.hs b/gen/Amazonka/SageMaker/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMaker/Waiters.hs
@@ -0,0 +1,379 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMaker.Waiters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMaker.Waiters 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 Amazonka.SageMaker.DescribeEndpoint
+import Amazonka.SageMaker.DescribeImage
+import Amazonka.SageMaker.DescribeImageVersion
+import Amazonka.SageMaker.DescribeNotebookInstance
+import Amazonka.SageMaker.DescribeProcessingJob
+import Amazonka.SageMaker.DescribeTrainingJob
+import Amazonka.SageMaker.DescribeTransformJob
+import Amazonka.SageMaker.Lens
+import Amazonka.SageMaker.Types
+
+-- | Polls 'Amazonka.SageMaker.DescribeEndpoint' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newEndpointDeleted :: Core.Wait DescribeEndpoint
+newEndpointDeleted =
+  Core.Wait
+    { Core.name = "EndpointDeleted",
+      Core.attempts = 60,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchError
+            "ValidationException"
+            Core.AcceptSuccess,
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeEndpointResponse_endpointStatus
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeEndpoint' every 30 seconds until a successful state is reached. An error is returned after 120 failed checks.
+newEndpointInService :: Core.Wait DescribeEndpoint
+newEndpointInService =
+  Core.Wait
+    { Core.name = "EndpointInService",
+      Core.attempts = 120,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchAll
+            "InService"
+            Core.AcceptSuccess
+            ( describeEndpointResponse_endpointStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeEndpointResponse_endpointStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeImage' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newImageCreated :: Core.Wait DescribeImage
+newImageCreated =
+  Core.Wait
+    { Core.name = "ImageCreated",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchAll
+            "CREATED"
+            Core.AcceptSuccess
+            ( describeImageResponse_imageStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "CREATE_FAILED"
+            Core.AcceptFailure
+            ( describeImageResponse_imageStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeImage' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newImageDeleted :: Core.Wait DescribeImage
+newImageDeleted =
+  Core.Wait
+    { Core.name = "ImageDeleted",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchError
+            "ResourceNotFoundException"
+            Core.AcceptSuccess,
+          Core.matchAll
+            "DELETE_FAILED"
+            Core.AcceptFailure
+            ( describeImageResponse_imageStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeImage' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newImageUpdated :: Core.Wait DescribeImage
+newImageUpdated =
+  Core.Wait
+    { Core.name = "ImageUpdated",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchAll
+            "CREATED"
+            Core.AcceptSuccess
+            ( describeImageResponse_imageStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "UPDATE_FAILED"
+            Core.AcceptFailure
+            ( describeImageResponse_imageStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeImageVersion' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newImageVersionCreated :: Core.Wait DescribeImageVersion
+newImageVersionCreated =
+  Core.Wait
+    { Core.name = "ImageVersionCreated",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchAll
+            "CREATED"
+            Core.AcceptSuccess
+            ( describeImageVersionResponse_imageVersionStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "CREATE_FAILED"
+            Core.AcceptFailure
+            ( describeImageVersionResponse_imageVersionStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeImageVersion' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newImageVersionDeleted :: Core.Wait DescribeImageVersion
+newImageVersionDeleted =
+  Core.Wait
+    { Core.name = "ImageVersionDeleted",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchError
+            "ResourceNotFoundException"
+            Core.AcceptSuccess,
+          Core.matchAll
+            "DELETE_FAILED"
+            Core.AcceptFailure
+            ( describeImageVersionResponse_imageVersionStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeNotebookInstance' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newNotebookInstanceDeleted :: Core.Wait DescribeNotebookInstance
+newNotebookInstanceDeleted =
+  Core.Wait
+    { Core.name = "NotebookInstanceDeleted",
+      Core.attempts = 60,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchError
+            "ValidationException"
+            Core.AcceptSuccess,
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeNotebookInstanceResponse_notebookInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeNotebookInstance' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newNotebookInstanceInService :: Core.Wait DescribeNotebookInstance
+newNotebookInstanceInService =
+  Core.Wait
+    { Core.name = "NotebookInstanceInService",
+      Core.attempts = 60,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchAll
+            "InService"
+            Core.AcceptSuccess
+            ( describeNotebookInstanceResponse_notebookInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeNotebookInstanceResponse_notebookInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeNotebookInstance' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newNotebookInstanceStopped :: Core.Wait DescribeNotebookInstance
+newNotebookInstanceStopped =
+  Core.Wait
+    { Core.name = "NotebookInstanceStopped",
+      Core.attempts = 60,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchAll
+            "Stopped"
+            Core.AcceptSuccess
+            ( describeNotebookInstanceResponse_notebookInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeNotebookInstanceResponse_notebookInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeProcessingJob' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newProcessingJobCompletedOrStopped :: Core.Wait DescribeProcessingJob
+newProcessingJobCompletedOrStopped =
+  Core.Wait
+    { Core.name =
+        "ProcessingJobCompletedOrStopped",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchAll
+            "Completed"
+            Core.AcceptSuccess
+            ( describeProcessingJobResponse_processingJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Stopped"
+            Core.AcceptSuccess
+            ( describeProcessingJobResponse_processingJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeProcessingJobResponse_processingJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeTrainingJob' every 120 seconds until a successful state is reached. An error is returned after 180 failed checks.
+newTrainingJobCompletedOrStopped :: Core.Wait DescribeTrainingJob
+newTrainingJobCompletedOrStopped =
+  Core.Wait
+    { Core.name =
+        "TrainingJobCompletedOrStopped",
+      Core.attempts = 180,
+      Core.delay = 120,
+      Core.acceptors =
+        [ Core.matchAll
+            "Completed"
+            Core.AcceptSuccess
+            ( describeTrainingJobResponse_trainingJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Stopped"
+            Core.AcceptSuccess
+            ( describeTrainingJobResponse_trainingJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeTrainingJobResponse_trainingJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
+
+-- | Polls 'Amazonka.SageMaker.DescribeTransformJob' every 60 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newTransformJobCompletedOrStopped :: Core.Wait DescribeTransformJob
+newTransformJobCompletedOrStopped =
+  Core.Wait
+    { Core.name =
+        "TransformJobCompletedOrStopped",
+      Core.attempts = 60,
+      Core.delay = 60,
+      Core.acceptors =
+        [ Core.matchAll
+            "Completed"
+            Core.AcceptSuccess
+            ( describeTransformJobResponse_transformJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Stopped"
+            Core.AcceptSuccess
+            ( describeTransformJobResponse_transformJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeTransformJobResponse_transformJobStatus
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "ValidationException"
+            Core.AcceptFailure
+        ]
+    }
diff --git a/gen/Network/AWS/SageMaker.hs b/gen/Network/AWS/SageMaker.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker.hs
+++ /dev/null
@@ -1,449 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Definition of the public APIs exposed by SageMaker
-module Network.AWS.SageMaker
-    (
-    -- * Service Configuration
-      sageMaker
-
-    -- * Errors
-    -- $errors
-
-    -- ** ResourceLimitExceeded
-    , _ResourceLimitExceeded
-
-    -- ** ResourceInUse
-    , _ResourceInUse
-
-    -- ** ResourceNotFound
-    , _ResourceNotFound
-
-    -- * Waiters
-    -- $waiters
-
-    -- ** NotebookInstanceDeleted
-    , notebookInstanceDeleted
-
-    -- ** EndpointDeleted
-    , endpointDeleted
-
-    -- ** EndpointInService
-    , endpointInService
-
-    -- ** NotebookInstanceInService
-    , notebookInstanceInService
-
-    -- ** TrainingJobCompletedOrStopped
-    , trainingJobCompletedOrStopped
-
-    -- ** NotebookInstanceStopped
-    , notebookInstanceStopped
-
-    -- * Operations
-    -- $operations
-
-    -- ** CreateNotebookInstance
-    , module Network.AWS.SageMaker.CreateNotebookInstance
-
-    -- ** DescribeEndpointConfig
-    , module Network.AWS.SageMaker.DescribeEndpointConfig
-
-    -- ** CreateEndpoint
-    , module Network.AWS.SageMaker.CreateEndpoint
-
-    -- ** DescribeTrainingJob
-    , module Network.AWS.SageMaker.DescribeTrainingJob
-
-    -- ** DeleteEndpoint
-    , module Network.AWS.SageMaker.DeleteEndpoint
-
-    -- ** UpdateEndpoint
-    , module Network.AWS.SageMaker.UpdateEndpoint
-
-    -- ** DeleteNotebookInstanceLifecycleConfig
-    , module Network.AWS.SageMaker.DeleteNotebookInstanceLifecycleConfig
-
-    -- ** UpdateNotebookInstanceLifecycleConfig
-    , module Network.AWS.SageMaker.UpdateNotebookInstanceLifecycleConfig
-
-    -- ** DescribeNotebookInstance
-    , module Network.AWS.SageMaker.DescribeNotebookInstance
-
-    -- ** CreateEndpointConfig
-    , module Network.AWS.SageMaker.CreateEndpointConfig
-
-    -- ** StopNotebookInstance
-    , module Network.AWS.SageMaker.StopNotebookInstance
-
-    -- ** UpdateEndpointWeightsAndCapacities
-    , module Network.AWS.SageMaker.UpdateEndpointWeightsAndCapacities
-
-    -- ** DeleteTags
-    , module Network.AWS.SageMaker.DeleteTags
-
-    -- ** DeleteEndpointConfig
-    , module Network.AWS.SageMaker.DeleteEndpointConfig
-
-    -- ** CreateModel
-    , module Network.AWS.SageMaker.CreateModel
-
-    -- ** DeleteModel
-    , module Network.AWS.SageMaker.DeleteModel
-
-    -- ** ListModels (Paginated)
-    , module Network.AWS.SageMaker.ListModels
-
-    -- ** DescribeNotebookInstanceLifecycleConfig
-    , module Network.AWS.SageMaker.DescribeNotebookInstanceLifecycleConfig
-
-    -- ** ListNotebookInstances (Paginated)
-    , module Network.AWS.SageMaker.ListNotebookInstances
-
-    -- ** DeleteNotebookInstance
-    , module Network.AWS.SageMaker.DeleteNotebookInstance
-
-    -- ** UpdateNotebookInstance
-    , module Network.AWS.SageMaker.UpdateNotebookInstance
-
-    -- ** StopTrainingJob
-    , module Network.AWS.SageMaker.StopTrainingJob
-
-    -- ** DescribeModel
-    , module Network.AWS.SageMaker.DescribeModel
-
-    -- ** ListEndpoints (Paginated)
-    , module Network.AWS.SageMaker.ListEndpoints
-
-    -- ** CreatePresignedNotebookInstanceURL
-    , module Network.AWS.SageMaker.CreatePresignedNotebookInstanceURL
-
-    -- ** ListNotebookInstanceLifecycleConfigs
-    , module Network.AWS.SageMaker.ListNotebookInstanceLifecycleConfigs
-
-    -- ** CreateNotebookInstanceLifecycleConfig
-    , module Network.AWS.SageMaker.CreateNotebookInstanceLifecycleConfig
-
-    -- ** StartNotebookInstance
-    , module Network.AWS.SageMaker.StartNotebookInstance
-
-    -- ** AddTags
-    , module Network.AWS.SageMaker.AddTags
-
-    -- ** ListEndpointConfigs (Paginated)
-    , module Network.AWS.SageMaker.ListEndpointConfigs
-
-    -- ** ListTags (Paginated)
-    , module Network.AWS.SageMaker.ListTags
-
-    -- ** CreateTrainingJob
-    , module Network.AWS.SageMaker.CreateTrainingJob
-
-    -- ** DescribeEndpoint
-    , module Network.AWS.SageMaker.DescribeEndpoint
-
-    -- ** ListTrainingJobs (Paginated)
-    , module Network.AWS.SageMaker.ListTrainingJobs
-
-    -- * Types
-
-    -- ** CompressionType
-    , CompressionType (..)
-
-    -- ** DirectInternetAccess
-    , DirectInternetAccess (..)
-
-    -- ** EndpointConfigSortKey
-    , EndpointConfigSortKey (..)
-
-    -- ** EndpointSortKey
-    , EndpointSortKey (..)
-
-    -- ** EndpointStatus
-    , EndpointStatus (..)
-
-    -- ** InstanceType
-    , InstanceType (..)
-
-    -- ** ModelSortKey
-    , ModelSortKey (..)
-
-    -- ** NotebookInstanceLifecycleConfigSortKey
-    , NotebookInstanceLifecycleConfigSortKey (..)
-
-    -- ** NotebookInstanceLifecycleConfigSortOrder
-    , NotebookInstanceLifecycleConfigSortOrder (..)
-
-    -- ** NotebookInstanceSortKey
-    , NotebookInstanceSortKey (..)
-
-    -- ** NotebookInstanceSortOrder
-    , NotebookInstanceSortOrder (..)
-
-    -- ** NotebookInstanceStatus
-    , NotebookInstanceStatus (..)
-
-    -- ** OrderKey
-    , OrderKey (..)
-
-    -- ** ProductionVariantInstanceType
-    , ProductionVariantInstanceType (..)
-
-    -- ** RecordWrapper
-    , RecordWrapper (..)
-
-    -- ** S3DataDistribution
-    , S3DataDistribution (..)
-
-    -- ** S3DataType
-    , S3DataType (..)
-
-    -- ** SecondaryStatus
-    , SecondaryStatus (..)
-
-    -- ** SortBy
-    , SortBy (..)
-
-    -- ** SortOrder
-    , SortOrder (..)
-
-    -- ** TrainingInputMode
-    , TrainingInputMode (..)
-
-    -- ** TrainingInstanceType
-    , TrainingInstanceType (..)
-
-    -- ** TrainingJobStatus
-    , TrainingJobStatus (..)
-
-    -- ** AlgorithmSpecification
-    , AlgorithmSpecification
-    , algorithmSpecification
-    , asTrainingImage
-    , asTrainingInputMode
-
-    -- ** Channel
-    , Channel
-    , channel
-    , cRecordWrapperType
-    , cCompressionType
-    , cContentType
-    , cChannelName
-    , cDataSource
-
-    -- ** ContainerDefinition
-    , ContainerDefinition
-    , containerDefinition
-    , cdModelDataURL
-    , cdEnvironment
-    , cdContainerHostname
-    , cdImage
-
-    -- ** DataSource
-    , DataSource
-    , dataSource
-    , dsS3DataSource
-
-    -- ** DesiredWeightAndCapacity
-    , DesiredWeightAndCapacity
-    , desiredWeightAndCapacity
-    , dwacDesiredInstanceCount
-    , dwacDesiredWeight
-    , dwacVariantName
-
-    -- ** EndpointConfigSummary
-    , EndpointConfigSummary
-    , endpointConfigSummary
-    , ecsEndpointConfigName
-    , ecsEndpointConfigARN
-    , ecsCreationTime
-
-    -- ** EndpointSummary
-    , EndpointSummary
-    , endpointSummary
-    , esEndpointName
-    , esEndpointARN
-    , esCreationTime
-    , esLastModifiedTime
-    , esEndpointStatus
-
-    -- ** ModelArtifacts
-    , ModelArtifacts
-    , modelArtifacts
-    , maS3ModelArtifacts
-
-    -- ** ModelSummary
-    , ModelSummary
-    , modelSummary
-    , msModelName
-    , msModelARN
-    , msCreationTime
-
-    -- ** NotebookInstanceLifecycleConfigSummary
-    , NotebookInstanceLifecycleConfigSummary
-    , notebookInstanceLifecycleConfigSummary
-    , nilcsCreationTime
-    , nilcsLastModifiedTime
-    , nilcsNotebookInstanceLifecycleConfigName
-    , nilcsNotebookInstanceLifecycleConfigARN
-
-    -- ** NotebookInstanceLifecycleHook
-    , NotebookInstanceLifecycleHook
-    , notebookInstanceLifecycleHook
-    , nilhContent
-
-    -- ** NotebookInstanceSummary
-    , NotebookInstanceSummary
-    , notebookInstanceSummary
-    , nisCreationTime
-    , nisURL
-    , nisLastModifiedTime
-    , nisInstanceType
-    , nisNotebookInstanceStatus
-    , nisNotebookInstanceLifecycleConfigName
-    , nisNotebookInstanceName
-    , nisNotebookInstanceARN
-
-    -- ** OutputDataConfig
-    , OutputDataConfig
-    , outputDataConfig
-    , odcKMSKeyId
-    , odcS3OutputPath
-
-    -- ** ProductionVariant
-    , ProductionVariant
-    , productionVariant
-    , pvInitialVariantWeight
-    , pvVariantName
-    , pvModelName
-    , pvInitialInstanceCount
-    , pvInstanceType
-
-    -- ** ProductionVariantSummary
-    , ProductionVariantSummary
-    , productionVariantSummary
-    , pvsDesiredInstanceCount
-    , pvsDesiredWeight
-    , pvsCurrentWeight
-    , pvsCurrentInstanceCount
-    , pvsVariantName
-
-    -- ** ResourceConfig
-    , ResourceConfig
-    , resourceConfig
-    , rcVolumeKMSKeyId
-    , rcInstanceType
-    , rcInstanceCount
-    , rcVolumeSizeInGB
-
-    -- ** S3DataSource
-    , S3DataSource
-    , s3DataSource
-    , sdsS3DataDistributionType
-    , sdsS3DataType
-    , sdsS3URI
-
-    -- ** StoppingCondition
-    , StoppingCondition
-    , stoppingCondition
-    , scMaxRuntimeInSeconds
-
-    -- ** Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
-
-    -- ** TrainingJobSummary
-    , TrainingJobSummary
-    , trainingJobSummary
-    , tjsTrainingEndTime
-    , tjsLastModifiedTime
-    , tjsTrainingJobName
-    , tjsTrainingJobARN
-    , tjsCreationTime
-    , tjsTrainingJobStatus
-
-    -- ** VPCConfig
-    , VPCConfig
-    , vpcConfig
-    , vcSecurityGroupIds
-    , vcSubnets
-    ) where
-
-import Network.AWS.SageMaker.AddTags
-import Network.AWS.SageMaker.CreateEndpoint
-import Network.AWS.SageMaker.CreateEndpointConfig
-import Network.AWS.SageMaker.CreateModel
-import Network.AWS.SageMaker.CreateNotebookInstance
-import Network.AWS.SageMaker.CreateNotebookInstanceLifecycleConfig
-import Network.AWS.SageMaker.CreatePresignedNotebookInstanceURL
-import Network.AWS.SageMaker.CreateTrainingJob
-import Network.AWS.SageMaker.DeleteEndpoint
-import Network.AWS.SageMaker.DeleteEndpointConfig
-import Network.AWS.SageMaker.DeleteModel
-import Network.AWS.SageMaker.DeleteNotebookInstance
-import Network.AWS.SageMaker.DeleteNotebookInstanceLifecycleConfig
-import Network.AWS.SageMaker.DeleteTags
-import Network.AWS.SageMaker.DescribeEndpoint
-import Network.AWS.SageMaker.DescribeEndpointConfig
-import Network.AWS.SageMaker.DescribeModel
-import Network.AWS.SageMaker.DescribeNotebookInstance
-import Network.AWS.SageMaker.DescribeNotebookInstanceLifecycleConfig
-import Network.AWS.SageMaker.DescribeTrainingJob
-import Network.AWS.SageMaker.ListEndpointConfigs
-import Network.AWS.SageMaker.ListEndpoints
-import Network.AWS.SageMaker.ListModels
-import Network.AWS.SageMaker.ListNotebookInstanceLifecycleConfigs
-import Network.AWS.SageMaker.ListNotebookInstances
-import Network.AWS.SageMaker.ListTags
-import Network.AWS.SageMaker.ListTrainingJobs
-import Network.AWS.SageMaker.StartNotebookInstance
-import Network.AWS.SageMaker.StopNotebookInstance
-import Network.AWS.SageMaker.StopTrainingJob
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.UpdateEndpoint
-import Network.AWS.SageMaker.UpdateEndpointWeightsAndCapacities
-import Network.AWS.SageMaker.UpdateNotebookInstance
-import Network.AWS.SageMaker.UpdateNotebookInstanceLifecycleConfig
-import Network.AWS.SageMaker.Waiters
-
-{- $errors
-Error matchers are designed for use with the functions provided by
-<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
-This allows catching (and rethrowing) service specific errors returned
-by 'SageMaker'.
--}
-
-{- $operations
-Some AWS operations return results that are incomplete and require subsequent
-requests in order to obtain the entire result set. The process of sending
-subsequent requests to continue where a previous request left off is called
-pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
-1000 objects at a time, and you must send subsequent requests with the
-appropriate Marker in order to retrieve the next page of results.
-
-Operations that have an 'AWSPager' instance can transparently perform subsequent
-requests, correctly setting Markers and other request facets to iterate through
-the entire result set of a truncated API operation. Operations which support
-this have an additional note in the documentation.
-
-Many operations have the ability to filter results on the server side. See the
-individual operation parameters for details.
--}
-
-{- $waiters
-Waiters poll by repeatedly sending a request until some remote success condition
-configured by the 'Wait' specification is fulfilled. The 'Wait' specification
-determines how many attempts should be made, in addition to delay and retry strategies.
--}
diff --git a/gen/Network/AWS/SageMaker/AddTags.hs b/gen/Network/AWS/SageMaker/AddTags.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/AddTags.hs
+++ /dev/null
@@ -1,143 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.AddTags
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds or overwrites one or more tags for the specified Amazon SageMaker resource. You can add tags to notebook instances, training jobs, models, endpoint configurations, and endpoints.
---
---
--- Each tag consists of a key and an optional value. Tag keys must be unique per resource. For more information about tags, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
---
-module Network.AWS.SageMaker.AddTags
-    (
-    -- * Creating a Request
-      addTags
-    , AddTags
-    -- * Request Lenses
-    , atResourceARN
-    , atTags
-
-    -- * Destructuring the Response
-    , addTagsResponse
-    , AddTagsResponse
-    -- * Response Lenses
-    , atrsTags
-    , atrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'addTags' smart constructor.
-data AddTags = AddTags'
-  { _atResourceARN :: !Text
-  , _atTags        :: ![Tag]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddTags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atResourceARN' - The Amazon Resource Name (ARN) of the resource that you want to tag.
---
--- * 'atTags' - An array of @Tag@ objects. Each tag is a key-value pair. Only the @key@ parameter is required. If you don't specify a value, Amazon SageMaker sets the value to an empty string.
-addTags
-    :: Text -- ^ 'atResourceARN'
-    -> AddTags
-addTags pResourceARN_ =
-  AddTags' {_atResourceARN = pResourceARN_, _atTags = mempty}
-
-
--- | The Amazon Resource Name (ARN) of the resource that you want to tag.
-atResourceARN :: Lens' AddTags Text
-atResourceARN = lens _atResourceARN (\ s a -> s{_atResourceARN = a})
-
--- | An array of @Tag@ objects. Each tag is a key-value pair. Only the @key@ parameter is required. If you don't specify a value, Amazon SageMaker sets the value to an empty string.
-atTags :: Lens' AddTags [Tag]
-atTags = lens _atTags (\ s a -> s{_atTags = a}) . _Coerce
-
-instance AWSRequest AddTags where
-        type Rs AddTags = AddTagsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 AddTagsResponse' <$>
-                   (x .?> "Tags" .!@ mempty) <*> (pure (fromEnum s)))
-
-instance Hashable AddTags where
-
-instance NFData AddTags where
-
-instance ToHeaders AddTags where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.AddTags" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AddTags where
-        toJSON AddTags'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceArn" .= _atResourceARN),
-                  Just ("Tags" .= _atTags)])
-
-instance ToPath AddTags where
-        toPath = const "/"
-
-instance ToQuery AddTags where
-        toQuery = const mempty
-
--- | /See:/ 'addTagsResponse' smart constructor.
-data AddTagsResponse = AddTagsResponse'
-  { _atrsTags           :: !(Maybe [Tag])
-  , _atrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddTagsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atrsTags' - A list of tags associated with the Amazon SageMaker resource.
---
--- * 'atrsResponseStatus' - -- | The response status code.
-addTagsResponse
-    :: Int -- ^ 'atrsResponseStatus'
-    -> AddTagsResponse
-addTagsResponse pResponseStatus_ =
-  AddTagsResponse' {_atrsTags = Nothing, _atrsResponseStatus = pResponseStatus_}
-
-
--- | A list of tags associated with the Amazon SageMaker resource.
-atrsTags :: Lens' AddTagsResponse [Tag]
-atrsTags = lens _atrsTags (\ s a -> s{_atrsTags = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-atrsResponseStatus :: Lens' AddTagsResponse Int
-atrsResponseStatus = lens _atrsResponseStatus (\ s a -> s{_atrsResponseStatus = a})
-
-instance NFData AddTagsResponse where
diff --git a/gen/Network/AWS/SageMaker/CreateEndpoint.hs b/gen/Network/AWS/SageMaker/CreateEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreateEndpoint.hs
+++ /dev/null
@@ -1,166 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreateEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an endpoint using the endpoint configuration specified in the request. Amazon SageMaker uses the endpoint to provision resources and deploy models. You create the endpoint configuration with the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html CreateEndpointConfig> API.
---
---
--- The endpoint name must be unique within an AWS Region in your AWS account.
---
--- When it receives the request, Amazon SageMaker creates the endpoint, launches the resources (ML compute instances), and deploys the model(s) on them.
---
--- When Amazon SageMaker receives the request, it sets the endpoint status to @Creating@ . After it creates the endpoint, it sets the status to @InService@ . Amazon SageMaker can then process incoming requests for inferences. To check the status of an endpoint, use the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html DescribeEndpoint> API.
---
--- For an example, see <http://docs.aws.amazon.com/sagemaker/latest/dg/ex1.html Exercise 1: Using the K-Means Algorithm Provided by Amazon SageMaker> .
---
-module Network.AWS.SageMaker.CreateEndpoint
-    (
-    -- * Creating a Request
-      createEndpoint
-    , CreateEndpoint
-    -- * Request Lenses
-    , ceTags
-    , ceEndpointName
-    , ceEndpointConfigName
-
-    -- * Destructuring the Response
-    , createEndpointResponse
-    , CreateEndpointResponse
-    -- * Response Lenses
-    , cersResponseStatus
-    , cersEndpointARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createEndpoint' smart constructor.
-data CreateEndpoint = CreateEndpoint'
-  { _ceTags               :: !(Maybe [Tag])
-  , _ceEndpointName       :: !Text
-  , _ceEndpointConfigName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ceTags' - An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
---
--- * 'ceEndpointName' - The name of the endpoint. The name must be unique within an AWS Region in your AWS account.
---
--- * 'ceEndpointConfigName' - The name of an endpoint configuration. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html CreateEndpointConfig> .
-createEndpoint
-    :: Text -- ^ 'ceEndpointName'
-    -> Text -- ^ 'ceEndpointConfigName'
-    -> CreateEndpoint
-createEndpoint pEndpointName_ pEndpointConfigName_ =
-  CreateEndpoint'
-    { _ceTags = Nothing
-    , _ceEndpointName = pEndpointName_
-    , _ceEndpointConfigName = pEndpointConfigName_
-    }
-
-
--- | An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
-ceTags :: Lens' CreateEndpoint [Tag]
-ceTags = lens _ceTags (\ s a -> s{_ceTags = a}) . _Default . _Coerce
-
--- | The name of the endpoint. The name must be unique within an AWS Region in your AWS account.
-ceEndpointName :: Lens' CreateEndpoint Text
-ceEndpointName = lens _ceEndpointName (\ s a -> s{_ceEndpointName = a})
-
--- | The name of an endpoint configuration. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html CreateEndpointConfig> .
-ceEndpointConfigName :: Lens' CreateEndpoint Text
-ceEndpointConfigName = lens _ceEndpointConfigName (\ s a -> s{_ceEndpointConfigName = a})
-
-instance AWSRequest CreateEndpoint where
-        type Rs CreateEndpoint = CreateEndpointResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateEndpointResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "EndpointArn"))
-
-instance Hashable CreateEndpoint where
-
-instance NFData CreateEndpoint where
-
-instance ToHeaders CreateEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreateEndpoint" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateEndpoint where
-        toJSON CreateEndpoint'{..}
-          = object
-              (catMaybes
-                 [("Tags" .=) <$> _ceTags,
-                  Just ("EndpointName" .= _ceEndpointName),
-                  Just
-                    ("EndpointConfigName" .= _ceEndpointConfigName)])
-
-instance ToPath CreateEndpoint where
-        toPath = const "/"
-
-instance ToQuery CreateEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'createEndpointResponse' smart constructor.
-data CreateEndpointResponse = CreateEndpointResponse'
-  { _cersResponseStatus :: !Int
-  , _cersEndpointARN    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cersResponseStatus' - -- | The response status code.
---
--- * 'cersEndpointARN' - The Amazon Resource Name (ARN) of the endpoint.
-createEndpointResponse
-    :: Int -- ^ 'cersResponseStatus'
-    -> Text -- ^ 'cersEndpointARN'
-    -> CreateEndpointResponse
-createEndpointResponse pResponseStatus_ pEndpointARN_ =
-  CreateEndpointResponse'
-    {_cersResponseStatus = pResponseStatus_, _cersEndpointARN = pEndpointARN_}
-
-
--- | -- | The response status code.
-cersResponseStatus :: Lens' CreateEndpointResponse Int
-cersResponseStatus = lens _cersResponseStatus (\ s a -> s{_cersResponseStatus = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint.
-cersEndpointARN :: Lens' CreateEndpointResponse Text
-cersEndpointARN = lens _cersEndpointARN (\ s a -> s{_cersEndpointARN = a})
-
-instance NFData CreateEndpointResponse where
diff --git a/gen/Network/AWS/SageMaker/CreateEndpointConfig.hs b/gen/Network/AWS/SageMaker/CreateEndpointConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreateEndpointConfig.hs
+++ /dev/null
@@ -1,176 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreateEndpointConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an endpoint configuration that Amazon SageMaker hosting services uses to deploy models. In the configuration, you identify one or more models, created using the @CreateModel@ API, to deploy and the resources that you want Amazon SageMaker to provision. Then you call the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html CreateEndpoint> API.
---
---
--- In the request, you define one or more @ProductionVariant@ s, each of which identifies a model. Each @ProductionVariant@ parameter also describes the resources that you want Amazon SageMaker to provision. This includes the number and type of ML compute instances to deploy.
---
--- If you are hosting multiple models, you also assign a @VariantWeight@ to specify how much traffic you want to allocate to each model. For example, suppose that you want to host two models, A and B, and you assign traffic weight 2 for model A and 1 for model B. Amazon SageMaker distributes two-thirds of the traffic to Model A, and one-third to model B.
---
-module Network.AWS.SageMaker.CreateEndpointConfig
-    (
-    -- * Creating a Request
-      createEndpointConfig
-    , CreateEndpointConfig
-    -- * Request Lenses
-    , cecKMSKeyId
-    , cecTags
-    , cecEndpointConfigName
-    , cecProductionVariants
-
-    -- * Destructuring the Response
-    , createEndpointConfigResponse
-    , CreateEndpointConfigResponse
-    -- * Response Lenses
-    , cecrsResponseStatus
-    , cecrsEndpointConfigARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createEndpointConfig' smart constructor.
-data CreateEndpointConfig = CreateEndpointConfig'
-  { _cecKMSKeyId           :: !(Maybe Text)
-  , _cecTags               :: !(Maybe [Tag])
-  , _cecEndpointConfigName :: !Text
-  , _cecProductionVariants :: !(List1 ProductionVariant)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateEndpointConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cecKMSKeyId' - The Amazon Resource Name (ARN) of a AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint.
---
--- * 'cecTags' - An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
---
--- * 'cecEndpointConfigName' - The name of the endpoint configuration. You specify this name in a <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html CreateEndpoint> request.
---
--- * 'cecProductionVariants' - An array of @ProductionVariant@ objects, one for each model that you want to host at this endpoint.
-createEndpointConfig
-    :: Text -- ^ 'cecEndpointConfigName'
-    -> NonEmpty ProductionVariant -- ^ 'cecProductionVariants'
-    -> CreateEndpointConfig
-createEndpointConfig pEndpointConfigName_ pProductionVariants_ =
-  CreateEndpointConfig'
-    { _cecKMSKeyId = Nothing
-    , _cecTags = Nothing
-    , _cecEndpointConfigName = pEndpointConfigName_
-    , _cecProductionVariants = _List1 # pProductionVariants_
-    }
-
-
--- | The Amazon Resource Name (ARN) of a AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint.
-cecKMSKeyId :: Lens' CreateEndpointConfig (Maybe Text)
-cecKMSKeyId = lens _cecKMSKeyId (\ s a -> s{_cecKMSKeyId = a})
-
--- | An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
-cecTags :: Lens' CreateEndpointConfig [Tag]
-cecTags = lens _cecTags (\ s a -> s{_cecTags = a}) . _Default . _Coerce
-
--- | The name of the endpoint configuration. You specify this name in a <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html CreateEndpoint> request.
-cecEndpointConfigName :: Lens' CreateEndpointConfig Text
-cecEndpointConfigName = lens _cecEndpointConfigName (\ s a -> s{_cecEndpointConfigName = a})
-
--- | An array of @ProductionVariant@ objects, one for each model that you want to host at this endpoint.
-cecProductionVariants :: Lens' CreateEndpointConfig (NonEmpty ProductionVariant)
-cecProductionVariants = lens _cecProductionVariants (\ s a -> s{_cecProductionVariants = a}) . _List1
-
-instance AWSRequest CreateEndpointConfig where
-        type Rs CreateEndpointConfig =
-             CreateEndpointConfigResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateEndpointConfigResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "EndpointConfigArn"))
-
-instance Hashable CreateEndpointConfig where
-
-instance NFData CreateEndpointConfig where
-
-instance ToHeaders CreateEndpointConfig where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreateEndpointConfig" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateEndpointConfig where
-        toJSON CreateEndpointConfig'{..}
-          = object
-              (catMaybes
-                 [("KmsKeyId" .=) <$> _cecKMSKeyId,
-                  ("Tags" .=) <$> _cecTags,
-                  Just
-                    ("EndpointConfigName" .= _cecEndpointConfigName),
-                  Just
-                    ("ProductionVariants" .= _cecProductionVariants)])
-
-instance ToPath CreateEndpointConfig where
-        toPath = const "/"
-
-instance ToQuery CreateEndpointConfig where
-        toQuery = const mempty
-
--- | /See:/ 'createEndpointConfigResponse' smart constructor.
-data CreateEndpointConfigResponse = CreateEndpointConfigResponse'
-  { _cecrsResponseStatus    :: !Int
-  , _cecrsEndpointConfigARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateEndpointConfigResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cecrsResponseStatus' - -- | The response status code.
---
--- * 'cecrsEndpointConfigARN' - The Amazon Resource Name (ARN) of the endpoint configuration.
-createEndpointConfigResponse
-    :: Int -- ^ 'cecrsResponseStatus'
-    -> Text -- ^ 'cecrsEndpointConfigARN'
-    -> CreateEndpointConfigResponse
-createEndpointConfigResponse pResponseStatus_ pEndpointConfigARN_ =
-  CreateEndpointConfigResponse'
-    { _cecrsResponseStatus = pResponseStatus_
-    , _cecrsEndpointConfigARN = pEndpointConfigARN_
-    }
-
-
--- | -- | The response status code.
-cecrsResponseStatus :: Lens' CreateEndpointConfigResponse Int
-cecrsResponseStatus = lens _cecrsResponseStatus (\ s a -> s{_cecrsResponseStatus = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint configuration.
-cecrsEndpointConfigARN :: Lens' CreateEndpointConfigResponse Text
-cecrsEndpointConfigARN = lens _cecrsEndpointConfigARN (\ s a -> s{_cecrsEndpointConfigARN = a})
-
-instance NFData CreateEndpointConfigResponse where
diff --git a/gen/Network/AWS/SageMaker/CreateModel.hs b/gen/Network/AWS/SageMaker/CreateModel.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreateModel.hs
+++ /dev/null
@@ -1,186 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreateModel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a model in Amazon SageMaker. In the request, you name the model and describe one or more containers. For each container, you specify the docker image containing inference code, artifacts (from prior training), and custom environment map that the inference code uses when you deploy the model into production.
---
---
--- Use this API to create a model only if you want to use Amazon SageMaker hosting services. To host your model, you create an endpoint configuration with the @CreateEndpointConfig@ API, and then create an endpoint with the @CreateEndpoint@ API.
---
--- Amazon SageMaker then deploys all of the containers that you defined for the model in the hosting environment.
---
--- In the @CreateModel@ request, you must define a container with the @PrimaryContainer@ parameter.
---
--- In the request, you also provide an IAM role that Amazon SageMaker can assume to access model artifacts and docker image for deployment on ML compute hosting instances. In addition, you also use the IAM role to manage permissions the inference code needs. For example, if the inference code access any other AWS resources, you grant necessary permissions via this role.
---
-module Network.AWS.SageMaker.CreateModel
-    (
-    -- * Creating a Request
-      createModel
-    , CreateModel
-    -- * Request Lenses
-    , cmVPCConfig
-    , cmTags
-    , cmModelName
-    , cmPrimaryContainer
-    , cmExecutionRoleARN
-
-    -- * Destructuring the Response
-    , createModelResponse
-    , CreateModelResponse
-    -- * Response Lenses
-    , cmrsResponseStatus
-    , cmrsModelARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createModel' smart constructor.
-data CreateModel = CreateModel'
-  { _cmVPCConfig        :: !(Maybe VPCConfig)
-  , _cmTags             :: !(Maybe [Tag])
-  , _cmModelName        :: !Text
-  , _cmPrimaryContainer :: !ContainerDefinition
-  , _cmExecutionRoleARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateModel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmVPCConfig' - A object that specifies the VPC that you want your model to connect to. Control access to and from your training container by configuring the VPC. For more information, see 'host-vpc' .
---
--- * 'cmTags' - An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
---
--- * 'cmModelName' - The name of the new model.
---
--- * 'cmPrimaryContainer' - The location of the primary docker image containing inference code, associated artifacts, and custom environment map that the inference code uses when the model is deployed into production.
---
--- * 'cmExecutionRoleARN' - The Amazon Resource Name (ARN) of the IAM role that Amazon SageMaker can assume to access model artifacts and docker image for deployment on ML compute instances. Deploying on ML compute instances is part of model hosting. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles> .
-createModel
-    :: Text -- ^ 'cmModelName'
-    -> ContainerDefinition -- ^ 'cmPrimaryContainer'
-    -> Text -- ^ 'cmExecutionRoleARN'
-    -> CreateModel
-createModel pModelName_ pPrimaryContainer_ pExecutionRoleARN_ =
-  CreateModel'
-    { _cmVPCConfig = Nothing
-    , _cmTags = Nothing
-    , _cmModelName = pModelName_
-    , _cmPrimaryContainer = pPrimaryContainer_
-    , _cmExecutionRoleARN = pExecutionRoleARN_
-    }
-
-
--- | A object that specifies the VPC that you want your model to connect to. Control access to and from your training container by configuring the VPC. For more information, see 'host-vpc' .
-cmVPCConfig :: Lens' CreateModel (Maybe VPCConfig)
-cmVPCConfig = lens _cmVPCConfig (\ s a -> s{_cmVPCConfig = a})
-
--- | An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
-cmTags :: Lens' CreateModel [Tag]
-cmTags = lens _cmTags (\ s a -> s{_cmTags = a}) . _Default . _Coerce
-
--- | The name of the new model.
-cmModelName :: Lens' CreateModel Text
-cmModelName = lens _cmModelName (\ s a -> s{_cmModelName = a})
-
--- | The location of the primary docker image containing inference code, associated artifacts, and custom environment map that the inference code uses when the model is deployed into production.
-cmPrimaryContainer :: Lens' CreateModel ContainerDefinition
-cmPrimaryContainer = lens _cmPrimaryContainer (\ s a -> s{_cmPrimaryContainer = a})
-
--- | The Amazon Resource Name (ARN) of the IAM role that Amazon SageMaker can assume to access model artifacts and docker image for deployment on ML compute instances. Deploying on ML compute instances is part of model hosting. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles> .
-cmExecutionRoleARN :: Lens' CreateModel Text
-cmExecutionRoleARN = lens _cmExecutionRoleARN (\ s a -> s{_cmExecutionRoleARN = a})
-
-instance AWSRequest CreateModel where
-        type Rs CreateModel = CreateModelResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateModelResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "ModelArn"))
-
-instance Hashable CreateModel where
-
-instance NFData CreateModel where
-
-instance ToHeaders CreateModel where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreateModel" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateModel where
-        toJSON CreateModel'{..}
-          = object
-              (catMaybes
-                 [("VpcConfig" .=) <$> _cmVPCConfig,
-                  ("Tags" .=) <$> _cmTags,
-                  Just ("ModelName" .= _cmModelName),
-                  Just ("PrimaryContainer" .= _cmPrimaryContainer),
-                  Just ("ExecutionRoleArn" .= _cmExecutionRoleARN)])
-
-instance ToPath CreateModel where
-        toPath = const "/"
-
-instance ToQuery CreateModel where
-        toQuery = const mempty
-
--- | /See:/ 'createModelResponse' smart constructor.
-data CreateModelResponse = CreateModelResponse'
-  { _cmrsResponseStatus :: !Int
-  , _cmrsModelARN       :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateModelResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmrsResponseStatus' - -- | The response status code.
---
--- * 'cmrsModelARN' - The ARN of the model created in Amazon SageMaker.
-createModelResponse
-    :: Int -- ^ 'cmrsResponseStatus'
-    -> Text -- ^ 'cmrsModelARN'
-    -> CreateModelResponse
-createModelResponse pResponseStatus_ pModelARN_ =
-  CreateModelResponse'
-    {_cmrsResponseStatus = pResponseStatus_, _cmrsModelARN = pModelARN_}
-
-
--- | -- | The response status code.
-cmrsResponseStatus :: Lens' CreateModelResponse Int
-cmrsResponseStatus = lens _cmrsResponseStatus (\ s a -> s{_cmrsResponseStatus = a})
-
--- | The ARN of the model created in Amazon SageMaker.
-cmrsModelARN :: Lens' CreateModelResponse Text
-cmrsModelARN = lens _cmrsModelARN (\ s a -> s{_cmrsModelARN = a})
-
-instance NFData CreateModelResponse where
diff --git a/gen/Network/AWS/SageMaker/CreateNotebookInstance.hs b/gen/Network/AWS/SageMaker/CreateNotebookInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreateNotebookInstance.hs
+++ /dev/null
@@ -1,244 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreateNotebookInstance
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an Amazon SageMaker notebook instance. A notebook instance is a machine learning (ML) compute instance running on a Jupyter notebook.
---
---
--- In a @CreateNotebookInstance@ request, specify the type of ML compute instance that you want to run. Amazon SageMaker launches the instance, installs common libraries that you can use to explore datasets for model training, and attaches an ML storage volume to the notebook instance.
---
--- Amazon SageMaker also provides a set of example notebooks. Each notebook demonstrates how to use Amazon SageMaker with a specific algorithm or with a machine learning framework.
---
--- After receiving the request, Amazon SageMaker does the following:
---
---     * Creates a network interface in the Amazon SageMaker VPC.
---
---     * (Option) If you specified @SubnetId@ , Amazon SageMaker creates a network interface in your own VPC, which is inferred from the subnet ID that you provide in the input. When creating this network interface, Amazon SageMaker attaches the security group that you specified in the request to the network interface that it creates in your VPC.
---
---     * Launches an EC2 instance of the type specified in the request in the Amazon SageMaker VPC. If you specified @SubnetId@ of your VPC, Amazon SageMaker specifies both network interfaces when launching this instance. This enables inbound traffic from your own VPC to the notebook instance, assuming that the security groups allow it.
---
---
---
--- After creating the notebook instance, Amazon SageMaker returns its Amazon Resource Name (ARN).
---
--- After Amazon SageMaker creates the notebook instance, you can connect to the Jupyter server and work in Jupyter notebooks. For example, you can write code to explore a dataset that you can use for model training, train a model, host models by creating Amazon SageMaker endpoints, and validate hosted models.
---
--- For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works.html How It Works> .
---
-module Network.AWS.SageMaker.CreateNotebookInstance
-    (
-    -- * Creating a Request
-      createNotebookInstance
-    , CreateNotebookInstance
-    -- * Request Lenses
-    , cniSecurityGroupIds
-    , cniLifecycleConfigName
-    , cniSubnetId
-    , cniKMSKeyId
-    , cniDirectInternetAccess
-    , cniTags
-    , cniNotebookInstanceName
-    , cniInstanceType
-    , cniRoleARN
-
-    -- * Destructuring the Response
-    , createNotebookInstanceResponse
-    , CreateNotebookInstanceResponse
-    -- * Response Lenses
-    , cnirsNotebookInstanceARN
-    , cnirsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createNotebookInstance' smart constructor.
-data CreateNotebookInstance = CreateNotebookInstance'
-  { _cniSecurityGroupIds     :: !(Maybe [Text])
-  , _cniLifecycleConfigName  :: !(Maybe Text)
-  , _cniSubnetId             :: !(Maybe Text)
-  , _cniKMSKeyId             :: !(Maybe Text)
-  , _cniDirectInternetAccess :: !(Maybe DirectInternetAccess)
-  , _cniTags                 :: !(Maybe [Tag])
-  , _cniNotebookInstanceName :: !Text
-  , _cniInstanceType         :: !InstanceType
-  , _cniRoleARN              :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateNotebookInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cniSecurityGroupIds' - The VPC security group IDs, in the form sg-xxxxxxxx. The security groups must be for the same VPC as specified in the subnet.
---
--- * 'cniLifecycleConfigName' - The name of a lifecycle configuration to associate with the notebook instance. For information about lifestyle configurations, see 'notebook-lifecycle-config' .
---
--- * 'cniSubnetId' - The ID of the subnet in a VPC to which you would like to have a connectivity from your ML compute instance.
---
--- * 'cniKMSKeyId' - If you provide a AWS KMS key ID, Amazon SageMaker uses it to encrypt data at rest on the ML storage volume that is attached to your notebook instance.
---
--- * 'cniDirectInternetAccess' - Sets whether Amazon SageMaker provides internet access to the notebook instance. If you set this to @Disabled@ this notebook instance will be able to access resources only in your VPC, and will not be able to connect to Amazon SageMaker training and endpoint services unless your configure a NAT Gateway in your VPC. For more information, see 'appendix-notebook-and-internet-access' . You can set the value of this parameter to @Disabled@ only if you set a value for the @SubnetId@ parameter.
---
--- * 'cniTags' - A list of tags to associate with the notebook instance. You can add tags later by using the @CreateTags@ API.
---
--- * 'cniNotebookInstanceName' - The name of the new notebook instance.
---
--- * 'cniInstanceType' - The type of ML compute instance to launch for the notebook instance.
---
--- * 'cniRoleARN' - When you send any requests to AWS resources from the notebook instance, Amazon SageMaker assumes this role to perform tasks on your behalf. You must grant this role necessary permissions so Amazon SageMaker can perform these tasks. The policy must allow the Amazon SageMaker service principal (sagemaker.amazonaws.com) permissions to assume this role. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles> .
-createNotebookInstance
-    :: Text -- ^ 'cniNotebookInstanceName'
-    -> InstanceType -- ^ 'cniInstanceType'
-    -> Text -- ^ 'cniRoleARN'
-    -> CreateNotebookInstance
-createNotebookInstance pNotebookInstanceName_ pInstanceType_ pRoleARN_ =
-  CreateNotebookInstance'
-    { _cniSecurityGroupIds = Nothing
-    , _cniLifecycleConfigName = Nothing
-    , _cniSubnetId = Nothing
-    , _cniKMSKeyId = Nothing
-    , _cniDirectInternetAccess = Nothing
-    , _cniTags = Nothing
-    , _cniNotebookInstanceName = pNotebookInstanceName_
-    , _cniInstanceType = pInstanceType_
-    , _cniRoleARN = pRoleARN_
-    }
-
-
--- | The VPC security group IDs, in the form sg-xxxxxxxx. The security groups must be for the same VPC as specified in the subnet.
-cniSecurityGroupIds :: Lens' CreateNotebookInstance [Text]
-cniSecurityGroupIds = lens _cniSecurityGroupIds (\ s a -> s{_cniSecurityGroupIds = a}) . _Default . _Coerce
-
--- | The name of a lifecycle configuration to associate with the notebook instance. For information about lifestyle configurations, see 'notebook-lifecycle-config' .
-cniLifecycleConfigName :: Lens' CreateNotebookInstance (Maybe Text)
-cniLifecycleConfigName = lens _cniLifecycleConfigName (\ s a -> s{_cniLifecycleConfigName = a})
-
--- | The ID of the subnet in a VPC to which you would like to have a connectivity from your ML compute instance.
-cniSubnetId :: Lens' CreateNotebookInstance (Maybe Text)
-cniSubnetId = lens _cniSubnetId (\ s a -> s{_cniSubnetId = a})
-
--- | If you provide a AWS KMS key ID, Amazon SageMaker uses it to encrypt data at rest on the ML storage volume that is attached to your notebook instance.
-cniKMSKeyId :: Lens' CreateNotebookInstance (Maybe Text)
-cniKMSKeyId = lens _cniKMSKeyId (\ s a -> s{_cniKMSKeyId = a})
-
--- | Sets whether Amazon SageMaker provides internet access to the notebook instance. If you set this to @Disabled@ this notebook instance will be able to access resources only in your VPC, and will not be able to connect to Amazon SageMaker training and endpoint services unless your configure a NAT Gateway in your VPC. For more information, see 'appendix-notebook-and-internet-access' . You can set the value of this parameter to @Disabled@ only if you set a value for the @SubnetId@ parameter.
-cniDirectInternetAccess :: Lens' CreateNotebookInstance (Maybe DirectInternetAccess)
-cniDirectInternetAccess = lens _cniDirectInternetAccess (\ s a -> s{_cniDirectInternetAccess = a})
-
--- | A list of tags to associate with the notebook instance. You can add tags later by using the @CreateTags@ API.
-cniTags :: Lens' CreateNotebookInstance [Tag]
-cniTags = lens _cniTags (\ s a -> s{_cniTags = a}) . _Default . _Coerce
-
--- | The name of the new notebook instance.
-cniNotebookInstanceName :: Lens' CreateNotebookInstance Text
-cniNotebookInstanceName = lens _cniNotebookInstanceName (\ s a -> s{_cniNotebookInstanceName = a})
-
--- | The type of ML compute instance to launch for the notebook instance.
-cniInstanceType :: Lens' CreateNotebookInstance InstanceType
-cniInstanceType = lens _cniInstanceType (\ s a -> s{_cniInstanceType = a})
-
--- | When you send any requests to AWS resources from the notebook instance, Amazon SageMaker assumes this role to perform tasks on your behalf. You must grant this role necessary permissions so Amazon SageMaker can perform these tasks. The policy must allow the Amazon SageMaker service principal (sagemaker.amazonaws.com) permissions to assume this role. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles> .
-cniRoleARN :: Lens' CreateNotebookInstance Text
-cniRoleARN = lens _cniRoleARN (\ s a -> s{_cniRoleARN = a})
-
-instance AWSRequest CreateNotebookInstance where
-        type Rs CreateNotebookInstance =
-             CreateNotebookInstanceResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateNotebookInstanceResponse' <$>
-                   (x .?> "NotebookInstanceArn") <*>
-                     (pure (fromEnum s)))
-
-instance Hashable CreateNotebookInstance where
-
-instance NFData CreateNotebookInstance where
-
-instance ToHeaders CreateNotebookInstance where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreateNotebookInstance" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateNotebookInstance where
-        toJSON CreateNotebookInstance'{..}
-          = object
-              (catMaybes
-                 [("SecurityGroupIds" .=) <$> _cniSecurityGroupIds,
-                  ("LifecycleConfigName" .=) <$>
-                    _cniLifecycleConfigName,
-                  ("SubnetId" .=) <$> _cniSubnetId,
-                  ("KmsKeyId" .=) <$> _cniKMSKeyId,
-                  ("DirectInternetAccess" .=) <$>
-                    _cniDirectInternetAccess,
-                  ("Tags" .=) <$> _cniTags,
-                  Just
-                    ("NotebookInstanceName" .= _cniNotebookInstanceName),
-                  Just ("InstanceType" .= _cniInstanceType),
-                  Just ("RoleArn" .= _cniRoleARN)])
-
-instance ToPath CreateNotebookInstance where
-        toPath = const "/"
-
-instance ToQuery CreateNotebookInstance where
-        toQuery = const mempty
-
--- | /See:/ 'createNotebookInstanceResponse' smart constructor.
-data CreateNotebookInstanceResponse = CreateNotebookInstanceResponse'
-  { _cnirsNotebookInstanceARN :: !(Maybe Text)
-  , _cnirsResponseStatus      :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateNotebookInstanceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cnirsNotebookInstanceARN' - The Amazon Resource Name (ARN) of the notebook instance.
---
--- * 'cnirsResponseStatus' - -- | The response status code.
-createNotebookInstanceResponse
-    :: Int -- ^ 'cnirsResponseStatus'
-    -> CreateNotebookInstanceResponse
-createNotebookInstanceResponse pResponseStatus_ =
-  CreateNotebookInstanceResponse'
-    { _cnirsNotebookInstanceARN = Nothing
-    , _cnirsResponseStatus = pResponseStatus_
-    }
-
-
--- | The Amazon Resource Name (ARN) of the notebook instance.
-cnirsNotebookInstanceARN :: Lens' CreateNotebookInstanceResponse (Maybe Text)
-cnirsNotebookInstanceARN = lens _cnirsNotebookInstanceARN (\ s a -> s{_cnirsNotebookInstanceARN = a})
-
--- | -- | The response status code.
-cnirsResponseStatus :: Lens' CreateNotebookInstanceResponse Int
-cnirsResponseStatus = lens _cnirsResponseStatus (\ s a -> s{_cnirsResponseStatus = a})
-
-instance NFData CreateNotebookInstanceResponse where
diff --git a/gen/Network/AWS/SageMaker/CreateNotebookInstanceLifecycleConfig.hs b/gen/Network/AWS/SageMaker/CreateNotebookInstanceLifecycleConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreateNotebookInstanceLifecycleConfig.hs
+++ /dev/null
@@ -1,186 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreateNotebookInstanceLifecycleConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a lifecycle configuration that you can associate with a notebook instance. A /lifecycle configuration/ is a collection of shell scripts that run when you create or start a notebook instance.
---
---
--- Each lifecycle configuration script has a limit of 16384 characters.
---
--- The value of the @> PATH@ environment variable that is available to both scripts is @/sbin:bin:/usr/sbin:/usr/bin@ .
---
--- View CloudWatch Logs for notebook instance lifecycle configurations in log group @/aws/sagemaker/NotebookInstances@ in log stream @[notebook-instance-name]/[LifecycleConfigHook]@ .
---
--- Lifecycle configuration scripts cannot run for longer than 5 minutes. If a script runs for longer than 5 minutes, it fails and the notebook instance is not created or started.
---
--- For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
---
-module Network.AWS.SageMaker.CreateNotebookInstanceLifecycleConfig
-    (
-    -- * Creating a Request
-      createNotebookInstanceLifecycleConfig
-    , CreateNotebookInstanceLifecycleConfig
-    -- * Request Lenses
-    , cnilcOnCreate
-    , cnilcOnStart
-    , cnilcNotebookInstanceLifecycleConfigName
-
-    -- * Destructuring the Response
-    , createNotebookInstanceLifecycleConfigResponse
-    , CreateNotebookInstanceLifecycleConfigResponse
-    -- * Response Lenses
-    , cnilcrsNotebookInstanceLifecycleConfigARN
-    , cnilcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createNotebookInstanceLifecycleConfig' smart constructor.
-data CreateNotebookInstanceLifecycleConfig = CreateNotebookInstanceLifecycleConfig'
-  { _cnilcOnCreate :: !(Maybe [NotebookInstanceLifecycleHook])
-  , _cnilcOnStart :: !(Maybe [NotebookInstanceLifecycleHook])
-  , _cnilcNotebookInstanceLifecycleConfigName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateNotebookInstanceLifecycleConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cnilcOnCreate' - A shell script that runs only once, when you create a notebook instance.
---
--- * 'cnilcOnStart' - A shell script that runs every time you start a notebook instance, including when you create the notebook instance.
---
--- * 'cnilcNotebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
-createNotebookInstanceLifecycleConfig
-    :: Text -- ^ 'cnilcNotebookInstanceLifecycleConfigName'
-    -> CreateNotebookInstanceLifecycleConfig
-createNotebookInstanceLifecycleConfig pNotebookInstanceLifecycleConfigName_ =
-  CreateNotebookInstanceLifecycleConfig'
-    { _cnilcOnCreate = Nothing
-    , _cnilcOnStart = Nothing
-    , _cnilcNotebookInstanceLifecycleConfigName =
-        pNotebookInstanceLifecycleConfigName_
-    }
-
-
--- | A shell script that runs only once, when you create a notebook instance.
-cnilcOnCreate :: Lens' CreateNotebookInstanceLifecycleConfig [NotebookInstanceLifecycleHook]
-cnilcOnCreate = lens _cnilcOnCreate (\ s a -> s{_cnilcOnCreate = a}) . _Default . _Coerce
-
--- | A shell script that runs every time you start a notebook instance, including when you create the notebook instance.
-cnilcOnStart :: Lens' CreateNotebookInstanceLifecycleConfig [NotebookInstanceLifecycleHook]
-cnilcOnStart = lens _cnilcOnStart (\ s a -> s{_cnilcOnStart = a}) . _Default . _Coerce
-
--- | The name of the lifecycle configuration.
-cnilcNotebookInstanceLifecycleConfigName :: Lens' CreateNotebookInstanceLifecycleConfig Text
-cnilcNotebookInstanceLifecycleConfigName = lens _cnilcNotebookInstanceLifecycleConfigName (\ s a -> s{_cnilcNotebookInstanceLifecycleConfigName = a})
-
-instance AWSRequest
-           CreateNotebookInstanceLifecycleConfig
-         where
-        type Rs CreateNotebookInstanceLifecycleConfig =
-             CreateNotebookInstanceLifecycleConfigResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateNotebookInstanceLifecycleConfigResponse' <$>
-                   (x .?> "NotebookInstanceLifecycleConfigArn") <*>
-                     (pure (fromEnum s)))
-
-instance Hashable
-           CreateNotebookInstanceLifecycleConfig
-         where
-
-instance NFData CreateNotebookInstanceLifecycleConfig
-         where
-
-instance ToHeaders
-           CreateNotebookInstanceLifecycleConfig
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreateNotebookInstanceLifecycleConfig" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateNotebookInstanceLifecycleConfig
-         where
-        toJSON CreateNotebookInstanceLifecycleConfig'{..}
-          = object
-              (catMaybes
-                 [("OnCreate" .=) <$> _cnilcOnCreate,
-                  ("OnStart" .=) <$> _cnilcOnStart,
-                  Just
-                    ("NotebookInstanceLifecycleConfigName" .=
-                       _cnilcNotebookInstanceLifecycleConfigName)])
-
-instance ToPath CreateNotebookInstanceLifecycleConfig
-         where
-        toPath = const "/"
-
-instance ToQuery
-           CreateNotebookInstanceLifecycleConfig
-         where
-        toQuery = const mempty
-
--- | /See:/ 'createNotebookInstanceLifecycleConfigResponse' smart constructor.
-data CreateNotebookInstanceLifecycleConfigResponse = CreateNotebookInstanceLifecycleConfigResponse'
-  { _cnilcrsNotebookInstanceLifecycleConfigARN :: !(Maybe Text)
-  , _cnilcrsResponseStatus                     :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateNotebookInstanceLifecycleConfigResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cnilcrsNotebookInstanceLifecycleConfigARN' - The Amazon Resource Name (ARN) of the lifecycle configuration.
---
--- * 'cnilcrsResponseStatus' - -- | The response status code.
-createNotebookInstanceLifecycleConfigResponse
-    :: Int -- ^ 'cnilcrsResponseStatus'
-    -> CreateNotebookInstanceLifecycleConfigResponse
-createNotebookInstanceLifecycleConfigResponse pResponseStatus_ =
-  CreateNotebookInstanceLifecycleConfigResponse'
-    { _cnilcrsNotebookInstanceLifecycleConfigARN = Nothing
-    , _cnilcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The Amazon Resource Name (ARN) of the lifecycle configuration.
-cnilcrsNotebookInstanceLifecycleConfigARN :: Lens' CreateNotebookInstanceLifecycleConfigResponse (Maybe Text)
-cnilcrsNotebookInstanceLifecycleConfigARN = lens _cnilcrsNotebookInstanceLifecycleConfigARN (\ s a -> s{_cnilcrsNotebookInstanceLifecycleConfigARN = a})
-
--- | -- | The response status code.
-cnilcrsResponseStatus :: Lens' CreateNotebookInstanceLifecycleConfigResponse Int
-cnilcrsResponseStatus = lens _cnilcrsResponseStatus (\ s a -> s{_cnilcrsResponseStatus = a})
-
-instance NFData
-           CreateNotebookInstanceLifecycleConfigResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/CreatePresignedNotebookInstanceURL.hs b/gen/Network/AWS/SageMaker/CreatePresignedNotebookInstanceURL.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreatePresignedNotebookInstanceURL.hs
+++ /dev/null
@@ -1,160 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreatePresignedNotebookInstanceURL
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a URL that you can use to connect to the Juypter server from a notebook instance. In the Amazon SageMaker console, when you choose @Open@ next to a notebook instance, Amazon SageMaker opens a new tab showing the Jupyter server home page from the notebook instance. The console uses this API to get the URL and show the page.
---
---
-module Network.AWS.SageMaker.CreatePresignedNotebookInstanceURL
-    (
-    -- * Creating a Request
-      createPresignedNotebookInstanceURL
-    , CreatePresignedNotebookInstanceURL
-    -- * Request Lenses
-    , cpniuSessionExpirationDurationInSeconds
-    , cpniuNotebookInstanceName
-
-    -- * Destructuring the Response
-    , createPresignedNotebookInstanceURLResponse
-    , CreatePresignedNotebookInstanceURLResponse
-    -- * Response Lenses
-    , cpniursAuthorizedURL
-    , cpniursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createPresignedNotebookInstanceURL' smart constructor.
-data CreatePresignedNotebookInstanceURL = CreatePresignedNotebookInstanceURL'
-  { _cpniuSessionExpirationDurationInSeconds :: !(Maybe Nat)
-  , _cpniuNotebookInstanceName               :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreatePresignedNotebookInstanceURL' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpniuSessionExpirationDurationInSeconds' - The duration of the session, in seconds. The default is 12 hours.
---
--- * 'cpniuNotebookInstanceName' - The name of the notebook instance.
-createPresignedNotebookInstanceURL
-    :: Text -- ^ 'cpniuNotebookInstanceName'
-    -> CreatePresignedNotebookInstanceURL
-createPresignedNotebookInstanceURL pNotebookInstanceName_ =
-  CreatePresignedNotebookInstanceURL'
-    { _cpniuSessionExpirationDurationInSeconds = Nothing
-    , _cpniuNotebookInstanceName = pNotebookInstanceName_
-    }
-
-
--- | The duration of the session, in seconds. The default is 12 hours.
-cpniuSessionExpirationDurationInSeconds :: Lens' CreatePresignedNotebookInstanceURL (Maybe Natural)
-cpniuSessionExpirationDurationInSeconds = lens _cpniuSessionExpirationDurationInSeconds (\ s a -> s{_cpniuSessionExpirationDurationInSeconds = a}) . mapping _Nat
-
--- | The name of the notebook instance.
-cpniuNotebookInstanceName :: Lens' CreatePresignedNotebookInstanceURL Text
-cpniuNotebookInstanceName = lens _cpniuNotebookInstanceName (\ s a -> s{_cpniuNotebookInstanceName = a})
-
-instance AWSRequest
-           CreatePresignedNotebookInstanceURL
-         where
-        type Rs CreatePresignedNotebookInstanceURL =
-             CreatePresignedNotebookInstanceURLResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreatePresignedNotebookInstanceURLResponse' <$>
-                   (x .?> "AuthorizedUrl") <*> (pure (fromEnum s)))
-
-instance Hashable CreatePresignedNotebookInstanceURL
-         where
-
-instance NFData CreatePresignedNotebookInstanceURL
-         where
-
-instance ToHeaders CreatePresignedNotebookInstanceURL
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreatePresignedNotebookInstanceUrl" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreatePresignedNotebookInstanceURL
-         where
-        toJSON CreatePresignedNotebookInstanceURL'{..}
-          = object
-              (catMaybes
-                 [("SessionExpirationDurationInSeconds" .=) <$>
-                    _cpniuSessionExpirationDurationInSeconds,
-                  Just
-                    ("NotebookInstanceName" .=
-                       _cpniuNotebookInstanceName)])
-
-instance ToPath CreatePresignedNotebookInstanceURL
-         where
-        toPath = const "/"
-
-instance ToQuery CreatePresignedNotebookInstanceURL
-         where
-        toQuery = const mempty
-
--- | /See:/ 'createPresignedNotebookInstanceURLResponse' smart constructor.
-data CreatePresignedNotebookInstanceURLResponse = CreatePresignedNotebookInstanceURLResponse'
-  { _cpniursAuthorizedURL  :: !(Maybe Text)
-  , _cpniursResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreatePresignedNotebookInstanceURLResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpniursAuthorizedURL' - A JSON object that contains the URL string.
---
--- * 'cpniursResponseStatus' - -- | The response status code.
-createPresignedNotebookInstanceURLResponse
-    :: Int -- ^ 'cpniursResponseStatus'
-    -> CreatePresignedNotebookInstanceURLResponse
-createPresignedNotebookInstanceURLResponse pResponseStatus_ =
-  CreatePresignedNotebookInstanceURLResponse'
-    {_cpniursAuthorizedURL = Nothing, _cpniursResponseStatus = pResponseStatus_}
-
-
--- | A JSON object that contains the URL string.
-cpniursAuthorizedURL :: Lens' CreatePresignedNotebookInstanceURLResponse (Maybe Text)
-cpniursAuthorizedURL = lens _cpniursAuthorizedURL (\ s a -> s{_cpniursAuthorizedURL = a})
-
--- | -- | The response status code.
-cpniursResponseStatus :: Lens' CreatePresignedNotebookInstanceURLResponse Int
-cpniursResponseStatus = lens _cpniursResponseStatus (\ s a -> s{_cpniursResponseStatus = a})
-
-instance NFData
-           CreatePresignedNotebookInstanceURLResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/CreateTrainingJob.hs b/gen/Network/AWS/SageMaker/CreateTrainingJob.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/CreateTrainingJob.hs
+++ /dev/null
@@ -1,260 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.CreateTrainingJob
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Starts a model training job. After training completes, Amazon SageMaker saves the resulting model artifacts to an Amazon S3 location that you specify.
---
---
--- If you choose to host your model using Amazon SageMaker hosting services, you can use the resulting model artifacts as part of the model. You can also use the artifacts in a deep learning service other than Amazon SageMaker, provided that you know how to use them for inferences.
---
--- In the request body, you provide the following:
---
---     * @AlgorithmSpecification@ - Identifies the training algorithm to use.
---
---     * @HyperParameters@ - Specify these algorithm-specific parameters to influence the quality of the final model. For a list of hyperparameters for each training algorithm provided by Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> .
---
---     * @InputDataConfig@ - Describes the training dataset and the Amazon S3 location where it is stored.
---
---     * @OutputDataConfig@ - Identifies the Amazon S3 location where you want Amazon SageMaker to save the results of model training.
---
---
---
---     * @ResourceConfig@ - Identifies the resources, ML compute instances, and ML storage volumes to deploy for model training. In distributed training, you specify more than one instance.
---
---     * @RoleARN@ - The Amazon Resource Number (ARN) that Amazon SageMaker assumes to perform tasks on your behalf during model training. You must grant this role the necessary permissions so that Amazon SageMaker can successfully complete model training.
---
---     * @StoppingCondition@ - Sets a duration for training. Use this parameter to cap model training costs.
---
---
---
--- For more information about Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works.html How It Works> .
---
-module Network.AWS.SageMaker.CreateTrainingJob
-    (
-    -- * Creating a Request
-      createTrainingJob
-    , CreateTrainingJob
-    -- * Request Lenses
-    , ctjHyperParameters
-    , ctjVPCConfig
-    , ctjTags
-    , ctjTrainingJobName
-    , ctjAlgorithmSpecification
-    , ctjRoleARN
-    , ctjInputDataConfig
-    , ctjOutputDataConfig
-    , ctjResourceConfig
-    , ctjStoppingCondition
-
-    -- * Destructuring the Response
-    , createTrainingJobResponse
-    , CreateTrainingJobResponse
-    -- * Response Lenses
-    , ctjrsResponseStatus
-    , ctjrsTrainingJobARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'createTrainingJob' smart constructor.
-data CreateTrainingJob = CreateTrainingJob'
-  { _ctjHyperParameters        :: !(Maybe (Map Text Text))
-  , _ctjVPCConfig              :: !(Maybe VPCConfig)
-  , _ctjTags                   :: !(Maybe [Tag])
-  , _ctjTrainingJobName        :: !Text
-  , _ctjAlgorithmSpecification :: !AlgorithmSpecification
-  , _ctjRoleARN                :: !Text
-  , _ctjInputDataConfig        :: !(List1 Channel)
-  , _ctjOutputDataConfig       :: !OutputDataConfig
-  , _ctjResourceConfig         :: !ResourceConfig
-  , _ctjStoppingCondition      :: !StoppingCondition
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateTrainingJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctjHyperParameters' - Algorithm-specific parameters. You set hyperparameters before you start the learning process. Hyperparameters influence the quality of the model. For a list of hyperparameters for each training algorithm provided by Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> .  You can specify a maximum of 100 hyperparameters. Each hyperparameter is a key-value pair. Each key and value is limited to 256 characters, as specified by the @Length Constraint@ .
---
--- * 'ctjVPCConfig' - A object that specifies the VPC that you want your training job to connect to. Control access to and from your training container by configuring the VPC. For more information, see 'train-vpc'
---
--- * 'ctjTags' - An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
---
--- * 'ctjTrainingJobName' - The name of the training job. The name must be unique within an AWS Region in an AWS account. It appears in the Amazon SageMaker console.
---
--- * 'ctjAlgorithmSpecification' - The registry path of the Docker image that contains the training algorithm and algorithm-specific metadata, including the input mode. For more information about algorithms provided by Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> . For information about providing your own algorithms, see 'your-algorithms' .
---
--- * 'ctjRoleARN' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.  During model training, Amazon SageMaker needs your permission to read input data from an S3 bucket, download a Docker image that contains training code, write model artifacts to an S3 bucket, write logs to Amazon CloudWatch Logs, and publish metrics to Amazon CloudWatch. You grant permissions for all of these tasks to an IAM role. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles> .
---
--- * 'ctjInputDataConfig' - An array of @Channel@ objects. Each channel is a named input source. @InputDataConfig@ describes the input data and its location.  Algorithms can accept input data from one or more channels. For example, an algorithm might have two channels of input data, @training_data@ and @validation_data@ . The configuration for each channel provides the S3 location where the input data is stored. It also provides information about the stored data: the MIME type, compression method, and whether the data is wrapped in RecordIO format.  Depending on the input mode that the algorithm supports, Amazon SageMaker either copies input data files from an S3 bucket to a local directory in the Docker container, or makes it available as input streams.
---
--- * 'ctjOutputDataConfig' - Specifies the path to the S3 bucket where you want to store model artifacts. Amazon SageMaker creates subfolders for the artifacts.
---
--- * 'ctjResourceConfig' - The resources, including the ML compute instances and ML storage volumes, to use for model training.  ML storage volumes store model artifacts and incremental states. Training algorithms might also use ML storage volumes for scratch space. If you want Amazon SageMaker to use the ML storage volume to store the training data, choose @File@ as the @TrainingInputMode@ in the algorithm specification. For distributed training algorithms, specify an instance count greater than 1.
---
--- * 'ctjStoppingCondition' - Sets a duration for training. Use this parameter to cap model training costs. To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@ signal, which delays job termination for 120 seconds. Algorithms might use this 120-second window to save the model artifacts.  When Amazon SageMaker terminates a job because the stopping condition has been met, training algorithms provided by Amazon SageMaker save the intermediate results of the job. This intermediate data is a valid model artifact. You can use it to create a model using the @CreateModel@ API.
-createTrainingJob
-    :: Text -- ^ 'ctjTrainingJobName'
-    -> AlgorithmSpecification -- ^ 'ctjAlgorithmSpecification'
-    -> Text -- ^ 'ctjRoleARN'
-    -> NonEmpty Channel -- ^ 'ctjInputDataConfig'
-    -> OutputDataConfig -- ^ 'ctjOutputDataConfig'
-    -> ResourceConfig -- ^ 'ctjResourceConfig'
-    -> StoppingCondition -- ^ 'ctjStoppingCondition'
-    -> CreateTrainingJob
-createTrainingJob pTrainingJobName_ pAlgorithmSpecification_ pRoleARN_ pInputDataConfig_ pOutputDataConfig_ pResourceConfig_ pStoppingCondition_ =
-  CreateTrainingJob'
-    { _ctjHyperParameters = Nothing
-    , _ctjVPCConfig = Nothing
-    , _ctjTags = Nothing
-    , _ctjTrainingJobName = pTrainingJobName_
-    , _ctjAlgorithmSpecification = pAlgorithmSpecification_
-    , _ctjRoleARN = pRoleARN_
-    , _ctjInputDataConfig = _List1 # pInputDataConfig_
-    , _ctjOutputDataConfig = pOutputDataConfig_
-    , _ctjResourceConfig = pResourceConfig_
-    , _ctjStoppingCondition = pStoppingCondition_
-    }
-
-
--- | Algorithm-specific parameters. You set hyperparameters before you start the learning process. Hyperparameters influence the quality of the model. For a list of hyperparameters for each training algorithm provided by Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> .  You can specify a maximum of 100 hyperparameters. Each hyperparameter is a key-value pair. Each key and value is limited to 256 characters, as specified by the @Length Constraint@ .
-ctjHyperParameters :: Lens' CreateTrainingJob (HashMap Text Text)
-ctjHyperParameters = lens _ctjHyperParameters (\ s a -> s{_ctjHyperParameters = a}) . _Default . _Map
-
--- | A object that specifies the VPC that you want your training job to connect to. Control access to and from your training container by configuring the VPC. For more information, see 'train-vpc'
-ctjVPCConfig :: Lens' CreateTrainingJob (Maybe VPCConfig)
-ctjVPCConfig = lens _ctjVPCConfig (\ s a -> s{_ctjVPCConfig = a})
-
--- | An array of key-value pairs. For more information, see <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Using Cost Allocation Tags> in the /AWS Billing and Cost Management User Guide/ .
-ctjTags :: Lens' CreateTrainingJob [Tag]
-ctjTags = lens _ctjTags (\ s a -> s{_ctjTags = a}) . _Default . _Coerce
-
--- | The name of the training job. The name must be unique within an AWS Region in an AWS account. It appears in the Amazon SageMaker console.
-ctjTrainingJobName :: Lens' CreateTrainingJob Text
-ctjTrainingJobName = lens _ctjTrainingJobName (\ s a -> s{_ctjTrainingJobName = a})
-
--- | The registry path of the Docker image that contains the training algorithm and algorithm-specific metadata, including the input mode. For more information about algorithms provided by Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> . For information about providing your own algorithms, see 'your-algorithms' .
-ctjAlgorithmSpecification :: Lens' CreateTrainingJob AlgorithmSpecification
-ctjAlgorithmSpecification = lens _ctjAlgorithmSpecification (\ s a -> s{_ctjAlgorithmSpecification = a})
-
--- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.  During model training, Amazon SageMaker needs your permission to read input data from an S3 bucket, download a Docker image that contains training code, write model artifacts to an S3 bucket, write logs to Amazon CloudWatch Logs, and publish metrics to Amazon CloudWatch. You grant permissions for all of these tasks to an IAM role. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html Amazon SageMaker Roles> .
-ctjRoleARN :: Lens' CreateTrainingJob Text
-ctjRoleARN = lens _ctjRoleARN (\ s a -> s{_ctjRoleARN = a})
-
--- | An array of @Channel@ objects. Each channel is a named input source. @InputDataConfig@ describes the input data and its location.  Algorithms can accept input data from one or more channels. For example, an algorithm might have two channels of input data, @training_data@ and @validation_data@ . The configuration for each channel provides the S3 location where the input data is stored. It also provides information about the stored data: the MIME type, compression method, and whether the data is wrapped in RecordIO format.  Depending on the input mode that the algorithm supports, Amazon SageMaker either copies input data files from an S3 bucket to a local directory in the Docker container, or makes it available as input streams.
-ctjInputDataConfig :: Lens' CreateTrainingJob (NonEmpty Channel)
-ctjInputDataConfig = lens _ctjInputDataConfig (\ s a -> s{_ctjInputDataConfig = a}) . _List1
-
--- | Specifies the path to the S3 bucket where you want to store model artifacts. Amazon SageMaker creates subfolders for the artifacts.
-ctjOutputDataConfig :: Lens' CreateTrainingJob OutputDataConfig
-ctjOutputDataConfig = lens _ctjOutputDataConfig (\ s a -> s{_ctjOutputDataConfig = a})
-
--- | The resources, including the ML compute instances and ML storage volumes, to use for model training.  ML storage volumes store model artifacts and incremental states. Training algorithms might also use ML storage volumes for scratch space. If you want Amazon SageMaker to use the ML storage volume to store the training data, choose @File@ as the @TrainingInputMode@ in the algorithm specification. For distributed training algorithms, specify an instance count greater than 1.
-ctjResourceConfig :: Lens' CreateTrainingJob ResourceConfig
-ctjResourceConfig = lens _ctjResourceConfig (\ s a -> s{_ctjResourceConfig = a})
-
--- | Sets a duration for training. Use this parameter to cap model training costs. To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@ signal, which delays job termination for 120 seconds. Algorithms might use this 120-second window to save the model artifacts.  When Amazon SageMaker terminates a job because the stopping condition has been met, training algorithms provided by Amazon SageMaker save the intermediate results of the job. This intermediate data is a valid model artifact. You can use it to create a model using the @CreateModel@ API.
-ctjStoppingCondition :: Lens' CreateTrainingJob StoppingCondition
-ctjStoppingCondition = lens _ctjStoppingCondition (\ s a -> s{_ctjStoppingCondition = a})
-
-instance AWSRequest CreateTrainingJob where
-        type Rs CreateTrainingJob = CreateTrainingJobResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateTrainingJobResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "TrainingJobArn"))
-
-instance Hashable CreateTrainingJob where
-
-instance NFData CreateTrainingJob where
-
-instance ToHeaders CreateTrainingJob where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.CreateTrainingJob" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateTrainingJob where
-        toJSON CreateTrainingJob'{..}
-          = object
-              (catMaybes
-                 [("HyperParameters" .=) <$> _ctjHyperParameters,
-                  ("VpcConfig" .=) <$> _ctjVPCConfig,
-                  ("Tags" .=) <$> _ctjTags,
-                  Just ("TrainingJobName" .= _ctjTrainingJobName),
-                  Just
-                    ("AlgorithmSpecification" .=
-                       _ctjAlgorithmSpecification),
-                  Just ("RoleArn" .= _ctjRoleARN),
-                  Just ("InputDataConfig" .= _ctjInputDataConfig),
-                  Just ("OutputDataConfig" .= _ctjOutputDataConfig),
-                  Just ("ResourceConfig" .= _ctjResourceConfig),
-                  Just ("StoppingCondition" .= _ctjStoppingCondition)])
-
-instance ToPath CreateTrainingJob where
-        toPath = const "/"
-
-instance ToQuery CreateTrainingJob where
-        toQuery = const mempty
-
--- | /See:/ 'createTrainingJobResponse' smart constructor.
-data CreateTrainingJobResponse = CreateTrainingJobResponse'
-  { _ctjrsResponseStatus :: !Int
-  , _ctjrsTrainingJobARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateTrainingJobResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctjrsResponseStatus' - -- | The response status code.
---
--- * 'ctjrsTrainingJobARN' - The Amazon Resource Name (ARN) of the training job.
-createTrainingJobResponse
-    :: Int -- ^ 'ctjrsResponseStatus'
-    -> Text -- ^ 'ctjrsTrainingJobARN'
-    -> CreateTrainingJobResponse
-createTrainingJobResponse pResponseStatus_ pTrainingJobARN_ =
-  CreateTrainingJobResponse'
-    { _ctjrsResponseStatus = pResponseStatus_
-    , _ctjrsTrainingJobARN = pTrainingJobARN_
-    }
-
-
--- | -- | The response status code.
-ctjrsResponseStatus :: Lens' CreateTrainingJobResponse Int
-ctjrsResponseStatus = lens _ctjrsResponseStatus (\ s a -> s{_ctjrsResponseStatus = a})
-
--- | The Amazon Resource Name (ARN) of the training job.
-ctjrsTrainingJobARN :: Lens' CreateTrainingJobResponse Text
-ctjrsTrainingJobARN = lens _ctjrsTrainingJobARN (\ s a -> s{_ctjrsTrainingJobARN = a})
-
-instance NFData CreateTrainingJobResponse where
diff --git a/gen/Network/AWS/SageMaker/DeleteEndpoint.hs b/gen/Network/AWS/SageMaker/DeleteEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DeleteEndpoint.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DeleteEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an endpoint. Amazon SageMaker frees up all of the resources that were deployed when the endpoint was created.
---
---
-module Network.AWS.SageMaker.DeleteEndpoint
-    (
-    -- * Creating a Request
-      deleteEndpoint
-    , DeleteEndpoint
-    -- * Request Lenses
-    , deEndpointName
-
-    -- * Destructuring the Response
-    , deleteEndpointResponse
-    , DeleteEndpointResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'deleteEndpoint' smart constructor.
-newtype DeleteEndpoint = DeleteEndpoint'
-  { _deEndpointName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'deEndpointName' - The name of the endpoint that you want to delete.
-deleteEndpoint
-    :: Text -- ^ 'deEndpointName'
-    -> DeleteEndpoint
-deleteEndpoint pEndpointName_ =
-  DeleteEndpoint' {_deEndpointName = pEndpointName_}
-
-
--- | The name of the endpoint that you want to delete.
-deEndpointName :: Lens' DeleteEndpoint Text
-deEndpointName = lens _deEndpointName (\ s a -> s{_deEndpointName = a})
-
-instance AWSRequest DeleteEndpoint where
-        type Rs DeleteEndpoint = DeleteEndpointResponse
-        request = postJSON sageMaker
-        response = receiveNull DeleteEndpointResponse'
-
-instance Hashable DeleteEndpoint where
-
-instance NFData DeleteEndpoint where
-
-instance ToHeaders DeleteEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DeleteEndpoint" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteEndpoint where
-        toJSON DeleteEndpoint'{..}
-          = object
-              (catMaybes
-                 [Just ("EndpointName" .= _deEndpointName)])
-
-instance ToPath DeleteEndpoint where
-        toPath = const "/"
-
-instance ToQuery DeleteEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'deleteEndpointResponse' smart constructor.
-data DeleteEndpointResponse =
-  DeleteEndpointResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteEndpointResponse' with the minimum fields required to make a request.
---
-deleteEndpointResponse
-    :: DeleteEndpointResponse
-deleteEndpointResponse = DeleteEndpointResponse'
-
-
-instance NFData DeleteEndpointResponse where
diff --git a/gen/Network/AWS/SageMaker/DeleteEndpointConfig.hs b/gen/Network/AWS/SageMaker/DeleteEndpointConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DeleteEndpointConfig.hs
+++ /dev/null
@@ -1,111 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DeleteEndpointConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an endpoint configuration. The @DeleteEndpoingConfig@ API deletes only the specified configuration. It does not delete endpoints created using the configuration.
---
---
-module Network.AWS.SageMaker.DeleteEndpointConfig
-    (
-    -- * Creating a Request
-      deleteEndpointConfig
-    , DeleteEndpointConfig
-    -- * Request Lenses
-    , dEndpointConfigName
-
-    -- * Destructuring the Response
-    , deleteEndpointConfigResponse
-    , DeleteEndpointConfigResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'deleteEndpointConfig' smart constructor.
-newtype DeleteEndpointConfig = DeleteEndpointConfig'
-  { _dEndpointConfigName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteEndpointConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dEndpointConfigName' - The name of the endpoint configuration that you want to delete.
-deleteEndpointConfig
-    :: Text -- ^ 'dEndpointConfigName'
-    -> DeleteEndpointConfig
-deleteEndpointConfig pEndpointConfigName_ =
-  DeleteEndpointConfig' {_dEndpointConfigName = pEndpointConfigName_}
-
-
--- | The name of the endpoint configuration that you want to delete.
-dEndpointConfigName :: Lens' DeleteEndpointConfig Text
-dEndpointConfigName = lens _dEndpointConfigName (\ s a -> s{_dEndpointConfigName = a})
-
-instance AWSRequest DeleteEndpointConfig where
-        type Rs DeleteEndpointConfig =
-             DeleteEndpointConfigResponse
-        request = postJSON sageMaker
-        response = receiveNull DeleteEndpointConfigResponse'
-
-instance Hashable DeleteEndpointConfig where
-
-instance NFData DeleteEndpointConfig where
-
-instance ToHeaders DeleteEndpointConfig where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DeleteEndpointConfig" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteEndpointConfig where
-        toJSON DeleteEndpointConfig'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("EndpointConfigName" .= _dEndpointConfigName)])
-
-instance ToPath DeleteEndpointConfig where
-        toPath = const "/"
-
-instance ToQuery DeleteEndpointConfig where
-        toQuery = const mempty
-
--- | /See:/ 'deleteEndpointConfigResponse' smart constructor.
-data DeleteEndpointConfigResponse =
-  DeleteEndpointConfigResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteEndpointConfigResponse' with the minimum fields required to make a request.
---
-deleteEndpointConfigResponse
-    :: DeleteEndpointConfigResponse
-deleteEndpointConfigResponse = DeleteEndpointConfigResponse'
-
-
-instance NFData DeleteEndpointConfigResponse where
diff --git a/gen/Network/AWS/SageMaker/DeleteModel.hs b/gen/Network/AWS/SageMaker/DeleteModel.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DeleteModel.hs
+++ /dev/null
@@ -1,107 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DeleteModel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a model. The @DeleteModel@ API deletes only the model entry that was created in Amazon SageMaker when you called the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html CreateModel> API. It does not delete model artifacts, inference code, or the IAM role that you specified when creating the model.
---
---
-module Network.AWS.SageMaker.DeleteModel
-    (
-    -- * Creating a Request
-      deleteModel
-    , DeleteModel
-    -- * Request Lenses
-    , dmModelName
-
-    -- * Destructuring the Response
-    , deleteModelResponse
-    , DeleteModelResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'deleteModel' smart constructor.
-newtype DeleteModel = DeleteModel'
-  { _dmModelName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteModel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmModelName' - The name of the model to delete.
-deleteModel
-    :: Text -- ^ 'dmModelName'
-    -> DeleteModel
-deleteModel pModelName_ = DeleteModel' {_dmModelName = pModelName_}
-
-
--- | The name of the model to delete.
-dmModelName :: Lens' DeleteModel Text
-dmModelName = lens _dmModelName (\ s a -> s{_dmModelName = a})
-
-instance AWSRequest DeleteModel where
-        type Rs DeleteModel = DeleteModelResponse
-        request = postJSON sageMaker
-        response = receiveNull DeleteModelResponse'
-
-instance Hashable DeleteModel where
-
-instance NFData DeleteModel where
-
-instance ToHeaders DeleteModel where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DeleteModel" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteModel where
-        toJSON DeleteModel'{..}
-          = object
-              (catMaybes [Just ("ModelName" .= _dmModelName)])
-
-instance ToPath DeleteModel where
-        toPath = const "/"
-
-instance ToQuery DeleteModel where
-        toQuery = const mempty
-
--- | /See:/ 'deleteModelResponse' smart constructor.
-data DeleteModelResponse =
-  DeleteModelResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteModelResponse' with the minimum fields required to make a request.
---
-deleteModelResponse
-    :: DeleteModelResponse
-deleteModelResponse = DeleteModelResponse'
-
-
-instance NFData DeleteModelResponse where
diff --git a/gen/Network/AWS/SageMaker/DeleteNotebookInstance.hs b/gen/Network/AWS/SageMaker/DeleteNotebookInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DeleteNotebookInstance.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DeleteNotebookInstance
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an Amazon SageMaker notebook instance. Before you can delete a notebook instance, you must call the @StopNotebookInstance@ API.
---
---
--- /Important:/ When you delete a notebook instance, you lose all of your data. Amazon SageMaker removes the ML compute instance, and deletes the ML storage volume and the network interface associated with the notebook instance.
---
-module Network.AWS.SageMaker.DeleteNotebookInstance
-    (
-    -- * Creating a Request
-      deleteNotebookInstance
-    , DeleteNotebookInstance
-    -- * Request Lenses
-    , dNotebookInstanceName
-
-    -- * Destructuring the Response
-    , deleteNotebookInstanceResponse
-    , DeleteNotebookInstanceResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'deleteNotebookInstance' smart constructor.
-newtype DeleteNotebookInstance = DeleteNotebookInstance'
-  { _dNotebookInstanceName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNotebookInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dNotebookInstanceName' - The name of the Amazon SageMaker notebook instance to delete.
-deleteNotebookInstance
-    :: Text -- ^ 'dNotebookInstanceName'
-    -> DeleteNotebookInstance
-deleteNotebookInstance pNotebookInstanceName_ =
-  DeleteNotebookInstance' {_dNotebookInstanceName = pNotebookInstanceName_}
-
-
--- | The name of the Amazon SageMaker notebook instance to delete.
-dNotebookInstanceName :: Lens' DeleteNotebookInstance Text
-dNotebookInstanceName = lens _dNotebookInstanceName (\ s a -> s{_dNotebookInstanceName = a})
-
-instance AWSRequest DeleteNotebookInstance where
-        type Rs DeleteNotebookInstance =
-             DeleteNotebookInstanceResponse
-        request = postJSON sageMaker
-        response
-          = receiveNull DeleteNotebookInstanceResponse'
-
-instance Hashable DeleteNotebookInstance where
-
-instance NFData DeleteNotebookInstance where
-
-instance ToHeaders DeleteNotebookInstance where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DeleteNotebookInstance" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteNotebookInstance where
-        toJSON DeleteNotebookInstance'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("NotebookInstanceName" .= _dNotebookInstanceName)])
-
-instance ToPath DeleteNotebookInstance where
-        toPath = const "/"
-
-instance ToQuery DeleteNotebookInstance where
-        toQuery = const mempty
-
--- | /See:/ 'deleteNotebookInstanceResponse' smart constructor.
-data DeleteNotebookInstanceResponse =
-  DeleteNotebookInstanceResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNotebookInstanceResponse' with the minimum fields required to make a request.
---
-deleteNotebookInstanceResponse
-    :: DeleteNotebookInstanceResponse
-deleteNotebookInstanceResponse = DeleteNotebookInstanceResponse'
-
-
-instance NFData DeleteNotebookInstanceResponse where
diff --git a/gen/Network/AWS/SageMaker/DeleteNotebookInstanceLifecycleConfig.hs b/gen/Network/AWS/SageMaker/DeleteNotebookInstanceLifecycleConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DeleteNotebookInstanceLifecycleConfig.hs
+++ /dev/null
@@ -1,132 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DeleteNotebookInstanceLifecycleConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a notebook instance lifecycle configuration.
---
---
-module Network.AWS.SageMaker.DeleteNotebookInstanceLifecycleConfig
-    (
-    -- * Creating a Request
-      deleteNotebookInstanceLifecycleConfig
-    , DeleteNotebookInstanceLifecycleConfig
-    -- * Request Lenses
-    , dnilcNotebookInstanceLifecycleConfigName
-
-    -- * Destructuring the Response
-    , deleteNotebookInstanceLifecycleConfigResponse
-    , DeleteNotebookInstanceLifecycleConfigResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'deleteNotebookInstanceLifecycleConfig' smart constructor.
-newtype DeleteNotebookInstanceLifecycleConfig = DeleteNotebookInstanceLifecycleConfig'
-  { _dnilcNotebookInstanceLifecycleConfigName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNotebookInstanceLifecycleConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnilcNotebookInstanceLifecycleConfigName' - The name of the lifecycle configuration to delete.
-deleteNotebookInstanceLifecycleConfig
-    :: Text -- ^ 'dnilcNotebookInstanceLifecycleConfigName'
-    -> DeleteNotebookInstanceLifecycleConfig
-deleteNotebookInstanceLifecycleConfig pNotebookInstanceLifecycleConfigName_ =
-  DeleteNotebookInstanceLifecycleConfig'
-    { _dnilcNotebookInstanceLifecycleConfigName =
-        pNotebookInstanceLifecycleConfigName_
-    }
-
-
--- | The name of the lifecycle configuration to delete.
-dnilcNotebookInstanceLifecycleConfigName :: Lens' DeleteNotebookInstanceLifecycleConfig Text
-dnilcNotebookInstanceLifecycleConfigName = lens _dnilcNotebookInstanceLifecycleConfigName (\ s a -> s{_dnilcNotebookInstanceLifecycleConfigName = a})
-
-instance AWSRequest
-           DeleteNotebookInstanceLifecycleConfig
-         where
-        type Rs DeleteNotebookInstanceLifecycleConfig =
-             DeleteNotebookInstanceLifecycleConfigResponse
-        request = postJSON sageMaker
-        response
-          = receiveNull
-              DeleteNotebookInstanceLifecycleConfigResponse'
-
-instance Hashable
-           DeleteNotebookInstanceLifecycleConfig
-         where
-
-instance NFData DeleteNotebookInstanceLifecycleConfig
-         where
-
-instance ToHeaders
-           DeleteNotebookInstanceLifecycleConfig
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DeleteNotebookInstanceLifecycleConfig" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteNotebookInstanceLifecycleConfig
-         where
-        toJSON DeleteNotebookInstanceLifecycleConfig'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("NotebookInstanceLifecycleConfigName" .=
-                       _dnilcNotebookInstanceLifecycleConfigName)])
-
-instance ToPath DeleteNotebookInstanceLifecycleConfig
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DeleteNotebookInstanceLifecycleConfig
-         where
-        toQuery = const mempty
-
--- | /See:/ 'deleteNotebookInstanceLifecycleConfigResponse' smart constructor.
-data DeleteNotebookInstanceLifecycleConfigResponse =
-  DeleteNotebookInstanceLifecycleConfigResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNotebookInstanceLifecycleConfigResponse' with the minimum fields required to make a request.
---
-deleteNotebookInstanceLifecycleConfigResponse
-    :: DeleteNotebookInstanceLifecycleConfigResponse
-deleteNotebookInstanceLifecycleConfigResponse =
-  DeleteNotebookInstanceLifecycleConfigResponse'
-
-
-instance NFData
-           DeleteNotebookInstanceLifecycleConfigResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/DeleteTags.hs b/gen/Network/AWS/SageMaker/DeleteTags.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DeleteTags.hs
+++ /dev/null
@@ -1,135 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DeleteTags
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specified tags from an Amazon SageMaker resource.
---
---
--- To list a resource's tags, use the @ListTags@ API.
---
-module Network.AWS.SageMaker.DeleteTags
-    (
-    -- * Creating a Request
-      deleteTags
-    , DeleteTags
-    -- * Request Lenses
-    , dtResourceARN
-    , dtTagKeys
-
-    -- * Destructuring the Response
-    , deleteTagsResponse
-    , DeleteTagsResponse
-    -- * Response Lenses
-    , dtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'deleteTags' smart constructor.
-data DeleteTags = DeleteTags'
-  { _dtResourceARN :: !Text
-  , _dtTagKeys     :: !(List1 Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteTags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtResourceARN' - The Amazon Resource Name (ARN) of the resource whose tags you want to delete.
---
--- * 'dtTagKeys' - An array or one or more tag keys to delete.
-deleteTags
-    :: Text -- ^ 'dtResourceARN'
-    -> NonEmpty Text -- ^ 'dtTagKeys'
-    -> DeleteTags
-deleteTags pResourceARN_ pTagKeys_ =
-  DeleteTags' {_dtResourceARN = pResourceARN_, _dtTagKeys = _List1 # pTagKeys_}
-
-
--- | The Amazon Resource Name (ARN) of the resource whose tags you want to delete.
-dtResourceARN :: Lens' DeleteTags Text
-dtResourceARN = lens _dtResourceARN (\ s a -> s{_dtResourceARN = a})
-
--- | An array or one or more tag keys to delete.
-dtTagKeys :: Lens' DeleteTags (NonEmpty Text)
-dtTagKeys = lens _dtTagKeys (\ s a -> s{_dtTagKeys = a}) . _List1
-
-instance AWSRequest DeleteTags where
-        type Rs DeleteTags = DeleteTagsResponse
-        request = postJSON sageMaker
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteTagsResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteTags where
-
-instance NFData DeleteTags where
-
-instance ToHeaders DeleteTags where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DeleteTags" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteTags where
-        toJSON DeleteTags'{..}
-          = object
-              (catMaybes
-                 [Just ("ResourceArn" .= _dtResourceARN),
-                  Just ("TagKeys" .= _dtTagKeys)])
-
-instance ToPath DeleteTags where
-        toPath = const "/"
-
-instance ToQuery DeleteTags where
-        toQuery = const mempty
-
--- | /See:/ 'deleteTagsResponse' smart constructor.
-newtype DeleteTagsResponse = DeleteTagsResponse'
-  { _dtrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteTagsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtrsResponseStatus' - -- | The response status code.
-deleteTagsResponse
-    :: Int -- ^ 'dtrsResponseStatus'
-    -> DeleteTagsResponse
-deleteTagsResponse pResponseStatus_ =
-  DeleteTagsResponse' {_dtrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dtrsResponseStatus :: Lens' DeleteTagsResponse Int
-dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a})
-
-instance NFData DeleteTagsResponse where
diff --git a/gen/Network/AWS/SageMaker/DescribeEndpoint.hs b/gen/Network/AWS/SageMaker/DescribeEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DescribeEndpoint.hs
+++ /dev/null
@@ -1,211 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DescribeEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the description of an endpoint.
---
---
-module Network.AWS.SageMaker.DescribeEndpoint
-    (
-    -- * Creating a Request
-      describeEndpoint
-    , DescribeEndpoint
-    -- * Request Lenses
-    , dEndpointName
-
-    -- * Destructuring the Response
-    , describeEndpointResponse
-    , DescribeEndpointResponse
-    -- * Response Lenses
-    , dersFailureReason
-    , dersProductionVariants
-    , dersResponseStatus
-    , dersEndpointName
-    , dersEndpointARN
-    , dersEndpointConfigName
-    , dersEndpointStatus
-    , dersCreationTime
-    , dersLastModifiedTime
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'describeEndpoint' smart constructor.
-newtype DescribeEndpoint = DescribeEndpoint'
-  { _dEndpointName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dEndpointName' - The name of the endpoint.
-describeEndpoint
-    :: Text -- ^ 'dEndpointName'
-    -> DescribeEndpoint
-describeEndpoint pEndpointName_ =
-  DescribeEndpoint' {_dEndpointName = pEndpointName_}
-
-
--- | The name of the endpoint.
-dEndpointName :: Lens' DescribeEndpoint Text
-dEndpointName = lens _dEndpointName (\ s a -> s{_dEndpointName = a})
-
-instance AWSRequest DescribeEndpoint where
-        type Rs DescribeEndpoint = DescribeEndpointResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeEndpointResponse' <$>
-                   (x .?> "FailureReason") <*>
-                     (x .?> "ProductionVariants")
-                     <*> (pure (fromEnum s))
-                     <*> (x .:> "EndpointName")
-                     <*> (x .:> "EndpointArn")
-                     <*> (x .:> "EndpointConfigName")
-                     <*> (x .:> "EndpointStatus")
-                     <*> (x .:> "CreationTime")
-                     <*> (x .:> "LastModifiedTime"))
-
-instance Hashable DescribeEndpoint where
-
-instance NFData DescribeEndpoint where
-
-instance ToHeaders DescribeEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DescribeEndpoint" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeEndpoint where
-        toJSON DescribeEndpoint'{..}
-          = object
-              (catMaybes [Just ("EndpointName" .= _dEndpointName)])
-
-instance ToPath DescribeEndpoint where
-        toPath = const "/"
-
-instance ToQuery DescribeEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'describeEndpointResponse' smart constructor.
-data DescribeEndpointResponse = DescribeEndpointResponse'
-  { _dersFailureReason      :: !(Maybe Text)
-  , _dersProductionVariants :: !(Maybe (List1 ProductionVariantSummary))
-  , _dersResponseStatus     :: !Int
-  , _dersEndpointName       :: !Text
-  , _dersEndpointARN        :: !Text
-  , _dersEndpointConfigName :: !Text
-  , _dersEndpointStatus     :: !EndpointStatus
-  , _dersCreationTime       :: !POSIX
-  , _dersLastModifiedTime   :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dersFailureReason' - If the status of the endpoint is @Failed@ , the reason why it failed.
---
--- * 'dersProductionVariants' - An array of ProductionVariant objects, one for each model hosted behind this endpoint.
---
--- * 'dersResponseStatus' - -- | The response status code.
---
--- * 'dersEndpointName' - Name of the endpoint.
---
--- * 'dersEndpointARN' - The Amazon Resource Name (ARN) of the endpoint.
---
--- * 'dersEndpointConfigName' - The name of the endpoint configuration associated with this endpoint.
---
--- * 'dersEndpointStatus' - The status of the endpoint.
---
--- * 'dersCreationTime' - A timestamp that shows when the endpoint was created.
---
--- * 'dersLastModifiedTime' - A timestamp that shows when the endpoint was last modified.
-describeEndpointResponse
-    :: Int -- ^ 'dersResponseStatus'
-    -> Text -- ^ 'dersEndpointName'
-    -> Text -- ^ 'dersEndpointARN'
-    -> Text -- ^ 'dersEndpointConfigName'
-    -> EndpointStatus -- ^ 'dersEndpointStatus'
-    -> UTCTime -- ^ 'dersCreationTime'
-    -> UTCTime -- ^ 'dersLastModifiedTime'
-    -> DescribeEndpointResponse
-describeEndpointResponse pResponseStatus_ pEndpointName_ pEndpointARN_ pEndpointConfigName_ pEndpointStatus_ pCreationTime_ pLastModifiedTime_ =
-  DescribeEndpointResponse'
-    { _dersFailureReason = Nothing
-    , _dersProductionVariants = Nothing
-    , _dersResponseStatus = pResponseStatus_
-    , _dersEndpointName = pEndpointName_
-    , _dersEndpointARN = pEndpointARN_
-    , _dersEndpointConfigName = pEndpointConfigName_
-    , _dersEndpointStatus = pEndpointStatus_
-    , _dersCreationTime = _Time # pCreationTime_
-    , _dersLastModifiedTime = _Time # pLastModifiedTime_
-    }
-
-
--- | If the status of the endpoint is @Failed@ , the reason why it failed.
-dersFailureReason :: Lens' DescribeEndpointResponse (Maybe Text)
-dersFailureReason = lens _dersFailureReason (\ s a -> s{_dersFailureReason = a})
-
--- | An array of ProductionVariant objects, one for each model hosted behind this endpoint.
-dersProductionVariants :: Lens' DescribeEndpointResponse (Maybe (NonEmpty ProductionVariantSummary))
-dersProductionVariants = lens _dersProductionVariants (\ s a -> s{_dersProductionVariants = a}) . mapping _List1
-
--- | -- | The response status code.
-dersResponseStatus :: Lens' DescribeEndpointResponse Int
-dersResponseStatus = lens _dersResponseStatus (\ s a -> s{_dersResponseStatus = a})
-
--- | Name of the endpoint.
-dersEndpointName :: Lens' DescribeEndpointResponse Text
-dersEndpointName = lens _dersEndpointName (\ s a -> s{_dersEndpointName = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint.
-dersEndpointARN :: Lens' DescribeEndpointResponse Text
-dersEndpointARN = lens _dersEndpointARN (\ s a -> s{_dersEndpointARN = a})
-
--- | The name of the endpoint configuration associated with this endpoint.
-dersEndpointConfigName :: Lens' DescribeEndpointResponse Text
-dersEndpointConfigName = lens _dersEndpointConfigName (\ s a -> s{_dersEndpointConfigName = a})
-
--- | The status of the endpoint.
-dersEndpointStatus :: Lens' DescribeEndpointResponse EndpointStatus
-dersEndpointStatus = lens _dersEndpointStatus (\ s a -> s{_dersEndpointStatus = a})
-
--- | A timestamp that shows when the endpoint was created.
-dersCreationTime :: Lens' DescribeEndpointResponse UTCTime
-dersCreationTime = lens _dersCreationTime (\ s a -> s{_dersCreationTime = a}) . _Time
-
--- | A timestamp that shows when the endpoint was last modified.
-dersLastModifiedTime :: Lens' DescribeEndpointResponse UTCTime
-dersLastModifiedTime = lens _dersLastModifiedTime (\ s a -> s{_dersLastModifiedTime = a}) . _Time
-
-instance NFData DescribeEndpointResponse where
diff --git a/gen/Network/AWS/SageMaker/DescribeEndpointConfig.hs b/gen/Network/AWS/SageMaker/DescribeEndpointConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DescribeEndpointConfig.hs
+++ /dev/null
@@ -1,181 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DescribeEndpointConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the description of an endpoint configuration created using the @CreateEndpointConfig@ API.
---
---
-module Network.AWS.SageMaker.DescribeEndpointConfig
-    (
-    -- * Creating a Request
-      describeEndpointConfig
-    , DescribeEndpointConfig
-    -- * Request Lenses
-    , decEndpointConfigName
-
-    -- * Destructuring the Response
-    , describeEndpointConfigResponse
-    , DescribeEndpointConfigResponse
-    -- * Response Lenses
-    , decrsKMSKeyId
-    , decrsResponseStatus
-    , decrsEndpointConfigName
-    , decrsEndpointConfigARN
-    , decrsProductionVariants
-    , decrsCreationTime
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'describeEndpointConfig' smart constructor.
-newtype DescribeEndpointConfig = DescribeEndpointConfig'
-  { _decEndpointConfigName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeEndpointConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'decEndpointConfigName' - The name of the endpoint configuration.
-describeEndpointConfig
-    :: Text -- ^ 'decEndpointConfigName'
-    -> DescribeEndpointConfig
-describeEndpointConfig pEndpointConfigName_ =
-  DescribeEndpointConfig' {_decEndpointConfigName = pEndpointConfigName_}
-
-
--- | The name of the endpoint configuration.
-decEndpointConfigName :: Lens' DescribeEndpointConfig Text
-decEndpointConfigName = lens _decEndpointConfigName (\ s a -> s{_decEndpointConfigName = a})
-
-instance AWSRequest DescribeEndpointConfig where
-        type Rs DescribeEndpointConfig =
-             DescribeEndpointConfigResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeEndpointConfigResponse' <$>
-                   (x .?> "KmsKeyId") <*> (pure (fromEnum s)) <*>
-                     (x .:> "EndpointConfigName")
-                     <*> (x .:> "EndpointConfigArn")
-                     <*> (x .:> "ProductionVariants")
-                     <*> (x .:> "CreationTime"))
-
-instance Hashable DescribeEndpointConfig where
-
-instance NFData DescribeEndpointConfig where
-
-instance ToHeaders DescribeEndpointConfig where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DescribeEndpointConfig" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeEndpointConfig where
-        toJSON DescribeEndpointConfig'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("EndpointConfigName" .= _decEndpointConfigName)])
-
-instance ToPath DescribeEndpointConfig where
-        toPath = const "/"
-
-instance ToQuery DescribeEndpointConfig where
-        toQuery = const mempty
-
--- | /See:/ 'describeEndpointConfigResponse' smart constructor.
-data DescribeEndpointConfigResponse = DescribeEndpointConfigResponse'
-  { _decrsKMSKeyId           :: !(Maybe Text)
-  , _decrsResponseStatus     :: !Int
-  , _decrsEndpointConfigName :: !Text
-  , _decrsEndpointConfigARN  :: !Text
-  , _decrsProductionVariants :: !(List1 ProductionVariant)
-  , _decrsCreationTime       :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeEndpointConfigResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'decrsKMSKeyId' - AWS KMS key ID Amazon SageMaker uses to encrypt data when storing it on the ML storage volume attached to the instance.
---
--- * 'decrsResponseStatus' - -- | The response status code.
---
--- * 'decrsEndpointConfigName' - Name of the Amazon SageMaker endpoint configuration.
---
--- * 'decrsEndpointConfigARN' - The Amazon Resource Name (ARN) of the endpoint configuration.
---
--- * 'decrsProductionVariants' - An array of @ProductionVariant@ objects, one for each model that you want to host at this endpoint.
---
--- * 'decrsCreationTime' - A timestamp that shows when the endpoint configuration was created.
-describeEndpointConfigResponse
-    :: Int -- ^ 'decrsResponseStatus'
-    -> Text -- ^ 'decrsEndpointConfigName'
-    -> Text -- ^ 'decrsEndpointConfigARN'
-    -> NonEmpty ProductionVariant -- ^ 'decrsProductionVariants'
-    -> UTCTime -- ^ 'decrsCreationTime'
-    -> DescribeEndpointConfigResponse
-describeEndpointConfigResponse pResponseStatus_ pEndpointConfigName_ pEndpointConfigARN_ pProductionVariants_ pCreationTime_ =
-  DescribeEndpointConfigResponse'
-    { _decrsKMSKeyId = Nothing
-    , _decrsResponseStatus = pResponseStatus_
-    , _decrsEndpointConfigName = pEndpointConfigName_
-    , _decrsEndpointConfigARN = pEndpointConfigARN_
-    , _decrsProductionVariants = _List1 # pProductionVariants_
-    , _decrsCreationTime = _Time # pCreationTime_
-    }
-
-
--- | AWS KMS key ID Amazon SageMaker uses to encrypt data when storing it on the ML storage volume attached to the instance.
-decrsKMSKeyId :: Lens' DescribeEndpointConfigResponse (Maybe Text)
-decrsKMSKeyId = lens _decrsKMSKeyId (\ s a -> s{_decrsKMSKeyId = a})
-
--- | -- | The response status code.
-decrsResponseStatus :: Lens' DescribeEndpointConfigResponse Int
-decrsResponseStatus = lens _decrsResponseStatus (\ s a -> s{_decrsResponseStatus = a})
-
--- | Name of the Amazon SageMaker endpoint configuration.
-decrsEndpointConfigName :: Lens' DescribeEndpointConfigResponse Text
-decrsEndpointConfigName = lens _decrsEndpointConfigName (\ s a -> s{_decrsEndpointConfigName = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint configuration.
-decrsEndpointConfigARN :: Lens' DescribeEndpointConfigResponse Text
-decrsEndpointConfigARN = lens _decrsEndpointConfigARN (\ s a -> s{_decrsEndpointConfigARN = a})
-
--- | An array of @ProductionVariant@ objects, one for each model that you want to host at this endpoint.
-decrsProductionVariants :: Lens' DescribeEndpointConfigResponse (NonEmpty ProductionVariant)
-decrsProductionVariants = lens _decrsProductionVariants (\ s a -> s{_decrsProductionVariants = a}) . _List1
-
--- | A timestamp that shows when the endpoint configuration was created.
-decrsCreationTime :: Lens' DescribeEndpointConfigResponse UTCTime
-decrsCreationTime = lens _decrsCreationTime (\ s a -> s{_decrsCreationTime = a}) . _Time
-
-instance NFData DescribeEndpointConfigResponse where
diff --git a/gen/Network/AWS/SageMaker/DescribeModel.hs b/gen/Network/AWS/SageMaker/DescribeModel.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DescribeModel.hs
+++ /dev/null
@@ -1,188 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DescribeModel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Describes a model that you created using the @CreateModel@ API.
---
---
-module Network.AWS.SageMaker.DescribeModel
-    (
-    -- * Creating a Request
-      describeModel
-    , DescribeModel
-    -- * Request Lenses
-    , dModelName
-
-    -- * Destructuring the Response
-    , describeModelResponse
-    , DescribeModelResponse
-    -- * Response Lenses
-    , dmrsVPCConfig
-    , dmrsResponseStatus
-    , dmrsModelName
-    , dmrsPrimaryContainer
-    , dmrsExecutionRoleARN
-    , dmrsCreationTime
-    , dmrsModelARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'describeModel' smart constructor.
-newtype DescribeModel = DescribeModel'
-  { _dModelName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeModel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dModelName' - The name of the model.
-describeModel
-    :: Text -- ^ 'dModelName'
-    -> DescribeModel
-describeModel pModelName_ = DescribeModel' {_dModelName = pModelName_}
-
-
--- | The name of the model.
-dModelName :: Lens' DescribeModel Text
-dModelName = lens _dModelName (\ s a -> s{_dModelName = a})
-
-instance AWSRequest DescribeModel where
-        type Rs DescribeModel = DescribeModelResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeModelResponse' <$>
-                   (x .?> "VpcConfig") <*> (pure (fromEnum s)) <*>
-                     (x .:> "ModelName")
-                     <*> (x .:> "PrimaryContainer")
-                     <*> (x .:> "ExecutionRoleArn")
-                     <*> (x .:> "CreationTime")
-                     <*> (x .:> "ModelArn"))
-
-instance Hashable DescribeModel where
-
-instance NFData DescribeModel where
-
-instance ToHeaders DescribeModel where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DescribeModel" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeModel where
-        toJSON DescribeModel'{..}
-          = object
-              (catMaybes [Just ("ModelName" .= _dModelName)])
-
-instance ToPath DescribeModel where
-        toPath = const "/"
-
-instance ToQuery DescribeModel where
-        toQuery = const mempty
-
--- | /See:/ 'describeModelResponse' smart constructor.
-data DescribeModelResponse = DescribeModelResponse'
-  { _dmrsVPCConfig        :: !(Maybe VPCConfig)
-  , _dmrsResponseStatus   :: !Int
-  , _dmrsModelName        :: !Text
-  , _dmrsPrimaryContainer :: !ContainerDefinition
-  , _dmrsExecutionRoleARN :: !Text
-  , _dmrsCreationTime     :: !POSIX
-  , _dmrsModelARN         :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeModelResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmrsVPCConfig' - A object that specifies the VPC that this model has access to. For more information, see 'host-vpc'
---
--- * 'dmrsResponseStatus' - -- | The response status code.
---
--- * 'dmrsModelName' - Name of the Amazon SageMaker model.
---
--- * 'dmrsPrimaryContainer' - The location of the primary inference code, associated artifacts, and custom environment map that the inference code uses when it is deployed in production.
---
--- * 'dmrsExecutionRoleARN' - The Amazon Resource Name (ARN) of the IAM role that you specified for the model.
---
--- * 'dmrsCreationTime' - A timestamp that shows when the model was created.
---
--- * 'dmrsModelARN' - The Amazon Resource Name (ARN) of the model.
-describeModelResponse
-    :: Int -- ^ 'dmrsResponseStatus'
-    -> Text -- ^ 'dmrsModelName'
-    -> ContainerDefinition -- ^ 'dmrsPrimaryContainer'
-    -> Text -- ^ 'dmrsExecutionRoleARN'
-    -> UTCTime -- ^ 'dmrsCreationTime'
-    -> Text -- ^ 'dmrsModelARN'
-    -> DescribeModelResponse
-describeModelResponse pResponseStatus_ pModelName_ pPrimaryContainer_ pExecutionRoleARN_ pCreationTime_ pModelARN_ =
-  DescribeModelResponse'
-    { _dmrsVPCConfig = Nothing
-    , _dmrsResponseStatus = pResponseStatus_
-    , _dmrsModelName = pModelName_
-    , _dmrsPrimaryContainer = pPrimaryContainer_
-    , _dmrsExecutionRoleARN = pExecutionRoleARN_
-    , _dmrsCreationTime = _Time # pCreationTime_
-    , _dmrsModelARN = pModelARN_
-    }
-
-
--- | A object that specifies the VPC that this model has access to. For more information, see 'host-vpc'
-dmrsVPCConfig :: Lens' DescribeModelResponse (Maybe VPCConfig)
-dmrsVPCConfig = lens _dmrsVPCConfig (\ s a -> s{_dmrsVPCConfig = a})
-
--- | -- | The response status code.
-dmrsResponseStatus :: Lens' DescribeModelResponse Int
-dmrsResponseStatus = lens _dmrsResponseStatus (\ s a -> s{_dmrsResponseStatus = a})
-
--- | Name of the Amazon SageMaker model.
-dmrsModelName :: Lens' DescribeModelResponse Text
-dmrsModelName = lens _dmrsModelName (\ s a -> s{_dmrsModelName = a})
-
--- | The location of the primary inference code, associated artifacts, and custom environment map that the inference code uses when it is deployed in production.
-dmrsPrimaryContainer :: Lens' DescribeModelResponse ContainerDefinition
-dmrsPrimaryContainer = lens _dmrsPrimaryContainer (\ s a -> s{_dmrsPrimaryContainer = a})
-
--- | The Amazon Resource Name (ARN) of the IAM role that you specified for the model.
-dmrsExecutionRoleARN :: Lens' DescribeModelResponse Text
-dmrsExecutionRoleARN = lens _dmrsExecutionRoleARN (\ s a -> s{_dmrsExecutionRoleARN = a})
-
--- | A timestamp that shows when the model was created.
-dmrsCreationTime :: Lens' DescribeModelResponse UTCTime
-dmrsCreationTime = lens _dmrsCreationTime (\ s a -> s{_dmrsCreationTime = a}) . _Time
-
--- | The Amazon Resource Name (ARN) of the model.
-dmrsModelARN :: Lens' DescribeModelResponse Text
-dmrsModelARN = lens _dmrsModelARN (\ s a -> s{_dmrsModelARN = a})
-
-instance NFData DescribeModelResponse where
diff --git a/gen/Network/AWS/SageMaker/DescribeNotebookInstance.hs b/gen/Network/AWS/SageMaker/DescribeNotebookInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DescribeNotebookInstance.hs
+++ /dev/null
@@ -1,280 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DescribeNotebookInstance
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns information about a notebook instance.
---
---
-module Network.AWS.SageMaker.DescribeNotebookInstance
-    (
-    -- * Creating a Request
-      describeNotebookInstance
-    , DescribeNotebookInstance
-    -- * Request Lenses
-    , dniNotebookInstanceName
-
-    -- * Destructuring the Response
-    , describeNotebookInstanceResponse
-    , DescribeNotebookInstanceResponse
-    -- * Response Lenses
-    , dnirsCreationTime
-    , dnirsFailureReason
-    , dnirsNotebookInstanceName
-    , dnirsSecurityGroups
-    , dnirsURL
-    , dnirsLastModifiedTime
-    , dnirsNetworkInterfaceId
-    , dnirsSubnetId
-    , dnirsInstanceType
-    , dnirsKMSKeyId
-    , dnirsDirectInternetAccess
-    , dnirsNotebookInstanceARN
-    , dnirsNotebookInstanceLifecycleConfigName
-    , dnirsRoleARN
-    , dnirsResponseStatus
-    , dnirsNotebookInstanceStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'describeNotebookInstance' smart constructor.
-newtype DescribeNotebookInstance = DescribeNotebookInstance'
-  { _dniNotebookInstanceName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeNotebookInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dniNotebookInstanceName' - The name of the notebook instance that you want information about.
-describeNotebookInstance
-    :: Text -- ^ 'dniNotebookInstanceName'
-    -> DescribeNotebookInstance
-describeNotebookInstance pNotebookInstanceName_ =
-  DescribeNotebookInstance' {_dniNotebookInstanceName = pNotebookInstanceName_}
-
-
--- | The name of the notebook instance that you want information about.
-dniNotebookInstanceName :: Lens' DescribeNotebookInstance Text
-dniNotebookInstanceName = lens _dniNotebookInstanceName (\ s a -> s{_dniNotebookInstanceName = a})
-
-instance AWSRequest DescribeNotebookInstance where
-        type Rs DescribeNotebookInstance =
-             DescribeNotebookInstanceResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeNotebookInstanceResponse' <$>
-                   (x .?> "CreationTime") <*> (x .?> "FailureReason")
-                     <*> (x .?> "NotebookInstanceName")
-                     <*> (x .?> "SecurityGroups" .!@ mempty)
-                     <*> (x .?> "Url")
-                     <*> (x .?> "LastModifiedTime")
-                     <*> (x .?> "NetworkInterfaceId")
-                     <*> (x .?> "SubnetId")
-                     <*> (x .?> "InstanceType")
-                     <*> (x .?> "KmsKeyId")
-                     <*> (x .?> "DirectInternetAccess")
-                     <*> (x .?> "NotebookInstanceArn")
-                     <*> (x .?> "NotebookInstanceLifecycleConfigName")
-                     <*> (x .?> "RoleArn")
-                     <*> (pure (fromEnum s))
-                     <*> (x .:> "NotebookInstanceStatus"))
-
-instance Hashable DescribeNotebookInstance where
-
-instance NFData DescribeNotebookInstance where
-
-instance ToHeaders DescribeNotebookInstance where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DescribeNotebookInstance" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeNotebookInstance where
-        toJSON DescribeNotebookInstance'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("NotebookInstanceName" .=
-                       _dniNotebookInstanceName)])
-
-instance ToPath DescribeNotebookInstance where
-        toPath = const "/"
-
-instance ToQuery DescribeNotebookInstance where
-        toQuery = const mempty
-
--- | /See:/ 'describeNotebookInstanceResponse' smart constructor.
-data DescribeNotebookInstanceResponse = DescribeNotebookInstanceResponse'
-  { _dnirsCreationTime                        :: !(Maybe POSIX)
-  , _dnirsFailureReason                       :: !(Maybe Text)
-  , _dnirsNotebookInstanceName                :: !(Maybe Text)
-  , _dnirsSecurityGroups                      :: !(Maybe [Text])
-  , _dnirsURL                                 :: !(Maybe Text)
-  , _dnirsLastModifiedTime                    :: !(Maybe POSIX)
-  , _dnirsNetworkInterfaceId                  :: !(Maybe Text)
-  , _dnirsSubnetId                            :: !(Maybe Text)
-  , _dnirsInstanceType                        :: !(Maybe InstanceType)
-  , _dnirsKMSKeyId                            :: !(Maybe Text)
-  , _dnirsDirectInternetAccess                :: !(Maybe DirectInternetAccess)
-  , _dnirsNotebookInstanceARN                 :: !(Maybe Text)
-  , _dnirsNotebookInstanceLifecycleConfigName :: !(Maybe Text)
-  , _dnirsRoleARN                             :: !(Maybe Text)
-  , _dnirsResponseStatus                      :: !Int
-  , _dnirsNotebookInstanceStatus              :: !NotebookInstanceStatus
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeNotebookInstanceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnirsCreationTime' - A timestamp. Use this parameter to return the time when the notebook instance was created
---
--- * 'dnirsFailureReason' - If status is failed, the reason it failed.
---
--- * 'dnirsNotebookInstanceName' - Name of the Amazon SageMaker notebook instance.
---
--- * 'dnirsSecurityGroups' - The IDs of the VPC security groups.
---
--- * 'dnirsURL' - The URL that you use to connect to the Jupyter notebook that is running in your notebook instance.
---
--- * 'dnirsLastModifiedTime' - A timestamp. Use this parameter to retrieve the time when the notebook instance was last modified.
---
--- * 'dnirsNetworkInterfaceId' - Network interface IDs that Amazon SageMaker created at the time of creating the instance.
---
--- * 'dnirsSubnetId' - The ID of the VPC subnet.
---
--- * 'dnirsInstanceType' - The type of ML compute instance running on the notebook instance.
---
--- * 'dnirsKMSKeyId' - AWS KMS key ID Amazon SageMaker uses to encrypt data when storing it on the ML storage volume attached to the instance.
---
--- * 'dnirsDirectInternetAccess' - Describes whether Amazon SageMaker provides internet access to the notebook instance. If this value is set to /Disabled, he notebook instance does not have internet access, and cannot connect to Amazon SageMaker training and endpoint services/ . For more information, see 'appendix-notebook-and-internet-access' .
---
--- * 'dnirsNotebookInstanceARN' - The Amazon Resource Name (ARN) of the notebook instance.
---
--- * 'dnirsNotebookInstanceLifecycleConfigName' - Returns the name of a notebook instance lifecycle configuration. For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
---
--- * 'dnirsRoleARN' - Amazon Resource Name (ARN) of the IAM role associated with the instance.
---
--- * 'dnirsResponseStatus' - -- | The response status code.
---
--- * 'dnirsNotebookInstanceStatus' - The status of the notebook instance.
-describeNotebookInstanceResponse
-    :: Int -- ^ 'dnirsResponseStatus'
-    -> NotebookInstanceStatus -- ^ 'dnirsNotebookInstanceStatus'
-    -> DescribeNotebookInstanceResponse
-describeNotebookInstanceResponse pResponseStatus_ pNotebookInstanceStatus_ =
-  DescribeNotebookInstanceResponse'
-    { _dnirsCreationTime = Nothing
-    , _dnirsFailureReason = Nothing
-    , _dnirsNotebookInstanceName = Nothing
-    , _dnirsSecurityGroups = Nothing
-    , _dnirsURL = Nothing
-    , _dnirsLastModifiedTime = Nothing
-    , _dnirsNetworkInterfaceId = Nothing
-    , _dnirsSubnetId = Nothing
-    , _dnirsInstanceType = Nothing
-    , _dnirsKMSKeyId = Nothing
-    , _dnirsDirectInternetAccess = Nothing
-    , _dnirsNotebookInstanceARN = Nothing
-    , _dnirsNotebookInstanceLifecycleConfigName = Nothing
-    , _dnirsRoleARN = Nothing
-    , _dnirsResponseStatus = pResponseStatus_
-    , _dnirsNotebookInstanceStatus = pNotebookInstanceStatus_
-    }
-
-
--- | A timestamp. Use this parameter to return the time when the notebook instance was created
-dnirsCreationTime :: Lens' DescribeNotebookInstanceResponse (Maybe UTCTime)
-dnirsCreationTime = lens _dnirsCreationTime (\ s a -> s{_dnirsCreationTime = a}) . mapping _Time
-
--- | If status is failed, the reason it failed.
-dnirsFailureReason :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsFailureReason = lens _dnirsFailureReason (\ s a -> s{_dnirsFailureReason = a})
-
--- | Name of the Amazon SageMaker notebook instance.
-dnirsNotebookInstanceName :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsNotebookInstanceName = lens _dnirsNotebookInstanceName (\ s a -> s{_dnirsNotebookInstanceName = a})
-
--- | The IDs of the VPC security groups.
-dnirsSecurityGroups :: Lens' DescribeNotebookInstanceResponse [Text]
-dnirsSecurityGroups = lens _dnirsSecurityGroups (\ s a -> s{_dnirsSecurityGroups = a}) . _Default . _Coerce
-
--- | The URL that you use to connect to the Jupyter notebook that is running in your notebook instance.
-dnirsURL :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsURL = lens _dnirsURL (\ s a -> s{_dnirsURL = a})
-
--- | A timestamp. Use this parameter to retrieve the time when the notebook instance was last modified.
-dnirsLastModifiedTime :: Lens' DescribeNotebookInstanceResponse (Maybe UTCTime)
-dnirsLastModifiedTime = lens _dnirsLastModifiedTime (\ s a -> s{_dnirsLastModifiedTime = a}) . mapping _Time
-
--- | Network interface IDs that Amazon SageMaker created at the time of creating the instance.
-dnirsNetworkInterfaceId :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsNetworkInterfaceId = lens _dnirsNetworkInterfaceId (\ s a -> s{_dnirsNetworkInterfaceId = a})
-
--- | The ID of the VPC subnet.
-dnirsSubnetId :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsSubnetId = lens _dnirsSubnetId (\ s a -> s{_dnirsSubnetId = a})
-
--- | The type of ML compute instance running on the notebook instance.
-dnirsInstanceType :: Lens' DescribeNotebookInstanceResponse (Maybe InstanceType)
-dnirsInstanceType = lens _dnirsInstanceType (\ s a -> s{_dnirsInstanceType = a})
-
--- | AWS KMS key ID Amazon SageMaker uses to encrypt data when storing it on the ML storage volume attached to the instance.
-dnirsKMSKeyId :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsKMSKeyId = lens _dnirsKMSKeyId (\ s a -> s{_dnirsKMSKeyId = a})
-
--- | Describes whether Amazon SageMaker provides internet access to the notebook instance. If this value is set to /Disabled, he notebook instance does not have internet access, and cannot connect to Amazon SageMaker training and endpoint services/ . For more information, see 'appendix-notebook-and-internet-access' .
-dnirsDirectInternetAccess :: Lens' DescribeNotebookInstanceResponse (Maybe DirectInternetAccess)
-dnirsDirectInternetAccess = lens _dnirsDirectInternetAccess (\ s a -> s{_dnirsDirectInternetAccess = a})
-
--- | The Amazon Resource Name (ARN) of the notebook instance.
-dnirsNotebookInstanceARN :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsNotebookInstanceARN = lens _dnirsNotebookInstanceARN (\ s a -> s{_dnirsNotebookInstanceARN = a})
-
--- | Returns the name of a notebook instance lifecycle configuration. For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
-dnirsNotebookInstanceLifecycleConfigName :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsNotebookInstanceLifecycleConfigName = lens _dnirsNotebookInstanceLifecycleConfigName (\ s a -> s{_dnirsNotebookInstanceLifecycleConfigName = a})
-
--- | Amazon Resource Name (ARN) of the IAM role associated with the instance.
-dnirsRoleARN :: Lens' DescribeNotebookInstanceResponse (Maybe Text)
-dnirsRoleARN = lens _dnirsRoleARN (\ s a -> s{_dnirsRoleARN = a})
-
--- | -- | The response status code.
-dnirsResponseStatus :: Lens' DescribeNotebookInstanceResponse Int
-dnirsResponseStatus = lens _dnirsResponseStatus (\ s a -> s{_dnirsResponseStatus = a})
-
--- | The status of the notebook instance.
-dnirsNotebookInstanceStatus :: Lens' DescribeNotebookInstanceResponse NotebookInstanceStatus
-dnirsNotebookInstanceStatus = lens _dnirsNotebookInstanceStatus (\ s a -> s{_dnirsNotebookInstanceStatus = a})
-
-instance NFData DescribeNotebookInstanceResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/DescribeNotebookInstanceLifecycleConfig.hs b/gen/Network/AWS/SageMaker/DescribeNotebookInstanceLifecycleConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DescribeNotebookInstanceLifecycleConfig.hs
+++ /dev/null
@@ -1,211 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DescribeNotebookInstanceLifecycleConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a description of a notebook instance lifecycle configuration.
---
---
--- For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
---
-module Network.AWS.SageMaker.DescribeNotebookInstanceLifecycleConfig
-    (
-    -- * Creating a Request
-      describeNotebookInstanceLifecycleConfig
-    , DescribeNotebookInstanceLifecycleConfig
-    -- * Request Lenses
-    , dNotebookInstanceLifecycleConfigName
-
-    -- * Destructuring the Response
-    , describeNotebookInstanceLifecycleConfigResponse
-    , DescribeNotebookInstanceLifecycleConfigResponse
-    -- * Response Lenses
-    , dnilcrsCreationTime
-    , dnilcrsOnCreate
-    , dnilcrsLastModifiedTime
-    , dnilcrsNotebookInstanceLifecycleConfigARN
-    , dnilcrsOnStart
-    , dnilcrsNotebookInstanceLifecycleConfigName
-    , dnilcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'describeNotebookInstanceLifecycleConfig' smart constructor.
-newtype DescribeNotebookInstanceLifecycleConfig = DescribeNotebookInstanceLifecycleConfig'
-  { _dNotebookInstanceLifecycleConfigName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeNotebookInstanceLifecycleConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dNotebookInstanceLifecycleConfigName' - The name of the lifecycle configuration to describe.
-describeNotebookInstanceLifecycleConfig
-    :: Text -- ^ 'dNotebookInstanceLifecycleConfigName'
-    -> DescribeNotebookInstanceLifecycleConfig
-describeNotebookInstanceLifecycleConfig pNotebookInstanceLifecycleConfigName_ =
-  DescribeNotebookInstanceLifecycleConfig'
-    { _dNotebookInstanceLifecycleConfigName =
-        pNotebookInstanceLifecycleConfigName_
-    }
-
-
--- | The name of the lifecycle configuration to describe.
-dNotebookInstanceLifecycleConfigName :: Lens' DescribeNotebookInstanceLifecycleConfig Text
-dNotebookInstanceLifecycleConfigName = lens _dNotebookInstanceLifecycleConfigName (\ s a -> s{_dNotebookInstanceLifecycleConfigName = a})
-
-instance AWSRequest
-           DescribeNotebookInstanceLifecycleConfig
-         where
-        type Rs DescribeNotebookInstanceLifecycleConfig =
-             DescribeNotebookInstanceLifecycleConfigResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeNotebookInstanceLifecycleConfigResponse' <$>
-                   (x .?> "CreationTime") <*>
-                     (x .?> "OnCreate" .!@ mempty)
-                     <*> (x .?> "LastModifiedTime")
-                     <*> (x .?> "NotebookInstanceLifecycleConfigArn")
-                     <*> (x .?> "OnStart" .!@ mempty)
-                     <*> (x .?> "NotebookInstanceLifecycleConfigName")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable
-           DescribeNotebookInstanceLifecycleConfig
-         where
-
-instance NFData
-           DescribeNotebookInstanceLifecycleConfig
-         where
-
-instance ToHeaders
-           DescribeNotebookInstanceLifecycleConfig
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DescribeNotebookInstanceLifecycleConfig"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON
-           DescribeNotebookInstanceLifecycleConfig
-         where
-        toJSON DescribeNotebookInstanceLifecycleConfig'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("NotebookInstanceLifecycleConfigName" .=
-                       _dNotebookInstanceLifecycleConfigName)])
-
-instance ToPath
-           DescribeNotebookInstanceLifecycleConfig
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DescribeNotebookInstanceLifecycleConfig
-         where
-        toQuery = const mempty
-
--- | /See:/ 'describeNotebookInstanceLifecycleConfigResponse' smart constructor.
-data DescribeNotebookInstanceLifecycleConfigResponse = DescribeNotebookInstanceLifecycleConfigResponse'
-  { _dnilcrsCreationTime :: !(Maybe POSIX)
-  , _dnilcrsOnCreate :: !(Maybe [NotebookInstanceLifecycleHook])
-  , _dnilcrsLastModifiedTime :: !(Maybe POSIX)
-  , _dnilcrsNotebookInstanceLifecycleConfigARN :: !(Maybe Text)
-  , _dnilcrsOnStart :: !(Maybe [NotebookInstanceLifecycleHook])
-  , _dnilcrsNotebookInstanceLifecycleConfigName :: !(Maybe Text)
-  , _dnilcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeNotebookInstanceLifecycleConfigResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnilcrsCreationTime' - A timestamp that tells when the lifecycle configuration was created.
---
--- * 'dnilcrsOnCreate' - The shell script that runs only once, when you create a notebook instance.
---
--- * 'dnilcrsLastModifiedTime' - A timestamp that tells when the lifecycle configuration was last modified.
---
--- * 'dnilcrsNotebookInstanceLifecycleConfigARN' - The Amazon Resource Name (ARN) of the lifecycle configuration.
---
--- * 'dnilcrsOnStart' - The shell script that runs every time you start a notebook instance, including when you create the notebook instance.
---
--- * 'dnilcrsNotebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
---
--- * 'dnilcrsResponseStatus' - -- | The response status code.
-describeNotebookInstanceLifecycleConfigResponse
-    :: Int -- ^ 'dnilcrsResponseStatus'
-    -> DescribeNotebookInstanceLifecycleConfigResponse
-describeNotebookInstanceLifecycleConfigResponse pResponseStatus_ =
-  DescribeNotebookInstanceLifecycleConfigResponse'
-    { _dnilcrsCreationTime = Nothing
-    , _dnilcrsOnCreate = Nothing
-    , _dnilcrsLastModifiedTime = Nothing
-    , _dnilcrsNotebookInstanceLifecycleConfigARN = Nothing
-    , _dnilcrsOnStart = Nothing
-    , _dnilcrsNotebookInstanceLifecycleConfigName = Nothing
-    , _dnilcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A timestamp that tells when the lifecycle configuration was created.
-dnilcrsCreationTime :: Lens' DescribeNotebookInstanceLifecycleConfigResponse (Maybe UTCTime)
-dnilcrsCreationTime = lens _dnilcrsCreationTime (\ s a -> s{_dnilcrsCreationTime = a}) . mapping _Time
-
--- | The shell script that runs only once, when you create a notebook instance.
-dnilcrsOnCreate :: Lens' DescribeNotebookInstanceLifecycleConfigResponse [NotebookInstanceLifecycleHook]
-dnilcrsOnCreate = lens _dnilcrsOnCreate (\ s a -> s{_dnilcrsOnCreate = a}) . _Default . _Coerce
-
--- | A timestamp that tells when the lifecycle configuration was last modified.
-dnilcrsLastModifiedTime :: Lens' DescribeNotebookInstanceLifecycleConfigResponse (Maybe UTCTime)
-dnilcrsLastModifiedTime = lens _dnilcrsLastModifiedTime (\ s a -> s{_dnilcrsLastModifiedTime = a}) . mapping _Time
-
--- | The Amazon Resource Name (ARN) of the lifecycle configuration.
-dnilcrsNotebookInstanceLifecycleConfigARN :: Lens' DescribeNotebookInstanceLifecycleConfigResponse (Maybe Text)
-dnilcrsNotebookInstanceLifecycleConfigARN = lens _dnilcrsNotebookInstanceLifecycleConfigARN (\ s a -> s{_dnilcrsNotebookInstanceLifecycleConfigARN = a})
-
--- | The shell script that runs every time you start a notebook instance, including when you create the notebook instance.
-dnilcrsOnStart :: Lens' DescribeNotebookInstanceLifecycleConfigResponse [NotebookInstanceLifecycleHook]
-dnilcrsOnStart = lens _dnilcrsOnStart (\ s a -> s{_dnilcrsOnStart = a}) . _Default . _Coerce
-
--- | The name of the lifecycle configuration.
-dnilcrsNotebookInstanceLifecycleConfigName :: Lens' DescribeNotebookInstanceLifecycleConfigResponse (Maybe Text)
-dnilcrsNotebookInstanceLifecycleConfigName = lens _dnilcrsNotebookInstanceLifecycleConfigName (\ s a -> s{_dnilcrsNotebookInstanceLifecycleConfigName = a})
-
--- | -- | The response status code.
-dnilcrsResponseStatus :: Lens' DescribeNotebookInstanceLifecycleConfigResponse Int
-dnilcrsResponseStatus = lens _dnilcrsResponseStatus (\ s a -> s{_dnilcrsResponseStatus = a})
-
-instance NFData
-           DescribeNotebookInstanceLifecycleConfigResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/DescribeTrainingJob.hs b/gen/Network/AWS/SageMaker/DescribeTrainingJob.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/DescribeTrainingJob.hs
+++ /dev/null
@@ -1,316 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.DescribeTrainingJob
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns information about a training job.
---
---
-module Network.AWS.SageMaker.DescribeTrainingJob
-    (
-    -- * Creating a Request
-      describeTrainingJob
-    , DescribeTrainingJob
-    -- * Request Lenses
-    , dtjTrainingJobName
-
-    -- * Destructuring the Response
-    , describeTrainingJobResponse
-    , DescribeTrainingJobResponse
-    -- * Response Lenses
-    , dtjrsFailureReason
-    , dtjrsTrainingEndTime
-    , dtjrsLastModifiedTime
-    , dtjrsHyperParameters
-    , dtjrsVPCConfig
-    , dtjrsOutputDataConfig
-    , dtjrsTrainingStartTime
-    , dtjrsRoleARN
-    , dtjrsResponseStatus
-    , dtjrsTrainingJobName
-    , dtjrsTrainingJobARN
-    , dtjrsModelArtifacts
-    , dtjrsTrainingJobStatus
-    , dtjrsSecondaryStatus
-    , dtjrsAlgorithmSpecification
-    , dtjrsInputDataConfig
-    , dtjrsResourceConfig
-    , dtjrsStoppingCondition
-    , dtjrsCreationTime
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'describeTrainingJob' smart constructor.
-newtype DescribeTrainingJob = DescribeTrainingJob'
-  { _dtjTrainingJobName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeTrainingJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtjTrainingJobName' - The name of the training job.
-describeTrainingJob
-    :: Text -- ^ 'dtjTrainingJobName'
-    -> DescribeTrainingJob
-describeTrainingJob pTrainingJobName_ =
-  DescribeTrainingJob' {_dtjTrainingJobName = pTrainingJobName_}
-
-
--- | The name of the training job.
-dtjTrainingJobName :: Lens' DescribeTrainingJob Text
-dtjTrainingJobName = lens _dtjTrainingJobName (\ s a -> s{_dtjTrainingJobName = a})
-
-instance AWSRequest DescribeTrainingJob where
-        type Rs DescribeTrainingJob =
-             DescribeTrainingJobResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeTrainingJobResponse' <$>
-                   (x .?> "FailureReason") <*> (x .?> "TrainingEndTime")
-                     <*> (x .?> "LastModifiedTime")
-                     <*> (x .?> "HyperParameters" .!@ mempty)
-                     <*> (x .?> "VpcConfig")
-                     <*> (x .?> "OutputDataConfig")
-                     <*> (x .?> "TrainingStartTime")
-                     <*> (x .?> "RoleArn")
-                     <*> (pure (fromEnum s))
-                     <*> (x .:> "TrainingJobName")
-                     <*> (x .:> "TrainingJobArn")
-                     <*> (x .:> "ModelArtifacts")
-                     <*> (x .:> "TrainingJobStatus")
-                     <*> (x .:> "SecondaryStatus")
-                     <*> (x .:> "AlgorithmSpecification")
-                     <*> (x .:> "InputDataConfig")
-                     <*> (x .:> "ResourceConfig")
-                     <*> (x .:> "StoppingCondition")
-                     <*> (x .:> "CreationTime"))
-
-instance Hashable DescribeTrainingJob where
-
-instance NFData DescribeTrainingJob where
-
-instance ToHeaders DescribeTrainingJob where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.DescribeTrainingJob" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeTrainingJob where
-        toJSON DescribeTrainingJob'{..}
-          = object
-              (catMaybes
-                 [Just ("TrainingJobName" .= _dtjTrainingJobName)])
-
-instance ToPath DescribeTrainingJob where
-        toPath = const "/"
-
-instance ToQuery DescribeTrainingJob where
-        toQuery = const mempty
-
--- | /See:/ 'describeTrainingJobResponse' smart constructor.
-data DescribeTrainingJobResponse = DescribeTrainingJobResponse'
-  { _dtjrsFailureReason          :: !(Maybe Text)
-  , _dtjrsTrainingEndTime        :: !(Maybe POSIX)
-  , _dtjrsLastModifiedTime       :: !(Maybe POSIX)
-  , _dtjrsHyperParameters        :: !(Maybe (Map Text Text))
-  , _dtjrsVPCConfig              :: !(Maybe VPCConfig)
-  , _dtjrsOutputDataConfig       :: !(Maybe OutputDataConfig)
-  , _dtjrsTrainingStartTime      :: !(Maybe POSIX)
-  , _dtjrsRoleARN                :: !(Maybe Text)
-  , _dtjrsResponseStatus         :: !Int
-  , _dtjrsTrainingJobName        :: !Text
-  , _dtjrsTrainingJobARN         :: !Text
-  , _dtjrsModelArtifacts         :: !ModelArtifacts
-  , _dtjrsTrainingJobStatus      :: !TrainingJobStatus
-  , _dtjrsSecondaryStatus        :: !SecondaryStatus
-  , _dtjrsAlgorithmSpecification :: !AlgorithmSpecification
-  , _dtjrsInputDataConfig        :: !(List1 Channel)
-  , _dtjrsResourceConfig         :: !ResourceConfig
-  , _dtjrsStoppingCondition      :: !StoppingCondition
-  , _dtjrsCreationTime           :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeTrainingJobResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtjrsFailureReason' - If the training job failed, the reason it failed.
---
--- * 'dtjrsTrainingEndTime' - A timestamp that indicates when model training ended.
---
--- * 'dtjrsLastModifiedTime' - A timestamp that indicates when the status of the training job was last modified.
---
--- * 'dtjrsHyperParameters' - Algorithm-specific parameters.
---
--- * 'dtjrsVPCConfig' - A object that specifies the VPC that this training job has access to. For more information, see 'train-vpc' .
---
--- * 'dtjrsOutputDataConfig' - The S3 path where model artifacts that you configured when creating the job are stored. Amazon SageMaker creates subfolders for model artifacts.
---
--- * 'dtjrsTrainingStartTime' - A timestamp that indicates when training started.
---
--- * 'dtjrsRoleARN' - The AWS Identity and Access Management (IAM) role configured for the training job.
---
--- * 'dtjrsResponseStatus' - -- | The response status code.
---
--- * 'dtjrsTrainingJobName' - Name of the model training job.
---
--- * 'dtjrsTrainingJobARN' - The Amazon Resource Name (ARN) of the training job.
---
--- * 'dtjrsModelArtifacts' - Information about the Amazon S3 location that is configured for storing model artifacts.
---
--- * 'dtjrsTrainingJobStatus' - The status of the training job.  For the @InProgress@ status, Amazon SageMaker can return these secondary statuses:     * Starting - Preparing for training.     * Downloading - Optional stage for algorithms that support File training input mode. It indicates data is being downloaded to ML storage volumes.     * Training - Training is in progress.     * Uploading - Training is complete and model upload is in progress. For the @Stopped@ training status, Amazon SageMaker can return these secondary statuses:     * MaxRuntimeExceeded - Job stopped as a result of maximum allowed runtime exceeded.
---
--- * 'dtjrsSecondaryStatus' - Provides granular information about the system state. For more information, see @TrainingJobStatus@ .
---
--- * 'dtjrsAlgorithmSpecification' - Information about the algorithm used for training, and algorithm metadata.
---
--- * 'dtjrsInputDataConfig' - An array of @Channel@ objects that describes each data input channel.
---
--- * 'dtjrsResourceConfig' - Resources, including ML compute instances and ML storage volumes, that are configured for model training.
---
--- * 'dtjrsStoppingCondition' - The condition under which to stop the training job.
---
--- * 'dtjrsCreationTime' - A timestamp that indicates when the training job was created.
-describeTrainingJobResponse
-    :: Int -- ^ 'dtjrsResponseStatus'
-    -> Text -- ^ 'dtjrsTrainingJobName'
-    -> Text -- ^ 'dtjrsTrainingJobARN'
-    -> ModelArtifacts -- ^ 'dtjrsModelArtifacts'
-    -> TrainingJobStatus -- ^ 'dtjrsTrainingJobStatus'
-    -> SecondaryStatus -- ^ 'dtjrsSecondaryStatus'
-    -> AlgorithmSpecification -- ^ 'dtjrsAlgorithmSpecification'
-    -> NonEmpty Channel -- ^ 'dtjrsInputDataConfig'
-    -> ResourceConfig -- ^ 'dtjrsResourceConfig'
-    -> StoppingCondition -- ^ 'dtjrsStoppingCondition'
-    -> UTCTime -- ^ 'dtjrsCreationTime'
-    -> DescribeTrainingJobResponse
-describeTrainingJobResponse pResponseStatus_ pTrainingJobName_ pTrainingJobARN_ pModelArtifacts_ pTrainingJobStatus_ pSecondaryStatus_ pAlgorithmSpecification_ pInputDataConfig_ pResourceConfig_ pStoppingCondition_ pCreationTime_ =
-  DescribeTrainingJobResponse'
-    { _dtjrsFailureReason = Nothing
-    , _dtjrsTrainingEndTime = Nothing
-    , _dtjrsLastModifiedTime = Nothing
-    , _dtjrsHyperParameters = Nothing
-    , _dtjrsVPCConfig = Nothing
-    , _dtjrsOutputDataConfig = Nothing
-    , _dtjrsTrainingStartTime = Nothing
-    , _dtjrsRoleARN = Nothing
-    , _dtjrsResponseStatus = pResponseStatus_
-    , _dtjrsTrainingJobName = pTrainingJobName_
-    , _dtjrsTrainingJobARN = pTrainingJobARN_
-    , _dtjrsModelArtifacts = pModelArtifacts_
-    , _dtjrsTrainingJobStatus = pTrainingJobStatus_
-    , _dtjrsSecondaryStatus = pSecondaryStatus_
-    , _dtjrsAlgorithmSpecification = pAlgorithmSpecification_
-    , _dtjrsInputDataConfig = _List1 # pInputDataConfig_
-    , _dtjrsResourceConfig = pResourceConfig_
-    , _dtjrsStoppingCondition = pStoppingCondition_
-    , _dtjrsCreationTime = _Time # pCreationTime_
-    }
-
-
--- | If the training job failed, the reason it failed.
-dtjrsFailureReason :: Lens' DescribeTrainingJobResponse (Maybe Text)
-dtjrsFailureReason = lens _dtjrsFailureReason (\ s a -> s{_dtjrsFailureReason = a})
-
--- | A timestamp that indicates when model training ended.
-dtjrsTrainingEndTime :: Lens' DescribeTrainingJobResponse (Maybe UTCTime)
-dtjrsTrainingEndTime = lens _dtjrsTrainingEndTime (\ s a -> s{_dtjrsTrainingEndTime = a}) . mapping _Time
-
--- | A timestamp that indicates when the status of the training job was last modified.
-dtjrsLastModifiedTime :: Lens' DescribeTrainingJobResponse (Maybe UTCTime)
-dtjrsLastModifiedTime = lens _dtjrsLastModifiedTime (\ s a -> s{_dtjrsLastModifiedTime = a}) . mapping _Time
-
--- | Algorithm-specific parameters.
-dtjrsHyperParameters :: Lens' DescribeTrainingJobResponse (HashMap Text Text)
-dtjrsHyperParameters = lens _dtjrsHyperParameters (\ s a -> s{_dtjrsHyperParameters = a}) . _Default . _Map
-
--- | A object that specifies the VPC that this training job has access to. For more information, see 'train-vpc' .
-dtjrsVPCConfig :: Lens' DescribeTrainingJobResponse (Maybe VPCConfig)
-dtjrsVPCConfig = lens _dtjrsVPCConfig (\ s a -> s{_dtjrsVPCConfig = a})
-
--- | The S3 path where model artifacts that you configured when creating the job are stored. Amazon SageMaker creates subfolders for model artifacts.
-dtjrsOutputDataConfig :: Lens' DescribeTrainingJobResponse (Maybe OutputDataConfig)
-dtjrsOutputDataConfig = lens _dtjrsOutputDataConfig (\ s a -> s{_dtjrsOutputDataConfig = a})
-
--- | A timestamp that indicates when training started.
-dtjrsTrainingStartTime :: Lens' DescribeTrainingJobResponse (Maybe UTCTime)
-dtjrsTrainingStartTime = lens _dtjrsTrainingStartTime (\ s a -> s{_dtjrsTrainingStartTime = a}) . mapping _Time
-
--- | The AWS Identity and Access Management (IAM) role configured for the training job.
-dtjrsRoleARN :: Lens' DescribeTrainingJobResponse (Maybe Text)
-dtjrsRoleARN = lens _dtjrsRoleARN (\ s a -> s{_dtjrsRoleARN = a})
-
--- | -- | The response status code.
-dtjrsResponseStatus :: Lens' DescribeTrainingJobResponse Int
-dtjrsResponseStatus = lens _dtjrsResponseStatus (\ s a -> s{_dtjrsResponseStatus = a})
-
--- | Name of the model training job.
-dtjrsTrainingJobName :: Lens' DescribeTrainingJobResponse Text
-dtjrsTrainingJobName = lens _dtjrsTrainingJobName (\ s a -> s{_dtjrsTrainingJobName = a})
-
--- | The Amazon Resource Name (ARN) of the training job.
-dtjrsTrainingJobARN :: Lens' DescribeTrainingJobResponse Text
-dtjrsTrainingJobARN = lens _dtjrsTrainingJobARN (\ s a -> s{_dtjrsTrainingJobARN = a})
-
--- | Information about the Amazon S3 location that is configured for storing model artifacts.
-dtjrsModelArtifacts :: Lens' DescribeTrainingJobResponse ModelArtifacts
-dtjrsModelArtifacts = lens _dtjrsModelArtifacts (\ s a -> s{_dtjrsModelArtifacts = a})
-
--- | The status of the training job.  For the @InProgress@ status, Amazon SageMaker can return these secondary statuses:     * Starting - Preparing for training.     * Downloading - Optional stage for algorithms that support File training input mode. It indicates data is being downloaded to ML storage volumes.     * Training - Training is in progress.     * Uploading - Training is complete and model upload is in progress. For the @Stopped@ training status, Amazon SageMaker can return these secondary statuses:     * MaxRuntimeExceeded - Job stopped as a result of maximum allowed runtime exceeded.
-dtjrsTrainingJobStatus :: Lens' DescribeTrainingJobResponse TrainingJobStatus
-dtjrsTrainingJobStatus = lens _dtjrsTrainingJobStatus (\ s a -> s{_dtjrsTrainingJobStatus = a})
-
--- | Provides granular information about the system state. For more information, see @TrainingJobStatus@ .
-dtjrsSecondaryStatus :: Lens' DescribeTrainingJobResponse SecondaryStatus
-dtjrsSecondaryStatus = lens _dtjrsSecondaryStatus (\ s a -> s{_dtjrsSecondaryStatus = a})
-
--- | Information about the algorithm used for training, and algorithm metadata.
-dtjrsAlgorithmSpecification :: Lens' DescribeTrainingJobResponse AlgorithmSpecification
-dtjrsAlgorithmSpecification = lens _dtjrsAlgorithmSpecification (\ s a -> s{_dtjrsAlgorithmSpecification = a})
-
--- | An array of @Channel@ objects that describes each data input channel.
-dtjrsInputDataConfig :: Lens' DescribeTrainingJobResponse (NonEmpty Channel)
-dtjrsInputDataConfig = lens _dtjrsInputDataConfig (\ s a -> s{_dtjrsInputDataConfig = a}) . _List1
-
--- | Resources, including ML compute instances and ML storage volumes, that are configured for model training.
-dtjrsResourceConfig :: Lens' DescribeTrainingJobResponse ResourceConfig
-dtjrsResourceConfig = lens _dtjrsResourceConfig (\ s a -> s{_dtjrsResourceConfig = a})
-
--- | The condition under which to stop the training job.
-dtjrsStoppingCondition :: Lens' DescribeTrainingJobResponse StoppingCondition
-dtjrsStoppingCondition = lens _dtjrsStoppingCondition (\ s a -> s{_dtjrsStoppingCondition = a})
-
--- | A timestamp that indicates when the training job was created.
-dtjrsCreationTime :: Lens' DescribeTrainingJobResponse UTCTime
-dtjrsCreationTime = lens _dtjrsCreationTime (\ s a -> s{_dtjrsCreationTime = a}) . _Time
-
-instance NFData DescribeTrainingJobResponse where
diff --git a/gen/Network/AWS/SageMaker/ListEndpointConfigs.hs b/gen/Network/AWS/SageMaker/ListEndpointConfigs.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListEndpointConfigs.hs
+++ /dev/null
@@ -1,217 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListEndpointConfigs
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists endpoint configurations.
---
---
---
--- This operation returns paginated results.
-module Network.AWS.SageMaker.ListEndpointConfigs
-    (
-    -- * Creating a Request
-      listEndpointConfigs
-    , ListEndpointConfigs
-    -- * Request Lenses
-    , lecNameContains
-    , lecCreationTimeAfter
-    , lecNextToken
-    , lecSortOrder
-    , lecCreationTimeBefore
-    , lecMaxResults
-    , lecSortBy
-
-    -- * Destructuring the Response
-    , listEndpointConfigsResponse
-    , ListEndpointConfigsResponse
-    -- * Response Lenses
-    , lecrsNextToken
-    , lecrsResponseStatus
-    , lecrsEndpointConfigs
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listEndpointConfigs' smart constructor.
-data ListEndpointConfigs = ListEndpointConfigs'
-  { _lecNameContains       :: !(Maybe Text)
-  , _lecCreationTimeAfter  :: !(Maybe POSIX)
-  , _lecNextToken          :: !(Maybe Text)
-  , _lecSortOrder          :: !(Maybe OrderKey)
-  , _lecCreationTimeBefore :: !(Maybe POSIX)
-  , _lecMaxResults         :: !(Maybe Nat)
-  , _lecSortBy             :: !(Maybe EndpointConfigSortKey)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListEndpointConfigs' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lecNameContains' - A string in the endpoint configuration name. This filter returns only endpoint configurations whose name contains the specified string.
---
--- * 'lecCreationTimeAfter' - A filter that returns only endpoint configurations created after the specified time (timestamp).
---
--- * 'lecNextToken' - If the result of the previous @ListEndpointConfig@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of endpoint configurations, use the token in the next request.
---
--- * 'lecSortOrder' - The sort order for results. The default is @Ascending@ .
---
--- * 'lecCreationTimeBefore' - A filter that returns only endpoint configurations created before the specified time (timestamp).
---
--- * 'lecMaxResults' - The maximum number of training jobs to return in the response.
---
--- * 'lecSortBy' - The field to sort results by. The default is @CreationTime@ .
-listEndpointConfigs
-    :: ListEndpointConfigs
-listEndpointConfigs =
-  ListEndpointConfigs'
-    { _lecNameContains = Nothing
-    , _lecCreationTimeAfter = Nothing
-    , _lecNextToken = Nothing
-    , _lecSortOrder = Nothing
-    , _lecCreationTimeBefore = Nothing
-    , _lecMaxResults = Nothing
-    , _lecSortBy = Nothing
-    }
-
-
--- | A string in the endpoint configuration name. This filter returns only endpoint configurations whose name contains the specified string.
-lecNameContains :: Lens' ListEndpointConfigs (Maybe Text)
-lecNameContains = lens _lecNameContains (\ s a -> s{_lecNameContains = a})
-
--- | A filter that returns only endpoint configurations created after the specified time (timestamp).
-lecCreationTimeAfter :: Lens' ListEndpointConfigs (Maybe UTCTime)
-lecCreationTimeAfter = lens _lecCreationTimeAfter (\ s a -> s{_lecCreationTimeAfter = a}) . mapping _Time
-
--- | If the result of the previous @ListEndpointConfig@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of endpoint configurations, use the token in the next request.
-lecNextToken :: Lens' ListEndpointConfigs (Maybe Text)
-lecNextToken = lens _lecNextToken (\ s a -> s{_lecNextToken = a})
-
--- | The sort order for results. The default is @Ascending@ .
-lecSortOrder :: Lens' ListEndpointConfigs (Maybe OrderKey)
-lecSortOrder = lens _lecSortOrder (\ s a -> s{_lecSortOrder = a})
-
--- | A filter that returns only endpoint configurations created before the specified time (timestamp).
-lecCreationTimeBefore :: Lens' ListEndpointConfigs (Maybe UTCTime)
-lecCreationTimeBefore = lens _lecCreationTimeBefore (\ s a -> s{_lecCreationTimeBefore = a}) . mapping _Time
-
--- | The maximum number of training jobs to return in the response.
-lecMaxResults :: Lens' ListEndpointConfigs (Maybe Natural)
-lecMaxResults = lens _lecMaxResults (\ s a -> s{_lecMaxResults = a}) . mapping _Nat
-
--- | The field to sort results by. The default is @CreationTime@ .
-lecSortBy :: Lens' ListEndpointConfigs (Maybe EndpointConfigSortKey)
-lecSortBy = lens _lecSortBy (\ s a -> s{_lecSortBy = a})
-
-instance AWSPager ListEndpointConfigs where
-        page rq rs
-          | stop (rs ^. lecrsNextToken) = Nothing
-          | stop (rs ^. lecrsEndpointConfigs) = Nothing
-          | otherwise =
-            Just $ rq & lecNextToken .~ rs ^. lecrsNextToken
-
-instance AWSRequest ListEndpointConfigs where
-        type Rs ListEndpointConfigs =
-             ListEndpointConfigsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListEndpointConfigsResponse' <$>
-                   (x .?> "NextToken") <*> (pure (fromEnum s)) <*>
-                     (x .?> "EndpointConfigs" .!@ mempty))
-
-instance Hashable ListEndpointConfigs where
-
-instance NFData ListEndpointConfigs where
-
-instance ToHeaders ListEndpointConfigs where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListEndpointConfigs" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListEndpointConfigs where
-        toJSON ListEndpointConfigs'{..}
-          = object
-              (catMaybes
-                 [("NameContains" .=) <$> _lecNameContains,
-                  ("CreationTimeAfter" .=) <$> _lecCreationTimeAfter,
-                  ("NextToken" .=) <$> _lecNextToken,
-                  ("SortOrder" .=) <$> _lecSortOrder,
-                  ("CreationTimeBefore" .=) <$> _lecCreationTimeBefore,
-                  ("MaxResults" .=) <$> _lecMaxResults,
-                  ("SortBy" .=) <$> _lecSortBy])
-
-instance ToPath ListEndpointConfigs where
-        toPath = const "/"
-
-instance ToQuery ListEndpointConfigs where
-        toQuery = const mempty
-
--- | /See:/ 'listEndpointConfigsResponse' smart constructor.
-data ListEndpointConfigsResponse = ListEndpointConfigsResponse'
-  { _lecrsNextToken       :: !(Maybe Text)
-  , _lecrsResponseStatus  :: !Int
-  , _lecrsEndpointConfigs :: ![EndpointConfigSummary]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListEndpointConfigsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lecrsNextToken' - If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of endpoint configurations, use it in the subsequent request
---
--- * 'lecrsResponseStatus' - -- | The response status code.
---
--- * 'lecrsEndpointConfigs' - An array of endpoint configurations.
-listEndpointConfigsResponse
-    :: Int -- ^ 'lecrsResponseStatus'
-    -> ListEndpointConfigsResponse
-listEndpointConfigsResponse pResponseStatus_ =
-  ListEndpointConfigsResponse'
-    { _lecrsNextToken = Nothing
-    , _lecrsResponseStatus = pResponseStatus_
-    , _lecrsEndpointConfigs = mempty
-    }
-
-
--- | If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of endpoint configurations, use it in the subsequent request
-lecrsNextToken :: Lens' ListEndpointConfigsResponse (Maybe Text)
-lecrsNextToken = lens _lecrsNextToken (\ s a -> s{_lecrsNextToken = a})
-
--- | -- | The response status code.
-lecrsResponseStatus :: Lens' ListEndpointConfigsResponse Int
-lecrsResponseStatus = lens _lecrsResponseStatus (\ s a -> s{_lecrsResponseStatus = a})
-
--- | An array of endpoint configurations.
-lecrsEndpointConfigs :: Lens' ListEndpointConfigsResponse [EndpointConfigSummary]
-lecrsEndpointConfigs = lens _lecrsEndpointConfigs (\ s a -> s{_lecrsEndpointConfigs = a}) . _Coerce
-
-instance NFData ListEndpointConfigsResponse where
diff --git a/gen/Network/AWS/SageMaker/ListEndpoints.hs b/gen/Network/AWS/SageMaker/ListEndpoints.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListEndpoints.hs
+++ /dev/null
@@ -1,248 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListEndpoints
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists endpoints.
---
---
---
--- This operation returns paginated results.
-module Network.AWS.SageMaker.ListEndpoints
-    (
-    -- * Creating a Request
-      listEndpoints
-    , ListEndpoints
-    -- * Request Lenses
-    , leNameContains
-    , leLastModifiedTimeBefore
-    , leCreationTimeAfter
-    , leNextToken
-    , leSortOrder
-    , leLastModifiedTimeAfter
-    , leCreationTimeBefore
-    , leStatusEquals
-    , leMaxResults
-    , leSortBy
-
-    -- * Destructuring the Response
-    , listEndpointsResponse
-    , ListEndpointsResponse
-    -- * Response Lenses
-    , lersNextToken
-    , lersResponseStatus
-    , lersEndpoints
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listEndpoints' smart constructor.
-data ListEndpoints = ListEndpoints'
-  { _leNameContains           :: !(Maybe Text)
-  , _leLastModifiedTimeBefore :: !(Maybe POSIX)
-  , _leCreationTimeAfter      :: !(Maybe POSIX)
-  , _leNextToken              :: !(Maybe Text)
-  , _leSortOrder              :: !(Maybe OrderKey)
-  , _leLastModifiedTimeAfter  :: !(Maybe POSIX)
-  , _leCreationTimeBefore     :: !(Maybe POSIX)
-  , _leStatusEquals           :: !(Maybe EndpointStatus)
-  , _leMaxResults             :: !(Maybe Nat)
-  , _leSortBy                 :: !(Maybe EndpointSortKey)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListEndpoints' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'leNameContains' - A string in endpoint names. This filter returns only endpoints whose name contains the specified string.
---
--- * 'leLastModifiedTimeBefore' - A filter that returns only endpoints that were modified before the specified timestamp.
---
--- * 'leCreationTimeAfter' - A filter that returns only endpoints that were created after the specified time (timestamp).
---
--- * 'leNextToken' - If the result of a @ListEndpoints@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of endpoints, use the token in the next request.
---
--- * 'leSortOrder' - The sort order for results. The default is @Ascending@ .
---
--- * 'leLastModifiedTimeAfter' - A filter that returns only endpoints that were modified after the specified timestamp.
---
--- * 'leCreationTimeBefore' - A filter that returns only endpoints that were created before the specified time (timestamp).
---
--- * 'leStatusEquals' - A filter that returns only endpoints with the specified status.
---
--- * 'leMaxResults' - The maximum number of endpoints to return in the response.
---
--- * 'leSortBy' - Sorts the list of results. The default is @CreationTime@ .
-listEndpoints
-    :: ListEndpoints
-listEndpoints =
-  ListEndpoints'
-    { _leNameContains = Nothing
-    , _leLastModifiedTimeBefore = Nothing
-    , _leCreationTimeAfter = Nothing
-    , _leNextToken = Nothing
-    , _leSortOrder = Nothing
-    , _leLastModifiedTimeAfter = Nothing
-    , _leCreationTimeBefore = Nothing
-    , _leStatusEquals = Nothing
-    , _leMaxResults = Nothing
-    , _leSortBy = Nothing
-    }
-
-
--- | A string in endpoint names. This filter returns only endpoints whose name contains the specified string.
-leNameContains :: Lens' ListEndpoints (Maybe Text)
-leNameContains = lens _leNameContains (\ s a -> s{_leNameContains = a})
-
--- | A filter that returns only endpoints that were modified before the specified timestamp.
-leLastModifiedTimeBefore :: Lens' ListEndpoints (Maybe UTCTime)
-leLastModifiedTimeBefore = lens _leLastModifiedTimeBefore (\ s a -> s{_leLastModifiedTimeBefore = a}) . mapping _Time
-
--- | A filter that returns only endpoints that were created after the specified time (timestamp).
-leCreationTimeAfter :: Lens' ListEndpoints (Maybe UTCTime)
-leCreationTimeAfter = lens _leCreationTimeAfter (\ s a -> s{_leCreationTimeAfter = a}) . mapping _Time
-
--- | If the result of a @ListEndpoints@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of endpoints, use the token in the next request.
-leNextToken :: Lens' ListEndpoints (Maybe Text)
-leNextToken = lens _leNextToken (\ s a -> s{_leNextToken = a})
-
--- | The sort order for results. The default is @Ascending@ .
-leSortOrder :: Lens' ListEndpoints (Maybe OrderKey)
-leSortOrder = lens _leSortOrder (\ s a -> s{_leSortOrder = a})
-
--- | A filter that returns only endpoints that were modified after the specified timestamp.
-leLastModifiedTimeAfter :: Lens' ListEndpoints (Maybe UTCTime)
-leLastModifiedTimeAfter = lens _leLastModifiedTimeAfter (\ s a -> s{_leLastModifiedTimeAfter = a}) . mapping _Time
-
--- | A filter that returns only endpoints that were created before the specified time (timestamp).
-leCreationTimeBefore :: Lens' ListEndpoints (Maybe UTCTime)
-leCreationTimeBefore = lens _leCreationTimeBefore (\ s a -> s{_leCreationTimeBefore = a}) . mapping _Time
-
--- | A filter that returns only endpoints with the specified status.
-leStatusEquals :: Lens' ListEndpoints (Maybe EndpointStatus)
-leStatusEquals = lens _leStatusEquals (\ s a -> s{_leStatusEquals = a})
-
--- | The maximum number of endpoints to return in the response.
-leMaxResults :: Lens' ListEndpoints (Maybe Natural)
-leMaxResults = lens _leMaxResults (\ s a -> s{_leMaxResults = a}) . mapping _Nat
-
--- | Sorts the list of results. The default is @CreationTime@ .
-leSortBy :: Lens' ListEndpoints (Maybe EndpointSortKey)
-leSortBy = lens _leSortBy (\ s a -> s{_leSortBy = a})
-
-instance AWSPager ListEndpoints where
-        page rq rs
-          | stop (rs ^. lersNextToken) = Nothing
-          | stop (rs ^. lersEndpoints) = Nothing
-          | otherwise =
-            Just $ rq & leNextToken .~ rs ^. lersNextToken
-
-instance AWSRequest ListEndpoints where
-        type Rs ListEndpoints = ListEndpointsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListEndpointsResponse' <$>
-                   (x .?> "NextToken") <*> (pure (fromEnum s)) <*>
-                     (x .?> "Endpoints" .!@ mempty))
-
-instance Hashable ListEndpoints where
-
-instance NFData ListEndpoints where
-
-instance ToHeaders ListEndpoints where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListEndpoints" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListEndpoints where
-        toJSON ListEndpoints'{..}
-          = object
-              (catMaybes
-                 [("NameContains" .=) <$> _leNameContains,
-                  ("LastModifiedTimeBefore" .=) <$>
-                    _leLastModifiedTimeBefore,
-                  ("CreationTimeAfter" .=) <$> _leCreationTimeAfter,
-                  ("NextToken" .=) <$> _leNextToken,
-                  ("SortOrder" .=) <$> _leSortOrder,
-                  ("LastModifiedTimeAfter" .=) <$>
-                    _leLastModifiedTimeAfter,
-                  ("CreationTimeBefore" .=) <$> _leCreationTimeBefore,
-                  ("StatusEquals" .=) <$> _leStatusEquals,
-                  ("MaxResults" .=) <$> _leMaxResults,
-                  ("SortBy" .=) <$> _leSortBy])
-
-instance ToPath ListEndpoints where
-        toPath = const "/"
-
-instance ToQuery ListEndpoints where
-        toQuery = const mempty
-
--- | /See:/ 'listEndpointsResponse' smart constructor.
-data ListEndpointsResponse = ListEndpointsResponse'
-  { _lersNextToken      :: !(Maybe Text)
-  , _lersResponseStatus :: !Int
-  , _lersEndpoints      :: ![EndpointSummary]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListEndpointsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lersNextToken' - If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of training jobs, use it in the subsequent request.
---
--- * 'lersResponseStatus' - -- | The response status code.
---
--- * 'lersEndpoints' - An array or endpoint objects.
-listEndpointsResponse
-    :: Int -- ^ 'lersResponseStatus'
-    -> ListEndpointsResponse
-listEndpointsResponse pResponseStatus_ =
-  ListEndpointsResponse'
-    { _lersNextToken = Nothing
-    , _lersResponseStatus = pResponseStatus_
-    , _lersEndpoints = mempty
-    }
-
-
--- | If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of training jobs, use it in the subsequent request.
-lersNextToken :: Lens' ListEndpointsResponse (Maybe Text)
-lersNextToken = lens _lersNextToken (\ s a -> s{_lersNextToken = a})
-
--- | -- | The response status code.
-lersResponseStatus :: Lens' ListEndpointsResponse Int
-lersResponseStatus = lens _lersResponseStatus (\ s a -> s{_lersResponseStatus = a})
-
--- | An array or endpoint objects.
-lersEndpoints :: Lens' ListEndpointsResponse [EndpointSummary]
-lersEndpoints = lens _lersEndpoints (\ s a -> s{_lersEndpoints = a}) . _Coerce
-
-instance NFData ListEndpointsResponse where
diff --git a/gen/Network/AWS/SageMaker/ListModels.hs b/gen/Network/AWS/SageMaker/ListModels.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListModels.hs
+++ /dev/null
@@ -1,216 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListModels
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists models created with the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html CreateModel> API.
---
---
---
--- This operation returns paginated results.
-module Network.AWS.SageMaker.ListModels
-    (
-    -- * Creating a Request
-      listModels
-    , ListModels
-    -- * Request Lenses
-    , lmNameContains
-    , lmCreationTimeAfter
-    , lmNextToken
-    , lmSortOrder
-    , lmCreationTimeBefore
-    , lmMaxResults
-    , lmSortBy
-
-    -- * Destructuring the Response
-    , listModelsResponse
-    , ListModelsResponse
-    -- * Response Lenses
-    , lmrsNextToken
-    , lmrsResponseStatus
-    , lmrsModels
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listModels' smart constructor.
-data ListModels = ListModels'
-  { _lmNameContains       :: !(Maybe Text)
-  , _lmCreationTimeAfter  :: !(Maybe POSIX)
-  , _lmNextToken          :: !(Maybe Text)
-  , _lmSortOrder          :: !(Maybe OrderKey)
-  , _lmCreationTimeBefore :: !(Maybe POSIX)
-  , _lmMaxResults         :: !(Maybe Nat)
-  , _lmSortBy             :: !(Maybe ModelSortKey)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListModels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lmNameContains' - A string in the training job name. This filter returns only models in the training job whose name contains the specified string.
---
--- * 'lmCreationTimeAfter' - A filter that returns only models created after the specified time (timestamp).
---
--- * 'lmNextToken' - If the response to a previous @ListModels@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of models, use the token in the next request.
---
--- * 'lmSortOrder' - The sort order for results. The default is @Ascending@ .
---
--- * 'lmCreationTimeBefore' - A filter that returns only models created before the specified time (timestamp).
---
--- * 'lmMaxResults' - The maximum number of models to return in the response.
---
--- * 'lmSortBy' - Sorts the list of results. The default is @CreationTime@ .
-listModels
-    :: ListModels
-listModels =
-  ListModels'
-    { _lmNameContains = Nothing
-    , _lmCreationTimeAfter = Nothing
-    , _lmNextToken = Nothing
-    , _lmSortOrder = Nothing
-    , _lmCreationTimeBefore = Nothing
-    , _lmMaxResults = Nothing
-    , _lmSortBy = Nothing
-    }
-
-
--- | A string in the training job name. This filter returns only models in the training job whose name contains the specified string.
-lmNameContains :: Lens' ListModels (Maybe Text)
-lmNameContains = lens _lmNameContains (\ s a -> s{_lmNameContains = a})
-
--- | A filter that returns only models created after the specified time (timestamp).
-lmCreationTimeAfter :: Lens' ListModels (Maybe UTCTime)
-lmCreationTimeAfter = lens _lmCreationTimeAfter (\ s a -> s{_lmCreationTimeAfter = a}) . mapping _Time
-
--- | If the response to a previous @ListModels@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of models, use the token in the next request.
-lmNextToken :: Lens' ListModels (Maybe Text)
-lmNextToken = lens _lmNextToken (\ s a -> s{_lmNextToken = a})
-
--- | The sort order for results. The default is @Ascending@ .
-lmSortOrder :: Lens' ListModels (Maybe OrderKey)
-lmSortOrder = lens _lmSortOrder (\ s a -> s{_lmSortOrder = a})
-
--- | A filter that returns only models created before the specified time (timestamp).
-lmCreationTimeBefore :: Lens' ListModels (Maybe UTCTime)
-lmCreationTimeBefore = lens _lmCreationTimeBefore (\ s a -> s{_lmCreationTimeBefore = a}) . mapping _Time
-
--- | The maximum number of models to return in the response.
-lmMaxResults :: Lens' ListModels (Maybe Natural)
-lmMaxResults = lens _lmMaxResults (\ s a -> s{_lmMaxResults = a}) . mapping _Nat
-
--- | Sorts the list of results. The default is @CreationTime@ .
-lmSortBy :: Lens' ListModels (Maybe ModelSortKey)
-lmSortBy = lens _lmSortBy (\ s a -> s{_lmSortBy = a})
-
-instance AWSPager ListModels where
-        page rq rs
-          | stop (rs ^. lmrsNextToken) = Nothing
-          | stop (rs ^. lmrsModels) = Nothing
-          | otherwise =
-            Just $ rq & lmNextToken .~ rs ^. lmrsNextToken
-
-instance AWSRequest ListModels where
-        type Rs ListModels = ListModelsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListModelsResponse' <$>
-                   (x .?> "NextToken") <*> (pure (fromEnum s)) <*>
-                     (x .?> "Models" .!@ mempty))
-
-instance Hashable ListModels where
-
-instance NFData ListModels where
-
-instance ToHeaders ListModels where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListModels" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListModels where
-        toJSON ListModels'{..}
-          = object
-              (catMaybes
-                 [("NameContains" .=) <$> _lmNameContains,
-                  ("CreationTimeAfter" .=) <$> _lmCreationTimeAfter,
-                  ("NextToken" .=) <$> _lmNextToken,
-                  ("SortOrder" .=) <$> _lmSortOrder,
-                  ("CreationTimeBefore" .=) <$> _lmCreationTimeBefore,
-                  ("MaxResults" .=) <$> _lmMaxResults,
-                  ("SortBy" .=) <$> _lmSortBy])
-
-instance ToPath ListModels where
-        toPath = const "/"
-
-instance ToQuery ListModels where
-        toQuery = const mempty
-
--- | /See:/ 'listModelsResponse' smart constructor.
-data ListModelsResponse = ListModelsResponse'
-  { _lmrsNextToken      :: !(Maybe Text)
-  , _lmrsResponseStatus :: !Int
-  , _lmrsModels         :: ![ModelSummary]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListModelsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lmrsNextToken' - If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of models, use it in the subsequent request.
---
--- * 'lmrsResponseStatus' - -- | The response status code.
---
--- * 'lmrsModels' - An array of @ModelSummary@ objects, each of which lists a model.
-listModelsResponse
-    :: Int -- ^ 'lmrsResponseStatus'
-    -> ListModelsResponse
-listModelsResponse pResponseStatus_ =
-  ListModelsResponse'
-    { _lmrsNextToken = Nothing
-    , _lmrsResponseStatus = pResponseStatus_
-    , _lmrsModels = mempty
-    }
-
-
--- | If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of models, use it in the subsequent request.
-lmrsNextToken :: Lens' ListModelsResponse (Maybe Text)
-lmrsNextToken = lens _lmrsNextToken (\ s a -> s{_lmrsNextToken = a})
-
--- | -- | The response status code.
-lmrsResponseStatus :: Lens' ListModelsResponse Int
-lmrsResponseStatus = lens _lmrsResponseStatus (\ s a -> s{_lmrsResponseStatus = a})
-
--- | An array of @ModelSummary@ objects, each of which lists a model.
-lmrsModels :: Lens' ListModelsResponse [ModelSummary]
-lmrsModels = lens _lmrsModels (\ s a -> s{_lmrsModels = a}) . _Coerce
-
-instance NFData ListModelsResponse where
diff --git a/gen/Network/AWS/SageMaker/ListNotebookInstanceLifecycleConfigs.hs b/gen/Network/AWS/SageMaker/ListNotebookInstanceLifecycleConfigs.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListNotebookInstanceLifecycleConfigs.hs
+++ /dev/null
@@ -1,244 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListNotebookInstanceLifecycleConfigs
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists notebook instance lifestyle configurations created with the API.
---
---
-module Network.AWS.SageMaker.ListNotebookInstanceLifecycleConfigs
-    (
-    -- * Creating a Request
-      listNotebookInstanceLifecycleConfigs
-    , ListNotebookInstanceLifecycleConfigs
-    -- * Request Lenses
-    , lnilcNameContains
-    , lnilcLastModifiedTimeBefore
-    , lnilcCreationTimeAfter
-    , lnilcNextToken
-    , lnilcSortOrder
-    , lnilcLastModifiedTimeAfter
-    , lnilcCreationTimeBefore
-    , lnilcMaxResults
-    , lnilcSortBy
-
-    -- * Destructuring the Response
-    , listNotebookInstanceLifecycleConfigsResponse
-    , ListNotebookInstanceLifecycleConfigsResponse
-    -- * Response Lenses
-    , lnilcrsNextToken
-    , lnilcrsNotebookInstanceLifecycleConfigs
-    , lnilcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listNotebookInstanceLifecycleConfigs' smart constructor.
-data ListNotebookInstanceLifecycleConfigs = ListNotebookInstanceLifecycleConfigs'
-  { _lnilcNameContains :: !(Maybe Text)
-  , _lnilcLastModifiedTimeBefore :: !(Maybe POSIX)
-  , _lnilcCreationTimeAfter :: !(Maybe POSIX)
-  , _lnilcNextToken :: !(Maybe Text)
-  , _lnilcSortOrder :: !(Maybe NotebookInstanceLifecycleConfigSortOrder)
-  , _lnilcLastModifiedTimeAfter :: !(Maybe POSIX)
-  , _lnilcCreationTimeBefore :: !(Maybe POSIX)
-  , _lnilcMaxResults :: !(Maybe Nat)
-  , _lnilcSortBy :: !(Maybe NotebookInstanceLifecycleConfigSortKey)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListNotebookInstanceLifecycleConfigs' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lnilcNameContains' - A string in the lifecycle configuration name. This filter returns only lifecycle configurations whose name contains the specified string.
---
--- * 'lnilcLastModifiedTimeBefore' - A filter that returns only lifecycle configurations that were modified before the specified time (timestamp).
---
--- * 'lnilcCreationTimeAfter' - A filter that returns only lifecycle configurations that were created after the specified time (timestamp).
---
--- * 'lnilcNextToken' - If the result of a @ListNotebookInstanceLifecycleConfigs@ request was truncated, the response includes a @NextToken@ . To get the next set of lifecycle configurations, use the token in the next request.
---
--- * 'lnilcSortOrder' - The sort order for results.
---
--- * 'lnilcLastModifiedTimeAfter' - A filter that returns only lifecycle configurations that were modified after the specified time (timestamp).
---
--- * 'lnilcCreationTimeBefore' - A filter that returns only lifecycle configurations that were created before the specified time (timestamp).
---
--- * 'lnilcMaxResults' - The maximum number of lifecycle configurations to return in the response.
---
--- * 'lnilcSortBy' - Sorts the list of results. The default is @CreationTime@ .
-listNotebookInstanceLifecycleConfigs
-    :: ListNotebookInstanceLifecycleConfigs
-listNotebookInstanceLifecycleConfigs =
-  ListNotebookInstanceLifecycleConfigs'
-    { _lnilcNameContains = Nothing
-    , _lnilcLastModifiedTimeBefore = Nothing
-    , _lnilcCreationTimeAfter = Nothing
-    , _lnilcNextToken = Nothing
-    , _lnilcSortOrder = Nothing
-    , _lnilcLastModifiedTimeAfter = Nothing
-    , _lnilcCreationTimeBefore = Nothing
-    , _lnilcMaxResults = Nothing
-    , _lnilcSortBy = Nothing
-    }
-
-
--- | A string in the lifecycle configuration name. This filter returns only lifecycle configurations whose name contains the specified string.
-lnilcNameContains :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe Text)
-lnilcNameContains = lens _lnilcNameContains (\ s a -> s{_lnilcNameContains = a})
-
--- | A filter that returns only lifecycle configurations that were modified before the specified time (timestamp).
-lnilcLastModifiedTimeBefore :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe UTCTime)
-lnilcLastModifiedTimeBefore = lens _lnilcLastModifiedTimeBefore (\ s a -> s{_lnilcLastModifiedTimeBefore = a}) . mapping _Time
-
--- | A filter that returns only lifecycle configurations that were created after the specified time (timestamp).
-lnilcCreationTimeAfter :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe UTCTime)
-lnilcCreationTimeAfter = lens _lnilcCreationTimeAfter (\ s a -> s{_lnilcCreationTimeAfter = a}) . mapping _Time
-
--- | If the result of a @ListNotebookInstanceLifecycleConfigs@ request was truncated, the response includes a @NextToken@ . To get the next set of lifecycle configurations, use the token in the next request.
-lnilcNextToken :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe Text)
-lnilcNextToken = lens _lnilcNextToken (\ s a -> s{_lnilcNextToken = a})
-
--- | The sort order for results.
-lnilcSortOrder :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe NotebookInstanceLifecycleConfigSortOrder)
-lnilcSortOrder = lens _lnilcSortOrder (\ s a -> s{_lnilcSortOrder = a})
-
--- | A filter that returns only lifecycle configurations that were modified after the specified time (timestamp).
-lnilcLastModifiedTimeAfter :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe UTCTime)
-lnilcLastModifiedTimeAfter = lens _lnilcLastModifiedTimeAfter (\ s a -> s{_lnilcLastModifiedTimeAfter = a}) . mapping _Time
-
--- | A filter that returns only lifecycle configurations that were created before the specified time (timestamp).
-lnilcCreationTimeBefore :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe UTCTime)
-lnilcCreationTimeBefore = lens _lnilcCreationTimeBefore (\ s a -> s{_lnilcCreationTimeBefore = a}) . mapping _Time
-
--- | The maximum number of lifecycle configurations to return in the response.
-lnilcMaxResults :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe Natural)
-lnilcMaxResults = lens _lnilcMaxResults (\ s a -> s{_lnilcMaxResults = a}) . mapping _Nat
-
--- | Sorts the list of results. The default is @CreationTime@ .
-lnilcSortBy :: Lens' ListNotebookInstanceLifecycleConfigs (Maybe NotebookInstanceLifecycleConfigSortKey)
-lnilcSortBy = lens _lnilcSortBy (\ s a -> s{_lnilcSortBy = a})
-
-instance AWSRequest
-           ListNotebookInstanceLifecycleConfigs
-         where
-        type Rs ListNotebookInstanceLifecycleConfigs =
-             ListNotebookInstanceLifecycleConfigsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListNotebookInstanceLifecycleConfigsResponse' <$>
-                   (x .?> "NextToken") <*>
-                     (x .?> "NotebookInstanceLifecycleConfigs" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable
-           ListNotebookInstanceLifecycleConfigs
-         where
-
-instance NFData ListNotebookInstanceLifecycleConfigs
-         where
-
-instance ToHeaders
-           ListNotebookInstanceLifecycleConfigs
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListNotebookInstanceLifecycleConfigs" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListNotebookInstanceLifecycleConfigs
-         where
-        toJSON ListNotebookInstanceLifecycleConfigs'{..}
-          = object
-              (catMaybes
-                 [("NameContains" .=) <$> _lnilcNameContains,
-                  ("LastModifiedTimeBefore" .=) <$>
-                    _lnilcLastModifiedTimeBefore,
-                  ("CreationTimeAfter" .=) <$> _lnilcCreationTimeAfter,
-                  ("NextToken" .=) <$> _lnilcNextToken,
-                  ("SortOrder" .=) <$> _lnilcSortOrder,
-                  ("LastModifiedTimeAfter" .=) <$>
-                    _lnilcLastModifiedTimeAfter,
-                  ("CreationTimeBefore" .=) <$>
-                    _lnilcCreationTimeBefore,
-                  ("MaxResults" .=) <$> _lnilcMaxResults,
-                  ("SortBy" .=) <$> _lnilcSortBy])
-
-instance ToPath ListNotebookInstanceLifecycleConfigs
-         where
-        toPath = const "/"
-
-instance ToQuery ListNotebookInstanceLifecycleConfigs
-         where
-        toQuery = const mempty
-
--- | /See:/ 'listNotebookInstanceLifecycleConfigsResponse' smart constructor.
-data ListNotebookInstanceLifecycleConfigsResponse = ListNotebookInstanceLifecycleConfigsResponse'
-  { _lnilcrsNextToken :: !(Maybe Text)
-  , _lnilcrsNotebookInstanceLifecycleConfigs :: !(Maybe [NotebookInstanceLifecycleConfigSummary])
-  , _lnilcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListNotebookInstanceLifecycleConfigsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lnilcrsNextToken' - If the response is truncated, Amazon SageMaker returns this token. To get the next set of lifecycle configurations, use it in the next request.
---
--- * 'lnilcrsNotebookInstanceLifecycleConfigs' - An array of @NotebookInstanceLifecycleConfiguration@ objects, each listing a lifecycle configuration.
---
--- * 'lnilcrsResponseStatus' - -- | The response status code.
-listNotebookInstanceLifecycleConfigsResponse
-    :: Int -- ^ 'lnilcrsResponseStatus'
-    -> ListNotebookInstanceLifecycleConfigsResponse
-listNotebookInstanceLifecycleConfigsResponse pResponseStatus_ =
-  ListNotebookInstanceLifecycleConfigsResponse'
-    { _lnilcrsNextToken = Nothing
-    , _lnilcrsNotebookInstanceLifecycleConfigs = Nothing
-    , _lnilcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | If the response is truncated, Amazon SageMaker returns this token. To get the next set of lifecycle configurations, use it in the next request.
-lnilcrsNextToken :: Lens' ListNotebookInstanceLifecycleConfigsResponse (Maybe Text)
-lnilcrsNextToken = lens _lnilcrsNextToken (\ s a -> s{_lnilcrsNextToken = a})
-
--- | An array of @NotebookInstanceLifecycleConfiguration@ objects, each listing a lifecycle configuration.
-lnilcrsNotebookInstanceLifecycleConfigs :: Lens' ListNotebookInstanceLifecycleConfigsResponse [NotebookInstanceLifecycleConfigSummary]
-lnilcrsNotebookInstanceLifecycleConfigs = lens _lnilcrsNotebookInstanceLifecycleConfigs (\ s a -> s{_lnilcrsNotebookInstanceLifecycleConfigs = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-lnilcrsResponseStatus :: Lens' ListNotebookInstanceLifecycleConfigsResponse Int
-lnilcrsResponseStatus = lens _lnilcrsResponseStatus (\ s a -> s{_lnilcrsResponseStatus = a})
-
-instance NFData
-           ListNotebookInstanceLifecycleConfigsResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/ListNotebookInstances.hs b/gen/Network/AWS/SageMaker/ListNotebookInstances.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListNotebookInstances.hs
+++ /dev/null
@@ -1,261 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListNotebookInstances
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a list of the Amazon SageMaker notebook instances in the requester's account in an AWS Region.
---
---
---
--- This operation returns paginated results.
-module Network.AWS.SageMaker.ListNotebookInstances
-    (
-    -- * Creating a Request
-      listNotebookInstances
-    , ListNotebookInstances
-    -- * Request Lenses
-    , lniNameContains
-    , lniLastModifiedTimeBefore
-    , lniNotebookInstanceLifecycleConfigNameContains
-    , lniCreationTimeAfter
-    , lniNextToken
-    , lniSortOrder
-    , lniLastModifiedTimeAfter
-    , lniCreationTimeBefore
-    , lniStatusEquals
-    , lniMaxResults
-    , lniSortBy
-
-    -- * Destructuring the Response
-    , listNotebookInstancesResponse
-    , ListNotebookInstancesResponse
-    -- * Response Lenses
-    , lnirsNotebookInstances
-    , lnirsNextToken
-    , lnirsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listNotebookInstances' smart constructor.
-data ListNotebookInstances = ListNotebookInstances'
-  { _lniNameContains :: !(Maybe Text)
-  , _lniLastModifiedTimeBefore :: !(Maybe POSIX)
-  , _lniNotebookInstanceLifecycleConfigNameContains :: !(Maybe Text)
-  , _lniCreationTimeAfter :: !(Maybe POSIX)
-  , _lniNextToken :: !(Maybe Text)
-  , _lniSortOrder :: !(Maybe NotebookInstanceSortOrder)
-  , _lniLastModifiedTimeAfter :: !(Maybe POSIX)
-  , _lniCreationTimeBefore :: !(Maybe POSIX)
-  , _lniStatusEquals :: !(Maybe NotebookInstanceStatus)
-  , _lniMaxResults :: !(Maybe Nat)
-  , _lniSortBy :: !(Maybe NotebookInstanceSortKey)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListNotebookInstances' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lniNameContains' - A string in the notebook instances' name. This filter returns only notebook instances whose name contains the specified string.
---
--- * 'lniLastModifiedTimeBefore' - A filter that returns only notebook instances that were modified before the specified time (timestamp).
---
--- * 'lniNotebookInstanceLifecycleConfigNameContains' - A string in the name of a notebook instances lifecycle configuration associated with this notebook instance. This filter returns only notebook instances associated with a lifecycle configuration with a name that contains the specified string.
---
--- * 'lniCreationTimeAfter' - A filter that returns only notebook instances that were created after the specified time (timestamp).
---
--- * 'lniNextToken' - If the previous call to the @ListNotebookInstances@ is truncated, the response includes a @NextToken@ . You can use this token in your subsequent @ListNotebookInstances@ request to fetch the next set of notebook instances.
---
--- * 'lniSortOrder' - The sort order for results.
---
--- * 'lniLastModifiedTimeAfter' - A filter that returns only notebook instances that were modified after the specified time (timestamp).
---
--- * 'lniCreationTimeBefore' - A filter that returns only notebook instances that were created before the specified time (timestamp).
---
--- * 'lniStatusEquals' - A filter that returns only notebook instances with the specified status.
---
--- * 'lniMaxResults' - The maximum number of notebook instances to return.
---
--- * 'lniSortBy' - The field to sort results by. The default is @Name@ .
-listNotebookInstances
-    :: ListNotebookInstances
-listNotebookInstances =
-  ListNotebookInstances'
-    { _lniNameContains = Nothing
-    , _lniLastModifiedTimeBefore = Nothing
-    , _lniNotebookInstanceLifecycleConfigNameContains = Nothing
-    , _lniCreationTimeAfter = Nothing
-    , _lniNextToken = Nothing
-    , _lniSortOrder = Nothing
-    , _lniLastModifiedTimeAfter = Nothing
-    , _lniCreationTimeBefore = Nothing
-    , _lniStatusEquals = Nothing
-    , _lniMaxResults = Nothing
-    , _lniSortBy = Nothing
-    }
-
-
--- | A string in the notebook instances' name. This filter returns only notebook instances whose name contains the specified string.
-lniNameContains :: Lens' ListNotebookInstances (Maybe Text)
-lniNameContains = lens _lniNameContains (\ s a -> s{_lniNameContains = a})
-
--- | A filter that returns only notebook instances that were modified before the specified time (timestamp).
-lniLastModifiedTimeBefore :: Lens' ListNotebookInstances (Maybe UTCTime)
-lniLastModifiedTimeBefore = lens _lniLastModifiedTimeBefore (\ s a -> s{_lniLastModifiedTimeBefore = a}) . mapping _Time
-
--- | A string in the name of a notebook instances lifecycle configuration associated with this notebook instance. This filter returns only notebook instances associated with a lifecycle configuration with a name that contains the specified string.
-lniNotebookInstanceLifecycleConfigNameContains :: Lens' ListNotebookInstances (Maybe Text)
-lniNotebookInstanceLifecycleConfigNameContains = lens _lniNotebookInstanceLifecycleConfigNameContains (\ s a -> s{_lniNotebookInstanceLifecycleConfigNameContains = a})
-
--- | A filter that returns only notebook instances that were created after the specified time (timestamp).
-lniCreationTimeAfter :: Lens' ListNotebookInstances (Maybe UTCTime)
-lniCreationTimeAfter = lens _lniCreationTimeAfter (\ s a -> s{_lniCreationTimeAfter = a}) . mapping _Time
-
--- | If the previous call to the @ListNotebookInstances@ is truncated, the response includes a @NextToken@ . You can use this token in your subsequent @ListNotebookInstances@ request to fetch the next set of notebook instances.
-lniNextToken :: Lens' ListNotebookInstances (Maybe Text)
-lniNextToken = lens _lniNextToken (\ s a -> s{_lniNextToken = a})
-
--- | The sort order for results.
-lniSortOrder :: Lens' ListNotebookInstances (Maybe NotebookInstanceSortOrder)
-lniSortOrder = lens _lniSortOrder (\ s a -> s{_lniSortOrder = a})
-
--- | A filter that returns only notebook instances that were modified after the specified time (timestamp).
-lniLastModifiedTimeAfter :: Lens' ListNotebookInstances (Maybe UTCTime)
-lniLastModifiedTimeAfter = lens _lniLastModifiedTimeAfter (\ s a -> s{_lniLastModifiedTimeAfter = a}) . mapping _Time
-
--- | A filter that returns only notebook instances that were created before the specified time (timestamp).
-lniCreationTimeBefore :: Lens' ListNotebookInstances (Maybe UTCTime)
-lniCreationTimeBefore = lens _lniCreationTimeBefore (\ s a -> s{_lniCreationTimeBefore = a}) . mapping _Time
-
--- | A filter that returns only notebook instances with the specified status.
-lniStatusEquals :: Lens' ListNotebookInstances (Maybe NotebookInstanceStatus)
-lniStatusEquals = lens _lniStatusEquals (\ s a -> s{_lniStatusEquals = a})
-
--- | The maximum number of notebook instances to return.
-lniMaxResults :: Lens' ListNotebookInstances (Maybe Natural)
-lniMaxResults = lens _lniMaxResults (\ s a -> s{_lniMaxResults = a}) . mapping _Nat
-
--- | The field to sort results by. The default is @Name@ .
-lniSortBy :: Lens' ListNotebookInstances (Maybe NotebookInstanceSortKey)
-lniSortBy = lens _lniSortBy (\ s a -> s{_lniSortBy = a})
-
-instance AWSPager ListNotebookInstances where
-        page rq rs
-          | stop (rs ^. lnirsNextToken) = Nothing
-          | stop (rs ^. lnirsNotebookInstances) = Nothing
-          | otherwise =
-            Just $ rq & lniNextToken .~ rs ^. lnirsNextToken
-
-instance AWSRequest ListNotebookInstances where
-        type Rs ListNotebookInstances =
-             ListNotebookInstancesResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListNotebookInstancesResponse' <$>
-                   (x .?> "NotebookInstances" .!@ mempty) <*>
-                     (x .?> "NextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListNotebookInstances where
-
-instance NFData ListNotebookInstances where
-
-instance ToHeaders ListNotebookInstances where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListNotebookInstances" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListNotebookInstances where
-        toJSON ListNotebookInstances'{..}
-          = object
-              (catMaybes
-                 [("NameContains" .=) <$> _lniNameContains,
-                  ("LastModifiedTimeBefore" .=) <$>
-                    _lniLastModifiedTimeBefore,
-                  ("NotebookInstanceLifecycleConfigNameContains" .=)
-                    <$> _lniNotebookInstanceLifecycleConfigNameContains,
-                  ("CreationTimeAfter" .=) <$> _lniCreationTimeAfter,
-                  ("NextToken" .=) <$> _lniNextToken,
-                  ("SortOrder" .=) <$> _lniSortOrder,
-                  ("LastModifiedTimeAfter" .=) <$>
-                    _lniLastModifiedTimeAfter,
-                  ("CreationTimeBefore" .=) <$> _lniCreationTimeBefore,
-                  ("StatusEquals" .=) <$> _lniStatusEquals,
-                  ("MaxResults" .=) <$> _lniMaxResults,
-                  ("SortBy" .=) <$> _lniSortBy])
-
-instance ToPath ListNotebookInstances where
-        toPath = const "/"
-
-instance ToQuery ListNotebookInstances where
-        toQuery = const mempty
-
--- | /See:/ 'listNotebookInstancesResponse' smart constructor.
-data ListNotebookInstancesResponse = ListNotebookInstancesResponse'
-  { _lnirsNotebookInstances :: !(Maybe [NotebookInstanceSummary])
-  , _lnirsNextToken         :: !(Maybe Text)
-  , _lnirsResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListNotebookInstancesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lnirsNotebookInstances' - An array of @NotebookInstanceSummary@ objects, one for each notebook instance.
---
--- * 'lnirsNextToken' - If the response to the previous @ListNotebookInstances@ request was truncated, Amazon SageMaker returns this token. To retrieve the next set of notebook instances, use the token in the next request.
---
--- * 'lnirsResponseStatus' - -- | The response status code.
-listNotebookInstancesResponse
-    :: Int -- ^ 'lnirsResponseStatus'
-    -> ListNotebookInstancesResponse
-listNotebookInstancesResponse pResponseStatus_ =
-  ListNotebookInstancesResponse'
-    { _lnirsNotebookInstances = Nothing
-    , _lnirsNextToken = Nothing
-    , _lnirsResponseStatus = pResponseStatus_
-    }
-
-
--- | An array of @NotebookInstanceSummary@ objects, one for each notebook instance.
-lnirsNotebookInstances :: Lens' ListNotebookInstancesResponse [NotebookInstanceSummary]
-lnirsNotebookInstances = lens _lnirsNotebookInstances (\ s a -> s{_lnirsNotebookInstances = a}) . _Default . _Coerce
-
--- | If the response to the previous @ListNotebookInstances@ request was truncated, Amazon SageMaker returns this token. To retrieve the next set of notebook instances, use the token in the next request.
-lnirsNextToken :: Lens' ListNotebookInstancesResponse (Maybe Text)
-lnirsNextToken = lens _lnirsNextToken (\ s a -> s{_lnirsNextToken = a})
-
--- | -- | The response status code.
-lnirsResponseStatus :: Lens' ListNotebookInstancesResponse Int
-lnirsResponseStatus = lens _lnirsResponseStatus (\ s a -> s{_lnirsResponseStatus = a})
-
-instance NFData ListNotebookInstancesResponse where
diff --git a/gen/Network/AWS/SageMaker/ListTags.hs b/gen/Network/AWS/SageMaker/ListTags.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListTags.hs
+++ /dev/null
@@ -1,177 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListTags
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the tags for the specified Amazon SageMaker resource.
---
---
---
--- This operation returns paginated results.
-module Network.AWS.SageMaker.ListTags
-    (
-    -- * Creating a Request
-      listTags
-    , ListTags
-    -- * Request Lenses
-    , ltNextToken
-    , ltMaxResults
-    , ltResourceARN
-
-    -- * Destructuring the Response
-    , listTagsResponse
-    , ListTagsResponse
-    -- * Response Lenses
-    , ltrsNextToken
-    , ltrsTags
-    , ltrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listTags' smart constructor.
-data ListTags = ListTags'
-  { _ltNextToken   :: !(Maybe Text)
-  , _ltMaxResults  :: !(Maybe Nat)
-  , _ltResourceARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListTags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltNextToken' - If the response to the previous @ListTags@ request is truncated, Amazon SageMaker returns this token. To retrieve the next set of tags, use it in the subsequent request.
---
--- * 'ltMaxResults' - Maximum number of tags to return.
---
--- * 'ltResourceARN' - The Amazon Resource Name (ARN) of the resource whose tags you want to retrieve.
-listTags
-    :: Text -- ^ 'ltResourceARN'
-    -> ListTags
-listTags pResourceARN_ =
-  ListTags'
-    { _ltNextToken = Nothing
-    , _ltMaxResults = Nothing
-    , _ltResourceARN = pResourceARN_
-    }
-
-
--- | If the response to the previous @ListTags@ request is truncated, Amazon SageMaker returns this token. To retrieve the next set of tags, use it in the subsequent request.
-ltNextToken :: Lens' ListTags (Maybe Text)
-ltNextToken = lens _ltNextToken (\ s a -> s{_ltNextToken = a})
-
--- | Maximum number of tags to return.
-ltMaxResults :: Lens' ListTags (Maybe Natural)
-ltMaxResults = lens _ltMaxResults (\ s a -> s{_ltMaxResults = a}) . mapping _Nat
-
--- | The Amazon Resource Name (ARN) of the resource whose tags you want to retrieve.
-ltResourceARN :: Lens' ListTags Text
-ltResourceARN = lens _ltResourceARN (\ s a -> s{_ltResourceARN = a})
-
-instance AWSPager ListTags where
-        page rq rs
-          | stop (rs ^. ltrsNextToken) = Nothing
-          | stop (rs ^. ltrsTags) = Nothing
-          | otherwise =
-            Just $ rq & ltNextToken .~ rs ^. ltrsNextToken
-
-instance AWSRequest ListTags where
-        type Rs ListTags = ListTagsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListTagsResponse' <$>
-                   (x .?> "NextToken") <*> (x .?> "Tags" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable ListTags where
-
-instance NFData ListTags where
-
-instance ToHeaders ListTags where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListTags" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListTags where
-        toJSON ListTags'{..}
-          = object
-              (catMaybes
-                 [("NextToken" .=) <$> _ltNextToken,
-                  ("MaxResults" .=) <$> _ltMaxResults,
-                  Just ("ResourceArn" .= _ltResourceARN)])
-
-instance ToPath ListTags where
-        toPath = const "/"
-
-instance ToQuery ListTags where
-        toQuery = const mempty
-
--- | /See:/ 'listTagsResponse' smart constructor.
-data ListTagsResponse = ListTagsResponse'
-  { _ltrsNextToken      :: !(Maybe Text)
-  , _ltrsTags           :: !(Maybe [Tag])
-  , _ltrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListTagsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltrsNextToken' - If response is truncated, Amazon SageMaker includes a token in the response. You can use this token in your subsequent request to fetch next set of tokens.
---
--- * 'ltrsTags' - An array of @Tag@ objects, each with a tag key and a value.
---
--- * 'ltrsResponseStatus' - -- | The response status code.
-listTagsResponse
-    :: Int -- ^ 'ltrsResponseStatus'
-    -> ListTagsResponse
-listTagsResponse pResponseStatus_ =
-  ListTagsResponse'
-    { _ltrsNextToken = Nothing
-    , _ltrsTags = Nothing
-    , _ltrsResponseStatus = pResponseStatus_
-    }
-
-
--- | If response is truncated, Amazon SageMaker includes a token in the response. You can use this token in your subsequent request to fetch next set of tokens.
-ltrsNextToken :: Lens' ListTagsResponse (Maybe Text)
-ltrsNextToken = lens _ltrsNextToken (\ s a -> s{_ltrsNextToken = a})
-
--- | An array of @Tag@ objects, each with a tag key and a value.
-ltrsTags :: Lens' ListTagsResponse [Tag]
-ltrsTags = lens _ltrsTags (\ s a -> s{_ltrsTags = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-ltrsResponseStatus :: Lens' ListTagsResponse Int
-ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a})
-
-instance NFData ListTagsResponse where
diff --git a/gen/Network/AWS/SageMaker/ListTrainingJobs.hs b/gen/Network/AWS/SageMaker/ListTrainingJobs.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/ListTrainingJobs.hs
+++ /dev/null
@@ -1,248 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.ListTrainingJobs
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists training jobs.
---
---
---
--- This operation returns paginated results.
-module Network.AWS.SageMaker.ListTrainingJobs
-    (
-    -- * Creating a Request
-      listTrainingJobs
-    , ListTrainingJobs
-    -- * Request Lenses
-    , ltjNameContains
-    , ltjLastModifiedTimeBefore
-    , ltjCreationTimeAfter
-    , ltjNextToken
-    , ltjSortOrder
-    , ltjLastModifiedTimeAfter
-    , ltjCreationTimeBefore
-    , ltjStatusEquals
-    , ltjMaxResults
-    , ltjSortBy
-
-    -- * Destructuring the Response
-    , listTrainingJobsResponse
-    , ListTrainingJobsResponse
-    -- * Response Lenses
-    , ltjrsNextToken
-    , ltjrsResponseStatus
-    , ltjrsTrainingJobSummaries
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'listTrainingJobs' smart constructor.
-data ListTrainingJobs = ListTrainingJobs'
-  { _ltjNameContains           :: !(Maybe Text)
-  , _ltjLastModifiedTimeBefore :: !(Maybe POSIX)
-  , _ltjCreationTimeAfter      :: !(Maybe POSIX)
-  , _ltjNextToken              :: !(Maybe Text)
-  , _ltjSortOrder              :: !(Maybe SortOrder)
-  , _ltjLastModifiedTimeAfter  :: !(Maybe POSIX)
-  , _ltjCreationTimeBefore     :: !(Maybe POSIX)
-  , _ltjStatusEquals           :: !(Maybe TrainingJobStatus)
-  , _ltjMaxResults             :: !(Maybe Nat)
-  , _ltjSortBy                 :: !(Maybe SortBy)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListTrainingJobs' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltjNameContains' - A string in the training job name. This filter returns only models whose name contains the specified string.
---
--- * 'ltjLastModifiedTimeBefore' - A filter that returns only training jobs modified before the specified time (timestamp).
---
--- * 'ltjCreationTimeAfter' - A filter that only training jobs created after the specified time (timestamp).
---
--- * 'ltjNextToken' - If the result of the previous @ListTrainingJobs@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of training jobs, use the token in the next request.
---
--- * 'ltjSortOrder' - The sort order for results. The default is @Ascending@ .
---
--- * 'ltjLastModifiedTimeAfter' - A filter that returns only training jobs modified after the specified time (timestamp).
---
--- * 'ltjCreationTimeBefore' - A filter that returns only training jobs created before the specified time (timestamp).
---
--- * 'ltjStatusEquals' - A filter that retrieves only training jobs with a specific status.
---
--- * 'ltjMaxResults' - The maximum number of training jobs to return in the response.
---
--- * 'ltjSortBy' - The field to sort results by. The default is @CreationTime@ .
-listTrainingJobs
-    :: ListTrainingJobs
-listTrainingJobs =
-  ListTrainingJobs'
-    { _ltjNameContains = Nothing
-    , _ltjLastModifiedTimeBefore = Nothing
-    , _ltjCreationTimeAfter = Nothing
-    , _ltjNextToken = Nothing
-    , _ltjSortOrder = Nothing
-    , _ltjLastModifiedTimeAfter = Nothing
-    , _ltjCreationTimeBefore = Nothing
-    , _ltjStatusEquals = Nothing
-    , _ltjMaxResults = Nothing
-    , _ltjSortBy = Nothing
-    }
-
-
--- | A string in the training job name. This filter returns only models whose name contains the specified string.
-ltjNameContains :: Lens' ListTrainingJobs (Maybe Text)
-ltjNameContains = lens _ltjNameContains (\ s a -> s{_ltjNameContains = a})
-
--- | A filter that returns only training jobs modified before the specified time (timestamp).
-ltjLastModifiedTimeBefore :: Lens' ListTrainingJobs (Maybe UTCTime)
-ltjLastModifiedTimeBefore = lens _ltjLastModifiedTimeBefore (\ s a -> s{_ltjLastModifiedTimeBefore = a}) . mapping _Time
-
--- | A filter that only training jobs created after the specified time (timestamp).
-ltjCreationTimeAfter :: Lens' ListTrainingJobs (Maybe UTCTime)
-ltjCreationTimeAfter = lens _ltjCreationTimeAfter (\ s a -> s{_ltjCreationTimeAfter = a}) . mapping _Time
-
--- | If the result of the previous @ListTrainingJobs@ request was truncated, the response includes a @NextToken@ . To retrieve the next set of training jobs, use the token in the next request.
-ltjNextToken :: Lens' ListTrainingJobs (Maybe Text)
-ltjNextToken = lens _ltjNextToken (\ s a -> s{_ltjNextToken = a})
-
--- | The sort order for results. The default is @Ascending@ .
-ltjSortOrder :: Lens' ListTrainingJobs (Maybe SortOrder)
-ltjSortOrder = lens _ltjSortOrder (\ s a -> s{_ltjSortOrder = a})
-
--- | A filter that returns only training jobs modified after the specified time (timestamp).
-ltjLastModifiedTimeAfter :: Lens' ListTrainingJobs (Maybe UTCTime)
-ltjLastModifiedTimeAfter = lens _ltjLastModifiedTimeAfter (\ s a -> s{_ltjLastModifiedTimeAfter = a}) . mapping _Time
-
--- | A filter that returns only training jobs created before the specified time (timestamp).
-ltjCreationTimeBefore :: Lens' ListTrainingJobs (Maybe UTCTime)
-ltjCreationTimeBefore = lens _ltjCreationTimeBefore (\ s a -> s{_ltjCreationTimeBefore = a}) . mapping _Time
-
--- | A filter that retrieves only training jobs with a specific status.
-ltjStatusEquals :: Lens' ListTrainingJobs (Maybe TrainingJobStatus)
-ltjStatusEquals = lens _ltjStatusEquals (\ s a -> s{_ltjStatusEquals = a})
-
--- | The maximum number of training jobs to return in the response.
-ltjMaxResults :: Lens' ListTrainingJobs (Maybe Natural)
-ltjMaxResults = lens _ltjMaxResults (\ s a -> s{_ltjMaxResults = a}) . mapping _Nat
-
--- | The field to sort results by. The default is @CreationTime@ .
-ltjSortBy :: Lens' ListTrainingJobs (Maybe SortBy)
-ltjSortBy = lens _ltjSortBy (\ s a -> s{_ltjSortBy = a})
-
-instance AWSPager ListTrainingJobs where
-        page rq rs
-          | stop (rs ^. ltjrsNextToken) = Nothing
-          | stop (rs ^. ltjrsTrainingJobSummaries) = Nothing
-          | otherwise =
-            Just $ rq & ltjNextToken .~ rs ^. ltjrsNextToken
-
-instance AWSRequest ListTrainingJobs where
-        type Rs ListTrainingJobs = ListTrainingJobsResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListTrainingJobsResponse' <$>
-                   (x .?> "NextToken") <*> (pure (fromEnum s)) <*>
-                     (x .?> "TrainingJobSummaries" .!@ mempty))
-
-instance Hashable ListTrainingJobs where
-
-instance NFData ListTrainingJobs where
-
-instance ToHeaders ListTrainingJobs where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.ListTrainingJobs" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListTrainingJobs where
-        toJSON ListTrainingJobs'{..}
-          = object
-              (catMaybes
-                 [("NameContains" .=) <$> _ltjNameContains,
-                  ("LastModifiedTimeBefore" .=) <$>
-                    _ltjLastModifiedTimeBefore,
-                  ("CreationTimeAfter" .=) <$> _ltjCreationTimeAfter,
-                  ("NextToken" .=) <$> _ltjNextToken,
-                  ("SortOrder" .=) <$> _ltjSortOrder,
-                  ("LastModifiedTimeAfter" .=) <$>
-                    _ltjLastModifiedTimeAfter,
-                  ("CreationTimeBefore" .=) <$> _ltjCreationTimeBefore,
-                  ("StatusEquals" .=) <$> _ltjStatusEquals,
-                  ("MaxResults" .=) <$> _ltjMaxResults,
-                  ("SortBy" .=) <$> _ltjSortBy])
-
-instance ToPath ListTrainingJobs where
-        toPath = const "/"
-
-instance ToQuery ListTrainingJobs where
-        toQuery = const mempty
-
--- | /See:/ 'listTrainingJobsResponse' smart constructor.
-data ListTrainingJobsResponse = ListTrainingJobsResponse'
-  { _ltjrsNextToken            :: !(Maybe Text)
-  , _ltjrsResponseStatus       :: !Int
-  , _ltjrsTrainingJobSummaries :: ![TrainingJobSummary]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListTrainingJobsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltjrsNextToken' - If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of training jobs, use it in the subsequent request.
---
--- * 'ltjrsResponseStatus' - -- | The response status code.
---
--- * 'ltjrsTrainingJobSummaries' - An array of @TrainingJobSummary@ objects, each listing a training job.
-listTrainingJobsResponse
-    :: Int -- ^ 'ltjrsResponseStatus'
-    -> ListTrainingJobsResponse
-listTrainingJobsResponse pResponseStatus_ =
-  ListTrainingJobsResponse'
-    { _ltjrsNextToken = Nothing
-    , _ltjrsResponseStatus = pResponseStatus_
-    , _ltjrsTrainingJobSummaries = mempty
-    }
-
-
--- | If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of training jobs, use it in the subsequent request.
-ltjrsNextToken :: Lens' ListTrainingJobsResponse (Maybe Text)
-ltjrsNextToken = lens _ltjrsNextToken (\ s a -> s{_ltjrsNextToken = a})
-
--- | -- | The response status code.
-ltjrsResponseStatus :: Lens' ListTrainingJobsResponse Int
-ltjrsResponseStatus = lens _ltjrsResponseStatus (\ s a -> s{_ltjrsResponseStatus = a})
-
--- | An array of @TrainingJobSummary@ objects, each listing a training job.
-ltjrsTrainingJobSummaries :: Lens' ListTrainingJobsResponse [TrainingJobSummary]
-ltjrsTrainingJobSummaries = lens _ltjrsTrainingJobSummaries (\ s a -> s{_ltjrsTrainingJobSummaries = a}) . _Coerce
-
-instance NFData ListTrainingJobsResponse where
diff --git a/gen/Network/AWS/SageMaker/StartNotebookInstance.hs b/gen/Network/AWS/SageMaker/StartNotebookInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/StartNotebookInstance.hs
+++ /dev/null
@@ -1,111 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.StartNotebookInstance
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Launches an ML compute instance with the latest version of the libraries and attaches your ML storage volume. After configuring the notebook instance, Amazon SageMaker sets the notebook instance status to @InService@ . A notebook instance's status must be @InService@ before you can connect to your Jupyter notebook.
---
---
-module Network.AWS.SageMaker.StartNotebookInstance
-    (
-    -- * Creating a Request
-      startNotebookInstance
-    , StartNotebookInstance
-    -- * Request Lenses
-    , sNotebookInstanceName
-
-    -- * Destructuring the Response
-    , startNotebookInstanceResponse
-    , StartNotebookInstanceResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'startNotebookInstance' smart constructor.
-newtype StartNotebookInstance = StartNotebookInstance'
-  { _sNotebookInstanceName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartNotebookInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sNotebookInstanceName' - The name of the notebook instance to start.
-startNotebookInstance
-    :: Text -- ^ 'sNotebookInstanceName'
-    -> StartNotebookInstance
-startNotebookInstance pNotebookInstanceName_ =
-  StartNotebookInstance' {_sNotebookInstanceName = pNotebookInstanceName_}
-
-
--- | The name of the notebook instance to start.
-sNotebookInstanceName :: Lens' StartNotebookInstance Text
-sNotebookInstanceName = lens _sNotebookInstanceName (\ s a -> s{_sNotebookInstanceName = a})
-
-instance AWSRequest StartNotebookInstance where
-        type Rs StartNotebookInstance =
-             StartNotebookInstanceResponse
-        request = postJSON sageMaker
-        response = receiveNull StartNotebookInstanceResponse'
-
-instance Hashable StartNotebookInstance where
-
-instance NFData StartNotebookInstance where
-
-instance ToHeaders StartNotebookInstance where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.StartNotebookInstance" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StartNotebookInstance where
-        toJSON StartNotebookInstance'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("NotebookInstanceName" .= _sNotebookInstanceName)])
-
-instance ToPath StartNotebookInstance where
-        toPath = const "/"
-
-instance ToQuery StartNotebookInstance where
-        toQuery = const mempty
-
--- | /See:/ 'startNotebookInstanceResponse' smart constructor.
-data StartNotebookInstanceResponse =
-  StartNotebookInstanceResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartNotebookInstanceResponse' with the minimum fields required to make a request.
---
-startNotebookInstanceResponse
-    :: StartNotebookInstanceResponse
-startNotebookInstanceResponse = StartNotebookInstanceResponse'
-
-
-instance NFData StartNotebookInstanceResponse where
diff --git a/gen/Network/AWS/SageMaker/StopNotebookInstance.hs b/gen/Network/AWS/SageMaker/StopNotebookInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/StopNotebookInstance.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.StopNotebookInstance
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Terminates the ML compute instance. Before terminating the instance, Amazon SageMaker disconnects the ML storage volume from it. Amazon SageMaker preserves the ML storage volume.
---
---
--- To access data on the ML storage volume for a notebook instance that has been terminated, call the @StartNotebookInstance@ API. @StartNotebookInstance@ launches another ML compute instance, configures it, and attaches the preserved ML storage volume so you can continue your work.
---
-module Network.AWS.SageMaker.StopNotebookInstance
-    (
-    -- * Creating a Request
-      stopNotebookInstance
-    , StopNotebookInstance
-    -- * Request Lenses
-    , sniNotebookInstanceName
-
-    -- * Destructuring the Response
-    , stopNotebookInstanceResponse
-    , StopNotebookInstanceResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'stopNotebookInstance' smart constructor.
-newtype StopNotebookInstance = StopNotebookInstance'
-  { _sniNotebookInstanceName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopNotebookInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sniNotebookInstanceName' - The name of the notebook instance to terminate.
-stopNotebookInstance
-    :: Text -- ^ 'sniNotebookInstanceName'
-    -> StopNotebookInstance
-stopNotebookInstance pNotebookInstanceName_ =
-  StopNotebookInstance' {_sniNotebookInstanceName = pNotebookInstanceName_}
-
-
--- | The name of the notebook instance to terminate.
-sniNotebookInstanceName :: Lens' StopNotebookInstance Text
-sniNotebookInstanceName = lens _sniNotebookInstanceName (\ s a -> s{_sniNotebookInstanceName = a})
-
-instance AWSRequest StopNotebookInstance where
-        type Rs StopNotebookInstance =
-             StopNotebookInstanceResponse
-        request = postJSON sageMaker
-        response = receiveNull StopNotebookInstanceResponse'
-
-instance Hashable StopNotebookInstance where
-
-instance NFData StopNotebookInstance where
-
-instance ToHeaders StopNotebookInstance where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.StopNotebookInstance" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StopNotebookInstance where
-        toJSON StopNotebookInstance'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("NotebookInstanceName" .=
-                       _sniNotebookInstanceName)])
-
-instance ToPath StopNotebookInstance where
-        toPath = const "/"
-
-instance ToQuery StopNotebookInstance where
-        toQuery = const mempty
-
--- | /See:/ 'stopNotebookInstanceResponse' smart constructor.
-data StopNotebookInstanceResponse =
-  StopNotebookInstanceResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopNotebookInstanceResponse' with the minimum fields required to make a request.
---
-stopNotebookInstanceResponse
-    :: StopNotebookInstanceResponse
-stopNotebookInstanceResponse = StopNotebookInstanceResponse'
-
-
-instance NFData StopNotebookInstanceResponse where
diff --git a/gen/Network/AWS/SageMaker/StopTrainingJob.hs b/gen/Network/AWS/SageMaker/StopTrainingJob.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/StopTrainingJob.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.StopTrainingJob
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Stops a training job. To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@ signal, which delays job termination for 120 seconds. Algorithms might use this 120-second window to save the model artifacts, so the results of the training is not lost.
---
---
--- Training algorithms provided by Amazon SageMaker save the intermediate results of a model training job. This intermediate data is a valid model artifact. You can use the model artifacts that are saved when Amazon SageMaker stops a training job to create a model.
---
--- When it receives a @StopTrainingJob@ request, Amazon SageMaker changes the status of the job to @Stopping@ . After Amazon SageMaker stops the job, it sets the status to @Stopped@ .
---
-module Network.AWS.SageMaker.StopTrainingJob
-    (
-    -- * Creating a Request
-      stopTrainingJob
-    , StopTrainingJob
-    -- * Request Lenses
-    , stjTrainingJobName
-
-    -- * Destructuring the Response
-    , stopTrainingJobResponse
-    , StopTrainingJobResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'stopTrainingJob' smart constructor.
-newtype StopTrainingJob = StopTrainingJob'
-  { _stjTrainingJobName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopTrainingJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'stjTrainingJobName' - The name of the training job to stop.
-stopTrainingJob
-    :: Text -- ^ 'stjTrainingJobName'
-    -> StopTrainingJob
-stopTrainingJob pTrainingJobName_ =
-  StopTrainingJob' {_stjTrainingJobName = pTrainingJobName_}
-
-
--- | The name of the training job to stop.
-stjTrainingJobName :: Lens' StopTrainingJob Text
-stjTrainingJobName = lens _stjTrainingJobName (\ s a -> s{_stjTrainingJobName = a})
-
-instance AWSRequest StopTrainingJob where
-        type Rs StopTrainingJob = StopTrainingJobResponse
-        request = postJSON sageMaker
-        response = receiveNull StopTrainingJobResponse'
-
-instance Hashable StopTrainingJob where
-
-instance NFData StopTrainingJob where
-
-instance ToHeaders StopTrainingJob where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.StopTrainingJob" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StopTrainingJob where
-        toJSON StopTrainingJob'{..}
-          = object
-              (catMaybes
-                 [Just ("TrainingJobName" .= _stjTrainingJobName)])
-
-instance ToPath StopTrainingJob where
-        toPath = const "/"
-
-instance ToQuery StopTrainingJob where
-        toQuery = const mempty
-
--- | /See:/ 'stopTrainingJobResponse' smart constructor.
-data StopTrainingJobResponse =
-  StopTrainingJobResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopTrainingJobResponse' with the minimum fields required to make a request.
---
-stopTrainingJobResponse
-    :: StopTrainingJobResponse
-stopTrainingJobResponse = StopTrainingJobResponse'
-
-
-instance NFData StopTrainingJobResponse where
diff --git a/gen/Network/AWS/SageMaker/Types.hs b/gen/Network/AWS/SageMaker/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/Types.hs
+++ /dev/null
@@ -1,311 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.Types
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SageMaker.Types
-    (
-    -- * Service Configuration
-      sageMaker
-
-    -- * Errors
-    , _ResourceLimitExceeded
-    , _ResourceInUse
-    , _ResourceNotFound
-
-    -- * CompressionType
-    , CompressionType (..)
-
-    -- * DirectInternetAccess
-    , DirectInternetAccess (..)
-
-    -- * EndpointConfigSortKey
-    , EndpointConfigSortKey (..)
-
-    -- * EndpointSortKey
-    , EndpointSortKey (..)
-
-    -- * EndpointStatus
-    , EndpointStatus (..)
-
-    -- * InstanceType
-    , InstanceType (..)
-
-    -- * ModelSortKey
-    , ModelSortKey (..)
-
-    -- * NotebookInstanceLifecycleConfigSortKey
-    , NotebookInstanceLifecycleConfigSortKey (..)
-
-    -- * NotebookInstanceLifecycleConfigSortOrder
-    , NotebookInstanceLifecycleConfigSortOrder (..)
-
-    -- * NotebookInstanceSortKey
-    , NotebookInstanceSortKey (..)
-
-    -- * NotebookInstanceSortOrder
-    , NotebookInstanceSortOrder (..)
-
-    -- * NotebookInstanceStatus
-    , NotebookInstanceStatus (..)
-
-    -- * OrderKey
-    , OrderKey (..)
-
-    -- * ProductionVariantInstanceType
-    , ProductionVariantInstanceType (..)
-
-    -- * RecordWrapper
-    , RecordWrapper (..)
-
-    -- * S3DataDistribution
-    , S3DataDistribution (..)
-
-    -- * S3DataType
-    , S3DataType (..)
-
-    -- * SecondaryStatus
-    , SecondaryStatus (..)
-
-    -- * SortBy
-    , SortBy (..)
-
-    -- * SortOrder
-    , SortOrder (..)
-
-    -- * TrainingInputMode
-    , TrainingInputMode (..)
-
-    -- * TrainingInstanceType
-    , TrainingInstanceType (..)
-
-    -- * TrainingJobStatus
-    , TrainingJobStatus (..)
-
-    -- * AlgorithmSpecification
-    , AlgorithmSpecification
-    , algorithmSpecification
-    , asTrainingImage
-    , asTrainingInputMode
-
-    -- * Channel
-    , Channel
-    , channel
-    , cRecordWrapperType
-    , cCompressionType
-    , cContentType
-    , cChannelName
-    , cDataSource
-
-    -- * ContainerDefinition
-    , ContainerDefinition
-    , containerDefinition
-    , cdModelDataURL
-    , cdEnvironment
-    , cdContainerHostname
-    , cdImage
-
-    -- * DataSource
-    , DataSource
-    , dataSource
-    , dsS3DataSource
-
-    -- * DesiredWeightAndCapacity
-    , DesiredWeightAndCapacity
-    , desiredWeightAndCapacity
-    , dwacDesiredInstanceCount
-    , dwacDesiredWeight
-    , dwacVariantName
-
-    -- * EndpointConfigSummary
-    , EndpointConfigSummary
-    , endpointConfigSummary
-    , ecsEndpointConfigName
-    , ecsEndpointConfigARN
-    , ecsCreationTime
-
-    -- * EndpointSummary
-    , EndpointSummary
-    , endpointSummary
-    , esEndpointName
-    , esEndpointARN
-    , esCreationTime
-    , esLastModifiedTime
-    , esEndpointStatus
-
-    -- * ModelArtifacts
-    , ModelArtifacts
-    , modelArtifacts
-    , maS3ModelArtifacts
-
-    -- * ModelSummary
-    , ModelSummary
-    , modelSummary
-    , msModelName
-    , msModelARN
-    , msCreationTime
-
-    -- * NotebookInstanceLifecycleConfigSummary
-    , NotebookInstanceLifecycleConfigSummary
-    , notebookInstanceLifecycleConfigSummary
-    , nilcsCreationTime
-    , nilcsLastModifiedTime
-    , nilcsNotebookInstanceLifecycleConfigName
-    , nilcsNotebookInstanceLifecycleConfigARN
-
-    -- * NotebookInstanceLifecycleHook
-    , NotebookInstanceLifecycleHook
-    , notebookInstanceLifecycleHook
-    , nilhContent
-
-    -- * NotebookInstanceSummary
-    , NotebookInstanceSummary
-    , notebookInstanceSummary
-    , nisCreationTime
-    , nisURL
-    , nisLastModifiedTime
-    , nisInstanceType
-    , nisNotebookInstanceStatus
-    , nisNotebookInstanceLifecycleConfigName
-    , nisNotebookInstanceName
-    , nisNotebookInstanceARN
-
-    -- * OutputDataConfig
-    , OutputDataConfig
-    , outputDataConfig
-    , odcKMSKeyId
-    , odcS3OutputPath
-
-    -- * ProductionVariant
-    , ProductionVariant
-    , productionVariant
-    , pvInitialVariantWeight
-    , pvVariantName
-    , pvModelName
-    , pvInitialInstanceCount
-    , pvInstanceType
-
-    -- * ProductionVariantSummary
-    , ProductionVariantSummary
-    , productionVariantSummary
-    , pvsDesiredInstanceCount
-    , pvsDesiredWeight
-    , pvsCurrentWeight
-    , pvsCurrentInstanceCount
-    , pvsVariantName
-
-    -- * ResourceConfig
-    , ResourceConfig
-    , resourceConfig
-    , rcVolumeKMSKeyId
-    , rcInstanceType
-    , rcInstanceCount
-    , rcVolumeSizeInGB
-
-    -- * S3DataSource
-    , S3DataSource
-    , s3DataSource
-    , sdsS3DataDistributionType
-    , sdsS3DataType
-    , sdsS3URI
-
-    -- * StoppingCondition
-    , StoppingCondition
-    , stoppingCondition
-    , scMaxRuntimeInSeconds
-
-    -- * Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
-
-    -- * TrainingJobSummary
-    , TrainingJobSummary
-    , trainingJobSummary
-    , tjsTrainingEndTime
-    , tjsLastModifiedTime
-    , tjsTrainingJobName
-    , tjsTrainingJobARN
-    , tjsCreationTime
-    , tjsTrainingJobStatus
-
-    -- * VPCConfig
-    , VPCConfig
-    , vpcConfig
-    , vcSecurityGroupIds
-    , vcSubnets
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.SageMaker.Types.Product
-import Network.AWS.SageMaker.Types.Sum
-import Network.AWS.Sign.V4
-
--- | API version @2017-07-24@ of the Amazon SageMaker Service SDK configuration.
-sageMaker :: Service
-sageMaker =
-  Service
-    { _svcAbbrev = "SageMaker"
-    , _svcSigner = v4
-    , _svcPrefix = "sagemaker"
-    , _svcVersion = "2017-07-24"
-    , _svcEndpoint = defaultEndpoint sageMaker
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "SageMaker"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | You have exceeded an Amazon SageMaker resource limit. For example, you might have too many training jobs created.
---
---
-_ResourceLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceLimitExceeded = _MatchServiceError sageMaker "ResourceLimitExceeded"
-
-
--- | Resource being accessed is in use.
---
---
-_ResourceInUse :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceInUse = _MatchServiceError sageMaker "ResourceInUse"
-
-
--- | Resource being access is not found.
---
---
-_ResourceNotFound :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceNotFound = _MatchServiceError sageMaker "ResourceNotFound"
-
diff --git a/gen/Network/AWS/SageMaker/Types/Product.hs b/gen/Network/AWS/SageMaker/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/Types/Product.hs
+++ /dev/null
@@ -1,1390 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.Types.Product
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SageMaker.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.SageMaker.Types.Sum
-
--- | Specifies the training algorithm to use in a <http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html CreateTrainingJob> request.
---
---
--- For more information about algorithms provided by Amazon SageMaker, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> . For information about using your own algorithms, see 'your-algorithms' .
---
---
--- /See:/ 'algorithmSpecification' smart constructor.
-data AlgorithmSpecification = AlgorithmSpecification'
-  { _asTrainingImage     :: !Text
-  , _asTrainingInputMode :: !TrainingInputMode
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AlgorithmSpecification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asTrainingImage' - The registry path of the Docker image that contains the training algorithm. For information about docker registry paths for built-in algorithms, see 'sagemaker-algo-docker-registry-paths' .
---
--- * 'asTrainingInputMode' - The input mode that the algorithm supports. For the input modes that Amazon SageMaker algorithms support, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> . If an algorithm supports the @File@ input mode, Amazon SageMaker downloads the training data from S3 to the provisioned ML storage Volume, and mounts the directory to docker volume for training container. If an algorithm supports the @Pipe@ input mode, Amazon SageMaker streams data directly from S3 to the container.  In File mode, make sure you provision ML storage volume with sufficient capacity to accommodate the data download from S3. In addition to the training data, the ML storage volume also stores the output model. The algorithm container use ML storage volume to also store intermediate information, if any.  For distributed algorithms using File mode, training data is distributed uniformly, and your training duration is predictable if the input data objects size is approximately same. Amazon SageMaker does not split the files any further for model training. If the object sizes are skewed, training won't be optimal as the data distribution is also skewed where one host in a training cluster is overloaded, thus becoming bottleneck in training.
-algorithmSpecification
-    :: Text -- ^ 'asTrainingImage'
-    -> TrainingInputMode -- ^ 'asTrainingInputMode'
-    -> AlgorithmSpecification
-algorithmSpecification pTrainingImage_ pTrainingInputMode_ =
-  AlgorithmSpecification'
-    { _asTrainingImage = pTrainingImage_
-    , _asTrainingInputMode = pTrainingInputMode_
-    }
-
-
--- | The registry path of the Docker image that contains the training algorithm. For information about docker registry paths for built-in algorithms, see 'sagemaker-algo-docker-registry-paths' .
-asTrainingImage :: Lens' AlgorithmSpecification Text
-asTrainingImage = lens _asTrainingImage (\ s a -> s{_asTrainingImage = a})
-
--- | The input mode that the algorithm supports. For the input modes that Amazon SageMaker algorithms support, see <http://docs.aws.amazon.com/sagemaker/latest/dg/algos.html Algorithms> . If an algorithm supports the @File@ input mode, Amazon SageMaker downloads the training data from S3 to the provisioned ML storage Volume, and mounts the directory to docker volume for training container. If an algorithm supports the @Pipe@ input mode, Amazon SageMaker streams data directly from S3 to the container.  In File mode, make sure you provision ML storage volume with sufficient capacity to accommodate the data download from S3. In addition to the training data, the ML storage volume also stores the output model. The algorithm container use ML storage volume to also store intermediate information, if any.  For distributed algorithms using File mode, training data is distributed uniformly, and your training duration is predictable if the input data objects size is approximately same. Amazon SageMaker does not split the files any further for model training. If the object sizes are skewed, training won't be optimal as the data distribution is also skewed where one host in a training cluster is overloaded, thus becoming bottleneck in training.
-asTrainingInputMode :: Lens' AlgorithmSpecification TrainingInputMode
-asTrainingInputMode = lens _asTrainingInputMode (\ s a -> s{_asTrainingInputMode = a})
-
-instance FromJSON AlgorithmSpecification where
-        parseJSON
-          = withObject "AlgorithmSpecification"
-              (\ x ->
-                 AlgorithmSpecification' <$>
-                   (x .: "TrainingImage") <*>
-                     (x .: "TrainingInputMode"))
-
-instance Hashable AlgorithmSpecification where
-
-instance NFData AlgorithmSpecification where
-
-instance ToJSON AlgorithmSpecification where
-        toJSON AlgorithmSpecification'{..}
-          = object
-              (catMaybes
-                 [Just ("TrainingImage" .= _asTrainingImage),
-                  Just ("TrainingInputMode" .= _asTrainingInputMode)])
-
--- | A channel is a named input source that training algorithms can consume.
---
---
---
--- /See:/ 'channel' smart constructor.
-data Channel = Channel'
-  { _cRecordWrapperType :: !(Maybe RecordWrapper)
-  , _cCompressionType   :: !(Maybe CompressionType)
-  , _cContentType       :: !(Maybe Text)
-  , _cChannelName       :: !Text
-  , _cDataSource        :: !DataSource
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Channel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cRecordWrapperType' -  Specify RecordIO as the value when input data is in raw format but the training algorithm requires the RecordIO format, in which caseAmazon SageMaker wraps each individual S3 object in a RecordIO record. If the input data is already in RecordIO format, you don't need to set this attribute. For more information, see <https://mxnet.incubator.apache.org/how_to/recordio.html?highlight=im2rec Create a Dataset Using RecordIO> .  In FILE mode, leave this field unset or set it to None.
---
--- * 'cCompressionType' - If training data is compressed, the compression type. The default value is @None@ . @CompressionType@ is used only in PIPE input mode. In FILE mode, leave this field unset or set it to None.
---
--- * 'cContentType' - The MIME type of the data.
---
--- * 'cChannelName' - The name of the channel.
---
--- * 'cDataSource' - The location of the channel data.
-channel
-    :: Text -- ^ 'cChannelName'
-    -> DataSource -- ^ 'cDataSource'
-    -> Channel
-channel pChannelName_ pDataSource_ =
-  Channel'
-    { _cRecordWrapperType = Nothing
-    , _cCompressionType = Nothing
-    , _cContentType = Nothing
-    , _cChannelName = pChannelName_
-    , _cDataSource = pDataSource_
-    }
-
-
--- |  Specify RecordIO as the value when input data is in raw format but the training algorithm requires the RecordIO format, in which caseAmazon SageMaker wraps each individual S3 object in a RecordIO record. If the input data is already in RecordIO format, you don't need to set this attribute. For more information, see <https://mxnet.incubator.apache.org/how_to/recordio.html?highlight=im2rec Create a Dataset Using RecordIO> .  In FILE mode, leave this field unset or set it to None.
-cRecordWrapperType :: Lens' Channel (Maybe RecordWrapper)
-cRecordWrapperType = lens _cRecordWrapperType (\ s a -> s{_cRecordWrapperType = a})
-
--- | If training data is compressed, the compression type. The default value is @None@ . @CompressionType@ is used only in PIPE input mode. In FILE mode, leave this field unset or set it to None.
-cCompressionType :: Lens' Channel (Maybe CompressionType)
-cCompressionType = lens _cCompressionType (\ s a -> s{_cCompressionType = a})
-
--- | The MIME type of the data.
-cContentType :: Lens' Channel (Maybe Text)
-cContentType = lens _cContentType (\ s a -> s{_cContentType = a})
-
--- | The name of the channel.
-cChannelName :: Lens' Channel Text
-cChannelName = lens _cChannelName (\ s a -> s{_cChannelName = a})
-
--- | The location of the channel data.
-cDataSource :: Lens' Channel DataSource
-cDataSource = lens _cDataSource (\ s a -> s{_cDataSource = a})
-
-instance FromJSON Channel where
-        parseJSON
-          = withObject "Channel"
-              (\ x ->
-                 Channel' <$>
-                   (x .:? "RecordWrapperType") <*>
-                     (x .:? "CompressionType")
-                     <*> (x .:? "ContentType")
-                     <*> (x .: "ChannelName")
-                     <*> (x .: "DataSource"))
-
-instance Hashable Channel where
-
-instance NFData Channel where
-
-instance ToJSON Channel where
-        toJSON Channel'{..}
-          = object
-              (catMaybes
-                 [("RecordWrapperType" .=) <$> _cRecordWrapperType,
-                  ("CompressionType" .=) <$> _cCompressionType,
-                  ("ContentType" .=) <$> _cContentType,
-                  Just ("ChannelName" .= _cChannelName),
-                  Just ("DataSource" .= _cDataSource)])
-
--- | Describes the container, as part of model definition.
---
---
---
--- /See:/ 'containerDefinition' smart constructor.
-data ContainerDefinition = ContainerDefinition'
-  { _cdModelDataURL      :: !(Maybe Text)
-  , _cdEnvironment       :: !(Maybe (Map Text Text))
-  , _cdContainerHostname :: !(Maybe Text)
-  , _cdImage             :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ContainerDefinition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdModelDataURL' - The S3 path where the model artifacts, which result from model training, are stored. This path must point to a single gzip compressed tar archive (.tar.gz suffix).
---
--- * 'cdEnvironment' - The environment variables to set in the Docker container. Each key and value in the @Environment@ string to string map can have length of up to 1024. We support up to 16 entries in the map.
---
--- * 'cdContainerHostname' - The DNS host name for the container after Amazon SageMaker deploys it.
---
--- * 'cdImage' - The Amazon EC2 Container Registry (Amazon ECR) path where inference code is stored. If you are using your own custom algorithm instead of an algorithm provided by Amazon SageMaker, the inference code must meet Amazon SageMaker requirements. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>
-containerDefinition
-    :: Text -- ^ 'cdImage'
-    -> ContainerDefinition
-containerDefinition pImage_ =
-  ContainerDefinition'
-    { _cdModelDataURL = Nothing
-    , _cdEnvironment = Nothing
-    , _cdContainerHostname = Nothing
-    , _cdImage = pImage_
-    }
-
-
--- | The S3 path where the model artifacts, which result from model training, are stored. This path must point to a single gzip compressed tar archive (.tar.gz suffix).
-cdModelDataURL :: Lens' ContainerDefinition (Maybe Text)
-cdModelDataURL = lens _cdModelDataURL (\ s a -> s{_cdModelDataURL = a})
-
--- | The environment variables to set in the Docker container. Each key and value in the @Environment@ string to string map can have length of up to 1024. We support up to 16 entries in the map.
-cdEnvironment :: Lens' ContainerDefinition (HashMap Text Text)
-cdEnvironment = lens _cdEnvironment (\ s a -> s{_cdEnvironment = a}) . _Default . _Map
-
--- | The DNS host name for the container after Amazon SageMaker deploys it.
-cdContainerHostname :: Lens' ContainerDefinition (Maybe Text)
-cdContainerHostname = lens _cdContainerHostname (\ s a -> s{_cdContainerHostname = a})
-
--- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code is stored. If you are using your own custom algorithm instead of an algorithm provided by Amazon SageMaker, the inference code must meet Amazon SageMaker requirements. For more information, see <http://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>
-cdImage :: Lens' ContainerDefinition Text
-cdImage = lens _cdImage (\ s a -> s{_cdImage = a})
-
-instance FromJSON ContainerDefinition where
-        parseJSON
-          = withObject "ContainerDefinition"
-              (\ x ->
-                 ContainerDefinition' <$>
-                   (x .:? "ModelDataUrl") <*>
-                     (x .:? "Environment" .!= mempty)
-                     <*> (x .:? "ContainerHostname")
-                     <*> (x .: "Image"))
-
-instance Hashable ContainerDefinition where
-
-instance NFData ContainerDefinition where
-
-instance ToJSON ContainerDefinition where
-        toJSON ContainerDefinition'{..}
-          = object
-              (catMaybes
-                 [("ModelDataUrl" .=) <$> _cdModelDataURL,
-                  ("Environment" .=) <$> _cdEnvironment,
-                  ("ContainerHostname" .=) <$> _cdContainerHostname,
-                  Just ("Image" .= _cdImage)])
-
--- | Describes the location of the channel data.
---
---
---
--- /See:/ 'dataSource' smart constructor.
-newtype DataSource = DataSource'
-  { _dsS3DataSource :: S3DataSource
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsS3DataSource' - The S3 location of the data source that is associated with a channel.
-dataSource
-    :: S3DataSource -- ^ 'dsS3DataSource'
-    -> DataSource
-dataSource pS3DataSource_ = DataSource' {_dsS3DataSource = pS3DataSource_}
-
-
--- | The S3 location of the data source that is associated with a channel.
-dsS3DataSource :: Lens' DataSource S3DataSource
-dsS3DataSource = lens _dsS3DataSource (\ s a -> s{_dsS3DataSource = a})
-
-instance FromJSON DataSource where
-        parseJSON
-          = withObject "DataSource"
-              (\ x -> DataSource' <$> (x .: "S3DataSource"))
-
-instance Hashable DataSource where
-
-instance NFData DataSource where
-
-instance ToJSON DataSource where
-        toJSON DataSource'{..}
-          = object
-              (catMaybes
-                 [Just ("S3DataSource" .= _dsS3DataSource)])
-
--- | Specifies weight and capacity values for a production variant.
---
---
---
--- /See:/ 'desiredWeightAndCapacity' smart constructor.
-data DesiredWeightAndCapacity = DesiredWeightAndCapacity'
-  { _dwacDesiredInstanceCount :: !(Maybe Nat)
-  , _dwacDesiredWeight        :: !(Maybe Double)
-  , _dwacVariantName          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DesiredWeightAndCapacity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dwacDesiredInstanceCount' - The variant's capacity.
---
--- * 'dwacDesiredWeight' - The variant's weight.
---
--- * 'dwacVariantName' - The name of the variant to update.
-desiredWeightAndCapacity
-    :: Text -- ^ 'dwacVariantName'
-    -> DesiredWeightAndCapacity
-desiredWeightAndCapacity pVariantName_ =
-  DesiredWeightAndCapacity'
-    { _dwacDesiredInstanceCount = Nothing
-    , _dwacDesiredWeight = Nothing
-    , _dwacVariantName = pVariantName_
-    }
-
-
--- | The variant's capacity.
-dwacDesiredInstanceCount :: Lens' DesiredWeightAndCapacity (Maybe Natural)
-dwacDesiredInstanceCount = lens _dwacDesiredInstanceCount (\ s a -> s{_dwacDesiredInstanceCount = a}) . mapping _Nat
-
--- | The variant's weight.
-dwacDesiredWeight :: Lens' DesiredWeightAndCapacity (Maybe Double)
-dwacDesiredWeight = lens _dwacDesiredWeight (\ s a -> s{_dwacDesiredWeight = a})
-
--- | The name of the variant to update.
-dwacVariantName :: Lens' DesiredWeightAndCapacity Text
-dwacVariantName = lens _dwacVariantName (\ s a -> s{_dwacVariantName = a})
-
-instance Hashable DesiredWeightAndCapacity where
-
-instance NFData DesiredWeightAndCapacity where
-
-instance ToJSON DesiredWeightAndCapacity where
-        toJSON DesiredWeightAndCapacity'{..}
-          = object
-              (catMaybes
-                 [("DesiredInstanceCount" .=) <$>
-                    _dwacDesiredInstanceCount,
-                  ("DesiredWeight" .=) <$> _dwacDesiredWeight,
-                  Just ("VariantName" .= _dwacVariantName)])
-
--- | Provides summary information for an endpoint configuration.
---
---
---
--- /See:/ 'endpointConfigSummary' smart constructor.
-data EndpointConfigSummary = EndpointConfigSummary'
-  { _ecsEndpointConfigName :: !Text
-  , _ecsEndpointConfigARN  :: !Text
-  , _ecsCreationTime       :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EndpointConfigSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ecsEndpointConfigName' - The name of the endpoint configuration.
---
--- * 'ecsEndpointConfigARN' - The Amazon Resource Name (ARN) of the endpoint configuration.
---
--- * 'ecsCreationTime' - A timestamp that shows when the endpoint configuration was created.
-endpointConfigSummary
-    :: Text -- ^ 'ecsEndpointConfigName'
-    -> Text -- ^ 'ecsEndpointConfigARN'
-    -> UTCTime -- ^ 'ecsCreationTime'
-    -> EndpointConfigSummary
-endpointConfigSummary pEndpointConfigName_ pEndpointConfigARN_ pCreationTime_ =
-  EndpointConfigSummary'
-    { _ecsEndpointConfigName = pEndpointConfigName_
-    , _ecsEndpointConfigARN = pEndpointConfigARN_
-    , _ecsCreationTime = _Time # pCreationTime_
-    }
-
-
--- | The name of the endpoint configuration.
-ecsEndpointConfigName :: Lens' EndpointConfigSummary Text
-ecsEndpointConfigName = lens _ecsEndpointConfigName (\ s a -> s{_ecsEndpointConfigName = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint configuration.
-ecsEndpointConfigARN :: Lens' EndpointConfigSummary Text
-ecsEndpointConfigARN = lens _ecsEndpointConfigARN (\ s a -> s{_ecsEndpointConfigARN = a})
-
--- | A timestamp that shows when the endpoint configuration was created.
-ecsCreationTime :: Lens' EndpointConfigSummary UTCTime
-ecsCreationTime = lens _ecsCreationTime (\ s a -> s{_ecsCreationTime = a}) . _Time
-
-instance FromJSON EndpointConfigSummary where
-        parseJSON
-          = withObject "EndpointConfigSummary"
-              (\ x ->
-                 EndpointConfigSummary' <$>
-                   (x .: "EndpointConfigName") <*>
-                     (x .: "EndpointConfigArn")
-                     <*> (x .: "CreationTime"))
-
-instance Hashable EndpointConfigSummary where
-
-instance NFData EndpointConfigSummary where
-
--- | Provides summary information for an endpoint.
---
---
---
--- /See:/ 'endpointSummary' smart constructor.
-data EndpointSummary = EndpointSummary'
-  { _esEndpointName     :: !Text
-  , _esEndpointARN      :: !Text
-  , _esCreationTime     :: !POSIX
-  , _esLastModifiedTime :: !POSIX
-  , _esEndpointStatus   :: !EndpointStatus
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EndpointSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'esEndpointName' - The name of the endpoint.
---
--- * 'esEndpointARN' - The Amazon Resource Name (ARN) of the endpoint.
---
--- * 'esCreationTime' - A timestamp that shows when the endpoint was created.
---
--- * 'esLastModifiedTime' - A timestamp that shows when the endpoint was last modified.
---
--- * 'esEndpointStatus' - The status of the endpoint.
-endpointSummary
-    :: Text -- ^ 'esEndpointName'
-    -> Text -- ^ 'esEndpointARN'
-    -> UTCTime -- ^ 'esCreationTime'
-    -> UTCTime -- ^ 'esLastModifiedTime'
-    -> EndpointStatus -- ^ 'esEndpointStatus'
-    -> EndpointSummary
-endpointSummary pEndpointName_ pEndpointARN_ pCreationTime_ pLastModifiedTime_ pEndpointStatus_ =
-  EndpointSummary'
-    { _esEndpointName = pEndpointName_
-    , _esEndpointARN = pEndpointARN_
-    , _esCreationTime = _Time # pCreationTime_
-    , _esLastModifiedTime = _Time # pLastModifiedTime_
-    , _esEndpointStatus = pEndpointStatus_
-    }
-
-
--- | The name of the endpoint.
-esEndpointName :: Lens' EndpointSummary Text
-esEndpointName = lens _esEndpointName (\ s a -> s{_esEndpointName = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint.
-esEndpointARN :: Lens' EndpointSummary Text
-esEndpointARN = lens _esEndpointARN (\ s a -> s{_esEndpointARN = a})
-
--- | A timestamp that shows when the endpoint was created.
-esCreationTime :: Lens' EndpointSummary UTCTime
-esCreationTime = lens _esCreationTime (\ s a -> s{_esCreationTime = a}) . _Time
-
--- | A timestamp that shows when the endpoint was last modified.
-esLastModifiedTime :: Lens' EndpointSummary UTCTime
-esLastModifiedTime = lens _esLastModifiedTime (\ s a -> s{_esLastModifiedTime = a}) . _Time
-
--- | The status of the endpoint.
-esEndpointStatus :: Lens' EndpointSummary EndpointStatus
-esEndpointStatus = lens _esEndpointStatus (\ s a -> s{_esEndpointStatus = a})
-
-instance FromJSON EndpointSummary where
-        parseJSON
-          = withObject "EndpointSummary"
-              (\ x ->
-                 EndpointSummary' <$>
-                   (x .: "EndpointName") <*> (x .: "EndpointArn") <*>
-                     (x .: "CreationTime")
-                     <*> (x .: "LastModifiedTime")
-                     <*> (x .: "EndpointStatus"))
-
-instance Hashable EndpointSummary where
-
-instance NFData EndpointSummary where
-
--- | Provides information about the location that is configured for storing model artifacts.
---
---
---
--- /See:/ 'modelArtifacts' smart constructor.
-newtype ModelArtifacts = ModelArtifacts'
-  { _maS3ModelArtifacts :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ModelArtifacts' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'maS3ModelArtifacts' - The path of the S3 object that contains the model artifacts. For example, @s3://bucket-name/keynameprefix/model.tar.gz@ .
-modelArtifacts
-    :: Text -- ^ 'maS3ModelArtifacts'
-    -> ModelArtifacts
-modelArtifacts pS3ModelArtifacts_ =
-  ModelArtifacts' {_maS3ModelArtifacts = pS3ModelArtifacts_}
-
-
--- | The path of the S3 object that contains the model artifacts. For example, @s3://bucket-name/keynameprefix/model.tar.gz@ .
-maS3ModelArtifacts :: Lens' ModelArtifacts Text
-maS3ModelArtifacts = lens _maS3ModelArtifacts (\ s a -> s{_maS3ModelArtifacts = a})
-
-instance FromJSON ModelArtifacts where
-        parseJSON
-          = withObject "ModelArtifacts"
-              (\ x ->
-                 ModelArtifacts' <$> (x .: "S3ModelArtifacts"))
-
-instance Hashable ModelArtifacts where
-
-instance NFData ModelArtifacts where
-
--- | Provides summary information about a model.
---
---
---
--- /See:/ 'modelSummary' smart constructor.
-data ModelSummary = ModelSummary'
-  { _msModelName    :: !Text
-  , _msModelARN     :: !Text
-  , _msCreationTime :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ModelSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msModelName' - The name of the model that you want a summary for.
---
--- * 'msModelARN' - The Amazon Resource Name (ARN) of the model.
---
--- * 'msCreationTime' - A timestamp that indicates when the model was created.
-modelSummary
-    :: Text -- ^ 'msModelName'
-    -> Text -- ^ 'msModelARN'
-    -> UTCTime -- ^ 'msCreationTime'
-    -> ModelSummary
-modelSummary pModelName_ pModelARN_ pCreationTime_ =
-  ModelSummary'
-    { _msModelName = pModelName_
-    , _msModelARN = pModelARN_
-    , _msCreationTime = _Time # pCreationTime_
-    }
-
-
--- | The name of the model that you want a summary for.
-msModelName :: Lens' ModelSummary Text
-msModelName = lens _msModelName (\ s a -> s{_msModelName = a})
-
--- | The Amazon Resource Name (ARN) of the model.
-msModelARN :: Lens' ModelSummary Text
-msModelARN = lens _msModelARN (\ s a -> s{_msModelARN = a})
-
--- | A timestamp that indicates when the model was created.
-msCreationTime :: Lens' ModelSummary UTCTime
-msCreationTime = lens _msCreationTime (\ s a -> s{_msCreationTime = a}) . _Time
-
-instance FromJSON ModelSummary where
-        parseJSON
-          = withObject "ModelSummary"
-              (\ x ->
-                 ModelSummary' <$>
-                   (x .: "ModelName") <*> (x .: "ModelArn") <*>
-                     (x .: "CreationTime"))
-
-instance Hashable ModelSummary where
-
-instance NFData ModelSummary where
-
--- | Provides a summary of a notebook instance lifecycle configuration.
---
---
---
--- /See:/ 'notebookInstanceLifecycleConfigSummary' smart constructor.
-data NotebookInstanceLifecycleConfigSummary = NotebookInstanceLifecycleConfigSummary'
-  { _nilcsCreationTime                        :: !(Maybe POSIX)
-  , _nilcsLastModifiedTime                    :: !(Maybe POSIX)
-  , _nilcsNotebookInstanceLifecycleConfigName :: !Text
-  , _nilcsNotebookInstanceLifecycleConfigARN  :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotebookInstanceLifecycleConfigSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nilcsCreationTime' - A timestamp that tells when the lifecycle configuration was created.
---
--- * 'nilcsLastModifiedTime' - A timestamp that tells when the lifecycle configuration was last modified.
---
--- * 'nilcsNotebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
---
--- * 'nilcsNotebookInstanceLifecycleConfigARN' - The Amazon Resource Name (ARN) of the lifecycle configuration.
-notebookInstanceLifecycleConfigSummary
-    :: Text -- ^ 'nilcsNotebookInstanceLifecycleConfigName'
-    -> Text -- ^ 'nilcsNotebookInstanceLifecycleConfigARN'
-    -> NotebookInstanceLifecycleConfigSummary
-notebookInstanceLifecycleConfigSummary pNotebookInstanceLifecycleConfigName_ pNotebookInstanceLifecycleConfigARN_ =
-  NotebookInstanceLifecycleConfigSummary'
-    { _nilcsCreationTime = Nothing
-    , _nilcsLastModifiedTime = Nothing
-    , _nilcsNotebookInstanceLifecycleConfigName =
-        pNotebookInstanceLifecycleConfigName_
-    , _nilcsNotebookInstanceLifecycleConfigARN =
-        pNotebookInstanceLifecycleConfigARN_
-    }
-
-
--- | A timestamp that tells when the lifecycle configuration was created.
-nilcsCreationTime :: Lens' NotebookInstanceLifecycleConfigSummary (Maybe UTCTime)
-nilcsCreationTime = lens _nilcsCreationTime (\ s a -> s{_nilcsCreationTime = a}) . mapping _Time
-
--- | A timestamp that tells when the lifecycle configuration was last modified.
-nilcsLastModifiedTime :: Lens' NotebookInstanceLifecycleConfigSummary (Maybe UTCTime)
-nilcsLastModifiedTime = lens _nilcsLastModifiedTime (\ s a -> s{_nilcsLastModifiedTime = a}) . mapping _Time
-
--- | The name of the lifecycle configuration.
-nilcsNotebookInstanceLifecycleConfigName :: Lens' NotebookInstanceLifecycleConfigSummary Text
-nilcsNotebookInstanceLifecycleConfigName = lens _nilcsNotebookInstanceLifecycleConfigName (\ s a -> s{_nilcsNotebookInstanceLifecycleConfigName = a})
-
--- | The Amazon Resource Name (ARN) of the lifecycle configuration.
-nilcsNotebookInstanceLifecycleConfigARN :: Lens' NotebookInstanceLifecycleConfigSummary Text
-nilcsNotebookInstanceLifecycleConfigARN = lens _nilcsNotebookInstanceLifecycleConfigARN (\ s a -> s{_nilcsNotebookInstanceLifecycleConfigARN = a})
-
-instance FromJSON
-           NotebookInstanceLifecycleConfigSummary
-         where
-        parseJSON
-          = withObject "NotebookInstanceLifecycleConfigSummary"
-              (\ x ->
-                 NotebookInstanceLifecycleConfigSummary' <$>
-                   (x .:? "CreationTime") <*> (x .:? "LastModifiedTime")
-                     <*> (x .: "NotebookInstanceLifecycleConfigName")
-                     <*> (x .: "NotebookInstanceLifecycleConfigArn"))
-
-instance Hashable
-           NotebookInstanceLifecycleConfigSummary
-         where
-
-instance NFData
-           NotebookInstanceLifecycleConfigSummary
-         where
-
--- | Contains the notebook instance lifecycle configuration script.
---
---
--- Each lifecycle configuration script has a limit of 16384 characters.
---
--- The value of the @> PATH@ environment variable that is available to both scripts is @/sbin:bin:/usr/sbin:/usr/bin@ .
---
--- View CloudWatch Logs for notebook instance lifecycle configurations in log group @/aws/sagemaker/NotebookInstances@ in log stream @[notebook-instance-name]/[LifecycleConfigHook]@ .
---
--- Lifecycle configuration scripts cannot run for longer than 5 minutes. If a script runs for longer than 5 minutes, it fails and the notebook instance is not created or started.
---
--- For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
---
---
--- /See:/ 'notebookInstanceLifecycleHook' smart constructor.
-newtype NotebookInstanceLifecycleHook = NotebookInstanceLifecycleHook'
-  { _nilhContent :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotebookInstanceLifecycleHook' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nilhContent' - A base64-encoded string that contains a shell script for a notebook instance lifecycle configuration.
-notebookInstanceLifecycleHook
-    :: NotebookInstanceLifecycleHook
-notebookInstanceLifecycleHook =
-  NotebookInstanceLifecycleHook' {_nilhContent = Nothing}
-
-
--- | A base64-encoded string that contains a shell script for a notebook instance lifecycle configuration.
-nilhContent :: Lens' NotebookInstanceLifecycleHook (Maybe Text)
-nilhContent = lens _nilhContent (\ s a -> s{_nilhContent = a})
-
-instance FromJSON NotebookInstanceLifecycleHook where
-        parseJSON
-          = withObject "NotebookInstanceLifecycleHook"
-              (\ x ->
-                 NotebookInstanceLifecycleHook' <$> (x .:? "Content"))
-
-instance Hashable NotebookInstanceLifecycleHook where
-
-instance NFData NotebookInstanceLifecycleHook where
-
-instance ToJSON NotebookInstanceLifecycleHook where
-        toJSON NotebookInstanceLifecycleHook'{..}
-          = object
-              (catMaybes [("Content" .=) <$> _nilhContent])
-
--- | Provides summary information for an Amazon SageMaker notebook instance.
---
---
---
--- /See:/ 'notebookInstanceSummary' smart constructor.
-data NotebookInstanceSummary = NotebookInstanceSummary'
-  { _nisCreationTime                        :: !(Maybe POSIX)
-  , _nisURL                                 :: !(Maybe Text)
-  , _nisLastModifiedTime                    :: !(Maybe POSIX)
-  , _nisInstanceType                        :: !(Maybe InstanceType)
-  , _nisNotebookInstanceStatus              :: !(Maybe NotebookInstanceStatus)
-  , _nisNotebookInstanceLifecycleConfigName :: !(Maybe Text)
-  , _nisNotebookInstanceName                :: !Text
-  , _nisNotebookInstanceARN                 :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotebookInstanceSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nisCreationTime' - A timestamp that shows when the notebook instance was created.
---
--- * 'nisURL' - The URL that you use to connect to the Jupyter instance running in your notebook instance.
---
--- * 'nisLastModifiedTime' - A timestamp that shows when the notebook instance was last modified.
---
--- * 'nisInstanceType' - The type of ML compute instance that the notebook instance is running on.
---
--- * 'nisNotebookInstanceStatus' - The status of the notebook instance.
---
--- * 'nisNotebookInstanceLifecycleConfigName' - The name of a notebook instance lifecycle configuration associated with this notebook instance. For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
---
--- * 'nisNotebookInstanceName' - The name of the notebook instance that you want a summary for.
---
--- * 'nisNotebookInstanceARN' - The Amazon Resource Name (ARN) of the notebook instance.
-notebookInstanceSummary
-    :: Text -- ^ 'nisNotebookInstanceName'
-    -> Text -- ^ 'nisNotebookInstanceARN'
-    -> NotebookInstanceSummary
-notebookInstanceSummary pNotebookInstanceName_ pNotebookInstanceARN_ =
-  NotebookInstanceSummary'
-    { _nisCreationTime = Nothing
-    , _nisURL = Nothing
-    , _nisLastModifiedTime = Nothing
-    , _nisInstanceType = Nothing
-    , _nisNotebookInstanceStatus = Nothing
-    , _nisNotebookInstanceLifecycleConfigName = Nothing
-    , _nisNotebookInstanceName = pNotebookInstanceName_
-    , _nisNotebookInstanceARN = pNotebookInstanceARN_
-    }
-
-
--- | A timestamp that shows when the notebook instance was created.
-nisCreationTime :: Lens' NotebookInstanceSummary (Maybe UTCTime)
-nisCreationTime = lens _nisCreationTime (\ s a -> s{_nisCreationTime = a}) . mapping _Time
-
--- | The URL that you use to connect to the Jupyter instance running in your notebook instance.
-nisURL :: Lens' NotebookInstanceSummary (Maybe Text)
-nisURL = lens _nisURL (\ s a -> s{_nisURL = a})
-
--- | A timestamp that shows when the notebook instance was last modified.
-nisLastModifiedTime :: Lens' NotebookInstanceSummary (Maybe UTCTime)
-nisLastModifiedTime = lens _nisLastModifiedTime (\ s a -> s{_nisLastModifiedTime = a}) . mapping _Time
-
--- | The type of ML compute instance that the notebook instance is running on.
-nisInstanceType :: Lens' NotebookInstanceSummary (Maybe InstanceType)
-nisInstanceType = lens _nisInstanceType (\ s a -> s{_nisInstanceType = a})
-
--- | The status of the notebook instance.
-nisNotebookInstanceStatus :: Lens' NotebookInstanceSummary (Maybe NotebookInstanceStatus)
-nisNotebookInstanceStatus = lens _nisNotebookInstanceStatus (\ s a -> s{_nisNotebookInstanceStatus = a})
-
--- | The name of a notebook instance lifecycle configuration associated with this notebook instance. For information about notebook instance lifestyle configurations, see 'notebook-lifecycle-config' .
-nisNotebookInstanceLifecycleConfigName :: Lens' NotebookInstanceSummary (Maybe Text)
-nisNotebookInstanceLifecycleConfigName = lens _nisNotebookInstanceLifecycleConfigName (\ s a -> s{_nisNotebookInstanceLifecycleConfigName = a})
-
--- | The name of the notebook instance that you want a summary for.
-nisNotebookInstanceName :: Lens' NotebookInstanceSummary Text
-nisNotebookInstanceName = lens _nisNotebookInstanceName (\ s a -> s{_nisNotebookInstanceName = a})
-
--- | The Amazon Resource Name (ARN) of the notebook instance.
-nisNotebookInstanceARN :: Lens' NotebookInstanceSummary Text
-nisNotebookInstanceARN = lens _nisNotebookInstanceARN (\ s a -> s{_nisNotebookInstanceARN = a})
-
-instance FromJSON NotebookInstanceSummary where
-        parseJSON
-          = withObject "NotebookInstanceSummary"
-              (\ x ->
-                 NotebookInstanceSummary' <$>
-                   (x .:? "CreationTime") <*> (x .:? "Url") <*>
-                     (x .:? "LastModifiedTime")
-                     <*> (x .:? "InstanceType")
-                     <*> (x .:? "NotebookInstanceStatus")
-                     <*> (x .:? "NotebookInstanceLifecycleConfigName")
-                     <*> (x .: "NotebookInstanceName")
-                     <*> (x .: "NotebookInstanceArn"))
-
-instance Hashable NotebookInstanceSummary where
-
-instance NFData NotebookInstanceSummary where
-
--- | Provides information about how to store model training results (model artifacts).
---
---
---
--- /See:/ 'outputDataConfig' smart constructor.
-data OutputDataConfig = OutputDataConfig'
-  { _odcKMSKeyId     :: !(Maybe Text)
-  , _odcS3OutputPath :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OutputDataConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'odcKMSKeyId' - The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.
---
--- * 'odcS3OutputPath' - Identifies the S3 path where you want Amazon SageMaker to store the model artifacts. For example, @s3://bucket-name/key-name-prefix@ .
-outputDataConfig
-    :: Text -- ^ 'odcS3OutputPath'
-    -> OutputDataConfig
-outputDataConfig pS3OutputPath_ =
-  OutputDataConfig' {_odcKMSKeyId = Nothing, _odcS3OutputPath = pS3OutputPath_}
-
-
--- | The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.
-odcKMSKeyId :: Lens' OutputDataConfig (Maybe Text)
-odcKMSKeyId = lens _odcKMSKeyId (\ s a -> s{_odcKMSKeyId = a})
-
--- | Identifies the S3 path where you want Amazon SageMaker to store the model artifacts. For example, @s3://bucket-name/key-name-prefix@ .
-odcS3OutputPath :: Lens' OutputDataConfig Text
-odcS3OutputPath = lens _odcS3OutputPath (\ s a -> s{_odcS3OutputPath = a})
-
-instance FromJSON OutputDataConfig where
-        parseJSON
-          = withObject "OutputDataConfig"
-              (\ x ->
-                 OutputDataConfig' <$>
-                   (x .:? "KmsKeyId") <*> (x .: "S3OutputPath"))
-
-instance Hashable OutputDataConfig where
-
-instance NFData OutputDataConfig where
-
-instance ToJSON OutputDataConfig where
-        toJSON OutputDataConfig'{..}
-          = object
-              (catMaybes
-                 [("KmsKeyId" .=) <$> _odcKMSKeyId,
-                  Just ("S3OutputPath" .= _odcS3OutputPath)])
-
--- | Identifies a model that you want to host and the resources to deploy for hosting it. If you are deploying multiple models, tell Amazon SageMaker how to distribute traffic among the models by specifying variant weights.
---
---
---
--- /See:/ 'productionVariant' smart constructor.
-data ProductionVariant = ProductionVariant'
-  { _pvInitialVariantWeight :: !(Maybe Double)
-  , _pvVariantName          :: !Text
-  , _pvModelName            :: !Text
-  , _pvInitialInstanceCount :: !Nat
-  , _pvInstanceType         :: !ProductionVariantInstanceType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProductionVariant' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvInitialVariantWeight' - Determines initial traffic distribution among all of the models that you specify in the endpoint configuration. The traffic to a production variant is determined by the ratio of the @VariantWeight@ to the sum of all @VariantWeight@ values across all ProductionVariants. If unspecified, it defaults to 1.0.
---
--- * 'pvVariantName' - The name of the production variant.
---
--- * 'pvModelName' - The name of the model that you want to host. This is the name that you specified when creating the model.
---
--- * 'pvInitialInstanceCount' - Number of instances to launch initially.
---
--- * 'pvInstanceType' - The ML compute instance type.
-productionVariant
-    :: Text -- ^ 'pvVariantName'
-    -> Text -- ^ 'pvModelName'
-    -> Natural -- ^ 'pvInitialInstanceCount'
-    -> ProductionVariantInstanceType -- ^ 'pvInstanceType'
-    -> ProductionVariant
-productionVariant pVariantName_ pModelName_ pInitialInstanceCount_ pInstanceType_ =
-  ProductionVariant'
-    { _pvInitialVariantWeight = Nothing
-    , _pvVariantName = pVariantName_
-    , _pvModelName = pModelName_
-    , _pvInitialInstanceCount = _Nat # pInitialInstanceCount_
-    , _pvInstanceType = pInstanceType_
-    }
-
-
--- | Determines initial traffic distribution among all of the models that you specify in the endpoint configuration. The traffic to a production variant is determined by the ratio of the @VariantWeight@ to the sum of all @VariantWeight@ values across all ProductionVariants. If unspecified, it defaults to 1.0.
-pvInitialVariantWeight :: Lens' ProductionVariant (Maybe Double)
-pvInitialVariantWeight = lens _pvInitialVariantWeight (\ s a -> s{_pvInitialVariantWeight = a})
-
--- | The name of the production variant.
-pvVariantName :: Lens' ProductionVariant Text
-pvVariantName = lens _pvVariantName (\ s a -> s{_pvVariantName = a})
-
--- | The name of the model that you want to host. This is the name that you specified when creating the model.
-pvModelName :: Lens' ProductionVariant Text
-pvModelName = lens _pvModelName (\ s a -> s{_pvModelName = a})
-
--- | Number of instances to launch initially.
-pvInitialInstanceCount :: Lens' ProductionVariant Natural
-pvInitialInstanceCount = lens _pvInitialInstanceCount (\ s a -> s{_pvInitialInstanceCount = a}) . _Nat
-
--- | The ML compute instance type.
-pvInstanceType :: Lens' ProductionVariant ProductionVariantInstanceType
-pvInstanceType = lens _pvInstanceType (\ s a -> s{_pvInstanceType = a})
-
-instance FromJSON ProductionVariant where
-        parseJSON
-          = withObject "ProductionVariant"
-              (\ x ->
-                 ProductionVariant' <$>
-                   (x .:? "InitialVariantWeight") <*>
-                     (x .: "VariantName")
-                     <*> (x .: "ModelName")
-                     <*> (x .: "InitialInstanceCount")
-                     <*> (x .: "InstanceType"))
-
-instance Hashable ProductionVariant where
-
-instance NFData ProductionVariant where
-
-instance ToJSON ProductionVariant where
-        toJSON ProductionVariant'{..}
-          = object
-              (catMaybes
-                 [("InitialVariantWeight" .=) <$>
-                    _pvInitialVariantWeight,
-                  Just ("VariantName" .= _pvVariantName),
-                  Just ("ModelName" .= _pvModelName),
-                  Just
-                    ("InitialInstanceCount" .= _pvInitialInstanceCount),
-                  Just ("InstanceType" .= _pvInstanceType)])
-
--- | Describes weight and capacities for a production variant associated with an endpoint. If you sent a request to the @UpdateEndpointWeightsAndCapacities@ API and the endpoint status is @Updating@ , you get different desired and current values.
---
---
---
--- /See:/ 'productionVariantSummary' smart constructor.
-data ProductionVariantSummary = ProductionVariantSummary'
-  { _pvsDesiredInstanceCount :: !(Maybe Nat)
-  , _pvsDesiredWeight        :: !(Maybe Double)
-  , _pvsCurrentWeight        :: !(Maybe Double)
-  , _pvsCurrentInstanceCount :: !(Maybe Nat)
-  , _pvsVariantName          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProductionVariantSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvsDesiredInstanceCount' - The number of instances requested in the @UpdateEndpointWeightsAndCapacities@ request.
---
--- * 'pvsDesiredWeight' - The requested weight, as specified in the @UpdateEndpointWeightsAndCapacities@ request.
---
--- * 'pvsCurrentWeight' - The weight associated with the variant.
---
--- * 'pvsCurrentInstanceCount' - The number of instances associated with the variant.
---
--- * 'pvsVariantName' - The name of the variant.
-productionVariantSummary
-    :: Text -- ^ 'pvsVariantName'
-    -> ProductionVariantSummary
-productionVariantSummary pVariantName_ =
-  ProductionVariantSummary'
-    { _pvsDesiredInstanceCount = Nothing
-    , _pvsDesiredWeight = Nothing
-    , _pvsCurrentWeight = Nothing
-    , _pvsCurrentInstanceCount = Nothing
-    , _pvsVariantName = pVariantName_
-    }
-
-
--- | The number of instances requested in the @UpdateEndpointWeightsAndCapacities@ request.
-pvsDesiredInstanceCount :: Lens' ProductionVariantSummary (Maybe Natural)
-pvsDesiredInstanceCount = lens _pvsDesiredInstanceCount (\ s a -> s{_pvsDesiredInstanceCount = a}) . mapping _Nat
-
--- | The requested weight, as specified in the @UpdateEndpointWeightsAndCapacities@ request.
-pvsDesiredWeight :: Lens' ProductionVariantSummary (Maybe Double)
-pvsDesiredWeight = lens _pvsDesiredWeight (\ s a -> s{_pvsDesiredWeight = a})
-
--- | The weight associated with the variant.
-pvsCurrentWeight :: Lens' ProductionVariantSummary (Maybe Double)
-pvsCurrentWeight = lens _pvsCurrentWeight (\ s a -> s{_pvsCurrentWeight = a})
-
--- | The number of instances associated with the variant.
-pvsCurrentInstanceCount :: Lens' ProductionVariantSummary (Maybe Natural)
-pvsCurrentInstanceCount = lens _pvsCurrentInstanceCount (\ s a -> s{_pvsCurrentInstanceCount = a}) . mapping _Nat
-
--- | The name of the variant.
-pvsVariantName :: Lens' ProductionVariantSummary Text
-pvsVariantName = lens _pvsVariantName (\ s a -> s{_pvsVariantName = a})
-
-instance FromJSON ProductionVariantSummary where
-        parseJSON
-          = withObject "ProductionVariantSummary"
-              (\ x ->
-                 ProductionVariantSummary' <$>
-                   (x .:? "DesiredInstanceCount") <*>
-                     (x .:? "DesiredWeight")
-                     <*> (x .:? "CurrentWeight")
-                     <*> (x .:? "CurrentInstanceCount")
-                     <*> (x .: "VariantName"))
-
-instance Hashable ProductionVariantSummary where
-
-instance NFData ProductionVariantSummary where
-
--- | Describes the resources, including ML compute instances and ML storage volumes, to use for model training.
---
---
---
--- /See:/ 'resourceConfig' smart constructor.
-data ResourceConfig = ResourceConfig'
-  { _rcVolumeKMSKeyId :: !(Maybe Text)
-  , _rcInstanceType   :: !TrainingInstanceType
-  , _rcInstanceCount  :: !Nat
-  , _rcVolumeSizeInGB :: !Nat
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResourceConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcVolumeKMSKeyId' - The Amazon Resource Name (ARN) of a AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the training job.
---
--- * 'rcInstanceType' - The ML compute instance type.
---
--- * 'rcInstanceCount' - The number of ML compute instances to use. For distributed training, provide a value greater than 1.
---
--- * 'rcVolumeSizeInGB' - The size of the ML storage volume that you want to provision.  ML storage volumes store model artifacts and incremental states. Training algorithms might also use the ML storage volume for scratch space. If you want to store the training data in the ML storage volume, choose @File@ as the @TrainingInputMode@ in the algorithm specification.  You must specify sufficient ML storage for your scenario.
-resourceConfig
-    :: TrainingInstanceType -- ^ 'rcInstanceType'
-    -> Natural -- ^ 'rcInstanceCount'
-    -> Natural -- ^ 'rcVolumeSizeInGB'
-    -> ResourceConfig
-resourceConfig pInstanceType_ pInstanceCount_ pVolumeSizeInGB_ =
-  ResourceConfig'
-    { _rcVolumeKMSKeyId = Nothing
-    , _rcInstanceType = pInstanceType_
-    , _rcInstanceCount = _Nat # pInstanceCount_
-    , _rcVolumeSizeInGB = _Nat # pVolumeSizeInGB_
-    }
-
-
--- | The Amazon Resource Name (ARN) of a AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the training job.
-rcVolumeKMSKeyId :: Lens' ResourceConfig (Maybe Text)
-rcVolumeKMSKeyId = lens _rcVolumeKMSKeyId (\ s a -> s{_rcVolumeKMSKeyId = a})
-
--- | The ML compute instance type.
-rcInstanceType :: Lens' ResourceConfig TrainingInstanceType
-rcInstanceType = lens _rcInstanceType (\ s a -> s{_rcInstanceType = a})
-
--- | The number of ML compute instances to use. For distributed training, provide a value greater than 1.
-rcInstanceCount :: Lens' ResourceConfig Natural
-rcInstanceCount = lens _rcInstanceCount (\ s a -> s{_rcInstanceCount = a}) . _Nat
-
--- | The size of the ML storage volume that you want to provision.  ML storage volumes store model artifacts and incremental states. Training algorithms might also use the ML storage volume for scratch space. If you want to store the training data in the ML storage volume, choose @File@ as the @TrainingInputMode@ in the algorithm specification.  You must specify sufficient ML storage for your scenario.
-rcVolumeSizeInGB :: Lens' ResourceConfig Natural
-rcVolumeSizeInGB = lens _rcVolumeSizeInGB (\ s a -> s{_rcVolumeSizeInGB = a}) . _Nat
-
-instance FromJSON ResourceConfig where
-        parseJSON
-          = withObject "ResourceConfig"
-              (\ x ->
-                 ResourceConfig' <$>
-                   (x .:? "VolumeKmsKeyId") <*> (x .: "InstanceType")
-                     <*> (x .: "InstanceCount")
-                     <*> (x .: "VolumeSizeInGB"))
-
-instance Hashable ResourceConfig where
-
-instance NFData ResourceConfig where
-
-instance ToJSON ResourceConfig where
-        toJSON ResourceConfig'{..}
-          = object
-              (catMaybes
-                 [("VolumeKmsKeyId" .=) <$> _rcVolumeKMSKeyId,
-                  Just ("InstanceType" .= _rcInstanceType),
-                  Just ("InstanceCount" .= _rcInstanceCount),
-                  Just ("VolumeSizeInGB" .= _rcVolumeSizeInGB)])
-
--- | Describes the S3 data source.
---
---
---
--- /See:/ 's3DataSource' smart constructor.
-data S3DataSource = S3DataSource'
-  { _sdsS3DataDistributionType :: !(Maybe S3DataDistribution)
-  , _sdsS3DataType             :: !S3DataType
-  , _sdsS3URI                  :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'S3DataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdsS3DataDistributionType' - If you want Amazon SageMaker to replicate the entire dataset on each ML compute instance that is launched for model training, specify @FullyReplicated@ .  If you want Amazon SageMaker to replicate a subset of data on each ML compute instance that is launched for model training, specify @ShardedByS3Key@ . If there are /n/ ML compute instances launched for a training job, each instance gets approximately 1//n/ of the number of S3 objects. In this case, model training on each machine uses only the subset of training data.  Don't choose more ML compute instances for training than available S3 objects. If you do, some nodes won't get any data and you will pay for nodes that aren't getting any training data. This applies in both FILE and PIPE modes. Keep this in mind when developing algorithms.  In distributed training, where you use multiple ML compute EC2 instances, you might choose @ShardedByS3Key@ . If the algorithm requires copying training data to the ML storage volume (when @TrainingInputMode@ is set to @File@ ), this copies 1//n/ of the number of objects.
---
--- * 'sdsS3DataType' - If you choose @S3Prefix@ , @S3Uri@ identifies a key name prefix. Amazon SageMaker uses all objects with the specified key name prefix for model training.  If you choose @ManifestFile@ , @S3Uri@ identifies an object that is a manifest file containing a list of object keys that you want Amazon SageMaker to use for model training.
---
--- * 'sdsS3URI' - Depending on the value specified for the @S3DataType@ , identifies either a key name prefix or a manifest. For example:      * A key name prefix might look like this: @s3://bucketname/exampleprefix@ .      * A manifest might look like this: @s3://bucketname/example.manifest@  The manifest is an S3 object which is a JSON file with the following format:  @[@  @{"prefix": "s3://customer_bucket/some/prefix/"},@  @"relative/path/to/custdata-1",@  @"relative/path/custdata-2",@  @...@  @]@  The preceding JSON matches the following @s3Uris@ :  @s3://customer_bucket/some/prefix/relative/path/to/custdata-1@  @s3://customer_bucket/some/prefix/relative/path/custdata-1@  @...@  The complete set of @s3uris@ in this manifest constitutes the input data for the channel for this datasource. The object that each @s3uris@ points to must readable by the IAM role that Amazon SageMaker uses to perform tasks on your behalf.
-s3DataSource
-    :: S3DataType -- ^ 'sdsS3DataType'
-    -> Text -- ^ 'sdsS3URI'
-    -> S3DataSource
-s3DataSource pS3DataType_ pS3URI_ =
-  S3DataSource'
-    { _sdsS3DataDistributionType = Nothing
-    , _sdsS3DataType = pS3DataType_
-    , _sdsS3URI = pS3URI_
-    }
-
-
--- | If you want Amazon SageMaker to replicate the entire dataset on each ML compute instance that is launched for model training, specify @FullyReplicated@ .  If you want Amazon SageMaker to replicate a subset of data on each ML compute instance that is launched for model training, specify @ShardedByS3Key@ . If there are /n/ ML compute instances launched for a training job, each instance gets approximately 1//n/ of the number of S3 objects. In this case, model training on each machine uses only the subset of training data.  Don't choose more ML compute instances for training than available S3 objects. If you do, some nodes won't get any data and you will pay for nodes that aren't getting any training data. This applies in both FILE and PIPE modes. Keep this in mind when developing algorithms.  In distributed training, where you use multiple ML compute EC2 instances, you might choose @ShardedByS3Key@ . If the algorithm requires copying training data to the ML storage volume (when @TrainingInputMode@ is set to @File@ ), this copies 1//n/ of the number of objects.
-sdsS3DataDistributionType :: Lens' S3DataSource (Maybe S3DataDistribution)
-sdsS3DataDistributionType = lens _sdsS3DataDistributionType (\ s a -> s{_sdsS3DataDistributionType = a})
-
--- | If you choose @S3Prefix@ , @S3Uri@ identifies a key name prefix. Amazon SageMaker uses all objects with the specified key name prefix for model training.  If you choose @ManifestFile@ , @S3Uri@ identifies an object that is a manifest file containing a list of object keys that you want Amazon SageMaker to use for model training.
-sdsS3DataType :: Lens' S3DataSource S3DataType
-sdsS3DataType = lens _sdsS3DataType (\ s a -> s{_sdsS3DataType = a})
-
--- | Depending on the value specified for the @S3DataType@ , identifies either a key name prefix or a manifest. For example:      * A key name prefix might look like this: @s3://bucketname/exampleprefix@ .      * A manifest might look like this: @s3://bucketname/example.manifest@  The manifest is an S3 object which is a JSON file with the following format:  @[@  @{"prefix": "s3://customer_bucket/some/prefix/"},@  @"relative/path/to/custdata-1",@  @"relative/path/custdata-2",@  @...@  @]@  The preceding JSON matches the following @s3Uris@ :  @s3://customer_bucket/some/prefix/relative/path/to/custdata-1@  @s3://customer_bucket/some/prefix/relative/path/custdata-1@  @...@  The complete set of @s3uris@ in this manifest constitutes the input data for the channel for this datasource. The object that each @s3uris@ points to must readable by the IAM role that Amazon SageMaker uses to perform tasks on your behalf.
-sdsS3URI :: Lens' S3DataSource Text
-sdsS3URI = lens _sdsS3URI (\ s a -> s{_sdsS3URI = a})
-
-instance FromJSON S3DataSource where
-        parseJSON
-          = withObject "S3DataSource"
-              (\ x ->
-                 S3DataSource' <$>
-                   (x .:? "S3DataDistributionType") <*>
-                     (x .: "S3DataType")
-                     <*> (x .: "S3Uri"))
-
-instance Hashable S3DataSource where
-
-instance NFData S3DataSource where
-
-instance ToJSON S3DataSource where
-        toJSON S3DataSource'{..}
-          = object
-              (catMaybes
-                 [("S3DataDistributionType" .=) <$>
-                    _sdsS3DataDistributionType,
-                  Just ("S3DataType" .= _sdsS3DataType),
-                  Just ("S3Uri" .= _sdsS3URI)])
-
--- | Specifies how long model training can run. When model training reaches the limit, Amazon SageMaker ends the training job. Use this API to cap model training cost.
---
---
--- To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@ signal, which delays job termination for120 seconds. Algorithms might use this 120-second window to save the model artifacts, so the results of training is not lost.
---
--- Training algorithms provided by Amazon SageMaker automatically saves the intermediate results of a model training job (it is best effort case, as model might not be ready to save as some stages, for example training just started). This intermediate data is a valid model artifact. You can use it to create a model (@CreateModel@ ).
---
---
--- /See:/ 'stoppingCondition' smart constructor.
-newtype StoppingCondition = StoppingCondition'
-  { _scMaxRuntimeInSeconds :: Maybe Nat
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StoppingCondition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scMaxRuntimeInSeconds' - The maximum length of time, in seconds, that the training job can run. If model training does not complete during this time, Amazon SageMaker ends the job. If value is not specified, default value is 1 day. Maximum value is 5 days.
-stoppingCondition
-    :: StoppingCondition
-stoppingCondition = StoppingCondition' {_scMaxRuntimeInSeconds = Nothing}
-
-
--- | The maximum length of time, in seconds, that the training job can run. If model training does not complete during this time, Amazon SageMaker ends the job. If value is not specified, default value is 1 day. Maximum value is 5 days.
-scMaxRuntimeInSeconds :: Lens' StoppingCondition (Maybe Natural)
-scMaxRuntimeInSeconds = lens _scMaxRuntimeInSeconds (\ s a -> s{_scMaxRuntimeInSeconds = a}) . mapping _Nat
-
-instance FromJSON StoppingCondition where
-        parseJSON
-          = withObject "StoppingCondition"
-              (\ x ->
-                 StoppingCondition' <$> (x .:? "MaxRuntimeInSeconds"))
-
-instance Hashable StoppingCondition where
-
-instance NFData StoppingCondition where
-
-instance ToJSON StoppingCondition where
-        toJSON StoppingCondition'{..}
-          = object
-              (catMaybes
-                 [("MaxRuntimeInSeconds" .=) <$>
-                    _scMaxRuntimeInSeconds])
-
--- | Describes a tag.
---
---
---
--- /See:/ 'tag' smart constructor.
-data Tag = Tag'
-  { _tagKey   :: !Text
-  , _tagValue :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Tag' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tagKey' - The tag key.
---
--- * 'tagValue' - The tag value.
-tag
-    :: Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagValue'
-    -> Tag
-tag pKey_ pValue_ = Tag' {_tagKey = pKey_, _tagValue = pValue_}
-
-
--- | The tag key.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\ s a -> s{_tagKey = a})
-
--- | The tag value.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\ s a -> s{_tagValue = a})
-
-instance FromJSON Tag where
-        parseJSON
-          = withObject "Tag"
-              (\ x -> Tag' <$> (x .: "Key") <*> (x .: "Value"))
-
-instance Hashable Tag where
-
-instance NFData Tag where
-
-instance ToJSON Tag where
-        toJSON Tag'{..}
-          = object
-              (catMaybes
-                 [Just ("Key" .= _tagKey),
-                  Just ("Value" .= _tagValue)])
-
--- | Provides summary information about a training job.
---
---
---
--- /See:/ 'trainingJobSummary' smart constructor.
-data TrainingJobSummary = TrainingJobSummary'
-  { _tjsTrainingEndTime   :: !(Maybe POSIX)
-  , _tjsLastModifiedTime  :: !(Maybe POSIX)
-  , _tjsTrainingJobName   :: !Text
-  , _tjsTrainingJobARN    :: !Text
-  , _tjsCreationTime      :: !POSIX
-  , _tjsTrainingJobStatus :: !TrainingJobStatus
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TrainingJobSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tjsTrainingEndTime' - A timestamp that shows when the training job ended. This field is set only if the training job has one of the terminal statuses (@Completed@ , @Failed@ , or @Stopped@ ).
---
--- * 'tjsLastModifiedTime' - Timestamp when the training job was last modified.
---
--- * 'tjsTrainingJobName' - The name of the training job that you want a summary for.
---
--- * 'tjsTrainingJobARN' - The Amazon Resource Name (ARN) of the training job.
---
--- * 'tjsCreationTime' - A timestamp that shows when the training job was created.
---
--- * 'tjsTrainingJobStatus' - The status of the training job.
-trainingJobSummary
-    :: Text -- ^ 'tjsTrainingJobName'
-    -> Text -- ^ 'tjsTrainingJobARN'
-    -> UTCTime -- ^ 'tjsCreationTime'
-    -> TrainingJobStatus -- ^ 'tjsTrainingJobStatus'
-    -> TrainingJobSummary
-trainingJobSummary pTrainingJobName_ pTrainingJobARN_ pCreationTime_ pTrainingJobStatus_ =
-  TrainingJobSummary'
-    { _tjsTrainingEndTime = Nothing
-    , _tjsLastModifiedTime = Nothing
-    , _tjsTrainingJobName = pTrainingJobName_
-    , _tjsTrainingJobARN = pTrainingJobARN_
-    , _tjsCreationTime = _Time # pCreationTime_
-    , _tjsTrainingJobStatus = pTrainingJobStatus_
-    }
-
-
--- | A timestamp that shows when the training job ended. This field is set only if the training job has one of the terminal statuses (@Completed@ , @Failed@ , or @Stopped@ ).
-tjsTrainingEndTime :: Lens' TrainingJobSummary (Maybe UTCTime)
-tjsTrainingEndTime = lens _tjsTrainingEndTime (\ s a -> s{_tjsTrainingEndTime = a}) . mapping _Time
-
--- | Timestamp when the training job was last modified.
-tjsLastModifiedTime :: Lens' TrainingJobSummary (Maybe UTCTime)
-tjsLastModifiedTime = lens _tjsLastModifiedTime (\ s a -> s{_tjsLastModifiedTime = a}) . mapping _Time
-
--- | The name of the training job that you want a summary for.
-tjsTrainingJobName :: Lens' TrainingJobSummary Text
-tjsTrainingJobName = lens _tjsTrainingJobName (\ s a -> s{_tjsTrainingJobName = a})
-
--- | The Amazon Resource Name (ARN) of the training job.
-tjsTrainingJobARN :: Lens' TrainingJobSummary Text
-tjsTrainingJobARN = lens _tjsTrainingJobARN (\ s a -> s{_tjsTrainingJobARN = a})
-
--- | A timestamp that shows when the training job was created.
-tjsCreationTime :: Lens' TrainingJobSummary UTCTime
-tjsCreationTime = lens _tjsCreationTime (\ s a -> s{_tjsCreationTime = a}) . _Time
-
--- | The status of the training job.
-tjsTrainingJobStatus :: Lens' TrainingJobSummary TrainingJobStatus
-tjsTrainingJobStatus = lens _tjsTrainingJobStatus (\ s a -> s{_tjsTrainingJobStatus = a})
-
-instance FromJSON TrainingJobSummary where
-        parseJSON
-          = withObject "TrainingJobSummary"
-              (\ x ->
-                 TrainingJobSummary' <$>
-                   (x .:? "TrainingEndTime") <*>
-                     (x .:? "LastModifiedTime")
-                     <*> (x .: "TrainingJobName")
-                     <*> (x .: "TrainingJobArn")
-                     <*> (x .: "CreationTime")
-                     <*> (x .: "TrainingJobStatus"))
-
-instance Hashable TrainingJobSummary where
-
-instance NFData TrainingJobSummary where
-
--- | Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC. For more information, see 'host-vpc' and 'train-vpc' .
---
---
---
--- /See:/ 'vpcConfig' smart constructor.
-data VPCConfig = VPCConfig'
-  { _vcSecurityGroupIds :: !(List1 Text)
-  , _vcSubnets          :: !(List1 Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VPCConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcSecurityGroupIds' - The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the @Subnets@ field.
---
--- * 'vcSubnets' - The ID of the subnets in the VPC to which you want to connect your training job or model.
-vpcConfig
-    :: NonEmpty Text -- ^ 'vcSecurityGroupIds'
-    -> NonEmpty Text -- ^ 'vcSubnets'
-    -> VPCConfig
-vpcConfig pSecurityGroupIds_ pSubnets_ =
-  VPCConfig'
-    { _vcSecurityGroupIds = _List1 # pSecurityGroupIds_
-    , _vcSubnets = _List1 # pSubnets_
-    }
-
-
--- | The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the @Subnets@ field.
-vcSecurityGroupIds :: Lens' VPCConfig (NonEmpty Text)
-vcSecurityGroupIds = lens _vcSecurityGroupIds (\ s a -> s{_vcSecurityGroupIds = a}) . _List1
-
--- | The ID of the subnets in the VPC to which you want to connect your training job or model.
-vcSubnets :: Lens' VPCConfig (NonEmpty Text)
-vcSubnets = lens _vcSubnets (\ s a -> s{_vcSubnets = a}) . _List1
-
-instance FromJSON VPCConfig where
-        parseJSON
-          = withObject "VPCConfig"
-              (\ x ->
-                 VPCConfig' <$>
-                   (x .: "SecurityGroupIds") <*> (x .: "Subnets"))
-
-instance Hashable VPCConfig where
-
-instance NFData VPCConfig where
-
-instance ToJSON VPCConfig where
-        toJSON VPCConfig'{..}
-          = object
-              (catMaybes
-                 [Just ("SecurityGroupIds" .= _vcSecurityGroupIds),
-                  Just ("Subnets" .= _vcSubnets)])
diff --git a/gen/Network/AWS/SageMaker/Types/Sum.hs b/gen/Network/AWS/SageMaker/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/Types/Sum.hs
+++ /dev/null
@@ -1,947 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.Types.Sum
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SageMaker.Types.Sum where
-
-import Network.AWS.Prelude
-
-data CompressionType
-  = CTGzip
-  | CTNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CompressionType where
-    parser = takeLowerText >>= \case
-        "gzip" -> pure CTGzip
-        "none" -> pure CTNone
-        e -> fromTextError $ "Failure parsing CompressionType from value: '" <> e
-           <> "'. Accepted values: gzip, none"
-
-instance ToText CompressionType where
-    toText = \case
-        CTGzip -> "Gzip"
-        CTNone -> "None"
-
-instance Hashable     CompressionType
-instance NFData       CompressionType
-instance ToByteString CompressionType
-instance ToQuery      CompressionType
-instance ToHeader     CompressionType
-
-instance ToJSON CompressionType where
-    toJSON = toJSONText
-
-instance FromJSON CompressionType where
-    parseJSON = parseJSONText "CompressionType"
-
-data DirectInternetAccess
-  = Disabled
-  | Enabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DirectInternetAccess where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure Disabled
-        "enabled" -> pure Enabled
-        e -> fromTextError $ "Failure parsing DirectInternetAccess from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText DirectInternetAccess where
-    toText = \case
-        Disabled -> "Disabled"
-        Enabled -> "Enabled"
-
-instance Hashable     DirectInternetAccess
-instance NFData       DirectInternetAccess
-instance ToByteString DirectInternetAccess
-instance ToQuery      DirectInternetAccess
-instance ToHeader     DirectInternetAccess
-
-instance ToJSON DirectInternetAccess where
-    toJSON = toJSONText
-
-instance FromJSON DirectInternetAccess where
-    parseJSON = parseJSONText "DirectInternetAccess"
-
-data EndpointConfigSortKey
-  = CreationTime
-  | Name
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText EndpointConfigSortKey where
-    parser = takeLowerText >>= \case
-        "creationtime" -> pure CreationTime
-        "name" -> pure Name
-        e -> fromTextError $ "Failure parsing EndpointConfigSortKey from value: '" <> e
-           <> "'. Accepted values: creationtime, name"
-
-instance ToText EndpointConfigSortKey where
-    toText = \case
-        CreationTime -> "CreationTime"
-        Name -> "Name"
-
-instance Hashable     EndpointConfigSortKey
-instance NFData       EndpointConfigSortKey
-instance ToByteString EndpointConfigSortKey
-instance ToQuery      EndpointConfigSortKey
-instance ToHeader     EndpointConfigSortKey
-
-instance ToJSON EndpointConfigSortKey where
-    toJSON = toJSONText
-
-data EndpointSortKey
-  = ESKCreationTime
-  | ESKName
-  | ESKStatus
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText EndpointSortKey where
-    parser = takeLowerText >>= \case
-        "creationtime" -> pure ESKCreationTime
-        "name" -> pure ESKName
-        "status" -> pure ESKStatus
-        e -> fromTextError $ "Failure parsing EndpointSortKey from value: '" <> e
-           <> "'. Accepted values: creationtime, name, status"
-
-instance ToText EndpointSortKey where
-    toText = \case
-        ESKCreationTime -> "CreationTime"
-        ESKName -> "Name"
-        ESKStatus -> "Status"
-
-instance Hashable     EndpointSortKey
-instance NFData       EndpointSortKey
-instance ToByteString EndpointSortKey
-instance ToQuery      EndpointSortKey
-instance ToHeader     EndpointSortKey
-
-instance ToJSON EndpointSortKey where
-    toJSON = toJSONText
-
-data EndpointStatus
-  = Creating
-  | Deleting
-  | Failed
-  | InService
-  | OutOfService
-  | RollingBack
-  | Updating
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText EndpointStatus where
-    parser = takeLowerText >>= \case
-        "creating" -> pure Creating
-        "deleting" -> pure Deleting
-        "failed" -> pure Failed
-        "inservice" -> pure InService
-        "outofservice" -> pure OutOfService
-        "rollingback" -> pure RollingBack
-        "updating" -> pure Updating
-        e -> fromTextError $ "Failure parsing EndpointStatus from value: '" <> e
-           <> "'. Accepted values: creating, deleting, failed, inservice, outofservice, rollingback, updating"
-
-instance ToText EndpointStatus where
-    toText = \case
-        Creating -> "Creating"
-        Deleting -> "Deleting"
-        Failed -> "Failed"
-        InService -> "InService"
-        OutOfService -> "OutOfService"
-        RollingBack -> "RollingBack"
-        Updating -> "Updating"
-
-instance Hashable     EndpointStatus
-instance NFData       EndpointStatus
-instance ToByteString EndpointStatus
-instance ToQuery      EndpointStatus
-instance ToHeader     EndpointStatus
-
-instance ToJSON EndpointStatus where
-    toJSON = toJSONText
-
-instance FromJSON EndpointStatus where
-    parseJSON = parseJSONText "EndpointStatus"
-
-data InstanceType
-  = Ml_M4_10XLarge
-  | Ml_M4_16XLarge
-  | Ml_M4_2XLarge
-  | Ml_M4_4XLarge
-  | Ml_M4_XLarge
-  | Ml_P2_16XLarge
-  | Ml_P2_8XLarge
-  | Ml_P2_XLarge
-  | Ml_P3_16XLarge
-  | Ml_P3_2XLarge
-  | Ml_P3_8XLarge
-  | Ml_T2_2XLarge
-  | Ml_T2_Large
-  | Ml_T2_Medium
-  | Ml_T2_XLarge
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText InstanceType where
-    parser = takeLowerText >>= \case
-        "ml.m4.10xlarge" -> pure Ml_M4_10XLarge
-        "ml.m4.16xlarge" -> pure Ml_M4_16XLarge
-        "ml.m4.2xlarge" -> pure Ml_M4_2XLarge
-        "ml.m4.4xlarge" -> pure Ml_M4_4XLarge
-        "ml.m4.xlarge" -> pure Ml_M4_XLarge
-        "ml.p2.16xlarge" -> pure Ml_P2_16XLarge
-        "ml.p2.8xlarge" -> pure Ml_P2_8XLarge
-        "ml.p2.xlarge" -> pure Ml_P2_XLarge
-        "ml.p3.16xlarge" -> pure Ml_P3_16XLarge
-        "ml.p3.2xlarge" -> pure Ml_P3_2XLarge
-        "ml.p3.8xlarge" -> pure Ml_P3_8XLarge
-        "ml.t2.2xlarge" -> pure Ml_T2_2XLarge
-        "ml.t2.large" -> pure Ml_T2_Large
-        "ml.t2.medium" -> pure Ml_T2_Medium
-        "ml.t2.xlarge" -> pure Ml_T2_XLarge
-        e -> fromTextError $ "Failure parsing InstanceType from value: '" <> e
-           <> "'. Accepted values: ml.m4.10xlarge, ml.m4.16xlarge, ml.m4.2xlarge, ml.m4.4xlarge, ml.m4.xlarge, ml.p2.16xlarge, ml.p2.8xlarge, ml.p2.xlarge, ml.p3.16xlarge, ml.p3.2xlarge, ml.p3.8xlarge, ml.t2.2xlarge, ml.t2.large, ml.t2.medium, ml.t2.xlarge"
-
-instance ToText InstanceType where
-    toText = \case
-        Ml_M4_10XLarge -> "ml.m4.10xlarge"
-        Ml_M4_16XLarge -> "ml.m4.16xlarge"
-        Ml_M4_2XLarge -> "ml.m4.2xlarge"
-        Ml_M4_4XLarge -> "ml.m4.4xlarge"
-        Ml_M4_XLarge -> "ml.m4.xlarge"
-        Ml_P2_16XLarge -> "ml.p2.16xlarge"
-        Ml_P2_8XLarge -> "ml.p2.8xlarge"
-        Ml_P2_XLarge -> "ml.p2.xlarge"
-        Ml_P3_16XLarge -> "ml.p3.16xlarge"
-        Ml_P3_2XLarge -> "ml.p3.2xlarge"
-        Ml_P3_8XLarge -> "ml.p3.8xlarge"
-        Ml_T2_2XLarge -> "ml.t2.2xlarge"
-        Ml_T2_Large -> "ml.t2.large"
-        Ml_T2_Medium -> "ml.t2.medium"
-        Ml_T2_XLarge -> "ml.t2.xlarge"
-
-instance Hashable     InstanceType
-instance NFData       InstanceType
-instance ToByteString InstanceType
-instance ToQuery      InstanceType
-instance ToHeader     InstanceType
-
-instance ToJSON InstanceType where
-    toJSON = toJSONText
-
-instance FromJSON InstanceType where
-    parseJSON = parseJSONText "InstanceType"
-
-data ModelSortKey
-  = MSKCreationTime
-  | MSKName
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ModelSortKey where
-    parser = takeLowerText >>= \case
-        "creationtime" -> pure MSKCreationTime
-        "name" -> pure MSKName
-        e -> fromTextError $ "Failure parsing ModelSortKey from value: '" <> e
-           <> "'. Accepted values: creationtime, name"
-
-instance ToText ModelSortKey where
-    toText = \case
-        MSKCreationTime -> "CreationTime"
-        MSKName -> "Name"
-
-instance Hashable     ModelSortKey
-instance NFData       ModelSortKey
-instance ToByteString ModelSortKey
-instance ToQuery      ModelSortKey
-instance ToHeader     ModelSortKey
-
-instance ToJSON ModelSortKey where
-    toJSON = toJSONText
-
-data NotebookInstanceLifecycleConfigSortKey
-  = NILCSKCreationTime
-  | NILCSKLastModifiedTime
-  | NILCSKName
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NotebookInstanceLifecycleConfigSortKey where
-    parser = takeLowerText >>= \case
-        "creationtime" -> pure NILCSKCreationTime
-        "lastmodifiedtime" -> pure NILCSKLastModifiedTime
-        "name" -> pure NILCSKName
-        e -> fromTextError $ "Failure parsing NotebookInstanceLifecycleConfigSortKey from value: '" <> e
-           <> "'. Accepted values: creationtime, lastmodifiedtime, name"
-
-instance ToText NotebookInstanceLifecycleConfigSortKey where
-    toText = \case
-        NILCSKCreationTime -> "CreationTime"
-        NILCSKLastModifiedTime -> "LastModifiedTime"
-        NILCSKName -> "Name"
-
-instance Hashable     NotebookInstanceLifecycleConfigSortKey
-instance NFData       NotebookInstanceLifecycleConfigSortKey
-instance ToByteString NotebookInstanceLifecycleConfigSortKey
-instance ToQuery      NotebookInstanceLifecycleConfigSortKey
-instance ToHeader     NotebookInstanceLifecycleConfigSortKey
-
-instance ToJSON NotebookInstanceLifecycleConfigSortKey where
-    toJSON = toJSONText
-
-data NotebookInstanceLifecycleConfigSortOrder
-  = NILCSOAscending
-  | NILCSODescending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NotebookInstanceLifecycleConfigSortOrder where
-    parser = takeLowerText >>= \case
-        "ascending" -> pure NILCSOAscending
-        "descending" -> pure NILCSODescending
-        e -> fromTextError $ "Failure parsing NotebookInstanceLifecycleConfigSortOrder from value: '" <> e
-           <> "'. Accepted values: ascending, descending"
-
-instance ToText NotebookInstanceLifecycleConfigSortOrder where
-    toText = \case
-        NILCSOAscending -> "Ascending"
-        NILCSODescending -> "Descending"
-
-instance Hashable     NotebookInstanceLifecycleConfigSortOrder
-instance NFData       NotebookInstanceLifecycleConfigSortOrder
-instance ToByteString NotebookInstanceLifecycleConfigSortOrder
-instance ToQuery      NotebookInstanceLifecycleConfigSortOrder
-instance ToHeader     NotebookInstanceLifecycleConfigSortOrder
-
-instance ToJSON NotebookInstanceLifecycleConfigSortOrder where
-    toJSON = toJSONText
-
-data NotebookInstanceSortKey
-  = NISKCreationTime
-  | NISKName
-  | NISKStatus
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NotebookInstanceSortKey where
-    parser = takeLowerText >>= \case
-        "creationtime" -> pure NISKCreationTime
-        "name" -> pure NISKName
-        "status" -> pure NISKStatus
-        e -> fromTextError $ "Failure parsing NotebookInstanceSortKey from value: '" <> e
-           <> "'. Accepted values: creationtime, name, status"
-
-instance ToText NotebookInstanceSortKey where
-    toText = \case
-        NISKCreationTime -> "CreationTime"
-        NISKName -> "Name"
-        NISKStatus -> "Status"
-
-instance Hashable     NotebookInstanceSortKey
-instance NFData       NotebookInstanceSortKey
-instance ToByteString NotebookInstanceSortKey
-instance ToQuery      NotebookInstanceSortKey
-instance ToHeader     NotebookInstanceSortKey
-
-instance ToJSON NotebookInstanceSortKey where
-    toJSON = toJSONText
-
-data NotebookInstanceSortOrder
-  = Ascending
-  | Descending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NotebookInstanceSortOrder where
-    parser = takeLowerText >>= \case
-        "ascending" -> pure Ascending
-        "descending" -> pure Descending
-        e -> fromTextError $ "Failure parsing NotebookInstanceSortOrder from value: '" <> e
-           <> "'. Accepted values: ascending, descending"
-
-instance ToText NotebookInstanceSortOrder where
-    toText = \case
-        Ascending -> "Ascending"
-        Descending -> "Descending"
-
-instance Hashable     NotebookInstanceSortOrder
-instance NFData       NotebookInstanceSortOrder
-instance ToByteString NotebookInstanceSortOrder
-instance ToQuery      NotebookInstanceSortOrder
-instance ToHeader     NotebookInstanceSortOrder
-
-instance ToJSON NotebookInstanceSortOrder where
-    toJSON = toJSONText
-
-data NotebookInstanceStatus
-  = NISDeleting
-  | NISFailed
-  | NISInService
-  | NISPending
-  | NISStopped
-  | NISStopping
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NotebookInstanceStatus where
-    parser = takeLowerText >>= \case
-        "deleting" -> pure NISDeleting
-        "failed" -> pure NISFailed
-        "inservice" -> pure NISInService
-        "pending" -> pure NISPending
-        "stopped" -> pure NISStopped
-        "stopping" -> pure NISStopping
-        e -> fromTextError $ "Failure parsing NotebookInstanceStatus from value: '" <> e
-           <> "'. Accepted values: deleting, failed, inservice, pending, stopped, stopping"
-
-instance ToText NotebookInstanceStatus where
-    toText = \case
-        NISDeleting -> "Deleting"
-        NISFailed -> "Failed"
-        NISInService -> "InService"
-        NISPending -> "Pending"
-        NISStopped -> "Stopped"
-        NISStopping -> "Stopping"
-
-instance Hashable     NotebookInstanceStatus
-instance NFData       NotebookInstanceStatus
-instance ToByteString NotebookInstanceStatus
-instance ToQuery      NotebookInstanceStatus
-instance ToHeader     NotebookInstanceStatus
-
-instance ToJSON NotebookInstanceStatus where
-    toJSON = toJSONText
-
-instance FromJSON NotebookInstanceStatus where
-    parseJSON = parseJSONText "NotebookInstanceStatus"
-
-data OrderKey
-  = OKAscending
-  | OKDescending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText OrderKey where
-    parser = takeLowerText >>= \case
-        "ascending" -> pure OKAscending
-        "descending" -> pure OKDescending
-        e -> fromTextError $ "Failure parsing OrderKey from value: '" <> e
-           <> "'. Accepted values: ascending, descending"
-
-instance ToText OrderKey where
-    toText = \case
-        OKAscending -> "Ascending"
-        OKDescending -> "Descending"
-
-instance Hashable     OrderKey
-instance NFData       OrderKey
-instance ToByteString OrderKey
-instance ToQuery      OrderKey
-instance ToHeader     OrderKey
-
-instance ToJSON OrderKey where
-    toJSON = toJSONText
-
-data ProductionVariantInstanceType
-  = PVITMl_C4_2XLarge
-  | PVITMl_C4_4XLarge
-  | PVITMl_C4_8XLarge
-  | PVITMl_C4_Large
-  | PVITMl_C4_XLarge
-  | PVITMl_C5_18XLarge
-  | PVITMl_C5_2XLarge
-  | PVITMl_C5_4XLarge
-  | PVITMl_C5_9XLarge
-  | PVITMl_C5_Large
-  | PVITMl_C5_XLarge
-  | PVITMl_M4_10XLarge
-  | PVITMl_M4_16XLarge
-  | PVITMl_M4_2XLarge
-  | PVITMl_M4_4XLarge
-  | PVITMl_M4_XLarge
-  | PVITMl_M5_12XLarge
-  | PVITMl_M5_24XLarge
-  | PVITMl_M5_2XLarge
-  | PVITMl_M5_4XLarge
-  | PVITMl_M5_Large
-  | PVITMl_M5_XLarge
-  | PVITMl_P2_16XLarge
-  | PVITMl_P2_8XLarge
-  | PVITMl_P2_XLarge
-  | PVITMl_P3_16XLarge
-  | PVITMl_P3_2XLarge
-  | PVITMl_P3_8XLarge
-  | PVITMl_T2_2XLarge
-  | PVITMl_T2_Large
-  | PVITMl_T2_Medium
-  | PVITMl_T2_XLarge
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ProductionVariantInstanceType where
-    parser = takeLowerText >>= \case
-        "ml.c4.2xlarge" -> pure PVITMl_C4_2XLarge
-        "ml.c4.4xlarge" -> pure PVITMl_C4_4XLarge
-        "ml.c4.8xlarge" -> pure PVITMl_C4_8XLarge
-        "ml.c4.large" -> pure PVITMl_C4_Large
-        "ml.c4.xlarge" -> pure PVITMl_C4_XLarge
-        "ml.c5.18xlarge" -> pure PVITMl_C5_18XLarge
-        "ml.c5.2xlarge" -> pure PVITMl_C5_2XLarge
-        "ml.c5.4xlarge" -> pure PVITMl_C5_4XLarge
-        "ml.c5.9xlarge" -> pure PVITMl_C5_9XLarge
-        "ml.c5.large" -> pure PVITMl_C5_Large
-        "ml.c5.xlarge" -> pure PVITMl_C5_XLarge
-        "ml.m4.10xlarge" -> pure PVITMl_M4_10XLarge
-        "ml.m4.16xlarge" -> pure PVITMl_M4_16XLarge
-        "ml.m4.2xlarge" -> pure PVITMl_M4_2XLarge
-        "ml.m4.4xlarge" -> pure PVITMl_M4_4XLarge
-        "ml.m4.xlarge" -> pure PVITMl_M4_XLarge
-        "ml.m5.12xlarge" -> pure PVITMl_M5_12XLarge
-        "ml.m5.24xlarge" -> pure PVITMl_M5_24XLarge
-        "ml.m5.2xlarge" -> pure PVITMl_M5_2XLarge
-        "ml.m5.4xlarge" -> pure PVITMl_M5_4XLarge
-        "ml.m5.large" -> pure PVITMl_M5_Large
-        "ml.m5.xlarge" -> pure PVITMl_M5_XLarge
-        "ml.p2.16xlarge" -> pure PVITMl_P2_16XLarge
-        "ml.p2.8xlarge" -> pure PVITMl_P2_8XLarge
-        "ml.p2.xlarge" -> pure PVITMl_P2_XLarge
-        "ml.p3.16xlarge" -> pure PVITMl_P3_16XLarge
-        "ml.p3.2xlarge" -> pure PVITMl_P3_2XLarge
-        "ml.p3.8xlarge" -> pure PVITMl_P3_8XLarge
-        "ml.t2.2xlarge" -> pure PVITMl_T2_2XLarge
-        "ml.t2.large" -> pure PVITMl_T2_Large
-        "ml.t2.medium" -> pure PVITMl_T2_Medium
-        "ml.t2.xlarge" -> pure PVITMl_T2_XLarge
-        e -> fromTextError $ "Failure parsing ProductionVariantInstanceType from value: '" <> e
-           <> "'. Accepted values: ml.c4.2xlarge, ml.c4.4xlarge, ml.c4.8xlarge, ml.c4.large, ml.c4.xlarge, ml.c5.18xlarge, ml.c5.2xlarge, ml.c5.4xlarge, ml.c5.9xlarge, ml.c5.large, ml.c5.xlarge, ml.m4.10xlarge, ml.m4.16xlarge, ml.m4.2xlarge, ml.m4.4xlarge, ml.m4.xlarge, ml.m5.12xlarge, ml.m5.24xlarge, ml.m5.2xlarge, ml.m5.4xlarge, ml.m5.large, ml.m5.xlarge, ml.p2.16xlarge, ml.p2.8xlarge, ml.p2.xlarge, ml.p3.16xlarge, ml.p3.2xlarge, ml.p3.8xlarge, ml.t2.2xlarge, ml.t2.large, ml.t2.medium, ml.t2.xlarge"
-
-instance ToText ProductionVariantInstanceType where
-    toText = \case
-        PVITMl_C4_2XLarge -> "ml.c4.2xlarge"
-        PVITMl_C4_4XLarge -> "ml.c4.4xlarge"
-        PVITMl_C4_8XLarge -> "ml.c4.8xlarge"
-        PVITMl_C4_Large -> "ml.c4.large"
-        PVITMl_C4_XLarge -> "ml.c4.xlarge"
-        PVITMl_C5_18XLarge -> "ml.c5.18xlarge"
-        PVITMl_C5_2XLarge -> "ml.c5.2xlarge"
-        PVITMl_C5_4XLarge -> "ml.c5.4xlarge"
-        PVITMl_C5_9XLarge -> "ml.c5.9xlarge"
-        PVITMl_C5_Large -> "ml.c5.large"
-        PVITMl_C5_XLarge -> "ml.c5.xlarge"
-        PVITMl_M4_10XLarge -> "ml.m4.10xlarge"
-        PVITMl_M4_16XLarge -> "ml.m4.16xlarge"
-        PVITMl_M4_2XLarge -> "ml.m4.2xlarge"
-        PVITMl_M4_4XLarge -> "ml.m4.4xlarge"
-        PVITMl_M4_XLarge -> "ml.m4.xlarge"
-        PVITMl_M5_12XLarge -> "ml.m5.12xlarge"
-        PVITMl_M5_24XLarge -> "ml.m5.24xlarge"
-        PVITMl_M5_2XLarge -> "ml.m5.2xlarge"
-        PVITMl_M5_4XLarge -> "ml.m5.4xlarge"
-        PVITMl_M5_Large -> "ml.m5.large"
-        PVITMl_M5_XLarge -> "ml.m5.xlarge"
-        PVITMl_P2_16XLarge -> "ml.p2.16xlarge"
-        PVITMl_P2_8XLarge -> "ml.p2.8xlarge"
-        PVITMl_P2_XLarge -> "ml.p2.xlarge"
-        PVITMl_P3_16XLarge -> "ml.p3.16xlarge"
-        PVITMl_P3_2XLarge -> "ml.p3.2xlarge"
-        PVITMl_P3_8XLarge -> "ml.p3.8xlarge"
-        PVITMl_T2_2XLarge -> "ml.t2.2xlarge"
-        PVITMl_T2_Large -> "ml.t2.large"
-        PVITMl_T2_Medium -> "ml.t2.medium"
-        PVITMl_T2_XLarge -> "ml.t2.xlarge"
-
-instance Hashable     ProductionVariantInstanceType
-instance NFData       ProductionVariantInstanceType
-instance ToByteString ProductionVariantInstanceType
-instance ToQuery      ProductionVariantInstanceType
-instance ToHeader     ProductionVariantInstanceType
-
-instance ToJSON ProductionVariantInstanceType where
-    toJSON = toJSONText
-
-instance FromJSON ProductionVariantInstanceType where
-    parseJSON = parseJSONText "ProductionVariantInstanceType"
-
-data RecordWrapper
-  = None
-  | RecordIO
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText RecordWrapper where
-    parser = takeLowerText >>= \case
-        "none" -> pure None
-        "recordio" -> pure RecordIO
-        e -> fromTextError $ "Failure parsing RecordWrapper from value: '" <> e
-           <> "'. Accepted values: none, recordio"
-
-instance ToText RecordWrapper where
-    toText = \case
-        None -> "None"
-        RecordIO -> "RecordIO"
-
-instance Hashable     RecordWrapper
-instance NFData       RecordWrapper
-instance ToByteString RecordWrapper
-instance ToQuery      RecordWrapper
-instance ToHeader     RecordWrapper
-
-instance ToJSON RecordWrapper where
-    toJSON = toJSONText
-
-instance FromJSON RecordWrapper where
-    parseJSON = parseJSONText "RecordWrapper"
-
-data S3DataDistribution
-  = FullyReplicated
-  | ShardedByS3Key
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText S3DataDistribution where
-    parser = takeLowerText >>= \case
-        "fullyreplicated" -> pure FullyReplicated
-        "shardedbys3key" -> pure ShardedByS3Key
-        e -> fromTextError $ "Failure parsing S3DataDistribution from value: '" <> e
-           <> "'. Accepted values: fullyreplicated, shardedbys3key"
-
-instance ToText S3DataDistribution where
-    toText = \case
-        FullyReplicated -> "FullyReplicated"
-        ShardedByS3Key -> "ShardedByS3Key"
-
-instance Hashable     S3DataDistribution
-instance NFData       S3DataDistribution
-instance ToByteString S3DataDistribution
-instance ToQuery      S3DataDistribution
-instance ToHeader     S3DataDistribution
-
-instance ToJSON S3DataDistribution where
-    toJSON = toJSONText
-
-instance FromJSON S3DataDistribution where
-    parseJSON = parseJSONText "S3DataDistribution"
-
-data S3DataType
-  = ManifestFile
-  | S3Prefix
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText S3DataType where
-    parser = takeLowerText >>= \case
-        "manifestfile" -> pure ManifestFile
-        "s3prefix" -> pure S3Prefix
-        e -> fromTextError $ "Failure parsing S3DataType from value: '" <> e
-           <> "'. Accepted values: manifestfile, s3prefix"
-
-instance ToText S3DataType where
-    toText = \case
-        ManifestFile -> "ManifestFile"
-        S3Prefix -> "S3Prefix"
-
-instance Hashable     S3DataType
-instance NFData       S3DataType
-instance ToByteString S3DataType
-instance ToQuery      S3DataType
-instance ToHeader     S3DataType
-
-instance ToJSON S3DataType where
-    toJSON = toJSONText
-
-instance FromJSON S3DataType where
-    parseJSON = parseJSONText "S3DataType"
-
-data SecondaryStatus
-  = SSCompleted
-  | SSDownloading
-  | SSFailed
-  | SSMaxRuntimeExceeded
-  | SSStarting
-  | SSStopped
-  | SSStopping
-  | SSTraining
-  | SSUploading
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SecondaryStatus where
-    parser = takeLowerText >>= \case
-        "completed" -> pure SSCompleted
-        "downloading" -> pure SSDownloading
-        "failed" -> pure SSFailed
-        "maxruntimeexceeded" -> pure SSMaxRuntimeExceeded
-        "starting" -> pure SSStarting
-        "stopped" -> pure SSStopped
-        "stopping" -> pure SSStopping
-        "training" -> pure SSTraining
-        "uploading" -> pure SSUploading
-        e -> fromTextError $ "Failure parsing SecondaryStatus from value: '" <> e
-           <> "'. Accepted values: completed, downloading, failed, maxruntimeexceeded, starting, stopped, stopping, training, uploading"
-
-instance ToText SecondaryStatus where
-    toText = \case
-        SSCompleted -> "Completed"
-        SSDownloading -> "Downloading"
-        SSFailed -> "Failed"
-        SSMaxRuntimeExceeded -> "MaxRuntimeExceeded"
-        SSStarting -> "Starting"
-        SSStopped -> "Stopped"
-        SSStopping -> "Stopping"
-        SSTraining -> "Training"
-        SSUploading -> "Uploading"
-
-instance Hashable     SecondaryStatus
-instance NFData       SecondaryStatus
-instance ToByteString SecondaryStatus
-instance ToQuery      SecondaryStatus
-instance ToHeader     SecondaryStatus
-
-instance FromJSON SecondaryStatus where
-    parseJSON = parseJSONText "SecondaryStatus"
-
-data SortBy
-  = SBCreationTime
-  | SBName
-  | SBStatus
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SortBy where
-    parser = takeLowerText >>= \case
-        "creationtime" -> pure SBCreationTime
-        "name" -> pure SBName
-        "status" -> pure SBStatus
-        e -> fromTextError $ "Failure parsing SortBy from value: '" <> e
-           <> "'. Accepted values: creationtime, name, status"
-
-instance ToText SortBy where
-    toText = \case
-        SBCreationTime -> "CreationTime"
-        SBName -> "Name"
-        SBStatus -> "Status"
-
-instance Hashable     SortBy
-instance NFData       SortBy
-instance ToByteString SortBy
-instance ToQuery      SortBy
-instance ToHeader     SortBy
-
-instance ToJSON SortBy where
-    toJSON = toJSONText
-
-data SortOrder
-  = SOAscending
-  | SODescending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SortOrder where
-    parser = takeLowerText >>= \case
-        "ascending" -> pure SOAscending
-        "descending" -> pure SODescending
-        e -> fromTextError $ "Failure parsing SortOrder from value: '" <> e
-           <> "'. Accepted values: ascending, descending"
-
-instance ToText SortOrder where
-    toText = \case
-        SOAscending -> "Ascending"
-        SODescending -> "Descending"
-
-instance Hashable     SortOrder
-instance NFData       SortOrder
-instance ToByteString SortOrder
-instance ToQuery      SortOrder
-instance ToHeader     SortOrder
-
-instance ToJSON SortOrder where
-    toJSON = toJSONText
-
-data TrainingInputMode
-  = File
-  | Pipe
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TrainingInputMode where
-    parser = takeLowerText >>= \case
-        "file" -> pure File
-        "pipe" -> pure Pipe
-        e -> fromTextError $ "Failure parsing TrainingInputMode from value: '" <> e
-           <> "'. Accepted values: file, pipe"
-
-instance ToText TrainingInputMode where
-    toText = \case
-        File -> "File"
-        Pipe -> "Pipe"
-
-instance Hashable     TrainingInputMode
-instance NFData       TrainingInputMode
-instance ToByteString TrainingInputMode
-instance ToQuery      TrainingInputMode
-instance ToHeader     TrainingInputMode
-
-instance ToJSON TrainingInputMode where
-    toJSON = toJSONText
-
-instance FromJSON TrainingInputMode where
-    parseJSON = parseJSONText "TrainingInputMode"
-
-data TrainingInstanceType
-  = TITMl_C4_2XLarge
-  | TITMl_C4_4XLarge
-  | TITMl_C4_8XLarge
-  | TITMl_C4_XLarge
-  | TITMl_C5_18XLarge
-  | TITMl_C5_2XLarge
-  | TITMl_C5_4XLarge
-  | TITMl_C5_9XLarge
-  | TITMl_C5_XLarge
-  | TITMl_M4_10XLarge
-  | TITMl_M4_16XLarge
-  | TITMl_M4_2XLarge
-  | TITMl_M4_4XLarge
-  | TITMl_M4_XLarge
-  | TITMl_M5_12XLarge
-  | TITMl_M5_24XLarge
-  | TITMl_M5_2XLarge
-  | TITMl_M5_4XLarge
-  | TITMl_M5_Large
-  | TITMl_M5_XLarge
-  | TITMl_P2_16XLarge
-  | TITMl_P2_8XLarge
-  | TITMl_P2_XLarge
-  | TITMl_P3_16XLarge
-  | TITMl_P3_2XLarge
-  | TITMl_P3_8XLarge
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TrainingInstanceType where
-    parser = takeLowerText >>= \case
-        "ml.c4.2xlarge" -> pure TITMl_C4_2XLarge
-        "ml.c4.4xlarge" -> pure TITMl_C4_4XLarge
-        "ml.c4.8xlarge" -> pure TITMl_C4_8XLarge
-        "ml.c4.xlarge" -> pure TITMl_C4_XLarge
-        "ml.c5.18xlarge" -> pure TITMl_C5_18XLarge
-        "ml.c5.2xlarge" -> pure TITMl_C5_2XLarge
-        "ml.c5.4xlarge" -> pure TITMl_C5_4XLarge
-        "ml.c5.9xlarge" -> pure TITMl_C5_9XLarge
-        "ml.c5.xlarge" -> pure TITMl_C5_XLarge
-        "ml.m4.10xlarge" -> pure TITMl_M4_10XLarge
-        "ml.m4.16xlarge" -> pure TITMl_M4_16XLarge
-        "ml.m4.2xlarge" -> pure TITMl_M4_2XLarge
-        "ml.m4.4xlarge" -> pure TITMl_M4_4XLarge
-        "ml.m4.xlarge" -> pure TITMl_M4_XLarge
-        "ml.m5.12xlarge" -> pure TITMl_M5_12XLarge
-        "ml.m5.24xlarge" -> pure TITMl_M5_24XLarge
-        "ml.m5.2xlarge" -> pure TITMl_M5_2XLarge
-        "ml.m5.4xlarge" -> pure TITMl_M5_4XLarge
-        "ml.m5.large" -> pure TITMl_M5_Large
-        "ml.m5.xlarge" -> pure TITMl_M5_XLarge
-        "ml.p2.16xlarge" -> pure TITMl_P2_16XLarge
-        "ml.p2.8xlarge" -> pure TITMl_P2_8XLarge
-        "ml.p2.xlarge" -> pure TITMl_P2_XLarge
-        "ml.p3.16xlarge" -> pure TITMl_P3_16XLarge
-        "ml.p3.2xlarge" -> pure TITMl_P3_2XLarge
-        "ml.p3.8xlarge" -> pure TITMl_P3_8XLarge
-        e -> fromTextError $ "Failure parsing TrainingInstanceType from value: '" <> e
-           <> "'. Accepted values: ml.c4.2xlarge, ml.c4.4xlarge, ml.c4.8xlarge, ml.c4.xlarge, ml.c5.18xlarge, ml.c5.2xlarge, ml.c5.4xlarge, ml.c5.9xlarge, ml.c5.xlarge, ml.m4.10xlarge, ml.m4.16xlarge, ml.m4.2xlarge, ml.m4.4xlarge, ml.m4.xlarge, ml.m5.12xlarge, ml.m5.24xlarge, ml.m5.2xlarge, ml.m5.4xlarge, ml.m5.large, ml.m5.xlarge, ml.p2.16xlarge, ml.p2.8xlarge, ml.p2.xlarge, ml.p3.16xlarge, ml.p3.2xlarge, ml.p3.8xlarge"
-
-instance ToText TrainingInstanceType where
-    toText = \case
-        TITMl_C4_2XLarge -> "ml.c4.2xlarge"
-        TITMl_C4_4XLarge -> "ml.c4.4xlarge"
-        TITMl_C4_8XLarge -> "ml.c4.8xlarge"
-        TITMl_C4_XLarge -> "ml.c4.xlarge"
-        TITMl_C5_18XLarge -> "ml.c5.18xlarge"
-        TITMl_C5_2XLarge -> "ml.c5.2xlarge"
-        TITMl_C5_4XLarge -> "ml.c5.4xlarge"
-        TITMl_C5_9XLarge -> "ml.c5.9xlarge"
-        TITMl_C5_XLarge -> "ml.c5.xlarge"
-        TITMl_M4_10XLarge -> "ml.m4.10xlarge"
-        TITMl_M4_16XLarge -> "ml.m4.16xlarge"
-        TITMl_M4_2XLarge -> "ml.m4.2xlarge"
-        TITMl_M4_4XLarge -> "ml.m4.4xlarge"
-        TITMl_M4_XLarge -> "ml.m4.xlarge"
-        TITMl_M5_12XLarge -> "ml.m5.12xlarge"
-        TITMl_M5_24XLarge -> "ml.m5.24xlarge"
-        TITMl_M5_2XLarge -> "ml.m5.2xlarge"
-        TITMl_M5_4XLarge -> "ml.m5.4xlarge"
-        TITMl_M5_Large -> "ml.m5.large"
-        TITMl_M5_XLarge -> "ml.m5.xlarge"
-        TITMl_P2_16XLarge -> "ml.p2.16xlarge"
-        TITMl_P2_8XLarge -> "ml.p2.8xlarge"
-        TITMl_P2_XLarge -> "ml.p2.xlarge"
-        TITMl_P3_16XLarge -> "ml.p3.16xlarge"
-        TITMl_P3_2XLarge -> "ml.p3.2xlarge"
-        TITMl_P3_8XLarge -> "ml.p3.8xlarge"
-
-instance Hashable     TrainingInstanceType
-instance NFData       TrainingInstanceType
-instance ToByteString TrainingInstanceType
-instance ToQuery      TrainingInstanceType
-instance ToHeader     TrainingInstanceType
-
-instance ToJSON TrainingInstanceType where
-    toJSON = toJSONText
-
-instance FromJSON TrainingInstanceType where
-    parseJSON = parseJSONText "TrainingInstanceType"
-
-data TrainingJobStatus
-  = TJSCompleted
-  | TJSFailed
-  | TJSInProgress
-  | TJSStopped
-  | TJSStopping
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TrainingJobStatus where
-    parser = takeLowerText >>= \case
-        "completed" -> pure TJSCompleted
-        "failed" -> pure TJSFailed
-        "inprogress" -> pure TJSInProgress
-        "stopped" -> pure TJSStopped
-        "stopping" -> pure TJSStopping
-        e -> fromTextError $ "Failure parsing TrainingJobStatus from value: '" <> e
-           <> "'. Accepted values: completed, failed, inprogress, stopped, stopping"
-
-instance ToText TrainingJobStatus where
-    toText = \case
-        TJSCompleted -> "Completed"
-        TJSFailed -> "Failed"
-        TJSInProgress -> "InProgress"
-        TJSStopped -> "Stopped"
-        TJSStopping -> "Stopping"
-
-instance Hashable     TrainingJobStatus
-instance NFData       TrainingJobStatus
-instance ToByteString TrainingJobStatus
-instance ToQuery      TrainingJobStatus
-instance ToHeader     TrainingJobStatus
-
-instance ToJSON TrainingJobStatus where
-    toJSON = toJSONText
-
-instance FromJSON TrainingJobStatus where
-    parseJSON = parseJSONText "TrainingJobStatus"
diff --git a/gen/Network/AWS/SageMaker/UpdateEndpoint.hs b/gen/Network/AWS/SageMaker/UpdateEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/UpdateEndpoint.hs
+++ /dev/null
@@ -1,150 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.UpdateEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deploys the new @EndpointConfig@ specified in the request, switches to using newly created endpoint, and then deletes resources provisioned for the endpoint using the previous @EndpointConfig@ (there is no availability loss).
---
---
--- When Amazon SageMaker receives the request, it sets the endpoint status to @Updating@ . After updating the endpoint, it sets the status to @InService@ . To check the status of an endpoint, use the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html DescribeEndpoint> API.
---
-module Network.AWS.SageMaker.UpdateEndpoint
-    (
-    -- * Creating a Request
-      updateEndpoint
-    , UpdateEndpoint
-    -- * Request Lenses
-    , ueEndpointName
-    , ueEndpointConfigName
-
-    -- * Destructuring the Response
-    , updateEndpointResponse
-    , UpdateEndpointResponse
-    -- * Response Lenses
-    , uersResponseStatus
-    , uersEndpointARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'updateEndpoint' smart constructor.
-data UpdateEndpoint = UpdateEndpoint'
-  { _ueEndpointName       :: !Text
-  , _ueEndpointConfigName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ueEndpointName' - The name of the endpoint whose configuration you want to update.
---
--- * 'ueEndpointConfigName' - The name of the new endpoint configuration.
-updateEndpoint
-    :: Text -- ^ 'ueEndpointName'
-    -> Text -- ^ 'ueEndpointConfigName'
-    -> UpdateEndpoint
-updateEndpoint pEndpointName_ pEndpointConfigName_ =
-  UpdateEndpoint'
-    { _ueEndpointName = pEndpointName_
-    , _ueEndpointConfigName = pEndpointConfigName_
-    }
-
-
--- | The name of the endpoint whose configuration you want to update.
-ueEndpointName :: Lens' UpdateEndpoint Text
-ueEndpointName = lens _ueEndpointName (\ s a -> s{_ueEndpointName = a})
-
--- | The name of the new endpoint configuration.
-ueEndpointConfigName :: Lens' UpdateEndpoint Text
-ueEndpointConfigName = lens _ueEndpointConfigName (\ s a -> s{_ueEndpointConfigName = a})
-
-instance AWSRequest UpdateEndpoint where
-        type Rs UpdateEndpoint = UpdateEndpointResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateEndpointResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "EndpointArn"))
-
-instance Hashable UpdateEndpoint where
-
-instance NFData UpdateEndpoint where
-
-instance ToHeaders UpdateEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.UpdateEndpoint" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateEndpoint where
-        toJSON UpdateEndpoint'{..}
-          = object
-              (catMaybes
-                 [Just ("EndpointName" .= _ueEndpointName),
-                  Just
-                    ("EndpointConfigName" .= _ueEndpointConfigName)])
-
-instance ToPath UpdateEndpoint where
-        toPath = const "/"
-
-instance ToQuery UpdateEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'updateEndpointResponse' smart constructor.
-data UpdateEndpointResponse = UpdateEndpointResponse'
-  { _uersResponseStatus :: !Int
-  , _uersEndpointARN    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uersResponseStatus' - -- | The response status code.
---
--- * 'uersEndpointARN' - The Amazon Resource Name (ARN) of the endpoint.
-updateEndpointResponse
-    :: Int -- ^ 'uersResponseStatus'
-    -> Text -- ^ 'uersEndpointARN'
-    -> UpdateEndpointResponse
-updateEndpointResponse pResponseStatus_ pEndpointARN_ =
-  UpdateEndpointResponse'
-    {_uersResponseStatus = pResponseStatus_, _uersEndpointARN = pEndpointARN_}
-
-
--- | -- | The response status code.
-uersResponseStatus :: Lens' UpdateEndpointResponse Int
-uersResponseStatus = lens _uersResponseStatus (\ s a -> s{_uersResponseStatus = a})
-
--- | The Amazon Resource Name (ARN) of the endpoint.
-uersEndpointARN :: Lens' UpdateEndpointResponse Text
-uersEndpointARN = lens _uersEndpointARN (\ s a -> s{_uersEndpointARN = a})
-
-instance NFData UpdateEndpointResponse where
diff --git a/gen/Network/AWS/SageMaker/UpdateEndpointWeightsAndCapacities.hs b/gen/Network/AWS/SageMaker/UpdateEndpointWeightsAndCapacities.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/UpdateEndpointWeightsAndCapacities.hs
+++ /dev/null
@@ -1,163 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.UpdateEndpointWeightsAndCapacities
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates variant weight of one or more variants associated with an existing endpoint, or capacity of one variant associated with an existing endpoint. When it receives the request, Amazon SageMaker sets the endpoint status to @Updating@ . After updating the endpoint, it sets the status to @InService@ . To check the status of an endpoint, use the <http://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html DescribeEndpoint> API.
---
---
-module Network.AWS.SageMaker.UpdateEndpointWeightsAndCapacities
-    (
-    -- * Creating a Request
-      updateEndpointWeightsAndCapacities
-    , UpdateEndpointWeightsAndCapacities
-    -- * Request Lenses
-    , uewacEndpointName
-    , uewacDesiredWeightsAndCapacities
-
-    -- * Destructuring the Response
-    , updateEndpointWeightsAndCapacitiesResponse
-    , UpdateEndpointWeightsAndCapacitiesResponse
-    -- * Response Lenses
-    , uewacrsResponseStatus
-    , uewacrsEndpointARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'updateEndpointWeightsAndCapacities' smart constructor.
-data UpdateEndpointWeightsAndCapacities = UpdateEndpointWeightsAndCapacities'
-  { _uewacEndpointName                :: !Text
-  , _uewacDesiredWeightsAndCapacities :: !(List1 DesiredWeightAndCapacity)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateEndpointWeightsAndCapacities' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uewacEndpointName' - The name of an existing Amazon SageMaker endpoint.
---
--- * 'uewacDesiredWeightsAndCapacities' - An object that provides new capacity and weight values for a variant.
-updateEndpointWeightsAndCapacities
-    :: Text -- ^ 'uewacEndpointName'
-    -> NonEmpty DesiredWeightAndCapacity -- ^ 'uewacDesiredWeightsAndCapacities'
-    -> UpdateEndpointWeightsAndCapacities
-updateEndpointWeightsAndCapacities pEndpointName_ pDesiredWeightsAndCapacities_ =
-  UpdateEndpointWeightsAndCapacities'
-    { _uewacEndpointName = pEndpointName_
-    , _uewacDesiredWeightsAndCapacities = _List1 # pDesiredWeightsAndCapacities_
-    }
-
-
--- | The name of an existing Amazon SageMaker endpoint.
-uewacEndpointName :: Lens' UpdateEndpointWeightsAndCapacities Text
-uewacEndpointName = lens _uewacEndpointName (\ s a -> s{_uewacEndpointName = a})
-
--- | An object that provides new capacity and weight values for a variant.
-uewacDesiredWeightsAndCapacities :: Lens' UpdateEndpointWeightsAndCapacities (NonEmpty DesiredWeightAndCapacity)
-uewacDesiredWeightsAndCapacities = lens _uewacDesiredWeightsAndCapacities (\ s a -> s{_uewacDesiredWeightsAndCapacities = a}) . _List1
-
-instance AWSRequest
-           UpdateEndpointWeightsAndCapacities
-         where
-        type Rs UpdateEndpointWeightsAndCapacities =
-             UpdateEndpointWeightsAndCapacitiesResponse
-        request = postJSON sageMaker
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateEndpointWeightsAndCapacitiesResponse' <$>
-                   (pure (fromEnum s)) <*> (x .:> "EndpointArn"))
-
-instance Hashable UpdateEndpointWeightsAndCapacities
-         where
-
-instance NFData UpdateEndpointWeightsAndCapacities
-         where
-
-instance ToHeaders UpdateEndpointWeightsAndCapacities
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.UpdateEndpointWeightsAndCapacities" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateEndpointWeightsAndCapacities
-         where
-        toJSON UpdateEndpointWeightsAndCapacities'{..}
-          = object
-              (catMaybes
-                 [Just ("EndpointName" .= _uewacEndpointName),
-                  Just
-                    ("DesiredWeightsAndCapacities" .=
-                       _uewacDesiredWeightsAndCapacities)])
-
-instance ToPath UpdateEndpointWeightsAndCapacities
-         where
-        toPath = const "/"
-
-instance ToQuery UpdateEndpointWeightsAndCapacities
-         where
-        toQuery = const mempty
-
--- | /See:/ 'updateEndpointWeightsAndCapacitiesResponse' smart constructor.
-data UpdateEndpointWeightsAndCapacitiesResponse = UpdateEndpointWeightsAndCapacitiesResponse'
-  { _uewacrsResponseStatus :: !Int
-  , _uewacrsEndpointARN    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateEndpointWeightsAndCapacitiesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uewacrsResponseStatus' - -- | The response status code.
---
--- * 'uewacrsEndpointARN' - The Amazon Resource Name (ARN) of the updated endpoint.
-updateEndpointWeightsAndCapacitiesResponse
-    :: Int -- ^ 'uewacrsResponseStatus'
-    -> Text -- ^ 'uewacrsEndpointARN'
-    -> UpdateEndpointWeightsAndCapacitiesResponse
-updateEndpointWeightsAndCapacitiesResponse pResponseStatus_ pEndpointARN_ =
-  UpdateEndpointWeightsAndCapacitiesResponse'
-    { _uewacrsResponseStatus = pResponseStatus_
-    , _uewacrsEndpointARN = pEndpointARN_
-    }
-
-
--- | -- | The response status code.
-uewacrsResponseStatus :: Lens' UpdateEndpointWeightsAndCapacitiesResponse Int
-uewacrsResponseStatus = lens _uewacrsResponseStatus (\ s a -> s{_uewacrsResponseStatus = a})
-
--- | The Amazon Resource Name (ARN) of the updated endpoint.
-uewacrsEndpointARN :: Lens' UpdateEndpointWeightsAndCapacitiesResponse Text
-uewacrsEndpointARN = lens _uewacrsEndpointARN (\ s a -> s{_uewacrsEndpointARN = a})
-
-instance NFData
-           UpdateEndpointWeightsAndCapacitiesResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/UpdateNotebookInstance.hs b/gen/Network/AWS/SageMaker/UpdateNotebookInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/UpdateNotebookInstance.hs
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.UpdateNotebookInstance
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates a notebook instance. NotebookInstance updates include upgrading or downgrading the ML compute instance used for your notebook instance to accommodate changes in your workload requirements. You can also update the VPC security groups.
---
---
-module Network.AWS.SageMaker.UpdateNotebookInstance
-    (
-    -- * Creating a Request
-      updateNotebookInstance
-    , UpdateNotebookInstance
-    -- * Request Lenses
-    , uniInstanceType
-    , uniRoleARN
-    , uniNotebookInstanceName
-
-    -- * Destructuring the Response
-    , updateNotebookInstanceResponse
-    , UpdateNotebookInstanceResponse
-    -- * Response Lenses
-    , unirsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'updateNotebookInstance' smart constructor.
-data UpdateNotebookInstance = UpdateNotebookInstance'
-  { _uniInstanceType         :: !(Maybe InstanceType)
-  , _uniRoleARN              :: !(Maybe Text)
-  , _uniNotebookInstanceName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateNotebookInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uniInstanceType' - The Amazon ML compute instance type.
---
--- * 'uniRoleARN' - Amazon Resource Name (ARN) of the IAM role to associate with the instance.
---
--- * 'uniNotebookInstanceName' - The name of the notebook instance to update.
-updateNotebookInstance
-    :: Text -- ^ 'uniNotebookInstanceName'
-    -> UpdateNotebookInstance
-updateNotebookInstance pNotebookInstanceName_ =
-  UpdateNotebookInstance'
-    { _uniInstanceType = Nothing
-    , _uniRoleARN = Nothing
-    , _uniNotebookInstanceName = pNotebookInstanceName_
-    }
-
-
--- | The Amazon ML compute instance type.
-uniInstanceType :: Lens' UpdateNotebookInstance (Maybe InstanceType)
-uniInstanceType = lens _uniInstanceType (\ s a -> s{_uniInstanceType = a})
-
--- | Amazon Resource Name (ARN) of the IAM role to associate with the instance.
-uniRoleARN :: Lens' UpdateNotebookInstance (Maybe Text)
-uniRoleARN = lens _uniRoleARN (\ s a -> s{_uniRoleARN = a})
-
--- | The name of the notebook instance to update.
-uniNotebookInstanceName :: Lens' UpdateNotebookInstance Text
-uniNotebookInstanceName = lens _uniNotebookInstanceName (\ s a -> s{_uniNotebookInstanceName = a})
-
-instance AWSRequest UpdateNotebookInstance where
-        type Rs UpdateNotebookInstance =
-             UpdateNotebookInstanceResponse
-        request = postJSON sageMaker
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 UpdateNotebookInstanceResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable UpdateNotebookInstance where
-
-instance NFData UpdateNotebookInstance where
-
-instance ToHeaders UpdateNotebookInstance where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.UpdateNotebookInstance" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateNotebookInstance where
-        toJSON UpdateNotebookInstance'{..}
-          = object
-              (catMaybes
-                 [("InstanceType" .=) <$> _uniInstanceType,
-                  ("RoleArn" .=) <$> _uniRoleARN,
-                  Just
-                    ("NotebookInstanceName" .=
-                       _uniNotebookInstanceName)])
-
-instance ToPath UpdateNotebookInstance where
-        toPath = const "/"
-
-instance ToQuery UpdateNotebookInstance where
-        toQuery = const mempty
-
--- | /See:/ 'updateNotebookInstanceResponse' smart constructor.
-newtype UpdateNotebookInstanceResponse = UpdateNotebookInstanceResponse'
-  { _unirsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateNotebookInstanceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'unirsResponseStatus' - -- | The response status code.
-updateNotebookInstanceResponse
-    :: Int -- ^ 'unirsResponseStatus'
-    -> UpdateNotebookInstanceResponse
-updateNotebookInstanceResponse pResponseStatus_ =
-  UpdateNotebookInstanceResponse' {_unirsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-unirsResponseStatus :: Lens' UpdateNotebookInstanceResponse Int
-unirsResponseStatus = lens _unirsResponseStatus (\ s a -> s{_unirsResponseStatus = a})
-
-instance NFData UpdateNotebookInstanceResponse where
diff --git a/gen/Network/AWS/SageMaker/UpdateNotebookInstanceLifecycleConfig.hs b/gen/Network/AWS/SageMaker/UpdateNotebookInstanceLifecycleConfig.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/UpdateNotebookInstanceLifecycleConfig.hs
+++ /dev/null
@@ -1,165 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.UpdateNotebookInstanceLifecycleConfig
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates a notebook instance lifecycle configuration created with the API.
---
---
-module Network.AWS.SageMaker.UpdateNotebookInstanceLifecycleConfig
-    (
-    -- * Creating a Request
-      updateNotebookInstanceLifecycleConfig
-    , UpdateNotebookInstanceLifecycleConfig
-    -- * Request Lenses
-    , unilcOnCreate
-    , unilcOnStart
-    , unilcNotebookInstanceLifecycleConfigName
-
-    -- * Destructuring the Response
-    , updateNotebookInstanceLifecycleConfigResponse
-    , UpdateNotebookInstanceLifecycleConfigResponse
-    -- * Response Lenses
-    , unilcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SageMaker.Types
-import Network.AWS.SageMaker.Types.Product
-
--- | /See:/ 'updateNotebookInstanceLifecycleConfig' smart constructor.
-data UpdateNotebookInstanceLifecycleConfig = UpdateNotebookInstanceLifecycleConfig'
-  { _unilcOnCreate :: !(Maybe [NotebookInstanceLifecycleHook])
-  , _unilcOnStart :: !(Maybe [NotebookInstanceLifecycleHook])
-  , _unilcNotebookInstanceLifecycleConfigName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateNotebookInstanceLifecycleConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'unilcOnCreate' - The shell script that runs only once, when you create a notebook instance
---
--- * 'unilcOnStart' - The shell script that runs every time you start a notebook instance, including when you create the notebook instance.
---
--- * 'unilcNotebookInstanceLifecycleConfigName' - The name of the lifecycle configuration.
-updateNotebookInstanceLifecycleConfig
-    :: Text -- ^ 'unilcNotebookInstanceLifecycleConfigName'
-    -> UpdateNotebookInstanceLifecycleConfig
-updateNotebookInstanceLifecycleConfig pNotebookInstanceLifecycleConfigName_ =
-  UpdateNotebookInstanceLifecycleConfig'
-    { _unilcOnCreate = Nothing
-    , _unilcOnStart = Nothing
-    , _unilcNotebookInstanceLifecycleConfigName =
-        pNotebookInstanceLifecycleConfigName_
-    }
-
-
--- | The shell script that runs only once, when you create a notebook instance
-unilcOnCreate :: Lens' UpdateNotebookInstanceLifecycleConfig [NotebookInstanceLifecycleHook]
-unilcOnCreate = lens _unilcOnCreate (\ s a -> s{_unilcOnCreate = a}) . _Default . _Coerce
-
--- | The shell script that runs every time you start a notebook instance, including when you create the notebook instance.
-unilcOnStart :: Lens' UpdateNotebookInstanceLifecycleConfig [NotebookInstanceLifecycleHook]
-unilcOnStart = lens _unilcOnStart (\ s a -> s{_unilcOnStart = a}) . _Default . _Coerce
-
--- | The name of the lifecycle configuration.
-unilcNotebookInstanceLifecycleConfigName :: Lens' UpdateNotebookInstanceLifecycleConfig Text
-unilcNotebookInstanceLifecycleConfigName = lens _unilcNotebookInstanceLifecycleConfigName (\ s a -> s{_unilcNotebookInstanceLifecycleConfigName = a})
-
-instance AWSRequest
-           UpdateNotebookInstanceLifecycleConfig
-         where
-        type Rs UpdateNotebookInstanceLifecycleConfig =
-             UpdateNotebookInstanceLifecycleConfigResponse
-        request = postJSON sageMaker
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 UpdateNotebookInstanceLifecycleConfigResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           UpdateNotebookInstanceLifecycleConfig
-         where
-
-instance NFData UpdateNotebookInstanceLifecycleConfig
-         where
-
-instance ToHeaders
-           UpdateNotebookInstanceLifecycleConfig
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("SageMaker.UpdateNotebookInstanceLifecycleConfig" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateNotebookInstanceLifecycleConfig
-         where
-        toJSON UpdateNotebookInstanceLifecycleConfig'{..}
-          = object
-              (catMaybes
-                 [("OnCreate" .=) <$> _unilcOnCreate,
-                  ("OnStart" .=) <$> _unilcOnStart,
-                  Just
-                    ("NotebookInstanceLifecycleConfigName" .=
-                       _unilcNotebookInstanceLifecycleConfigName)])
-
-instance ToPath UpdateNotebookInstanceLifecycleConfig
-         where
-        toPath = const "/"
-
-instance ToQuery
-           UpdateNotebookInstanceLifecycleConfig
-         where
-        toQuery = const mempty
-
--- | /See:/ 'updateNotebookInstanceLifecycleConfigResponse' smart constructor.
-newtype UpdateNotebookInstanceLifecycleConfigResponse = UpdateNotebookInstanceLifecycleConfigResponse'
-  { _unilcrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateNotebookInstanceLifecycleConfigResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'unilcrsResponseStatus' - -- | The response status code.
-updateNotebookInstanceLifecycleConfigResponse
-    :: Int -- ^ 'unilcrsResponseStatus'
-    -> UpdateNotebookInstanceLifecycleConfigResponse
-updateNotebookInstanceLifecycleConfigResponse pResponseStatus_ =
-  UpdateNotebookInstanceLifecycleConfigResponse'
-    {_unilcrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-unilcrsResponseStatus :: Lens' UpdateNotebookInstanceLifecycleConfigResponse Int
-unilcrsResponseStatus = lens _unilcrsResponseStatus (\ s a -> s{_unilcrsResponseStatus = a})
-
-instance NFData
-           UpdateNotebookInstanceLifecycleConfigResponse
-         where
diff --git a/gen/Network/AWS/SageMaker/Waiters.hs b/gen/Network/AWS/SageMaker/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/SageMaker/Waiters.hs
+++ /dev/null
@@ -1,135 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SageMaker.Waiters
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SageMaker.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.SageMaker.DescribeEndpoint
-import Network.AWS.SageMaker.DescribeEndpoint
-import Network.AWS.SageMaker.DescribeNotebookInstance
-import Network.AWS.SageMaker.DescribeNotebookInstance
-import Network.AWS.SageMaker.DescribeNotebookInstance
-import Network.AWS.SageMaker.DescribeTrainingJob
-import Network.AWS.SageMaker.Types
-import Network.AWS.Waiter
-
--- | Polls 'Network.AWS.SageMaker.DescribeNotebookInstance' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
-notebookInstanceDeleted :: Wait DescribeNotebookInstance
-notebookInstanceDeleted =
-  Wait
-    { _waitName = "NotebookInstanceDeleted"
-    , _waitAttempts = 60
-    , _waitDelay = 30
-    , _waitAcceptors =
-        [ matchError "ValidationException" AcceptSuccess
-        , matchAll
-            "Failed"
-            AcceptFailure
-            (dnirsNotebookInstanceStatus . to toTextCI)
-        ]
-    }
-
-
--- | Polls 'Network.AWS.SageMaker.DescribeEndpoint' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
-endpointDeleted :: Wait DescribeEndpoint
-endpointDeleted =
-  Wait
-    { _waitName = "EndpointDeleted"
-    , _waitAttempts = 60
-    , _waitDelay = 30
-    , _waitAcceptors =
-        [ matchError "ValidationException" AcceptSuccess
-        , matchAll "Failed" AcceptFailure (dersEndpointStatus . to toTextCI)
-        ]
-    }
-
-
--- | Polls 'Network.AWS.SageMaker.DescribeEndpoint' every 30 seconds until a successful state is reached. An error is returned after 120 failed checks.
-endpointInService :: Wait DescribeEndpoint
-endpointInService =
-  Wait
-    { _waitName = "EndpointInService"
-    , _waitAttempts = 120
-    , _waitDelay = 30
-    , _waitAcceptors =
-        [ matchAll "InService" AcceptSuccess (dersEndpointStatus . to toTextCI)
-        , matchAll "Failed" AcceptFailure (dersEndpointStatus . to toTextCI)
-        , matchError "ValidationException" AcceptFailure
-        ]
-    }
-
-
--- | Polls 'Network.AWS.SageMaker.DescribeNotebookInstance' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
-notebookInstanceInService :: Wait DescribeNotebookInstance
-notebookInstanceInService =
-  Wait
-    { _waitName = "NotebookInstanceInService"
-    , _waitAttempts = 60
-    , _waitDelay = 30
-    , _waitAcceptors =
-        [ matchAll
-            "InService"
-            AcceptSuccess
-            (dnirsNotebookInstanceStatus . to toTextCI)
-        , matchAll
-            "Failed"
-            AcceptFailure
-            (dnirsNotebookInstanceStatus . to toTextCI)
-        ]
-    }
-
-
--- | Polls 'Network.AWS.SageMaker.DescribeTrainingJob' every 120 seconds until a successful state is reached. An error is returned after 180 failed checks.
-trainingJobCompletedOrStopped :: Wait DescribeTrainingJob
-trainingJobCompletedOrStopped =
-  Wait
-    { _waitName = "TrainingJobCompletedOrStopped"
-    , _waitAttempts = 180
-    , _waitDelay = 120
-    , _waitAcceptors =
-        [ matchAll
-            "Completed"
-            AcceptSuccess
-            (dtjrsTrainingJobStatus . to toTextCI)
-        , matchAll
-            "Stopped"
-            AcceptSuccess
-            (dtjrsTrainingJobStatus . to toTextCI)
-        , matchAll "Failed" AcceptFailure (dtjrsTrainingJobStatus . to toTextCI)
-        , matchError "ValidationException" AcceptFailure
-        ]
-    }
-
-
--- | Polls 'Network.AWS.SageMaker.DescribeNotebookInstance' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
-notebookInstanceStopped :: Wait DescribeNotebookInstance
-notebookInstanceStopped =
-  Wait
-    { _waitName = "NotebookInstanceStopped"
-    , _waitAttempts = 60
-    , _waitDelay = 30
-    , _waitAcceptors =
-        [ matchAll
-            "Stopped"
-            AcceptSuccess
-            (dnirsNotebookInstanceStatus . to toTextCI)
-        , matchAll
-            "Failed"
-            AcceptFailure
-            (dnirsNotebookInstanceStatus . to toTextCI)
-        ]
-    }
-
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.SageMaker
+import Test.Amazonka.SageMaker.Internal
 import Test.Tasty
-import Test.AWS.SageMaker
-import Test.AWS.SageMaker.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "SageMaker"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "SageMaker"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/SageMaker.hs b/test/Test/AWS/Gen/SageMaker.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/SageMaker.hs
+++ /dev/null
@@ -1,651 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans        #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Test.AWS.Gen.SageMaker
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.Gen.SageMaker where
-
-import Data.Proxy
-import Network.AWS.SageMaker
-import Test.AWS.Fixture
-import Test.AWS.Prelude
-import Test.AWS.SageMaker.Internal
-import Test.Tasty
-
--- Auto-generated: the actual test selection needs to be manually placed into
--- the top-level so that real test data can be incrementally added.
---
--- This commented snippet is what the entire set should look like:
-
--- fixtures :: TestTree
--- fixtures =
---     [ testGroup "request"
---         [ requestCreateNotebookInstance $
---             createNotebookInstance
---
---         , requestDescribeEndpointConfig $
---             describeEndpointConfig
---
---         , requestCreateEndpoint $
---             createEndpoint
---
---         , requestDescribeTrainingJob $
---             describeTrainingJob
---
---         , requestDeleteEndpoint $
---             deleteEndpoint
---
---         , requestUpdateEndpoint $
---             updateEndpoint
---
---         , requestDeleteNotebookInstanceLifecycleConfig $
---             deleteNotebookInstanceLifecycleConfig
---
---         , requestUpdateNotebookInstanceLifecycleConfig $
---             updateNotebookInstanceLifecycleConfig
---
---         , requestDescribeNotebookInstance $
---             describeNotebookInstance
---
---         , requestCreateEndpointConfig $
---             createEndpointConfig
---
---         , requestStopNotebookInstance $
---             stopNotebookInstance
---
---         , requestUpdateEndpointWeightsAndCapacities $
---             updateEndpointWeightsAndCapacities
---
---         , requestDeleteTags $
---             deleteTags
---
---         , requestDeleteEndpointConfig $
---             deleteEndpointConfig
---
---         , requestCreateModel $
---             createModel
---
---         , requestDeleteModel $
---             deleteModel
---
---         , requestListModels $
---             listModels
---
---         , requestDescribeNotebookInstanceLifecycleConfig $
---             describeNotebookInstanceLifecycleConfig
---
---         , requestListNotebookInstances $
---             listNotebookInstances
---
---         , requestDeleteNotebookInstance $
---             deleteNotebookInstance
---
---         , requestUpdateNotebookInstance $
---             updateNotebookInstance
---
---         , requestStopTrainingJob $
---             stopTrainingJob
---
---         , requestDescribeModel $
---             describeModel
---
---         , requestListEndpoints $
---             listEndpoints
---
---         , requestCreatePresignedNotebookInstanceURL $
---             createPresignedNotebookInstanceURL
---
---         , requestListNotebookInstanceLifecycleConfigs $
---             listNotebookInstanceLifecycleConfigs
---
---         , requestCreateNotebookInstanceLifecycleConfig $
---             createNotebookInstanceLifecycleConfig
---
---         , requestStartNotebookInstance $
---             startNotebookInstance
---
---         , requestAddTags $
---             addTags
---
---         , requestListEndpointConfigs $
---             listEndpointConfigs
---
---         , requestListTags $
---             listTags
---
---         , requestCreateTrainingJob $
---             createTrainingJob
---
---         , requestDescribeEndpoint $
---             describeEndpoint
---
---         , requestListTrainingJobs $
---             listTrainingJobs
---
---           ]
-
---     , testGroup "response"
---         [ responseCreateNotebookInstance $
---             createNotebookInstanceResponse
---
---         , responseDescribeEndpointConfig $
---             describeEndpointConfigResponse
---
---         , responseCreateEndpoint $
---             createEndpointResponse
---
---         , responseDescribeTrainingJob $
---             describeTrainingJobResponse
---
---         , responseDeleteEndpoint $
---             deleteEndpointResponse
---
---         , responseUpdateEndpoint $
---             updateEndpointResponse
---
---         , responseDeleteNotebookInstanceLifecycleConfig $
---             deleteNotebookInstanceLifecycleConfigResponse
---
---         , responseUpdateNotebookInstanceLifecycleConfig $
---             updateNotebookInstanceLifecycleConfigResponse
---
---         , responseDescribeNotebookInstance $
---             describeNotebookInstanceResponse
---
---         , responseCreateEndpointConfig $
---             createEndpointConfigResponse
---
---         , responseStopNotebookInstance $
---             stopNotebookInstanceResponse
---
---         , responseUpdateEndpointWeightsAndCapacities $
---             updateEndpointWeightsAndCapacitiesResponse
---
---         , responseDeleteTags $
---             deleteTagsResponse
---
---         , responseDeleteEndpointConfig $
---             deleteEndpointConfigResponse
---
---         , responseCreateModel $
---             createModelResponse
---
---         , responseDeleteModel $
---             deleteModelResponse
---
---         , responseListModels $
---             listModelsResponse
---
---         , responseDescribeNotebookInstanceLifecycleConfig $
---             describeNotebookInstanceLifecycleConfigResponse
---
---         , responseListNotebookInstances $
---             listNotebookInstancesResponse
---
---         , responseDeleteNotebookInstance $
---             deleteNotebookInstanceResponse
---
---         , responseUpdateNotebookInstance $
---             updateNotebookInstanceResponse
---
---         , responseStopTrainingJob $
---             stopTrainingJobResponse
---
---         , responseDescribeModel $
---             describeModelResponse
---
---         , responseListEndpoints $
---             listEndpointsResponse
---
---         , responseCreatePresignedNotebookInstanceURL $
---             createPresignedNotebookInstanceURLResponse
---
---         , responseListNotebookInstanceLifecycleConfigs $
---             listNotebookInstanceLifecycleConfigsResponse
---
---         , responseCreateNotebookInstanceLifecycleConfig $
---             createNotebookInstanceLifecycleConfigResponse
---
---         , responseStartNotebookInstance $
---             startNotebookInstanceResponse
---
---         , responseAddTags $
---             addTagsResponse
---
---         , responseListEndpointConfigs $
---             listEndpointConfigsResponse
---
---         , responseListTags $
---             listTagsResponse
---
---         , responseCreateTrainingJob $
---             createTrainingJobResponse
---
---         , responseDescribeEndpoint $
---             describeEndpointResponse
---
---         , responseListTrainingJobs $
---             listTrainingJobsResponse
---
---           ]
---     ]
-
--- Requests
-
-requestCreateNotebookInstance :: CreateNotebookInstance -> TestTree
-requestCreateNotebookInstance = req
-    "CreateNotebookInstance"
-    "fixture/CreateNotebookInstance.yaml"
-
-requestDescribeEndpointConfig :: DescribeEndpointConfig -> TestTree
-requestDescribeEndpointConfig = req
-    "DescribeEndpointConfig"
-    "fixture/DescribeEndpointConfig.yaml"
-
-requestCreateEndpoint :: CreateEndpoint -> TestTree
-requestCreateEndpoint = req
-    "CreateEndpoint"
-    "fixture/CreateEndpoint.yaml"
-
-requestDescribeTrainingJob :: DescribeTrainingJob -> TestTree
-requestDescribeTrainingJob = req
-    "DescribeTrainingJob"
-    "fixture/DescribeTrainingJob.yaml"
-
-requestDeleteEndpoint :: DeleteEndpoint -> TestTree
-requestDeleteEndpoint = req
-    "DeleteEndpoint"
-    "fixture/DeleteEndpoint.yaml"
-
-requestUpdateEndpoint :: UpdateEndpoint -> TestTree
-requestUpdateEndpoint = req
-    "UpdateEndpoint"
-    "fixture/UpdateEndpoint.yaml"
-
-requestDeleteNotebookInstanceLifecycleConfig :: DeleteNotebookInstanceLifecycleConfig -> TestTree
-requestDeleteNotebookInstanceLifecycleConfig = req
-    "DeleteNotebookInstanceLifecycleConfig"
-    "fixture/DeleteNotebookInstanceLifecycleConfig.yaml"
-
-requestUpdateNotebookInstanceLifecycleConfig :: UpdateNotebookInstanceLifecycleConfig -> TestTree
-requestUpdateNotebookInstanceLifecycleConfig = req
-    "UpdateNotebookInstanceLifecycleConfig"
-    "fixture/UpdateNotebookInstanceLifecycleConfig.yaml"
-
-requestDescribeNotebookInstance :: DescribeNotebookInstance -> TestTree
-requestDescribeNotebookInstance = req
-    "DescribeNotebookInstance"
-    "fixture/DescribeNotebookInstance.yaml"
-
-requestCreateEndpointConfig :: CreateEndpointConfig -> TestTree
-requestCreateEndpointConfig = req
-    "CreateEndpointConfig"
-    "fixture/CreateEndpointConfig.yaml"
-
-requestStopNotebookInstance :: StopNotebookInstance -> TestTree
-requestStopNotebookInstance = req
-    "StopNotebookInstance"
-    "fixture/StopNotebookInstance.yaml"
-
-requestUpdateEndpointWeightsAndCapacities :: UpdateEndpointWeightsAndCapacities -> TestTree
-requestUpdateEndpointWeightsAndCapacities = req
-    "UpdateEndpointWeightsAndCapacities"
-    "fixture/UpdateEndpointWeightsAndCapacities.yaml"
-
-requestDeleteTags :: DeleteTags -> TestTree
-requestDeleteTags = req
-    "DeleteTags"
-    "fixture/DeleteTags.yaml"
-
-requestDeleteEndpointConfig :: DeleteEndpointConfig -> TestTree
-requestDeleteEndpointConfig = req
-    "DeleteEndpointConfig"
-    "fixture/DeleteEndpointConfig.yaml"
-
-requestCreateModel :: CreateModel -> TestTree
-requestCreateModel = req
-    "CreateModel"
-    "fixture/CreateModel.yaml"
-
-requestDeleteModel :: DeleteModel -> TestTree
-requestDeleteModel = req
-    "DeleteModel"
-    "fixture/DeleteModel.yaml"
-
-requestListModels :: ListModels -> TestTree
-requestListModels = req
-    "ListModels"
-    "fixture/ListModels.yaml"
-
-requestDescribeNotebookInstanceLifecycleConfig :: DescribeNotebookInstanceLifecycleConfig -> TestTree
-requestDescribeNotebookInstanceLifecycleConfig = req
-    "DescribeNotebookInstanceLifecycleConfig"
-    "fixture/DescribeNotebookInstanceLifecycleConfig.yaml"
-
-requestListNotebookInstances :: ListNotebookInstances -> TestTree
-requestListNotebookInstances = req
-    "ListNotebookInstances"
-    "fixture/ListNotebookInstances.yaml"
-
-requestDeleteNotebookInstance :: DeleteNotebookInstance -> TestTree
-requestDeleteNotebookInstance = req
-    "DeleteNotebookInstance"
-    "fixture/DeleteNotebookInstance.yaml"
-
-requestUpdateNotebookInstance :: UpdateNotebookInstance -> TestTree
-requestUpdateNotebookInstance = req
-    "UpdateNotebookInstance"
-    "fixture/UpdateNotebookInstance.yaml"
-
-requestStopTrainingJob :: StopTrainingJob -> TestTree
-requestStopTrainingJob = req
-    "StopTrainingJob"
-    "fixture/StopTrainingJob.yaml"
-
-requestDescribeModel :: DescribeModel -> TestTree
-requestDescribeModel = req
-    "DescribeModel"
-    "fixture/DescribeModel.yaml"
-
-requestListEndpoints :: ListEndpoints -> TestTree
-requestListEndpoints = req
-    "ListEndpoints"
-    "fixture/ListEndpoints.yaml"
-
-requestCreatePresignedNotebookInstanceURL :: CreatePresignedNotebookInstanceURL -> TestTree
-requestCreatePresignedNotebookInstanceURL = req
-    "CreatePresignedNotebookInstanceURL"
-    "fixture/CreatePresignedNotebookInstanceURL.yaml"
-
-requestListNotebookInstanceLifecycleConfigs :: ListNotebookInstanceLifecycleConfigs -> TestTree
-requestListNotebookInstanceLifecycleConfigs = req
-    "ListNotebookInstanceLifecycleConfigs"
-    "fixture/ListNotebookInstanceLifecycleConfigs.yaml"
-
-requestCreateNotebookInstanceLifecycleConfig :: CreateNotebookInstanceLifecycleConfig -> TestTree
-requestCreateNotebookInstanceLifecycleConfig = req
-    "CreateNotebookInstanceLifecycleConfig"
-    "fixture/CreateNotebookInstanceLifecycleConfig.yaml"
-
-requestStartNotebookInstance :: StartNotebookInstance -> TestTree
-requestStartNotebookInstance = req
-    "StartNotebookInstance"
-    "fixture/StartNotebookInstance.yaml"
-
-requestAddTags :: AddTags -> TestTree
-requestAddTags = req
-    "AddTags"
-    "fixture/AddTags.yaml"
-
-requestListEndpointConfigs :: ListEndpointConfigs -> TestTree
-requestListEndpointConfigs = req
-    "ListEndpointConfigs"
-    "fixture/ListEndpointConfigs.yaml"
-
-requestListTags :: ListTags -> TestTree
-requestListTags = req
-    "ListTags"
-    "fixture/ListTags.yaml"
-
-requestCreateTrainingJob :: CreateTrainingJob -> TestTree
-requestCreateTrainingJob = req
-    "CreateTrainingJob"
-    "fixture/CreateTrainingJob.yaml"
-
-requestDescribeEndpoint :: DescribeEndpoint -> TestTree
-requestDescribeEndpoint = req
-    "DescribeEndpoint"
-    "fixture/DescribeEndpoint.yaml"
-
-requestListTrainingJobs :: ListTrainingJobs -> TestTree
-requestListTrainingJobs = req
-    "ListTrainingJobs"
-    "fixture/ListTrainingJobs.yaml"
-
--- Responses
-
-responseCreateNotebookInstance :: CreateNotebookInstanceResponse -> TestTree
-responseCreateNotebookInstance = res
-    "CreateNotebookInstanceResponse"
-    "fixture/CreateNotebookInstanceResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreateNotebookInstance)
-
-responseDescribeEndpointConfig :: DescribeEndpointConfigResponse -> TestTree
-responseDescribeEndpointConfig = res
-    "DescribeEndpointConfigResponse"
-    "fixture/DescribeEndpointConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DescribeEndpointConfig)
-
-responseCreateEndpoint :: CreateEndpointResponse -> TestTree
-responseCreateEndpoint = res
-    "CreateEndpointResponse"
-    "fixture/CreateEndpointResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreateEndpoint)
-
-responseDescribeTrainingJob :: DescribeTrainingJobResponse -> TestTree
-responseDescribeTrainingJob = res
-    "DescribeTrainingJobResponse"
-    "fixture/DescribeTrainingJobResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DescribeTrainingJob)
-
-responseDeleteEndpoint :: DeleteEndpointResponse -> TestTree
-responseDeleteEndpoint = res
-    "DeleteEndpointResponse"
-    "fixture/DeleteEndpointResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DeleteEndpoint)
-
-responseUpdateEndpoint :: UpdateEndpointResponse -> TestTree
-responseUpdateEndpoint = res
-    "UpdateEndpointResponse"
-    "fixture/UpdateEndpointResponse.proto"
-    sageMaker
-    (Proxy :: Proxy UpdateEndpoint)
-
-responseDeleteNotebookInstanceLifecycleConfig :: DeleteNotebookInstanceLifecycleConfigResponse -> TestTree
-responseDeleteNotebookInstanceLifecycleConfig = res
-    "DeleteNotebookInstanceLifecycleConfigResponse"
-    "fixture/DeleteNotebookInstanceLifecycleConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DeleteNotebookInstanceLifecycleConfig)
-
-responseUpdateNotebookInstanceLifecycleConfig :: UpdateNotebookInstanceLifecycleConfigResponse -> TestTree
-responseUpdateNotebookInstanceLifecycleConfig = res
-    "UpdateNotebookInstanceLifecycleConfigResponse"
-    "fixture/UpdateNotebookInstanceLifecycleConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy UpdateNotebookInstanceLifecycleConfig)
-
-responseDescribeNotebookInstance :: DescribeNotebookInstanceResponse -> TestTree
-responseDescribeNotebookInstance = res
-    "DescribeNotebookInstanceResponse"
-    "fixture/DescribeNotebookInstanceResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DescribeNotebookInstance)
-
-responseCreateEndpointConfig :: CreateEndpointConfigResponse -> TestTree
-responseCreateEndpointConfig = res
-    "CreateEndpointConfigResponse"
-    "fixture/CreateEndpointConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreateEndpointConfig)
-
-responseStopNotebookInstance :: StopNotebookInstanceResponse -> TestTree
-responseStopNotebookInstance = res
-    "StopNotebookInstanceResponse"
-    "fixture/StopNotebookInstanceResponse.proto"
-    sageMaker
-    (Proxy :: Proxy StopNotebookInstance)
-
-responseUpdateEndpointWeightsAndCapacities :: UpdateEndpointWeightsAndCapacitiesResponse -> TestTree
-responseUpdateEndpointWeightsAndCapacities = res
-    "UpdateEndpointWeightsAndCapacitiesResponse"
-    "fixture/UpdateEndpointWeightsAndCapacitiesResponse.proto"
-    sageMaker
-    (Proxy :: Proxy UpdateEndpointWeightsAndCapacities)
-
-responseDeleteTags :: DeleteTagsResponse -> TestTree
-responseDeleteTags = res
-    "DeleteTagsResponse"
-    "fixture/DeleteTagsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DeleteTags)
-
-responseDeleteEndpointConfig :: DeleteEndpointConfigResponse -> TestTree
-responseDeleteEndpointConfig = res
-    "DeleteEndpointConfigResponse"
-    "fixture/DeleteEndpointConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DeleteEndpointConfig)
-
-responseCreateModel :: CreateModelResponse -> TestTree
-responseCreateModel = res
-    "CreateModelResponse"
-    "fixture/CreateModelResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreateModel)
-
-responseDeleteModel :: DeleteModelResponse -> TestTree
-responseDeleteModel = res
-    "DeleteModelResponse"
-    "fixture/DeleteModelResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DeleteModel)
-
-responseListModels :: ListModelsResponse -> TestTree
-responseListModels = res
-    "ListModelsResponse"
-    "fixture/ListModelsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListModels)
-
-responseDescribeNotebookInstanceLifecycleConfig :: DescribeNotebookInstanceLifecycleConfigResponse -> TestTree
-responseDescribeNotebookInstanceLifecycleConfig = res
-    "DescribeNotebookInstanceLifecycleConfigResponse"
-    "fixture/DescribeNotebookInstanceLifecycleConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DescribeNotebookInstanceLifecycleConfig)
-
-responseListNotebookInstances :: ListNotebookInstancesResponse -> TestTree
-responseListNotebookInstances = res
-    "ListNotebookInstancesResponse"
-    "fixture/ListNotebookInstancesResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListNotebookInstances)
-
-responseDeleteNotebookInstance :: DeleteNotebookInstanceResponse -> TestTree
-responseDeleteNotebookInstance = res
-    "DeleteNotebookInstanceResponse"
-    "fixture/DeleteNotebookInstanceResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DeleteNotebookInstance)
-
-responseUpdateNotebookInstance :: UpdateNotebookInstanceResponse -> TestTree
-responseUpdateNotebookInstance = res
-    "UpdateNotebookInstanceResponse"
-    "fixture/UpdateNotebookInstanceResponse.proto"
-    sageMaker
-    (Proxy :: Proxy UpdateNotebookInstance)
-
-responseStopTrainingJob :: StopTrainingJobResponse -> TestTree
-responseStopTrainingJob = res
-    "StopTrainingJobResponse"
-    "fixture/StopTrainingJobResponse.proto"
-    sageMaker
-    (Proxy :: Proxy StopTrainingJob)
-
-responseDescribeModel :: DescribeModelResponse -> TestTree
-responseDescribeModel = res
-    "DescribeModelResponse"
-    "fixture/DescribeModelResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DescribeModel)
-
-responseListEndpoints :: ListEndpointsResponse -> TestTree
-responseListEndpoints = res
-    "ListEndpointsResponse"
-    "fixture/ListEndpointsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListEndpoints)
-
-responseCreatePresignedNotebookInstanceURL :: CreatePresignedNotebookInstanceURLResponse -> TestTree
-responseCreatePresignedNotebookInstanceURL = res
-    "CreatePresignedNotebookInstanceURLResponse"
-    "fixture/CreatePresignedNotebookInstanceURLResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreatePresignedNotebookInstanceURL)
-
-responseListNotebookInstanceLifecycleConfigs :: ListNotebookInstanceLifecycleConfigsResponse -> TestTree
-responseListNotebookInstanceLifecycleConfigs = res
-    "ListNotebookInstanceLifecycleConfigsResponse"
-    "fixture/ListNotebookInstanceLifecycleConfigsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListNotebookInstanceLifecycleConfigs)
-
-responseCreateNotebookInstanceLifecycleConfig :: CreateNotebookInstanceLifecycleConfigResponse -> TestTree
-responseCreateNotebookInstanceLifecycleConfig = res
-    "CreateNotebookInstanceLifecycleConfigResponse"
-    "fixture/CreateNotebookInstanceLifecycleConfigResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreateNotebookInstanceLifecycleConfig)
-
-responseStartNotebookInstance :: StartNotebookInstanceResponse -> TestTree
-responseStartNotebookInstance = res
-    "StartNotebookInstanceResponse"
-    "fixture/StartNotebookInstanceResponse.proto"
-    sageMaker
-    (Proxy :: Proxy StartNotebookInstance)
-
-responseAddTags :: AddTagsResponse -> TestTree
-responseAddTags = res
-    "AddTagsResponse"
-    "fixture/AddTagsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy AddTags)
-
-responseListEndpointConfigs :: ListEndpointConfigsResponse -> TestTree
-responseListEndpointConfigs = res
-    "ListEndpointConfigsResponse"
-    "fixture/ListEndpointConfigsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListEndpointConfigs)
-
-responseListTags :: ListTagsResponse -> TestTree
-responseListTags = res
-    "ListTagsResponse"
-    "fixture/ListTagsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListTags)
-
-responseCreateTrainingJob :: CreateTrainingJobResponse -> TestTree
-responseCreateTrainingJob = res
-    "CreateTrainingJobResponse"
-    "fixture/CreateTrainingJobResponse.proto"
-    sageMaker
-    (Proxy :: Proxy CreateTrainingJob)
-
-responseDescribeEndpoint :: DescribeEndpointResponse -> TestTree
-responseDescribeEndpoint = res
-    "DescribeEndpointResponse"
-    "fixture/DescribeEndpointResponse.proto"
-    sageMaker
-    (Proxy :: Proxy DescribeEndpoint)
-
-responseListTrainingJobs :: ListTrainingJobsResponse -> TestTree
-responseListTrainingJobs = res
-    "ListTrainingJobsResponse"
-    "fixture/ListTrainingJobsResponse.proto"
-    sageMaker
-    (Proxy :: Proxy ListTrainingJobs)
diff --git a/test/Test/AWS/SageMaker.hs b/test/Test/AWS/SageMaker.hs
deleted file mode 100644
--- a/test/Test/AWS/SageMaker.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.SageMaker
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.SageMaker
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/SageMaker/Internal.hs b/test/Test/AWS/SageMaker/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/SageMaker/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.SageMaker.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.SageMaker.Internal where
diff --git a/test/Test/Amazonka/Gen/SageMaker.hs b/test/Test/Amazonka/Gen/SageMaker.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/SageMaker.hs
@@ -0,0 +1,6038 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.SageMaker
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Gen.SageMaker where
+
+import Amazonka.SageMaker
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.SageMaker.Internal
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAddAssociation $
+--             newAddAssociation
+--
+--         , requestAddTags $
+--             newAddTags
+--
+--         , requestAssociateTrialComponent $
+--             newAssociateTrialComponent
+--
+--         , requestBatchDescribeModelPackage $
+--             newBatchDescribeModelPackage
+--
+--         , requestCreateAction $
+--             newCreateAction
+--
+--         , requestCreateAlgorithm $
+--             newCreateAlgorithm
+--
+--         , requestCreateApp $
+--             newCreateApp
+--
+--         , requestCreateAppImageConfig $
+--             newCreateAppImageConfig
+--
+--         , requestCreateArtifact $
+--             newCreateArtifact
+--
+--         , requestCreateAutoMLJob $
+--             newCreateAutoMLJob
+--
+--         , requestCreateCodeRepository $
+--             newCreateCodeRepository
+--
+--         , requestCreateCompilationJob $
+--             newCreateCompilationJob
+--
+--         , requestCreateContext $
+--             newCreateContext
+--
+--         , requestCreateDataQualityJobDefinition $
+--             newCreateDataQualityJobDefinition
+--
+--         , requestCreateDeviceFleet $
+--             newCreateDeviceFleet
+--
+--         , requestCreateDomain $
+--             newCreateDomain
+--
+--         , requestCreateEdgeDeploymentPlan $
+--             newCreateEdgeDeploymentPlan
+--
+--         , requestCreateEdgeDeploymentStage $
+--             newCreateEdgeDeploymentStage
+--
+--         , requestCreateEdgePackagingJob $
+--             newCreateEdgePackagingJob
+--
+--         , requestCreateEndpoint $
+--             newCreateEndpoint
+--
+--         , requestCreateEndpointConfig $
+--             newCreateEndpointConfig
+--
+--         , requestCreateExperiment $
+--             newCreateExperiment
+--
+--         , requestCreateFeatureGroup $
+--             newCreateFeatureGroup
+--
+--         , requestCreateFlowDefinition $
+--             newCreateFlowDefinition
+--
+--         , requestCreateHub $
+--             newCreateHub
+--
+--         , requestCreateHumanTaskUi $
+--             newCreateHumanTaskUi
+--
+--         , requestCreateHyperParameterTuningJob $
+--             newCreateHyperParameterTuningJob
+--
+--         , requestCreateImage $
+--             newCreateImage
+--
+--         , requestCreateImageVersion $
+--             newCreateImageVersion
+--
+--         , requestCreateInferenceExperiment $
+--             newCreateInferenceExperiment
+--
+--         , requestCreateInferenceRecommendationsJob $
+--             newCreateInferenceRecommendationsJob
+--
+--         , requestCreateLabelingJob $
+--             newCreateLabelingJob
+--
+--         , requestCreateModel $
+--             newCreateModel
+--
+--         , requestCreateModelBiasJobDefinition $
+--             newCreateModelBiasJobDefinition
+--
+--         , requestCreateModelCard $
+--             newCreateModelCard
+--
+--         , requestCreateModelCardExportJob $
+--             newCreateModelCardExportJob
+--
+--         , requestCreateModelExplainabilityJobDefinition $
+--             newCreateModelExplainabilityJobDefinition
+--
+--         , requestCreateModelPackage $
+--             newCreateModelPackage
+--
+--         , requestCreateModelPackageGroup $
+--             newCreateModelPackageGroup
+--
+--         , requestCreateModelQualityJobDefinition $
+--             newCreateModelQualityJobDefinition
+--
+--         , requestCreateMonitoringSchedule $
+--             newCreateMonitoringSchedule
+--
+--         , requestCreateNotebookInstance $
+--             newCreateNotebookInstance
+--
+--         , requestCreateNotebookInstanceLifecycleConfig $
+--             newCreateNotebookInstanceLifecycleConfig
+--
+--         , requestCreatePipeline $
+--             newCreatePipeline
+--
+--         , requestCreatePresignedDomainUrl $
+--             newCreatePresignedDomainUrl
+--
+--         , requestCreatePresignedNotebookInstanceUrl $
+--             newCreatePresignedNotebookInstanceUrl
+--
+--         , requestCreateProcessingJob $
+--             newCreateProcessingJob
+--
+--         , requestCreateProject $
+--             newCreateProject
+--
+--         , requestCreateSpace $
+--             newCreateSpace
+--
+--         , requestCreateStudioLifecycleConfig $
+--             newCreateStudioLifecycleConfig
+--
+--         , requestCreateTrainingJob $
+--             newCreateTrainingJob
+--
+--         , requestCreateTransformJob $
+--             newCreateTransformJob
+--
+--         , requestCreateTrial $
+--             newCreateTrial
+--
+--         , requestCreateTrialComponent $
+--             newCreateTrialComponent
+--
+--         , requestCreateUserProfile $
+--             newCreateUserProfile
+--
+--         , requestCreateWorkforce $
+--             newCreateWorkforce
+--
+--         , requestCreateWorkteam $
+--             newCreateWorkteam
+--
+--         , requestDeleteAction $
+--             newDeleteAction
+--
+--         , requestDeleteAlgorithm $
+--             newDeleteAlgorithm
+--
+--         , requestDeleteApp $
+--             newDeleteApp
+--
+--         , requestDeleteAppImageConfig $
+--             newDeleteAppImageConfig
+--
+--         , requestDeleteArtifact $
+--             newDeleteArtifact
+--
+--         , requestDeleteAssociation $
+--             newDeleteAssociation
+--
+--         , requestDeleteCodeRepository $
+--             newDeleteCodeRepository
+--
+--         , requestDeleteContext $
+--             newDeleteContext
+--
+--         , requestDeleteDataQualityJobDefinition $
+--             newDeleteDataQualityJobDefinition
+--
+--         , requestDeleteDeviceFleet $
+--             newDeleteDeviceFleet
+--
+--         , requestDeleteDomain $
+--             newDeleteDomain
+--
+--         , requestDeleteEdgeDeploymentPlan $
+--             newDeleteEdgeDeploymentPlan
+--
+--         , requestDeleteEdgeDeploymentStage $
+--             newDeleteEdgeDeploymentStage
+--
+--         , requestDeleteEndpoint $
+--             newDeleteEndpoint
+--
+--         , requestDeleteEndpointConfig $
+--             newDeleteEndpointConfig
+--
+--         , requestDeleteExperiment $
+--             newDeleteExperiment
+--
+--         , requestDeleteFeatureGroup $
+--             newDeleteFeatureGroup
+--
+--         , requestDeleteFlowDefinition $
+--             newDeleteFlowDefinition
+--
+--         , requestDeleteHub $
+--             newDeleteHub
+--
+--         , requestDeleteHubContent $
+--             newDeleteHubContent
+--
+--         , requestDeleteHumanTaskUi $
+--             newDeleteHumanTaskUi
+--
+--         , requestDeleteImage $
+--             newDeleteImage
+--
+--         , requestDeleteImageVersion $
+--             newDeleteImageVersion
+--
+--         , requestDeleteInferenceExperiment $
+--             newDeleteInferenceExperiment
+--
+--         , requestDeleteModel $
+--             newDeleteModel
+--
+--         , requestDeleteModelBiasJobDefinition $
+--             newDeleteModelBiasJobDefinition
+--
+--         , requestDeleteModelCard $
+--             newDeleteModelCard
+--
+--         , requestDeleteModelExplainabilityJobDefinition $
+--             newDeleteModelExplainabilityJobDefinition
+--
+--         , requestDeleteModelPackage $
+--             newDeleteModelPackage
+--
+--         , requestDeleteModelPackageGroup $
+--             newDeleteModelPackageGroup
+--
+--         , requestDeleteModelPackageGroupPolicy $
+--             newDeleteModelPackageGroupPolicy
+--
+--         , requestDeleteModelQualityJobDefinition $
+--             newDeleteModelQualityJobDefinition
+--
+--         , requestDeleteMonitoringSchedule $
+--             newDeleteMonitoringSchedule
+--
+--         , requestDeleteNotebookInstance $
+--             newDeleteNotebookInstance
+--
+--         , requestDeleteNotebookInstanceLifecycleConfig $
+--             newDeleteNotebookInstanceLifecycleConfig
+--
+--         , requestDeletePipeline $
+--             newDeletePipeline
+--
+--         , requestDeleteProject $
+--             newDeleteProject
+--
+--         , requestDeleteSpace $
+--             newDeleteSpace
+--
+--         , requestDeleteStudioLifecycleConfig $
+--             newDeleteStudioLifecycleConfig
+--
+--         , requestDeleteTags $
+--             newDeleteTags
+--
+--         , requestDeleteTrial $
+--             newDeleteTrial
+--
+--         , requestDeleteTrialComponent $
+--             newDeleteTrialComponent
+--
+--         , requestDeleteUserProfile $
+--             newDeleteUserProfile
+--
+--         , requestDeleteWorkforce $
+--             newDeleteWorkforce
+--
+--         , requestDeleteWorkteam $
+--             newDeleteWorkteam
+--
+--         , requestDeregisterDevices $
+--             newDeregisterDevices
+--
+--         , requestDescribeAction $
+--             newDescribeAction
+--
+--         , requestDescribeAlgorithm $
+--             newDescribeAlgorithm
+--
+--         , requestDescribeApp $
+--             newDescribeApp
+--
+--         , requestDescribeAppImageConfig $
+--             newDescribeAppImageConfig
+--
+--         , requestDescribeArtifact $
+--             newDescribeArtifact
+--
+--         , requestDescribeAutoMLJob $
+--             newDescribeAutoMLJob
+--
+--         , requestDescribeCodeRepository $
+--             newDescribeCodeRepository
+--
+--         , requestDescribeCompilationJob $
+--             newDescribeCompilationJob
+--
+--         , requestDescribeContext $
+--             newDescribeContext
+--
+--         , requestDescribeDataQualityJobDefinition $
+--             newDescribeDataQualityJobDefinition
+--
+--         , requestDescribeDevice $
+--             newDescribeDevice
+--
+--         , requestDescribeDeviceFleet $
+--             newDescribeDeviceFleet
+--
+--         , requestDescribeDomain $
+--             newDescribeDomain
+--
+--         , requestDescribeEdgeDeploymentPlan $
+--             newDescribeEdgeDeploymentPlan
+--
+--         , requestDescribeEdgePackagingJob $
+--             newDescribeEdgePackagingJob
+--
+--         , requestDescribeEndpoint $
+--             newDescribeEndpoint
+--
+--         , requestDescribeEndpointConfig $
+--             newDescribeEndpointConfig
+--
+--         , requestDescribeExperiment $
+--             newDescribeExperiment
+--
+--         , requestDescribeFeatureGroup $
+--             newDescribeFeatureGroup
+--
+--         , requestDescribeFeatureMetadata $
+--             newDescribeFeatureMetadata
+--
+--         , requestDescribeFlowDefinition $
+--             newDescribeFlowDefinition
+--
+--         , requestDescribeHub $
+--             newDescribeHub
+--
+--         , requestDescribeHubContent $
+--             newDescribeHubContent
+--
+--         , requestDescribeHumanTaskUi $
+--             newDescribeHumanTaskUi
+--
+--         , requestDescribeHyperParameterTuningJob $
+--             newDescribeHyperParameterTuningJob
+--
+--         , requestDescribeImage $
+--             newDescribeImage
+--
+--         , requestDescribeImageVersion $
+--             newDescribeImageVersion
+--
+--         , requestDescribeInferenceExperiment $
+--             newDescribeInferenceExperiment
+--
+--         , requestDescribeInferenceRecommendationsJob $
+--             newDescribeInferenceRecommendationsJob
+--
+--         , requestDescribeLabelingJob $
+--             newDescribeLabelingJob
+--
+--         , requestDescribeLineageGroup $
+--             newDescribeLineageGroup
+--
+--         , requestDescribeModel $
+--             newDescribeModel
+--
+--         , requestDescribeModelBiasJobDefinition $
+--             newDescribeModelBiasJobDefinition
+--
+--         , requestDescribeModelCard $
+--             newDescribeModelCard
+--
+--         , requestDescribeModelCardExportJob $
+--             newDescribeModelCardExportJob
+--
+--         , requestDescribeModelExplainabilityJobDefinition $
+--             newDescribeModelExplainabilityJobDefinition
+--
+--         , requestDescribeModelPackage $
+--             newDescribeModelPackage
+--
+--         , requestDescribeModelPackageGroup $
+--             newDescribeModelPackageGroup
+--
+--         , requestDescribeModelQualityJobDefinition $
+--             newDescribeModelQualityJobDefinition
+--
+--         , requestDescribeMonitoringSchedule $
+--             newDescribeMonitoringSchedule
+--
+--         , requestDescribeNotebookInstance $
+--             newDescribeNotebookInstance
+--
+--         , requestDescribeNotebookInstanceLifecycleConfig $
+--             newDescribeNotebookInstanceLifecycleConfig
+--
+--         , requestDescribePipeline $
+--             newDescribePipeline
+--
+--         , requestDescribePipelineDefinitionForExecution $
+--             newDescribePipelineDefinitionForExecution
+--
+--         , requestDescribePipelineExecution $
+--             newDescribePipelineExecution
+--
+--         , requestDescribeProcessingJob $
+--             newDescribeProcessingJob
+--
+--         , requestDescribeProject $
+--             newDescribeProject
+--
+--         , requestDescribeSpace $
+--             newDescribeSpace
+--
+--         , requestDescribeStudioLifecycleConfig $
+--             newDescribeStudioLifecycleConfig
+--
+--         , requestDescribeSubscribedWorkteam $
+--             newDescribeSubscribedWorkteam
+--
+--         , requestDescribeTrainingJob $
+--             newDescribeTrainingJob
+--
+--         , requestDescribeTransformJob $
+--             newDescribeTransformJob
+--
+--         , requestDescribeTrial $
+--             newDescribeTrial
+--
+--         , requestDescribeTrialComponent $
+--             newDescribeTrialComponent
+--
+--         , requestDescribeUserProfile $
+--             newDescribeUserProfile
+--
+--         , requestDescribeWorkforce $
+--             newDescribeWorkforce
+--
+--         , requestDescribeWorkteam $
+--             newDescribeWorkteam
+--
+--         , requestDisableSagemakerServicecatalogPortfolio $
+--             newDisableSagemakerServicecatalogPortfolio
+--
+--         , requestDisassociateTrialComponent $
+--             newDisassociateTrialComponent
+--
+--         , requestEnableSagemakerServicecatalogPortfolio $
+--             newEnableSagemakerServicecatalogPortfolio
+--
+--         , requestGetDeviceFleetReport $
+--             newGetDeviceFleetReport
+--
+--         , requestGetLineageGroupPolicy $
+--             newGetLineageGroupPolicy
+--
+--         , requestGetModelPackageGroupPolicy $
+--             newGetModelPackageGroupPolicy
+--
+--         , requestGetSagemakerServicecatalogPortfolioStatus $
+--             newGetSagemakerServicecatalogPortfolioStatus
+--
+--         , requestGetSearchSuggestions $
+--             newGetSearchSuggestions
+--
+--         , requestImportHubContent $
+--             newImportHubContent
+--
+--         , requestListActions $
+--             newListActions
+--
+--         , requestListAlgorithms $
+--             newListAlgorithms
+--
+--         , requestListAliases $
+--             newListAliases
+--
+--         , requestListAppImageConfigs $
+--             newListAppImageConfigs
+--
+--         , requestListApps $
+--             newListApps
+--
+--         , requestListArtifacts $
+--             newListArtifacts
+--
+--         , requestListAssociations $
+--             newListAssociations
+--
+--         , requestListAutoMLJobs $
+--             newListAutoMLJobs
+--
+--         , requestListCandidatesForAutoMLJob $
+--             newListCandidatesForAutoMLJob
+--
+--         , requestListCodeRepositories $
+--             newListCodeRepositories
+--
+--         , requestListCompilationJobs $
+--             newListCompilationJobs
+--
+--         , requestListContexts $
+--             newListContexts
+--
+--         , requestListDataQualityJobDefinitions $
+--             newListDataQualityJobDefinitions
+--
+--         , requestListDeviceFleets $
+--             newListDeviceFleets
+--
+--         , requestListDevices $
+--             newListDevices
+--
+--         , requestListDomains $
+--             newListDomains
+--
+--         , requestListEdgeDeploymentPlans $
+--             newListEdgeDeploymentPlans
+--
+--         , requestListEdgePackagingJobs $
+--             newListEdgePackagingJobs
+--
+--         , requestListEndpointConfigs $
+--             newListEndpointConfigs
+--
+--         , requestListEndpoints $
+--             newListEndpoints
+--
+--         , requestListExperiments $
+--             newListExperiments
+--
+--         , requestListFeatureGroups $
+--             newListFeatureGroups
+--
+--         , requestListFlowDefinitions $
+--             newListFlowDefinitions
+--
+--         , requestListHubContentVersions $
+--             newListHubContentVersions
+--
+--         , requestListHubContents $
+--             newListHubContents
+--
+--         , requestListHubs $
+--             newListHubs
+--
+--         , requestListHumanTaskUis $
+--             newListHumanTaskUis
+--
+--         , requestListHyperParameterTuningJobs $
+--             newListHyperParameterTuningJobs
+--
+--         , requestListImageVersions $
+--             newListImageVersions
+--
+--         , requestListImages $
+--             newListImages
+--
+--         , requestListInferenceExperiments $
+--             newListInferenceExperiments
+--
+--         , requestListInferenceRecommendationsJobSteps $
+--             newListInferenceRecommendationsJobSteps
+--
+--         , requestListInferenceRecommendationsJobs $
+--             newListInferenceRecommendationsJobs
+--
+--         , requestListLabelingJobs $
+--             newListLabelingJobs
+--
+--         , requestListLabelingJobsForWorkteam $
+--             newListLabelingJobsForWorkteam
+--
+--         , requestListLineageGroups $
+--             newListLineageGroups
+--
+--         , requestListModelBiasJobDefinitions $
+--             newListModelBiasJobDefinitions
+--
+--         , requestListModelCardExportJobs $
+--             newListModelCardExportJobs
+--
+--         , requestListModelCardVersions $
+--             newListModelCardVersions
+--
+--         , requestListModelCards $
+--             newListModelCards
+--
+--         , requestListModelExplainabilityJobDefinitions $
+--             newListModelExplainabilityJobDefinitions
+--
+--         , requestListModelMetadata $
+--             newListModelMetadata
+--
+--         , requestListModelPackageGroups $
+--             newListModelPackageGroups
+--
+--         , requestListModelPackages $
+--             newListModelPackages
+--
+--         , requestListModelQualityJobDefinitions $
+--             newListModelQualityJobDefinitions
+--
+--         , requestListModels $
+--             newListModels
+--
+--         , requestListMonitoringAlertHistory $
+--             newListMonitoringAlertHistory
+--
+--         , requestListMonitoringAlerts $
+--             newListMonitoringAlerts
+--
+--         , requestListMonitoringExecutions $
+--             newListMonitoringExecutions
+--
+--         , requestListMonitoringSchedules $
+--             newListMonitoringSchedules
+--
+--         , requestListNotebookInstanceLifecycleConfigs $
+--             newListNotebookInstanceLifecycleConfigs
+--
+--         , requestListNotebookInstances $
+--             newListNotebookInstances
+--
+--         , requestListPipelineExecutionSteps $
+--             newListPipelineExecutionSteps
+--
+--         , requestListPipelineExecutions $
+--             newListPipelineExecutions
+--
+--         , requestListPipelineParametersForExecution $
+--             newListPipelineParametersForExecution
+--
+--         , requestListPipelines $
+--             newListPipelines
+--
+--         , requestListProcessingJobs $
+--             newListProcessingJobs
+--
+--         , requestListProjects $
+--             newListProjects
+--
+--         , requestListSpaces $
+--             newListSpaces
+--
+--         , requestListStageDevices $
+--             newListStageDevices
+--
+--         , requestListStudioLifecycleConfigs $
+--             newListStudioLifecycleConfigs
+--
+--         , requestListSubscribedWorkteams $
+--             newListSubscribedWorkteams
+--
+--         , requestListTags $
+--             newListTags
+--
+--         , requestListTrainingJobs $
+--             newListTrainingJobs
+--
+--         , requestListTrainingJobsForHyperParameterTuningJob $
+--             newListTrainingJobsForHyperParameterTuningJob
+--
+--         , requestListTransformJobs $
+--             newListTransformJobs
+--
+--         , requestListTrialComponents $
+--             newListTrialComponents
+--
+--         , requestListTrials $
+--             newListTrials
+--
+--         , requestListUserProfiles $
+--             newListUserProfiles
+--
+--         , requestListWorkforces $
+--             newListWorkforces
+--
+--         , requestListWorkteams $
+--             newListWorkteams
+--
+--         , requestPutModelPackageGroupPolicy $
+--             newPutModelPackageGroupPolicy
+--
+--         , requestQueryLineage $
+--             newQueryLineage
+--
+--         , requestRegisterDevices $
+--             newRegisterDevices
+--
+--         , requestRenderUiTemplate $
+--             newRenderUiTemplate
+--
+--         , requestRetryPipelineExecution $
+--             newRetryPipelineExecution
+--
+--         , requestSearch $
+--             newSearch
+--
+--         , requestSendPipelineExecutionStepFailure $
+--             newSendPipelineExecutionStepFailure
+--
+--         , requestSendPipelineExecutionStepSuccess $
+--             newSendPipelineExecutionStepSuccess
+--
+--         , requestStartEdgeDeploymentStage $
+--             newStartEdgeDeploymentStage
+--
+--         , requestStartInferenceExperiment $
+--             newStartInferenceExperiment
+--
+--         , requestStartMonitoringSchedule $
+--             newStartMonitoringSchedule
+--
+--         , requestStartNotebookInstance $
+--             newStartNotebookInstance
+--
+--         , requestStartPipelineExecution $
+--             newStartPipelineExecution
+--
+--         , requestStopAutoMLJob $
+--             newStopAutoMLJob
+--
+--         , requestStopCompilationJob $
+--             newStopCompilationJob
+--
+--         , requestStopEdgeDeploymentStage $
+--             newStopEdgeDeploymentStage
+--
+--         , requestStopEdgePackagingJob $
+--             newStopEdgePackagingJob
+--
+--         , requestStopHyperParameterTuningJob $
+--             newStopHyperParameterTuningJob
+--
+--         , requestStopInferenceExperiment $
+--             newStopInferenceExperiment
+--
+--         , requestStopInferenceRecommendationsJob $
+--             newStopInferenceRecommendationsJob
+--
+--         , requestStopLabelingJob $
+--             newStopLabelingJob
+--
+--         , requestStopMonitoringSchedule $
+--             newStopMonitoringSchedule
+--
+--         , requestStopNotebookInstance $
+--             newStopNotebookInstance
+--
+--         , requestStopPipelineExecution $
+--             newStopPipelineExecution
+--
+--         , requestStopProcessingJob $
+--             newStopProcessingJob
+--
+--         , requestStopTrainingJob $
+--             newStopTrainingJob
+--
+--         , requestStopTransformJob $
+--             newStopTransformJob
+--
+--         , requestUpdateAction $
+--             newUpdateAction
+--
+--         , requestUpdateAppImageConfig $
+--             newUpdateAppImageConfig
+--
+--         , requestUpdateArtifact $
+--             newUpdateArtifact
+--
+--         , requestUpdateCodeRepository $
+--             newUpdateCodeRepository
+--
+--         , requestUpdateContext $
+--             newUpdateContext
+--
+--         , requestUpdateDeviceFleet $
+--             newUpdateDeviceFleet
+--
+--         , requestUpdateDevices $
+--             newUpdateDevices
+--
+--         , requestUpdateDomain $
+--             newUpdateDomain
+--
+--         , requestUpdateEndpoint $
+--             newUpdateEndpoint
+--
+--         , requestUpdateEndpointWeightsAndCapacities $
+--             newUpdateEndpointWeightsAndCapacities
+--
+--         , requestUpdateExperiment $
+--             newUpdateExperiment
+--
+--         , requestUpdateFeatureGroup $
+--             newUpdateFeatureGroup
+--
+--         , requestUpdateFeatureMetadata $
+--             newUpdateFeatureMetadata
+--
+--         , requestUpdateHub $
+--             newUpdateHub
+--
+--         , requestUpdateImage $
+--             newUpdateImage
+--
+--         , requestUpdateImageVersion $
+--             newUpdateImageVersion
+--
+--         , requestUpdateInferenceExperiment $
+--             newUpdateInferenceExperiment
+--
+--         , requestUpdateModelCard $
+--             newUpdateModelCard
+--
+--         , requestUpdateModelPackage $
+--             newUpdateModelPackage
+--
+--         , requestUpdateMonitoringAlert $
+--             newUpdateMonitoringAlert
+--
+--         , requestUpdateMonitoringSchedule $
+--             newUpdateMonitoringSchedule
+--
+--         , requestUpdateNotebookInstance $
+--             newUpdateNotebookInstance
+--
+--         , requestUpdateNotebookInstanceLifecycleConfig $
+--             newUpdateNotebookInstanceLifecycleConfig
+--
+--         , requestUpdatePipeline $
+--             newUpdatePipeline
+--
+--         , requestUpdatePipelineExecution $
+--             newUpdatePipelineExecution
+--
+--         , requestUpdateProject $
+--             newUpdateProject
+--
+--         , requestUpdateSpace $
+--             newUpdateSpace
+--
+--         , requestUpdateTrainingJob $
+--             newUpdateTrainingJob
+--
+--         , requestUpdateTrial $
+--             newUpdateTrial
+--
+--         , requestUpdateTrialComponent $
+--             newUpdateTrialComponent
+--
+--         , requestUpdateUserProfile $
+--             newUpdateUserProfile
+--
+--         , requestUpdateWorkforce $
+--             newUpdateWorkforce
+--
+--         , requestUpdateWorkteam $
+--             newUpdateWorkteam
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAddAssociation $
+--             newAddAssociationResponse
+--
+--         , responseAddTags $
+--             newAddTagsResponse
+--
+--         , responseAssociateTrialComponent $
+--             newAssociateTrialComponentResponse
+--
+--         , responseBatchDescribeModelPackage $
+--             newBatchDescribeModelPackageResponse
+--
+--         , responseCreateAction $
+--             newCreateActionResponse
+--
+--         , responseCreateAlgorithm $
+--             newCreateAlgorithmResponse
+--
+--         , responseCreateApp $
+--             newCreateAppResponse
+--
+--         , responseCreateAppImageConfig $
+--             newCreateAppImageConfigResponse
+--
+--         , responseCreateArtifact $
+--             newCreateArtifactResponse
+--
+--         , responseCreateAutoMLJob $
+--             newCreateAutoMLJobResponse
+--
+--         , responseCreateCodeRepository $
+--             newCreateCodeRepositoryResponse
+--
+--         , responseCreateCompilationJob $
+--             newCreateCompilationJobResponse
+--
+--         , responseCreateContext $
+--             newCreateContextResponse
+--
+--         , responseCreateDataQualityJobDefinition $
+--             newCreateDataQualityJobDefinitionResponse
+--
+--         , responseCreateDeviceFleet $
+--             newCreateDeviceFleetResponse
+--
+--         , responseCreateDomain $
+--             newCreateDomainResponse
+--
+--         , responseCreateEdgeDeploymentPlan $
+--             newCreateEdgeDeploymentPlanResponse
+--
+--         , responseCreateEdgeDeploymentStage $
+--             newCreateEdgeDeploymentStageResponse
+--
+--         , responseCreateEdgePackagingJob $
+--             newCreateEdgePackagingJobResponse
+--
+--         , responseCreateEndpoint $
+--             newCreateEndpointResponse
+--
+--         , responseCreateEndpointConfig $
+--             newCreateEndpointConfigResponse
+--
+--         , responseCreateExperiment $
+--             newCreateExperimentResponse
+--
+--         , responseCreateFeatureGroup $
+--             newCreateFeatureGroupResponse
+--
+--         , responseCreateFlowDefinition $
+--             newCreateFlowDefinitionResponse
+--
+--         , responseCreateHub $
+--             newCreateHubResponse
+--
+--         , responseCreateHumanTaskUi $
+--             newCreateHumanTaskUiResponse
+--
+--         , responseCreateHyperParameterTuningJob $
+--             newCreateHyperParameterTuningJobResponse
+--
+--         , responseCreateImage $
+--             newCreateImageResponse
+--
+--         , responseCreateImageVersion $
+--             newCreateImageVersionResponse
+--
+--         , responseCreateInferenceExperiment $
+--             newCreateInferenceExperimentResponse
+--
+--         , responseCreateInferenceRecommendationsJob $
+--             newCreateInferenceRecommendationsJobResponse
+--
+--         , responseCreateLabelingJob $
+--             newCreateLabelingJobResponse
+--
+--         , responseCreateModel $
+--             newCreateModelResponse
+--
+--         , responseCreateModelBiasJobDefinition $
+--             newCreateModelBiasJobDefinitionResponse
+--
+--         , responseCreateModelCard $
+--             newCreateModelCardResponse
+--
+--         , responseCreateModelCardExportJob $
+--             newCreateModelCardExportJobResponse
+--
+--         , responseCreateModelExplainabilityJobDefinition $
+--             newCreateModelExplainabilityJobDefinitionResponse
+--
+--         , responseCreateModelPackage $
+--             newCreateModelPackageResponse
+--
+--         , responseCreateModelPackageGroup $
+--             newCreateModelPackageGroupResponse
+--
+--         , responseCreateModelQualityJobDefinition $
+--             newCreateModelQualityJobDefinitionResponse
+--
+--         , responseCreateMonitoringSchedule $
+--             newCreateMonitoringScheduleResponse
+--
+--         , responseCreateNotebookInstance $
+--             newCreateNotebookInstanceResponse
+--
+--         , responseCreateNotebookInstanceLifecycleConfig $
+--             newCreateNotebookInstanceLifecycleConfigResponse
+--
+--         , responseCreatePipeline $
+--             newCreatePipelineResponse
+--
+--         , responseCreatePresignedDomainUrl $
+--             newCreatePresignedDomainUrlResponse
+--
+--         , responseCreatePresignedNotebookInstanceUrl $
+--             newCreatePresignedNotebookInstanceUrlResponse
+--
+--         , responseCreateProcessingJob $
+--             newCreateProcessingJobResponse
+--
+--         , responseCreateProject $
+--             newCreateProjectResponse
+--
+--         , responseCreateSpace $
+--             newCreateSpaceResponse
+--
+--         , responseCreateStudioLifecycleConfig $
+--             newCreateStudioLifecycleConfigResponse
+--
+--         , responseCreateTrainingJob $
+--             newCreateTrainingJobResponse
+--
+--         , responseCreateTransformJob $
+--             newCreateTransformJobResponse
+--
+--         , responseCreateTrial $
+--             newCreateTrialResponse
+--
+--         , responseCreateTrialComponent $
+--             newCreateTrialComponentResponse
+--
+--         , responseCreateUserProfile $
+--             newCreateUserProfileResponse
+--
+--         , responseCreateWorkforce $
+--             newCreateWorkforceResponse
+--
+--         , responseCreateWorkteam $
+--             newCreateWorkteamResponse
+--
+--         , responseDeleteAction $
+--             newDeleteActionResponse
+--
+--         , responseDeleteAlgorithm $
+--             newDeleteAlgorithmResponse
+--
+--         , responseDeleteApp $
+--             newDeleteAppResponse
+--
+--         , responseDeleteAppImageConfig $
+--             newDeleteAppImageConfigResponse
+--
+--         , responseDeleteArtifact $
+--             newDeleteArtifactResponse
+--
+--         , responseDeleteAssociation $
+--             newDeleteAssociationResponse
+--
+--         , responseDeleteCodeRepository $
+--             newDeleteCodeRepositoryResponse
+--
+--         , responseDeleteContext $
+--             newDeleteContextResponse
+--
+--         , responseDeleteDataQualityJobDefinition $
+--             newDeleteDataQualityJobDefinitionResponse
+--
+--         , responseDeleteDeviceFleet $
+--             newDeleteDeviceFleetResponse
+--
+--         , responseDeleteDomain $
+--             newDeleteDomainResponse
+--
+--         , responseDeleteEdgeDeploymentPlan $
+--             newDeleteEdgeDeploymentPlanResponse
+--
+--         , responseDeleteEdgeDeploymentStage $
+--             newDeleteEdgeDeploymentStageResponse
+--
+--         , responseDeleteEndpoint $
+--             newDeleteEndpointResponse
+--
+--         , responseDeleteEndpointConfig $
+--             newDeleteEndpointConfigResponse
+--
+--         , responseDeleteExperiment $
+--             newDeleteExperimentResponse
+--
+--         , responseDeleteFeatureGroup $
+--             newDeleteFeatureGroupResponse
+--
+--         , responseDeleteFlowDefinition $
+--             newDeleteFlowDefinitionResponse
+--
+--         , responseDeleteHub $
+--             newDeleteHubResponse
+--
+--         , responseDeleteHubContent $
+--             newDeleteHubContentResponse
+--
+--         , responseDeleteHumanTaskUi $
+--             newDeleteHumanTaskUiResponse
+--
+--         , responseDeleteImage $
+--             newDeleteImageResponse
+--
+--         , responseDeleteImageVersion $
+--             newDeleteImageVersionResponse
+--
+--         , responseDeleteInferenceExperiment $
+--             newDeleteInferenceExperimentResponse
+--
+--         , responseDeleteModel $
+--             newDeleteModelResponse
+--
+--         , responseDeleteModelBiasJobDefinition $
+--             newDeleteModelBiasJobDefinitionResponse
+--
+--         , responseDeleteModelCard $
+--             newDeleteModelCardResponse
+--
+--         , responseDeleteModelExplainabilityJobDefinition $
+--             newDeleteModelExplainabilityJobDefinitionResponse
+--
+--         , responseDeleteModelPackage $
+--             newDeleteModelPackageResponse
+--
+--         , responseDeleteModelPackageGroup $
+--             newDeleteModelPackageGroupResponse
+--
+--         , responseDeleteModelPackageGroupPolicy $
+--             newDeleteModelPackageGroupPolicyResponse
+--
+--         , responseDeleteModelQualityJobDefinition $
+--             newDeleteModelQualityJobDefinitionResponse
+--
+--         , responseDeleteMonitoringSchedule $
+--             newDeleteMonitoringScheduleResponse
+--
+--         , responseDeleteNotebookInstance $
+--             newDeleteNotebookInstanceResponse
+--
+--         , responseDeleteNotebookInstanceLifecycleConfig $
+--             newDeleteNotebookInstanceLifecycleConfigResponse
+--
+--         , responseDeletePipeline $
+--             newDeletePipelineResponse
+--
+--         , responseDeleteProject $
+--             newDeleteProjectResponse
+--
+--         , responseDeleteSpace $
+--             newDeleteSpaceResponse
+--
+--         , responseDeleteStudioLifecycleConfig $
+--             newDeleteStudioLifecycleConfigResponse
+--
+--         , responseDeleteTags $
+--             newDeleteTagsResponse
+--
+--         , responseDeleteTrial $
+--             newDeleteTrialResponse
+--
+--         , responseDeleteTrialComponent $
+--             newDeleteTrialComponentResponse
+--
+--         , responseDeleteUserProfile $
+--             newDeleteUserProfileResponse
+--
+--         , responseDeleteWorkforce $
+--             newDeleteWorkforceResponse
+--
+--         , responseDeleteWorkteam $
+--             newDeleteWorkteamResponse
+--
+--         , responseDeregisterDevices $
+--             newDeregisterDevicesResponse
+--
+--         , responseDescribeAction $
+--             newDescribeActionResponse
+--
+--         , responseDescribeAlgorithm $
+--             newDescribeAlgorithmResponse
+--
+--         , responseDescribeApp $
+--             newDescribeAppResponse
+--
+--         , responseDescribeAppImageConfig $
+--             newDescribeAppImageConfigResponse
+--
+--         , responseDescribeArtifact $
+--             newDescribeArtifactResponse
+--
+--         , responseDescribeAutoMLJob $
+--             newDescribeAutoMLJobResponse
+--
+--         , responseDescribeCodeRepository $
+--             newDescribeCodeRepositoryResponse
+--
+--         , responseDescribeCompilationJob $
+--             newDescribeCompilationJobResponse
+--
+--         , responseDescribeContext $
+--             newDescribeContextResponse
+--
+--         , responseDescribeDataQualityJobDefinition $
+--             newDescribeDataQualityJobDefinitionResponse
+--
+--         , responseDescribeDevice $
+--             newDescribeDeviceResponse
+--
+--         , responseDescribeDeviceFleet $
+--             newDescribeDeviceFleetResponse
+--
+--         , responseDescribeDomain $
+--             newDescribeDomainResponse
+--
+--         , responseDescribeEdgeDeploymentPlan $
+--             newDescribeEdgeDeploymentPlanResponse
+--
+--         , responseDescribeEdgePackagingJob $
+--             newDescribeEdgePackagingJobResponse
+--
+--         , responseDescribeEndpoint $
+--             newDescribeEndpointResponse
+--
+--         , responseDescribeEndpointConfig $
+--             newDescribeEndpointConfigResponse
+--
+--         , responseDescribeExperiment $
+--             newDescribeExperimentResponse
+--
+--         , responseDescribeFeatureGroup $
+--             newDescribeFeatureGroupResponse
+--
+--         , responseDescribeFeatureMetadata $
+--             newDescribeFeatureMetadataResponse
+--
+--         , responseDescribeFlowDefinition $
+--             newDescribeFlowDefinitionResponse
+--
+--         , responseDescribeHub $
+--             newDescribeHubResponse
+--
+--         , responseDescribeHubContent $
+--             newDescribeHubContentResponse
+--
+--         , responseDescribeHumanTaskUi $
+--             newDescribeHumanTaskUiResponse
+--
+--         , responseDescribeHyperParameterTuningJob $
+--             newDescribeHyperParameterTuningJobResponse
+--
+--         , responseDescribeImage $
+--             newDescribeImageResponse
+--
+--         , responseDescribeImageVersion $
+--             newDescribeImageVersionResponse
+--
+--         , responseDescribeInferenceExperiment $
+--             newDescribeInferenceExperimentResponse
+--
+--         , responseDescribeInferenceRecommendationsJob $
+--             newDescribeInferenceRecommendationsJobResponse
+--
+--         , responseDescribeLabelingJob $
+--             newDescribeLabelingJobResponse
+--
+--         , responseDescribeLineageGroup $
+--             newDescribeLineageGroupResponse
+--
+--         , responseDescribeModel $
+--             newDescribeModelResponse
+--
+--         , responseDescribeModelBiasJobDefinition $
+--             newDescribeModelBiasJobDefinitionResponse
+--
+--         , responseDescribeModelCard $
+--             newDescribeModelCardResponse
+--
+--         , responseDescribeModelCardExportJob $
+--             newDescribeModelCardExportJobResponse
+--
+--         , responseDescribeModelExplainabilityJobDefinition $
+--             newDescribeModelExplainabilityJobDefinitionResponse
+--
+--         , responseDescribeModelPackage $
+--             newDescribeModelPackageResponse
+--
+--         , responseDescribeModelPackageGroup $
+--             newDescribeModelPackageGroupResponse
+--
+--         , responseDescribeModelQualityJobDefinition $
+--             newDescribeModelQualityJobDefinitionResponse
+--
+--         , responseDescribeMonitoringSchedule $
+--             newDescribeMonitoringScheduleResponse
+--
+--         , responseDescribeNotebookInstance $
+--             newDescribeNotebookInstanceResponse
+--
+--         , responseDescribeNotebookInstanceLifecycleConfig $
+--             newDescribeNotebookInstanceLifecycleConfigResponse
+--
+--         , responseDescribePipeline $
+--             newDescribePipelineResponse
+--
+--         , responseDescribePipelineDefinitionForExecution $
+--             newDescribePipelineDefinitionForExecutionResponse
+--
+--         , responseDescribePipelineExecution $
+--             newDescribePipelineExecutionResponse
+--
+--         , responseDescribeProcessingJob $
+--             newDescribeProcessingJobResponse
+--
+--         , responseDescribeProject $
+--             newDescribeProjectResponse
+--
+--         , responseDescribeSpace $
+--             newDescribeSpaceResponse
+--
+--         , responseDescribeStudioLifecycleConfig $
+--             newDescribeStudioLifecycleConfigResponse
+--
+--         , responseDescribeSubscribedWorkteam $
+--             newDescribeSubscribedWorkteamResponse
+--
+--         , responseDescribeTrainingJob $
+--             newDescribeTrainingJobResponse
+--
+--         , responseDescribeTransformJob $
+--             newDescribeTransformJobResponse
+--
+--         , responseDescribeTrial $
+--             newDescribeTrialResponse
+--
+--         , responseDescribeTrialComponent $
+--             newDescribeTrialComponentResponse
+--
+--         , responseDescribeUserProfile $
+--             newDescribeUserProfileResponse
+--
+--         , responseDescribeWorkforce $
+--             newDescribeWorkforceResponse
+--
+--         , responseDescribeWorkteam $
+--             newDescribeWorkteamResponse
+--
+--         , responseDisableSagemakerServicecatalogPortfolio $
+--             newDisableSagemakerServicecatalogPortfolioResponse
+--
+--         , responseDisassociateTrialComponent $
+--             newDisassociateTrialComponentResponse
+--
+--         , responseEnableSagemakerServicecatalogPortfolio $
+--             newEnableSagemakerServicecatalogPortfolioResponse
+--
+--         , responseGetDeviceFleetReport $
+--             newGetDeviceFleetReportResponse
+--
+--         , responseGetLineageGroupPolicy $
+--             newGetLineageGroupPolicyResponse
+--
+--         , responseGetModelPackageGroupPolicy $
+--             newGetModelPackageGroupPolicyResponse
+--
+--         , responseGetSagemakerServicecatalogPortfolioStatus $
+--             newGetSagemakerServicecatalogPortfolioStatusResponse
+--
+--         , responseGetSearchSuggestions $
+--             newGetSearchSuggestionsResponse
+--
+--         , responseImportHubContent $
+--             newImportHubContentResponse
+--
+--         , responseListActions $
+--             newListActionsResponse
+--
+--         , responseListAlgorithms $
+--             newListAlgorithmsResponse
+--
+--         , responseListAliases $
+--             newListAliasesResponse
+--
+--         , responseListAppImageConfigs $
+--             newListAppImageConfigsResponse
+--
+--         , responseListApps $
+--             newListAppsResponse
+--
+--         , responseListArtifacts $
+--             newListArtifactsResponse
+--
+--         , responseListAssociations $
+--             newListAssociationsResponse
+--
+--         , responseListAutoMLJobs $
+--             newListAutoMLJobsResponse
+--
+--         , responseListCandidatesForAutoMLJob $
+--             newListCandidatesForAutoMLJobResponse
+--
+--         , responseListCodeRepositories $
+--             newListCodeRepositoriesResponse
+--
+--         , responseListCompilationJobs $
+--             newListCompilationJobsResponse
+--
+--         , responseListContexts $
+--             newListContextsResponse
+--
+--         , responseListDataQualityJobDefinitions $
+--             newListDataQualityJobDefinitionsResponse
+--
+--         , responseListDeviceFleets $
+--             newListDeviceFleetsResponse
+--
+--         , responseListDevices $
+--             newListDevicesResponse
+--
+--         , responseListDomains $
+--             newListDomainsResponse
+--
+--         , responseListEdgeDeploymentPlans $
+--             newListEdgeDeploymentPlansResponse
+--
+--         , responseListEdgePackagingJobs $
+--             newListEdgePackagingJobsResponse
+--
+--         , responseListEndpointConfigs $
+--             newListEndpointConfigsResponse
+--
+--         , responseListEndpoints $
+--             newListEndpointsResponse
+--
+--         , responseListExperiments $
+--             newListExperimentsResponse
+--
+--         , responseListFeatureGroups $
+--             newListFeatureGroupsResponse
+--
+--         , responseListFlowDefinitions $
+--             newListFlowDefinitionsResponse
+--
+--         , responseListHubContentVersions $
+--             newListHubContentVersionsResponse
+--
+--         , responseListHubContents $
+--             newListHubContentsResponse
+--
+--         , responseListHubs $
+--             newListHubsResponse
+--
+--         , responseListHumanTaskUis $
+--             newListHumanTaskUisResponse
+--
+--         , responseListHyperParameterTuningJobs $
+--             newListHyperParameterTuningJobsResponse
+--
+--         , responseListImageVersions $
+--             newListImageVersionsResponse
+--
+--         , responseListImages $
+--             newListImagesResponse
+--
+--         , responseListInferenceExperiments $
+--             newListInferenceExperimentsResponse
+--
+--         , responseListInferenceRecommendationsJobSteps $
+--             newListInferenceRecommendationsJobStepsResponse
+--
+--         , responseListInferenceRecommendationsJobs $
+--             newListInferenceRecommendationsJobsResponse
+--
+--         , responseListLabelingJobs $
+--             newListLabelingJobsResponse
+--
+--         , responseListLabelingJobsForWorkteam $
+--             newListLabelingJobsForWorkteamResponse
+--
+--         , responseListLineageGroups $
+--             newListLineageGroupsResponse
+--
+--         , responseListModelBiasJobDefinitions $
+--             newListModelBiasJobDefinitionsResponse
+--
+--         , responseListModelCardExportJobs $
+--             newListModelCardExportJobsResponse
+--
+--         , responseListModelCardVersions $
+--             newListModelCardVersionsResponse
+--
+--         , responseListModelCards $
+--             newListModelCardsResponse
+--
+--         , responseListModelExplainabilityJobDefinitions $
+--             newListModelExplainabilityJobDefinitionsResponse
+--
+--         , responseListModelMetadata $
+--             newListModelMetadataResponse
+--
+--         , responseListModelPackageGroups $
+--             newListModelPackageGroupsResponse
+--
+--         , responseListModelPackages $
+--             newListModelPackagesResponse
+--
+--         , responseListModelQualityJobDefinitions $
+--             newListModelQualityJobDefinitionsResponse
+--
+--         , responseListModels $
+--             newListModelsResponse
+--
+--         , responseListMonitoringAlertHistory $
+--             newListMonitoringAlertHistoryResponse
+--
+--         , responseListMonitoringAlerts $
+--             newListMonitoringAlertsResponse
+--
+--         , responseListMonitoringExecutions $
+--             newListMonitoringExecutionsResponse
+--
+--         , responseListMonitoringSchedules $
+--             newListMonitoringSchedulesResponse
+--
+--         , responseListNotebookInstanceLifecycleConfigs $
+--             newListNotebookInstanceLifecycleConfigsResponse
+--
+--         , responseListNotebookInstances $
+--             newListNotebookInstancesResponse
+--
+--         , responseListPipelineExecutionSteps $
+--             newListPipelineExecutionStepsResponse
+--
+--         , responseListPipelineExecutions $
+--             newListPipelineExecutionsResponse
+--
+--         , responseListPipelineParametersForExecution $
+--             newListPipelineParametersForExecutionResponse
+--
+--         , responseListPipelines $
+--             newListPipelinesResponse
+--
+--         , responseListProcessingJobs $
+--             newListProcessingJobsResponse
+--
+--         , responseListProjects $
+--             newListProjectsResponse
+--
+--         , responseListSpaces $
+--             newListSpacesResponse
+--
+--         , responseListStageDevices $
+--             newListStageDevicesResponse
+--
+--         , responseListStudioLifecycleConfigs $
+--             newListStudioLifecycleConfigsResponse
+--
+--         , responseListSubscribedWorkteams $
+--             newListSubscribedWorkteamsResponse
+--
+--         , responseListTags $
+--             newListTagsResponse
+--
+--         , responseListTrainingJobs $
+--             newListTrainingJobsResponse
+--
+--         , responseListTrainingJobsForHyperParameterTuningJob $
+--             newListTrainingJobsForHyperParameterTuningJobResponse
+--
+--         , responseListTransformJobs $
+--             newListTransformJobsResponse
+--
+--         , responseListTrialComponents $
+--             newListTrialComponentsResponse
+--
+--         , responseListTrials $
+--             newListTrialsResponse
+--
+--         , responseListUserProfiles $
+--             newListUserProfilesResponse
+--
+--         , responseListWorkforces $
+--             newListWorkforcesResponse
+--
+--         , responseListWorkteams $
+--             newListWorkteamsResponse
+--
+--         , responsePutModelPackageGroupPolicy $
+--             newPutModelPackageGroupPolicyResponse
+--
+--         , responseQueryLineage $
+--             newQueryLineageResponse
+--
+--         , responseRegisterDevices $
+--             newRegisterDevicesResponse
+--
+--         , responseRenderUiTemplate $
+--             newRenderUiTemplateResponse
+--
+--         , responseRetryPipelineExecution $
+--             newRetryPipelineExecutionResponse
+--
+--         , responseSearch $
+--             newSearchResponse
+--
+--         , responseSendPipelineExecutionStepFailure $
+--             newSendPipelineExecutionStepFailureResponse
+--
+--         , responseSendPipelineExecutionStepSuccess $
+--             newSendPipelineExecutionStepSuccessResponse
+--
+--         , responseStartEdgeDeploymentStage $
+--             newStartEdgeDeploymentStageResponse
+--
+--         , responseStartInferenceExperiment $
+--             newStartInferenceExperimentResponse
+--
+--         , responseStartMonitoringSchedule $
+--             newStartMonitoringScheduleResponse
+--
+--         , responseStartNotebookInstance $
+--             newStartNotebookInstanceResponse
+--
+--         , responseStartPipelineExecution $
+--             newStartPipelineExecutionResponse
+--
+--         , responseStopAutoMLJob $
+--             newStopAutoMLJobResponse
+--
+--         , responseStopCompilationJob $
+--             newStopCompilationJobResponse
+--
+--         , responseStopEdgeDeploymentStage $
+--             newStopEdgeDeploymentStageResponse
+--
+--         , responseStopEdgePackagingJob $
+--             newStopEdgePackagingJobResponse
+--
+--         , responseStopHyperParameterTuningJob $
+--             newStopHyperParameterTuningJobResponse
+--
+--         , responseStopInferenceExperiment $
+--             newStopInferenceExperimentResponse
+--
+--         , responseStopInferenceRecommendationsJob $
+--             newStopInferenceRecommendationsJobResponse
+--
+--         , responseStopLabelingJob $
+--             newStopLabelingJobResponse
+--
+--         , responseStopMonitoringSchedule $
+--             newStopMonitoringScheduleResponse
+--
+--         , responseStopNotebookInstance $
+--             newStopNotebookInstanceResponse
+--
+--         , responseStopPipelineExecution $
+--             newStopPipelineExecutionResponse
+--
+--         , responseStopProcessingJob $
+--             newStopProcessingJobResponse
+--
+--         , responseStopTrainingJob $
+--             newStopTrainingJobResponse
+--
+--         , responseStopTransformJob $
+--             newStopTransformJobResponse
+--
+--         , responseUpdateAction $
+--             newUpdateActionResponse
+--
+--         , responseUpdateAppImageConfig $
+--             newUpdateAppImageConfigResponse
+--
+--         , responseUpdateArtifact $
+--             newUpdateArtifactResponse
+--
+--         , responseUpdateCodeRepository $
+--             newUpdateCodeRepositoryResponse
+--
+--         , responseUpdateContext $
+--             newUpdateContextResponse
+--
+--         , responseUpdateDeviceFleet $
+--             newUpdateDeviceFleetResponse
+--
+--         , responseUpdateDevices $
+--             newUpdateDevicesResponse
+--
+--         , responseUpdateDomain $
+--             newUpdateDomainResponse
+--
+--         , responseUpdateEndpoint $
+--             newUpdateEndpointResponse
+--
+--         , responseUpdateEndpointWeightsAndCapacities $
+--             newUpdateEndpointWeightsAndCapacitiesResponse
+--
+--         , responseUpdateExperiment $
+--             newUpdateExperimentResponse
+--
+--         , responseUpdateFeatureGroup $
+--             newUpdateFeatureGroupResponse
+--
+--         , responseUpdateFeatureMetadata $
+--             newUpdateFeatureMetadataResponse
+--
+--         , responseUpdateHub $
+--             newUpdateHubResponse
+--
+--         , responseUpdateImage $
+--             newUpdateImageResponse
+--
+--         , responseUpdateImageVersion $
+--             newUpdateImageVersionResponse
+--
+--         , responseUpdateInferenceExperiment $
+--             newUpdateInferenceExperimentResponse
+--
+--         , responseUpdateModelCard $
+--             newUpdateModelCardResponse
+--
+--         , responseUpdateModelPackage $
+--             newUpdateModelPackageResponse
+--
+--         , responseUpdateMonitoringAlert $
+--             newUpdateMonitoringAlertResponse
+--
+--         , responseUpdateMonitoringSchedule $
+--             newUpdateMonitoringScheduleResponse
+--
+--         , responseUpdateNotebookInstance $
+--             newUpdateNotebookInstanceResponse
+--
+--         , responseUpdateNotebookInstanceLifecycleConfig $
+--             newUpdateNotebookInstanceLifecycleConfigResponse
+--
+--         , responseUpdatePipeline $
+--             newUpdatePipelineResponse
+--
+--         , responseUpdatePipelineExecution $
+--             newUpdatePipelineExecutionResponse
+--
+--         , responseUpdateProject $
+--             newUpdateProjectResponse
+--
+--         , responseUpdateSpace $
+--             newUpdateSpaceResponse
+--
+--         , responseUpdateTrainingJob $
+--             newUpdateTrainingJobResponse
+--
+--         , responseUpdateTrial $
+--             newUpdateTrialResponse
+--
+--         , responseUpdateTrialComponent $
+--             newUpdateTrialComponentResponse
+--
+--         , responseUpdateUserProfile $
+--             newUpdateUserProfileResponse
+--
+--         , responseUpdateWorkforce $
+--             newUpdateWorkforceResponse
+--
+--         , responseUpdateWorkteam $
+--             newUpdateWorkteamResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAddAssociation :: AddAssociation -> TestTree
+requestAddAssociation =
+  req
+    "AddAssociation"
+    "fixture/AddAssociation.yaml"
+
+requestAddTags :: AddTags -> TestTree
+requestAddTags =
+  req
+    "AddTags"
+    "fixture/AddTags.yaml"
+
+requestAssociateTrialComponent :: AssociateTrialComponent -> TestTree
+requestAssociateTrialComponent =
+  req
+    "AssociateTrialComponent"
+    "fixture/AssociateTrialComponent.yaml"
+
+requestBatchDescribeModelPackage :: BatchDescribeModelPackage -> TestTree
+requestBatchDescribeModelPackage =
+  req
+    "BatchDescribeModelPackage"
+    "fixture/BatchDescribeModelPackage.yaml"
+
+requestCreateAction :: CreateAction -> TestTree
+requestCreateAction =
+  req
+    "CreateAction"
+    "fixture/CreateAction.yaml"
+
+requestCreateAlgorithm :: CreateAlgorithm -> TestTree
+requestCreateAlgorithm =
+  req
+    "CreateAlgorithm"
+    "fixture/CreateAlgorithm.yaml"
+
+requestCreateApp :: CreateApp -> TestTree
+requestCreateApp =
+  req
+    "CreateApp"
+    "fixture/CreateApp.yaml"
+
+requestCreateAppImageConfig :: CreateAppImageConfig -> TestTree
+requestCreateAppImageConfig =
+  req
+    "CreateAppImageConfig"
+    "fixture/CreateAppImageConfig.yaml"
+
+requestCreateArtifact :: CreateArtifact -> TestTree
+requestCreateArtifact =
+  req
+    "CreateArtifact"
+    "fixture/CreateArtifact.yaml"
+
+requestCreateAutoMLJob :: CreateAutoMLJob -> TestTree
+requestCreateAutoMLJob =
+  req
+    "CreateAutoMLJob"
+    "fixture/CreateAutoMLJob.yaml"
+
+requestCreateCodeRepository :: CreateCodeRepository -> TestTree
+requestCreateCodeRepository =
+  req
+    "CreateCodeRepository"
+    "fixture/CreateCodeRepository.yaml"
+
+requestCreateCompilationJob :: CreateCompilationJob -> TestTree
+requestCreateCompilationJob =
+  req
+    "CreateCompilationJob"
+    "fixture/CreateCompilationJob.yaml"
+
+requestCreateContext :: CreateContext -> TestTree
+requestCreateContext =
+  req
+    "CreateContext"
+    "fixture/CreateContext.yaml"
+
+requestCreateDataQualityJobDefinition :: CreateDataQualityJobDefinition -> TestTree
+requestCreateDataQualityJobDefinition =
+  req
+    "CreateDataQualityJobDefinition"
+    "fixture/CreateDataQualityJobDefinition.yaml"
+
+requestCreateDeviceFleet :: CreateDeviceFleet -> TestTree
+requestCreateDeviceFleet =
+  req
+    "CreateDeviceFleet"
+    "fixture/CreateDeviceFleet.yaml"
+
+requestCreateDomain :: CreateDomain -> TestTree
+requestCreateDomain =
+  req
+    "CreateDomain"
+    "fixture/CreateDomain.yaml"
+
+requestCreateEdgeDeploymentPlan :: CreateEdgeDeploymentPlan -> TestTree
+requestCreateEdgeDeploymentPlan =
+  req
+    "CreateEdgeDeploymentPlan"
+    "fixture/CreateEdgeDeploymentPlan.yaml"
+
+requestCreateEdgeDeploymentStage :: CreateEdgeDeploymentStage -> TestTree
+requestCreateEdgeDeploymentStage =
+  req
+    "CreateEdgeDeploymentStage"
+    "fixture/CreateEdgeDeploymentStage.yaml"
+
+requestCreateEdgePackagingJob :: CreateEdgePackagingJob -> TestTree
+requestCreateEdgePackagingJob =
+  req
+    "CreateEdgePackagingJob"
+    "fixture/CreateEdgePackagingJob.yaml"
+
+requestCreateEndpoint :: CreateEndpoint -> TestTree
+requestCreateEndpoint =
+  req
+    "CreateEndpoint"
+    "fixture/CreateEndpoint.yaml"
+
+requestCreateEndpointConfig :: CreateEndpointConfig -> TestTree
+requestCreateEndpointConfig =
+  req
+    "CreateEndpointConfig"
+    "fixture/CreateEndpointConfig.yaml"
+
+requestCreateExperiment :: CreateExperiment -> TestTree
+requestCreateExperiment =
+  req
+    "CreateExperiment"
+    "fixture/CreateExperiment.yaml"
+
+requestCreateFeatureGroup :: CreateFeatureGroup -> TestTree
+requestCreateFeatureGroup =
+  req
+    "CreateFeatureGroup"
+    "fixture/CreateFeatureGroup.yaml"
+
+requestCreateFlowDefinition :: CreateFlowDefinition -> TestTree
+requestCreateFlowDefinition =
+  req
+    "CreateFlowDefinition"
+    "fixture/CreateFlowDefinition.yaml"
+
+requestCreateHub :: CreateHub -> TestTree
+requestCreateHub =
+  req
+    "CreateHub"
+    "fixture/CreateHub.yaml"
+
+requestCreateHumanTaskUi :: CreateHumanTaskUi -> TestTree
+requestCreateHumanTaskUi =
+  req
+    "CreateHumanTaskUi"
+    "fixture/CreateHumanTaskUi.yaml"
+
+requestCreateHyperParameterTuningJob :: CreateHyperParameterTuningJob -> TestTree
+requestCreateHyperParameterTuningJob =
+  req
+    "CreateHyperParameterTuningJob"
+    "fixture/CreateHyperParameterTuningJob.yaml"
+
+requestCreateImage :: CreateImage -> TestTree
+requestCreateImage =
+  req
+    "CreateImage"
+    "fixture/CreateImage.yaml"
+
+requestCreateImageVersion :: CreateImageVersion -> TestTree
+requestCreateImageVersion =
+  req
+    "CreateImageVersion"
+    "fixture/CreateImageVersion.yaml"
+
+requestCreateInferenceExperiment :: CreateInferenceExperiment -> TestTree
+requestCreateInferenceExperiment =
+  req
+    "CreateInferenceExperiment"
+    "fixture/CreateInferenceExperiment.yaml"
+
+requestCreateInferenceRecommendationsJob :: CreateInferenceRecommendationsJob -> TestTree
+requestCreateInferenceRecommendationsJob =
+  req
+    "CreateInferenceRecommendationsJob"
+    "fixture/CreateInferenceRecommendationsJob.yaml"
+
+requestCreateLabelingJob :: CreateLabelingJob -> TestTree
+requestCreateLabelingJob =
+  req
+    "CreateLabelingJob"
+    "fixture/CreateLabelingJob.yaml"
+
+requestCreateModel :: CreateModel -> TestTree
+requestCreateModel =
+  req
+    "CreateModel"
+    "fixture/CreateModel.yaml"
+
+requestCreateModelBiasJobDefinition :: CreateModelBiasJobDefinition -> TestTree
+requestCreateModelBiasJobDefinition =
+  req
+    "CreateModelBiasJobDefinition"
+    "fixture/CreateModelBiasJobDefinition.yaml"
+
+requestCreateModelCard :: CreateModelCard -> TestTree
+requestCreateModelCard =
+  req
+    "CreateModelCard"
+    "fixture/CreateModelCard.yaml"
+
+requestCreateModelCardExportJob :: CreateModelCardExportJob -> TestTree
+requestCreateModelCardExportJob =
+  req
+    "CreateModelCardExportJob"
+    "fixture/CreateModelCardExportJob.yaml"
+
+requestCreateModelExplainabilityJobDefinition :: CreateModelExplainabilityJobDefinition -> TestTree
+requestCreateModelExplainabilityJobDefinition =
+  req
+    "CreateModelExplainabilityJobDefinition"
+    "fixture/CreateModelExplainabilityJobDefinition.yaml"
+
+requestCreateModelPackage :: CreateModelPackage -> TestTree
+requestCreateModelPackage =
+  req
+    "CreateModelPackage"
+    "fixture/CreateModelPackage.yaml"
+
+requestCreateModelPackageGroup :: CreateModelPackageGroup -> TestTree
+requestCreateModelPackageGroup =
+  req
+    "CreateModelPackageGroup"
+    "fixture/CreateModelPackageGroup.yaml"
+
+requestCreateModelQualityJobDefinition :: CreateModelQualityJobDefinition -> TestTree
+requestCreateModelQualityJobDefinition =
+  req
+    "CreateModelQualityJobDefinition"
+    "fixture/CreateModelQualityJobDefinition.yaml"
+
+requestCreateMonitoringSchedule :: CreateMonitoringSchedule -> TestTree
+requestCreateMonitoringSchedule =
+  req
+    "CreateMonitoringSchedule"
+    "fixture/CreateMonitoringSchedule.yaml"
+
+requestCreateNotebookInstance :: CreateNotebookInstance -> TestTree
+requestCreateNotebookInstance =
+  req
+    "CreateNotebookInstance"
+    "fixture/CreateNotebookInstance.yaml"
+
+requestCreateNotebookInstanceLifecycleConfig :: CreateNotebookInstanceLifecycleConfig -> TestTree
+requestCreateNotebookInstanceLifecycleConfig =
+  req
+    "CreateNotebookInstanceLifecycleConfig"
+    "fixture/CreateNotebookInstanceLifecycleConfig.yaml"
+
+requestCreatePipeline :: CreatePipeline -> TestTree
+requestCreatePipeline =
+  req
+    "CreatePipeline"
+    "fixture/CreatePipeline.yaml"
+
+requestCreatePresignedDomainUrl :: CreatePresignedDomainUrl -> TestTree
+requestCreatePresignedDomainUrl =
+  req
+    "CreatePresignedDomainUrl"
+    "fixture/CreatePresignedDomainUrl.yaml"
+
+requestCreatePresignedNotebookInstanceUrl :: CreatePresignedNotebookInstanceUrl -> TestTree
+requestCreatePresignedNotebookInstanceUrl =
+  req
+    "CreatePresignedNotebookInstanceUrl"
+    "fixture/CreatePresignedNotebookInstanceUrl.yaml"
+
+requestCreateProcessingJob :: CreateProcessingJob -> TestTree
+requestCreateProcessingJob =
+  req
+    "CreateProcessingJob"
+    "fixture/CreateProcessingJob.yaml"
+
+requestCreateProject :: CreateProject -> TestTree
+requestCreateProject =
+  req
+    "CreateProject"
+    "fixture/CreateProject.yaml"
+
+requestCreateSpace :: CreateSpace -> TestTree
+requestCreateSpace =
+  req
+    "CreateSpace"
+    "fixture/CreateSpace.yaml"
+
+requestCreateStudioLifecycleConfig :: CreateStudioLifecycleConfig -> TestTree
+requestCreateStudioLifecycleConfig =
+  req
+    "CreateStudioLifecycleConfig"
+    "fixture/CreateStudioLifecycleConfig.yaml"
+
+requestCreateTrainingJob :: CreateTrainingJob -> TestTree
+requestCreateTrainingJob =
+  req
+    "CreateTrainingJob"
+    "fixture/CreateTrainingJob.yaml"
+
+requestCreateTransformJob :: CreateTransformJob -> TestTree
+requestCreateTransformJob =
+  req
+    "CreateTransformJob"
+    "fixture/CreateTransformJob.yaml"
+
+requestCreateTrial :: CreateTrial -> TestTree
+requestCreateTrial =
+  req
+    "CreateTrial"
+    "fixture/CreateTrial.yaml"
+
+requestCreateTrialComponent :: CreateTrialComponent -> TestTree
+requestCreateTrialComponent =
+  req
+    "CreateTrialComponent"
+    "fixture/CreateTrialComponent.yaml"
+
+requestCreateUserProfile :: CreateUserProfile -> TestTree
+requestCreateUserProfile =
+  req
+    "CreateUserProfile"
+    "fixture/CreateUserProfile.yaml"
+
+requestCreateWorkforce :: CreateWorkforce -> TestTree
+requestCreateWorkforce =
+  req
+    "CreateWorkforce"
+    "fixture/CreateWorkforce.yaml"
+
+requestCreateWorkteam :: CreateWorkteam -> TestTree
+requestCreateWorkteam =
+  req
+    "CreateWorkteam"
+    "fixture/CreateWorkteam.yaml"
+
+requestDeleteAction :: DeleteAction -> TestTree
+requestDeleteAction =
+  req
+    "DeleteAction"
+    "fixture/DeleteAction.yaml"
+
+requestDeleteAlgorithm :: DeleteAlgorithm -> TestTree
+requestDeleteAlgorithm =
+  req
+    "DeleteAlgorithm"
+    "fixture/DeleteAlgorithm.yaml"
+
+requestDeleteApp :: DeleteApp -> TestTree
+requestDeleteApp =
+  req
+    "DeleteApp"
+    "fixture/DeleteApp.yaml"
+
+requestDeleteAppImageConfig :: DeleteAppImageConfig -> TestTree
+requestDeleteAppImageConfig =
+  req
+    "DeleteAppImageConfig"
+    "fixture/DeleteAppImageConfig.yaml"
+
+requestDeleteArtifact :: DeleteArtifact -> TestTree
+requestDeleteArtifact =
+  req
+    "DeleteArtifact"
+    "fixture/DeleteArtifact.yaml"
+
+requestDeleteAssociation :: DeleteAssociation -> TestTree
+requestDeleteAssociation =
+  req
+    "DeleteAssociation"
+    "fixture/DeleteAssociation.yaml"
+
+requestDeleteCodeRepository :: DeleteCodeRepository -> TestTree
+requestDeleteCodeRepository =
+  req
+    "DeleteCodeRepository"
+    "fixture/DeleteCodeRepository.yaml"
+
+requestDeleteContext :: DeleteContext -> TestTree
+requestDeleteContext =
+  req
+    "DeleteContext"
+    "fixture/DeleteContext.yaml"
+
+requestDeleteDataQualityJobDefinition :: DeleteDataQualityJobDefinition -> TestTree
+requestDeleteDataQualityJobDefinition =
+  req
+    "DeleteDataQualityJobDefinition"
+    "fixture/DeleteDataQualityJobDefinition.yaml"
+
+requestDeleteDeviceFleet :: DeleteDeviceFleet -> TestTree
+requestDeleteDeviceFleet =
+  req
+    "DeleteDeviceFleet"
+    "fixture/DeleteDeviceFleet.yaml"
+
+requestDeleteDomain :: DeleteDomain -> TestTree
+requestDeleteDomain =
+  req
+    "DeleteDomain"
+    "fixture/DeleteDomain.yaml"
+
+requestDeleteEdgeDeploymentPlan :: DeleteEdgeDeploymentPlan -> TestTree
+requestDeleteEdgeDeploymentPlan =
+  req
+    "DeleteEdgeDeploymentPlan"
+    "fixture/DeleteEdgeDeploymentPlan.yaml"
+
+requestDeleteEdgeDeploymentStage :: DeleteEdgeDeploymentStage -> TestTree
+requestDeleteEdgeDeploymentStage =
+  req
+    "DeleteEdgeDeploymentStage"
+    "fixture/DeleteEdgeDeploymentStage.yaml"
+
+requestDeleteEndpoint :: DeleteEndpoint -> TestTree
+requestDeleteEndpoint =
+  req
+    "DeleteEndpoint"
+    "fixture/DeleteEndpoint.yaml"
+
+requestDeleteEndpointConfig :: DeleteEndpointConfig -> TestTree
+requestDeleteEndpointConfig =
+  req
+    "DeleteEndpointConfig"
+    "fixture/DeleteEndpointConfig.yaml"
+
+requestDeleteExperiment :: DeleteExperiment -> TestTree
+requestDeleteExperiment =
+  req
+    "DeleteExperiment"
+    "fixture/DeleteExperiment.yaml"
+
+requestDeleteFeatureGroup :: DeleteFeatureGroup -> TestTree
+requestDeleteFeatureGroup =
+  req
+    "DeleteFeatureGroup"
+    "fixture/DeleteFeatureGroup.yaml"
+
+requestDeleteFlowDefinition :: DeleteFlowDefinition -> TestTree
+requestDeleteFlowDefinition =
+  req
+    "DeleteFlowDefinition"
+    "fixture/DeleteFlowDefinition.yaml"
+
+requestDeleteHub :: DeleteHub -> TestTree
+requestDeleteHub =
+  req
+    "DeleteHub"
+    "fixture/DeleteHub.yaml"
+
+requestDeleteHubContent :: DeleteHubContent -> TestTree
+requestDeleteHubContent =
+  req
+    "DeleteHubContent"
+    "fixture/DeleteHubContent.yaml"
+
+requestDeleteHumanTaskUi :: DeleteHumanTaskUi -> TestTree
+requestDeleteHumanTaskUi =
+  req
+    "DeleteHumanTaskUi"
+    "fixture/DeleteHumanTaskUi.yaml"
+
+requestDeleteImage :: DeleteImage -> TestTree
+requestDeleteImage =
+  req
+    "DeleteImage"
+    "fixture/DeleteImage.yaml"
+
+requestDeleteImageVersion :: DeleteImageVersion -> TestTree
+requestDeleteImageVersion =
+  req
+    "DeleteImageVersion"
+    "fixture/DeleteImageVersion.yaml"
+
+requestDeleteInferenceExperiment :: DeleteInferenceExperiment -> TestTree
+requestDeleteInferenceExperiment =
+  req
+    "DeleteInferenceExperiment"
+    "fixture/DeleteInferenceExperiment.yaml"
+
+requestDeleteModel :: DeleteModel -> TestTree
+requestDeleteModel =
+  req
+    "DeleteModel"
+    "fixture/DeleteModel.yaml"
+
+requestDeleteModelBiasJobDefinition :: DeleteModelBiasJobDefinition -> TestTree
+requestDeleteModelBiasJobDefinition =
+  req
+    "DeleteModelBiasJobDefinition"
+    "fixture/DeleteModelBiasJobDefinition.yaml"
+
+requestDeleteModelCard :: DeleteModelCard -> TestTree
+requestDeleteModelCard =
+  req
+    "DeleteModelCard"
+    "fixture/DeleteModelCard.yaml"
+
+requestDeleteModelExplainabilityJobDefinition :: DeleteModelExplainabilityJobDefinition -> TestTree
+requestDeleteModelExplainabilityJobDefinition =
+  req
+    "DeleteModelExplainabilityJobDefinition"
+    "fixture/DeleteModelExplainabilityJobDefinition.yaml"
+
+requestDeleteModelPackage :: DeleteModelPackage -> TestTree
+requestDeleteModelPackage =
+  req
+    "DeleteModelPackage"
+    "fixture/DeleteModelPackage.yaml"
+
+requestDeleteModelPackageGroup :: DeleteModelPackageGroup -> TestTree
+requestDeleteModelPackageGroup =
+  req
+    "DeleteModelPackageGroup"
+    "fixture/DeleteModelPackageGroup.yaml"
+
+requestDeleteModelPackageGroupPolicy :: DeleteModelPackageGroupPolicy -> TestTree
+requestDeleteModelPackageGroupPolicy =
+  req
+    "DeleteModelPackageGroupPolicy"
+    "fixture/DeleteModelPackageGroupPolicy.yaml"
+
+requestDeleteModelQualityJobDefinition :: DeleteModelQualityJobDefinition -> TestTree
+requestDeleteModelQualityJobDefinition =
+  req
+    "DeleteModelQualityJobDefinition"
+    "fixture/DeleteModelQualityJobDefinition.yaml"
+
+requestDeleteMonitoringSchedule :: DeleteMonitoringSchedule -> TestTree
+requestDeleteMonitoringSchedule =
+  req
+    "DeleteMonitoringSchedule"
+    "fixture/DeleteMonitoringSchedule.yaml"
+
+requestDeleteNotebookInstance :: DeleteNotebookInstance -> TestTree
+requestDeleteNotebookInstance =
+  req
+    "DeleteNotebookInstance"
+    "fixture/DeleteNotebookInstance.yaml"
+
+requestDeleteNotebookInstanceLifecycleConfig :: DeleteNotebookInstanceLifecycleConfig -> TestTree
+requestDeleteNotebookInstanceLifecycleConfig =
+  req
+    "DeleteNotebookInstanceLifecycleConfig"
+    "fixture/DeleteNotebookInstanceLifecycleConfig.yaml"
+
+requestDeletePipeline :: DeletePipeline -> TestTree
+requestDeletePipeline =
+  req
+    "DeletePipeline"
+    "fixture/DeletePipeline.yaml"
+
+requestDeleteProject :: DeleteProject -> TestTree
+requestDeleteProject =
+  req
+    "DeleteProject"
+    "fixture/DeleteProject.yaml"
+
+requestDeleteSpace :: DeleteSpace -> TestTree
+requestDeleteSpace =
+  req
+    "DeleteSpace"
+    "fixture/DeleteSpace.yaml"
+
+requestDeleteStudioLifecycleConfig :: DeleteStudioLifecycleConfig -> TestTree
+requestDeleteStudioLifecycleConfig =
+  req
+    "DeleteStudioLifecycleConfig"
+    "fixture/DeleteStudioLifecycleConfig.yaml"
+
+requestDeleteTags :: DeleteTags -> TestTree
+requestDeleteTags =
+  req
+    "DeleteTags"
+    "fixture/DeleteTags.yaml"
+
+requestDeleteTrial :: DeleteTrial -> TestTree
+requestDeleteTrial =
+  req
+    "DeleteTrial"
+    "fixture/DeleteTrial.yaml"
+
+requestDeleteTrialComponent :: DeleteTrialComponent -> TestTree
+requestDeleteTrialComponent =
+  req
+    "DeleteTrialComponent"
+    "fixture/DeleteTrialComponent.yaml"
+
+requestDeleteUserProfile :: DeleteUserProfile -> TestTree
+requestDeleteUserProfile =
+  req
+    "DeleteUserProfile"
+    "fixture/DeleteUserProfile.yaml"
+
+requestDeleteWorkforce :: DeleteWorkforce -> TestTree
+requestDeleteWorkforce =
+  req
+    "DeleteWorkforce"
+    "fixture/DeleteWorkforce.yaml"
+
+requestDeleteWorkteam :: DeleteWorkteam -> TestTree
+requestDeleteWorkteam =
+  req
+    "DeleteWorkteam"
+    "fixture/DeleteWorkteam.yaml"
+
+requestDeregisterDevices :: DeregisterDevices -> TestTree
+requestDeregisterDevices =
+  req
+    "DeregisterDevices"
+    "fixture/DeregisterDevices.yaml"
+
+requestDescribeAction :: DescribeAction -> TestTree
+requestDescribeAction =
+  req
+    "DescribeAction"
+    "fixture/DescribeAction.yaml"
+
+requestDescribeAlgorithm :: DescribeAlgorithm -> TestTree
+requestDescribeAlgorithm =
+  req
+    "DescribeAlgorithm"
+    "fixture/DescribeAlgorithm.yaml"
+
+requestDescribeApp :: DescribeApp -> TestTree
+requestDescribeApp =
+  req
+    "DescribeApp"
+    "fixture/DescribeApp.yaml"
+
+requestDescribeAppImageConfig :: DescribeAppImageConfig -> TestTree
+requestDescribeAppImageConfig =
+  req
+    "DescribeAppImageConfig"
+    "fixture/DescribeAppImageConfig.yaml"
+
+requestDescribeArtifact :: DescribeArtifact -> TestTree
+requestDescribeArtifact =
+  req
+    "DescribeArtifact"
+    "fixture/DescribeArtifact.yaml"
+
+requestDescribeAutoMLJob :: DescribeAutoMLJob -> TestTree
+requestDescribeAutoMLJob =
+  req
+    "DescribeAutoMLJob"
+    "fixture/DescribeAutoMLJob.yaml"
+
+requestDescribeCodeRepository :: DescribeCodeRepository -> TestTree
+requestDescribeCodeRepository =
+  req
+    "DescribeCodeRepository"
+    "fixture/DescribeCodeRepository.yaml"
+
+requestDescribeCompilationJob :: DescribeCompilationJob -> TestTree
+requestDescribeCompilationJob =
+  req
+    "DescribeCompilationJob"
+    "fixture/DescribeCompilationJob.yaml"
+
+requestDescribeContext :: DescribeContext -> TestTree
+requestDescribeContext =
+  req
+    "DescribeContext"
+    "fixture/DescribeContext.yaml"
+
+requestDescribeDataQualityJobDefinition :: DescribeDataQualityJobDefinition -> TestTree
+requestDescribeDataQualityJobDefinition =
+  req
+    "DescribeDataQualityJobDefinition"
+    "fixture/DescribeDataQualityJobDefinition.yaml"
+
+requestDescribeDevice :: DescribeDevice -> TestTree
+requestDescribeDevice =
+  req
+    "DescribeDevice"
+    "fixture/DescribeDevice.yaml"
+
+requestDescribeDeviceFleet :: DescribeDeviceFleet -> TestTree
+requestDescribeDeviceFleet =
+  req
+    "DescribeDeviceFleet"
+    "fixture/DescribeDeviceFleet.yaml"
+
+requestDescribeDomain :: DescribeDomain -> TestTree
+requestDescribeDomain =
+  req
+    "DescribeDomain"
+    "fixture/DescribeDomain.yaml"
+
+requestDescribeEdgeDeploymentPlan :: DescribeEdgeDeploymentPlan -> TestTree
+requestDescribeEdgeDeploymentPlan =
+  req
+    "DescribeEdgeDeploymentPlan"
+    "fixture/DescribeEdgeDeploymentPlan.yaml"
+
+requestDescribeEdgePackagingJob :: DescribeEdgePackagingJob -> TestTree
+requestDescribeEdgePackagingJob =
+  req
+    "DescribeEdgePackagingJob"
+    "fixture/DescribeEdgePackagingJob.yaml"
+
+requestDescribeEndpoint :: DescribeEndpoint -> TestTree
+requestDescribeEndpoint =
+  req
+    "DescribeEndpoint"
+    "fixture/DescribeEndpoint.yaml"
+
+requestDescribeEndpointConfig :: DescribeEndpointConfig -> TestTree
+requestDescribeEndpointConfig =
+  req
+    "DescribeEndpointConfig"
+    "fixture/DescribeEndpointConfig.yaml"
+
+requestDescribeExperiment :: DescribeExperiment -> TestTree
+requestDescribeExperiment =
+  req
+    "DescribeExperiment"
+    "fixture/DescribeExperiment.yaml"
+
+requestDescribeFeatureGroup :: DescribeFeatureGroup -> TestTree
+requestDescribeFeatureGroup =
+  req
+    "DescribeFeatureGroup"
+    "fixture/DescribeFeatureGroup.yaml"
+
+requestDescribeFeatureMetadata :: DescribeFeatureMetadata -> TestTree
+requestDescribeFeatureMetadata =
+  req
+    "DescribeFeatureMetadata"
+    "fixture/DescribeFeatureMetadata.yaml"
+
+requestDescribeFlowDefinition :: DescribeFlowDefinition -> TestTree
+requestDescribeFlowDefinition =
+  req
+    "DescribeFlowDefinition"
+    "fixture/DescribeFlowDefinition.yaml"
+
+requestDescribeHub :: DescribeHub -> TestTree
+requestDescribeHub =
+  req
+    "DescribeHub"
+    "fixture/DescribeHub.yaml"
+
+requestDescribeHubContent :: DescribeHubContent -> TestTree
+requestDescribeHubContent =
+  req
+    "DescribeHubContent"
+    "fixture/DescribeHubContent.yaml"
+
+requestDescribeHumanTaskUi :: DescribeHumanTaskUi -> TestTree
+requestDescribeHumanTaskUi =
+  req
+    "DescribeHumanTaskUi"
+    "fixture/DescribeHumanTaskUi.yaml"
+
+requestDescribeHyperParameterTuningJob :: DescribeHyperParameterTuningJob -> TestTree
+requestDescribeHyperParameterTuningJob =
+  req
+    "DescribeHyperParameterTuningJob"
+    "fixture/DescribeHyperParameterTuningJob.yaml"
+
+requestDescribeImage :: DescribeImage -> TestTree
+requestDescribeImage =
+  req
+    "DescribeImage"
+    "fixture/DescribeImage.yaml"
+
+requestDescribeImageVersion :: DescribeImageVersion -> TestTree
+requestDescribeImageVersion =
+  req
+    "DescribeImageVersion"
+    "fixture/DescribeImageVersion.yaml"
+
+requestDescribeInferenceExperiment :: DescribeInferenceExperiment -> TestTree
+requestDescribeInferenceExperiment =
+  req
+    "DescribeInferenceExperiment"
+    "fixture/DescribeInferenceExperiment.yaml"
+
+requestDescribeInferenceRecommendationsJob :: DescribeInferenceRecommendationsJob -> TestTree
+requestDescribeInferenceRecommendationsJob =
+  req
+    "DescribeInferenceRecommendationsJob"
+    "fixture/DescribeInferenceRecommendationsJob.yaml"
+
+requestDescribeLabelingJob :: DescribeLabelingJob -> TestTree
+requestDescribeLabelingJob =
+  req
+    "DescribeLabelingJob"
+    "fixture/DescribeLabelingJob.yaml"
+
+requestDescribeLineageGroup :: DescribeLineageGroup -> TestTree
+requestDescribeLineageGroup =
+  req
+    "DescribeLineageGroup"
+    "fixture/DescribeLineageGroup.yaml"
+
+requestDescribeModel :: DescribeModel -> TestTree
+requestDescribeModel =
+  req
+    "DescribeModel"
+    "fixture/DescribeModel.yaml"
+
+requestDescribeModelBiasJobDefinition :: DescribeModelBiasJobDefinition -> TestTree
+requestDescribeModelBiasJobDefinition =
+  req
+    "DescribeModelBiasJobDefinition"
+    "fixture/DescribeModelBiasJobDefinition.yaml"
+
+requestDescribeModelCard :: DescribeModelCard -> TestTree
+requestDescribeModelCard =
+  req
+    "DescribeModelCard"
+    "fixture/DescribeModelCard.yaml"
+
+requestDescribeModelCardExportJob :: DescribeModelCardExportJob -> TestTree
+requestDescribeModelCardExportJob =
+  req
+    "DescribeModelCardExportJob"
+    "fixture/DescribeModelCardExportJob.yaml"
+
+requestDescribeModelExplainabilityJobDefinition :: DescribeModelExplainabilityJobDefinition -> TestTree
+requestDescribeModelExplainabilityJobDefinition =
+  req
+    "DescribeModelExplainabilityJobDefinition"
+    "fixture/DescribeModelExplainabilityJobDefinition.yaml"
+
+requestDescribeModelPackage :: DescribeModelPackage -> TestTree
+requestDescribeModelPackage =
+  req
+    "DescribeModelPackage"
+    "fixture/DescribeModelPackage.yaml"
+
+requestDescribeModelPackageGroup :: DescribeModelPackageGroup -> TestTree
+requestDescribeModelPackageGroup =
+  req
+    "DescribeModelPackageGroup"
+    "fixture/DescribeModelPackageGroup.yaml"
+
+requestDescribeModelQualityJobDefinition :: DescribeModelQualityJobDefinition -> TestTree
+requestDescribeModelQualityJobDefinition =
+  req
+    "DescribeModelQualityJobDefinition"
+    "fixture/DescribeModelQualityJobDefinition.yaml"
+
+requestDescribeMonitoringSchedule :: DescribeMonitoringSchedule -> TestTree
+requestDescribeMonitoringSchedule =
+  req
+    "DescribeMonitoringSchedule"
+    "fixture/DescribeMonitoringSchedule.yaml"
+
+requestDescribeNotebookInstance :: DescribeNotebookInstance -> TestTree
+requestDescribeNotebookInstance =
+  req
+    "DescribeNotebookInstance"
+    "fixture/DescribeNotebookInstance.yaml"
+
+requestDescribeNotebookInstanceLifecycleConfig :: DescribeNotebookInstanceLifecycleConfig -> TestTree
+requestDescribeNotebookInstanceLifecycleConfig =
+  req
+    "DescribeNotebookInstanceLifecycleConfig"
+    "fixture/DescribeNotebookInstanceLifecycleConfig.yaml"
+
+requestDescribePipeline :: DescribePipeline -> TestTree
+requestDescribePipeline =
+  req
+    "DescribePipeline"
+    "fixture/DescribePipeline.yaml"
+
+requestDescribePipelineDefinitionForExecution :: DescribePipelineDefinitionForExecution -> TestTree
+requestDescribePipelineDefinitionForExecution =
+  req
+    "DescribePipelineDefinitionForExecution"
+    "fixture/DescribePipelineDefinitionForExecution.yaml"
+
+requestDescribePipelineExecution :: DescribePipelineExecution -> TestTree
+requestDescribePipelineExecution =
+  req
+    "DescribePipelineExecution"
+    "fixture/DescribePipelineExecution.yaml"
+
+requestDescribeProcessingJob :: DescribeProcessingJob -> TestTree
+requestDescribeProcessingJob =
+  req
+    "DescribeProcessingJob"
+    "fixture/DescribeProcessingJob.yaml"
+
+requestDescribeProject :: DescribeProject -> TestTree
+requestDescribeProject =
+  req
+    "DescribeProject"
+    "fixture/DescribeProject.yaml"
+
+requestDescribeSpace :: DescribeSpace -> TestTree
+requestDescribeSpace =
+  req
+    "DescribeSpace"
+    "fixture/DescribeSpace.yaml"
+
+requestDescribeStudioLifecycleConfig :: DescribeStudioLifecycleConfig -> TestTree
+requestDescribeStudioLifecycleConfig =
+  req
+    "DescribeStudioLifecycleConfig"
+    "fixture/DescribeStudioLifecycleConfig.yaml"
+
+requestDescribeSubscribedWorkteam :: DescribeSubscribedWorkteam -> TestTree
+requestDescribeSubscribedWorkteam =
+  req
+    "DescribeSubscribedWorkteam"
+    "fixture/DescribeSubscribedWorkteam.yaml"
+
+requestDescribeTrainingJob :: DescribeTrainingJob -> TestTree
+requestDescribeTrainingJob =
+  req
+    "DescribeTrainingJob"
+    "fixture/DescribeTrainingJob.yaml"
+
+requestDescribeTransformJob :: DescribeTransformJob -> TestTree
+requestDescribeTransformJob =
+  req
+    "DescribeTransformJob"
+    "fixture/DescribeTransformJob.yaml"
+
+requestDescribeTrial :: DescribeTrial -> TestTree
+requestDescribeTrial =
+  req
+    "DescribeTrial"
+    "fixture/DescribeTrial.yaml"
+
+requestDescribeTrialComponent :: DescribeTrialComponent -> TestTree
+requestDescribeTrialComponent =
+  req
+    "DescribeTrialComponent"
+    "fixture/DescribeTrialComponent.yaml"
+
+requestDescribeUserProfile :: DescribeUserProfile -> TestTree
+requestDescribeUserProfile =
+  req
+    "DescribeUserProfile"
+    "fixture/DescribeUserProfile.yaml"
+
+requestDescribeWorkforce :: DescribeWorkforce -> TestTree
+requestDescribeWorkforce =
+  req
+    "DescribeWorkforce"
+    "fixture/DescribeWorkforce.yaml"
+
+requestDescribeWorkteam :: DescribeWorkteam -> TestTree
+requestDescribeWorkteam =
+  req
+    "DescribeWorkteam"
+    "fixture/DescribeWorkteam.yaml"
+
+requestDisableSagemakerServicecatalogPortfolio :: DisableSagemakerServicecatalogPortfolio -> TestTree
+requestDisableSagemakerServicecatalogPortfolio =
+  req
+    "DisableSagemakerServicecatalogPortfolio"
+    "fixture/DisableSagemakerServicecatalogPortfolio.yaml"
+
+requestDisassociateTrialComponent :: DisassociateTrialComponent -> TestTree
+requestDisassociateTrialComponent =
+  req
+    "DisassociateTrialComponent"
+    "fixture/DisassociateTrialComponent.yaml"
+
+requestEnableSagemakerServicecatalogPortfolio :: EnableSagemakerServicecatalogPortfolio -> TestTree
+requestEnableSagemakerServicecatalogPortfolio =
+  req
+    "EnableSagemakerServicecatalogPortfolio"
+    "fixture/EnableSagemakerServicecatalogPortfolio.yaml"
+
+requestGetDeviceFleetReport :: GetDeviceFleetReport -> TestTree
+requestGetDeviceFleetReport =
+  req
+    "GetDeviceFleetReport"
+    "fixture/GetDeviceFleetReport.yaml"
+
+requestGetLineageGroupPolicy :: GetLineageGroupPolicy -> TestTree
+requestGetLineageGroupPolicy =
+  req
+    "GetLineageGroupPolicy"
+    "fixture/GetLineageGroupPolicy.yaml"
+
+requestGetModelPackageGroupPolicy :: GetModelPackageGroupPolicy -> TestTree
+requestGetModelPackageGroupPolicy =
+  req
+    "GetModelPackageGroupPolicy"
+    "fixture/GetModelPackageGroupPolicy.yaml"
+
+requestGetSagemakerServicecatalogPortfolioStatus :: GetSagemakerServicecatalogPortfolioStatus -> TestTree
+requestGetSagemakerServicecatalogPortfolioStatus =
+  req
+    "GetSagemakerServicecatalogPortfolioStatus"
+    "fixture/GetSagemakerServicecatalogPortfolioStatus.yaml"
+
+requestGetSearchSuggestions :: GetSearchSuggestions -> TestTree
+requestGetSearchSuggestions =
+  req
+    "GetSearchSuggestions"
+    "fixture/GetSearchSuggestions.yaml"
+
+requestImportHubContent :: ImportHubContent -> TestTree
+requestImportHubContent =
+  req
+    "ImportHubContent"
+    "fixture/ImportHubContent.yaml"
+
+requestListActions :: ListActions -> TestTree
+requestListActions =
+  req
+    "ListActions"
+    "fixture/ListActions.yaml"
+
+requestListAlgorithms :: ListAlgorithms -> TestTree
+requestListAlgorithms =
+  req
+    "ListAlgorithms"
+    "fixture/ListAlgorithms.yaml"
+
+requestListAliases :: ListAliases -> TestTree
+requestListAliases =
+  req
+    "ListAliases"
+    "fixture/ListAliases.yaml"
+
+requestListAppImageConfigs :: ListAppImageConfigs -> TestTree
+requestListAppImageConfigs =
+  req
+    "ListAppImageConfigs"
+    "fixture/ListAppImageConfigs.yaml"
+
+requestListApps :: ListApps -> TestTree
+requestListApps =
+  req
+    "ListApps"
+    "fixture/ListApps.yaml"
+
+requestListArtifacts :: ListArtifacts -> TestTree
+requestListArtifacts =
+  req
+    "ListArtifacts"
+    "fixture/ListArtifacts.yaml"
+
+requestListAssociations :: ListAssociations -> TestTree
+requestListAssociations =
+  req
+    "ListAssociations"
+    "fixture/ListAssociations.yaml"
+
+requestListAutoMLJobs :: ListAutoMLJobs -> TestTree
+requestListAutoMLJobs =
+  req
+    "ListAutoMLJobs"
+    "fixture/ListAutoMLJobs.yaml"
+
+requestListCandidatesForAutoMLJob :: ListCandidatesForAutoMLJob -> TestTree
+requestListCandidatesForAutoMLJob =
+  req
+    "ListCandidatesForAutoMLJob"
+    "fixture/ListCandidatesForAutoMLJob.yaml"
+
+requestListCodeRepositories :: ListCodeRepositories -> TestTree
+requestListCodeRepositories =
+  req
+    "ListCodeRepositories"
+    "fixture/ListCodeRepositories.yaml"
+
+requestListCompilationJobs :: ListCompilationJobs -> TestTree
+requestListCompilationJobs =
+  req
+    "ListCompilationJobs"
+    "fixture/ListCompilationJobs.yaml"
+
+requestListContexts :: ListContexts -> TestTree
+requestListContexts =
+  req
+    "ListContexts"
+    "fixture/ListContexts.yaml"
+
+requestListDataQualityJobDefinitions :: ListDataQualityJobDefinitions -> TestTree
+requestListDataQualityJobDefinitions =
+  req
+    "ListDataQualityJobDefinitions"
+    "fixture/ListDataQualityJobDefinitions.yaml"
+
+requestListDeviceFleets :: ListDeviceFleets -> TestTree
+requestListDeviceFleets =
+  req
+    "ListDeviceFleets"
+    "fixture/ListDeviceFleets.yaml"
+
+requestListDevices :: ListDevices -> TestTree
+requestListDevices =
+  req
+    "ListDevices"
+    "fixture/ListDevices.yaml"
+
+requestListDomains :: ListDomains -> TestTree
+requestListDomains =
+  req
+    "ListDomains"
+    "fixture/ListDomains.yaml"
+
+requestListEdgeDeploymentPlans :: ListEdgeDeploymentPlans -> TestTree
+requestListEdgeDeploymentPlans =
+  req
+    "ListEdgeDeploymentPlans"
+    "fixture/ListEdgeDeploymentPlans.yaml"
+
+requestListEdgePackagingJobs :: ListEdgePackagingJobs -> TestTree
+requestListEdgePackagingJobs =
+  req
+    "ListEdgePackagingJobs"
+    "fixture/ListEdgePackagingJobs.yaml"
+
+requestListEndpointConfigs :: ListEndpointConfigs -> TestTree
+requestListEndpointConfigs =
+  req
+    "ListEndpointConfigs"
+    "fixture/ListEndpointConfigs.yaml"
+
+requestListEndpoints :: ListEndpoints -> TestTree
+requestListEndpoints =
+  req
+    "ListEndpoints"
+    "fixture/ListEndpoints.yaml"
+
+requestListExperiments :: ListExperiments -> TestTree
+requestListExperiments =
+  req
+    "ListExperiments"
+    "fixture/ListExperiments.yaml"
+
+requestListFeatureGroups :: ListFeatureGroups -> TestTree
+requestListFeatureGroups =
+  req
+    "ListFeatureGroups"
+    "fixture/ListFeatureGroups.yaml"
+
+requestListFlowDefinitions :: ListFlowDefinitions -> TestTree
+requestListFlowDefinitions =
+  req
+    "ListFlowDefinitions"
+    "fixture/ListFlowDefinitions.yaml"
+
+requestListHubContentVersions :: ListHubContentVersions -> TestTree
+requestListHubContentVersions =
+  req
+    "ListHubContentVersions"
+    "fixture/ListHubContentVersions.yaml"
+
+requestListHubContents :: ListHubContents -> TestTree
+requestListHubContents =
+  req
+    "ListHubContents"
+    "fixture/ListHubContents.yaml"
+
+requestListHubs :: ListHubs -> TestTree
+requestListHubs =
+  req
+    "ListHubs"
+    "fixture/ListHubs.yaml"
+
+requestListHumanTaskUis :: ListHumanTaskUis -> TestTree
+requestListHumanTaskUis =
+  req
+    "ListHumanTaskUis"
+    "fixture/ListHumanTaskUis.yaml"
+
+requestListHyperParameterTuningJobs :: ListHyperParameterTuningJobs -> TestTree
+requestListHyperParameterTuningJobs =
+  req
+    "ListHyperParameterTuningJobs"
+    "fixture/ListHyperParameterTuningJobs.yaml"
+
+requestListImageVersions :: ListImageVersions -> TestTree
+requestListImageVersions =
+  req
+    "ListImageVersions"
+    "fixture/ListImageVersions.yaml"
+
+requestListImages :: ListImages -> TestTree
+requestListImages =
+  req
+    "ListImages"
+    "fixture/ListImages.yaml"
+
+requestListInferenceExperiments :: ListInferenceExperiments -> TestTree
+requestListInferenceExperiments =
+  req
+    "ListInferenceExperiments"
+    "fixture/ListInferenceExperiments.yaml"
+
+requestListInferenceRecommendationsJobSteps :: ListInferenceRecommendationsJobSteps -> TestTree
+requestListInferenceRecommendationsJobSteps =
+  req
+    "ListInferenceRecommendationsJobSteps"
+    "fixture/ListInferenceRecommendationsJobSteps.yaml"
+
+requestListInferenceRecommendationsJobs :: ListInferenceRecommendationsJobs -> TestTree
+requestListInferenceRecommendationsJobs =
+  req
+    "ListInferenceRecommendationsJobs"
+    "fixture/ListInferenceRecommendationsJobs.yaml"
+
+requestListLabelingJobs :: ListLabelingJobs -> TestTree
+requestListLabelingJobs =
+  req
+    "ListLabelingJobs"
+    "fixture/ListLabelingJobs.yaml"
+
+requestListLabelingJobsForWorkteam :: ListLabelingJobsForWorkteam -> TestTree
+requestListLabelingJobsForWorkteam =
+  req
+    "ListLabelingJobsForWorkteam"
+    "fixture/ListLabelingJobsForWorkteam.yaml"
+
+requestListLineageGroups :: ListLineageGroups -> TestTree
+requestListLineageGroups =
+  req
+    "ListLineageGroups"
+    "fixture/ListLineageGroups.yaml"
+
+requestListModelBiasJobDefinitions :: ListModelBiasJobDefinitions -> TestTree
+requestListModelBiasJobDefinitions =
+  req
+    "ListModelBiasJobDefinitions"
+    "fixture/ListModelBiasJobDefinitions.yaml"
+
+requestListModelCardExportJobs :: ListModelCardExportJobs -> TestTree
+requestListModelCardExportJobs =
+  req
+    "ListModelCardExportJobs"
+    "fixture/ListModelCardExportJobs.yaml"
+
+requestListModelCardVersions :: ListModelCardVersions -> TestTree
+requestListModelCardVersions =
+  req
+    "ListModelCardVersions"
+    "fixture/ListModelCardVersions.yaml"
+
+requestListModelCards :: ListModelCards -> TestTree
+requestListModelCards =
+  req
+    "ListModelCards"
+    "fixture/ListModelCards.yaml"
+
+requestListModelExplainabilityJobDefinitions :: ListModelExplainabilityJobDefinitions -> TestTree
+requestListModelExplainabilityJobDefinitions =
+  req
+    "ListModelExplainabilityJobDefinitions"
+    "fixture/ListModelExplainabilityJobDefinitions.yaml"
+
+requestListModelMetadata :: ListModelMetadata -> TestTree
+requestListModelMetadata =
+  req
+    "ListModelMetadata"
+    "fixture/ListModelMetadata.yaml"
+
+requestListModelPackageGroups :: ListModelPackageGroups -> TestTree
+requestListModelPackageGroups =
+  req
+    "ListModelPackageGroups"
+    "fixture/ListModelPackageGroups.yaml"
+
+requestListModelPackages :: ListModelPackages -> TestTree
+requestListModelPackages =
+  req
+    "ListModelPackages"
+    "fixture/ListModelPackages.yaml"
+
+requestListModelQualityJobDefinitions :: ListModelQualityJobDefinitions -> TestTree
+requestListModelQualityJobDefinitions =
+  req
+    "ListModelQualityJobDefinitions"
+    "fixture/ListModelQualityJobDefinitions.yaml"
+
+requestListModels :: ListModels -> TestTree
+requestListModels =
+  req
+    "ListModels"
+    "fixture/ListModels.yaml"
+
+requestListMonitoringAlertHistory :: ListMonitoringAlertHistory -> TestTree
+requestListMonitoringAlertHistory =
+  req
+    "ListMonitoringAlertHistory"
+    "fixture/ListMonitoringAlertHistory.yaml"
+
+requestListMonitoringAlerts :: ListMonitoringAlerts -> TestTree
+requestListMonitoringAlerts =
+  req
+    "ListMonitoringAlerts"
+    "fixture/ListMonitoringAlerts.yaml"
+
+requestListMonitoringExecutions :: ListMonitoringExecutions -> TestTree
+requestListMonitoringExecutions =
+  req
+    "ListMonitoringExecutions"
+    "fixture/ListMonitoringExecutions.yaml"
+
+requestListMonitoringSchedules :: ListMonitoringSchedules -> TestTree
+requestListMonitoringSchedules =
+  req
+    "ListMonitoringSchedules"
+    "fixture/ListMonitoringSchedules.yaml"
+
+requestListNotebookInstanceLifecycleConfigs :: ListNotebookInstanceLifecycleConfigs -> TestTree
+requestListNotebookInstanceLifecycleConfigs =
+  req
+    "ListNotebookInstanceLifecycleConfigs"
+    "fixture/ListNotebookInstanceLifecycleConfigs.yaml"
+
+requestListNotebookInstances :: ListNotebookInstances -> TestTree
+requestListNotebookInstances =
+  req
+    "ListNotebookInstances"
+    "fixture/ListNotebookInstances.yaml"
+
+requestListPipelineExecutionSteps :: ListPipelineExecutionSteps -> TestTree
+requestListPipelineExecutionSteps =
+  req
+    "ListPipelineExecutionSteps"
+    "fixture/ListPipelineExecutionSteps.yaml"
+
+requestListPipelineExecutions :: ListPipelineExecutions -> TestTree
+requestListPipelineExecutions =
+  req
+    "ListPipelineExecutions"
+    "fixture/ListPipelineExecutions.yaml"
+
+requestListPipelineParametersForExecution :: ListPipelineParametersForExecution -> TestTree
+requestListPipelineParametersForExecution =
+  req
+    "ListPipelineParametersForExecution"
+    "fixture/ListPipelineParametersForExecution.yaml"
+
+requestListPipelines :: ListPipelines -> TestTree
+requestListPipelines =
+  req
+    "ListPipelines"
+    "fixture/ListPipelines.yaml"
+
+requestListProcessingJobs :: ListProcessingJobs -> TestTree
+requestListProcessingJobs =
+  req
+    "ListProcessingJobs"
+    "fixture/ListProcessingJobs.yaml"
+
+requestListProjects :: ListProjects -> TestTree
+requestListProjects =
+  req
+    "ListProjects"
+    "fixture/ListProjects.yaml"
+
+requestListSpaces :: ListSpaces -> TestTree
+requestListSpaces =
+  req
+    "ListSpaces"
+    "fixture/ListSpaces.yaml"
+
+requestListStageDevices :: ListStageDevices -> TestTree
+requestListStageDevices =
+  req
+    "ListStageDevices"
+    "fixture/ListStageDevices.yaml"
+
+requestListStudioLifecycleConfigs :: ListStudioLifecycleConfigs -> TestTree
+requestListStudioLifecycleConfigs =
+  req
+    "ListStudioLifecycleConfigs"
+    "fixture/ListStudioLifecycleConfigs.yaml"
+
+requestListSubscribedWorkteams :: ListSubscribedWorkteams -> TestTree
+requestListSubscribedWorkteams =
+  req
+    "ListSubscribedWorkteams"
+    "fixture/ListSubscribedWorkteams.yaml"
+
+requestListTags :: ListTags -> TestTree
+requestListTags =
+  req
+    "ListTags"
+    "fixture/ListTags.yaml"
+
+requestListTrainingJobs :: ListTrainingJobs -> TestTree
+requestListTrainingJobs =
+  req
+    "ListTrainingJobs"
+    "fixture/ListTrainingJobs.yaml"
+
+requestListTrainingJobsForHyperParameterTuningJob :: ListTrainingJobsForHyperParameterTuningJob -> TestTree
+requestListTrainingJobsForHyperParameterTuningJob =
+  req
+    "ListTrainingJobsForHyperParameterTuningJob"
+    "fixture/ListTrainingJobsForHyperParameterTuningJob.yaml"
+
+requestListTransformJobs :: ListTransformJobs -> TestTree
+requestListTransformJobs =
+  req
+    "ListTransformJobs"
+    "fixture/ListTransformJobs.yaml"
+
+requestListTrialComponents :: ListTrialComponents -> TestTree
+requestListTrialComponents =
+  req
+    "ListTrialComponents"
+    "fixture/ListTrialComponents.yaml"
+
+requestListTrials :: ListTrials -> TestTree
+requestListTrials =
+  req
+    "ListTrials"
+    "fixture/ListTrials.yaml"
+
+requestListUserProfiles :: ListUserProfiles -> TestTree
+requestListUserProfiles =
+  req
+    "ListUserProfiles"
+    "fixture/ListUserProfiles.yaml"
+
+requestListWorkforces :: ListWorkforces -> TestTree
+requestListWorkforces =
+  req
+    "ListWorkforces"
+    "fixture/ListWorkforces.yaml"
+
+requestListWorkteams :: ListWorkteams -> TestTree
+requestListWorkteams =
+  req
+    "ListWorkteams"
+    "fixture/ListWorkteams.yaml"
+
+requestPutModelPackageGroupPolicy :: PutModelPackageGroupPolicy -> TestTree
+requestPutModelPackageGroupPolicy =
+  req
+    "PutModelPackageGroupPolicy"
+    "fixture/PutModelPackageGroupPolicy.yaml"
+
+requestQueryLineage :: QueryLineage -> TestTree
+requestQueryLineage =
+  req
+    "QueryLineage"
+    "fixture/QueryLineage.yaml"
+
+requestRegisterDevices :: RegisterDevices -> TestTree
+requestRegisterDevices =
+  req
+    "RegisterDevices"
+    "fixture/RegisterDevices.yaml"
+
+requestRenderUiTemplate :: RenderUiTemplate -> TestTree
+requestRenderUiTemplate =
+  req
+    "RenderUiTemplate"
+    "fixture/RenderUiTemplate.yaml"
+
+requestRetryPipelineExecution :: RetryPipelineExecution -> TestTree
+requestRetryPipelineExecution =
+  req
+    "RetryPipelineExecution"
+    "fixture/RetryPipelineExecution.yaml"
+
+requestSearch :: Search -> TestTree
+requestSearch =
+  req
+    "Search"
+    "fixture/Search.yaml"
+
+requestSendPipelineExecutionStepFailure :: SendPipelineExecutionStepFailure -> TestTree
+requestSendPipelineExecutionStepFailure =
+  req
+    "SendPipelineExecutionStepFailure"
+    "fixture/SendPipelineExecutionStepFailure.yaml"
+
+requestSendPipelineExecutionStepSuccess :: SendPipelineExecutionStepSuccess -> TestTree
+requestSendPipelineExecutionStepSuccess =
+  req
+    "SendPipelineExecutionStepSuccess"
+    "fixture/SendPipelineExecutionStepSuccess.yaml"
+
+requestStartEdgeDeploymentStage :: StartEdgeDeploymentStage -> TestTree
+requestStartEdgeDeploymentStage =
+  req
+    "StartEdgeDeploymentStage"
+    "fixture/StartEdgeDeploymentStage.yaml"
+
+requestStartInferenceExperiment :: StartInferenceExperiment -> TestTree
+requestStartInferenceExperiment =
+  req
+    "StartInferenceExperiment"
+    "fixture/StartInferenceExperiment.yaml"
+
+requestStartMonitoringSchedule :: StartMonitoringSchedule -> TestTree
+requestStartMonitoringSchedule =
+  req
+    "StartMonitoringSchedule"
+    "fixture/StartMonitoringSchedule.yaml"
+
+requestStartNotebookInstance :: StartNotebookInstance -> TestTree
+requestStartNotebookInstance =
+  req
+    "StartNotebookInstance"
+    "fixture/StartNotebookInstance.yaml"
+
+requestStartPipelineExecution :: StartPipelineExecution -> TestTree
+requestStartPipelineExecution =
+  req
+    "StartPipelineExecution"
+    "fixture/StartPipelineExecution.yaml"
+
+requestStopAutoMLJob :: StopAutoMLJob -> TestTree
+requestStopAutoMLJob =
+  req
+    "StopAutoMLJob"
+    "fixture/StopAutoMLJob.yaml"
+
+requestStopCompilationJob :: StopCompilationJob -> TestTree
+requestStopCompilationJob =
+  req
+    "StopCompilationJob"
+    "fixture/StopCompilationJob.yaml"
+
+requestStopEdgeDeploymentStage :: StopEdgeDeploymentStage -> TestTree
+requestStopEdgeDeploymentStage =
+  req
+    "StopEdgeDeploymentStage"
+    "fixture/StopEdgeDeploymentStage.yaml"
+
+requestStopEdgePackagingJob :: StopEdgePackagingJob -> TestTree
+requestStopEdgePackagingJob =
+  req
+    "StopEdgePackagingJob"
+    "fixture/StopEdgePackagingJob.yaml"
+
+requestStopHyperParameterTuningJob :: StopHyperParameterTuningJob -> TestTree
+requestStopHyperParameterTuningJob =
+  req
+    "StopHyperParameterTuningJob"
+    "fixture/StopHyperParameterTuningJob.yaml"
+
+requestStopInferenceExperiment :: StopInferenceExperiment -> TestTree
+requestStopInferenceExperiment =
+  req
+    "StopInferenceExperiment"
+    "fixture/StopInferenceExperiment.yaml"
+
+requestStopInferenceRecommendationsJob :: StopInferenceRecommendationsJob -> TestTree
+requestStopInferenceRecommendationsJob =
+  req
+    "StopInferenceRecommendationsJob"
+    "fixture/StopInferenceRecommendationsJob.yaml"
+
+requestStopLabelingJob :: StopLabelingJob -> TestTree
+requestStopLabelingJob =
+  req
+    "StopLabelingJob"
+    "fixture/StopLabelingJob.yaml"
+
+requestStopMonitoringSchedule :: StopMonitoringSchedule -> TestTree
+requestStopMonitoringSchedule =
+  req
+    "StopMonitoringSchedule"
+    "fixture/StopMonitoringSchedule.yaml"
+
+requestStopNotebookInstance :: StopNotebookInstance -> TestTree
+requestStopNotebookInstance =
+  req
+    "StopNotebookInstance"
+    "fixture/StopNotebookInstance.yaml"
+
+requestStopPipelineExecution :: StopPipelineExecution -> TestTree
+requestStopPipelineExecution =
+  req
+    "StopPipelineExecution"
+    "fixture/StopPipelineExecution.yaml"
+
+requestStopProcessingJob :: StopProcessingJob -> TestTree
+requestStopProcessingJob =
+  req
+    "StopProcessingJob"
+    "fixture/StopProcessingJob.yaml"
+
+requestStopTrainingJob :: StopTrainingJob -> TestTree
+requestStopTrainingJob =
+  req
+    "StopTrainingJob"
+    "fixture/StopTrainingJob.yaml"
+
+requestStopTransformJob :: StopTransformJob -> TestTree
+requestStopTransformJob =
+  req
+    "StopTransformJob"
+    "fixture/StopTransformJob.yaml"
+
+requestUpdateAction :: UpdateAction -> TestTree
+requestUpdateAction =
+  req
+    "UpdateAction"
+    "fixture/UpdateAction.yaml"
+
+requestUpdateAppImageConfig :: UpdateAppImageConfig -> TestTree
+requestUpdateAppImageConfig =
+  req
+    "UpdateAppImageConfig"
+    "fixture/UpdateAppImageConfig.yaml"
+
+requestUpdateArtifact :: UpdateArtifact -> TestTree
+requestUpdateArtifact =
+  req
+    "UpdateArtifact"
+    "fixture/UpdateArtifact.yaml"
+
+requestUpdateCodeRepository :: UpdateCodeRepository -> TestTree
+requestUpdateCodeRepository =
+  req
+    "UpdateCodeRepository"
+    "fixture/UpdateCodeRepository.yaml"
+
+requestUpdateContext :: UpdateContext -> TestTree
+requestUpdateContext =
+  req
+    "UpdateContext"
+    "fixture/UpdateContext.yaml"
+
+requestUpdateDeviceFleet :: UpdateDeviceFleet -> TestTree
+requestUpdateDeviceFleet =
+  req
+    "UpdateDeviceFleet"
+    "fixture/UpdateDeviceFleet.yaml"
+
+requestUpdateDevices :: UpdateDevices -> TestTree
+requestUpdateDevices =
+  req
+    "UpdateDevices"
+    "fixture/UpdateDevices.yaml"
+
+requestUpdateDomain :: UpdateDomain -> TestTree
+requestUpdateDomain =
+  req
+    "UpdateDomain"
+    "fixture/UpdateDomain.yaml"
+
+requestUpdateEndpoint :: UpdateEndpoint -> TestTree
+requestUpdateEndpoint =
+  req
+    "UpdateEndpoint"
+    "fixture/UpdateEndpoint.yaml"
+
+requestUpdateEndpointWeightsAndCapacities :: UpdateEndpointWeightsAndCapacities -> TestTree
+requestUpdateEndpointWeightsAndCapacities =
+  req
+    "UpdateEndpointWeightsAndCapacities"
+    "fixture/UpdateEndpointWeightsAndCapacities.yaml"
+
+requestUpdateExperiment :: UpdateExperiment -> TestTree
+requestUpdateExperiment =
+  req
+    "UpdateExperiment"
+    "fixture/UpdateExperiment.yaml"
+
+requestUpdateFeatureGroup :: UpdateFeatureGroup -> TestTree
+requestUpdateFeatureGroup =
+  req
+    "UpdateFeatureGroup"
+    "fixture/UpdateFeatureGroup.yaml"
+
+requestUpdateFeatureMetadata :: UpdateFeatureMetadata -> TestTree
+requestUpdateFeatureMetadata =
+  req
+    "UpdateFeatureMetadata"
+    "fixture/UpdateFeatureMetadata.yaml"
+
+requestUpdateHub :: UpdateHub -> TestTree
+requestUpdateHub =
+  req
+    "UpdateHub"
+    "fixture/UpdateHub.yaml"
+
+requestUpdateImage :: UpdateImage -> TestTree
+requestUpdateImage =
+  req
+    "UpdateImage"
+    "fixture/UpdateImage.yaml"
+
+requestUpdateImageVersion :: UpdateImageVersion -> TestTree
+requestUpdateImageVersion =
+  req
+    "UpdateImageVersion"
+    "fixture/UpdateImageVersion.yaml"
+
+requestUpdateInferenceExperiment :: UpdateInferenceExperiment -> TestTree
+requestUpdateInferenceExperiment =
+  req
+    "UpdateInferenceExperiment"
+    "fixture/UpdateInferenceExperiment.yaml"
+
+requestUpdateModelCard :: UpdateModelCard -> TestTree
+requestUpdateModelCard =
+  req
+    "UpdateModelCard"
+    "fixture/UpdateModelCard.yaml"
+
+requestUpdateModelPackage :: UpdateModelPackage -> TestTree
+requestUpdateModelPackage =
+  req
+    "UpdateModelPackage"
+    "fixture/UpdateModelPackage.yaml"
+
+requestUpdateMonitoringAlert :: UpdateMonitoringAlert -> TestTree
+requestUpdateMonitoringAlert =
+  req
+    "UpdateMonitoringAlert"
+    "fixture/UpdateMonitoringAlert.yaml"
+
+requestUpdateMonitoringSchedule :: UpdateMonitoringSchedule -> TestTree
+requestUpdateMonitoringSchedule =
+  req
+    "UpdateMonitoringSchedule"
+    "fixture/UpdateMonitoringSchedule.yaml"
+
+requestUpdateNotebookInstance :: UpdateNotebookInstance -> TestTree
+requestUpdateNotebookInstance =
+  req
+    "UpdateNotebookInstance"
+    "fixture/UpdateNotebookInstance.yaml"
+
+requestUpdateNotebookInstanceLifecycleConfig :: UpdateNotebookInstanceLifecycleConfig -> TestTree
+requestUpdateNotebookInstanceLifecycleConfig =
+  req
+    "UpdateNotebookInstanceLifecycleConfig"
+    "fixture/UpdateNotebookInstanceLifecycleConfig.yaml"
+
+requestUpdatePipeline :: UpdatePipeline -> TestTree
+requestUpdatePipeline =
+  req
+    "UpdatePipeline"
+    "fixture/UpdatePipeline.yaml"
+
+requestUpdatePipelineExecution :: UpdatePipelineExecution -> TestTree
+requestUpdatePipelineExecution =
+  req
+    "UpdatePipelineExecution"
+    "fixture/UpdatePipelineExecution.yaml"
+
+requestUpdateProject :: UpdateProject -> TestTree
+requestUpdateProject =
+  req
+    "UpdateProject"
+    "fixture/UpdateProject.yaml"
+
+requestUpdateSpace :: UpdateSpace -> TestTree
+requestUpdateSpace =
+  req
+    "UpdateSpace"
+    "fixture/UpdateSpace.yaml"
+
+requestUpdateTrainingJob :: UpdateTrainingJob -> TestTree
+requestUpdateTrainingJob =
+  req
+    "UpdateTrainingJob"
+    "fixture/UpdateTrainingJob.yaml"
+
+requestUpdateTrial :: UpdateTrial -> TestTree
+requestUpdateTrial =
+  req
+    "UpdateTrial"
+    "fixture/UpdateTrial.yaml"
+
+requestUpdateTrialComponent :: UpdateTrialComponent -> TestTree
+requestUpdateTrialComponent =
+  req
+    "UpdateTrialComponent"
+    "fixture/UpdateTrialComponent.yaml"
+
+requestUpdateUserProfile :: UpdateUserProfile -> TestTree
+requestUpdateUserProfile =
+  req
+    "UpdateUserProfile"
+    "fixture/UpdateUserProfile.yaml"
+
+requestUpdateWorkforce :: UpdateWorkforce -> TestTree
+requestUpdateWorkforce =
+  req
+    "UpdateWorkforce"
+    "fixture/UpdateWorkforce.yaml"
+
+requestUpdateWorkteam :: UpdateWorkteam -> TestTree
+requestUpdateWorkteam =
+  req
+    "UpdateWorkteam"
+    "fixture/UpdateWorkteam.yaml"
+
+-- Responses
+
+responseAddAssociation :: AddAssociationResponse -> TestTree
+responseAddAssociation =
+  res
+    "AddAssociationResponse"
+    "fixture/AddAssociationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddAssociation)
+
+responseAddTags :: AddTagsResponse -> TestTree
+responseAddTags =
+  res
+    "AddTagsResponse"
+    "fixture/AddTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddTags)
+
+responseAssociateTrialComponent :: AssociateTrialComponentResponse -> TestTree
+responseAssociateTrialComponent =
+  res
+    "AssociateTrialComponentResponse"
+    "fixture/AssociateTrialComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateTrialComponent)
+
+responseBatchDescribeModelPackage :: BatchDescribeModelPackageResponse -> TestTree
+responseBatchDescribeModelPackage =
+  res
+    "BatchDescribeModelPackageResponse"
+    "fixture/BatchDescribeModelPackageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchDescribeModelPackage)
+
+responseCreateAction :: CreateActionResponse -> TestTree
+responseCreateAction =
+  res
+    "CreateActionResponse"
+    "fixture/CreateActionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAction)
+
+responseCreateAlgorithm :: CreateAlgorithmResponse -> TestTree
+responseCreateAlgorithm =
+  res
+    "CreateAlgorithmResponse"
+    "fixture/CreateAlgorithmResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAlgorithm)
+
+responseCreateApp :: CreateAppResponse -> TestTree
+responseCreateApp =
+  res
+    "CreateAppResponse"
+    "fixture/CreateAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateApp)
+
+responseCreateAppImageConfig :: CreateAppImageConfigResponse -> TestTree
+responseCreateAppImageConfig =
+  res
+    "CreateAppImageConfigResponse"
+    "fixture/CreateAppImageConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAppImageConfig)
+
+responseCreateArtifact :: CreateArtifactResponse -> TestTree
+responseCreateArtifact =
+  res
+    "CreateArtifactResponse"
+    "fixture/CreateArtifactResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateArtifact)
+
+responseCreateAutoMLJob :: CreateAutoMLJobResponse -> TestTree
+responseCreateAutoMLJob =
+  res
+    "CreateAutoMLJobResponse"
+    "fixture/CreateAutoMLJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateAutoMLJob)
+
+responseCreateCodeRepository :: CreateCodeRepositoryResponse -> TestTree
+responseCreateCodeRepository =
+  res
+    "CreateCodeRepositoryResponse"
+    "fixture/CreateCodeRepositoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCodeRepository)
+
+responseCreateCompilationJob :: CreateCompilationJobResponse -> TestTree
+responseCreateCompilationJob =
+  res
+    "CreateCompilationJobResponse"
+    "fixture/CreateCompilationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCompilationJob)
+
+responseCreateContext :: CreateContextResponse -> TestTree
+responseCreateContext =
+  res
+    "CreateContextResponse"
+    "fixture/CreateContextResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateContext)
+
+responseCreateDataQualityJobDefinition :: CreateDataQualityJobDefinitionResponse -> TestTree
+responseCreateDataQualityJobDefinition =
+  res
+    "CreateDataQualityJobDefinitionResponse"
+    "fixture/CreateDataQualityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDataQualityJobDefinition)
+
+responseCreateDeviceFleet :: CreateDeviceFleetResponse -> TestTree
+responseCreateDeviceFleet =
+  res
+    "CreateDeviceFleetResponse"
+    "fixture/CreateDeviceFleetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDeviceFleet)
+
+responseCreateDomain :: CreateDomainResponse -> TestTree
+responseCreateDomain =
+  res
+    "CreateDomainResponse"
+    "fixture/CreateDomainResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDomain)
+
+responseCreateEdgeDeploymentPlan :: CreateEdgeDeploymentPlanResponse -> TestTree
+responseCreateEdgeDeploymentPlan =
+  res
+    "CreateEdgeDeploymentPlanResponse"
+    "fixture/CreateEdgeDeploymentPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEdgeDeploymentPlan)
+
+responseCreateEdgeDeploymentStage :: CreateEdgeDeploymentStageResponse -> TestTree
+responseCreateEdgeDeploymentStage =
+  res
+    "CreateEdgeDeploymentStageResponse"
+    "fixture/CreateEdgeDeploymentStageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEdgeDeploymentStage)
+
+responseCreateEdgePackagingJob :: CreateEdgePackagingJobResponse -> TestTree
+responseCreateEdgePackagingJob =
+  res
+    "CreateEdgePackagingJobResponse"
+    "fixture/CreateEdgePackagingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEdgePackagingJob)
+
+responseCreateEndpoint :: CreateEndpointResponse -> TestTree
+responseCreateEndpoint =
+  res
+    "CreateEndpointResponse"
+    "fixture/CreateEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEndpoint)
+
+responseCreateEndpointConfig :: CreateEndpointConfigResponse -> TestTree
+responseCreateEndpointConfig =
+  res
+    "CreateEndpointConfigResponse"
+    "fixture/CreateEndpointConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEndpointConfig)
+
+responseCreateExperiment :: CreateExperimentResponse -> TestTree
+responseCreateExperiment =
+  res
+    "CreateExperimentResponse"
+    "fixture/CreateExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateExperiment)
+
+responseCreateFeatureGroup :: CreateFeatureGroupResponse -> TestTree
+responseCreateFeatureGroup =
+  res
+    "CreateFeatureGroupResponse"
+    "fixture/CreateFeatureGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFeatureGroup)
+
+responseCreateFlowDefinition :: CreateFlowDefinitionResponse -> TestTree
+responseCreateFlowDefinition =
+  res
+    "CreateFlowDefinitionResponse"
+    "fixture/CreateFlowDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFlowDefinition)
+
+responseCreateHub :: CreateHubResponse -> TestTree
+responseCreateHub =
+  res
+    "CreateHubResponse"
+    "fixture/CreateHubResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateHub)
+
+responseCreateHumanTaskUi :: CreateHumanTaskUiResponse -> TestTree
+responseCreateHumanTaskUi =
+  res
+    "CreateHumanTaskUiResponse"
+    "fixture/CreateHumanTaskUiResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateHumanTaskUi)
+
+responseCreateHyperParameterTuningJob :: CreateHyperParameterTuningJobResponse -> TestTree
+responseCreateHyperParameterTuningJob =
+  res
+    "CreateHyperParameterTuningJobResponse"
+    "fixture/CreateHyperParameterTuningJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateHyperParameterTuningJob)
+
+responseCreateImage :: CreateImageResponse -> TestTree
+responseCreateImage =
+  res
+    "CreateImageResponse"
+    "fixture/CreateImageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateImage)
+
+responseCreateImageVersion :: CreateImageVersionResponse -> TestTree
+responseCreateImageVersion =
+  res
+    "CreateImageVersionResponse"
+    "fixture/CreateImageVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateImageVersion)
+
+responseCreateInferenceExperiment :: CreateInferenceExperimentResponse -> TestTree
+responseCreateInferenceExperiment =
+  res
+    "CreateInferenceExperimentResponse"
+    "fixture/CreateInferenceExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateInferenceExperiment)
+
+responseCreateInferenceRecommendationsJob :: CreateInferenceRecommendationsJobResponse -> TestTree
+responseCreateInferenceRecommendationsJob =
+  res
+    "CreateInferenceRecommendationsJobResponse"
+    "fixture/CreateInferenceRecommendationsJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateInferenceRecommendationsJob)
+
+responseCreateLabelingJob :: CreateLabelingJobResponse -> TestTree
+responseCreateLabelingJob =
+  res
+    "CreateLabelingJobResponse"
+    "fixture/CreateLabelingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLabelingJob)
+
+responseCreateModel :: CreateModelResponse -> TestTree
+responseCreateModel =
+  res
+    "CreateModelResponse"
+    "fixture/CreateModelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModel)
+
+responseCreateModelBiasJobDefinition :: CreateModelBiasJobDefinitionResponse -> TestTree
+responseCreateModelBiasJobDefinition =
+  res
+    "CreateModelBiasJobDefinitionResponse"
+    "fixture/CreateModelBiasJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelBiasJobDefinition)
+
+responseCreateModelCard :: CreateModelCardResponse -> TestTree
+responseCreateModelCard =
+  res
+    "CreateModelCardResponse"
+    "fixture/CreateModelCardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelCard)
+
+responseCreateModelCardExportJob :: CreateModelCardExportJobResponse -> TestTree
+responseCreateModelCardExportJob =
+  res
+    "CreateModelCardExportJobResponse"
+    "fixture/CreateModelCardExportJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelCardExportJob)
+
+responseCreateModelExplainabilityJobDefinition :: CreateModelExplainabilityJobDefinitionResponse -> TestTree
+responseCreateModelExplainabilityJobDefinition =
+  res
+    "CreateModelExplainabilityJobDefinitionResponse"
+    "fixture/CreateModelExplainabilityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelExplainabilityJobDefinition)
+
+responseCreateModelPackage :: CreateModelPackageResponse -> TestTree
+responseCreateModelPackage =
+  res
+    "CreateModelPackageResponse"
+    "fixture/CreateModelPackageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelPackage)
+
+responseCreateModelPackageGroup :: CreateModelPackageGroupResponse -> TestTree
+responseCreateModelPackageGroup =
+  res
+    "CreateModelPackageGroupResponse"
+    "fixture/CreateModelPackageGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelPackageGroup)
+
+responseCreateModelQualityJobDefinition :: CreateModelQualityJobDefinitionResponse -> TestTree
+responseCreateModelQualityJobDefinition =
+  res
+    "CreateModelQualityJobDefinitionResponse"
+    "fixture/CreateModelQualityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModelQualityJobDefinition)
+
+responseCreateMonitoringSchedule :: CreateMonitoringScheduleResponse -> TestTree
+responseCreateMonitoringSchedule =
+  res
+    "CreateMonitoringScheduleResponse"
+    "fixture/CreateMonitoringScheduleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMonitoringSchedule)
+
+responseCreateNotebookInstance :: CreateNotebookInstanceResponse -> TestTree
+responseCreateNotebookInstance =
+  res
+    "CreateNotebookInstanceResponse"
+    "fixture/CreateNotebookInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateNotebookInstance)
+
+responseCreateNotebookInstanceLifecycleConfig :: CreateNotebookInstanceLifecycleConfigResponse -> TestTree
+responseCreateNotebookInstanceLifecycleConfig =
+  res
+    "CreateNotebookInstanceLifecycleConfigResponse"
+    "fixture/CreateNotebookInstanceLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateNotebookInstanceLifecycleConfig)
+
+responseCreatePipeline :: CreatePipelineResponse -> TestTree
+responseCreatePipeline =
+  res
+    "CreatePipelineResponse"
+    "fixture/CreatePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePipeline)
+
+responseCreatePresignedDomainUrl :: CreatePresignedDomainUrlResponse -> TestTree
+responseCreatePresignedDomainUrl =
+  res
+    "CreatePresignedDomainUrlResponse"
+    "fixture/CreatePresignedDomainUrlResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePresignedDomainUrl)
+
+responseCreatePresignedNotebookInstanceUrl :: CreatePresignedNotebookInstanceUrlResponse -> TestTree
+responseCreatePresignedNotebookInstanceUrl =
+  res
+    "CreatePresignedNotebookInstanceUrlResponse"
+    "fixture/CreatePresignedNotebookInstanceUrlResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePresignedNotebookInstanceUrl)
+
+responseCreateProcessingJob :: CreateProcessingJobResponse -> TestTree
+responseCreateProcessingJob =
+  res
+    "CreateProcessingJobResponse"
+    "fixture/CreateProcessingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateProcessingJob)
+
+responseCreateProject :: CreateProjectResponse -> TestTree
+responseCreateProject =
+  res
+    "CreateProjectResponse"
+    "fixture/CreateProjectResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateProject)
+
+responseCreateSpace :: CreateSpaceResponse -> TestTree
+responseCreateSpace =
+  res
+    "CreateSpaceResponse"
+    "fixture/CreateSpaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSpace)
+
+responseCreateStudioLifecycleConfig :: CreateStudioLifecycleConfigResponse -> TestTree
+responseCreateStudioLifecycleConfig =
+  res
+    "CreateStudioLifecycleConfigResponse"
+    "fixture/CreateStudioLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateStudioLifecycleConfig)
+
+responseCreateTrainingJob :: CreateTrainingJobResponse -> TestTree
+responseCreateTrainingJob =
+  res
+    "CreateTrainingJobResponse"
+    "fixture/CreateTrainingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTrainingJob)
+
+responseCreateTransformJob :: CreateTransformJobResponse -> TestTree
+responseCreateTransformJob =
+  res
+    "CreateTransformJobResponse"
+    "fixture/CreateTransformJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTransformJob)
+
+responseCreateTrial :: CreateTrialResponse -> TestTree
+responseCreateTrial =
+  res
+    "CreateTrialResponse"
+    "fixture/CreateTrialResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTrial)
+
+responseCreateTrialComponent :: CreateTrialComponentResponse -> TestTree
+responseCreateTrialComponent =
+  res
+    "CreateTrialComponentResponse"
+    "fixture/CreateTrialComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTrialComponent)
+
+responseCreateUserProfile :: CreateUserProfileResponse -> TestTree
+responseCreateUserProfile =
+  res
+    "CreateUserProfileResponse"
+    "fixture/CreateUserProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateUserProfile)
+
+responseCreateWorkforce :: CreateWorkforceResponse -> TestTree
+responseCreateWorkforce =
+  res
+    "CreateWorkforceResponse"
+    "fixture/CreateWorkforceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateWorkforce)
+
+responseCreateWorkteam :: CreateWorkteamResponse -> TestTree
+responseCreateWorkteam =
+  res
+    "CreateWorkteamResponse"
+    "fixture/CreateWorkteamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateWorkteam)
+
+responseDeleteAction :: DeleteActionResponse -> TestTree
+responseDeleteAction =
+  res
+    "DeleteActionResponse"
+    "fixture/DeleteActionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAction)
+
+responseDeleteAlgorithm :: DeleteAlgorithmResponse -> TestTree
+responseDeleteAlgorithm =
+  res
+    "DeleteAlgorithmResponse"
+    "fixture/DeleteAlgorithmResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAlgorithm)
+
+responseDeleteApp :: DeleteAppResponse -> TestTree
+responseDeleteApp =
+  res
+    "DeleteAppResponse"
+    "fixture/DeleteAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApp)
+
+responseDeleteAppImageConfig :: DeleteAppImageConfigResponse -> TestTree
+responseDeleteAppImageConfig =
+  res
+    "DeleteAppImageConfigResponse"
+    "fixture/DeleteAppImageConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAppImageConfig)
+
+responseDeleteArtifact :: DeleteArtifactResponse -> TestTree
+responseDeleteArtifact =
+  res
+    "DeleteArtifactResponse"
+    "fixture/DeleteArtifactResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteArtifact)
+
+responseDeleteAssociation :: DeleteAssociationResponse -> TestTree
+responseDeleteAssociation =
+  res
+    "DeleteAssociationResponse"
+    "fixture/DeleteAssociationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAssociation)
+
+responseDeleteCodeRepository :: DeleteCodeRepositoryResponse -> TestTree
+responseDeleteCodeRepository =
+  res
+    "DeleteCodeRepositoryResponse"
+    "fixture/DeleteCodeRepositoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteCodeRepository)
+
+responseDeleteContext :: DeleteContextResponse -> TestTree
+responseDeleteContext =
+  res
+    "DeleteContextResponse"
+    "fixture/DeleteContextResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteContext)
+
+responseDeleteDataQualityJobDefinition :: DeleteDataQualityJobDefinitionResponse -> TestTree
+responseDeleteDataQualityJobDefinition =
+  res
+    "DeleteDataQualityJobDefinitionResponse"
+    "fixture/DeleteDataQualityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDataQualityJobDefinition)
+
+responseDeleteDeviceFleet :: DeleteDeviceFleetResponse -> TestTree
+responseDeleteDeviceFleet =
+  res
+    "DeleteDeviceFleetResponse"
+    "fixture/DeleteDeviceFleetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDeviceFleet)
+
+responseDeleteDomain :: DeleteDomainResponse -> TestTree
+responseDeleteDomain =
+  res
+    "DeleteDomainResponse"
+    "fixture/DeleteDomainResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDomain)
+
+responseDeleteEdgeDeploymentPlan :: DeleteEdgeDeploymentPlanResponse -> TestTree
+responseDeleteEdgeDeploymentPlan =
+  res
+    "DeleteEdgeDeploymentPlanResponse"
+    "fixture/DeleteEdgeDeploymentPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEdgeDeploymentPlan)
+
+responseDeleteEdgeDeploymentStage :: DeleteEdgeDeploymentStageResponse -> TestTree
+responseDeleteEdgeDeploymentStage =
+  res
+    "DeleteEdgeDeploymentStageResponse"
+    "fixture/DeleteEdgeDeploymentStageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEdgeDeploymentStage)
+
+responseDeleteEndpoint :: DeleteEndpointResponse -> TestTree
+responseDeleteEndpoint =
+  res
+    "DeleteEndpointResponse"
+    "fixture/DeleteEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEndpoint)
+
+responseDeleteEndpointConfig :: DeleteEndpointConfigResponse -> TestTree
+responseDeleteEndpointConfig =
+  res
+    "DeleteEndpointConfigResponse"
+    "fixture/DeleteEndpointConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEndpointConfig)
+
+responseDeleteExperiment :: DeleteExperimentResponse -> TestTree
+responseDeleteExperiment =
+  res
+    "DeleteExperimentResponse"
+    "fixture/DeleteExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteExperiment)
+
+responseDeleteFeatureGroup :: DeleteFeatureGroupResponse -> TestTree
+responseDeleteFeatureGroup =
+  res
+    "DeleteFeatureGroupResponse"
+    "fixture/DeleteFeatureGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFeatureGroup)
+
+responseDeleteFlowDefinition :: DeleteFlowDefinitionResponse -> TestTree
+responseDeleteFlowDefinition =
+  res
+    "DeleteFlowDefinitionResponse"
+    "fixture/DeleteFlowDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFlowDefinition)
+
+responseDeleteHub :: DeleteHubResponse -> TestTree
+responseDeleteHub =
+  res
+    "DeleteHubResponse"
+    "fixture/DeleteHubResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteHub)
+
+responseDeleteHubContent :: DeleteHubContentResponse -> TestTree
+responseDeleteHubContent =
+  res
+    "DeleteHubContentResponse"
+    "fixture/DeleteHubContentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteHubContent)
+
+responseDeleteHumanTaskUi :: DeleteHumanTaskUiResponse -> TestTree
+responseDeleteHumanTaskUi =
+  res
+    "DeleteHumanTaskUiResponse"
+    "fixture/DeleteHumanTaskUiResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteHumanTaskUi)
+
+responseDeleteImage :: DeleteImageResponse -> TestTree
+responseDeleteImage =
+  res
+    "DeleteImageResponse"
+    "fixture/DeleteImageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteImage)
+
+responseDeleteImageVersion :: DeleteImageVersionResponse -> TestTree
+responseDeleteImageVersion =
+  res
+    "DeleteImageVersionResponse"
+    "fixture/DeleteImageVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteImageVersion)
+
+responseDeleteInferenceExperiment :: DeleteInferenceExperimentResponse -> TestTree
+responseDeleteInferenceExperiment =
+  res
+    "DeleteInferenceExperimentResponse"
+    "fixture/DeleteInferenceExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteInferenceExperiment)
+
+responseDeleteModel :: DeleteModelResponse -> TestTree
+responseDeleteModel =
+  res
+    "DeleteModelResponse"
+    "fixture/DeleteModelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModel)
+
+responseDeleteModelBiasJobDefinition :: DeleteModelBiasJobDefinitionResponse -> TestTree
+responseDeleteModelBiasJobDefinition =
+  res
+    "DeleteModelBiasJobDefinitionResponse"
+    "fixture/DeleteModelBiasJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelBiasJobDefinition)
+
+responseDeleteModelCard :: DeleteModelCardResponse -> TestTree
+responseDeleteModelCard =
+  res
+    "DeleteModelCardResponse"
+    "fixture/DeleteModelCardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelCard)
+
+responseDeleteModelExplainabilityJobDefinition :: DeleteModelExplainabilityJobDefinitionResponse -> TestTree
+responseDeleteModelExplainabilityJobDefinition =
+  res
+    "DeleteModelExplainabilityJobDefinitionResponse"
+    "fixture/DeleteModelExplainabilityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelExplainabilityJobDefinition)
+
+responseDeleteModelPackage :: DeleteModelPackageResponse -> TestTree
+responseDeleteModelPackage =
+  res
+    "DeleteModelPackageResponse"
+    "fixture/DeleteModelPackageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelPackage)
+
+responseDeleteModelPackageGroup :: DeleteModelPackageGroupResponse -> TestTree
+responseDeleteModelPackageGroup =
+  res
+    "DeleteModelPackageGroupResponse"
+    "fixture/DeleteModelPackageGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelPackageGroup)
+
+responseDeleteModelPackageGroupPolicy :: DeleteModelPackageGroupPolicyResponse -> TestTree
+responseDeleteModelPackageGroupPolicy =
+  res
+    "DeleteModelPackageGroupPolicyResponse"
+    "fixture/DeleteModelPackageGroupPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelPackageGroupPolicy)
+
+responseDeleteModelQualityJobDefinition :: DeleteModelQualityJobDefinitionResponse -> TestTree
+responseDeleteModelQualityJobDefinition =
+  res
+    "DeleteModelQualityJobDefinitionResponse"
+    "fixture/DeleteModelQualityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModelQualityJobDefinition)
+
+responseDeleteMonitoringSchedule :: DeleteMonitoringScheduleResponse -> TestTree
+responseDeleteMonitoringSchedule =
+  res
+    "DeleteMonitoringScheduleResponse"
+    "fixture/DeleteMonitoringScheduleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteMonitoringSchedule)
+
+responseDeleteNotebookInstance :: DeleteNotebookInstanceResponse -> TestTree
+responseDeleteNotebookInstance =
+  res
+    "DeleteNotebookInstanceResponse"
+    "fixture/DeleteNotebookInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteNotebookInstance)
+
+responseDeleteNotebookInstanceLifecycleConfig :: DeleteNotebookInstanceLifecycleConfigResponse -> TestTree
+responseDeleteNotebookInstanceLifecycleConfig =
+  res
+    "DeleteNotebookInstanceLifecycleConfigResponse"
+    "fixture/DeleteNotebookInstanceLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteNotebookInstanceLifecycleConfig)
+
+responseDeletePipeline :: DeletePipelineResponse -> TestTree
+responseDeletePipeline =
+  res
+    "DeletePipelineResponse"
+    "fixture/DeletePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePipeline)
+
+responseDeleteProject :: DeleteProjectResponse -> TestTree
+responseDeleteProject =
+  res
+    "DeleteProjectResponse"
+    "fixture/DeleteProjectResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteProject)
+
+responseDeleteSpace :: DeleteSpaceResponse -> TestTree
+responseDeleteSpace =
+  res
+    "DeleteSpaceResponse"
+    "fixture/DeleteSpaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSpace)
+
+responseDeleteStudioLifecycleConfig :: DeleteStudioLifecycleConfigResponse -> TestTree
+responseDeleteStudioLifecycleConfig =
+  res
+    "DeleteStudioLifecycleConfigResponse"
+    "fixture/DeleteStudioLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteStudioLifecycleConfig)
+
+responseDeleteTags :: DeleteTagsResponse -> TestTree
+responseDeleteTags =
+  res
+    "DeleteTagsResponse"
+    "fixture/DeleteTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTags)
+
+responseDeleteTrial :: DeleteTrialResponse -> TestTree
+responseDeleteTrial =
+  res
+    "DeleteTrialResponse"
+    "fixture/DeleteTrialResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTrial)
+
+responseDeleteTrialComponent :: DeleteTrialComponentResponse -> TestTree
+responseDeleteTrialComponent =
+  res
+    "DeleteTrialComponentResponse"
+    "fixture/DeleteTrialComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTrialComponent)
+
+responseDeleteUserProfile :: DeleteUserProfileResponse -> TestTree
+responseDeleteUserProfile =
+  res
+    "DeleteUserProfileResponse"
+    "fixture/DeleteUserProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteUserProfile)
+
+responseDeleteWorkforce :: DeleteWorkforceResponse -> TestTree
+responseDeleteWorkforce =
+  res
+    "DeleteWorkforceResponse"
+    "fixture/DeleteWorkforceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteWorkforce)
+
+responseDeleteWorkteam :: DeleteWorkteamResponse -> TestTree
+responseDeleteWorkteam =
+  res
+    "DeleteWorkteamResponse"
+    "fixture/DeleteWorkteamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteWorkteam)
+
+responseDeregisterDevices :: DeregisterDevicesResponse -> TestTree
+responseDeregisterDevices =
+  res
+    "DeregisterDevicesResponse"
+    "fixture/DeregisterDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeregisterDevices)
+
+responseDescribeAction :: DescribeActionResponse -> TestTree
+responseDescribeAction =
+  res
+    "DescribeActionResponse"
+    "fixture/DescribeActionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAction)
+
+responseDescribeAlgorithm :: DescribeAlgorithmResponse -> TestTree
+responseDescribeAlgorithm =
+  res
+    "DescribeAlgorithmResponse"
+    "fixture/DescribeAlgorithmResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAlgorithm)
+
+responseDescribeApp :: DescribeAppResponse -> TestTree
+responseDescribeApp =
+  res
+    "DescribeAppResponse"
+    "fixture/DescribeAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeApp)
+
+responseDescribeAppImageConfig :: DescribeAppImageConfigResponse -> TestTree
+responseDescribeAppImageConfig =
+  res
+    "DescribeAppImageConfigResponse"
+    "fixture/DescribeAppImageConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAppImageConfig)
+
+responseDescribeArtifact :: DescribeArtifactResponse -> TestTree
+responseDescribeArtifact =
+  res
+    "DescribeArtifactResponse"
+    "fixture/DescribeArtifactResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeArtifact)
+
+responseDescribeAutoMLJob :: DescribeAutoMLJobResponse -> TestTree
+responseDescribeAutoMLJob =
+  res
+    "DescribeAutoMLJobResponse"
+    "fixture/DescribeAutoMLJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAutoMLJob)
+
+responseDescribeCodeRepository :: DescribeCodeRepositoryResponse -> TestTree
+responseDescribeCodeRepository =
+  res
+    "DescribeCodeRepositoryResponse"
+    "fixture/DescribeCodeRepositoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeCodeRepository)
+
+responseDescribeCompilationJob :: DescribeCompilationJobResponse -> TestTree
+responseDescribeCompilationJob =
+  res
+    "DescribeCompilationJobResponse"
+    "fixture/DescribeCompilationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeCompilationJob)
+
+responseDescribeContext :: DescribeContextResponse -> TestTree
+responseDescribeContext =
+  res
+    "DescribeContextResponse"
+    "fixture/DescribeContextResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeContext)
+
+responseDescribeDataQualityJobDefinition :: DescribeDataQualityJobDefinitionResponse -> TestTree
+responseDescribeDataQualityJobDefinition =
+  res
+    "DescribeDataQualityJobDefinitionResponse"
+    "fixture/DescribeDataQualityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataQualityJobDefinition)
+
+responseDescribeDevice :: DescribeDeviceResponse -> TestTree
+responseDescribeDevice =
+  res
+    "DescribeDeviceResponse"
+    "fixture/DescribeDeviceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDevice)
+
+responseDescribeDeviceFleet :: DescribeDeviceFleetResponse -> TestTree
+responseDescribeDeviceFleet =
+  res
+    "DescribeDeviceFleetResponse"
+    "fixture/DescribeDeviceFleetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDeviceFleet)
+
+responseDescribeDomain :: DescribeDomainResponse -> TestTree
+responseDescribeDomain =
+  res
+    "DescribeDomainResponse"
+    "fixture/DescribeDomainResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDomain)
+
+responseDescribeEdgeDeploymentPlan :: DescribeEdgeDeploymentPlanResponse -> TestTree
+responseDescribeEdgeDeploymentPlan =
+  res
+    "DescribeEdgeDeploymentPlanResponse"
+    "fixture/DescribeEdgeDeploymentPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEdgeDeploymentPlan)
+
+responseDescribeEdgePackagingJob :: DescribeEdgePackagingJobResponse -> TestTree
+responseDescribeEdgePackagingJob =
+  res
+    "DescribeEdgePackagingJobResponse"
+    "fixture/DescribeEdgePackagingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEdgePackagingJob)
+
+responseDescribeEndpoint :: DescribeEndpointResponse -> TestTree
+responseDescribeEndpoint =
+  res
+    "DescribeEndpointResponse"
+    "fixture/DescribeEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEndpoint)
+
+responseDescribeEndpointConfig :: DescribeEndpointConfigResponse -> TestTree
+responseDescribeEndpointConfig =
+  res
+    "DescribeEndpointConfigResponse"
+    "fixture/DescribeEndpointConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEndpointConfig)
+
+responseDescribeExperiment :: DescribeExperimentResponse -> TestTree
+responseDescribeExperiment =
+  res
+    "DescribeExperimentResponse"
+    "fixture/DescribeExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeExperiment)
+
+responseDescribeFeatureGroup :: DescribeFeatureGroupResponse -> TestTree
+responseDescribeFeatureGroup =
+  res
+    "DescribeFeatureGroupResponse"
+    "fixture/DescribeFeatureGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFeatureGroup)
+
+responseDescribeFeatureMetadata :: DescribeFeatureMetadataResponse -> TestTree
+responseDescribeFeatureMetadata =
+  res
+    "DescribeFeatureMetadataResponse"
+    "fixture/DescribeFeatureMetadataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFeatureMetadata)
+
+responseDescribeFlowDefinition :: DescribeFlowDefinitionResponse -> TestTree
+responseDescribeFlowDefinition =
+  res
+    "DescribeFlowDefinitionResponse"
+    "fixture/DescribeFlowDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFlowDefinition)
+
+responseDescribeHub :: DescribeHubResponse -> TestTree
+responseDescribeHub =
+  res
+    "DescribeHubResponse"
+    "fixture/DescribeHubResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeHub)
+
+responseDescribeHubContent :: DescribeHubContentResponse -> TestTree
+responseDescribeHubContent =
+  res
+    "DescribeHubContentResponse"
+    "fixture/DescribeHubContentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeHubContent)
+
+responseDescribeHumanTaskUi :: DescribeHumanTaskUiResponse -> TestTree
+responseDescribeHumanTaskUi =
+  res
+    "DescribeHumanTaskUiResponse"
+    "fixture/DescribeHumanTaskUiResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeHumanTaskUi)
+
+responseDescribeHyperParameterTuningJob :: DescribeHyperParameterTuningJobResponse -> TestTree
+responseDescribeHyperParameterTuningJob =
+  res
+    "DescribeHyperParameterTuningJobResponse"
+    "fixture/DescribeHyperParameterTuningJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeHyperParameterTuningJob)
+
+responseDescribeImage :: DescribeImageResponse -> TestTree
+responseDescribeImage =
+  res
+    "DescribeImageResponse"
+    "fixture/DescribeImageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeImage)
+
+responseDescribeImageVersion :: DescribeImageVersionResponse -> TestTree
+responseDescribeImageVersion =
+  res
+    "DescribeImageVersionResponse"
+    "fixture/DescribeImageVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeImageVersion)
+
+responseDescribeInferenceExperiment :: DescribeInferenceExperimentResponse -> TestTree
+responseDescribeInferenceExperiment =
+  res
+    "DescribeInferenceExperimentResponse"
+    "fixture/DescribeInferenceExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeInferenceExperiment)
+
+responseDescribeInferenceRecommendationsJob :: DescribeInferenceRecommendationsJobResponse -> TestTree
+responseDescribeInferenceRecommendationsJob =
+  res
+    "DescribeInferenceRecommendationsJobResponse"
+    "fixture/DescribeInferenceRecommendationsJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeInferenceRecommendationsJob)
+
+responseDescribeLabelingJob :: DescribeLabelingJobResponse -> TestTree
+responseDescribeLabelingJob =
+  res
+    "DescribeLabelingJobResponse"
+    "fixture/DescribeLabelingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeLabelingJob)
+
+responseDescribeLineageGroup :: DescribeLineageGroupResponse -> TestTree
+responseDescribeLineageGroup =
+  res
+    "DescribeLineageGroupResponse"
+    "fixture/DescribeLineageGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeLineageGroup)
+
+responseDescribeModel :: DescribeModelResponse -> TestTree
+responseDescribeModel =
+  res
+    "DescribeModelResponse"
+    "fixture/DescribeModelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModel)
+
+responseDescribeModelBiasJobDefinition :: DescribeModelBiasJobDefinitionResponse -> TestTree
+responseDescribeModelBiasJobDefinition =
+  res
+    "DescribeModelBiasJobDefinitionResponse"
+    "fixture/DescribeModelBiasJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelBiasJobDefinition)
+
+responseDescribeModelCard :: DescribeModelCardResponse -> TestTree
+responseDescribeModelCard =
+  res
+    "DescribeModelCardResponse"
+    "fixture/DescribeModelCardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelCard)
+
+responseDescribeModelCardExportJob :: DescribeModelCardExportJobResponse -> TestTree
+responseDescribeModelCardExportJob =
+  res
+    "DescribeModelCardExportJobResponse"
+    "fixture/DescribeModelCardExportJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelCardExportJob)
+
+responseDescribeModelExplainabilityJobDefinition :: DescribeModelExplainabilityJobDefinitionResponse -> TestTree
+responseDescribeModelExplainabilityJobDefinition =
+  res
+    "DescribeModelExplainabilityJobDefinitionResponse"
+    "fixture/DescribeModelExplainabilityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelExplainabilityJobDefinition)
+
+responseDescribeModelPackage :: DescribeModelPackageResponse -> TestTree
+responseDescribeModelPackage =
+  res
+    "DescribeModelPackageResponse"
+    "fixture/DescribeModelPackageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelPackage)
+
+responseDescribeModelPackageGroup :: DescribeModelPackageGroupResponse -> TestTree
+responseDescribeModelPackageGroup =
+  res
+    "DescribeModelPackageGroupResponse"
+    "fixture/DescribeModelPackageGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelPackageGroup)
+
+responseDescribeModelQualityJobDefinition :: DescribeModelQualityJobDefinitionResponse -> TestTree
+responseDescribeModelQualityJobDefinition =
+  res
+    "DescribeModelQualityJobDefinitionResponse"
+    "fixture/DescribeModelQualityJobDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModelQualityJobDefinition)
+
+responseDescribeMonitoringSchedule :: DescribeMonitoringScheduleResponse -> TestTree
+responseDescribeMonitoringSchedule =
+  res
+    "DescribeMonitoringScheduleResponse"
+    "fixture/DescribeMonitoringScheduleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeMonitoringSchedule)
+
+responseDescribeNotebookInstance :: DescribeNotebookInstanceResponse -> TestTree
+responseDescribeNotebookInstance =
+  res
+    "DescribeNotebookInstanceResponse"
+    "fixture/DescribeNotebookInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeNotebookInstance)
+
+responseDescribeNotebookInstanceLifecycleConfig :: DescribeNotebookInstanceLifecycleConfigResponse -> TestTree
+responseDescribeNotebookInstanceLifecycleConfig =
+  res
+    "DescribeNotebookInstanceLifecycleConfigResponse"
+    "fixture/DescribeNotebookInstanceLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeNotebookInstanceLifecycleConfig)
+
+responseDescribePipeline :: DescribePipelineResponse -> TestTree
+responseDescribePipeline =
+  res
+    "DescribePipelineResponse"
+    "fixture/DescribePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribePipeline)
+
+responseDescribePipelineDefinitionForExecution :: DescribePipelineDefinitionForExecutionResponse -> TestTree
+responseDescribePipelineDefinitionForExecution =
+  res
+    "DescribePipelineDefinitionForExecutionResponse"
+    "fixture/DescribePipelineDefinitionForExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribePipelineDefinitionForExecution)
+
+responseDescribePipelineExecution :: DescribePipelineExecutionResponse -> TestTree
+responseDescribePipelineExecution =
+  res
+    "DescribePipelineExecutionResponse"
+    "fixture/DescribePipelineExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribePipelineExecution)
+
+responseDescribeProcessingJob :: DescribeProcessingJobResponse -> TestTree
+responseDescribeProcessingJob =
+  res
+    "DescribeProcessingJobResponse"
+    "fixture/DescribeProcessingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeProcessingJob)
+
+responseDescribeProject :: DescribeProjectResponse -> TestTree
+responseDescribeProject =
+  res
+    "DescribeProjectResponse"
+    "fixture/DescribeProjectResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeProject)
+
+responseDescribeSpace :: DescribeSpaceResponse -> TestTree
+responseDescribeSpace =
+  res
+    "DescribeSpaceResponse"
+    "fixture/DescribeSpaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeSpace)
+
+responseDescribeStudioLifecycleConfig :: DescribeStudioLifecycleConfigResponse -> TestTree
+responseDescribeStudioLifecycleConfig =
+  res
+    "DescribeStudioLifecycleConfigResponse"
+    "fixture/DescribeStudioLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeStudioLifecycleConfig)
+
+responseDescribeSubscribedWorkteam :: DescribeSubscribedWorkteamResponse -> TestTree
+responseDescribeSubscribedWorkteam =
+  res
+    "DescribeSubscribedWorkteamResponse"
+    "fixture/DescribeSubscribedWorkteamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeSubscribedWorkteam)
+
+responseDescribeTrainingJob :: DescribeTrainingJobResponse -> TestTree
+responseDescribeTrainingJob =
+  res
+    "DescribeTrainingJobResponse"
+    "fixture/DescribeTrainingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTrainingJob)
+
+responseDescribeTransformJob :: DescribeTransformJobResponse -> TestTree
+responseDescribeTransformJob =
+  res
+    "DescribeTransformJobResponse"
+    "fixture/DescribeTransformJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTransformJob)
+
+responseDescribeTrial :: DescribeTrialResponse -> TestTree
+responseDescribeTrial =
+  res
+    "DescribeTrialResponse"
+    "fixture/DescribeTrialResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTrial)
+
+responseDescribeTrialComponent :: DescribeTrialComponentResponse -> TestTree
+responseDescribeTrialComponent =
+  res
+    "DescribeTrialComponentResponse"
+    "fixture/DescribeTrialComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTrialComponent)
+
+responseDescribeUserProfile :: DescribeUserProfileResponse -> TestTree
+responseDescribeUserProfile =
+  res
+    "DescribeUserProfileResponse"
+    "fixture/DescribeUserProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeUserProfile)
+
+responseDescribeWorkforce :: DescribeWorkforceResponse -> TestTree
+responseDescribeWorkforce =
+  res
+    "DescribeWorkforceResponse"
+    "fixture/DescribeWorkforceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeWorkforce)
+
+responseDescribeWorkteam :: DescribeWorkteamResponse -> TestTree
+responseDescribeWorkteam =
+  res
+    "DescribeWorkteamResponse"
+    "fixture/DescribeWorkteamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeWorkteam)
+
+responseDisableSagemakerServicecatalogPortfolio :: DisableSagemakerServicecatalogPortfolioResponse -> TestTree
+responseDisableSagemakerServicecatalogPortfolio =
+  res
+    "DisableSagemakerServicecatalogPortfolioResponse"
+    "fixture/DisableSagemakerServicecatalogPortfolioResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisableSagemakerServicecatalogPortfolio)
+
+responseDisassociateTrialComponent :: DisassociateTrialComponentResponse -> TestTree
+responseDisassociateTrialComponent =
+  res
+    "DisassociateTrialComponentResponse"
+    "fixture/DisassociateTrialComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateTrialComponent)
+
+responseEnableSagemakerServicecatalogPortfolio :: EnableSagemakerServicecatalogPortfolioResponse -> TestTree
+responseEnableSagemakerServicecatalogPortfolio =
+  res
+    "EnableSagemakerServicecatalogPortfolioResponse"
+    "fixture/EnableSagemakerServicecatalogPortfolioResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy EnableSagemakerServicecatalogPortfolio)
+
+responseGetDeviceFleetReport :: GetDeviceFleetReportResponse -> TestTree
+responseGetDeviceFleetReport =
+  res
+    "GetDeviceFleetReportResponse"
+    "fixture/GetDeviceFleetReportResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDeviceFleetReport)
+
+responseGetLineageGroupPolicy :: GetLineageGroupPolicyResponse -> TestTree
+responseGetLineageGroupPolicy =
+  res
+    "GetLineageGroupPolicyResponse"
+    "fixture/GetLineageGroupPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLineageGroupPolicy)
+
+responseGetModelPackageGroupPolicy :: GetModelPackageGroupPolicyResponse -> TestTree
+responseGetModelPackageGroupPolicy =
+  res
+    "GetModelPackageGroupPolicyResponse"
+    "fixture/GetModelPackageGroupPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetModelPackageGroupPolicy)
+
+responseGetSagemakerServicecatalogPortfolioStatus :: GetSagemakerServicecatalogPortfolioStatusResponse -> TestTree
+responseGetSagemakerServicecatalogPortfolioStatus =
+  res
+    "GetSagemakerServicecatalogPortfolioStatusResponse"
+    "fixture/GetSagemakerServicecatalogPortfolioStatusResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSagemakerServicecatalogPortfolioStatus)
+
+responseGetSearchSuggestions :: GetSearchSuggestionsResponse -> TestTree
+responseGetSearchSuggestions =
+  res
+    "GetSearchSuggestionsResponse"
+    "fixture/GetSearchSuggestionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSearchSuggestions)
+
+responseImportHubContent :: ImportHubContentResponse -> TestTree
+responseImportHubContent =
+  res
+    "ImportHubContentResponse"
+    "fixture/ImportHubContentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ImportHubContent)
+
+responseListActions :: ListActionsResponse -> TestTree
+responseListActions =
+  res
+    "ListActionsResponse"
+    "fixture/ListActionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListActions)
+
+responseListAlgorithms :: ListAlgorithmsResponse -> TestTree
+responseListAlgorithms =
+  res
+    "ListAlgorithmsResponse"
+    "fixture/ListAlgorithmsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAlgorithms)
+
+responseListAliases :: ListAliasesResponse -> TestTree
+responseListAliases =
+  res
+    "ListAliasesResponse"
+    "fixture/ListAliasesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAliases)
+
+responseListAppImageConfigs :: ListAppImageConfigsResponse -> TestTree
+responseListAppImageConfigs =
+  res
+    "ListAppImageConfigsResponse"
+    "fixture/ListAppImageConfigsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAppImageConfigs)
+
+responseListApps :: ListAppsResponse -> TestTree
+responseListApps =
+  res
+    "ListAppsResponse"
+    "fixture/ListAppsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListApps)
+
+responseListArtifacts :: ListArtifactsResponse -> TestTree
+responseListArtifacts =
+  res
+    "ListArtifactsResponse"
+    "fixture/ListArtifactsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListArtifacts)
+
+responseListAssociations :: ListAssociationsResponse -> TestTree
+responseListAssociations =
+  res
+    "ListAssociationsResponse"
+    "fixture/ListAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAssociations)
+
+responseListAutoMLJobs :: ListAutoMLJobsResponse -> TestTree
+responseListAutoMLJobs =
+  res
+    "ListAutoMLJobsResponse"
+    "fixture/ListAutoMLJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAutoMLJobs)
+
+responseListCandidatesForAutoMLJob :: ListCandidatesForAutoMLJobResponse -> TestTree
+responseListCandidatesForAutoMLJob =
+  res
+    "ListCandidatesForAutoMLJobResponse"
+    "fixture/ListCandidatesForAutoMLJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCandidatesForAutoMLJob)
+
+responseListCodeRepositories :: ListCodeRepositoriesResponse -> TestTree
+responseListCodeRepositories =
+  res
+    "ListCodeRepositoriesResponse"
+    "fixture/ListCodeRepositoriesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCodeRepositories)
+
+responseListCompilationJobs :: ListCompilationJobsResponse -> TestTree
+responseListCompilationJobs =
+  res
+    "ListCompilationJobsResponse"
+    "fixture/ListCompilationJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCompilationJobs)
+
+responseListContexts :: ListContextsResponse -> TestTree
+responseListContexts =
+  res
+    "ListContextsResponse"
+    "fixture/ListContextsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListContexts)
+
+responseListDataQualityJobDefinitions :: ListDataQualityJobDefinitionsResponse -> TestTree
+responseListDataQualityJobDefinitions =
+  res
+    "ListDataQualityJobDefinitionsResponse"
+    "fixture/ListDataQualityJobDefinitionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDataQualityJobDefinitions)
+
+responseListDeviceFleets :: ListDeviceFleetsResponse -> TestTree
+responseListDeviceFleets =
+  res
+    "ListDeviceFleetsResponse"
+    "fixture/ListDeviceFleetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDeviceFleets)
+
+responseListDevices :: ListDevicesResponse -> TestTree
+responseListDevices =
+  res
+    "ListDevicesResponse"
+    "fixture/ListDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDevices)
+
+responseListDomains :: ListDomainsResponse -> TestTree
+responseListDomains =
+  res
+    "ListDomainsResponse"
+    "fixture/ListDomainsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDomains)
+
+responseListEdgeDeploymentPlans :: ListEdgeDeploymentPlansResponse -> TestTree
+responseListEdgeDeploymentPlans =
+  res
+    "ListEdgeDeploymentPlansResponse"
+    "fixture/ListEdgeDeploymentPlansResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEdgeDeploymentPlans)
+
+responseListEdgePackagingJobs :: ListEdgePackagingJobsResponse -> TestTree
+responseListEdgePackagingJobs =
+  res
+    "ListEdgePackagingJobsResponse"
+    "fixture/ListEdgePackagingJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEdgePackagingJobs)
+
+responseListEndpointConfigs :: ListEndpointConfigsResponse -> TestTree
+responseListEndpointConfigs =
+  res
+    "ListEndpointConfigsResponse"
+    "fixture/ListEndpointConfigsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEndpointConfigs)
+
+responseListEndpoints :: ListEndpointsResponse -> TestTree
+responseListEndpoints =
+  res
+    "ListEndpointsResponse"
+    "fixture/ListEndpointsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEndpoints)
+
+responseListExperiments :: ListExperimentsResponse -> TestTree
+responseListExperiments =
+  res
+    "ListExperimentsResponse"
+    "fixture/ListExperimentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListExperiments)
+
+responseListFeatureGroups :: ListFeatureGroupsResponse -> TestTree
+responseListFeatureGroups =
+  res
+    "ListFeatureGroupsResponse"
+    "fixture/ListFeatureGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFeatureGroups)
+
+responseListFlowDefinitions :: ListFlowDefinitionsResponse -> TestTree
+responseListFlowDefinitions =
+  res
+    "ListFlowDefinitionsResponse"
+    "fixture/ListFlowDefinitionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFlowDefinitions)
+
+responseListHubContentVersions :: ListHubContentVersionsResponse -> TestTree
+responseListHubContentVersions =
+  res
+    "ListHubContentVersionsResponse"
+    "fixture/ListHubContentVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListHubContentVersions)
+
+responseListHubContents :: ListHubContentsResponse -> TestTree
+responseListHubContents =
+  res
+    "ListHubContentsResponse"
+    "fixture/ListHubContentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListHubContents)
+
+responseListHubs :: ListHubsResponse -> TestTree
+responseListHubs =
+  res
+    "ListHubsResponse"
+    "fixture/ListHubsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListHubs)
+
+responseListHumanTaskUis :: ListHumanTaskUisResponse -> TestTree
+responseListHumanTaskUis =
+  res
+    "ListHumanTaskUisResponse"
+    "fixture/ListHumanTaskUisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListHumanTaskUis)
+
+responseListHyperParameterTuningJobs :: ListHyperParameterTuningJobsResponse -> TestTree
+responseListHyperParameterTuningJobs =
+  res
+    "ListHyperParameterTuningJobsResponse"
+    "fixture/ListHyperParameterTuningJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListHyperParameterTuningJobs)
+
+responseListImageVersions :: ListImageVersionsResponse -> TestTree
+responseListImageVersions =
+  res
+    "ListImageVersionsResponse"
+    "fixture/ListImageVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListImageVersions)
+
+responseListImages :: ListImagesResponse -> TestTree
+responseListImages =
+  res
+    "ListImagesResponse"
+    "fixture/ListImagesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListImages)
+
+responseListInferenceExperiments :: ListInferenceExperimentsResponse -> TestTree
+responseListInferenceExperiments =
+  res
+    "ListInferenceExperimentsResponse"
+    "fixture/ListInferenceExperimentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInferenceExperiments)
+
+responseListInferenceRecommendationsJobSteps :: ListInferenceRecommendationsJobStepsResponse -> TestTree
+responseListInferenceRecommendationsJobSteps =
+  res
+    "ListInferenceRecommendationsJobStepsResponse"
+    "fixture/ListInferenceRecommendationsJobStepsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInferenceRecommendationsJobSteps)
+
+responseListInferenceRecommendationsJobs :: ListInferenceRecommendationsJobsResponse -> TestTree
+responseListInferenceRecommendationsJobs =
+  res
+    "ListInferenceRecommendationsJobsResponse"
+    "fixture/ListInferenceRecommendationsJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInferenceRecommendationsJobs)
+
+responseListLabelingJobs :: ListLabelingJobsResponse -> TestTree
+responseListLabelingJobs =
+  res
+    "ListLabelingJobsResponse"
+    "fixture/ListLabelingJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLabelingJobs)
+
+responseListLabelingJobsForWorkteam :: ListLabelingJobsForWorkteamResponse -> TestTree
+responseListLabelingJobsForWorkteam =
+  res
+    "ListLabelingJobsForWorkteamResponse"
+    "fixture/ListLabelingJobsForWorkteamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLabelingJobsForWorkteam)
+
+responseListLineageGroups :: ListLineageGroupsResponse -> TestTree
+responseListLineageGroups =
+  res
+    "ListLineageGroupsResponse"
+    "fixture/ListLineageGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLineageGroups)
+
+responseListModelBiasJobDefinitions :: ListModelBiasJobDefinitionsResponse -> TestTree
+responseListModelBiasJobDefinitions =
+  res
+    "ListModelBiasJobDefinitionsResponse"
+    "fixture/ListModelBiasJobDefinitionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelBiasJobDefinitions)
+
+responseListModelCardExportJobs :: ListModelCardExportJobsResponse -> TestTree
+responseListModelCardExportJobs =
+  res
+    "ListModelCardExportJobsResponse"
+    "fixture/ListModelCardExportJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelCardExportJobs)
+
+responseListModelCardVersions :: ListModelCardVersionsResponse -> TestTree
+responseListModelCardVersions =
+  res
+    "ListModelCardVersionsResponse"
+    "fixture/ListModelCardVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelCardVersions)
+
+responseListModelCards :: ListModelCardsResponse -> TestTree
+responseListModelCards =
+  res
+    "ListModelCardsResponse"
+    "fixture/ListModelCardsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelCards)
+
+responseListModelExplainabilityJobDefinitions :: ListModelExplainabilityJobDefinitionsResponse -> TestTree
+responseListModelExplainabilityJobDefinitions =
+  res
+    "ListModelExplainabilityJobDefinitionsResponse"
+    "fixture/ListModelExplainabilityJobDefinitionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelExplainabilityJobDefinitions)
+
+responseListModelMetadata :: ListModelMetadataResponse -> TestTree
+responseListModelMetadata =
+  res
+    "ListModelMetadataResponse"
+    "fixture/ListModelMetadataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelMetadata)
+
+responseListModelPackageGroups :: ListModelPackageGroupsResponse -> TestTree
+responseListModelPackageGroups =
+  res
+    "ListModelPackageGroupsResponse"
+    "fixture/ListModelPackageGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelPackageGroups)
+
+responseListModelPackages :: ListModelPackagesResponse -> TestTree
+responseListModelPackages =
+  res
+    "ListModelPackagesResponse"
+    "fixture/ListModelPackagesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelPackages)
+
+responseListModelQualityJobDefinitions :: ListModelQualityJobDefinitionsResponse -> TestTree
+responseListModelQualityJobDefinitions =
+  res
+    "ListModelQualityJobDefinitionsResponse"
+    "fixture/ListModelQualityJobDefinitionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModelQualityJobDefinitions)
+
+responseListModels :: ListModelsResponse -> TestTree
+responseListModels =
+  res
+    "ListModelsResponse"
+    "fixture/ListModelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModels)
+
+responseListMonitoringAlertHistory :: ListMonitoringAlertHistoryResponse -> TestTree
+responseListMonitoringAlertHistory =
+  res
+    "ListMonitoringAlertHistoryResponse"
+    "fixture/ListMonitoringAlertHistoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMonitoringAlertHistory)
+
+responseListMonitoringAlerts :: ListMonitoringAlertsResponse -> TestTree
+responseListMonitoringAlerts =
+  res
+    "ListMonitoringAlertsResponse"
+    "fixture/ListMonitoringAlertsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMonitoringAlerts)
+
+responseListMonitoringExecutions :: ListMonitoringExecutionsResponse -> TestTree
+responseListMonitoringExecutions =
+  res
+    "ListMonitoringExecutionsResponse"
+    "fixture/ListMonitoringExecutionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMonitoringExecutions)
+
+responseListMonitoringSchedules :: ListMonitoringSchedulesResponse -> TestTree
+responseListMonitoringSchedules =
+  res
+    "ListMonitoringSchedulesResponse"
+    "fixture/ListMonitoringSchedulesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMonitoringSchedules)
+
+responseListNotebookInstanceLifecycleConfigs :: ListNotebookInstanceLifecycleConfigsResponse -> TestTree
+responseListNotebookInstanceLifecycleConfigs =
+  res
+    "ListNotebookInstanceLifecycleConfigsResponse"
+    "fixture/ListNotebookInstanceLifecycleConfigsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNotebookInstanceLifecycleConfigs)
+
+responseListNotebookInstances :: ListNotebookInstancesResponse -> TestTree
+responseListNotebookInstances =
+  res
+    "ListNotebookInstancesResponse"
+    "fixture/ListNotebookInstancesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNotebookInstances)
+
+responseListPipelineExecutionSteps :: ListPipelineExecutionStepsResponse -> TestTree
+responseListPipelineExecutionSteps =
+  res
+    "ListPipelineExecutionStepsResponse"
+    "fixture/ListPipelineExecutionStepsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPipelineExecutionSteps)
+
+responseListPipelineExecutions :: ListPipelineExecutionsResponse -> TestTree
+responseListPipelineExecutions =
+  res
+    "ListPipelineExecutionsResponse"
+    "fixture/ListPipelineExecutionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPipelineExecutions)
+
+responseListPipelineParametersForExecution :: ListPipelineParametersForExecutionResponse -> TestTree
+responseListPipelineParametersForExecution =
+  res
+    "ListPipelineParametersForExecutionResponse"
+    "fixture/ListPipelineParametersForExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPipelineParametersForExecution)
+
+responseListPipelines :: ListPipelinesResponse -> TestTree
+responseListPipelines =
+  res
+    "ListPipelinesResponse"
+    "fixture/ListPipelinesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPipelines)
+
+responseListProcessingJobs :: ListProcessingJobsResponse -> TestTree
+responseListProcessingJobs =
+  res
+    "ListProcessingJobsResponse"
+    "fixture/ListProcessingJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListProcessingJobs)
+
+responseListProjects :: ListProjectsResponse -> TestTree
+responseListProjects =
+  res
+    "ListProjectsResponse"
+    "fixture/ListProjectsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListProjects)
+
+responseListSpaces :: ListSpacesResponse -> TestTree
+responseListSpaces =
+  res
+    "ListSpacesResponse"
+    "fixture/ListSpacesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSpaces)
+
+responseListStageDevices :: ListStageDevicesResponse -> TestTree
+responseListStageDevices =
+  res
+    "ListStageDevicesResponse"
+    "fixture/ListStageDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListStageDevices)
+
+responseListStudioLifecycleConfigs :: ListStudioLifecycleConfigsResponse -> TestTree
+responseListStudioLifecycleConfigs =
+  res
+    "ListStudioLifecycleConfigsResponse"
+    "fixture/ListStudioLifecycleConfigsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListStudioLifecycleConfigs)
+
+responseListSubscribedWorkteams :: ListSubscribedWorkteamsResponse -> TestTree
+responseListSubscribedWorkteams =
+  res
+    "ListSubscribedWorkteamsResponse"
+    "fixture/ListSubscribedWorkteamsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSubscribedWorkteams)
+
+responseListTags :: ListTagsResponse -> TestTree
+responseListTags =
+  res
+    "ListTagsResponse"
+    "fixture/ListTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTags)
+
+responseListTrainingJobs :: ListTrainingJobsResponse -> TestTree
+responseListTrainingJobs =
+  res
+    "ListTrainingJobsResponse"
+    "fixture/ListTrainingJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTrainingJobs)
+
+responseListTrainingJobsForHyperParameterTuningJob :: ListTrainingJobsForHyperParameterTuningJobResponse -> TestTree
+responseListTrainingJobsForHyperParameterTuningJob =
+  res
+    "ListTrainingJobsForHyperParameterTuningJobResponse"
+    "fixture/ListTrainingJobsForHyperParameterTuningJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTrainingJobsForHyperParameterTuningJob)
+
+responseListTransformJobs :: ListTransformJobsResponse -> TestTree
+responseListTransformJobs =
+  res
+    "ListTransformJobsResponse"
+    "fixture/ListTransformJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTransformJobs)
+
+responseListTrialComponents :: ListTrialComponentsResponse -> TestTree
+responseListTrialComponents =
+  res
+    "ListTrialComponentsResponse"
+    "fixture/ListTrialComponentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTrialComponents)
+
+responseListTrials :: ListTrialsResponse -> TestTree
+responseListTrials =
+  res
+    "ListTrialsResponse"
+    "fixture/ListTrialsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTrials)
+
+responseListUserProfiles :: ListUserProfilesResponse -> TestTree
+responseListUserProfiles =
+  res
+    "ListUserProfilesResponse"
+    "fixture/ListUserProfilesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListUserProfiles)
+
+responseListWorkforces :: ListWorkforcesResponse -> TestTree
+responseListWorkforces =
+  res
+    "ListWorkforcesResponse"
+    "fixture/ListWorkforcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListWorkforces)
+
+responseListWorkteams :: ListWorkteamsResponse -> TestTree
+responseListWorkteams =
+  res
+    "ListWorkteamsResponse"
+    "fixture/ListWorkteamsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListWorkteams)
+
+responsePutModelPackageGroupPolicy :: PutModelPackageGroupPolicyResponse -> TestTree
+responsePutModelPackageGroupPolicy =
+  res
+    "PutModelPackageGroupPolicyResponse"
+    "fixture/PutModelPackageGroupPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutModelPackageGroupPolicy)
+
+responseQueryLineage :: QueryLineageResponse -> TestTree
+responseQueryLineage =
+  res
+    "QueryLineageResponse"
+    "fixture/QueryLineageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy QueryLineage)
+
+responseRegisterDevices :: RegisterDevicesResponse -> TestTree
+responseRegisterDevices =
+  res
+    "RegisterDevicesResponse"
+    "fixture/RegisterDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegisterDevices)
+
+responseRenderUiTemplate :: RenderUiTemplateResponse -> TestTree
+responseRenderUiTemplate =
+  res
+    "RenderUiTemplateResponse"
+    "fixture/RenderUiTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RenderUiTemplate)
+
+responseRetryPipelineExecution :: RetryPipelineExecutionResponse -> TestTree
+responseRetryPipelineExecution =
+  res
+    "RetryPipelineExecutionResponse"
+    "fixture/RetryPipelineExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RetryPipelineExecution)
+
+responseSearch :: SearchResponse -> TestTree
+responseSearch =
+  res
+    "SearchResponse"
+    "fixture/SearchResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy Search)
+
+responseSendPipelineExecutionStepFailure :: SendPipelineExecutionStepFailureResponse -> TestTree
+responseSendPipelineExecutionStepFailure =
+  res
+    "SendPipelineExecutionStepFailureResponse"
+    "fixture/SendPipelineExecutionStepFailureResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendPipelineExecutionStepFailure)
+
+responseSendPipelineExecutionStepSuccess :: SendPipelineExecutionStepSuccessResponse -> TestTree
+responseSendPipelineExecutionStepSuccess =
+  res
+    "SendPipelineExecutionStepSuccessResponse"
+    "fixture/SendPipelineExecutionStepSuccessResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendPipelineExecutionStepSuccess)
+
+responseStartEdgeDeploymentStage :: StartEdgeDeploymentStageResponse -> TestTree
+responseStartEdgeDeploymentStage =
+  res
+    "StartEdgeDeploymentStageResponse"
+    "fixture/StartEdgeDeploymentStageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartEdgeDeploymentStage)
+
+responseStartInferenceExperiment :: StartInferenceExperimentResponse -> TestTree
+responseStartInferenceExperiment =
+  res
+    "StartInferenceExperimentResponse"
+    "fixture/StartInferenceExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartInferenceExperiment)
+
+responseStartMonitoringSchedule :: StartMonitoringScheduleResponse -> TestTree
+responseStartMonitoringSchedule =
+  res
+    "StartMonitoringScheduleResponse"
+    "fixture/StartMonitoringScheduleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartMonitoringSchedule)
+
+responseStartNotebookInstance :: StartNotebookInstanceResponse -> TestTree
+responseStartNotebookInstance =
+  res
+    "StartNotebookInstanceResponse"
+    "fixture/StartNotebookInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartNotebookInstance)
+
+responseStartPipelineExecution :: StartPipelineExecutionResponse -> TestTree
+responseStartPipelineExecution =
+  res
+    "StartPipelineExecutionResponse"
+    "fixture/StartPipelineExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartPipelineExecution)
+
+responseStopAutoMLJob :: StopAutoMLJobResponse -> TestTree
+responseStopAutoMLJob =
+  res
+    "StopAutoMLJobResponse"
+    "fixture/StopAutoMLJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopAutoMLJob)
+
+responseStopCompilationJob :: StopCompilationJobResponse -> TestTree
+responseStopCompilationJob =
+  res
+    "StopCompilationJobResponse"
+    "fixture/StopCompilationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopCompilationJob)
+
+responseStopEdgeDeploymentStage :: StopEdgeDeploymentStageResponse -> TestTree
+responseStopEdgeDeploymentStage =
+  res
+    "StopEdgeDeploymentStageResponse"
+    "fixture/StopEdgeDeploymentStageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopEdgeDeploymentStage)
+
+responseStopEdgePackagingJob :: StopEdgePackagingJobResponse -> TestTree
+responseStopEdgePackagingJob =
+  res
+    "StopEdgePackagingJobResponse"
+    "fixture/StopEdgePackagingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopEdgePackagingJob)
+
+responseStopHyperParameterTuningJob :: StopHyperParameterTuningJobResponse -> TestTree
+responseStopHyperParameterTuningJob =
+  res
+    "StopHyperParameterTuningJobResponse"
+    "fixture/StopHyperParameterTuningJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopHyperParameterTuningJob)
+
+responseStopInferenceExperiment :: StopInferenceExperimentResponse -> TestTree
+responseStopInferenceExperiment =
+  res
+    "StopInferenceExperimentResponse"
+    "fixture/StopInferenceExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopInferenceExperiment)
+
+responseStopInferenceRecommendationsJob :: StopInferenceRecommendationsJobResponse -> TestTree
+responseStopInferenceRecommendationsJob =
+  res
+    "StopInferenceRecommendationsJobResponse"
+    "fixture/StopInferenceRecommendationsJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopInferenceRecommendationsJob)
+
+responseStopLabelingJob :: StopLabelingJobResponse -> TestTree
+responseStopLabelingJob =
+  res
+    "StopLabelingJobResponse"
+    "fixture/StopLabelingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopLabelingJob)
+
+responseStopMonitoringSchedule :: StopMonitoringScheduleResponse -> TestTree
+responseStopMonitoringSchedule =
+  res
+    "StopMonitoringScheduleResponse"
+    "fixture/StopMonitoringScheduleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopMonitoringSchedule)
+
+responseStopNotebookInstance :: StopNotebookInstanceResponse -> TestTree
+responseStopNotebookInstance =
+  res
+    "StopNotebookInstanceResponse"
+    "fixture/StopNotebookInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopNotebookInstance)
+
+responseStopPipelineExecution :: StopPipelineExecutionResponse -> TestTree
+responseStopPipelineExecution =
+  res
+    "StopPipelineExecutionResponse"
+    "fixture/StopPipelineExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopPipelineExecution)
+
+responseStopProcessingJob :: StopProcessingJobResponse -> TestTree
+responseStopProcessingJob =
+  res
+    "StopProcessingJobResponse"
+    "fixture/StopProcessingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopProcessingJob)
+
+responseStopTrainingJob :: StopTrainingJobResponse -> TestTree
+responseStopTrainingJob =
+  res
+    "StopTrainingJobResponse"
+    "fixture/StopTrainingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopTrainingJob)
+
+responseStopTransformJob :: StopTransformJobResponse -> TestTree
+responseStopTransformJob =
+  res
+    "StopTransformJobResponse"
+    "fixture/StopTransformJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopTransformJob)
+
+responseUpdateAction :: UpdateActionResponse -> TestTree
+responseUpdateAction =
+  res
+    "UpdateActionResponse"
+    "fixture/UpdateActionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAction)
+
+responseUpdateAppImageConfig :: UpdateAppImageConfigResponse -> TestTree
+responseUpdateAppImageConfig =
+  res
+    "UpdateAppImageConfigResponse"
+    "fixture/UpdateAppImageConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAppImageConfig)
+
+responseUpdateArtifact :: UpdateArtifactResponse -> TestTree
+responseUpdateArtifact =
+  res
+    "UpdateArtifactResponse"
+    "fixture/UpdateArtifactResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateArtifact)
+
+responseUpdateCodeRepository :: UpdateCodeRepositoryResponse -> TestTree
+responseUpdateCodeRepository =
+  res
+    "UpdateCodeRepositoryResponse"
+    "fixture/UpdateCodeRepositoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateCodeRepository)
+
+responseUpdateContext :: UpdateContextResponse -> TestTree
+responseUpdateContext =
+  res
+    "UpdateContextResponse"
+    "fixture/UpdateContextResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateContext)
+
+responseUpdateDeviceFleet :: UpdateDeviceFleetResponse -> TestTree
+responseUpdateDeviceFleet =
+  res
+    "UpdateDeviceFleetResponse"
+    "fixture/UpdateDeviceFleetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDeviceFleet)
+
+responseUpdateDevices :: UpdateDevicesResponse -> TestTree
+responseUpdateDevices =
+  res
+    "UpdateDevicesResponse"
+    "fixture/UpdateDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDevices)
+
+responseUpdateDomain :: UpdateDomainResponse -> TestTree
+responseUpdateDomain =
+  res
+    "UpdateDomainResponse"
+    "fixture/UpdateDomainResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDomain)
+
+responseUpdateEndpoint :: UpdateEndpointResponse -> TestTree
+responseUpdateEndpoint =
+  res
+    "UpdateEndpointResponse"
+    "fixture/UpdateEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateEndpoint)
+
+responseUpdateEndpointWeightsAndCapacities :: UpdateEndpointWeightsAndCapacitiesResponse -> TestTree
+responseUpdateEndpointWeightsAndCapacities =
+  res
+    "UpdateEndpointWeightsAndCapacitiesResponse"
+    "fixture/UpdateEndpointWeightsAndCapacitiesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateEndpointWeightsAndCapacities)
+
+responseUpdateExperiment :: UpdateExperimentResponse -> TestTree
+responseUpdateExperiment =
+  res
+    "UpdateExperimentResponse"
+    "fixture/UpdateExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateExperiment)
+
+responseUpdateFeatureGroup :: UpdateFeatureGroupResponse -> TestTree
+responseUpdateFeatureGroup =
+  res
+    "UpdateFeatureGroupResponse"
+    "fixture/UpdateFeatureGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFeatureGroup)
+
+responseUpdateFeatureMetadata :: UpdateFeatureMetadataResponse -> TestTree
+responseUpdateFeatureMetadata =
+  res
+    "UpdateFeatureMetadataResponse"
+    "fixture/UpdateFeatureMetadataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFeatureMetadata)
+
+responseUpdateHub :: UpdateHubResponse -> TestTree
+responseUpdateHub =
+  res
+    "UpdateHubResponse"
+    "fixture/UpdateHubResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateHub)
+
+responseUpdateImage :: UpdateImageResponse -> TestTree
+responseUpdateImage =
+  res
+    "UpdateImageResponse"
+    "fixture/UpdateImageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateImage)
+
+responseUpdateImageVersion :: UpdateImageVersionResponse -> TestTree
+responseUpdateImageVersion =
+  res
+    "UpdateImageVersionResponse"
+    "fixture/UpdateImageVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateImageVersion)
+
+responseUpdateInferenceExperiment :: UpdateInferenceExperimentResponse -> TestTree
+responseUpdateInferenceExperiment =
+  res
+    "UpdateInferenceExperimentResponse"
+    "fixture/UpdateInferenceExperimentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateInferenceExperiment)
+
+responseUpdateModelCard :: UpdateModelCardResponse -> TestTree
+responseUpdateModelCard =
+  res
+    "UpdateModelCardResponse"
+    "fixture/UpdateModelCardResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateModelCard)
+
+responseUpdateModelPackage :: UpdateModelPackageResponse -> TestTree
+responseUpdateModelPackage =
+  res
+    "UpdateModelPackageResponse"
+    "fixture/UpdateModelPackageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateModelPackage)
+
+responseUpdateMonitoringAlert :: UpdateMonitoringAlertResponse -> TestTree
+responseUpdateMonitoringAlert =
+  res
+    "UpdateMonitoringAlertResponse"
+    "fixture/UpdateMonitoringAlertResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateMonitoringAlert)
+
+responseUpdateMonitoringSchedule :: UpdateMonitoringScheduleResponse -> TestTree
+responseUpdateMonitoringSchedule =
+  res
+    "UpdateMonitoringScheduleResponse"
+    "fixture/UpdateMonitoringScheduleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateMonitoringSchedule)
+
+responseUpdateNotebookInstance :: UpdateNotebookInstanceResponse -> TestTree
+responseUpdateNotebookInstance =
+  res
+    "UpdateNotebookInstanceResponse"
+    "fixture/UpdateNotebookInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateNotebookInstance)
+
+responseUpdateNotebookInstanceLifecycleConfig :: UpdateNotebookInstanceLifecycleConfigResponse -> TestTree
+responseUpdateNotebookInstanceLifecycleConfig =
+  res
+    "UpdateNotebookInstanceLifecycleConfigResponse"
+    "fixture/UpdateNotebookInstanceLifecycleConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateNotebookInstanceLifecycleConfig)
+
+responseUpdatePipeline :: UpdatePipelineResponse -> TestTree
+responseUpdatePipeline =
+  res
+    "UpdatePipelineResponse"
+    "fixture/UpdatePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePipeline)
+
+responseUpdatePipelineExecution :: UpdatePipelineExecutionResponse -> TestTree
+responseUpdatePipelineExecution =
+  res
+    "UpdatePipelineExecutionResponse"
+    "fixture/UpdatePipelineExecutionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePipelineExecution)
+
+responseUpdateProject :: UpdateProjectResponse -> TestTree
+responseUpdateProject =
+  res
+    "UpdateProjectResponse"
+    "fixture/UpdateProjectResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateProject)
+
+responseUpdateSpace :: UpdateSpaceResponse -> TestTree
+responseUpdateSpace =
+  res
+    "UpdateSpaceResponse"
+    "fixture/UpdateSpaceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSpace)
+
+responseUpdateTrainingJob :: UpdateTrainingJobResponse -> TestTree
+responseUpdateTrainingJob =
+  res
+    "UpdateTrainingJobResponse"
+    "fixture/UpdateTrainingJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTrainingJob)
+
+responseUpdateTrial :: UpdateTrialResponse -> TestTree
+responseUpdateTrial =
+  res
+    "UpdateTrialResponse"
+    "fixture/UpdateTrialResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTrial)
+
+responseUpdateTrialComponent :: UpdateTrialComponentResponse -> TestTree
+responseUpdateTrialComponent =
+  res
+    "UpdateTrialComponentResponse"
+    "fixture/UpdateTrialComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTrialComponent)
+
+responseUpdateUserProfile :: UpdateUserProfileResponse -> TestTree
+responseUpdateUserProfile =
+  res
+    "UpdateUserProfileResponse"
+    "fixture/UpdateUserProfileResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateUserProfile)
+
+responseUpdateWorkforce :: UpdateWorkforceResponse -> TestTree
+responseUpdateWorkforce =
+  res
+    "UpdateWorkforceResponse"
+    "fixture/UpdateWorkforceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateWorkforce)
+
+responseUpdateWorkteam :: UpdateWorkteamResponse -> TestTree
+responseUpdateWorkteam =
+  res
+    "UpdateWorkteamResponse"
+    "fixture/UpdateWorkteamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateWorkteam)
diff --git a/test/Test/Amazonka/SageMaker.hs b/test/Test/Amazonka/SageMaker.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SageMaker.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.SageMaker
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.SageMaker
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/SageMaker/Internal.hs b/test/Test/Amazonka/SageMaker/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SageMaker/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.SageMaker.Internal
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.SageMaker.Internal where
